diff --git a/.appbuilder-state.json b/.appbuilder-state.json new file mode 100644 index 00000000..175f7853 --- /dev/null +++ b/.appbuilder-state.json @@ -0,0 +1 @@ +{"applicationId":"7lbb7zedobce","applicationName":"Health Vault","platform":"Angular"} \ No newline at end of file diff --git a/.editorconfig b/.editorconfig index aaac3258..59d9a3a3 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,8 +1,16 @@ +# Editor configuration, see https://editorconfig.org root = true [*] -indent_style = tab -end_of_line = lf charset = utf-8 -trim_trailing_whitespace = true +indent_style = space +indent_size = 2 insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..14d59748 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,50 @@ +{ + "root": true, + "ignorePatterns": [ + "projects/**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "tsconfig.json" + ], + "createDefaultProgram": true + }, + "extends": [ + "plugin:@angular-eslint/recommended", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "app", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "app", + "style": "kebab-case" + } + ] + } + }, + { + "files": [ + "*.html" + ], + "extends": [ + "plugin:@angular-eslint/template/recommended" + ], + "rules": {} + } + ] +} diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index c7c67fff..00000000 --- a/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -* text=auto eol=lf -*.ai binary -readme.md merge=union -.github/workflows/repo_linter.sh -linguist-detectable diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index bc8499ad..00000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,14 +0,0 @@ -on: - pull_request: - branches: [main] - paths: - - 'readme.md' -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: awesome-lint - run: ./.github/workflows/repo_linter.sh diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml new file mode 100644 index 00000000..5e68086c --- /dev/null +++ b/.github/workflows/node.js.yml @@ -0,0 +1,35 @@ +# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +# Using Ignite UI for Angular licensed packages via an access token: +# https://www.infragistics.com/products/ignite-ui-angular/angular/components/general/ignite-ui-licensing#github-actions-configuration + +name: Node.js CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [16.x, 18.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + # cache: 'npm' # enable after committing lock file from first install + - run: npm i # replace with 'npm ci' after committing lock file from first install + - run: npm run lint + - run: npm run build + - run: npm run test -- --watch=false --browsers ChromeHeadless diff --git a/.github/workflows/repo_linter.sh b/.github/workflows/repo_linter.sh deleted file mode 100755 index d0d58249..00000000 --- a/.github/workflows/repo_linter.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# Find the repo in the git diff and then set it to an env variables. -REPO_TO_LINT=$( - git diff origin/main -- readme.md | - # Look for changes (indicated by lines starting with +). - grep ^+ | - # Get the line that includes the readme. - grep -Eo 'https.*#readme' | - # Get just the URL. - sed 's/#readme//') - -# If there's no repo found, exit quietly. -if [ -z "$REPO_TO_LINT" ]; then - echo "No new link found in the format: https://....#readme" -else - echo "Cloning $REPO_TO_LINT" - mkdir cloned - cd cloned - git clone "$REPO_TO_LINT" . - npx awesome-lint -fi diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..0711527e --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/README.md b/README.md new file mode 100644 index 00000000..a3d62cd2 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# Health Vault + +This project was generated with [App Builder Code Gen](https://www.infragistics.com/products/appbuilder). + +## Development server + +Run `npm start` to build the application, start a web server and open the application in the default browser. The application will open in `http://localhost:4200/` by default. + +## Build + +Run `npm run build` to build the application into an output directory. + +## Running unit tests + +Run `npm test` to execute the unit tests via [Karma](https://karma-runner.github.io). Runs all `.spec.ts` files under `./src` folder. + +## Running code style checks + +Run `npm run lint` to execute the code styling rules for the project. + +## Licensing + +See the [License FAQ and Installation documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/general/ignite-ui-licensing) for information on how to upgrade to the full licensed package, if the project is using a Trial version of Ignite UI for Angular, and how to setup your environment and CI to use our licensed npm feed. + +Alternatively run `npm run infragistics-login` for a guided login to our licensed feed. + +## Additional resources + +- Ignite UI Angular Schematics were used to generate this project and are available for additional commands within the project. For more details and how to use them, refer to [Angular Schematics & Ignite UI CLI](https://www.infragistics.com/products/ignite-ui-angular/angular/components/general/cli-overview). + +- [Ignite UI for Angular](https://www.infragistics.com/products/ignite-ui-angular) - to learn more about the product or to dive into component specifics and showcases. diff --git a/angular.json b/angular.json new file mode 100644 index 00000000..53489fb3 --- /dev/null +++ b/angular.json @@ -0,0 +1,134 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "health-vault": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss", + "standalone": false + }, + "@schematics/angular:application": { + "strict": true, + "standalone": false + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/health-vault", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [ + "./node_modules/hammerjs/hammer.min.js" + ], + "stylePreprocessorOptions": { + "includePaths": ["node_modules"] + } + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "5mb", + "maximumError": "10mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "2mb" + } + ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "buildTarget": "health-vault:build:production" + }, + "development": { + "buildTarget": "health-vault:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "health-vault:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "inlineStyleLanguage": "scss", + "styles": [ + "src/styles.scss" + ], + "scripts": [ + "./node_modules/hammerjs/hammer.min.js" + ], + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "stylePreprocessorOptions": { + "includePaths": ["node_modules"] + } + } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "src/**/*.ts", + "src/**/*.html" + ] + } + } + } + } + }, + "cli": { + "schematicCollections": ["@angular-eslint/schematics"] + } +} diff --git a/awesome.md b/awesome.md deleted file mode 100644 index 4c92438d..00000000 --- a/awesome.md +++ /dev/null @@ -1,85 +0,0 @@ -# The awesome manifesto - -If you want your list to be included on `awesome`, try to only include actual awesome stuff in your list. After all, it's a curation, not a collection. - -But **what is awesome?** - -## Only awesome is awesome - -Research if the stuff you're including is actually awesome. Only put stuff on the list that you or another contributor can personally recommend. You should rather leave stuff out than include too much. - -## Awesome badge - -This badge is for Awesome lists. - -[![Awesome](https://awesome.re/badge.svg)](https://awesome.re) -[![Awesome](https://awesome.re/badge-flat.svg)](https://awesome.re) -[![Awesome](https://awesome.re/badge-flat2.svg)](https://awesome.re) - -Add an awesome badge to the top of your list, right next to the title. [Example](https://github.com/sindresorhus/awesome-nodejs). You can choose either the regular badge or the flat one. - -```md -[![Awesome](https://awesome.re/badge.svg)](https://awesome.re) -[![Awesome](https://awesome.re/badge-flat.svg)](https://awesome.re) -[![Awesome](https://awesome.re/badge-flat2.svg)](https://awesome.re) -``` - -You are allowed to use the badge on lists not included here and also on private lists. - -*The badges should not be modified in any way.* - -## Awesome mentioned badge - -This badge is for projects being mentioned in an Awesome list (**NOT for use in Awesome lists**). For example, the [Chalk](https://github.com/chalk/chalk) project could feature this badge because it's listed in [Awesome Node.js](https://github.com/sindresorhus/awesome-nodejs). It's totally optional for projects, but it's a nice way to show they've been featured in an Awesome list. You can choose either the regular badge or the flat one. - -[![Mentioned in Awesome](https://awesome.re/mentioned-badge.svg)](https://awesome.re) -[![Mentioned in Awesome](https://awesome.re/mentioned-badge-flat.svg)](https://awesome.re) - -**Fill in the placeholders (Name and URL):** - -```md -[![Mentioned in Awesome ](https://awesome.re/mentioned-badge.svg)](https://github.com/) -[![Mentioned in Awesome ](https://awesome.re/mentioned-badge-flat.svg)](https://github.com/) -``` - -Example: - -```md -[![Mentioned in Awesome Node.js](https://awesome.re/mentioned-badge.svg)](https://github.com/sindresorhus/awesome-nodejs) -``` - -If you're an Awesome list maintainer, you could encourage projects in your list to add the badge. - -*The badges should not be modified in any way.* - -## Comment on why something is awesome - -Apart from suggesting a particular item on your list, you should also inform your readers *why* it's on the list and how they will benefit from it. - -## Make it clear what the list is about - -Have a succinct description at the top of your readme. Make sure your list covers a certain scope and nothing else. Link to other awesome lists if you think they already cover a certain subject well enough. - -## Pay attention to grammar - -Ensure your list is grammatically correct, typo-free and has no Markdown formatting errors. This should also apply to pull requests. - -## Choose an appropriate license - -Keep in mind that if you [haven't selected a license](https://choosealicense.com/no-license/), it basically means the people are *not* allowed to reproduce, distribute or create derivative works. - -[Creative Commons licenses](https://creativecommons.org/) are perfect for this purpose. **We would recommend [`CC0`](https://creativecommons.org/publicdomain/zero/1.0/).** Code licenses like MIT, BSD, GPL, and so forth are not recommended. - -## Include contribution guidelines - -People who are contributing to your list should have a clear understanding of how they should do so. - -If you don't feel like writing one from scratch, feel free to take our [contributing.md](contributing.md) and modify it to your own needs. - -## Stylize your list properly - -Create a [table of contents](https://github.com/sindresorhus/stuff/blob/main/toc-generators.md), organize the content into different categories, and use images if suitable. Ensure all entries are consistent (e.g. all entry descriptions end in a `.`). - -## Accept other people's opinion - -If you're an owner of the list, respect other people's opinions. If there are plenty of users not agreeing with your decision, give it a second thought. diff --git a/code-of-conduct.md b/code-of-conduct.md deleted file mode 100644 index 506ad0c9..00000000 --- a/code-of-conduct.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as physical or electronic - address, without explicit permission -* Other conduct that could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at sindresorhus@gmail.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [https://contributor-covenant.org/version/1/4][version] - -[homepage]: https://contributor-covenant.org -[version]: https://contributor-covenant.org/version/1/4/ diff --git a/contributing.md b/contributing.md deleted file mode 100644 index a40af0e7..00000000 --- a/contributing.md +++ /dev/null @@ -1,30 +0,0 @@ -# Contribution Guidelines - -Please note that this project is released with a [Contributor Code of Conduct](code-of-conduct.md). By participating in this project you agree to abide by its terms. - -## Adding an awesome list - -Please ensure your pull request adheres to the [list of guidelines](pull_request_template.md). - -## Creating your own awesome list - -To create your own list, check out the [instructions](create-list.md). - -## Adding something to an awesome list - -If you have something awesome to contribute to an awesome list, this is how you do it. - -You'll need a [GitHub account](https://github.com/join)! - -1. Access the awesome list's GitHub page. For example: https://github.com/sindresorhus/awesome -2. Click on the `readme.md` file: ![Step 2 Click on Readme.md](https://cloud.githubusercontent.com/assets/170270/9402920/53a7e3ea-480c-11e5-9d81-aecf64be55eb.png) -3. Now click on the edit icon. ![Step 3 - Click on Edit](https://cloud.githubusercontent.com/assets/170270/9402927/6506af22-480c-11e5-8c18-7ea823530099.png) -4. You can start editing the text of the file in the in-browser editor. Make sure you follow the guidelines above. You can use [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/). ![Step 4 - Edit the file](https://cloud.githubusercontent.com/assets/170270/9402932/7301c3a0-480c-11e5-81f5-7e343b71674f.png) -5. Say why you're proposing the changes, and then click on "Propose file change". ![Step 5 - Propose Changes](https://cloud.githubusercontent.com/assets/170270/9402937/7dd0652a-480c-11e5-9138-bd14244593d5.png) -6. Submit the [pull request](https://help.github.com/articles/using-pull-requests/)! - -## Updating your Pull Request - -Sometimes, a maintainer of an awesome list will ask you to edit your Pull Request before it is included. This is normally due to spelling errors or because your PR didn't match the awesome-* list guidelines. - -[Here](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md) is a write up on how to change a Pull Request and the different ways you can do that. diff --git a/create-list.md b/create-list.md deleted file mode 100644 index 3ca8d3b3..00000000 --- a/create-list.md +++ /dev/null @@ -1,9 +0,0 @@ -# Creating Your Own List - -- Read the [Awesome manifesto](awesome.md) and [list guidelines](pull_request_template.md) and ensure your list complies. -- Search this list before making a new one, as yours may be a duplicate. If it is, try and contribute to the best one instead of making your own. -- You might find [this Yeoman generator](https://github.com/dar5hak/generator-awesome-list) useful. -- **Wait at least 30 days after creating a list before submitting it, to give it a chance to mature.** -- **Make sure you read the [list guidelines](pull_request_template.md) again before submitting a pull request for your list to be added here.** - -Thanks for being awesome! 😎 diff --git a/ignite-ui-cli.json b/ignite-ui-cli.json new file mode 100644 index 00000000..6661aebf --- /dev/null +++ b/ignite-ui-cli.json @@ -0,0 +1,19 @@ +{ + "version": "17.1.1315", + "project": { + "defaultPort": 4200, + "framework": "angular", + "projectType": "igx-ts", + "projectTemplate": "base", + "theme": "Default", + "themePath": "node_modules/igniteui-angular/styles/igniteui-angular.css", + "isBundle": false, + "bundleFilePath": "", + "igniteuiSource": "", + "components": [], + "sourceFiles": [], + "isShowcase": false, + "version": "" + }, + "build": {} +} diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 00000000..2fc01c48 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,44 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/health-vault'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/license b/license deleted file mode 100644 index 3ad65fdc..00000000 --- a/license +++ /dev/null @@ -1,40 +0,0 @@ -CC0 1.0 Universal - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. - -Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: -i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; - -ii. moral rights retained by the original author(s) and/or performer(s); - -iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; - -iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; - -v. rights protecting the extraction, dissemination, use and reuse of data in a Work; - -vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and - -vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. - -Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. - -Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. - -Limitations and Disclaimers. - -a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. - -b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. - -c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. - -d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. - -For more information, please see https://creativecommons.org/publicdomain/zero/1.0 diff --git a/media/badge-flat.svg b/media/badge-flat.svg deleted file mode 100644 index a2bfeca2..00000000 --- a/media/badge-flat.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/media/badge-flat2.svg b/media/badge-flat2.svg deleted file mode 100644 index e350d9d2..00000000 --- a/media/badge-flat2.svg +++ /dev/null @@ -1 +0,0 @@ -awesome diff --git a/media/badge.ai b/media/badge.ai deleted file mode 100644 index f8376095..00000000 --- a/media/badge.ai +++ /dev/null @@ -1,471 +0,0 @@ -%PDF-1.5 % -1 0 obj <>/OCGs[5 0 R 41 0 R 76 0 R 111 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - - Adobe Illustrator CC 2014 (Macintosh) - 2015-07-30T14:16:40+02:00 - 2015-07-30T14:21:07+02:00 - 2015-07-30T14:21:07+02:00 - - - - 256 - 48 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAMAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A6nq2sXWpXTzTOeFT6UVf hRewAy8CnOjEAILlhZO5Yq7liruWKu5Yq7liruWKu5YqknnRv+dX1D/jGP8Aia5KPNry/SXjPLL3 DdyxV3LFXcsVdyxV3LFXcsVdyxV3LFXcsVdyxV3LFXcsVdyxV3LFXcsVdyxV3LFXcsVdyxV3LFXs H5AeddXXzAPLVxO9xp1zFI9vG5LejJEOfwE9FZQar45RmgKtU85ZF2DuWKrZJo4o2kkYJGgLO7Gi hQKkknoBirENC8/T+YPNEtjo9kZ9AtFdbrV2JVTMKFRH2YdqdT12A3FoBtmPLCl3LFWGaR+YT/4n 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 KcuUHYK//9k= - - - - 1 - True - False - - 110.000000 - 20.000000 - Pixels - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - Document - application/pdf - - - Awesome badge - - - - - Sindre Sorhus - - - proof:pdf - xmp.did:ef918765-27af-4895-bf2d-a02ce4e97f80 - uuid:9a763fed-d91a-2c4f-b0a8-33ada9d619dc - uuid:201deaec-fcc0-5b4e-9a70-bd9b1620d902 - - uuid:a36176b8-c750-2643-80e5-f93b6bf0e58a - xmp.did:01f1ba36-4833-4201-9475-14a8247e0b8f - uuid:201deaec-fcc0-5b4e-9a70-bd9b1620d902 - proof:pdf - - - - - saved - xmp.iid:0ae011ec-e04a-4487-92fe-ba8898fb1f20 - 2015-07-28T21:33:42+02:00 - Adobe Illustrator CC 2014 (Macintosh) - / - - - saved - xmp.iid:ef918765-27af-4895-bf2d-a02ce4e97f80 - 2015-07-30T14:16:40+02:00 - Adobe Illustrator CC 2014 (Macintosh) - / - - - - Adobe PDF library 11.00 - False - - http://sindresorhus.com - - - - - - - - - - - - - - - - - - - - - - - - - - endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>/XObject<>>>/Thumb 119 0 R/TrimBox[0.0 0.0 110.0 20.0]/Type/Page>> endobj 113 0 obj <>stream -HWK\)YVa^M.DpdFVV@ Gf~?>맟?_o++p=?o]㯟~w/o=|?WϔF3\/QWy% 7a#֯/r1wW\]bM,s\9>3-f,K)CvϖX;;'.y, ԇVk\F/z9/z^YC8ARԣ>$hM#4yg1b.B+/sI#x'"v넄ٯ~/ h3t`8+P574qK=`1 cЪgYWk[z\5Z+c>TFTf2Sr eFT 7U Κ{Vz(fX@c 3-2İV!{9C oL )ł;*X49Ʀ8=h7⡕ -]#8 @Z=p׀}ATT//T|f4UyXJ{LyyBwUNk@El)He%-($QPeDeO-|ߎHux;BP3q Ǒg^ܕFffdL&ϓR߾ -zJ}^ldFaLʒڸ짛jZ22ne<4Tc x0 vܞMY4 jbEB:†ɫ/y"~u=&OռMG$rV״vCEG!ċ޸hR+ zpU+Z9&2hӜBզ06PYs˱5-Rh+*:qs NU&vd;#9X596LbPߪ.X+ jvgްTaU#P-2ESʗYط-Yz9 -Zw~S*7!y06{|g-aϲ%$4`N/3Iۙ`'SJͤհ(rF=@映pCZ{n0G St/'y\K$Rt,SEԤ*BxrM 邏CB]jI]r_B2kNO~/Kې#jh|J*i4Z3anE0[Vn5|#1g qrO7lըg<HXmM`ٞ0K5.邺RhD=>[/+4"4VB]"&R,8/wH,6?o@eRn@>8Ű9>$^;<4^nRM+Uߔ'սqpEkшHע1s-R;WxD1+QvD+^R9W"Ek%mD"\b+Qi߱!#]Tz +c5ZyX)zN >=H -h17L,@ #M"t'S "V(+֬r`Ib{e)dMqPc|ūVzLkd`ڞ Gh5U&>#= p_̰lBҾ*%5wp'::'8dX*}GRGXfbaby#m t8ҫ #$Կ1qq1X:t,+"d%rEg̱q4qt7]qx&9Z5,]68Ot^ON~2jD=t^KDȢ)s]ެ&K@wfNx -M)cg!#Kk^Z6]5GFa=6KЀI;dT`ҋNLJlgjK)*23VơWQ9$(\PLmF,(<4_N򸄕Q%IIpItv)UȄ5;jDžӒR)d&לOןP#*!@i^>bݏ˝ٗM!WGxS ;T\'ʵi>98fDIìnf[]ӎĜF7qK=`{@W#Z`f"bRZX6rBe{F.pԸ J9dw86owy}jV?¡rvz2ycbE5eDÛ 3XDQ'_M~}_ endstream endobj 114 0 obj <> endobj 119 0 obj <>stream -8;UNFWiZn_*= endstream endobj 120 0 obj [/Indexed/DeviceRGB 255 121 0 R] endobj 121 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 118 0 obj <>/Shading<>>>/Subtype/Form>>stream -0.8 0.651 0.769 rg -/GS0 gs -0 20 34 -20 re -f -0.286 0.263 0.408 rg -34 20 77 -20 re -f -q -0 20 111 -20 re -W n -q -0 g -/GS1 gs -0 -20 111 0 55.5 20 cm -BX /Sh0 sh EX Q -Q - endstream endobj 122 0 obj <> endobj 124 0 obj <> endobj 125 0 obj <> endobj 126 0 obj <> endobj 117 0 obj <> endobj 123 0 obj <> endobj 127 0 obj <> endobj 128 0 obj <>/Shading<>>>/Subtype/Form>>stream -q -0 g -/GS0 gs -0 -20 111 0 55.5 20 cm -BX /Sh0 sh EX Q - endstream endobj 129 0 obj <> endobj 130 0 obj <> endobj 131 0 obj <> endobj 132 0 obj <> endobj 111 0 obj <> endobj 133 0 obj [/View/Design] endobj 134 0 obj <>>> endobj 116 0 obj <> endobj 135 0 obj <> endobj 136 0 obj [0.0] endobj 137 0 obj <>/XObject<>>>/Subtype/Form>>stream -0 g -/GS0 gs -0 20 111 -20 re -f -q -0 Tc 0 Tw 0 Ts 100 Tz 0 Tr /Fm0 Do -Q - endstream endobj 138 0 obj <> endobj 139 0 obj <>>>/Subtype/Form>>stream -1 1 1 rg -/GS0 gs -q 1 0 0 1 3 20 cm -0 0 m -104 0 l -105.657 0 107 -1.343 107 -3 c -107 -17 l -107 -18.657 105.657 -20 104 -20 c -0 -20 l --1.657 -20 -3 -18.657 -3 -17 c --3 -3 l --3 -1.343 -1.657 0 0 0 c -f -Q - endstream endobj 140 0 obj <> endobj 115 0 obj <> endobj 141 0 obj <> endobj 142 0 obj <>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 18.0.0 %%For: (Sindre Sorhus) () %%Title: (badge.ai) %%CreationDate: 30/07/15 14:21 %%Canvassize: 16383 %%BoundingBox: 264 231 375 251 %%HiResBoundingBox: 264 231 375 251 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 18 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 264 231 374 251 %AI3_TemplateBox: 319.5 240.5 319.5 240.5 %AI3_TileBox: -84 -38.5 699 520.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: 170.102413104545 368.23718143974 2.9547 1448 862 26 0 0 -4 38 0 0 0 1 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 143 0 obj <>stream -%%BoundingBox: 264 231 375 251 %%HiResBoundingBox: 264 231 375 251 %AI7_Thumbnail: 128 24 8 %%BeginData: 7820 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FFA8A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8 %A2A8A2A8A2A8A2A8A2A8A2A8525352532853525328535253285352532853 %525328535253285352532853525328535253285352532853525328535253 %285352532853525328535253285352532853525328535253285352532853 %5253285352532853A8FFFFA8A2A1A2A1A8A1A2A1A8A1A2A1A8A1A2A1A8A1 %A2A1A8A1A2A1A8A1A2A1A8A1A2A1A8A1A2A1A8A153285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %522852285228522852285228522852284CA8FFA8A1A8A2A8A2A8A2A8A2A8 %A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A8A2A85252 %28534C5228534C5228534C5228534C5228534C5228534C5228534C522853 %4C5228534C5228534C5228534C5228534C5228534C5228534C5228534C52 %28534C5228534C5228534C5228534C5228534C5228534C52287DFF7DA27D %A2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1 %A27DA2A1A27D532852285228522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %52282852FFA8A2A8A2A8A2A8A2A8A2A8A2A8A2CAA2A8A2A8A2A8A2A8A2A8 %A2A8A2A8A2A8A2A8A2A8A2A8A2A8525228534C5228534C5228534C522853 %4C5228534C5228534C5228534C5228534C5228534C5228534C5228534C52 %28534C5228534C5228534C5228534C5228534C5228534C5228534C522853 %4C5228534C5228534C52287DFFA1A27DA2A1A27DA2A1A27DA2A2A276A2A1 %A27DA2A1A27DA8777DA2A2A1A27DA2A1A27DA2A1A27D5328522852285228 %522852285228522852285228522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %5228522852285228522852285228522852282852FFA8A2A2A1A8A2A2A1A8 %FD04A22127A1A8A2A2A1A8A2A2A252F87DA2A8A2A2A1A8A2A2A1A8A2A252 %522852285228522852285228522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522853FF7DA2 %7DA27DA27DA27DA2A27DF82777A27DA27DA27DA27DA27D4BF87DA1A27DA2 %7DA27DA27DA27D522752284C2852285252535253525328282853284C2852 %5253285228285253285252535253284C2828285352535252284C27525253 %525328282853525352535253525352522752285252535253284C284C2852 %284C284C52FFA8A2A8A1A8A2A8A1A8A2A1204BA2A8A1A8A2A8A1A8A2A8A1 %A8A252F87DA2A8A1A8A2A8A1A8A2A852522852285328524CFD07FF537DFF %7D285252FFFF7D285252FF7D7DFD06FF7D2877FD06FFA2287DFD06FF7D52 %A8FD0AFF7D287DFD06FF7D522853285228532853FF7DA27DA27DA27DA2A1 %7DF84CA2A8A2A2A1A8A2A2A1A8A2A2A1A8A252F877A2A27DA27DA27DA27D %522852284C28522852275252522752A8FF27FFA82827A8FFFF7E2827A8FF %52FFA827522852A8FF28FFA8522852277DA852A8FFFD04527DFF28A8A852 %5252A8FF525252A8A852A8A8275252527DFF28282852284C284C52FFA2A1 %A8A2A2A1A8A27DF827777D777D777D777D777D777D777D777D7D4BF877A2 %A2A1A8A2A2A1A8525228522852285228522852285227A8FF287DFF5252FF %A87DFF5252FFA827FFA85252534CA8A852FFA828535253272728FFA82727 %28007EFF52A8A8272700A8A82721277DFF28FFA852525328A8FF53285228 %5228522853FF7DA27DA27DA27DA84CF8F827F821F821F821F827F821F821 %F821F821F82027A27DA27DA27DA27D52284C2852284C2752A9FD06FFA828 %52FFA87DFF284CFFA853FF5228A8FD06FFA8277DFD06FF7728A8A8275228 %287DFF28A8A84C2828A8FF282827A8A84CA8FD07FF284C284C285228284C %FFA2A1A8A2A2A1A8A276F827212720272127F852A276F827212720272127 %F852A2A2A1A8A2A2A1A8525228522852285252FF7D27275227A8FF5227A8 %FFFFA85227A8FFFFA82828FFA8272752275227532727275227277DFF52FF %A828282827A8FF52A8FF285228CBFF522852A8FF28FFA827275227522752 %2852285228522877FF7DA27DA27DA27DA84C20F827F821F827F82127A84C %20F827F821F827F82127A27DA27DA27DA27D53284C2852284C2752FFA828 %525252A8FF282852FFFF7D272852FFFF7D274CFFA828524C52525228A9A8 %53527D52A8FF52A8FF537D7D7DA8FF28A8A84C2828A8FF282827A8A828A8 %CB28524C5252522852284C2852282852FFA2A1A27DA2A1A2A277F8272027 %21272027F84CA276F827202721272027F84CA1A2A1A27DA2A2A24C522852 %28522852277DFD06FFA8522828A8FF27522828A7FF2852287DFD06FFA828 %52FD06FF7D2777FD06FF5228A8A8285228A8A85228287DFF2852FD07FF52 %2852285228522853FF7DA27DA27DA27DA27727F821F821F821F82052A277 %21F821F821F821F82176A27DA27DA27DA27D52274C2828274C2828002727 %27F8FD04274C2827F82828282727F828284C00FD0527F8272827F8272727 %0027004C00272727F827F82728272728274C2727274C2827005221270027 %2727F8272828274C2828272852FFA8A1A2A1A8A1A27DA8774C2127212721 %4C76A87DA8774C21272127214C77A8A1A8A1A2A1A8A2A24C522852285228 %5228522828274C282827522852285228522852282828522852284C282827 %4C285228522828274C285228522828274C284C285228282852284C275228 %52284C2852284C2828274C28522852285228522853FF7DA27DA27DA27DA2 %7DA2A1A27DA2A1A27DA27DA27DA2A1A27DA2A1A27DA27DA27DA27DA27DA2 %7D5227522828275228282752282828522828275228282852282827522828 %275228282852282828522828285228282852282827522828285228282752 %2828275228282752282828522828285228282852282827522828272852FF %A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27D %A2A1A27DA2A1A27DA2524C28522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %52285228522753FF7DA27DA27DA27DA27DA27DA27DA27DA27DA27DA27DA2 %7DA27DA27DA27DA27DA27DA27DA27DA27D52272827282728272827282728 %272827282728272827282728272827282728272827282728272827282728 %272827282728272827282728272827282728272827282728272827282728 %272827282728272827282728272828FFA27DA2A1A27DA2A1A27DA2A1A27D %A2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27DA2524C285228 %522852285228522852285228522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %5228522852285228522852285228522852285228522777FFA87D77A27DA1 %7DA27DA17DA27DA17DA27DA17DA27DA17DA27DA17DA27DA17DA27DA17DA2 %7DA27D522728272827282728272827282728272827282728272827282728 %272827282728272827282728272827282728272827282728272827282728 %272827282728272827282728272827282728272827282728272827282728 %7DFFFFA8A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27DA2A1A27D %A2A1A27DA2A1A27DA2A1A24C522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %522852285228522852285228522852285228522852285228522852285228 %522852285228527EFD06FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFF %FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFFFFF %%EndData endstream endobj 144 0 obj <>stream -%AI12_CompressedDataxzJ0Osf[Ɛ$H!*طf܍e=yo+wҌHih"Ans+^vr:ݰDF'YX1b5ڰ^ Og`cP5<!""cv2qwGex$J|0Kp(7(̖S$vLaQ~~[Xp@2jD4JcaD#1g~3!ucI4JOIs3eVzG_8R,ڋ.OA2kbYcJ - b![2LAGIDcQx< GdFRTT,@]Nړ0D푤R!E(sVޭ<;Y]{a{1$ -p7)/'c0o8kf $|#="xӂQTb̢27q.3w^,9?A$'tfy9^<&yd.@jJO{{[la5=7oS7cufXr5yweߋ?I#D  gK 4=2G#)YK ;BH5GsJPG, =ƽ[cw-8t<\uq_ s.bٙ$ozܟ25cEg< Ơt&a֟uT 1dxHZ̖LF%G lc -| `#l1, `=h!׶,a{i`{emDǣh2Z(D "vbX"cĉ8#h<OēT/q*^ >-NA%D"H%R$d2 H0&cx2L&S)&KrJVtN)X}IEm)@*JVS%C*StY 'J\{`Sl|SH!O"ş'?IIJ)S?ܿ2OǖDX)y)RPJQ!hT=$GbPgQ)VQX%FcNIs T0L`Ĵ;{2K,a.$)&OO9|%ŧPǀe f@|4Kl<9 7fa3 bCR -6*Y!1͎3rHsO -Fa#e0&$D 4~$DL䚤`%LRdp8_0-\Wt#xq,0%$,XT"XLJHyP 2S}*Nۀ -S -p6L -p-\Jkʩ -t= J 4p4J(QTRML+ATD&`b@KT -EWJ]F HEq aCZ2`.$p5 A( -LMBsP82EV@ E\FaaeĺJ r^R$ q K0C*@ V%q d1D.S@=ď%cD9K[J(E6Q"BÄ`@Sp7a8OK )D8 G@D0Adl)%A$)#dr$˜A.c 6?Q보{&bm -ih*NKh b@(CT2IaoRa }2| eHa͈B2ncD[6cDVD8d ڣHzAƒ(?KF6mJqK12|!=AS?{yf~C2Pk<[G7!w6B$]yd}.ڄ,7qW$o}_?7m[ selI5%Y;e#l<&u8Sl[aF( cN-ZHIp_ ՗: -}D }Dobh>=ͦsx׫qofX/.4-V #sm%PF|~Fs6g? L@MN7B[=EIf|OX_Km8q-f}`N!yk;beXH?p-uM+oy7z1&-PSa"k -y:?>//E]a4`v] =dSa9GV7wo0ψGV_QvXWKk"u!̞"$%A)_m+f:5~c)jY4x@+`[ˬ4l"CʒJ%e -@'M+FXtX$ߖ)T)LMe]0ff - ߷@]ND> 7 ;7 =6~%om mH\*b AeU>׬NT_ucixi/n C~S#ΊpZ,W|џ,BCŠ:ăi[Sew \ddzʹ+Й}v:35**&*`EZbY!LEʬǠjKLLI'{i.X?Jv(=VJdpj훺O';WԂvR! n2<"+{Y0hd"Fކ//J1}-nSOh&۳1ZvXXњSV|@eN XpƞXɪ$kA|;F乫ڿ6n3Dx%$I~`ouQDeC|9M2wK6m^|4usR/J(?Y!|(S pPmcx҆w<-wj9 +bryi2uѰ^+y+kV!k- ~ + } 56N@/6jFJ#RBfS5b:nm0x8ٰNC<;z|DD-벜4'[ -vlz -hܢ(~o0R*f 5:r;n=/Gjo:  -߆/mq[Ȝ`xl96zkTf lAg|T9v} 3GEX[\ܜİ$ܨ)x*uzlҦZ,M,A f+YRX>*- -iyx-Y[c a meКEup05Vy\{17w 1#355XZm>Ae #߼9^ۥر" ۋv{w>SQO(NaE/GKJLh팊{.y|!=s:LM8Ji+OYe>)ҙR P#CmQu#(er$erHTaJ `tQРF}%u۴[ )#oB| mսF1!@mn:XY,onp;02x+KV,2n"Ib΂)G 1ОĢ>6S4-LߥѺ0"z'Q/Gg߲Oky_ ;Kg—Ua*?<]d3I@ҕ؁w碉1Q]Q>1)G/~Mou;K}z~(ޕK 5-6W)ir|^*}.gyeg!]>'D9XHu~~MS5GМ/'L{}Rl_7CSQVF+3箼*/0SV`~ei -+-Rj^))+gNr#vc^-~^Xbe|_D:?\Go)-Q9AZT0Ih& v-G6?4QZ {)-&u*o>0Uw&Z-e7Ltr5z-9mL34{ rկ% F+T,Q G?FJ祟`V }"eſ gk=rkg>ⴥvňӂ皠{;BHQvgfuXI `/liYltK+ %2eMMs$4 ɞubcZ[ϓ_% +kuU柦_l&_g%eYlmQ)n z V- u<zC1rpVLj^@别*yA0t{y%ߢ?KHxGO/e]VD,@5ß/ -jōџ%vJp8,DA|N|#4pqGl.bsNZXŒTba!}KL?/z~:P)d~#Y )Rl+d)]mRax+-y'sFȷMM7gmxkEVDK !ΉYJ:'\%4ƹ -c"y(ipUyU $Pwyؑu]W/]kl#UРb_˟DW"xpwv?ْS֒gm1 ~bx L.ʬC>-m. xei=&<?NwkQ8c ѻvy"o2-$bʮw\Ì0cΰtr(妘-%+ܗn l0+]S!0+KZ`oh0!omsc7 >OaG7Ŗ|XpVb2쉸Y~ 1{V)dLZek؜ƞJ\`'UR®}%ܠ[ jdq<{^/}^E$&A'z坊ƙ8pt作h YƗΏLv:=o]}~y_%)5me[oQ9 t#ǍP ){CVm -^e9 -`~lb!іh~0ٓ"dKԒ`Dv)bb6u>u_"xgc AGy9Wc/]v鰃Vt5}ZJj1|<@:Ϳw?oi:X'>䉫ngK%IKѧH@XlSyUT_|'s*4va͙遈ܗGATK>;=ץ$_ƯE0FgkWbfT`~ACmB%c*Ge%]~Ayh2QWoB#syWk= C&"-!pQlkyo>_%|V-Z?t=^N2crKfؠObuߌPKYk"@3˟դ-dćZe {\0j眻 lR-](y 5(@P=6I-?t scç$/k֤X>H*߲7]nEa$ -_sf±c0Z[%TU$:rnj Z!5kn?ɟVƎY: me.t>uyk=zx*ib#LwF ݣôӢ2.KRO&|]ڳ{lzF"]1Wfm|~ QDyN@jCa@1k'Zŧ/MΒHO` -cЭuw>OI66:T@ -riT-^EW^'V{Z,o|bzh- hKcMɩ*Я`Z-bOjKnq, -PUuڼ>\|hgm,g݌ge>Cn7$?KQm̆*F͗}%|^nhAtD|p/d"D}i󢋶rӰ9څ#r7m./7:/)4G_Aon97ϔ#@܄Eǃe} 79j}"d$^p>HO'SVE_^Sl.Y>Kz{!Ӧ/}򼘘;뼇FLԾbvGݣGݎ\ZXgy5)@[Кw" -ݫ18P"%cE'Q`oxF*J$nȿzFzrUg0!6Y o:_=-Ͱϫw/uC-%]K$>9 CR!Xxdk~AZś@X)|"m.֢)Wq4{rƺ+7 %%h"A?u&3)mAK#=iu7ij.HWyVoBHqD+vËWvD)NT)̫^Efc)U MÐ&ҏ@Vi"rKH|q]i>~-;!uF6]bcv:"n5Ä9 i!%wZB -|Qr5ߔvQi(O>yG5iы7imB+dz"@"[HkB c__:H㧉ɀCJ7)-6{r.ni+"fZBkh}zO0R^'z]cn__MPiktBVkx^f \BBDgd\c#ה6қ\]R )d:~K4g9K%#H?/s/c]Z>QϮ4&o'{HӿRm3ɏ&=Hi:ORJ{F^}m.@{ZgxOߨ꩜b_SucY}:y u\ {}t^gݧyUקؙ\J> -OH}a7vFT.΅1=S_OΝyz)ɟFM8}y_ˢbwϘk^;[vRpzG}G;T~,u_6yE -Ko[Hm.d H- iԒ!JHF$+uıV -ގ.R EX)pZX𡃴?*}%Z;"EHiEq+Ht"{)x6/V~,~lfsvߏ!QxE FV"@u8Zެxr*:Yzqg]}QsKov)B`TKU_)P\ -aQY- zCXrM?JCMgR+y͹@ձENB9剫˅ |Z].uDvK)b - b7kѷH~]|{GvXaʿ n"EH49x*\w|}0*ZjD,9(X8`y6fE3 dU~gbV(!3G@p%u'ǫR=6磢dmd_nT.Wr -ƕU2qGv:Wv\UkVv689jVehcƌ3N[6uBixo {<.l.-n4 -> ?A)m/ɮ]@]U"t -|숒B4&@XwK~֝u6n{1) ǫOkࣣJ\3씂۲C:Ƕ݋ Ʋj+WzD(1Жf6KU5Φ|dzdu cQ`ͼ &MjP(RSZɲ4*k-Ztʻ&.>)}Nd%m -#_*;ZĪ6f "#`$ (au`c'f7uQsu4)5[+r\9M%įbXǵ]\+= l<ϵg:rYYzuZuyws5';Qg7;:9V\]`Sh5s`#hŪ-cmGG̦'鬚 -]j -Ŵ|CnSS -r7%wK$P,A+A "`xXtj[Vk XP\4'0BD"^_TRg\ 'Qk]RkV3t|r 9':vaXzS\W9#$W)mG#$ 'T!Y}e,;+V1UA^a7Qx#O^m˲zT6+!$jkU#3B-(W1S˜T@lKDT"Ҡ4 lJ+ Vʔ֘/hwF bF{!ns ^#)½5ԽZvs,kʷ׀%O7g؞ -@_o-uڄ1e6ʅNOٲhʍ7d°Yw` *r-ޫs a9R7vhXݤPI/oƋPndD E4S`-w[4)u K;QڛejÀn~*=_;9Ǥ4lPFc'>K:Ȓ(a -Ƥ[sk4)Tm/K ťwhzsvPF31s8f {~qB3G0-Z1֡'z Ylw\MpKJH4^05ae߂U_@\֜C|i/o}mK2L Gǥޱ7BIfȲYa|>j,հ{M=?ϾZ djk(ʹ}`8*~U žY0{Ew-Ļo;oFP{-Tzs{}sb;x,Rϡgݹ-g~T춢,Mqs8Եy5ԴCqecȚDGzq,JR/K`yNNZ<,d) I+,=xٶ*\׏!%,œbst}VDXL";JY.v3,xp5av?Ǐ#P|ʹN5tt(5ttS3,k+ՂWЩ3SCg\AܻθQj+?B v;yY^Cg_g *!Y^ka(rBJN{%UJd?MmTLӝBLDJmIϷ}jړN$*hW+V#P -?qI7K濜[L`QU2reHt.T;#{,re<_, *dlEWGԯ_vKMac+^ aʞ ʹ Yצv*f&YΩ Z5*T2w ~* $YWh4Keg ɹХe5[E(m. h"ɍfաqL/ 2H 8S 'ɥ*Lo?.$Z&4T3wۘ-;_NA+Ҵܷ^\ݥѩ^ -Rd0IY2a6[JUe[AI+0~IVTUF12](fvaz (Sj3VmYX_Ĩdש3'Q+A_sTΞFޅ0S$ 3"qzB9Y͈9? nG%nfsߌ._OX=sE4 ?JVTcEw}+}#&GUEk];cxc;KǬiЖ'ʱqD@JRv)lK\DѨma]Ht2{52"܎̮#22:$"#jyLęFyBDDsA!"syJs˸ ?EƬ8f<).)% Tbj&Y̟D?NGm* kݐTakER2"Ҟ&GB.J>Q~]~Yݳv33D9tT%]AMԉz >* |kqpӯ鼾Pq1puǨC;q{dYH=nZpJp.IΣ{ TL*#رR;Kim#zGG9 C b8&eU~,زVM{Ѧ'Qĥ*=vbPo7yrIO?``"8oǨHEPQŎQ^+R6z:4Uddba@c>[kYʶ=N}R8-fq?nbH)_yR8ى%G)gDbK,\mu4DVrgd:}Hc#EgtRaNpJ3;<椬2;:^onKާrIUU2yY46:we g! -;|)T˰®Hɐ3KX ]5-j*;Tح6_dP/UOO7 -ΫQ̨nn"hWa?#ܾV%[9̧-Qʣǿrvˌ%ѷvgokGUq STf^NR+Ȳm-o7r6,cewY_ %܍rIN=aĆavSU:HZ·,800 };9(I4fmPe#x|6K2kKܺOLi%~ʘ\CJvz(`TMemL9N5V Z~j:Z:'wJ+>tZt޷VޭNSSJ1鄕M^K'UiӨ4fNotZt;j5q0G⮞5:[ҙܗG5zN꓍ o寮]}i>7ܙrv n,>YHo~6soG+}Uy{ tǛ#ԥ9Wf)ݨau˘*ouyF9׷=ihV&+,M݋Q8eE؇1[0яa@iFsz9feV-[#W>)Y>WEL2Za^EL2=2 5K[Gʳ1ΖٱƵcc]kƵT\uvcG)/dcSӫqJ0q5=u= Ćz!L?TVhS\ -]=QUZŗ/U\m=s'ЮvPtU%6_iR)AzSg}{ʂ7ڿeDiA v a5bp;qZGTU^OuS5qY|.sEo/zOUg\1_ݟ MjM-8.JVrՉEHW-h) _颅vb]tP{щl> Jk*w&o10.mڊUpXvHRY?MV9ƖGE,Ad -!ڄ9kQI2e)4;1}.g0X#Ώ - 쬝]z;οCʘJw+`\"T=o Z9#BQ -hfsW2ZeVɔ֭;4mF'ZO֗Xg?>: -8TʩqLH˥^@q1%#`[HEtn6c(fZ˳ Lv.w; }ӥV3z6!UzƹNU> -~UVk֫uD`v=ߨΆڭ -j VNUVZ+w@c٬ -py*כQi^ʧR>#I6R>(x)J;5wyKG'.;R>YOXK 7Svƽ1?j{, uн~b~ uq(Uy{9 Jqv8[P#tq1r7a{Z\*SZUl{v_mʃSQb&ǸJꇰ^~i맭 -M|>3ޱ(v~b40Zo.۽~:R -bQndzRBËp/ ;:QHW.4 Da.<9GQb_D"tE*|:Zّ+I' r8orA3whd5s0.x)oA~*8Mt^`#VFJC~к?m|;(sn^O͵`g׵*㷎ۼTKft]1iZ\ٙ{hAG>wK%_YsJyVl=l.6{mmE(S'BOhž-esSm.ͼ?S -H ǔ=b~E,Ll8#ynq9}76tZ+8Ա/(_fkEvNf5J}>0FYV2œRv%5-Jzg|}f|ߖ':{U :4*OmNߊ5@C& T(dUq맧O_~6ATbkXg='"\ϵ#bA7C1҃c@L_P8KUuktoF(kC{j=c]a>/>|$AH`YʰG//= pn@|5g@Kz@", Y7rؽ5;i^{*DU" 5 _"ݓ(wdۇ {Qde { ’A48Z%3";`kUKHq>+*זU|Ռ?<])%#i,+̸4x+Ƙ,CEr6fijJQj Xsf;g{rZ6uzcۜ9v8O:tpgMx>;=qXP7U5z>::RuF_à -)ϖ{ kK~G pxSP76Q -/ߚS}&'J#Sx?mG+~7<0m=fև 9·VL3o'I4۬5`nA#m*O<2YYv.:l/R4\K9` A+6ᨥ%W˘^;@,$K+ V.0nۢI[bWE"^{-|w>+Vkg6ܢSl9)]=*f&+GeqEpeTl?>2Lj5;FZnsU]w28axZgT*f7 _xfN9f; } -S` 4;Y\M; ]:p`=)k  'vUj#f(:`l=[ m 'B^ Iց_w3LqU^ 좩&9 -.a"޸I/l [g6Xgaai uX=ayl>[Pit'@miA쮪-X;*}0\[ri➿QU- v}ZCIpA,|?Q/@r}I CU+ߝ8 "q}]q`X֤ĭN=kM cx6NkɥǬ2ye]sr\6:2eJ*~O5(wx -4J;+-7ɠޝ~}'іJ8WαCBxv-Qq#pq==}Z|dKN o~~~c[cI,r7e\|H JMW܋dzN P|4x]Ae?xggَrQ 7MIsf3%V}}MrkŠ0 Z7_ "$tPavK0Jxri -\*0">H,˥.yԤRNǗOOs5)%]3U<;ɥ0$Ԣ0 =I.7͕t$1%3WKq2f0^=3Ry%o{u5BƌAdlɘW='coJ3^ +MrEGqKR˸Zo>(W}fDjKZՊ|;\Ϛ_18pzA!/hyyFba-(:[.庐X!"*ĺtb\`mz8/wQ5.zDjvιC _ ˛l(}'OZx>tVxP,ң;_ 쁬<0W'%\m$\-pcCJ$V]=׋U$>쳵jNejݾe@ިq#|$!́}W z%$`)8.(M0(NߕӤ'ǬED iCbB| d1tp*b8Bž -^?@zb-e;"Յ۫EuA{5gt{[DSzpD){Y|Ch R)$p-vu/La7=GèX)H QfùV?[A=t?Fʥqՙ9[&z _f)b8-^?h+=ރ%4r6v*G¹ƔQ -/q^v /m.#^rF򈅗8ڣ]zGld"lOF#a{2x8-T$ɇ`A͌i{*_^&c_ K6NRu=(\8Nj͋.MtrovK7 &YD?PBۤ[r0 -j%SJ/K6E/ObS":w+WKֲOAz}^[ܵGU,O0rD IzA pᡨc(Ns~ޯ]CFwHf^U]s駎<⽮Wwxg5?wKj +?S^an^)W~vɝ/jzL;pعOG/෋R)VMWmz;SHά}XE`+ -/WYׇC-\{O1z‡ ;{g>^s_O.?.rזaC{NO7,F׽酭_*g {˵7LrvACwnZSc{1Wu'}wj|\wwwG^fǿ GLy7}ݭJ߿f)><~2OH -ﮰe<ۯԖ2aG| 7qƱ{{\Qxe+;o n]ﻟ~CI~|wן{ƣW_嫑:PU\v%<9~y|g'_Pk7t pOwa?/쯎a.NN>t[=H bh`ݎA;W;aAԕ\4ZX)ggnͫi -{<1k̹9sSSWg>t^Nߝ5WW&|@o(AQ"?{}3Th,Q!2/}szEowltaLk>k.]ל@^x tsxz΋ovcw. O^PwEPB`uο?9d_HJ$z,z [m at}n"rxH77qz' 2[[gߴ"w޶WV_jb0 bo; Oi%ʦ?W8?kd&ޞavv4l\([щi/M,77j켭R t77^|76.Wg>|oQG/_uOU\Ad{ӨvtlWT?绢pgWdԱ]X:خy>۵{j']9u:&I ܇+̆Yn[g4fF"-rW;O?G8Aͽ'rjc5|77ؖy}71pwwmݷﰽnSao`oz_vM-l1uwؾlE +mgoXaoGg%.}[O< M)wnzR`&B{ws"~M|{H; -+-_ݧ^/ӝ.ƶ|'_?q{Qy }?`^VN*1@հ80\{~w:y ۩ -E`/]kl{[gyRyp)ٳx_=yb-*?c^h{sۋUWO^_/OX|ė|G|9tIy>z׎񝻟~/O^/3~gG{NjwOOqZ\~__nN& hgjiC>[mctZewFE}ʉ"Ye*'e>Fm__<8ܪ3WV/?T֝-ϷLN-?ϲb֋׋sw//h*eLit -2;$ˑX>\Ψ0~|y2ZW/WQƻH=߲wc)?٘9ő"$#/^>?zxrr)vYSu] Og#ƛמ@d=Jޯ!h^Hy(gB.j̗KLPO<*ht4[KC#~qa]{јYdgknNǯt|SXi9:|듧 [u:vNAk\ɒw_`| -ŃT^f\uŹŃo!/_V~R=^\vax֋_y\*yU1 8{`0u=Qwk?oHD,a# g3;u/^׻Z,g6*%jlV|oTJ5[_t] ?ϳz6[P: -6b!<#wT6BQw:krӗ/x2< -7Xy<`ǿf?zeh`|4! mdX/xdpS& CfFj #,a〿1vi|6yH륅-b͌zbv G$Y(f -lAh<7Pg 1V LTp\jGlxBIR+С=gc#5 ,*UYƄe}2 -1-BquQfT"AZLOx_&XrVw$x:IPl5r't(A dzO 9P1"NjI68YW1{eߺ5ÛRu2J‘I*T>/3]UL*PllCP0股[J#0hM\R[Ժ[4( 19/af hHR/ t`6\dtAG R7ÃNIE;7Tq Ácp|J4.jN1[SCX,5\1xRLOeI*,edr a`q 1"4W`ʲk (n t9SΟKC$W\06ǹm5ƀ|AA#$LH`D3" `> - e]e~HXd#7 Y@ߎg#LFn/=HJeL1DCZM?H0ZĄ d]#F 7])Fza:&Ƶ 7΢ `/ laA v4XfyE{9ȃtmzMvBa]abd 0\jȾ閼Ϡ;̞$`` KS3`ADxE)Տd-> `JiuB,>Ɓ"M0t -rN- 1Rr Fp$̪r7̠Y0 -esqz0t2saugۺe# up%kPNXߥ^W2Lkmh1 Ak$ocՈ(0X&0MZgctR$g_댶s: ;4OjfنϹZC|b- '[t.:0s ? b梍 TDi@SR/U鄏DsIVi`0]W3Fi8O?%)4ƁhEn E?#Ć? aCJ_2C<\ `.^IeuC -"fbQ<^,`@Ѝg/F=ЎX4ečиuيJEjg+n@rxS#88@Wυ{[ h [#pՌe]s <7x h1^`(2 uaf^ľA\2tJl`3oGDAERrpC"mp -n0yJ~ص7GXpusAhG.YP'<Gq1YƝuD0bT-W1w% 252pqccL,iDvukH)\X`.Mي"0 8t`.~a Эv,>8뢆~ć0GB-b<5 JScZ~ #Az4][@$ m K52 i<\4eȒJ72Ct|9fUxNPN% GiZW1hhҨ/:H;K㽷\ u-e)0Efq12BLbqED`va -EEEKp% :=60[%I -Jd3w0#jFb@K`H1>Tfz_rahT~dk8hT>h`;4V -[@\njN r64!]#J@t.paڔAI50 C,3w9ns7 )5yˊ6#hmOBg*8jI)-Mh$`IfAxB3qc(dtL'ObE$(F!ՄUh:ftHm =6Aj3da \+6}L'l T:2B$G*ᘰ:O[L;"fBp -#n4/s01˄?\lR~<U -1\Yu.cI0SL^>!7Z<TJ -)hj1-FPm2:|LX[Q7yTaAPYK:3ʹH~/Rݔmw20ƇAGY'_XQ.%_LHBS - t3خ9ae[;@ MGw@O4;9V_ر>4Mq+hXlZy,RSy0TNZ am3rdW4][*0tI%^ѫղy T``i0hs-f_V qc*>LKP"btbqظ 3/L_|a&Xz`[Dk[LrMusHLy3LOM V`ĒHl$.Y3Xّ k - ,HK]6;., 0,k#@{( 萴QpLV%Lkg?Ϟ%`obz6Jh$P&5쩯G iEUK͘1z(%\=Gg ?Fn`'ջ-P13X1WkSA'f^$7IЗ9bo L1Ϭ⴬ZU^Lv9eb%L;"fꎖ eаZ(gr7ZK004W:KfD EA'`ޮ`+e <M"B*X0gD(Øab[[ mʘ 1ܤ 1Bl} S8C SU[$%p~W39ƛREh^=jOR B4bhZ4bL0sob_`c-FZY-d̝wԕ&uy]Ң,koVr&B 4ËILJÀSl~2 ( wk[0x"ݳ0YDXa[7E'm`3L"ƌSRW`011.6J0)~"ݖ`pOw]0VF.,dĐ % Cbj1} F`I):I ԵMT&X낂i-H.{1CQ¢<,= -z]n2/FqsMJ"^%(c2{CQ#x 3jڪ|sj20C7jae{Fh:u ͊f9(%%FՋy`k1hˋ- Fȩ"y=3{i"fi"{ۍՊ *'g` \i"Cçe߭jZȰ%/+ 2I0;$Zcsf*d cca=P~3%;brۊ9BȘb@oJ -ϋ)2 #銄YH$m O\OrcX&ERj$J,5vZz ~e AZ\ cİ2>5E(:RRI{hEBB'gf!;Q9|f[+]Zr rdZCe!Tc+CJ``IHQv瑁2`nZDkZLQu5(FH1m5ݦwb ȚI$cXޠx.jJyQ31OMOwtVcٗ0mF,SJXjrIH(eߌ[v:W1H}fe^M* {ǘcT{K7K6)ĎXw<EİD|8Te䭐^:d-/NVXa -5DhT J8 5SXJ1ri$x [GeWrg"?]n:cP@;i.IOjmyOҭzY33xs"M_ )r+G'K6E,$J$J+eII$!Dz8mh%`> endobj 41 0 obj <> endobj 76 0 obj <> endobj 98 0 obj [/View/Design] endobj 99 0 obj <>>> endobj 63 0 obj [/View/Design] endobj 64 0 obj <>>> endobj 28 0 obj [/View/Design] endobj 29 0 obj <>>> endobj 112 0 obj [111 0 R] endobj 145 0 obj <> endobj xref 0 146 0000000004 65535 f -0000000016 00000 n -0000000190 00000 n -0000013214 00000 n -0000000006 00000 f -0000064071 00000 n -0000000008 00000 f -0000013265 00000 n -0000000009 00000 f -0000000010 00000 f -0000000011 00000 f -0000000012 00000 f -0000000013 00000 f -0000000014 00000 f -0000000015 00000 f -0000000016 00000 f -0000000017 00000 f -0000000018 00000 f -0000000019 00000 f -0000000020 00000 f -0000000021 00000 f -0000000022 00000 f -0000000023 00000 f -0000000024 00000 f -0000000025 00000 f -0000000026 00000 f -0000000027 00000 f -0000000030 00000 f -0000064515 00000 n -0000064546 00000 n -0000000031 00000 f -0000000032 00000 f -0000000033 00000 f -0000000034 00000 f -0000000035 00000 f -0000000036 00000 f -0000000037 00000 f -0000000038 00000 f -0000000039 00000 f -0000000040 00000 f -0000000042 00000 f -0000064141 00000 n -0000000043 00000 f -0000000044 00000 f -0000000045 00000 f -0000000046 00000 f -0000000047 00000 f -0000000048 00000 f -0000000049 00000 f -0000000050 00000 f -0000000051 00000 f -0000000052 00000 f -0000000053 00000 f -0000000054 00000 f -0000000055 00000 f -0000000056 00000 f -0000000057 00000 f -0000000058 00000 f -0000000059 00000 f -0000000060 00000 f -0000000061 00000 f -0000000062 00000 f -0000000065 00000 f -0000064399 00000 n -0000064430 00000 n -0000000066 00000 f -0000000067 00000 f -0000000068 00000 f -0000000069 00000 f -0000000070 00000 f -0000000071 00000 f -0000000072 00000 f -0000000073 00000 f -0000000074 00000 f -0000000075 00000 f -0000000000 00000 f -0000064212 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000064283 00000 n -0000064314 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000019414 00000 n -0000064631 00000 n -0000013641 00000 n -0000016872 00000 n -0000020607 00000 n -0000019606 00000 n -0000018463 00000 n -0000017677 00000 n -0000016938 00000 n -0000017113 00000 n -0000017163 00000 n -0000018048 00000 n -0000018577 00000 n -0000018112 00000 n -0000018260 00000 n -0000018357 00000 n -0000018694 00000 n -0000018749 00000 n -0000019015 00000 n -0000019093 00000 n -0000019242 00000 n -0000019339 00000 n -0000019488 00000 n -0000019520 00000 n -0000019723 00000 n -0000019789 00000 n -0000019812 00000 n -0000020079 00000 n -0000020157 00000 n -0000020531 00000 n -0000020683 00000 n -0000020861 00000 n -0000021951 00000 n -0000029953 00000 n -0000064658 00000 n -trailer <<77B2A5031A0D4D539111056D797D10ED>]>> startxref 64877 %%EOF \ No newline at end of file diff --git a/media/badge.svg b/media/badge.svg deleted file mode 100644 index 8bc8ddc2..00000000 --- a/media/badge.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/media/logo.ai b/media/logo.ai deleted file mode 100644 index 6e8a4c7c..00000000 --- a/media/logo.ai +++ /dev/null @@ -1,642 +0,0 @@ -%PDF-1.5 % -1 0 obj <>/OCGs[5 0 R 22 0 R 39 0 R 54 0 R 69 0 R 84 0 R 99 0 R 114 0 R 129 0 R 144 0 R 160 0 R 177 0 R 192 0 R 207 0 R 222 0 R 237 0 R 252 0 R 267 0 R 282 0 R 297 0 R 312 0 R 327 0 R 343 0 R 360 0 R 375 0 R 390 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - - Adobe Illustrator CC 2014 (Macintosh) - 2015-05-23T01:29:14+02:00 - 2015-06-27T15:06:59+02:00 - 2015-06-27T15:06:59+02:00 - - - - 256 - 192 - JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAwAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYqw vzr58j04Pp+mMHvztLMKFYfb3f8AVlkIXzd/2X2QctTyfR3d/wCxi/kzztPpd2be/kaWwuXLSOxL NG7Hdx1qCftD6fnOcLdv2p2UM0eKAqcftHd+p61HJHLGskbB43AZHU1BB3BBGUPFSiQaPNdih2Ku xV2KuxV2KuxV2KuxV2KuxV2KrZJI4o2kkYJGgLO7GgAG5JJxTGJJoc3kvnPztPql2LewkaKwtnDR upKtI6nZz0oAfsj6flfCFPa9l9lDDHimLnL7B3frZR5K8+R6iE0/U2CX42imNAs3t7P+vIThXJ1H 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 /wCk9P8Aqpj4sFf/2Q== - - - - 1 - False - False - - 1000.000000 - 700.000000 - Pixels - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - Document - application/pdf - - - Sindre Sorhus - - - - - awesome logo - - - - - Font: Orbitron - - - proof:pdf - uuid:70fc32ea-a999-744f-9595-2f63e3706e46 - uuid:5f4c8d1e-c0cd-2040-b113-7b9f84a7ac61 - True - - https://github.com/sindresorhus/awesome - - - - - - - - - - - - - - - - - - - - - - - - - - endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>>>/Thumb 395 0 R/TrimBox[0.0 0.0 1000.0 700.0]/Type/Page>> endobj 392 0 obj <>stream -HWKn]7 U \E-: -.hAR 9@€-ҺK~z|}īx_7CF]⸾}z|x}JWOrRW=FzTBK -99\ ,K uPi -U`:ؠJ}0_EUsB-%K8bJcIO'Uj<0漀fBf(Sr;.-@ -z*|"0_mJϣ];m25YY;2=RTjkVgg?#>~=Rz 9+ uLI8q]s -ɁKkfP8oϤJ=Lx+1RgHP[)0C.CK5|[7ߺD -Bp } -@h(M@ݪEM%Ƽ!4[AVuJ>$$%Jr"YҷNaOUi*8.a@.zPk4B$U6L[|>g -w=[352nF -[eVg JY/r7@gIVY#ب:1awH)->I ITFwҐ('9] :rzVNtN#~Èy8V`˒b,CQۘ -3)o^u;BC2>Ah[] e& VhmBKbL4'/g8 [5jIoVGc'-Lîꅳ- o*}&37;iS]'3TEmR>%y)OQ L4%eFUQ.GY$ŮRRn8xT:qlP ÛC`{ :ϰ1/5-(2ڎ--lFmhHC֏ò3V9prꤣ,#DakrvR۽G{ |x0 <oa꜏4Q.gZu3 hGC.ȂԎ2vy})&uI 5o+q휆>ő$c 1l]5ܾWQyӒ-p2je򺙶½oq˰޶sohJH45 [xasy+Ц ,6sTyOkY԰($!%Y /{h iK* cҮJJ?Zq4.wN}H¹ ֙H.>eLZ٣ -g@;Z.' -[.2]R,\jAʓF6Wew]O(:a --hZYѐN ޚsk;G-CFLOYpc4<-xY-: -ڪ;?~馽sg?Pµ{^rAwӋ` o7Juz~o@Jt8c7{vݦ - <8ʠ'ktkxt&Wpr4hP3L ')${ -- 1(G<0czrPNC(}4~+mjs*rwb -W fmb" _>stream -8;Z\39:!L=#eZ7Sl'49`*%!1W#Hfj,6o,o"OZ1_sb"(eHYpcXRE&\gI7mX`Y]1Y9N -*1V.X.2hY\H1\Rcf0iP0+"9^0]BgL+>S9L&Ra?V,`03ifS39Bo2WJ@""Dd+0! -W+bJ3fHhb2Z4%?-%ZF\>5=KVurhPT+'ho]&l6Fq[,j0`l5$B(tf5%0qj:Wc+3&I_H -Q=?Pc*;$iF/Rc,D*`TI\G<3h(pb.QYls,XPdJTa&b]=$Gq5W`N?urT^PWSe@q,&nQk`HZ2+*7JDMN+_r5Po#bM2! -MshUV~> endstream endobj 396 0 obj [/Indexed/DeviceRGB 255 397 0 R] endobj 397 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 390 0 obj <> endobj 398 0 obj [/View/Design] endobj 399 0 obj <>>> endobj 394 0 obj <> endobj 393 0 obj <> endobj 400 0 obj <> endobj 401 0 obj <>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 18.0.0 %%For: (Sindre Sorhus) () %%Title: (logo.ai) %%CreationDate: 27/06/15 15:06 %%Canvassize: 16383 %%BoundingBox: 29 92 615 527 %%HiResBoundingBox: 29.1790304797232 92.9605668729 614.311030479725 526.638610839844 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 18 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: -178.254969520276 -52.9041095890407 821.745030479724 647.095890410959 %AI3_TemplateBox: 319.5 240.5 319.5 240.5 %AI3_TileBox: -81.2549695202761 17.5958904109593 701.745030479724 576.595890410959 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -427.649478726402 883.394759087068 0.7098 1448 862 18 0 0 -4 38 0 0 0 1 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 402 0 obj <>stream -%%BoundingBox: 29 92 615 527 %%HiResBoundingBox: 29.1790304797232 92.9605668729 614.311030479725 526.638610839844 %AI7_Thumbnail: 128 96 8 %%BeginData: 15720 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD20FFC4C4FD3CFFCBBDFD3EFFCBC495BDCAFD3AFFCBBDBDBDFD3C %FFCBC4BDBEBDBECAFD38FFCBBDBEBDBDBDFD3AFFCABD95BDBDBD95BDCAFD %36FFCBBDBD95BDBDBD9BFD38FFCBBEBDBEBDBEBDBEBDBECBFD35FFBDBEBD %BEBDBEBDBEBDFD36FFCAFD04BDBEFD05BDCBFD34FFCABEB7BDBDBEFD05BD %CBFD33FFCABDBDBEBDBEBDBEBDBDBDFD37FFCBC4BDBEBDBEBDBEBDBEBDCB %FD31FFA2BDB7BD95BDBDBD95BDBDFD39FFCAC4B7BD95BDBDBD95BDB7CAFD %2FFFC4BEBDBEBDBEBDBEBDBEC4FD3CFFC4B7BEBDBEBDBEBDBEBDCBFD2DFF %C4BDB7BEBDBDBDBEBDBDC3FD3EFFC4B7FD04BDBEBDBDB7C4FD2BFFC4BDBD %BEBDBEBDBEBDBEC4FD40FFC4B7BEBDBEBDBEBDBEB7C4FD29FFBDBD95BDBD %BD95BDB7BDA2FD42FFC495BDBDBD95BDBDBD95C4FD27FFBEBDBDBEBDBEBD %BEBDBEC4FD44FFCBBDBEBDBEBDBEBDBEBDC4FD25FFFD05BDBEBDBDB7BDCA %FD46FFCBB7BDBDBEBDBDBDBEB7BECAFD22FFBDBDBDBEBDBEBDBEBDBECAFD %48FFCBBDBDBDBEBDBEBDBEBDBECAFD1FFFCB95BDBDBD95BDBDBD95BDCAFD %4AFFCBBDBD95BDBDBD95BDB7BDCAFD1DFFCBBDBEBDBEBDBEBDBEBDC4CBFD %4DFFBDBEBDBEBDBEBDBEBDBECAFD1BFFCBBDBDBDBEBDBDBDBEB7BECAFD4F %FFFD05BDBEBDBDB7BDC4FD19FFCAB7BEBDBEBDBEBDBEB7C4FD52FFBDBEBD %BEBDBEBDBEBDBEC4FD17FFC4B7BD95BDBDBD95BDB7C4FD54FF9BBDBDBD95 %BDBDBD95BDC4FD15FFCABDBEBDBEBDBEBDBEBDC4FD56FFC4BDBDBEBDBEBD %BEBDBDC4FD13FFC495FD04BDBEBDBDB7C4FD58FFC4BDB7BEBDBDBDBEBDBD %C3FD11FFC4BDBEBDBEBDBEBDBEBDCAFD5AFFC4BDBDBEBDBEBDBEBDBDBDFD %0EFFCBC495BDBDBD95BDBDBD95CAFD5CFFC4BD95BDBDBD95BDBDBD9BFD0D %FFC4B7BEBDBEBDBEBDBEBDCBFD5EFFCABEBDBEBDBEBDBEBDBEBDFD0AFFCA %BEB7BDBDBEFD05BDCBFD60FFCABEB7BDBDBEFD05BDFD08FFCBBEBDBEBDBE %BDBEBDBDBDFD63FFCABEBDBEBDBEBDBEBDBEBDFD06FFA8BDB7BD95BDBDBD %95BDBDFD65FFCABEB7BD95BDBDBD95BDBDCAFFFFFFCABEBDBEBDBEBDBEBD %BEBEFD68FFC4BDBEBDBEBDBEBDBEBDCBFFC4BDB7BEBDBDBDBEBDBDBDFFFF %FFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCB %FFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFF %FFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCBFFFFFFCB %FFFFFFCBFFFFFFCBFFFFFFCBFFCBC4B7BEBDBDBDBEBDBDB7CABEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDC4BDBEBDBEBDBEBDBE %BDBEBD95BDBDBD95BDBDBD95BDBDBD95BDB7BD95BDB7BD95BDB7BD95BDB7 %BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95 %BDB7BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95BDB7 %BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95BDB7BD95 %BDBDBD95BDBDBD95BDBDBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBDBEBDBDBDBEBDBDBDBEBD %BDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBD %BEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBD %BDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBD %BEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBD %BD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95 %BDBDBD95BDB7BD95BDB7BD95BDB7BD95BDBDBD95BDBDBD95BDBDBD95BDBD %BD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95 %BDBDBD95BDBDBD95BDBDBD95BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDC4BDBEBDC4BDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEFD04BDBEBDBDBDBEBDBD %BDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBE %BDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDFFFFFFCBFFFFFFCBFFFFC4 %B7BEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBE %BDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDC4FD0AFF %C4BDBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD95 %BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBD %BD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDFD0A %FFC4B7BD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BD %BDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDC4FD %0AFFC4BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBD %BEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEFD04BDC3FD %0AFFC4B7BDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBD %BEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBD %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEB7C4 %FD0AFFC4BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BD %BDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD %9BFD0AFFC495BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95 %BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBD %BD95BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDC4FD0AFFC4BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEFD04BDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBD %BEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBD %BDBDFD0AFFC4B7BEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBD %BDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBE %BDBDBDBEBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDC4FD0AFFC4BDBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95 %BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBD %BD95BDBDFD0AFFC4B7BD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD %95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BD %BDBD95BDBDBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDC4FD0AFFC4BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBD %BDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBD %BEFD04BDC3FD0AFFC4B7BDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBD %BDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBD %BEBDBDBDBEBDBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEB7C4FD0AFFC3BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD %95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BD %BDBD95BDBDBD9BFD0AFFC495BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBD %BD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95 %BDBDBD95BDBDBD95BDC4BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEB7CAFD0AFFC4BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDC4BDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBE %BDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBD %BDBEBDBDBDBEBDBDC4FD0AFFCAB7BEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBD %BEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBD %BDBDBEBDBDBDBEBDBDB7C4CBBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDFD0CFFBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBDCACABEB7BD95BDBDBD95BDBDBD95BDBDBD95BDBDBD %95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BD %BDBD95BDBDBD95C4FD0CFFC3BD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95 %BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBD %BD95BDBDBD95BDBDFFFFCABDBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBECBFD0DFFBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDCBFFFFFFBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBD %BDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBD %BEBDBDC4FD0EFFC495BEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBE %BDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBD %B7C4FD05FFBDBDBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDFD10 %FFC4B7BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBDCAFD05FFCAB7 %BD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95 %BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95FD11FFCABD95BDBDBD95 %BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBD %BD95BDBDBD95BDBDBD95BDBDBD95BDC4FD07FFCABDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDCBFD12FFCABEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEC4FD09FFCAB7FD04BDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBD %BDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEFD05BDCBFD14FFCABEB7BD %BDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBEBDBDBDBE %BDBDBDBEBDBDBDBEBDBDBDBEB7BDC4FD0BFFCBBDBDBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBDBDFD17FFCBC4BDBDBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBDB7C4CAFD0EFFA2BDB7 %BD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95 %BDBDBD95BDBDBD95BEC4FD1AFFCABDBD95BDBDBD95BDBDBD95BDBDBD95BD %BDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDBD95BDBDC4CAFD11FF %CABDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBD %BEBDBEBDBEBDBEBDCBFD1EFFCAC4BDBDBDBEBDBEBDBEBDBEBDBEBDBEBDBE %BDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBEBDBDBDC4C4FD16FFCACAFD06BDB7 %BDBDBDB7BDBDBDB7BDBDBDB7BDBDBDB7BDBDBDB7BDBDBEBDCACAFD23FFC4 %C4BDBEBDBDB7BDBDBDB7BDBDBDB7BDBDBDB7BDBDBDB7BDBDBDB7FD04BDC4 %C4CBFD1DFFCAFFCACBCAFFCACBCAFFCACBCAFFCACBCAFFCACBCAFFCACBCA %FD2BFFCBFFCACBCAFFCACBCAFFCACBCAFFCACBCAFFCACBCAFFCACBCAFFCB %FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDA9FFA8FFA8FFA8FFA8FFA8 %FFA8FFFFFFA8FFA8FD09FFA8FD09FFA8FFA9FFFFFFA8FFA8FFA8FFA8FFA8 %FD07FFA8FFA8FFA8FFA8FFA8FD09FFA8FFA8FFA8FFA8FD07FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FD09FFA8FFA8FFA8FFA8FFA9FFFF2852284C %2852284C2852282852FFFF7E27287DFD06FFA8282828A8FD06FF772828A8 %FF7E28282852284C2852282828A8FD04FF52282852284C2852284C2853A8 %FFFFFFA8522852284C2852284C28527DFFFFFF53282852284C2852284C28 %52284C2852284C2853A8FFFFFFA8532852284C2852284C285253FF282728 %2828272828282728282852FFA9522753FD06FF524C282853FD06FF522753 %FFA827522828272828282728284C28A9FFFF53282828272828282728284C %2753FFFFA85228282728282827FD05287EFFFF7D28522728282827282852 %FD042827FD042853FFFFFF5328282728282827FD0528537D7E7D7E7D7E7D %7E7D7E7D532728A8FF532827A8FD04FFA828274C2828A8FD04FFA8272877 %FF5328287D7D7E7D7E7D7E7D7D282853FFA82827537D7E7D7E7D7E7D7E28 %2821A8FF7E2128537E7D7E7D7E7D7E7D4C2753FFFF5228287D7D7E7D7E7D %532828527E7D7E7D7E522827A8FFA82728527E7D7E7D7E7D7E7D522728FD %0BFF7E2828A9FFA8284C7DFD04FF7D28532852287EFD04FF532828FFFF7D %2853FD09FF52287EFFFF284C7DFD08FFA8537EA8FF7D2828FD09FF524C52 %FFFF7D2853FD06FF7D2828FD06FFA828527EFFA85228A8FD08FF7D4C28FD %0BFFA82728A8FFFF522752A8FFFFFF282828A8282828FFFFFFA8522853FF %FF532828FD09FF282853FFA84C277DFD0DFF7E274CA8FD08FF532753FFFF %522828FD06FF7D274CA8FD05FF7E2827A8FFA828287DFD08FF7D2752A87D %7E7DA87D7E7DA87DA8534C28A8FFFF7D2827A8FFFF7D28287DFF7D28287D %FFFF7E27287EFFFF7D28527DA87D7E7DA87DA87D52287DFFFF282852A87D %7E7DA87D7E7DA8A8FFFFFF7D2828A9FD08FF522852FFFF7D2753FD06FF7D %2828FD06FFA828287EFFA84C287D7E7E7DA87D7E7DA8534C282128272821 %282728212827282828A8FFFFFF282828FFA8522728A8FF7E282852A8FF4C %2828FFFFFF522828282128272821282728272853FFFF5327282128272821 %282728214C7EFFFF7E2728A2FD07FFA8532753FFFF522828FD06FF7D2152 %A8FD05FF7D2827A8FFA82828272827282128272821282828522852285228 %5228522852285228A9FFFFFF7D2852A8A8285253FFFFFF524C28A8A84C28 %7DFFFFFF7D285228522852285228522852287DFFFFA95328522852285228 %5228522853FFFF7D2828A9FD08FF522852FFFF7D2853FD06FF7D4C28FD06 %FFA8284C7EFFA85228522852285228522852285228282853FD08A87D274C %A8FFFFFF7E28277D522827A8FFFFFFA827284C7D28287EFFFFFF522828FD %0CA8FD04FFFD09A8532828A8FF7E2728A8FD08FF532753FFFF532828FD06 %FF7D2752A8FD05FF7D2828A8FFA8282853CBFD0AA852277EFD08FF7E2828 %A9FD04FF524C28522853FD05FF53284C285252FD04FF7D2753FD19FFA827 %52A8FF7D2828A8FD08FF522852FFFF7D2852FD06FF7D2828FD06FFA8284C %A2FFA85228A8FD0BFF282853FD08FF7E2728A2FD04FF7D272828287DFD05 %FF7D282828277DFD04FF522828FD0DFFA853287EFD08FF7D2827A8FF7D21 %28A8FD08FF522753FFFF522828FD06FF7D2728A8FD05FF7D2827A8FFA827 %287DFD0BFF522853537D537D537D537D525228A9FD04FFA852285228FD07 %FF28522852A8FD04FF7D2852537D537D537D537D537D53A8FFFF284C287D %537D537D537D53532852A8FF7D282853537D537D537D5377284C53FFFF7D %2853FD06FF7D2828FD06FFA82852A8FFA8522853537D537D537D537D537D %537D28272827282728272827282828A8FD05FF5228217DFD07FF7D272852 %FD05FFA82827282728272827282728272753FFFF7D212827282728272827 %28282853FFFFFF28282728272827282728272827A8FFFF522828FD06FF7D %2128A8FD05FF7D2827A8FFFF5228282827282728272827282728FF7D5352 %53525352535253525352A9FD05FFA85253A8FD07FFA85352A8FD06FFA853 %52535253525352535253527EFFFFFF7E525352535253525352537DFD05FF %5353525352535253525353A8FFFFFF7D2877FD06FF7D5352FD06FFA85253 %A8FFFFFF7D535253525352535253525352FD04FFA8FFFFFFA8FFFFFFA8FD %1FFFA8FFFFFFA8FFFFFFA8FD07FFA8FFFFFFA8FFFFFFA8FD07FFA8FFFFFF %A8FFFFFFA8FD07FFA8FD07FFA8FD0FFFA8FFFFFFA8FFFFFFA8FFFFFF %%EndData endstream endobj 403 0 obj <>stream -%AI12_CompressedDataxܽzJ( 6^Ҩ ?3n\{?ϻ׺܀HHiakw9!f8%I*eEZS'Wm 4*4Ca%MYDCmWwQKRIo_ٚ͡{$b ۿ4a[aX,oH s'b8'Z& ݷ)rJt\o9x2Z\+ `PtX] xoÐ35BѦ[$&'#^H1Gl_9xIcc!ߖSȍ1/z f*XPF;nw\kต,(+k k[\`;x;x LZ:cQYBy#Ih^FFsv~vYA5'bPLZ>eIGDbv@;xYx$)d!r\/v=Zޛ N5cI\T,q~>]/w) ?V -7QaloPh@!:OپYΏŁcF_uE;(07ɿje\UA ͠t0]%A{_PzɈC#w"8H>O"bL!,!2cިJĔDH(=3!噐H†F'tp#.)}%|RQ6-x2H-'=\@Qc՟qVr=VXqO;v^n1E­'-Vi'Rl-a1kr"fF8õ`JdڀpE \_'kˆxO4Pjob ?')z m97)fT}/ x5Ozoőp8'H8%#γQyA@Ps-8pE=^ # IuHYI:WסCj?MdP#cK2/ RjJ|ݞ[0)o>È [gESx*k-Fuu5oa纊3 gE2FmSI j=0[(1jto~aw[t6~<#yf?g>'j^?+Aۯ abu oIsZEo;|5A̘4)Pĸ~ ǒaQ.j'"\Y^h#IwcjXrLͬh]0 -a::&%= 13龆!2AsdYʵ@ 0_`7^n$AƭYW[r"{IAhIl|;)^ f.gV.԰ݘʩ`DCPB5r)h 81؍g3mr14^/^a-$A$cN~m/h4Uoh)Qo05]e(m$e )mj.=V%; 0q")h\W$TP !@$p n aΎw:^s&F`& ݭX+HjoRˎ[,=n/BSQi="` -D@{hZ o{8)ZOWhe -Uׇ6؂*J`aMaIqȅKl,3oZ'v"E6`GO؆Ay 992@"&5i&8:YQa0VQN|,/0x`gǢDl8\-ҠaX{*\;pikҶ㮍q&@RJ_MpOd0q F;#M[A[0=[\4Zx"Qt셙LxWv?K}DM0*lk"o;Ւ039s hB,41IƢXZv:g{\rUA;@Wep>'ȷTQC)>D^d0 (fjH kڋ ]ƌ3bLP'd%"('Dq=;ѳ4|6%1;'#*00Idkur f5t%JCZˈ#*r݁RKJޒׅTR4Аsؖl UBnAR'@ RWTxь5Lž]Co1BPEJ̆Mj a_ц/ )U+hdGIL[߀2ǻ_TN dc(t8N,w; `axjSyH=VvW]4J eW`u= K5,4d1 LDy v}H2A }z:Kjz[sx\J[W exEaóR (X5#|+i qk/!m&J Ƃ3u\֨񿢀a,UXÇ A^VQ"z9W=`s2 2U$***on9:rQ̰ n4k! Lgm„ V(_ͬp7e/h%j(Ȗr -ьDoqLZrMQUKq4 =pQ"bk/Άf3@D R2 |ͮ'$^mґh7)fM8vCA\_]HmH,P| M˝Q_ %7J5]nW} -1Mǻa3~5@KH_Vw\B bk}[t3_NC:|. .P]p|GN"fe)8?ܺ>7 #_jd_*dx]g%˛S':A٘{%|W8sSy(%|!(ŁMٛfO=Ӽ䫌`ADf_߲p^n3I^eF;Bpm6""跨X"V b?B-+^MmsU*o358Ao0-6{ qoy-埗ai 7yx3#|jze hFw'o?e|*cdWƁꂙ*-122VȇdFjH-/XI9+Xn -Ȩf0ÑdL-eH;tDusΪm 0 VfPB`Rmni|Qs Ǡ]_%joT䊸/Y 4L6Y.6+ޢvALJ "ǒoWuZoqtJ9/>R8!h)gz' ūv ^)Ƽ-og=zK.-X9*QyYSZ齯?ki4a!X)\e5S]"<kHYPq+)d>>#G#oA=ݕا(ɨ@󦈿@6yjaFKz.ol -^+5S1Ip -oXBK+Z^D_cf >eoEX!ƣr'4|U` j -{EQ` |iē[@8 SvK#`B"r+bFsDFN`%jpq;O?,"~X2/(=a dbaށ`#2ET _0sMyEZCt}!2H__M0T6nT ,H1nZq+ *<oD^B4e_+CITgNJ^Ȍ$˳@4O?Ř pOOwOG0Tq>}$}2ea[^|NF89 ?:6Gֿ!%ZAA)vWdқ`lَc}mO1yWIk"(fvVp_d5OQH%\z,5D[b91L$cUH^7, _SWwul VN:tp>3_7_ɹH;012v,1Ji_ 0c7+ܠaoX:j^QG ]Z*;]$h}a`ܯQ>cqVm>N\WOaRY-`L6"F7˧z;X\:8"`0>>'>+/;ܖ-~kк1p"ـkμ2 -6 wgXJ]Wv3-p|&C`vW^q%{I0>|oʍ -OygQs>>Ħ -ˍhLWލ[^ ߀_u+߹.dsYs -D*m.F"ڡ+^O[ _}17m}GNxeX"?ߩtB<{Hz-'ը?N-Y4^8Zq^V|4c/tfqv?9k% Ɛ^kR?' v9+YPXegq 1yV`vm,-Q ؑVamJ2 -]AJUNly=˸?y:9_QFodLPXrI7SHJ$WJOv8,?`EfTuTWKyndpUPnRƸ)E*z!Ď1yX)j/RʘyR(aku@0L&DC9Йǟ8zn~;5XMD쨷M}j%;,~V6z,/OW`ZAK)8 {ph6QQ} - v^\X>8 2&VBբ\:`b$cL vy骫1{e"]Wp]ND j?^ 7;gk\ iq}osRF_POqM6it 0nf9 C] .e, 5.`=aԃ7 VލL=3.j߱=Ľm O@FXe:|}5Р1Th㐵.wow"U糸ȕ`72cps!9@}I3O8Pwcz79Ieeb ccJ\!;,Ձx}AXn*ӫ'dlToDr{ss` )X@cWh "R^/VvPlq_u-Nc%9B 7K%%$@1NeXkT1#c|u^)$jn};?o4;n1YP'禄T[ -n.Z}{ׁGbAU/)EoHh,/{[@ȻL_~cE|~G2/eي LWBaL&^`9j6?xT/-gWúg_Y, cM%|fgɋ|SV`:D _|b]))Tn׾ [,ݖUwXƲ -|It==~!8$|.bϭV4}Lch^Ʒ'/'?T@o 1/F^~/|BL{b-]R|<-/\zl@J_nK/% =}\W]/xͰg2Uf`~C}\-b*Gc3i%U~|m֮\!8>woL{nXyh!Dw>08VK]J-&ʃ7 fPLufgO>W A0.*=fҼ2e YLy#fc$gm#‡gJvJ#R@QaO5@tIb{w'=b?iϿ٩r|xTk+(ʱ,"A IWH+W%"1_n!NeQzf7ן-a)<'zz"juv ,46w~kͮ26[[,w=6kBXvB裶)Bh`:D˫H5ʆp(<-,2C"EB)x ޶DH?e+EhOtD}U&RDJ'^pCz$(fnh)!5w>b -ص=N*# >jHUu8CGVvM6U:5>SDFHQƳ૗#w#ѨYi锉RR0&)O0+?V45>AE_ޣ*x"US^Zi;y]4}JHigv ,5eZ#VMbH󸽳 bϪtTCI F}e5$\R0.k_E;d&`V>VU ҷ ֌qsNL=&6VAf/5eTBjqWTz rݴ31~;t_!Nz_'.E}vxMU,^2as5UFRE֮š@k {ݗ>d+ïOEUC ) :0#}k2ǟݦL-B -חcZ)GkSA:x*͝"ģʖWԯV: CI-4؃YW]JiyRw ~oahoes^6лސ*BE?gmi@@ -Zh-eHUA2UEGi؞*K)j<,-&*$'w6,S@+c2"Z"S=]qP} -拧PQy[b)⇈˞7JȟnWTzo7Ro'BHb=8.nަo7\HV}jqDyߤg2>ůR򧓻~Y -O_MG9u+{*oOWPIűYU_jAQէwHUt;69vci|x޾&ӻP -WXS*oGXќreO':>-2GoTԞ/<g+=ͽ[_'o)a3{G5rX׬:jf:%.9NO ߪ6_S^KkP[z wޤB۶] px^ȇdfS!u7%}gxg:n@w/QbLh4v}[}1M)X~pUXKT`&FEHŮZ@J_/4 %Y}Z[KH{oCHCA@+_*H^UdݗE*R;,flU6"D)Gz1%zf-_V]ڒc#$+w(? -^QH#r#eU.7<ᆡOݹf=ՇZ 25sgv8>B"6 bzP1u'B}uP!B8<}U=~#H*IĠD0pÖYdɪ}<0Ι9 -ߒw'2Kz2cq|UC>u4* J@(OF(³W7 *ʁ&SzIf%?fH =FomQJk*aGH+K8FA|WR 3r߀vgcTقV2ʘrK2 -)Wi1L:We՜a]IT/2B#@ }ғ( >5W4#$rlXC;`  j?=$YL8Ø?ޥk=߰; L8V: -aF(BL?b __dRf4QPZu{I׌3T|rH"|1f)OpyԦ00EqUP:S\I;.GH^KdKcةIw@ -y6iІI==Z~w.r,F@~CHѪzBgs7JlbыTٖ;1IAjJȔD &2SZa]ɡ2l0{;%2x9&]O"ͭMԽ?Z9ݽ|; tSi*ܳ#zGK2cmYB&lYYD"ora8 ;X0 J(:*+߂jU*F6䘡)\ ڼ -Yjʡg?hL"#S%ByrɗR= T -wٔ*깣yk~ V*e -˄\-fpFg -KDHj{ұP>([JU" uI$|KSz>l= v=OCU /X9W1UC]A3/QC]A';%: -:Ƃ=NNZ-xz vZ: -:25ttjk+|H v;n'cBL -|ğC\YBe FGeI5KxAo>> +vF4٥lgdEvќ9N\aO |{dT6656 -"Ⱥ2SA3!L($vg`}ZP7TI#RѮiv,~g3 ɹ0jx͹G9 'PZjEŪCZ0K#1@L6Jdaa%du`\YM;\Ao4Q7ѮKӮdsxqqj] e&CourMdjlx(YMmiVd `z%2wE!0zD*fn/.)TvQ[/|WTUˡ(t@t0 -}Hun3y9{SȻ=UzAauQ6[('!f SMoSՅS+١W'#0 y.hhj{3zU$YH7#R{ }{ܔ=@]35J3^f㓙'ʱeD@J㝒v)dKLDQTDF.r!>ֽjuJ Gd6wcSܝ5 ~oLD&lOA^?va "sw "uA."syJ` Fd,2#2,3X'rfRJ:\oI{:T]c="{^kS+ {ՐPakQiHGyE\g&?EBsL>az]zaPҬP&!c){IAP:y^[h|\Lwr=^,bl=ܙ2fNpp'" Uz8U X %yԖ.0ZgU]N;s[ֱ_Y7SCZHN$0}RHX9VdJP-'HT5K jup.R2(ͦ"EƓUb3|gO18 4n-9{҈"vN'[ߑENFP{1rvGI`7[>بiσe3Z$ -wÂg^c;haPëU&/HDE*rTX/vTTE^v ~֋ҡ$# [54 -@\P٥pUlHR8q|)Ũ~V)H)_yR8މ%)gDb8p Cze;t !1_WvlqQٳ ԥȝ d962J،vW,Zk 0@>8sP )琰c.̶u<,_jҞJ>w\|n2/U|ݕiT K;n1r1X6$Ҩ;onKʋU+FuULzVa>T+Zug -;SEjq4LŽЪ%|zUGZy| Hoҧ#QӕE>rR}iC#M]6Ӓ4c -(7q|9:K-/ʶ5xw{&߾! l!=V:eK -ǹk\vzz7-mM<|N4S6pԼKdlA.AY uJ.1~l2F"ǧ͗s ,ٕ/SȂP5-32tJ/tkE$tz'OSJ+)tJt޷Vӝ6WMI%t&ŪidtJ~3\.[Mzj:Z:]NɸAqV)z5<[ܗtB5|\Ni'_M'<{tJU^Nӵ ph5!]MTK'Z.TMTKwtStJ$5#SS9NvV^OZM4B*OgT)0\~~V5 ]s+RŽOM^RCJõXW C) }uFMн(^A{]BvUnG7њE:*W*V -˲.)jf*.1 ;Zɝ;!J;eJ*i4`;xzEw^sg\Ug!]_NN@7ZYd7wg3oif˵Ftg U9Z)`!vh*LTCE0k$siՍrbε&0CȆ0#H];&wkj񒧨- QO2uO.D$^{4~ܩjH e&yǥgbGR̈́@sZ3૟.R"?XkjWE ONKpuc@z={#}Xaǯ̫>gosV>>\.@ s,>҃VI^h=MÔK2Ygh/bGa_Ƥ"&xaʥ=5aA)Fs3z9fdV-#6W)vȳ0VyRHLCQ)}|EevFLָwlkָN[y1Ղf"6 -ySdvg-5 -KgI}: *`j- *JԾV(BV`1Zޥz^&\#(k"J'a]τSW/pU*Utr4 ˓RI=LvJ9O|{IgT'jdi/F*ۛX !YT]U.cF0asKvpON*{a.^β9%>f8X[_!v*@+3,E&eN VxE^GWO +ae*0͞<$D~V J=U}kR@=M}te*Z&cLIj=N!^ݦu2k\)d}aǏ*TF~&R@KD0{ UB`*7@l<Υ9qlfCcGªά,sՌs %}ШӪ*œWQ j ߨ'φ2Wh(STQ~JUP#UO39JR>K$Yjĥ|'Q\R>Tvk85.KGy)(/V?{)y|iΨ7gCp᳡κ׏SW=O4yJw)tΆ2~vΆB]ZiM v٭~-fglEJS!+4u~Fng0rhf@}㸣\1#SӾO3}骴 oӎL3xήy׾}|-yG=nS۱2{v .OawTS0i'7a'f~j"ک1t~q̈́k~'W]{и׺}|'"8>>BtO JPc~ڷ1ir{W]lg@dkԽ~ڷ]>>c>>(wTr~^:vO84"~ޫ{:\{t޽~B9RIfg^?e(\+ɽ~lqB(6~ֽ~݄ӎkwry|LkIWvErֽ~nhVuc3!W^^?#U}r{1͟*6YO{džR Nb(맽~:{T'{|KcW j(ɳR -Ûzܗ]~SÔ$Kbybx"İ;eƢrIWQ[Dm6ټv,3M`=m0"ajqWͮ?y[}gai'҇C] @dx-ڬEF97>^=1w;RuWu k;:6h{y9aW-~o4܇{ RhhQegޯ-4{3agX{zb7%]xi_AG'm _f+{ R /K^+Iui9LO;8G+ Q.Q:<|NY E6MJh_zY -VoB^l3XKz]=lQMPڤ`ɦ ]1dfo Ԛ'1GP~g{,ͮ}.gjzծ_mlm(c 0_,s ⰘqO7m!te_ ][Fs{GFNF' ŎO[5Au@4v};k`zHu[9UW}ur?J^w?| AP`WG//x{vM88>yd? =%0|C, -:'1 ycL*Uħ[6 ª >5 ۞pgY2s ha{"Ƅܹ|bI Nq{ -w|߰u7JB|^rSr׫!*ָyC,Fm;Q|K ݃}Yy1H.o/-A œx""˹8/*/~v\B\_ؓOx7 SaTқgh߂|U ༉ .+{eMbO卽\sXhuT|I7X.=U cug@@q S? ~O!`[>#׈BT&j塟`&T g ldFաMi".E`y+ Z\tp.LݐHS& 7w9|[mВwfϻz׾iʏ.`n,_fbhqMPǐY4|Diq@?)-Q3*Ehn/;Ѽtt`:& c,?ޥ'Q|a -hUn6} -<[B/ն*ի@Xzi*̀+3ry@NgxtiR€|8 2$0w؞8!WVJ^;v`[u{W<܋_R1  cF ->2FX5wX=WR9YPhݗXPj {@u(:\L]T\9@I$϶;x Ex`UVX$#M5;TXW.S^B`q%]-"k GKf:{h?2_pc;s^XjUWD.DgP~͆#\ctŻ|[z4NxC>*pwt,k:{sp*c9}/ܜw2'Ll[4v;Pp<,J_&&;<$ sn(h7c OmklؖIzR-%2 6S2vZ7ԁ/fz7ťYhQXm\)$h'b8:WƐv&\L@Е{}N:m7W]G6pv:mϧ; OWi?oٜgk-6_ڵ ,3^67El> c} &mzaGDP7O֩+u54c"AN*mt1}FA@R`we<t30jNg):CNSfw 5M RRχ9p4`=YhtKR2Nm苝n3!KEUr]~ж?a,sa&Y {O<fnqQ-sVk㧙_ y}~|K#2|83pi… { .Z3)EuaRrWeH -(f|K5U'=[ek- /D.Z+6  s|9pNBӡ'X ˁΈ*}n'4lv}5/⒳;Ӏϛ jDrsď61?A֙\'ɘ0 - 4.هSdL8z~D_!TQy)v>w_Gj b YNg1ПRahq~fJ O L+'XfWU`K,>`Q_‰-2UsR|IwW!I\S˙J:\=z:-aOJF8Q? $NWii{w`V )~7UJi&u˴G+-$E0hzVR0U"ņ@%҆ѝh{2Oա |JUQd?7<xm  ;ҟx4sؖvѰ\dѰյkqL#!F1 Q,}niBWB?4=J}WawŹ@'қi^Qmy#O ]DzĄ#'`9r%a~&eQ.D1 5\t6pֹ2 SdpKepTpzJxdJ!9pK6LzavFlܥIkQz(ꁍF!/K's3n_$r4xk0+i`\ )`קw~^;*Rc#Z|3K̄g7b;V m1!{ ͂\jE,@ָ!eg-Z@C2A{N6E#rK`< ꟁgL)Jb''J)\E@.%q蔖eD0'L>#rUɺd0{JH@hh -*1Į=TWԮVu?1مxeʣ+cZT՞]^ANbL+, -BrL.ytR"ɘq2`Xb2*vXW13t@e83{&_}d*7,T>+2,5ۀ*+YSqMc25rbV^ ^n{ %ꏤ_ccV^͊>5so *~cw!KfAsEU m)a\k>l eOzF3叞G+_\$I_ʰA-bPa}?S I/PASj=_W'wvǵzq3Y< .OyEe~S*]R.qe`ў*RE`-LoQ9 ,X5GSU~Gq,а1չ=bL *YN|db%Py𰟼L0Ѯhϻ.v .xS-e ' w@A9G_Y@qyP+zL^@2ҫ^yt$_ YΆCk:}NSs׷{#ABlW[hغַSu*O[Q9daKˇ/&SqDRַ<W7 {~-$Qz?Ņ-[t !?;v|ug7g2|~c3̶o -޴JOZ^_M އ2_`.h`CS(0* &oN-Z0\tv=H T0`2f p]hA?V0h݋{?'G)4|](wFnT>( O)XQXX0AZ,.Wվ*iu!<{G]\hdjϰ=Z3%2g=`LV'SdjZU1VOךA,:ϱ ǚlAY*%H8d vkjQrkYҖ`YG/Æ)k-5h3Šo #춝~S^NV > ᶝwpwf[U}뀉q! -v[fE{h+y+*;c8Իoc&DfdJb 6!Յe{™1Ed)dLJG#'CnX --qAKaQ%.hI0-qAKaQ%.hIfK\В[**- B[ₖ܄R%.hI\͖% [ₖ7l Z-aʒތO1qPE,T(XX=csؽY'sp&Y2^W^f|_4\]˫ X7{ shuqH[2gdJбgfMqփJ'#Zw gnc;ټ9QobZ=&9C3z8.:_(F(h@Y ACׁ @tDJd;`vc*^9:T^`ޑQ*g*}־V[Ry[Vd %{9Ne5Zj[U*ڨ]E2b]R @#We -C'oP 74.C|М>ˏm<Ǩ}uzTp6J*{ޭlPu< gE=W5/˂2E) >L8x&J -۠Tx±E8f_ ~١<&xm\oYy$tw'n3Z{nWs3YW#J8X=6#؃_2+O0@""x.X[&T)DP2>-@'@a|>FGW8& q/ F#rX\KV0;W|*6In0"v-L/v_ -zvm8fU7!i;(˘ULƂ"bB΃S "X; ucTƂsd,֟mCˀѰ!%lhp";~Ɋ|h$B;U/dĸQR\<E so8'aSWb-!q0$K`aD!"Zt;R(AVgwfzO~ղ~v |ޝoSfRÝlpmVeK%}'2/[yx+ﭫ{'z|+ﭫ{'^;y[[yc||'={vzx+w]󭼷>t27 -+\+> fwlZ d<M'wc>/,?yGl,-ƩON;Ǝ~ǧV?=߾>wE~xp8݇womɆ -n?^}r -L>yJww|=-koHGk}.uS -{]&;OxvvruWR/v~?^iG>Ц3?diwC*>}ɃO^>ݑKO>}уδ)73]K)h~uCGGG?o}/Ou?xuӗGΣGӕկnߟ\[Lo6qshїԫ\8s͵#W%].5,WZ 5eכ=r/\Ijȩ0=[1ĥ&O|g/V-Tz˹X&܊շ W--k=4UZBo=09ϩsUWL~s94}ckA}s|+[λIeXY0zr%6v{FJzO̜O-bP1z{)ҫSM.TBSs:"#Oy0W5s¸J`0!͕WOϾv]R[-sfT026/%Uk  -˜]NÌ71qv,.E8Z -[jST_Kf ~Jv`ifJċe \ w:0 ܋/qF|1P%{|i̗Ìcb\Bjs zM\3n - -(m"PYsÙ'>i5/aܝT1aTT+%+qsnSX -0q[!j-cR xE;f"%0i`zGU:Hp0HK#DLaYbJ<ÕAr)g:ӓ2jTs' HuÆ9!LdCh6 -5z쭎qV|A:^$#`:8FQ'C8? ~cYc'41QZv~d)`%j'.Ds(Z}z)äT5Ɖ0 -yՐ YE>Ɛ)éVH➼)~q:{zpT\rIM(~9B ĆQ2.r,QuaF"zt-5{INY (Oŷ(SFyl -h+1uqm|oRfK. -$}X|7 ":Ž1Nh j r5$|e -qTOwC>#Tyyp`ZӤ?F+踋q\(-3h%o|ueK&yX.cΌH/ ) QunL.y2a ᯈˡcV- TgPCaFŜj8mıdtߣEq$@cH1z2rYSYa@-C Ep"4%R[Jne A440jMZkQk_Ӏ:Ԥ:1d%D;^^94asTLDH *#%X.&]cDKt) dZՓ7"tnԼ#("_ -QkEBJT>w !J9@&h0e])3|wC,$A,mI(K5f :X1[!?ZNhzM>FfyIXz|`,@ǍɃ^t [+\lļg(DΗ;_6$KXA+9>/t0KX1 JuVI05dC))9B]+h0fkeC#!eQ66E1IxJD1y +$_Z$VDC"4@Ž70?Ύ>=[nm1.(˲2鼱wOIf|KHY2겉޺%h,0?pc0%^IU͠d4 ?iUvr@V1i3 RP$m3xNF!"\v"GDLE]<\Ȧ;VH=iD(a`$N/haXd*&dˌ;4 GA8魗CWXx%7R P*UI\GR1bc[9l-F:"K#/_8Fcƾ6)\,-yOA HM59E^-U*\5+lCFO&2 c.zy2kLJ@5oAd'K MV9d0H(Њ0jΰFh?1 }1G6)QQ]LNܚpyh5xpU%!PXw)Kzrg$C0"w*l.*rv -ufBc -M$r2 y"Naċ1b93`.aNΑGP)ёB­ZBW·,¨86b! u4ٽ$]4J[26ZD -Y8bKWNT]8bL`Er. c%[-{1[i`鵊Sn Nj9e{vA>@NBi憵h+(/wrmcblg+IQʝRsSx46Πz"tQZR̡H?TDg%t5B e۟7؜wӓg2]1=jo.H$`>y/!JJJCr_vy{+%ӣa}t_H` -)! l^tvx٨%cbBEӲH""Ir G܍LGE&Fx4''=3^A|\4:X0zm9ޜQBܝ51)z:J/1Z"4&KF7 Qc' > endobj 22 0 obj <> endobj 39 0 obj <> endobj 54 0 obj <> endobj 69 0 obj <> endobj 84 0 obj <> endobj 99 0 obj <> endobj 114 0 obj <> endobj 129 0 obj <> endobj 144 0 obj <> endobj 160 0 obj <> endobj 177 0 obj <> endobj 192 0 obj <> endobj 207 0 obj <> endobj 222 0 obj <> endobj 237 0 obj <> endobj 252 0 obj <> endobj 267 0 obj <> endobj 282 0 obj <> endobj 297 0 obj <> endobj 312 0 obj <> endobj 327 0 obj <> endobj 343 0 obj <> endobj 360 0 obj <> endobj 375 0 obj <> endobj 383 0 obj [/View/Design] endobj 384 0 obj <>>> endobj 368 0 obj [/View/Design] endobj 369 0 obj <>>> endobj 351 0 obj [/View/Design] endobj 352 0 obj <>>> endobj 335 0 obj [/View/Design] endobj 336 0 obj <>>> endobj 320 0 obj [/View/Design] endobj 321 0 obj <>>> endobj 305 0 obj [/View/Design] endobj 306 0 obj <>>> endobj 290 0 obj [/View/Design] endobj 291 0 obj <>>> endobj 275 0 obj [/View/Design] endobj 276 0 obj <>>> endobj 260 0 obj [/View/Design] endobj 261 0 obj <>>> endobj 245 0 obj [/View/Design] endobj 246 0 obj <>>> endobj 230 0 obj [/View/Design] endobj 231 0 obj <>>> endobj 215 0 obj [/View/Design] endobj 216 0 obj <>>> endobj 200 0 obj [/View/Design] endobj 201 0 obj <>>> endobj 185 0 obj [/View/Design] endobj 186 0 obj <>>> endobj 168 0 obj [/View/Design] endobj 169 0 obj <>>> endobj 152 0 obj [/View/Design] endobj 153 0 obj <>>> endobj 137 0 obj [/View/Design] endobj 138 0 obj <>>> endobj 122 0 obj [/View/Design] endobj 123 0 obj <>>> endobj 107 0 obj [/View/Design] endobj 108 0 obj <>>> endobj 92 0 obj [/View/Design] endobj 93 0 obj <>>> endobj 77 0 obj [/View/Design] endobj 78 0 obj <>>> endobj 62 0 obj [/View/Design] endobj 63 0 obj <>>> endobj 47 0 obj [/View/Design] endobj 48 0 obj <>>> endobj 30 0 obj [/View/Design] endobj 31 0 obj <>>> endobj 14 0 obj [/View/Design] endobj 15 0 obj <>>> endobj 391 0 obj [390 0 R] endobj 404 0 obj <> endobj xref 0 405 0000000004 65535 f -0000000016 00000 n -0000000534 00000 n -0000019401 00000 n -0000000006 00000 f -0000069053 00000 n -0000000008 00000 f -0000019452 00000 n -0000000009 00000 f -0000000010 00000 f -0000000011 00000 f -0000000012 00000 f -0000000013 00000 f -0000000016 00000 f -0000073705 00000 n -0000073736 00000 n -0000000017 00000 f -0000000018 00000 f -0000000019 00000 f -0000000020 00000 f -0000000021 00000 f -0000000023 00000 f -0000069123 00000 n -0000000024 00000 f -0000000025 00000 f -0000000026 00000 f -0000000027 00000 f -0000000028 00000 f -0000000029 00000 f -0000000032 00000 f -0000073589 00000 n -0000073620 00000 n -0000000033 00000 f -0000000034 00000 f -0000000035 00000 f -0000000036 00000 f -0000000037 00000 f -0000000038 00000 f -0000000040 00000 f -0000069194 00000 n -0000000041 00000 f -0000000042 00000 f -0000000043 00000 f -0000000044 00000 f -0000000045 00000 f -0000000046 00000 f -0000000049 00000 f -0000073473 00000 n -0000073504 00000 n -0000000050 00000 f -0000000051 00000 f -0000000052 00000 f -0000000053 00000 f -0000000055 00000 f -0000069265 00000 n -0000000056 00000 f -0000000057 00000 f -0000000058 00000 f -0000000059 00000 f -0000000060 00000 f -0000000061 00000 f -0000000064 00000 f -0000073357 00000 n -0000073388 00000 n -0000000065 00000 f -0000000066 00000 f -0000000067 00000 f -0000000068 00000 f -0000000070 00000 f -0000069336 00000 n -0000000071 00000 f -0000000072 00000 f -0000000073 00000 f -0000000074 00000 f -0000000075 00000 f -0000000076 00000 f -0000000079 00000 f -0000073241 00000 n -0000073272 00000 n -0000000080 00000 f -0000000081 00000 f -0000000082 00000 f -0000000083 00000 f -0000000085 00000 f -0000069407 00000 n -0000000086 00000 f -0000000087 00000 f -0000000088 00000 f -0000000089 00000 f -0000000090 00000 f -0000000091 00000 f -0000000094 00000 f -0000073125 00000 n -0000073156 00000 n -0000000095 00000 f -0000000096 00000 f -0000000097 00000 f -0000000098 00000 f -0000000100 00000 f -0000069478 00000 n -0000000101 00000 f -0000000102 00000 f -0000000103 00000 f -0000000104 00000 f -0000000105 00000 f -0000000106 00000 f -0000000109 00000 f -0000073007 00000 n -0000073039 00000 n -0000000110 00000 f -0000000111 00000 f -0000000112 00000 f -0000000113 00000 f -0000000115 00000 f -0000069551 00000 n -0000000116 00000 f -0000000117 00000 f -0000000118 00000 f -0000000119 00000 f -0000000120 00000 f -0000000121 00000 f -0000000124 00000 f -0000072889 00000 n -0000072921 00000 n -0000000125 00000 f -0000000126 00000 f -0000000127 00000 f -0000000128 00000 f -0000000130 00000 f -0000069625 00000 n -0000000131 00000 f -0000000132 00000 f -0000000133 00000 f -0000000134 00000 f -0000000135 00000 f -0000000136 00000 f -0000000139 00000 f -0000072771 00000 n -0000072803 00000 n -0000000140 00000 f -0000000141 00000 f -0000000142 00000 f -0000000143 00000 f -0000000145 00000 f -0000069699 00000 n -0000000146 00000 f -0000000147 00000 f -0000000148 00000 f -0000000149 00000 f -0000000150 00000 f -0000000151 00000 f -0000000154 00000 f -0000072653 00000 n -0000072685 00000 n -0000000155 00000 f -0000000156 00000 f -0000000157 00000 f -0000000158 00000 f -0000000159 00000 f -0000000161 00000 f -0000069773 00000 n -0000000162 00000 f -0000000163 00000 f -0000000164 00000 f -0000000165 00000 f -0000000166 00000 f -0000000167 00000 f -0000000170 00000 f -0000072535 00000 n -0000072567 00000 n -0000000171 00000 f -0000000172 00000 f -0000000173 00000 f -0000000174 00000 f -0000000175 00000 f -0000000176 00000 f -0000000178 00000 f -0000069847 00000 n -0000000179 00000 f -0000000180 00000 f -0000000181 00000 f -0000000182 00000 f -0000000183 00000 f -0000000184 00000 f -0000000187 00000 f -0000072417 00000 n -0000072449 00000 n -0000000188 00000 f -0000000189 00000 f -0000000190 00000 f -0000000191 00000 f -0000000193 00000 f -0000069921 00000 n -0000000194 00000 f -0000000195 00000 f -0000000196 00000 f -0000000197 00000 f -0000000198 00000 f -0000000199 00000 f -0000000202 00000 f -0000072299 00000 n -0000072331 00000 n -0000000203 00000 f -0000000204 00000 f -0000000205 00000 f -0000000206 00000 f -0000000208 00000 f -0000069995 00000 n -0000000209 00000 f -0000000210 00000 f -0000000211 00000 f -0000000212 00000 f -0000000213 00000 f -0000000214 00000 f -0000000217 00000 f -0000072181 00000 n -0000072213 00000 n -0000000218 00000 f -0000000219 00000 f -0000000220 00000 f -0000000221 00000 f -0000000223 00000 f -0000070069 00000 n -0000000224 00000 f -0000000225 00000 f -0000000226 00000 f -0000000227 00000 f -0000000228 00000 f -0000000229 00000 f -0000000232 00000 f -0000072063 00000 n -0000072095 00000 n -0000000233 00000 f -0000000234 00000 f -0000000235 00000 f -0000000236 00000 f -0000000238 00000 f -0000070143 00000 n -0000000239 00000 f -0000000240 00000 f -0000000241 00000 f -0000000242 00000 f -0000000243 00000 f -0000000244 00000 f -0000000247 00000 f -0000071945 00000 n -0000071977 00000 n -0000000248 00000 f -0000000249 00000 f -0000000250 00000 f -0000000251 00000 f -0000000253 00000 f -0000070217 00000 n -0000000254 00000 f -0000000255 00000 f -0000000256 00000 f -0000000257 00000 f -0000000258 00000 f -0000000259 00000 f -0000000262 00000 f -0000071827 00000 n -0000071859 00000 n -0000000263 00000 f -0000000264 00000 f -0000000265 00000 f -0000000266 00000 f -0000000268 00000 f -0000070291 00000 n -0000000269 00000 f -0000000270 00000 f -0000000271 00000 f -0000000272 00000 f -0000000273 00000 f -0000000274 00000 f -0000000277 00000 f -0000071709 00000 n -0000071741 00000 n -0000000278 00000 f -0000000279 00000 f -0000000280 00000 f -0000000281 00000 f -0000000283 00000 f -0000070365 00000 n -0000000284 00000 f -0000000285 00000 f -0000000286 00000 f -0000000287 00000 f -0000000288 00000 f -0000000289 00000 f -0000000292 00000 f -0000071591 00000 n -0000071623 00000 n -0000000293 00000 f -0000000294 00000 f -0000000295 00000 f -0000000296 00000 f -0000000298 00000 f -0000070439 00000 n -0000000299 00000 f -0000000300 00000 f -0000000301 00000 f -0000000302 00000 f -0000000303 00000 f -0000000304 00000 f -0000000307 00000 f -0000071473 00000 n -0000071505 00000 n -0000000308 00000 f -0000000309 00000 f -0000000310 00000 f -0000000311 00000 f -0000000313 00000 f -0000070513 00000 n -0000000314 00000 f -0000000315 00000 f -0000000316 00000 f -0000000317 00000 f -0000000318 00000 f -0000000319 00000 f -0000000322 00000 f -0000071355 00000 n -0000071387 00000 n -0000000323 00000 f -0000000324 00000 f -0000000325 00000 f -0000000326 00000 f -0000000328 00000 f -0000070587 00000 n -0000000329 00000 f -0000000330 00000 f -0000000331 00000 f -0000000332 00000 f -0000000333 00000 f -0000000334 00000 f -0000000337 00000 f -0000071237 00000 n -0000071269 00000 n -0000000338 00000 f -0000000339 00000 f -0000000340 00000 f -0000000341 00000 f -0000000342 00000 f -0000000344 00000 f -0000070661 00000 n -0000000345 00000 f -0000000346 00000 f -0000000347 00000 f -0000000348 00000 f -0000000349 00000 f -0000000350 00000 f -0000000353 00000 f -0000071119 00000 n -0000071151 00000 n -0000000354 00000 f -0000000355 00000 f -0000000356 00000 f -0000000357 00000 f -0000000358 00000 f -0000000359 00000 f -0000000361 00000 f -0000070735 00000 n -0000000362 00000 f -0000000363 00000 f -0000000364 00000 f -0000000365 00000 f -0000000366 00000 f -0000000367 00000 f -0000000370 00000 f -0000071001 00000 n -0000071033 00000 n -0000000371 00000 f -0000000372 00000 f -0000000373 00000 f -0000000374 00000 f -0000000000 00000 f -0000070809 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000070883 00000 n -0000070915 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000022868 00000 n -0000073821 00000 n -0000019797 00000 n -0000023174 00000 n -0000023060 00000 n -0000021691 00000 n -0000022304 00000 n -0000022354 00000 n -0000022942 00000 n -0000022974 00000 n -0000023250 00000 n -0000023428 00000 n -0000024669 00000 n -0000040620 00000 n -0000073848 00000 n -trailer <]>> startxref 74056 %%EOF \ No newline at end of file diff --git a/media/logo.png b/media/logo.png deleted file mode 100644 index ff968503..00000000 Binary files a/media/logo.png and /dev/null differ diff --git a/media/logo.svg b/media/logo.svg deleted file mode 100644 index e3ce1649..00000000 --- a/media/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/media/mentioned-badge-flat.svg b/media/mentioned-badge-flat.svg deleted file mode 100644 index 5d9da969..00000000 --- a/media/mentioned-badge-flat.svg +++ /dev/null @@ -1 +0,0 @@ -Mentioned in an Awesome list diff --git a/media/mentioned-badge.sketch b/media/mentioned-badge.sketch deleted file mode 100644 index 31cd6f85..00000000 Binary files a/media/mentioned-badge.sketch and /dev/null differ diff --git a/media/mentioned-badge.svg b/media/mentioned-badge.svg deleted file mode 100644 index 0f6fabf0..00000000 --- a/media/mentioned-badge.svg +++ /dev/null @@ -1 +0,0 @@ -Mentioned in an Awesome list diff --git a/media/readme.md b/media/readme.md deleted file mode 100644 index 4369adc4..00000000 --- a/media/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Media - -## Logo - -- Primary color: `#fc60a8` -- Secondary color: `#494368` -- Font: [`Orbitron`](https://fonts.google.com/specimen/Orbitron) - -You are free to use and modify the logo for your Awesome list or other usage. diff --git a/media/social-preview.png b/media/social-preview.png deleted file mode 100644 index 30b122e8..00000000 Binary files a/media/social-preview.png and /dev/null differ diff --git a/package.json b/package.json new file mode 100644 index 00000000..36a614ff --- /dev/null +++ b/package.json @@ -0,0 +1,53 @@ +{ + "name": "health-vault", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve -o", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test", + "lint": "ng lint" + }, + "private": true, + "dependencies": { + "@angular/animations": "~17.0.0", + "@angular/common": "~17.0.0", + "@angular/compiler": "~17.0.0", + "@angular/core": "~17.0.0", + "@angular/forms": "~17.0.0", + "@angular/platform-browser": "~17.0.0", + "@angular/platform-browser-dynamic": "~17.0.0", + "@angular/router": "~17.0.0", + "hammerjs": "~2.0.8", + "igniteui-angular": "~17.0.0", + "igniteui-angular-charts": "~17.0.0", + "igniteui-angular-core": "~17.0.0", + "minireset.css": "~0.0.7", + "rxjs": "~7.8.0", + "tslib": "~2.3.0", + "zone.js": "~0.14.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~17.0.0", + "@angular-eslint/builder": "~17.0.0", + "@angular-eslint/eslint-plugin": "~17.0.0", + "@angular-eslint/eslint-plugin-template": "~17.0.0", + "@angular-eslint/schematics": "~17.0.0", + "@angular-eslint/template-parser": "~17.0.0", + "@angular/cli": "~17.0.0", + "@angular/compiler-cli": "~17.0.0", + "@types/jasmine": "~5.1.1", + "@typescript-eslint/eslint-plugin": "6.9.1", + "@typescript-eslint/parser": "6.9.1", + "eslint": "~8.52.0", + "@igniteui/angular-schematics": "~17.1.1315", + "jasmine-core": "~5.1.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "typescript": "~5.2.2" + } +} diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index 88c8b043..00000000 --- a/pull_request_template.md +++ /dev/null @@ -1,103 +0,0 @@ - - - - -**[Insert URL to the list here]** - -**[Explain what this list is about and why it should be included here]** - -### By submitting this pull request I confirm I've read and complied with the below requirements 🖖 - -**Please read it multiple times. I spent a lot of time on these guidelines and most people miss a lot.** - -## Requirements for your pull request - -- [ ] Don't open a Draft / WIP pull request while you work on the guidelines. A pull request should be 100% ready and should adhere to all the guidelines when you open it. **Instead use [#2242](https://github.com/sindresorhus/awesome/issues/2242) for incubation visibility**. -- [ ] **Don't waste my time.** Do a good job, adhere to all the guidelines, and be responsive. -- [ ] **You have to review at least 2 other [open pull requests](https://github.com/sindresorhus/awesome/pulls?q=is%3Apr+is%3Aopen).** - Try to prioritize unreviewed PRs, but you can also add more comments to reviewed PRs. Go through the below list when reviewing. This requirement is meant to help make the Awesome project self-sustaining. Comment here which PRs you reviewed. You're expected to put a good effort into this and to be thorough. Look at previous PR reviews for inspiration. **Just commenting “looks good” or simply marking the pull request as approved does not count!** You have to actually point out mistakes or improvement suggestions. Comments pointing out lint violation are allowed, but does **not** count as a review. -- [ ] You have read and understood the [instructions for creating a list](https://github.com/sindresorhus/awesome/blob/main/create-list.md). -- [ ] This pull request has a title in the format `Add Name of List`. It should not contain the word `Awesome`. - - ✅ `Add Swift` - - ✅ `Add Software Architecture` - - ❌ `Update readme.md` - - ❌ `Add Awesome Swift` - - ❌ `Add swift` - - ❌ `add Swift` - - ❌ `Adding Swift` - - ❌ `Added Swift` -- [ ] Your entry here should include a short description of the project/theme of the list. **It should not describe the list itself.** The first character should be uppercase and the description should end in a dot. It should be an objective description and not a tagline or marketing blurb. It should not contain the name of the list. - - ✅ `- [iOS](…) - Mobile operating system for Apple phones and tablets.` - - ✅ `- [Framer](…) - Prototyping interactive UI designs.` - - ❌ `- [iOS](…) - Resources and tools for iOS development.` - - ❌ `- [Framer](…)` - - ❌ `- [Framer](…) - prototyping interactive UI designs` -- [ ] Your entry should be added at the bottom of the appropriate category. -- [ ] The title of your entry should be title-cased and the URL to your list should end in `#readme`. - - Example: `- [Software Architecture](https://github.com/simskij/awesome-software-architecture#readme) - The discipline of designing and building software.` -- [ ] No blockchain-related lists. -- [ ] The suggested Awesome list complies with the below requirements. - -## Requirements for your Awesome list - -- [ ] **Has been around for at least 30 days.**
That means 30 days from either the first real commit or when it was open-sourced. Whatever is most recent. -- [ ] Run [`awesome-lint`](https://github.com/sindresorhus/awesome-lint) on your list and fix the reported issues. If there are false-positives or things that cannot/shouldn't be fixed, please [report it](https://github.com/sindresorhus/awesome-lint/issues/new). -- [ ] The default branch should be named [`main`, not `master`](https://www.zdnet.com/article/github-to-replace-master-with-alternative-term-to-avoid-slavery-references/). -- [ ] **Includes a succinct description of the project/theme at the top of the readme.** [(Example)](https://github.com/willempienaar/awesome-quantified-self) - - ✅ `Mobile operating system for Apple phones and tablets.` - - ✅ `Prototyping interactive UI designs.` - - ❌ `Resources and tools for iOS development.` - - ❌ `Awesome Framer packages and tools.` -- [ ] It's the result of hard work and the best I could possibly produce. - **If you have not put in considerable effort into your list, your pull request will be immediately closed.** -- [ ] The repo name of your list should be in lowercase slug format: `awesome-name-of-list`. - - ✅ `awesome-swift` - - ✅ `awesome-web-typography` - - ❌ `awesome-Swift` - - ❌ `AwesomeWebTypography` -- [ ] The heading title of your list should be in [title case](https://capitalizemytitle.com/) format: `# Awesome Name of List`. - - ✅ `# Awesome Swift` - - ✅ `# Awesome Web Typography` - - ❌ `# awesome-swift` - - ❌ `# AwesomeSwift` -- [ ] Non-generated Markdown file in a GitHub repo. -- [ ] The repo should have `awesome-list` & `awesome` as [GitHub topics](https://help.github.com/articles/about-topics). I encourage you to add more relevant topics. -- [ ] Not a duplicate. Please search for existing submissions. -- [ ] Only has awesome items. Awesome lists are curations of the best, not everything. -- [ ] Does not contain items that are unmaintained, has archived repo, deprecated, or missing docs. If you really need to include such items, they should be in a separate Markdown file. -- [ ] Includes a project logo/illustration whenever possible. - - Either centered, fullwidth, or placed at the top-right of the readme. [(Example)](https://github.com/sindresorhus/awesome-electron) - - The image should link to the project website or any relevant website. - - **The image should be high-DPI.** Set it to a maximum of half the width of the original image. - - Don't include both a title saying `Awesome X` and a logo with `Awesome X`. You can put the header image in a `#` (Markdown header) or `

`. -- [ ] Entries have a description, unless the title is descriptive enough by itself. It rarely is though. -- [ ] Includes the [Awesome badge](https://github.com/sindresorhus/awesome/blob/main/awesome.md#awesome-badge). - - Should be placed on the right side of the readme heading. - - Can be placed centered if the list has a centered graphics header. - - Should link back to this list. -- [ ] Has a Table of Contents section. - - Should be named `Contents`, not `Table of Contents`. - - Should be the first section in the list. - - Should only have one level of [nested lists](https://commonmark.org/help/tutorial/10-nestedLists.html), preferably none. - - Must not feature `Contributing` or `Footnotes` sections. -- [ ] Has an appropriate license. - - **We strongly recommend the [CC0 license](https://creativecommons.org/publicdomain/zero/1.0/), but any [Creative Commons license](https://creativecommons.org/choose/) will work.** - - Tip: You can quickly add it to your repo by going to this URL: `https://github.com///community/license/new?branch=main&template=cc0-1.0` (replace `` and `` accordingly). - - A code license like MIT, BSD, Apache, GPL, etc, is not acceptable. Neither are WTFPL and [Unlicense](https://unlicense.org). - - Place a file named `license` or `LICENSE` in the repo root with the license text. - - **Do not** add the license name, text, or a `Licence` section to the readme. GitHub already shows the license name and link to the full text at the top of the repo. - - To verify that you've read all the guidelines, please comment on your pull request with just the word `unicorn`. -- [ ] Has [contribution guidelines](https://github.com/sindresorhus/awesome/blob/main/awesome.md#include-contribution-guidelines). - - The file should be named `contributing.md`. The casing is up to you. - - It can optionally be linked from the readme in a dedicated section titled `Contributing`, positioned at the top or bottom of the main content. - - The section should not appear in the Table of Contents. -- [ ] All non-important but necessary content (like extra copyright notices, hyperlinks to sources, pointers to expansive content, etc) should be grouped in a `Footnotes` section at the bottom of the readme. The section should not be present in the Table of Contents. -- [ ] Has consistent formatting and proper spelling/grammar. - - The link and description are separated by a dash.
Example: `- [AVA](…) - JavaScript test runner.` - - The description starts with an uppercase character and ends with a period. - - Consistent and correct naming. For example, `Node.js`, not `NodeJS` or `node.js`. -- [ ] Does not use [hard-wrapping](https://stackoverflow.com/questions/319925/difference-between-hard-wrap-and-soft-wrap). -- [ ] Does not include a CI (e.g. GitHub Actions) badge.
You can still use a CI for linting, but the badge has no value in the readme. -- [ ] Does not include an `Inspired by awesome-foo` or `Inspired by the Awesome project` kinda link at the top of the readme. The Awesome badge is enough. - -**Go to the top and read it again.** diff --git a/readme.md b/readme.md deleted file mode 100644 index 75e069d9..00000000 --- a/readme.md +++ /dev/null @@ -1,895 +0,0 @@ - -

- What is an awesome list?    - Contribution guide    - Creating a list    - Twitter    -

-
-
-

- Just type awesome.re to go here. Check out my apps and follow me on Twitter. -

-
-
- -## Contents - -- [Platforms](#platforms) -- [Programming Languages](#programming-languages) -- [Front-End Development](#front-end-development) -- [Back-End Development](#back-end-development) -- [Computer Science](#computer-science) -- [Big Data](#big-data) -- [Theory](#theory) -- [Books](#books) -- [Editors](#editors) -- [Gaming](#gaming) -- [Development Environment](#development-environment) -- [Entertainment](#entertainment) -- [Databases](#databases) -- [Media](#media) -- [Learn](#learn) -- [Security](#security) -- [Content Management Systems](#content-management-systems) -- [Hardware](#hardware) -- [Business](#business) -- [Work](#work) -- [Networking](#networking) -- [Decentralized Systems](#decentralized-systems) -- [Health and Social Science](#health-and-social-science) -- [Events](#events) -- [Testing](#testing) -- [Miscellaneous](#miscellaneous) -- [Related](#related) - ---- - -
-
- - - -
-
- ---- - -## Platforms - -- [Node.js](https://github.com/sindresorhus/awesome-nodejs#readme) - Async non-blocking event-driven JavaScript runtime built on Chrome's V8 JavaScript engine. - - [Cross-Platform](https://github.com/bcoe/awesome-cross-platform-nodejs#readme) - Writing cross-platform code on Node.js. -- [Frontend Development](https://github.com/dypsilon/frontend-dev-bookmarks#readme) -- [iOS](https://github.com/vsouza/awesome-ios#readme) - Mobile operating system for Apple phones and tablets. -- [Android](https://github.com/JStumpp/awesome-android#readme) - Mobile operating system developed by Google. -- [IoT & Hybrid Apps](https://github.com/weblancaster/awesome-IoT-hybrid#readme) -- [Electron](https://github.com/sindresorhus/awesome-electron#readme) - Cross-platform native desktop apps using JavaScript/HTML/CSS. -- [Cordova](https://github.com/busterc/awesome-cordova#readme) - JavaScript API for hybrid apps. -- [React Native](https://github.com/jondot/awesome-react-native#readme) - JavaScript framework for writing natively rendering mobile apps for iOS and Android. -- [Xamarin](https://github.com/XamSome/awesome-xamarin#readme) - Mobile app development IDE, testing, and distribution. -- [Linux](https://github.com/inputsh/awesome-linux#readme) - - [Containers](https://github.com/Friz-zy/awesome-linux-containers#readme) - - [eBPF](https://github.com/zoidbergwill/awesome-ebpf#readme) - Virtual machine that allows you to write more efficient and powerful tracing and monitoring for Linux systems. - - [Arch-based Projects](https://github.com/PandaFoss/Awesome-Arch#readme) - Linux distributions and projects based on Arch Linux. - - [AppImage](https://github.com/AppImage/awesome-appimage#readme) - Package apps in a single file that works on various mainstream Linux distributions. -- macOS - Operating system for Apple's Mac computers. - - [Screensavers](https://github.com/agarrharr/awesome-macos-screensavers#readme) - - [Apps](https://github.com/jaywcjlove/awesome-mac#readme) - - [Open Source Apps](https://github.com/serhii-londar/open-source-mac-os-apps#readme) -- [watchOS](https://github.com/yenchenlin/awesome-watchos#readme) - Operating system for the Apple Watch. -- [JVM](https://github.com/deephacks/awesome-jvm#readme) -- [Salesforce](https://github.com/mailtoharshit/awesome-salesforce#readme) -- [Amazon Web Services](https://github.com/donnemartin/awesome-aws#readme) -- [Windows](https://github.com/Awesome-Windows/Awesome#readme) -- [IPFS](https://github.com/ipfs/awesome-ipfs#readme) - P2P hypermedia protocol. -- [Fuse](https://github.com/fuse-compound/awesome-fuse#readme) - Mobile development tools. -- [Heroku](https://github.com/ianstormtaylor/awesome-heroku#readme) - Cloud platform as a service. -- [Raspberry Pi](https://github.com/thibmaek/awesome-raspberry-pi#readme) - Credit card-sized computer aimed at teaching kids programming, but capable of a lot more. -- [Qt](https://github.com/JesseTG/awesome-qt#readme) - Cross-platform GUI app framework. -- [WebExtensions](https://github.com/fregante/Awesome-WebExtensions#readme) - Cross-browser extension system. -- [Smart TV](https://github.com/vitalets/awesome-smart-tv#readme) - Create apps for different TV platforms. -- [GNOME](https://github.com/Kazhnuz/awesome-gnome#readme) - Simple and distraction-free desktop environment for Linux. -- [KDE](https://github.com/francoism90/awesome-kde#readme) - A free software community dedicated to creating an open and user-friendly computing experience. -- [.NET](https://github.com/quozd/awesome-dotnet#readme) - - [Core](https://github.com/thangchung/awesome-dotnet-core#readme) - - [Roslyn](https://github.com/ironcev/awesome-roslyn#readme) - Open-source compilers and code analysis APIs for C# and VB.NET languages. -- [Amazon Alexa](https://github.com/miguelmota/awesome-amazon-alexa#readme) - Virtual home assistant. -- [DigitalOcean](https://github.com/jonleibowitz/awesome-digitalocean#readme) - Cloud computing platform designed for developers. -- [Flutter](https://github.com/Solido/awesome-flutter#readme) - Google's mobile SDK for building native iOS and Android apps from a single codebase written in Dart. -- [Home Assistant](https://github.com/frenck/awesome-home-assistant#readme) - Open source home automation that puts local control and privacy first. -- [IBM Cloud](https://github.com/victorshinya/awesome-ibmcloud#readme) - Cloud platform for developers and companies. -- [Firebase](https://github.com/jthegedus/awesome-firebase#readme) - App development platform built on Google Cloud Platform. -- [Robot Operating System 2.0](https://github.com/fkromer/awesome-ros2#readme) - Set of software libraries and tools that help you build robot apps. -- [Adafruit IO](https://github.com/adafruit/awesome-adafruitio#readme) - Visualize and store data from any device. -- [Cloudflare](https://github.com/irazasyed/awesome-cloudflare#readme) - CDN, DNS, DDoS protection, and security for your site. -- [Actions on Google](https://github.com/ravirupareliya/awesome-actions-on-google#readme) - Developer platform for Google Assistant. -- [ESP](https://github.com/agucova/awesome-esp#readme) - Low-cost microcontrollers with WiFi and broad IoT applications. -- [Deno](https://github.com/denolib/awesome-deno#readme) - A secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust. -- [DOS](https://github.com/balintkissdev/awesome-dos#readme) - Operating system for x86-based personal computers that was popular during the 1980s and early 1990s. -- [Nix](https://github.com/nix-community/awesome-nix#readme) - Package manager for Linux and other Unix systems that makes package management reliable and reproducible. -- [Integration](https://github.com/stn1slv/awesome-integration#readme) - Linking together different IT systems (components) to functionally cooperate as a whole. -- [Node-RED](https://github.com/naimo84/awesome-nodered#readme) - A programming tool for wiring together hardware devices, APIs, and online services. -- [Low Code](https://github.com/zenitysec/awesome-low-code#readme) - Allowing business professionals to address their needs on their own with little to no coding skills. -- [Capacitor](https://github.com/riderx/awesome-capacitor#readme) - Cross-platform open source runtime for building Web Native apps. -- [ArcGIS Developer](https://github.com/Esri/awesome-arcgis-developer#readme) - Mapping and location analysis platform for developers. -- [Bluetooth Low Energy](https://github.com/dotintent/awesome-ble#readme) - Low-power wireless communication protocol ideal for IoT, wearables, and other battery-powered applications. -- [Uno Platform](https://github.com/MartinZikmund/awesome-uno-platform#readme) - Open-source .NET UI platform for building cross-platform apps. - -## Programming Languages - -- [JavaScript](https://github.com/sorrycc/awesome-javascript#readme) - - [Promises](https://github.com/wbinnssmith/awesome-promises#readme) - - [Standard Style](https://github.com/standard/awesome-standard#readme) - Style guide and linter. - - [Must Watch Talks](https://github.com/bolshchikov/js-must-watch#readme) - - [Tips](https://github.com/loverajoel/jstips#readme) - - [Network Layer](https://github.com/Kikobeats/awesome-network-js#readme) - - [Micro npm Packages](https://github.com/parro-it/awesome-micro-npm-packages#readme) - - [Mad Science npm Packages](https://github.com/feross/awesome-mad-science#readme) - Impossible sounding projects that exist. - - [Maintenance Modules](https://github.com/maxogden/maintenance-modules#readme) - For npm packages. - - [npm](https://github.com/sindresorhus/awesome-npm#readme) - Package manager. - - [AVA](https://github.com/avajs/awesome-ava#readme) - Test runner. - - [ESLint](https://github.com/dustinspecker/awesome-eslint#readme) - Linter. - - [Functional Programming](https://github.com/stoeffel/awesome-fp-js#readme) - - [Observables](https://github.com/sindresorhus/awesome-observables#readme) - - [npm scripts](https://github.com/RyanZim/awesome-npm-scripts#readme) - Task runner. - - [30 Seconds of Code](https://github.com/30-seconds/30-seconds-of-code#readme) - Code snippets you can understand in 30 seconds. - - [Ponyfills](https://github.com/Richienb/awesome-ponyfills#readme) - Like polyfills but without overriding native APIs. -- [Swift](https://github.com/matteocrippa/awesome-swift#readme) - Apple's compiled programming language that is secure, modern, programmer-friendly, and fast. - - [Education](https://github.com/hsavit1/Awesome-Swift-Education#readme) - - [Playgrounds](https://github.com/uraimo/Awesome-Swift-Playgrounds#readme) -- [Python](https://github.com/vinta/awesome-python#readme) - General-purpose programming language designed for readability. - - [Asyncio](https://github.com/timofurrer/awesome-asyncio#readme) - Asynchronous I/O in Python 3. - - [Scientific Audio](https://github.com/faroit/awesome-python-scientific-audio#readme) - Scientific research in audio/music. - - [CircuitPython](https://github.com/adafruit/awesome-circuitpython#readme) - A version of Python for microcontrollers. - - [Data Science](https://github.com/krzjoa/awesome-python-data-science#readme) - Data analysis and machine learning. - - [Typing](https://github.com/typeddjango/awesome-python-typing#readme) - Optional static typing for Python. - - [MicroPython](https://github.com/mcauser/awesome-micropython#readme) - A lean and efficient implementation of Python 3 for microcontrollers. -- [Rust](https://github.com/rust-unofficial/awesome-rust#readme) - - [Pest](https://github.com/pest-parser/awesome-pest#readme) - Parser generator. -- [Haskell](https://github.com/krispo/awesome-haskell#readme) -- [PureScript](https://github.com/passy/awesome-purescript#readme) -- [Go](https://github.com/avelino/awesome-go#readme) -- [Scala](https://github.com/lauris/awesome-scala#readme) - - [Scala Native](https://github.com/tindzk/awesome-scala-native#readme) - Optimizing ahead-of-time compiler for Scala based on LLVM. -- [Ruby](https://github.com/markets/awesome-ruby#readme) -- [Clojure](https://github.com/razum2um/awesome-clojure#readme) -- [ClojureScript](https://github.com/hantuzun/awesome-clojurescript#readme) -- [Elixir](https://github.com/h4cc/awesome-elixir#readme) -- [Elm](https://github.com/sporto/awesome-elm#readme) -- [Erlang](https://github.com/drobakowski/awesome-erlang#readme) -- [Julia](https://github.com/svaksha/Julia.jl#readme) - High-level dynamic programming language designed to address the needs of high-performance numerical analysis and computational science. -- [Lua](https://github.com/LewisJEllis/awesome-lua#readme) -- [C](https://github.com/inputsh/awesome-c#readme) -- [C/C++](https://github.com/fffaraz/awesome-cpp#readme) - General-purpose language with a bias toward system programming and embedded, resource-constrained software. -- [R](https://github.com/qinwf/awesome-R#readme) - Functional programming language and environment for statistical computing and graphics. - - [Learning](https://github.com/iamericfletcher/awesome-r-learning-resources#readme) -- [D](https://github.com/dlang-community/awesome-d#readme) -- [Common Lisp](https://github.com/CodyReichert/awesome-cl#readme) - Powerful dynamic multiparadigm language that facilitates iterative and interactive development. - - [Learning](https://github.com/GustavBertram/awesome-common-lisp-learning#readme) -- [Perl](https://github.com/hachiojipm/awesome-perl#readme) -- [Groovy](https://github.com/kdabir/awesome-groovy#readme) -- [Dart](https://github.com/yissachar/awesome-dart#readme) -- [Java](https://github.com/akullpp/awesome-java#readme) - Popular secure object-oriented language designed for flexibility to "write once, run anywhere". - - [RxJava](https://github.com/eleventigers/awesome-rxjava#readme) -- [Kotlin](https://github.com/KotlinBy/awesome-kotlin#readme) -- [OCaml](https://github.com/ocaml-community/awesome-ocaml#readme) -- [ColdFusion](https://github.com/seancoyne/awesome-coldfusion#readme) -- [Fortran](https://github.com/rabbiabram/awesome-fortran#readme) -- [PHP](https://github.com/ziadoz/awesome-php#readme) - Server-side scripting language. - - [Composer](https://github.com/jakoch/awesome-composer#readme) - Package manager. -- [Pascal](https://github.com/Fr0sT-Brutal/awesome-pascal#readme) -- [AutoHotkey](https://github.com/ahkscript/awesome-AutoHotkey#readme) -- [AutoIt](https://github.com/J2TeaM/awesome-AutoIt#readme) -- [Crystal](https://github.com/veelenga/awesome-crystal#readme) -- [Frege](https://github.com/sfischer13/awesome-frege#readme) - Haskell for the JVM. -- [CMake](https://github.com/onqtam/awesome-cmake#readme) - Build, test, and package software. -- [ActionScript 3](https://github.com/robinrodricks/awesome-actionscript3#readme) - Object-oriented language targeting Adobe AIR. -- [Eta](https://github.com/sfischer13/awesome-eta#readme) - Functional programming language for the JVM. -- [Idris](https://github.com/joaomilho/awesome-idris#readme) - General purpose pure functional programming language with dependent types influenced by Haskell and ML. -- [Ada/SPARK](https://github.com/ohenley/awesome-ada#readme) - Modern programming language designed for large, long-lived apps where reliability and efficiency are essential. -- [Q#](https://github.com/ebraminio/awesome-qsharp#readme) - Domain-specific programming language used for expressing quantum algorithms. -- [Imba](https://github.com/koolamusic/awesome-imba#readme) - Programming language inspired by Ruby and Python and compiles to performant JavaScript. -- [Vala](https://github.com/desiderantes/awesome-vala#readme) - Programming language designed to take full advantage of the GLib and GNOME ecosystems, while preserving the speed of C code. -- [Coq](https://github.com/coq-community/awesome-coq#readme) - Formal language and environment for programming and specification which facilitates interactive development of machine-checked proofs. -- [V](https://github.com/vlang/awesome-v#readme) - Simple, fast, safe, compiled language for developing maintainable software. -- [Zig](https://github.com/catdevnull/awesome-zig#readme) - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software. -- [Move](https://github.com/MystenLabs/awesome-move#readme) - Domain-specific programming language for writing safe smart contracts. -- [Esolangs](https://github.com/angrykoala/awesome-esolangs#readme) - Programming languages designed for experimentation or as jokes rather than actual use. - -## Front-End Development - -- [ES6 Tools](https://github.com/addyosmani/es6-tools#readme) -- [Web Performance Optimization](https://github.com/davidsonfellipe/awesome-wpo#readme) -- [Web Tools](https://github.com/lvwzhen/tools#readme) -- [CSS](https://github.com/awesome-css-group/awesome-css#readme) - Style sheet language that specifies how HTML elements are displayed on screen. - - [Critical-Path Tools](https://github.com/addyosmani/critical-path-css-tools#readme) - - [Scalability](https://github.com/davidtheclark/scalable-css-reading-list#readme) - - [Must-Watch Talks](https://github.com/AllThingsSmitty/must-watch-css#readme) - - [Protips](https://github.com/AllThingsSmitty/css-protips#readme) - - [Frameworks](https://github.com/troxler/awesome-css-frameworks#readme) -- [React](https://github.com/enaqx/awesome-react#readme) - JavaScript library for building user interfaces. - - [Relay](https://github.com/expede/awesome-relay#readme) - Framework for building data-driven React apps. - - [React Hooks](https://github.com/glauberfc/awesome-react-hooks#readme) - Lets you use state and other React features without writing a class. -- [Web Components](https://github.com/web-padawan/awesome-web-components#readme) -- [Polymer](https://github.com/Granze/awesome-polymer#readme) - JavaScript library to develop Web Components. -- [Angular](https://github.com/PatrickJS/awesome-angular#readme) - App framework. -- [Backbone](https://github.com/sadcitizen/awesome-backbone#readme) - App framework. -- [HTML5](https://github.com/diegocard/awesome-html5#readme) - Markup language used for websites & web apps. -- [SVG](https://github.com/willianjusten/awesome-svg#readme) - XML-based vector image format. -- [Canvas](https://github.com/raphamorim/awesome-canvas#readme) -- [KnockoutJS](https://github.com/dnbard/awesome-knockout#readme) - JavaScript library. -- [Dojo Toolkit](https://github.com/petk/awesome-dojo#readme) - JavaScript toolkit. -- [Inspiration](https://github.com/NoahBuscher/Inspire#readme) -- [Ember](https://github.com/ember-community-russia/awesome-ember#readme) - App framework. -- [Android UI](https://github.com/wasabeef/awesome-android-ui#readme) -- [iOS UI](https://github.com/cjwirth/awesome-ios-ui#readme) -- [Meteor](https://github.com/Urigo/awesome-meteor#readme) -- [BEM](https://github.com/sturobson/BEM-resources#readme) -- [Flexbox](https://github.com/afonsopacifer/awesome-flexbox#readme) -- [Web Typography](https://github.com/deanhume/typography#readme) -- [Web Accessibility](https://github.com/brunopulis/awesome-a11y#readme) -- [Material Design](https://github.com/sachin1092/awesome-material#readme) -- [D3](https://github.com/wbkd/awesome-d3#readme) - Library for producing dynamic, interactive data visualizations. -- [Emails](https://github.com/jonathandion/awesome-emails#readme) -- [jQuery](https://github.com/petk/awesome-jquery#readme) - Easy to use JavaScript library for DOM manipulation. - - [Tips](https://github.com/AllThingsSmitty/jquery-tips-everyone-should-know#readme) -- [Web Audio](https://github.com/notthetup/awesome-webaudio#readme) -- [Offline-First](https://github.com/pazguille/offline-first#readme) -- [Static Website Services](https://github.com/agarrharr/awesome-static-website-services#readme) -- [Cycle.js](https://github.com/cyclejs-community/awesome-cyclejs#readme) - Functional and reactive JavaScript framework. -- [Text Editing](https://github.com/dok/awesome-text-editing#readme) -- [Motion UI Design](https://github.com/fliptheweb/motion-ui-design#readme) -- [Vue.js](https://github.com/vuejs/awesome-vue#readme) - App framework. -- [Marionette.js](https://github.com/sadcitizen/awesome-marionette#readme) - App framework. -- [Aurelia](https://github.com/aurelia-contrib/awesome-aurelia#readme) - App framework. -- [Charting](https://github.com/zingchart/awesome-charting#readme) -- [Ionic Framework 2](https://github.com/candelibas/awesome-ionic#readme) -- [Chrome DevTools](https://github.com/ChromeDevTools/awesome-chrome-devtools#readme) -- [PostCSS](https://github.com/jdrgomes/awesome-postcss#readme) - CSS tool. -- [Draft.js](https://github.com/nikgraf/awesome-draft-js#readme) - Rich text editor framework for React. -- [Service Workers](https://github.com/TalAter/awesome-service-workers#readme) -- [Progressive Web Apps](https://github.com/TalAter/awesome-progressive-web-apps#readme) -- [choo](https://github.com/choojs/awesome-choo#readme) - App framework. -- [Redux](https://github.com/brillout/awesome-redux#readme) - State container for JavaScript apps. -- [Browserify](https://github.com/browserify/awesome-browserify#readme) - Module bundler. -- [Sass](https://github.com/Famolus/awesome-sass#readme) - CSS preprocessor. -- [Ant Design](https://github.com/websemantics/awesome-ant-design#readme) - Enterprise-class UI design language. -- [Less](https://github.com/LucasBassetti/awesome-less#readme) - CSS preprocessor. -- [WebGL](https://github.com/sjfricke/awesome-webgl#readme) - JavaScript API for rendering 3D graphics. -- [Preact](https://github.com/preactjs/awesome-preact#readme) - App framework. -- [Progressive Enhancement](https://github.com/jbmoelker/progressive-enhancement-resources#readme) -- [Next.js](https://github.com/unicodeveloper/awesome-nextjs#readme) - Framework for server-rendered React apps. -- [lit](https://github.com/web-padawan/awesome-lit#readme) - Library for building web components with a declarative template system. -- [JAMstack](https://github.com/automata/awesome-jamstack#readme) - Modern web development architecture based on client-side JavaScript, reusable APIs, and prebuilt markup. -- [WordPress-Gatsby](https://github.com/henrikwirth/awesome-wordpress-gatsby#readme) - Web development technology stack with WordPress as a back end and Gatsby as a front end. -- [Mobile Web Development](https://github.com/myshov/awesome-mobile-web-development#readme) - Creating a great mobile web experience. -- [Storybook](https://github.com/lauthieb/awesome-storybook#readme) - Development environment for UI components. -- [Blazor](https://github.com/AdrienTorris/awesome-blazor#readme) - .NET web framework using C#/Razor and HTML that runs in the browser with WebAssembly. -- [PageSpeed Metrics](https://github.com/csabapalfi/awesome-pagespeed-metrics#readme) - Metrics to help understand page speed and user experience. -- [Tailwind CSS](https://github.com/aniftyco/awesome-tailwindcss#readme) - Utility-first CSS framework for rapid UI development. -- [Seed](https://github.com/seed-rs/awesome-seed-rs#readme) - Rust framework for creating web apps running in WebAssembly. -- [Web Performance Budget](https://github.com/pajaydev/awesome-web-performance-budget#readme) - Techniques to ensure certain performance metrics for a website. -- [Web Animation](https://github.com/sergey-pimenov/awesome-web-animation#readme) - Animations in the browser with JavaScript, CSS, SVG, etc. -- [Yew](https://github.com/jetli/awesome-yew#readme) - Rust framework inspired by Elm and React for creating multi-threaded frontend web apps with WebAssembly. -- [Material-UI](https://github.com/nadunindunil/awesome-material-ui#readme) - Material Design React components for faster and easier web development. -- [Building Blocks for Web Apps](https://github.com/componently-com/awesome-building-blocks-for-web-apps#readme) - Standalone features to be integrated into web apps. -- [Svelte](https://github.com/TheComputerM/awesome-svelte#readme) - App framework. -- [Design systems](https://github.com/klaufel/awesome-design-systems#readme) - Collection of reusable components, guided by rules that ensure consistency and speed. -- [Inertia.js](https://github.com/innocenzi/awesome-inertiajs#readme) - Make single-page apps without building an API. -- [MDBootstrap](https://github.com/mdbootstrap/awesome-mdbootstrap#readme) - Templates, layouts, components, and widgets to rapidly build websites. -- [Master CSS](https://github.com/master-co/awesome-master-css#readme) - A virtual CSS language with enhanced syntax. -- [Hydrogen](https://github.com/shopify/awesome-hydrogen#readme) - Edge-first framework for building Shopify storefronts with React. -- [Tiny JS](https://github.com/thoughtspile/awesome-tiny-js#readme) - Frontend libraries that fit into 2 kB with dependencies. -- [Frontend GIS](https://github.com/joewdavies/awesome-frontend-gis#readme) - Geographic Information Systems (GIS) for web browsers. - -## Back-End Development - -- [Flask](https://github.com/mjhea0/awesome-flask#readme) - Python framework. -- [Docker](https://github.com/veggiemonk/awesome-docker#readme) -- [Vagrant](https://github.com/iJackUA/awesome-vagrant#readme) - Automation virtual machine environment. -- [Pyramid](https://github.com/uralbash/awesome-pyramid#readme) - Python framework. -- [Play1 Framework](https://github.com/PerfectCarl/awesome-play1#readme) -- [CakePHP](https://github.com/friendsofcake/awesome-cakephp#readme) - PHP framework. -- [Symfony](https://github.com/sitepoint-editors/awesome-symfony#readme) - PHP framework. - - [Education](https://github.com/pehapkari/awesome-symfony-education#readme) -- [Laravel](https://github.com/chiraggude/awesome-laravel#readme) - PHP framework. - - [Education](https://github.com/fukuball/Awesome-Laravel-Education#readme) - - [TALL Stack](https://github.com/livewire/awesome-tall-stack#readme) - Full-stack development solution featuring libraries built by the Laravel community. -- [Rails](https://github.com/gramantin/awesome-rails#readme) - Web app framework for Ruby. - - [Gems](https://github.com/hothero/awesome-rails-gem#readme) - Packages. -- [Phalcon](https://github.com/phalcon/awesome-phalcon#readme) - PHP framework. -- [Useful `.htaccess` Snippets](https://github.com/phanan/htaccess#readme) -- [nginx](https://github.com/fcambus/nginx-resources#readme) - Web server. -- [Dropwizard](https://github.com/stve/awesome-dropwizard#readme) - Java framework. -- [Kubernetes](https://github.com/ramitsurana/awesome-kubernetes#readme) - Open-source platform that automates Linux container operations. -- [Lumen](https://github.com/unicodeveloper/awesome-lumen#readme) - PHP micro-framework. -- [Serverless Framework](https://github.com/pmuens/awesome-serverless#readme) - Serverless computing and serverless architectures. -- [Apache Wicket](https://github.com/PhantomYdn/awesome-wicket#readme) - Java web app framework. -- [Vert.x](https://github.com/vert-x3/vertx-awesome#readme) - Toolkit for building reactive apps on the JVM. -- [Terraform](https://github.com/shuaibiyy/awesome-terraform#readme) - Tool for building, changing, and versioning infrastructure. -- [Vapor](https://github.com/vapor-community/awesome-vapor#readme) - Server-side development in Swift. -- [Dash](https://github.com/ucg8j/awesome-dash#readme) - Python web app framework. -- [FastAPI](https://github.com/mjhea0/awesome-fastapi#readme) - Python web app framework. -- [CDK](https://github.com/kolomied/awesome-cdk#readme) - Open-source software development framework for defining cloud infrastructure in code. -- [IAM](https://github.com/kdeldycke/awesome-iam#readme) - User accounts, authentication and authorization. -- [Slim](https://github.com/nekofar/awesome-slim#readme) - PHP framework. -- [Fiber](https://github.com/gofiber/awesome-fiber#readme) - Web framework built on top of Fasthttp, the fastest HTTP engine for Go. -- [Kustomize](https://github.com/DevOpsHiveHQ/awesome-kustomize#readme) - Kubernetes native declarative configuration management tool. - -## Computer Science - -- [University Courses](https://github.com/prakhar1989/awesome-courses#readme) -- [Data Science](https://github.com/academic/awesome-datascience#readme) - - [Tutorials](https://github.com/siboehm/awesome-learn-datascience#readme) -- [Machine Learning](https://github.com/josephmisiti/awesome-machine-learning#readme) - - [Tutorials](https://github.com/ujjwalkarn/Machine-Learning-Tutorials#readme) - - [ML with Ruby](https://github.com/arbox/machine-learning-with-ruby#readme) - Learning, implementing, and applying Machine Learning using Ruby. - - [Core ML Models](https://github.com/likedan/Awesome-CoreML-Models#readme) - Models for Apple's machine learning framework. - - [H2O](https://github.com/h2oai/awesome-h2o#readme) - Open source distributed machine learning platform written in Java with APIs in R, Python, and Scala. - - [Software Engineering for Machine Learning](https://github.com/SE-ML/awesome-seml#readme) - From experiment to production-level machine learning. - - [AI in Finance](https://github.com/georgezouq/awesome-ai-in-finance#readme) - Solving problems in finance with machine learning. - - [JAX](https://github.com/n2cholas/awesome-jax#readme) - Automatic differentiation and XLA compilation brought together for high-performance machine learning research. - - [XAI](https://github.com/altamiracorp/awesome-xai#readme) - Providing insight, explanations, and interpretability to machine learning methods. -- [Speech and Natural Language Processing](https://github.com/edobashira/speech-language-processing#readme) - - [Spanish](https://github.com/dav009/awesome-spanish-nlp#readme) - - [NLP with Ruby](https://github.com/arbox/nlp-with-ruby#readme) - - [Question Answering](https://github.com/seriousran/awesome-qa#readme) - The science of asking and answering in natural language with a machine. - - [Natural Language Generation](https://github.com/accelerated-text/awesome-nlg#readme) - Generation of text used in data to text, conversational agents, and narrative generation applications. -- [Linguistics](https://github.com/theimpossibleastronaut/awesome-linguistics#readme) -- [Cryptography](https://github.com/sobolevn/awesome-cryptography#readme) - - [Papers](https://github.com/pFarb/awesome-crypto-papers#readme) - Theory basics for using cryptography by non-cryptographers. -- [Computer Vision](https://github.com/jbhuang0604/awesome-computer-vision#readme) -- [Deep Learning](https://github.com/ChristosChristofidis/awesome-deep-learning#readme) - Neural networks. - - [TensorFlow](https://github.com/jtoy/awesome-tensorflow#readme) - Library for machine intelligence. - - [TensorFlow.js](https://github.com/aaronhma/awesome-tensorflow-js#readme) - WebGL-accelerated machine learning JavaScript library for training and deploying models. - - [TensorFlow Lite](https://github.com/margaretmz/awesome-tensorflow-lite#readme) - Framework that optimizes TensorFlow models for on-device machine learning. - - [Papers](https://github.com/terryum/awesome-deep-learning-papers#readme) - The most cited deep learning papers. - - [Education](https://github.com/guillaume-chevalier/awesome-deep-learning-resources#readme) -- [Deep Vision](https://github.com/kjw0612/awesome-deep-vision#readme) -- [Open Source Society University](https://github.com/ossu/computer-science#readme) -- [Functional Programming](https://github.com/lucasviola/awesome-functional-programming#readme) -- [Empirical Software Engineering](https://github.com/dspinellis/awesome-msr#readme) - Evidence-based research on software systems. -- [Static Analysis & Code Quality](https://github.com/analysis-tools-dev/static-analysis#readme) -- [Information Retrieval](https://github.com/harpribot/awesome-information-retrieval#readme) - Learn to develop your own search engine. -- [Quantum Computing](https://github.com/desireevl/awesome-quantum-computing#readme) - Computing which utilizes quantum mechanics and qubits on quantum computers. -- [Theoretical Computer Science](https://github.com/mostafatouny/awesome-theoretical-computer-science#readme) - The interplay of computer science and pure mathematics, distinguished by its emphasis on mathematical rigour and technique. -- [Conversational AI](https://github.com/jyguyomarch/awesome-conversational-ai#readme) - Build awesome chatbots and digital assistants. -- [Generative AI](https://github.com/steven2358/awesome-generative-ai#readme) - Automatically generate a wide range of unique content in text, image and audio format. - -## Big Data - -- [Big Data](https://github.com/0xnr/awesome-bigdata#readme) -- [Public Datasets](https://github.com/awesomedata/awesome-public-datasets#readme) -- [Hadoop](https://github.com/youngwookim/awesome-hadoop#readme) - Framework for distributed storage and processing of very large data sets. -- [Data Engineering](https://github.com/igorbarinov/awesome-data-engineering#readme) -- [Streaming](https://github.com/manuzhang/awesome-streaming#readme) -- [Apache Spark](https://github.com/awesome-spark/awesome-spark#readme) - Unified engine for large-scale data processing. -- [Qlik](https://github.com/ambster-public/awesome-qlik#readme) - Business intelligence platform for data visualization, analytics, and reporting apps. -- [Splunk](https://github.com/sduff/awesome-splunk#readme) - Platform for searching, monitoring, and analyzing structured and unstructured machine-generated big data in real-time. - -## Theory - -- [Papers We Love](https://github.com/papers-we-love/papers-we-love#readme) -- [Talks](https://github.com/JanVanRyswyck/awesome-talks#readme) -- [Algorithms](https://github.com/tayllan/awesome-algorithms#readme) - - [Education](https://github.com/gaerae/awesome-algorithms-education#readme) - Learning and practicing. -- [Algorithm Visualizations](https://github.com/enjalot/algovis#readme) -- [Artificial Intelligence](https://github.com/owainlewis/awesome-artificial-intelligence#readme) -- [Search Engine Optimization](https://github.com/marcobiedermann/search-engine-optimization#readme) -- [Competitive Programming](https://github.com/lnishan/awesome-competitive-programming#readme) -- [Math](https://github.com/rossant/awesome-math#readme) -- [Recursion Schemes](https://github.com/passy/awesome-recursion-schemes#readme) - Traversing nested data structures. -- [Audit Algorithms](https://github.com/erwanlemerrer/awesome-audit-algorithms#readme) - Algorithmic audits of algorithms. -- [AGI & CoCoSci](https://github.com/YuzheSHI/awesome-agi-cocosci#readme) - The reciprocation of Artificial General Intelligence (AGI) and Computational Cognitive Sciences (CoCoSci). -- [Complex Systems](https://github.com/sellisd/awesome-complexity#readme) - The scientific field studying systems with multiple interacting parts and emergent properties. - -## Books - -- [Free Programming Books](https://github.com/EbookFoundation/free-programming-books#readme) -- [Go Books](https://github.com/dariubs/GoBooks#readme) -- [R Books](https://github.com/RomanTsegelskyi/rbooks#readme) -- [Mind Expanding Books](https://github.com/hackerkid/Mind-Expanding-Books#readme) -- [Book Authoring](https://github.com/TalAter/awesome-book-authoring#readme) -- [Elixir Books](https://github.com/sger/ElixirBooks#readme) - -## Editors - -- [Sublime Text](https://github.com/dreikanter/sublime-bookmarks#readme) -- [Vim](https://github.com/mhinz/vim-galore#readme) -- [Neovim](https://github.com/rockerBOO/awesome-neovim#readme) - Vim-fork focused on extensibility and usability. -- [Emacs](https://github.com/emacs-tw/awesome-emacs#readme) -- [Atom](https://github.com/mehcode/awesome-atom#readme) - Open-source and hackable text editor. -- [Visual Studio Code](https://github.com/viatsko/awesome-vscode#readme) - Cross-platform open-source text editor. - -## Gaming - -- [Game Development](https://github.com/ellisonleao/magictools#readme) -- [Game Talks](https://github.com/hzoo/awesome-gametalks#readme) -- [Godot](https://github.com/godotengine/awesome-godot#readme) - Game engine. -- [Open Source Games](https://github.com/michelpereira/awesome-open-source-games#readme) -- [Unity](https://github.com/RyanNielson/awesome-unity#readme) - Game engine. -- [Chess](https://github.com/hkirat/awesome-chess#readme) -- [LÖVE](https://github.com/love2d-community/awesome-love2d#readme) - Game engine. -- [PICO-8](https://github.com/pico-8/awesome-PICO-8#readme) - Fantasy console. -- [Game Boy Development](https://github.com/gbdev/awesome-gbdev#readme) -- [Construct 2](https://github.com/ConstructCommunity/awesome-construct#readme) - Game engine. -- [Gideros](https://github.com/stetso/awesome-gideros#readme) - Game engine. -- [Minecraft](https://github.com/bs-community/awesome-minecraft#readme) - Sandbox video game. -- [ComputerCraft](https://github.com/tomodachi94/awesome-computercraft#readme) - Minecraft mod that adds programmable computers. -- [Game Datasets](https://github.com/leomaurodesenv/game-datasets#readme) - Materials and datasets for Artificial Intelligence in games. -- [Haxe Game Development](https://github.com/Dvergar/awesome-haxe-gamedev#readme) - A high-level strongly typed programming language used to produce cross-platform native code. -- [libGDX](https://github.com/rafaskb/awesome-libgdx#readme) - Java game framework. -- [PlayCanvas](https://github.com/playcanvas/awesome-playcanvas#readme) - Game engine. -- [Game Remakes](https://github.com/radek-sprta/awesome-game-remakes#readme) - Actively maintained open-source game remakes. -- [Flame](https://github.com/flame-engine/awesome-flame#readme) - Game engine for Flutter. -- [Discord Communities](https://github.com/mhxion/awesome-discord-communities#readme) - Chat with friends and communities. -- [CHIP-8](https://github.com/tobiasvl/awesome-chip-8#readme) - Virtual computer game machine from the 70s. -- [Games of Coding](https://github.com/michelpereira/awesome-games-of-coding#readme) - Learn a programming language by making games. -- [Esports](https://github.com/strift/awesome-esports#readme) - Video games played as a sport. -- [Learn Gamedev](https://github.com/notpresident35/awesome-learn-gamedev#readme) - The craft of video game creation. -- [Game Engine Development](https://github.com/stevinz/awesome-game-engine-dev#readme) - Building software to speed up game creation. -- [GameMaker](https://github.com/bytecauldron/awesome-gamemaker#readme) - Game engine. -- [Game Production](https://github.com/vhladiienko/awesome-game-production#readme) - Leading the process of designing, developing, testing and distributing a video game from concept to release. - -## Development Environment - -- [Quick Look Plugins](https://github.com/sindresorhus/quick-look-plugins#readme) - For macOS. -- [Dev Env](https://github.com/jondot/awesome-devenv#readme) -- [Dotfiles](https://github.com/webpro/awesome-dotfiles#readme) -- [Shell](https://github.com/alebcay/awesome-shell#readme) -- [Fish](https://github.com/jorgebucaran/awsm.fish#readme) - User-friendly shell. -- [Command-Line Apps](https://github.com/agarrharr/awesome-cli-apps#readme) -- [ZSH Plugins](https://github.com/unixorn/awesome-zsh-plugins#readme) -- [GitHub](https://github.com/phillipadsmith/awesome-github#readme) - Hosting service for Git repositories. - - [Browser Extensions](https://github.com/stefanbuck/awesome-browser-extensions-for-github#readme) - - [Cheat Sheet](https://github.com/tiimgreen/github-cheat-sheet#readme) - - [Pinned Gists](https://github.com/matchai/awesome-pinned-gists#readme) - Dynamic pinned gists for your GitHub profile. -- [Git Cheat Sheet & Git Flow](https://github.com/arslanbilal/git-cheat-sheet#readme) -- [Git Tips](https://github.com/git-tips/tips#readme) -- [Git Add-ons](https://github.com/stevemao/awesome-git-addons#readme) - Enhance the `git` CLI. -- [Git Hooks](https://github.com/compscilauren/awesome-git-hooks#readme) - Scripts for automating tasks during `git` workflows. -- [SSH](https://github.com/moul/awesome-ssh#readme) -- [FOSS for Developers](https://github.com/tvvocold/FOSS-for-Dev#readme) -- [Hyper](https://github.com/bnb/awesome-hyper#readme) - Cross-platform terminal app built on web technologies. -- [PowerShell](https://github.com/janikvonrotz/awesome-powershell#readme) - Cross-platform object-oriented shell. -- [Alfred Workflows](https://github.com/alfred-workflows/awesome-alfred-workflows#readme) - Productivity app for macOS. -- [Terminals Are Sexy](https://github.com/k4m4/terminals-are-sexy#readme) -- [GitHub Actions](https://github.com/sdras/awesome-actions#readme) - Create tasks to automate your workflow and share them with others on GitHub. - -## Entertainment - -- [Science Fiction](https://github.com/sindresorhus/awesome-scifi#readme) - Scifi. -- [Fantasy](https://github.com/RichardLitt/awesome-fantasy#readme) -- [Podcasts](https://github.com/ayr-ton/awesome-geek-podcasts#readme) -- [Email Newsletters](https://github.com/zudochkin/awesome-newsletters#readme) -- [IT Quotes](https://github.com/victorlaerte/awesome-it-quotes#readme) - -## Databases - -- [Database](https://github.com/numetriclabz/awesome-db#readme) -- [MySQL](https://github.com/shlomi-noach/awesome-mysql#readme) -- [SQLAlchemy](https://github.com/dahlia/awesome-sqlalchemy#readme) -- [InfluxDB](https://github.com/mark-rushakoff/awesome-influxdb#readme) -- [Neo4j](https://github.com/neueda/awesome-neo4j#readme) -- [MongoDB](https://github.com/ramnes/awesome-mongodb#readme) - NoSQL database. -- [RethinkDB](https://github.com/d3viant0ne/awesome-rethinkdb#readme) -- [TinkerPop](https://github.com/mohataher/awesome-tinkerpop#readme) - Graph computing framework. -- [PostgreSQL](https://github.com/dhamaniasad/awesome-postgres#readme) - Object-relational database. -- [CouchDB](https://github.com/quangv/awesome-couchdb#readme) - Document-oriented NoSQL database. -- [HBase](https://github.com/rayokota/awesome-hbase#readme) - Distributed, scalable, big data store. -- [NoSQL Guides](https://github.com/erictleung/awesome-nosql-guides#readme) - Help on using non-relational, distributed, open-source, and horizontally scalable databases. -- [Database Tools](https://github.com/mgramin/awesome-db-tools#readme) - Everything that makes working with databases easier. -- [TypeDB](https://github.com/vaticle/typedb-awesome#readme) - Logical database to organize large and complex networks of data as one body of knowledge. -- [Cassandra](https://github.com/Anant/awesome-cassandra#readme) - Open-source, distributed, wide column store, NoSQL database management system. -- [TDengine](https://github.com/taosdata/awesome-tdengine#readme) - An open-source time-series database with high-performance, scalability, and SQL support. -- [Supabase](https://github.com/lyqht/awesome-supabase#readme) - An open-source alternative to Firebase. - -## Media - -- [Creative Commons Media](https://github.com/shime/creative-commons-media#readme) -- [Fonts](https://github.com/brabadu/awesome-fonts#readme) -- [Codeface](https://github.com/chrissimpkins/codeface#readme) - Text editor fonts. -- [Stock Resources](https://github.com/neutraltone/awesome-stock-resources#readme) -- [GIF](https://github.com/davisonio/awesome-gif#readme) - Image format known for animated images. -- [Music](https://github.com/ciconia/awesome-music#readme) -- [Open Source Documents](https://github.com/44bits/awesome-opensource-documents#readme) -- [Audio Visualization](https://github.com/willianjusten/awesome-audio-visualization#readme) -- [Broadcasting](https://github.com/ebu/awesome-broadcasting#readme) -- [Pixel Art](https://github.com/Siilwyn/awesome-pixel-art#readme) - Pixel-level digital art. -- [FFmpeg](https://github.com/transitive-bullshit/awesome-ffmpeg#readme) - Cross-platform solution to record, convert and stream audio and video. -- [Icons](https://github.com/notlmn/awesome-icons#readme) - Downloadable SVG/PNG/font icon projects. -- [Audiovisual](https://github.com/stingalleman/awesome-audiovisual#readme) - Lighting, audio and video in professional environments. -- [VLC](https://github.com/mfkl/awesome-vlc#readme) - Cross-platform media player software and streaming server. - -## Learn - -- [CLI Workshoppers](https://github.com/therebelrobot/awesome-workshopper#readme) - Interactive tutorials. -- [Learn to Program](https://github.com/karlhorky/learn-to-program#readme) -- [Speaking](https://github.com/matteofigus/awesome-speaking#readme) -- [Tech Videos](https://github.com/lucasviola/awesome-tech-videos#readme) -- [Dive into Machine Learning](https://github.com/hangtwenty/dive-into-machine-learning#readme) -- [Computer History](https://github.com/watson/awesome-computer-history#readme) -- [Programming for Kids](https://github.com/HollyAdele/awesome-programming-for-kids#readme) -- [STEAM](https://github.com/RahulBirCodes/awesome-steam#readme) - Supplements for specific science, technology, engineering, arts, and math (STEAM) courses across all grade levels. -- [Educational Games](https://github.com/yrgo/awesome-educational-games#readme) - Learn while playing. -- [JavaScript Learning](https://github.com/micromata/awesome-javascript-learning#readme) -- [CSS Learning](https://github.com/micromata/awesome-css-learning#readme) - Mainly about CSS – the language and the modules. -- [Product Management](https://github.com/dend/awesome-product-management#readme) - Learn how to be a better product manager. -- [Roadmaps](https://github.com/liuchong/awesome-roadmaps#readme) - Gives you a clear route to improve your knowledge and skills. -- [YouTubers](https://github.com/JoseDeFreitas/awesome-youtubers#readme) - Watch video tutorials from YouTubers that teach you about technology. -- [Hackathon](https://github.com/dribdat/awesome-hackathon#readme) - Running fun and productive hackathons. -- [Certificates](https://github.com/PanXProject/awesome-certificates#readme) - Free computer science certifications to showcase your knowledge. - -## Security - -- [Application Security](https://github.com/paragonie/awesome-appsec#readme) -- [Security](https://github.com/sbilly/awesome-security#readme) -- [CTF](https://github.com/apsdehal/awesome-ctf#readme) - Capture The Flag. -- [Cyber Security University](https://github.com/brootware/awesome-cyber-security-university#readme) - Free educational resources that focus on learning by doing. -- [Malware Analysis](https://github.com/rshipp/awesome-malware-analysis#readme) -- [Android Security](https://github.com/ashishb/android-security-awesome#readme) -- [Hacking](https://github.com/carpedm20/awesome-hacking#readme) -- [Hacking Spots](https://github.com/daviddias/awesome-hacking-locations#readme) -- [Honeypots](https://github.com/paralax/awesome-honeypots#readme) - Deception trap, designed to entice an attacker into attempting to compromise the information systems in an organization. -- [Incident Response](https://github.com/meirwah/awesome-incident-response#readme) -- [Vehicle Security and Car Hacking](https://github.com/jaredthecoder/awesome-vehicle-security#readme) -- [Web Security](https://github.com/qazbnm456/awesome-web-security#readme) - Security of web apps & services. -- [Lockpicking](https://github.com/fabacab/awesome-lockpicking#readme) - The art of unlocking a lock by manipulating its components without the key. -- [Cybersecurity Blue Team](https://github.com/fabacab/awesome-cybersecurity-blueteam#readme) - Groups of individuals who identify security flaws in information technology systems. -- [Fuzzing](https://github.com/cpuu/awesome-fuzzing#readme) - Automated software testing technique that involves feeding pseudo-randomly generated input data. -- [Embedded and IoT Security](https://github.com/fkie-cad/awesome-embedded-and-iot-security#readme) -- [GDPR](https://github.com/bakke92/awesome-gdpr#readme) - Regulation on data protection and privacy for all individuals within EU. -- [DevSecOps](https://github.com/TaptuIT/awesome-devsecops#readme) - Integration of security practices into [DevOps](https://en.wikipedia.org/wiki/DevOps). -- [Executable Packing](https://github.com/dhondta/awesome-executable-packing#readme) - Packing and unpacking executable formats. -- [Malware Persistence](https://github.com/Karneades/awesome-malware-persistence#readme) - Techniques that adversaries use to keep access to systems across restarts. -- [EVM Security](https://github.com/kareniel/awesome-evm-security#readme) - Understanding the Ethereum Virtual Machine security ecosystem. -- [Password Cracking](https://github.com/n0kovo/awesome-password-cracking#readme) - The process of recovering passwords from data that has been stored in or transmitted by a system in scrambled form. -- [Security Card Games](https://github.com/Karneades/awesome-security-card-games#readme) - Train your skills and discuss various security topics. -- [Suricata](https://github.com/satta/awesome-suricata#readme) - Intrusion detection/prevention system and network security monitoring engine. -- [Prompt Injection](https://github.com/FonduAI/awesome-prompt-injection#readme) - A type of vulnerability that specifically targets machine learning models. - -## Content Management Systems - -- [Umbraco](https://github.com/umbraco-community/awesome-umbraco#readme) -- [Refinery CMS](https://github.com/refinerycms-contrib/awesome-refinerycms#readme) - Ruby on Rails CMS. -- [Wagtail](https://github.com/springload/awesome-wagtail#readme) - Django CMS focused on flexibility and user experience. -- [Textpattern](https://github.com/drmonkeyninja/awesome-textpattern#readme) - Lightweight PHP-based CMS. -- [Drupal](https://github.com/nirgn975/awesome-drupal#readme) - Extensible PHP-based CMS. -- [Craft CMS](https://github.com/craftcms/awesome#readme) - Content-first CMS. -- [Sitecore](https://github.com/MartinMiles/Awesome-Sitecore#readme) - .NET digital marketing platform that combines CMS with tools for managing multiple websites. -- [Silverstripe CMS](https://github.com/wernerkrauss/awesome-silverstripe-cms#readme) - PHP MVC framework that serves as a classic or headless CMS. -- [Directus](https://github.com/directus-community/awesome-directus#readme) - A real-time API and app dashboard for managing SQL database content. -- [Plone](https://github.com/collective/awesome-plone#readme) - Open source Python CMS. - -## Hardware - -- [Robotics](https://github.com/Kiloreux/awesome-robotics#readme) -- [Internet of Things](https://github.com/HQarroum/awesome-iot#readme) -- [Electronics](https://github.com/kitspace/awesome-electronics#readme) - For electronic engineers and hobbyists. -- [Bluetooth Beacons](https://github.com/rabschi/awesome-beacon#readme) -- [Electric Guitar Specifications](https://github.com/gitfrage/guitarspecs#readme) - Checklist for building your own electric guitar. -- [Plotters](https://github.com/beardicus/awesome-plotters#readme) - Computer-controlled drawing machines and other visual art robots. -- [Robotic Tooling](https://github.com/protontypes/awesome-robotic-tooling#readme) - Free and open tools for professional robotic development. -- [LIDAR](https://github.com/szenergy/awesome-lidar#readme) - Sensor for measuring distances by illuminating the target with laser light. -- [Open Hardware](https://github.com/delftopenhardware/awesome-open-hardware#readme) - Open-source hardware projects. -- [ADS-B](https://github.com/rickstaa/awesome-adsb#readme) - Technology broadcasting aircraft's identity, position, and data periodically. -- [Flying FPV](https://github.com/Matthias84/awesome-flying-fpv#readme) - Open hardware and software related to drones / UAVs. - -## Business - -- [Open Companies](https://github.com/opencompany/awesome-open-company#readme) -- [Places to Post Your Startup](https://github.com/mmccaff/PlacesToPostYourStartup#readme) -- [OKR Methodology](https://github.com/domenicosolazzo/awesome-okr#readme) - Goal setting & communication best practices. -- [Leading and Managing](https://github.com/LappleApple/awesome-leading-and-managing#readme) - Leading people and being a manager in a technology company/environment. -- [Indie](https://github.com/mezod/awesome-indie#readme) - Independent developer businesses. -- [Tools of the Trade](https://github.com/cjbarber/ToolsOfTheTrade#readme) - Tools used by companies on Hacker News. -- [Clean Tech](https://github.com/nglgzz/awesome-clean-tech#readme) - Fighting climate change with technology. -- [Wardley Maps](https://github.com/wardley-maps-community/awesome-wardley-maps#readme) - Provides high situational awareness to help improve strategic planning and decision making. -- [Social Enterprise](https://github.com/RayBB/awesome-social-enterprise#readme) - Building an organization primarily focused on social impact that is at least partially self-funded. -- [Engineering Team Management](https://github.com/kdeldycke/awesome-engineering-team-management#readme) - How to transition from software development to engineering management. -- [Developer-First Products](https://github.com/agamm/awesome-developer-first#readme) - Products that target developers as the user. -- [Billing](https://github.com/kdeldycke/awesome-billing#readme) - Payments, invoicing, pricing, accounting, marketplace, fraud, and business intelligence. -- [Engineering Strategy](https://github.com/aleixmorgadas/awesome-engineering-strategy#readme) - How to design and execute engineering strategies for tech leadership. - -## Work - -- [Slack](https://github.com/matiassingers/awesome-slack#readme) - Team collaboration. - - [Communities](https://github.com/filipelinhares/awesome-slack#readme) -- [Remote Jobs](https://github.com/lukasz-madon/awesome-remote-job#readme) -- [Productivity](https://github.com/jyguyomarch/awesome-productivity#readme) -- [Niche Job Boards](https://github.com/tramcar/awesome-job-boards#readme) -- [Programming Interviews](https://github.com/DopplerHQ/awesome-interview-questions#readme) -- [Code Review](https://github.com/joho/awesome-code-review#readme) - Reviewing code. -- [Creative Technology](https://github.com/j0hnm4r5/awesome-creative-technology#readme) - Businesses & groups that specialize in combining computing, design, art, and user experience. -- [Internships](https://github.com/lodthe/awesome-internships#readme) - CV writing guides and companies that hire interns. - -## Networking - -- [Software-Defined Networking](https://github.com/sdnds-tw/awesome-sdn#readme) -- [Network Analysis](https://github.com/briatte/awesome-network-analysis#readme) -- [PCAPTools](https://github.com/caesar0301/awesome-pcaptools#readme) -- [Real-Time Communications](https://github.com/rtckit/awesome-rtc#readme) - Network protocols for near simultaneous exchange of media and data. -- [SNMP](https://github.com/eozer/awesome-snmp#readme) - A protocol for collecting, modifying, and organizing information about managed devices on IP networks. -- [Scapy](https://github.com/secdev/awesome-scapy#readme) - Python-based interactive packet manipulation. - -## Decentralized Systems - -- [Bitcoin](https://github.com/igorbarinov/awesome-bitcoin#readme) - Bitcoin services and tools for software developers. -- [Ripple](https://github.com/vhpoet/awesome-ripple#readme) - Open source distributed settlement network. -- [Non-Financial Blockchain](https://github.com/machinomy/awesome-non-financial-blockchain#readme) - Non-financial blockchain applications. -- [Mastodon](https://github.com/hyperupcall/awesome-mastodon#readme) - Open source decentralized microblogging network. -- [Ethereum](https://github.com/ttumiel/Awesome-Ethereum#readme) - Distributed computing platform for smart contract development. -- [Blockchain AI](https://github.com/steven2358/awesome-blockchain-ai#readme) - Blockchain projects for artificial intelligence and machine learning. -- [EOSIO](https://github.com/DanailMinchev/awesome-eosio#readme) - A decentralized operating system supporting industrial-scale apps. -- [Corda](https://github.com/chainstack/awesome-corda#readme) - Open source blockchain platform designed for business. -- [Waves](https://github.com/msmolyakov/awesome-waves#readme) - Open source blockchain platform and development toolset for Web 3.0 apps and decentralized solutions. -- [Substrate](https://github.com/substrate-developer-hub/awesome-substrate#readme) - Framework for writing scalable, upgradeable blockchains in Rust. -- [Golem](https://github.com/golemfactory/awesome-golem#readme) - Open source peer-to-peer marketplace for computing resources. -- [Stacks](https://github.com/friedger/awesome-stacks-chain#readme) - A smart contract platform secured by Bitcoin. -- [Algorand](https://github.com/aorumbayev/awesome-algorand#readme) - An open-source, proof of stake blockchain and smart contract computing platform. -- [ZeroNet](https://github.com/zolagonano/awesome-zeronet#readme) - A decentralized web-like network of peer-to-peer users. -- [Cosmos SDK](https://github.com/cosmos/awesome-cosmos#readme) - Modular framework for building app-specific blockchains in Go. - -## Health and Social Science - -- [Biomedical Information Extraction](https://github.com/caufieldjh/awesome-bioie#readme) - How to extract information from unstructured biomedical data and text. -- [Computational Neuroscience](https://github.com/eselkin/awesome-computational-neuroscience#readme) - A multidisciplinary science which uses computational approaches to study the nervous system. -- [Diversity](https://github.com/folkswhocode/awesome-diversity#readme) - Creating a more inclusive and diverse tech community. -- [Digital History](https://github.com/maehr/awesome-digital-history#readme) - Computer-aided scientific investigation of history. -- [Empathy in Engineering](https://github.com/KimberlyMunoz/empathy-in-engineering#readme) - Building and promoting more compassionate engineering cultures. -- [Healthcare](https://github.com/kakoni/awesome-healthcare#readme) - Open source healthcare software for facilities, providers, developers, policy experts, and researchers. -- [Humane Technology](https://github.com/humanetech-community/awesome-humane-tech#readme) - Open source projects that help improve society. -- [Mental Health](https://github.com/dreamingechoes/awesome-mental-health#readme) - Mental health awareness and self-care in the software industry. -- [Neuroscience](https://github.com/analyticalmonk/awesome-neuroscience#readme) - Study of the nervous system and brain. -- [Digital Humanities](https://github.com/dh-tech/awesome-digital-humanities#readme) - Software for humanities scholars using quantitative or computational methods. - -## Events - -- [Creative Tech Events](https://github.com/danvoyce/awesome-creative-tech-events#readme) - Events around the globe for creative coding, tech, design, music, arts and cool stuff. -- [Events in Italy](https://github.com/ildoc/awesome-italy-events#readme) - Tech-related events in Italy. -- [Events in the Netherlands](https://github.com/awkward/awesome-netherlands-events#readme) - Tech-related events in the Netherlands. - -## Testing - -- [Testing](https://github.com/TheJambo/awesome-testing#readme) - Software testing. -- [Visual Regression Testing](https://github.com/mojoaxel/awesome-regression-testing#readme) - Ensures changes did not break the functionality or style. -- [Selenium](https://github.com/christian-bromann/awesome-selenium#readme) - Open-source browser automation framework and ecosystem. -- [Appium](https://github.com/SrinivasanTarget/awesome-appium#readme) - Test automation tool for apps. -- [TAP](https://github.com/sindresorhus/awesome-tap#readme) - Test Anything Protocol. -- [JMeter](https://github.com/aliesbelik/awesome-jmeter#readme) - Load testing and performance measurement tool. -- [k6](https://github.com/grafana/awesome-k6#readme) - Open-source, developer-centric performance monitoring and load testing solution. -- [Playwright](https://github.com/mxschmitt/awesome-playwright#readme) - Node.js library to automate Chromium, Firefox and WebKit with a single API. -- [Quality Assurance Roadmap](https://github.com/fityanos/awesome-quality-assurance-roadmap#readme) - How to start & build a career in software testing. -- [Gatling](https://github.com/aliesbelik/awesome-gatling#readme) - Open-source load and performance testing framework based on Scala, Akka, and Netty. - -## Miscellaneous - -- [Scientific Writing](https://github.com/writing-resources/awesome-scientific-writing#readme) - Distraction-free scientific writing with Markdown, reStructuredText and Jupyter notebooks. -- [JSON](https://github.com/burningtree/awesome-json#readme) - Text based data interchange format. - - [GeoJSON](https://github.com/tmcw/awesome-geojson#readme) - - [Datasets](https://github.com/jdorfman/awesome-json-datasets#readme) -- [CSV](https://github.com/secretGeek/awesomeCSV#readme) - A text file format that stores tabular data and uses a comma to separate values. -- [Discounts for Student Developers](https://github.com/AchoArnold/discount-for-student-dev#readme) -- [Radio](https://github.com/kyleterry/awesome-radio#readme) -- [Awesome](https://github.com/sindresorhus/awesome#readme) - Recursion illustrated. -- [Analytics](https://github.com/0xnr/awesome-analytics#readme) -- [REST](https://github.com/marmelab/awesome-rest#readme) -- [Continuous Integration and Continuous Delivery](https://github.com/cicdops/awesome-ciandcd#readme) -- [Services Engineering](https://github.com/mmcgrana/services-engineering#readme) -- [Free for Developers](https://github.com/ripienaar/free-for-dev#readme) -- [Answers](https://github.com/cyberglot/awesome-answers#readme) - Stack Overflow, Quora, etc. -- [Sketch](https://github.com/diessica/awesome-sketch#readme) - Design app for macOS. -- [Boilerplate Projects](https://github.com/melvin0008/awesome-projects-boilerplates#readme) -- [Readme](https://github.com/matiassingers/awesome-readme#readme) -- [GitHub Wiki](https://github.com/MyHoneyBadger/awesome-github-wiki#readme) - Comprehensive documentation on GitHub beyond README. -- [Design and Development Guides](https://github.com/NARKOZ/guides#readme) -- [Software Engineering Blogs](https://github.com/kilimchoi/engineering-blogs#readme) -- [Self Hosted](https://github.com/awesome-selfhosted/awesome-selfhosted#readme) -- [FOSS Production Apps](https://github.com/DataDaoDe/awesome-foss-apps#readme) -- [Gulp](https://github.com/alferov/awesome-gulp#readme) - Task runner. -- [AMA](https://github.com/sindresorhus/amas#readme) - Ask Me Anything. - - [Answers](https://github.com/stoeffel/awesome-ama-answers#readme) -- [Open Source Photography](https://github.com/ibaaj/awesome-OpenSourcePhotography#readme) -- [OpenGL](https://github.com/eug/awesome-opengl#readme) - Cross-platform API for rendering 2D and 3D graphics. -- [GraphQL](https://github.com/chentsulin/awesome-graphql#readme) -- [Urban & Regional Planning](https://github.com/APA-Technology-Division/urban-and-regional-planning-resources#readme) - Concerning the built environment and communities. -- [Transit](https://github.com/CUTR-at-USF/awesome-transit#readme) -- [Research Tools](https://github.com/emptymalei/awesome-research#readme) -- [Data Visualization](https://github.com/javierluraschi/awesome-dataviz#readme) -- [Microservices](https://github.com/mfornos/awesome-microservices#readme) -- [Unicode](https://github.com/jagracey/Awesome-Unicode#readme) - Unicode standards, quirks, packages and resources. - - [Code Points](https://github.com/Codepoints/awesome-codepoints#readme) -- [Beginner-Friendly Projects](https://github.com/MunGell/awesome-for-beginners#readme) -- [Katas](https://github.com/gamontal/awesome-katas#readme) -- [Tools for Activism](https://github.com/drewrwilson/toolsforactivism#readme) -- [Citizen Science](https://github.com/dylanrees/citizen-science#readme) - For community-based and non-institutional scientists. -- [MQTT](https://github.com/hobbyquaker/awesome-mqtt#readme) - "Internet of Things" connectivity protocol. -- [For Girls](https://github.com/cristianoliveira/awesome4girls#readme) -- [Vorpal](https://github.com/vorpaljs/awesome-vorpal#readme) - Node.js CLI framework. -- [Vulkan](https://github.com/vinjn/awesome-vulkan#readme) - Low-overhead, cross-platform 3D graphics and compute API. -- [LaTeX](https://github.com/egeerardyn/awesome-LaTeX#readme) - Typesetting language. -- [Economics](https://github.com/antontarasenko/awesome-economics#readme) - An economist's starter kit. -- [Funny Markov Chains](https://github.com/sublimino/awesome-funny-markov#readme) -- [Bioinformatics](https://github.com/danielecook/Awesome-Bioinformatics#readme) -- [Cheminformatics](https://github.com/hsiaoyi0504/awesome-cheminformatics#readme) - Informatics techniques applied to problems in chemistry. -- [Colorful](https://github.com/Siddharth11/Colorful#readme) - Choose your next color scheme. -- [Steam](https://github.com/scholtzm/awesome-steam#readme) - Digital distribution platform. -- [Bots](https://github.com/hackerkid/bots#readme) - Building bots. -- [Site Reliability Engineering](https://github.com/dastergon/awesome-sre#readme) -- [DTrace](https://github.com/xen0l/awesome-dtrace#readme) - Dynamic tracing framework. -- [Userscripts](https://github.com/bvolpato/awesome-userscripts#readme) - Enhance your browsing experience. -- [Pokémon](https://github.com/tobiasbueschel/awesome-pokemon#readme) - Pokémon and Pokémon GO. -- [ChatOps](https://github.com/exAspArk/awesome-chatops#readme) - Managing technical and business operations through a chat. -- [Falsehood](https://github.com/kdeldycke/awesome-falsehood#readme) - Falsehoods programmers believe in. -- [Domain-Driven Design](https://github.com/heynickc/awesome-ddd#readme) - Software development approach for complex needs by connecting the implementation to an evolving model. -- [Quantified Self](https://github.com/woop/awesome-quantified-self#readme) - Self-tracking through technology. -- [SaltStack](https://github.com/hbokh/awesome-saltstack#readme) - Python-based config management system. -- [Web Design](https://github.com/nicolesaidy/awesome-web-design#readme) - For digital designers. -- [Creative Coding](https://github.com/terkelg/awesome-creative-coding#readme) - Programming something expressive instead of something functional. -- [No-Login Web Apps](https://github.com/aviaryan/awesome-no-login-web-apps#readme) - Web apps that work without login. -- [Free Software](https://github.com/johnjago/awesome-free-software#readme) - Free as in freedom. -- [Framer](https://github.com/podo/awesome-framer#readme) - Prototyping interactive UI designs. -- [Markdown](https://github.com/BubuAnabelas/awesome-markdown#readme) - Markup language. -- [Dev Fun](https://github.com/mislavcimpersak/awesome-dev-fun#readme) - Funny developer projects. -- [Magento 2](https://github.com/DavidLambauer/awesome-magento2#readme) - Open Source eCommerce built with PHP. -- [TikZ](https://github.com/xiaohanyu/awesome-tikz#readme) - Graph drawing packages for TeX/LaTeX/ConTeXt. -- [Ad-Free](https://github.com/johnjago/awesome-ad-free#readme) - Ad-free alternatives. -- [Prometheus](https://github.com/roaldnefs/awesome-prometheus#readme) - Open-source monitoring system. -- [Homematic](https://github.com/homematic-community/awesome-homematic#readme) - Smart home devices. -- [Ledger](https://github.com/sfischer13/awesome-ledger#readme) - Double-entry accounting on the command-line. -- [Web Monetization](https://github.com/thomasbnt/awesome-web-monetization#readme) - A free open web standard service that allows you to send money directly in your browser. -- [Uncopyright](https://github.com/johnjago/awesome-uncopyright#readme) - Public domain works. -- [Crypto Currency Tools & Algorithms](https://github.com/Zheaoli/awesome-coins#readme) - Digital currency where encryption is used to regulate the generation of units and verify transfers. -- [Open Source Supporters](https://github.com/zachflower/awesome-open-source-supporters#readme) - Companies that offer their tools and services for free to open source projects. -- [Design Principles](https://github.com/robinstickel/awesome-design-principles#readme) - Create better and more consistent designs and experiences. -- [Theravada](https://github.com/johnjago/awesome-theravada#readme) - Teachings from the Theravada Buddhist tradition. -- [inspectIT](https://github.com/inspectit-labs/awesome-inspectit#readme) - Open source Java app performance management tool. -- [Open Source Maintainers](https://github.com/nayafia/awesome-maintainers#readme) - The experience of being an open source maintainer. -- [Calculators](https://github.com/xxczaki/awesome-calculators#readme) - Calculators for every platform. -- [Captcha](https://github.com/ZYSzys/awesome-captcha#readme) - A type of challenge–response test used in computing to determine whether or not the user is human. -- [Jupyter](https://github.com/markusschanta/awesome-jupyter#readme) - Create and share documents that contain code, equations, visualizations and narrative text. -- [FIRST Robotics Competition](https://github.com/andrewda/awesome-frc#readme) - International high school robotics championship. -- [Speakers](https://github.com/karlhorky/awesome-speakers#readme) - Conference and meetup speakers in the programming and design community. -- [Board Games](https://github.com/edm00se/awesome-board-games#readme) - Table-top gaming fun for all. -- [Software Patreons](https://github.com/uraimo/awesome-software-patreons#readme) - Fund individual programmers or the development of open source projects. -- [Parasite](https://github.com/ecohealthalliance/awesome-parasite#readme) - Parasites and host-pathogen interactions. -- [Food](https://github.com/jzarca01/awesome-food#readme) - Food-related projects on GitHub. -- [Bitcoin Payment Processors](https://github.com/alexk111/awesome-bitcoin-payment-processors#readme) - Start accepting Bitcoin. -- [Scientific Computing](https://github.com/nschloe/awesome-scientific-computing#readme) - Solving complex scientific problems using computers. -- [Amazon Sellers](https://github.com/ScaleLeap/awesome-amazon-seller#readme) -- [Agriculture](https://github.com/brycejohnston/awesome-agriculture#readme) - Open source technology for farming and gardening. -- [Product Design](https://github.com/ttt30ga/awesome-product-design#readme) - Design a product from the initial concept to production. -- [Prisma](https://github.com/catalinmiron/awesome-prisma#readme) - Turn your database into a GraphQL API. -- [Software Architecture](https://github.com/simskij/awesome-software-architecture#readme) - The discipline of designing and building software. -- [Connectivity Data and Reports](https://github.com/stevesong/awesome-connectivity-info#readme) - Better understand who has access to telecommunication and internet infrastructure and on what terms. -- [Stacks](https://github.com/stackshareio/awesome-stacks#readme) - Tech stacks for building different apps and features. -- [Cytodata](https://github.com/cytodata/awesome-cytodata#readme) - Image-based profiling of biological phenotypes for computational biologists. -- [IRC](https://github.com/davisonio/awesome-irc#readme) - Open source messaging protocol. -- [Advertising](https://github.com/cenoura/awesome-ads#readme) - Advertising and programmatic media for websites. -- [Earth](https://github.com/philsturgeon/awesome-earth#readme) - Find ways to resolve the climate crisis. -- [Naming](https://github.com/gruhn/awesome-naming#readme) - Naming things in computer science done right. -- [Web Archiving](https://github.com/iipc/awesome-web-archiving#readme) - An effort to preserve the Web for future generations. -- [WP-CLI](https://github.com/schlessera/awesome-wp-cli#readme) - Command-line interface for WordPress. -- [Credit Modeling](https://github.com/mourarthur/awesome-credit-modeling#readme) - Methods for classifying credit applicants into risk classes. -- [Ansible](https://github.com/ansible-community/awesome-ansible#readme) - A Python-based, open source IT configuration management and automation platform. -- [Biological Visualizations](https://github.com/keller-mark/awesome-biological-visualizations#readme) - Interactive visualization of biological data on the web. -- [QR Code](https://github.com/make-github-pseudonymous-again/awesome-qr-code#readme) - A type of matrix barcode that can be used to store and share a small amount of information. -- [Veganism](https://github.com/sdassow/awesome-veganism#readme) - Making the plant-based lifestyle easy and accessible. -- [Translations](https://github.com/mbiesiad/awesome-translations#readme) - The transfer of the meaning of a text from one language to another. -- [Scriptable](https://github.com/dersvenhesse/awesome-scriptable#readme) - An iOS app for automations in JavaScript. -- [WebXR](https://github.com/msub2/awesome-webxr#readme) - Enables immersive virtual reality and augmented reality content on the web. -- [Computational Geometry](https://github.com/atkirtland/awesome-computational-geometry#readme) - Computational approaches for problems in geometry. -- [OpenStreetMap](https://github.com/osmlab/awesome-openstreetmap#readme) - An open data mapping project utilized by many apps and devices. -- [Computational Biology](https://github.com/inoue0426/awesome-computational-biology#readme) - Computational approaches applied to problems in biology. -- [Read the Docs](https://github.com/readthedocs-examples/awesome-read-the-docs#readme) - Example documentation projects to inspire and help bootstrap new documentation projects. -- [Quarto](https://github.com/mcanouil/awesome-quarto#readme) - Scientific and technical open-source publishing system built on Pandoc. -- [Biological Image Analysis](https://github.com/hallvaaw/awesome-biological-image-analysis#readme) - Interpreting biological phenomena using images. -- [ChatGPT](https://github.com/sindresorhus/awesome-chatgpt#readme) - Artificial intelligence chatbot developed by OpenAI. -- [Whisper](https://github.com/sindresorhus/awesome-whisper#readme) - Open-source AI-powered speech recognition system developed by OpenAI. -- [Stock Trading](https://github.com/shi-rudo/awesome-stock-trading#readme) - Purchase and sale of equities of publicly traded companies with the aim of generating profits. -- [Steam Deck](https://github.com/airscripts/awesome-steam-deck#readme) - A handheld gaming computer developed by Valve. -- [Astrophotography](https://github.com/lunohodov/awesome-astrophotography#readme) - Photography of astronomical objects, celestial events, or areas of the night sky. -- [HPC](https://github.com/dstdev/awesome-hpc#readme) - High Performance Computing. - -## Related - -- [All Awesome Lists](https://github.com/topics/awesome) - All the Awesome lists on GitHub. -- [Awesome Search](https://awesomelists.top) - Quick search for Awesome lists. -- [StumbleUponAwesome](https://github.com/basharovV/StumbleUponAwesome) - Discover random pages from the Awesome dataset using a browser extension. -- [Awesome CLI](https://github.com/umutphp/awesome-cli) - A simple command-line tool to dive into Awesome lists. -- [Awesome Viewer](https://awesome.digitalbunker.dev) - A visualizer for all of the above Awesome lists. -- [Track Awesome List](https://www.trackawesomelist.com) - View the latest updates of Awesome lists. -- [Open Source Heroes - Awesome](https://opensource-heroes.com/awesome) - View Awesome lists with extra info like stars, last update, and license. diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 00000000..178a49bb --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,31 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { PageNotFoundComponent } from './error-routing/not-found/not-found.component'; +import { UncaughtErrorComponent } from './error-routing/error/uncaught-error.component'; +import { ErrorRoutingModule } from './error-routing/error-routing.module'; +import { HomeComponent } from './home/home.component'; +import { MedicationsComponent } from './medications/medications.component'; +import { HealthIndicatorsComponent } from './health-indicators/health-indicators.component'; +import { AppointmentsComponent } from './appointments/appointments.component'; +import { ProfileComponent } from './profile/profile.component'; +import { EmergencyComponent } from './emergency/emergency.component'; + +export const routes: Routes = [ + { path: '', redirectTo: 'home', pathMatch: 'full' }, + { path: 'error', component: UncaughtErrorComponent }, + { path: 'home', component: HomeComponent, data: { text: 'Home' } }, + { path: 'medications', component: MedicationsComponent, data: { text: 'Medications' } }, + { path: 'health-indicators', component: HealthIndicatorsComponent, data: { text: 'Health Indicators' } }, + { path: 'appointments', component: AppointmentsComponent, data: { text: 'Appointments' } }, + { path: 'profile', component: ProfileComponent, data: { text: 'Profile' } }, + { path: 'emergency', component: EmergencyComponent, data: { text: 'Emergency' } }, + { path: '**', component: PageNotFoundComponent } // must always be last +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes, { bindToComponentInputs: true }), ErrorRoutingModule], + exports: [RouterModule, ErrorRoutingModule] +}) +export class AppRoutingModule { +} diff --git a/src/app/app.component.html b/src/app/app.component.html new file mode 100644 index 00000000..3b85fbd9 --- /dev/null +++ b/src/app/app.component.html @@ -0,0 +1,70 @@ + +
+
+ +
+ + +
+ + home + + Home +
+
+ + healing + + Medications +
+
+ + favorite + + Health Indicators +
+
+ + calendar_today + + Appointments +
+
+ + account_circle + + Medical Profile +
+
+ + error + + Emergency +
+
+
+
diff --git a/src/app/app.component.scss b/src/app/app.component.scss new file mode 100644 index 00000000..35d06415 --- /dev/null +++ b/src/app/app.component.scss @@ -0,0 +1,97 @@ +:host { + height: 100%; + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; +} +.row-layout { + display: flex; +} +.main-navigation { + border-color: #BDD2B9; + border-width: 0px 0px 1px; + border-style: solid; + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group { + justify-content: flex-start; + align-items: center; + align-content: flex-start; + gap: 8px; + overflow: hidden; + position: relative; + min-width: 50px; +} +.group_1 { + justify-content: flex-start; + align-items: center; + align-content: flex-start; + gap: 16px; + position: relative; + min-width: 50px; + min-height: 50px; +} +.bottom-container { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + position: relative; + min-width: 50px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.navbar { + --igx-navbar-background: #F0F6EF; + height: max-content; + min-width: min-content; + flex-grow: 1; + flex-basis: 0; +} +.view-container { + overflow: auto; + position: relative; + flex-grow: 1; +} +.nav-drawer { + min-width: min-content; + min-height: 0; + max-width: 236px; + flex-shrink: 0; +} +.navbar-content { + gap: 1rem; +} +.image { + object-fit: cover; + height: 32px; + min-width: 0; + min-height: 0; + max-height: 32px; + flex-shrink: 0; +} +.text { + color: hsla(var(--ig-secondary-400)); + height: max-content; + min-width: min-content; +} +.avatar { + --igx-avatar-background: transparent; +} +.icon { + --size: 24px; + font-size: 24px; + width: 24px; + height: 24px; + color: hsla(var(--ig-primary-700)); +} +.button { + --igx-button-foreground: hsla(var(--ig-primary-900)); +} diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 00000000..07b5f6b5 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent {} diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 00000000..e1572640 --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,49 @@ +import { NgModule } from '@angular/core'; +import { BrowserModule, HammerModule } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { HomeComponent } from './home/home.component'; +import { IgxIconModule, IgxListModule, IgxButtonModule, IgxRippleModule, IgxAvatarModule, IgxToggleModule, IgxDialogModule, IgxNavbarModule, IgxNavigationDrawerModule } from 'igniteui-angular'; +import { FormsModule } from '@angular/forms'; +import { MedicationsComponent } from './medications/medications.component'; +import { HealthIndicatorsComponent } from './health-indicators/health-indicators.component'; +import { IgxCategoryChartModule } from 'igniteui-angular-charts'; +import { AppointmentsComponent } from './appointments/appointments.component'; +import { ProfileComponent } from './profile/profile.component'; +import { EmergencyComponent } from './emergency/emergency.component'; +import { HttpClientModule } from '@angular/common/http'; + +@NgModule({ + declarations: [ + AppComponent, + HomeComponent, + MedicationsComponent, + HealthIndicatorsComponent, + AppointmentsComponent, + ProfileComponent, + EmergencyComponent + ], + imports: [ + BrowserModule, + HammerModule, + AppRoutingModule, + BrowserAnimationsModule, + IgxIconModule, + IgxListModule, + IgxButtonModule, + IgxRippleModule, + FormsModule, + IgxCategoryChartModule, + IgxAvatarModule, + IgxToggleModule, + IgxDialogModule, + IgxNavbarModule, + IgxNavigationDrawerModule, + HttpClientModule + ], + providers: [], + bootstrap: [AppComponent] +}) +export class AppModule { +} diff --git a/src/app/appointments/appointments.component.html b/src/app/appointments/appointments.component.html new file mode 100644 index 00000000..381ab0c1 --- /dev/null +++ b/src/app/appointments/appointments.component.html @@ -0,0 +1,290 @@ +
+
+
+
+
+

+ UPCOMING APPOINTMENTS +

+
+
+ + + +
+
+ +
+

+ Internal Medicine +

+

+ Tuesday, January 24, 2023 - 2:30pm - Dr. M. Matthews +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Dermatology +

+

+ Friday, February 24, 2023 - 08:45am - Dr. V. Sawyer +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Gynaecology +

+

+ Monday, March 6, 2023 - 6:30pm - Dr. J. Dean +

+
+
+ +
+
+
+
+
+
+
+
+

+ RECENT +

+
+
+ + + +
+
+ +
+

+ Oftalmology +

+

+ Thursday, January 12, 2023 - Dr. H. Chandler +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Traumatology +

+

+ Friday, December 16, 2022 - Dr. J. Dean +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Otorhinolaryngology +

+

+ Tuesday, December 13, 2022 - Dr. H. McNamara +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Internal Medicine +

+

+ Monday, November 28, 2022 - Dr. M. Matthews +

+
+
+ +
+
+
+
+
+
+
+
+
+
+ Dermatology Appointment +
+
+
+ +
+

+ Dr. Michael Matthews +

+

+ Internal Medicine +

+
+
+ + + + + + calendar_today + + + + Tuesday, January 24, 2023 + + + + + + access_time + + + + 2:30pm - 2:45pm + + + + + + location_on + + + + Plainsboro Clinic + 1 Plainsboro Rd. Plainsboro, NJ 08536 + + +
+
+

+ REQUIREMENTS +

+
+

+ - Recommended shower before appointment. +

+

+ - Wear loose comfortable clothing. +

+

+ - Avoid using makeup or nail polish before appointment. +

+

+ - Don't try any new skin care products in the days prior to your appointment. +

+

+ - Take your medications as scheduled. Your dermatologist needs to know their effects on your skin. + +

+
+
+
+ + +
+
+
+ + +
+ Appointment Cancellation +
+
+ +

+ Are you sure you want to cancel your appointment? +

+
+ + + + +
diff --git a/src/app/appointments/appointments.component.scss b/src/app/appointments/appointments.component.scss new file mode 100644 index 00000000..ebd9bb12 --- /dev/null +++ b/src/app/appointments/appointments.component.scss @@ -0,0 +1,219 @@ +:host { + height: 100%; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: stretch; +} +.row-layout { + display: flex; +} +.group { + background-color: rgba(256, 256, 256, 0.6); + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: stretch; + gap: 24px; + position: relative; + padding: 32px; + min-width: 360px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.column-layout { + display: flex; + flex-direction: column; +} +.group_1 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 32px; + position: relative; + min-width: 360px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.group_2 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 16px; + position: relative; + min-width: 360px; + min-height: 50px; + flex-shrink: 0; +} +.group_3 { + justify-content: space-between; + align-items: center; + align-content: flex-start; + gap: 8px; + position: relative; + min-width: 50px; +} +.group_4 { + justify-content: flex-start; + align-items: baseline; + align-content: flex-start; + gap: 4px; + position: relative; + min-width: 50px; +} +.group_5 { + border-color: #CDE0C9; + border-width: 0px 0px 1px; + border-style: solid; + justify-content: space-between; + align-items: center; + align-content: flex-start; + position: relative; + padding: 0 0 16px; + min-width: 50px; + min-height: 50px; +} +.group_6 { + justify-content: flex-start; + align-items: center; + align-content: flex-start; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group_7 { + justify-content: center; + align-items: stretch; + align-content: flex-start; + position: relative; + padding: 0 0 0 24px; + min-width: 50px; + min-height: 50px; +} +.group_8 { + background-color: rgba(256, 256, 256, 0.6); + border-color: #CDE0C9; + border-width: 0px 0px 0px 1px; + border-style: solid; + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: stretch; + gap: 24px; + position: relative; + padding: 32px; + min-width: 360px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.group_9 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 16px; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group_10 { + justify-content: flex-start; + align-items: center; + align-content: flex-start; + gap: 16px; + position: relative; + min-width: 50px; +} +.group_11 { + justify-content: center; + align-items: stretch; + align-content: flex-start; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group_12 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 8px; + position: relative; + min-width: 50px; +} +.group_13 { + flex-wrap: wrap; + justify-content: flex-end; + align-items: stretch; + align-content: flex-start; + gap: 16px; + position: relative; +} +.text { + color: hsla(var(--ig-info-500)); + margin: 0 8px 0 0; + height: max-content; + min-width: min-content; +} +.image { + object-fit: cover; + height: 28px; + min-width: 0; + min-height: 0; + max-height: 28px; + flex-shrink: 0; +} +.content { + color: hsla(var(--ig-secondary-500)); + height: max-content; + min-width: min-content; +} +.avatar { + --igx-avatar-background: transparent; +} +.text_1 { + height: max-content; + min-width: min-content; +} +.text_2 { + color: hsla(var(--ig-info-500)); + height: max-content; + min-width: min-content; +} +.avatar_1::part(base) { + --igx-avatar-color: hsla(var(--ig-secondary-400)); +} +.avatar_2::part(base) { + --igx-avatar-color: hsla(var(--ig-info-500)); +} +.avatar_3::part(base) { + --igx-avatar-color: hsla(var(--ig-info-500)); +} +.avatar_4::part(base) { + --igx-avatar-color: hsla(var(--ig-info-500)); +} +.list { + height: max-content; +} +.button { + --igx-button-foreground: hsla(var(--ig-primary-800)); +} +.button_1 { + height: max-content; + flex-shrink: 0; +} +.button_2 { + --igx-button-background: hsla(var(--ig-primary-500)); + height: max-content; + flex-shrink: 0; +} +.button_3 { + height: max-content; +} +.button_4 { + --igx-button-foreground: hsla(var(--ig-surface-500)); + --igx-button-background: hsla(var(--ig-error-500)); + height: max-content; +} diff --git a/src/app/appointments/appointments.component.spec.ts b/src/app/appointments/appointments.component.spec.ts new file mode 100644 index 00000000..63b728a5 --- /dev/null +++ b/src/app/appointments/appointments.component.spec.ts @@ -0,0 +1,29 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormsModule } from '@angular/forms'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; + +import { IgxListModule, IgxButtonModule, IgxRippleModule, IgxIconModule, IgxAvatarModule, IgxToggleModule, IgxDialogModule } from 'igniteui-angular'; +import { AppointmentsComponent } from './appointments.component'; + +describe('AppointmentsComponent', () => { + let component: AppointmentsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AppointmentsComponent ], + imports: [ NoopAnimationsModule, FormsModule, IgxListModule, IgxButtonModule, IgxRippleModule, IgxIconModule, IgxAvatarModule, IgxToggleModule, IgxDialogModule ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AppointmentsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/appointments/appointments.component.ts b/src/app/appointments/appointments.component.ts new file mode 100644 index 00000000..40450e9a --- /dev/null +++ b/src/app/appointments/appointments.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-appointments', + templateUrl: './appointments.component.html', + styleUrls: ['./appointments.component.scss'] +}) +export class AppointmentsComponent {} diff --git a/src/app/emergency/emergency.component.html b/src/app/emergency/emergency.component.html new file mode 100644 index 00000000..451f6e42 --- /dev/null +++ b/src/app/emergency/emergency.component.html @@ -0,0 +1,9 @@ +
+ +
+ Start building! +
+

+ Remove the "demo-content" container, and add your own content. +

+
diff --git a/src/app/emergency/emergency.component.scss b/src/app/emergency/emergency.component.scss new file mode 100644 index 00000000..c6488c43 --- /dev/null +++ b/src/app/emergency/emergency.component.scss @@ -0,0 +1,49 @@ +:host { + height: 100%; + display: flex; + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; +} +.column-layout { + display: flex; + flex-direction: column; +} +.demo-content { + background-color: transparent; + border-color: hsla(var(--ig-gray-400)); + border-width: 2px; + border-style: dashed; + justify-content: center; + align-items: center; + align-content: flex-start; + left: 50%; + transform: translate(-50%, -50%); + top: 50%; + position: absolute; + padding: 64px; + min-width: 50px; + min-height: 50px; +} +.image { + object-fit: cover; + margin: 0 0 24px; + min-width: 0; + min-height: 0; + max-width: 280px; + flex-shrink: 0; +} +.h5 { + color: hsla(var(--ig-info-500)); + margin: 0 0 16px; + height: max-content; + min-width: min-content; +} +.text { + text-align: center; + color: hsla(var(--ig-gray-700)); + margin: 0 0 24px; + height: max-content; + min-width: min-content; + max-width: 320px; +} diff --git a/src/app/emergency/emergency.component.spec.ts b/src/app/emergency/emergency.component.spec.ts new file mode 100644 index 00000000..1bb234db --- /dev/null +++ b/src/app/emergency/emergency.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EmergencyComponent } from './emergency.component'; + +describe('EmergencyComponent', () => { + let component: EmergencyComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [EmergencyComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(EmergencyComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/emergency/emergency.component.ts b/src/app/emergency/emergency.component.ts new file mode 100644 index 00000000..edd663d6 --- /dev/null +++ b/src/app/emergency/emergency.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-emergency', + templateUrl: './emergency.component.html', + styleUrls: ['./emergency.component.scss'] +}) +export class EmergencyComponent {} diff --git a/src/app/error-routing/error-routing.module.ts b/src/app/error-routing/error-routing.module.ts new file mode 100644 index 00000000..d2bd342b --- /dev/null +++ b/src/app/error-routing/error-routing.module.ts @@ -0,0 +1,21 @@ +import { ErrorHandler, NgModule, Provider } from '@angular/core'; +import { environment } from '../../environments/environment'; +import { GlobalErrorHandlerService } from './error/global-error-handler.service'; +import { UncaughtErrorComponent } from './error/uncaught-error.component'; +import { PageNotFoundComponent } from './not-found/not-found.component'; + +const providers: Provider[] = []; + +if (environment.production) { + // register prod error handler + providers.push({ provide: ErrorHandler, useClass: GlobalErrorHandlerService }); +} + +@NgModule({ + declarations: [ + PageNotFoundComponent, + UncaughtErrorComponent + ], + providers +}) +export class ErrorRoutingModule { } diff --git a/src/app/error-routing/error/global-error-handler.service.ts b/src/app/error-routing/error/global-error-handler.service.ts new file mode 100644 index 00000000..3aba8811 --- /dev/null +++ b/src/app/error-routing/error/global-error-handler.service.ts @@ -0,0 +1,23 @@ +import { ErrorHandler, Injectable, Injector, NgZone } from '@angular/core'; +import { Router } from '@angular/router'; + +@Injectable() +export class GlobalErrorHandlerService implements ErrorHandler { + + constructor(private injector: Injector, private zone: NgZone) { } + + handleError(error: any) { + // handle and/or log error, for example: + console.error(error); + + // show error page + const router = this.injector.get(Router); + if (router) { + this.zone.run(() => { + router + .navigate(['error']) + .catch((err: any) => console.error(err)); + }); + } + } +} diff --git a/src/app/error-routing/error/uncaught-error.component.ts b/src/app/error-routing/error/uncaught-error.component.ts new file mode 100644 index 00000000..0fbb6ba2 --- /dev/null +++ b/src/app/error-routing/error/uncaught-error.component.ts @@ -0,0 +1,6 @@ +import { Component } from '@angular/core'; + +@Component({ + template: '

Error 500: Internal Server Error

', +}) +export class UncaughtErrorComponent { } diff --git a/src/app/error-routing/not-found/not-found.component.ts b/src/app/error-routing/not-found/not-found.component.ts new file mode 100644 index 00000000..4f027a80 --- /dev/null +++ b/src/app/error-routing/not-found/not-found.component.ts @@ -0,0 +1,6 @@ +import { Component } from '@angular/core'; + +@Component({ + template: '

Error 404: Page not found

' +}) +export class PageNotFoundComponent { } diff --git a/src/app/health-indicators/health-indicators.component.html b/src/app/health-indicators/health-indicators.component.html new file mode 100644 index 00000000..85f2a521 --- /dev/null +++ b/src/app/health-indicators/health-indicators.component.html @@ -0,0 +1,144 @@ +
+
+

+ HEALTH INDICATORS +

+
+
+
+
+ +
+

+ WEIGHT +

+
+ 112 +
+

+ lbs +

+
+
+
+ +
+
+
+
+ +
+

+ HEART RATE +

+
+ 90 +
+

+ bpm +

+
+
+
+ +
+
+
+
+
+
+ +
+

+ BLOOD PRESSURE +

+
+ 140 +
+
+ / +
+
+ 70 +
+

+ mmHg +

+
+
+
+ +
+
+
+
+ +
+

+ BLOOD SUGAR +

+
+ 85 +
+

+ mg/dL +

+
+
+
+ +
+
+
+
+
+
+ +
+

+ TOTAL CHOLESTEROL +

+
+ 200 +
+

+ mg/dL +

+
+
+
+ +
+
+
+
+ +
+

+ CHOLESTEROL HDL / LDL +

+
+ 80 +
+

+ mg/dL +

+
+ - +
+
+ 85 +
+

+ mg/dL +

+
+
+
+ +
+
+
+
+
+
diff --git a/src/app/health-indicators/health-indicators.component.scss b/src/app/health-indicators/health-indicators.component.scss new file mode 100644 index 00000000..6609c06a --- /dev/null +++ b/src/app/health-indicators/health-indicators.component.scss @@ -0,0 +1,191 @@ +:host { + height: 100%; + display: flex; + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; +} +.row-layout { + display: flex; +} +.group { + background-color: rgba(256, 256, 256, 0.6); + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: stretch; + gap: 24px; + overflow: auto; + position: relative; + padding: 32px; + min-width: 360px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.column-layout { + display: flex; + flex-direction: column; +} +.group_1 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 16px; + position: relative; + min-width: 360px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.group_2 { + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: stretch; + gap: 32px; + position: relative; + min-width: 50px; + min-height: 50px; + flex-grow: 1; + flex-shrink: 0; +} +.group_3 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 32px; + position: relative; + min-width: 360px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.group_4 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 8px; + position: relative; + min-width: 50px; + min-height: 50px; + flex-grow: 1; + flex-shrink: 0; +} +.group_5 { + justify-content: flex-start; + align-items: center; + align-content: flex-start; + gap: 8px; + position: relative; + min-width: 50px; +} +.group_6 { + justify-content: flex-start; + align-items: baseline; + align-content: flex-start; + gap: 4px; + position: relative; + min-width: 50px; +} +.group_7 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + position: relative; + min-width: 50px; + min-height: 50px; + flex-grow: 1; + flex-shrink: 0; +} +.group_8 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 8px; + position: relative; + min-width: 50px; + min-height: 150px; + flex-grow: 1; + flex-shrink: 0; +} +.text { + color: hsla(var(--ig-info-500)); + margin: 0 8px 0 0; + height: max-content; + min-width: min-content; +} +.image { + object-fit: cover; + height: 24px; + min-width: 0; + min-height: 0; + max-height: 24px; + flex-shrink: 0; +} +.text_1 { + color: hsla(var(--ig-secondary-300)); + margin: 0 8px 0 0; + height: max-content; + min-width: min-content; +} +.h6 { + color: hsla(var(--ig-secondary-500)); + height: max-content; + min-width: min-content; +} +.text_2 { + color: hsla(var(--ig-secondary-200)); + height: max-content; + min-width: min-content; +} +.h6_1 { + color: hsla(var(--ig-secondary-100)); + height: max-content; + min-width: min-content; +} +.category-chart { + --brushes: #70C3A1; + --outlines: #70C3A1; + --marker-brushes: #70C3A1; + --marker-outlines: #70C3A1; + min-height: 200px; + flex-grow: 1; + flex-basis: 0; +} +.category-chart_1 { + --brushes: #E7B7C8; + --outlines: #E7B7C8; + --marker-brushes: #E7B7C8; + --marker-outlines: #E7B7C8; + min-height: 200px; + flex-grow: 1; + flex-shrink: 0; +} +.category-chart_2 { + --brushes: #CDB3D4 #AE91B6; + --outlines: #CDB3D4 #AE91B6; + --marker-brushes: #CDB3D4 #AE91B6; + --marker-outlines: #CDB3D4 #AE91B6; + min-height: 200px; + flex-grow: 1; + flex-basis: 0; +} +.category-chart_3 { + --brushes: #FFBE88; + --outlines: #FFBE88; + --marker-brushes: #FFBE88; + --marker-outlines: #FFBE88; + min-height: 200px; + flex-grow: 1; + flex-shrink: 0; +} +.category-chart_4 { + --brushes: #74C2A3 #DFA8BB; + --outlines: #74C2A3 #DFA8BB; + --marker-brushes: #74C2A3 #DFA8BB; + --marker-outlines: #74C2A3 #DFA8BB; + min-height: 200px; + flex-grow: 1; + flex-shrink: 0; +} diff --git a/src/app/health-indicators/health-indicators.component.spec.ts b/src/app/health-indicators/health-indicators.component.spec.ts new file mode 100644 index 00000000..6d475208 --- /dev/null +++ b/src/app/health-indicators/health-indicators.component.spec.ts @@ -0,0 +1,30 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormsModule } from '@angular/forms'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; + +import { IgxCategoryChartModule } from 'igniteui-angular-charts'; +import { HealthIndicatorsComponent } from './health-indicators.component'; + +describe('HealthIndicatorsComponent', () => { + let component: HealthIndicatorsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ HealthIndicatorsComponent ], + imports: [ NoopAnimationsModule, FormsModule, HttpClientTestingModule, IgxCategoryChartModule ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(HealthIndicatorsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/health-indicators/health-indicators.component.ts b/src/app/health-indicators/health-indicators.component.ts new file mode 100644 index 00000000..8419d53e --- /dev/null +++ b/src/app/health-indicators/health-indicators.component.ts @@ -0,0 +1,60 @@ +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Subject, takeUntil } from 'rxjs'; +import { BPSystolicDiastolicType } from '../models/patient-dashboard/bpsystolic-diastolic-type'; +import { TotalCholesterolType } from '../models/patient-dashboard/total-cholesterol-type'; +import { CholesterolHDLLDLType } from '../models/patient-dashboard/cholesterol-hdlldltype'; +import { GlucoseType } from '../models/patient-dashboard/glucose-type'; +import { HeartRateType } from '../models/patient-dashboard/heart-rate-type'; +import { WeightType } from '../models/patient-dashboard/weight-type'; +import { PatientDashboardService } from '../services/patient-dashboard.service'; + +@Component({ + selector: 'app-health-indicators', + templateUrl: './health-indicators.component.html', + styleUrls: ['./health-indicators.component.scss'] +}) +export class HealthIndicatorsComponent implements OnInit, OnDestroy { + private destroy$: Subject = new Subject(); + public patientDashboardWeight: WeightType[] = []; + public patientDashboardHeartRate: HeartRateType[] = []; + public patientDashboardBPSystolicDiastolic: BPSystolicDiastolicType[] = []; + public patientDashboardGlucose: GlucoseType[] = []; + public patientDashboardTotalCholesterol: TotalCholesterolType[] = []; + public patientDashboardCholesterolHDLLDL: CholesterolHDLLDLType[] = []; + + constructor( + private patientDashboardService: PatientDashboardService, + ) {} + + ngOnInit() { + this.patientDashboardService.getWeightList().pipe(takeUntil(this.destroy$)).subscribe({ + next: (data) => this.patientDashboardWeight = data, + error: (_err: any) => this.patientDashboardWeight = [] + }); + this.patientDashboardService.getHeartRateList().pipe(takeUntil(this.destroy$)).subscribe({ + next: (data) => this.patientDashboardHeartRate = data, + error: (_err: any) => this.patientDashboardHeartRate = [] + }); + this.patientDashboardService.getBPSystolicDiastolicList().pipe(takeUntil(this.destroy$)).subscribe({ + next: (data) => this.patientDashboardBPSystolicDiastolic = data, + error: (_err: any) => this.patientDashboardBPSystolicDiastolic = [] + }); + this.patientDashboardService.getGlucoseList().pipe(takeUntil(this.destroy$)).subscribe({ + next: (data) => this.patientDashboardGlucose = data, + error: (_err: any) => this.patientDashboardGlucose = [] + }); + this.patientDashboardService.getTotalCholesterolList().pipe(takeUntil(this.destroy$)).subscribe({ + next: (data) => this.patientDashboardTotalCholesterol = data, + error: (_err: any) => this.patientDashboardTotalCholesterol = [] + }); + this.patientDashboardService.getCholesterolHDLLDLList().pipe(takeUntil(this.destroy$)).subscribe({ + next: (data) => this.patientDashboardCholesterolHDLLDL = data, + error: (_err: any) => this.patientDashboardCholesterolHDLLDL = [] + }); + } + + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } +} diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html new file mode 100644 index 00000000..f4165431 --- /dev/null +++ b/src/app/home/home.component.html @@ -0,0 +1,280 @@ +
+
+
+ +

+ HEART RATE +

+
+
+

+ 82 +

+
+ bpm +
+
+

+ +1.12% +

+
+
+
+ +

+ BLOOD PRESSURE +

+
+
+

+ 140 +

+

+ / +

+

+ 70 +

+
+ mmHg +
+
+

+ +1.12% +

+
+
+
+ +

+ CHOLESTEROL +

+
+
+

+ 200 +

+
+ mg/dL +
+
+

+ +1.12% +

+
+
+
+ +

+ WEIGHT +

+
+
+

+ 112 +

+
+ lbs +
+
+

+ +1.12% +

+
+
+
+
+
+
+
+

+ CURRENT MEDICATIONS +

+
+
+ + View all + + + arrow_forward + +
+
+ + + +
+
+ +
+

+ Calcium 500mg +

+

+ 1 tablet(s), 1 time(s), daily, with meal +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Hydrolyzed Collagen +

+

+ 2 scoop(s), 1 time(s), daily +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Vitamin B19 1000mg +

+

+ 1 pill, 2 time(s), weekly, in the morning +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Vitamin D 100.000 IU +

+

+ 1 capsule, 1 time(s), trimonthly, with main meal +

+
+
+ +
+
+
+
+
+
+
+
+

+ UPCOMING APPOINTMENTS +

+
+
+ + View all + + + arrow_forward + +
+
+ + + +
+
+ +
+

+ Internal Medicine +

+

+ Tuesday, January 24, 2023 - 2:30pm - Dr. M. Matthews +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Dermatology +

+

+ Friday, February 24, 2023 - 08:45am - Dr. V. Sawyer +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Gynaecology +

+

+ Monday, March 6, 2023 - 6:30pm - Dr. J. Dean +

+
+
+ +
+
+
+
+
+
+
diff --git a/src/app/home/home.component.scss b/src/app/home/home.component.scss new file mode 100644 index 00000000..8db85504 --- /dev/null +++ b/src/app/home/home.component.scss @@ -0,0 +1,264 @@ +:host { + height: 100%; + display: flex; + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; +} +.column-layout { + display: flex; + flex-direction: column; +} +.group { + background-color: rgba(256, 256, 256, 0.6); + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 40px; + overflow: auto; + position: relative; + padding: 32px; + min-width: 50px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.row-layout { + display: flex; +} +.group_1 { + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 20px; + position: relative; + min-width: 50px; + min-height: 50px; + flex-shrink: 0; +} +.group_2 { + background-color: #DFA8BB; + background-image: url("/assets/kpi-hrate.svg"); + background-size: cover; + background-repeat: no-repeat; + border-radius: 13px; + justify-content: center; + align-items: stretch; + align-content: flex-start; + gap: 4px; + position: relative; + padding: 20px; + min-width: 280px; + flex-grow: 1; + flex-basis: 0; +} +.group_3 { + justify-content: space-between; + align-items: baseline; + align-content: flex-start; + position: relative; +} +.group_4 { + justify-content: flex-start; + align-items: baseline; + align-content: flex-start; + gap: 4px; + position: relative; + min-width: 50px; +} +.group_5 { + background-color: #C8AFCF; + background-image: url("/assets/kpi-bp.svg"); + background-size: cover; + background-repeat: no-repeat; + border-radius: 13px; + justify-content: center; + align-items: stretch; + align-content: flex-start; + gap: 4px; + position: relative; + padding: 20px; + min-width: 280px; + flex-grow: 1; + flex-basis: 0; +} +.group_6 { + background-color: #FFBE88; + background-image: url("/assets/kpi-cholesterol.svg"); + background-size: cover; + background-repeat: no-repeat; + border-radius: 13px; + justify-content: center; + align-items: stretch; + align-content: flex-start; + gap: 4px; + position: relative; + padding: 20px; + min-width: 280px; + flex-grow: 1; + flex-basis: 0; +} +.group_7 { + background-color: #70C3A1; + background-image: url("/assets/kpi-weight.svg"); + background-size: cover; + background-repeat: no-repeat; + border-radius: 13px; + justify-content: center; + align-items: stretch; + align-content: flex-start; + gap: 4px; + position: relative; + padding: 20px; + min-width: 280px; + flex-grow: 1; + flex-basis: 0; +} +.group_8 { + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: stretch; + gap: 40px; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group_9 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 16px; + position: relative; + min-width: 360px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.group_10 { + justify-content: space-between; + align-items: center; + align-content: flex-start; + gap: 8px; + position: relative; + min-width: 50px; +} +.group_11 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 8px; + position: relative; + min-width: 50px; +} +.group_12 { + border-color: #CDE0C9; + border-width: 0px 0px 1px; + border-style: solid; + justify-content: space-between; + align-items: center; + align-content: flex-start; + position: relative; + padding: 0 0 16px; + min-width: 50px; + min-height: 50px; +} +.group_13 { + justify-content: flex-start; + align-items: center; + align-content: flex-start; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group_14 { + justify-content: center; + align-items: stretch; + align-content: flex-start; + position: relative; + padding: 0 0 0 24px; + min-width: 50px; + min-height: 50px; +} +.image { + object-fit: cover; + width: 28px; + height: 24px; + min-width: 0; + min-height: 0; + max-width: 28px; + max-height: 24px; + flex-shrink: 0; +} +.content { + color: white; + height: max-content; + min-width: min-content; +} +.image_1 { + object-fit: cover; + width: 24px; + height: 28px; + min-width: 0; + min-height: 0; + max-width: 24px; + max-height: 28px; + flex-shrink: 0; +} +.image_2 { + object-fit: cover; + width: 24px; + height: 24px; + min-width: 0; + min-height: 0; + max-width: 24px; + max-height: 24px; + flex-shrink: 0; +} +.text { + color: hsla(var(--ig-info-500)); + margin: 0 8px 0 0; + height: max-content; + min-width: min-content; +} +.hyperlink { + color: hsla(var(--ig-primary-900)); + height: max-content; + min-width: min-content; + flex-shrink: 0; +} +.icon { + --size: 18px; + font-size: 18px; + width: 18px; + height: 18px; + color: hsla(var(--ig-primary-800)); +} +.image_3 { + object-fit: cover; + height: 26px; + min-width: 0; + min-height: 0; + max-height: 26px; + flex-shrink: 0; +} +.text_1 { + color: hsla(var(--ig-secondary-500)); + height: max-content; + min-width: min-content; +} +.image_4 { + object-fit: cover; + height: 28px; + min-width: 0; + min-height: 0; + max-height: 28px; + flex-shrink: 0; +} +.list { + height: max-content; +} +.button { + --igx-button-foreground: hsla(var(--ig-primary-800)); +} diff --git a/src/app/home/home.component.spec.ts b/src/app/home/home.component.spec.ts new file mode 100644 index 00000000..2b952b03 --- /dev/null +++ b/src/app/home/home.component.spec.ts @@ -0,0 +1,29 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormsModule } from '@angular/forms'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; + +import { IgxIconModule, IgxListModule, IgxButtonModule, IgxRippleModule } from 'igniteui-angular'; +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ HomeComponent ], + imports: [ NoopAnimationsModule, FormsModule, IgxIconModule, IgxListModule, IgxButtonModule, IgxRippleModule ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts new file mode 100644 index 00000000..9f4f9320 --- /dev/null +++ b/src/app/home/home.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.scss'] +}) +export class HomeComponent {} diff --git a/src/app/medications/medications.component.html b/src/app/medications/medications.component.html new file mode 100644 index 00000000..cad177b0 --- /dev/null +++ b/src/app/medications/medications.component.html @@ -0,0 +1,260 @@ +
+
+
+
+
+

+ CURRENT MEDICATIONS +

+
+
+ + + +
+
+ +
+

+ Calcium 500mg +

+

+ 1 tablet(s), 1 time(s), daily, with meal +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Hydrolyzed Collagen +

+

+ 2 scoop(s), 1 time(s), daily +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Vitamin B19 1000mg +

+

+ 1 pill, 2 time(s), weekly, in the morning +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Vitamin D 100.000 IU +

+

+ 1 capsule, 1 time(s), trimonthly, with main meal +

+
+
+ +
+
+
+
+
+
+
+
+

+ EXPIRED PRESCRIPTIONS +

+
+
+ + + +
+
+ +
+

+ Hypersol B Nasal Spray +

+

+ 1 spray, 3 time(s) / day, each nostril, for 7 days +

+
+
+ +
+
+
+ + +
+
+ +
+

+ Prednisone 20mg +

+

+ 1 tablet, 2 time(s) / day, with food, for 7 days +

+
+
+ +
+
+
+
+
+
+
+
+
+
+ Calcium 500mg +
+
+
+

+ DOSAGE +

+
+
+

+ 1 +

+
+
+

+ tablet +

+
+
+
+
+

+ FREQUENCY +

+
+
+

+ 1 time(s) +

+
+
+

+ daily +

+
+
+
+
+
+

+ INDICATIONS +

+

+ Take by mouth with breakfast. +

+

+ Gador Calcium 500 mg Tablets are Calcium supplements formulated to help support bone strength. Sourced from high quality ingredients, these gluten free Nature Made Calcium 500 mg contain no color added and no artificial flavors. This gluten free Calcium supplement is perfect for adults who are low in Calcium or want an additional dietary supplement with their diet. Adults, take one of these Calcium tablet bone supplements 1 to 2 times daily with water and a meal. +

+ + + View more information + +
+
+

+ PRESCRIPTION INFO +

+
+
+

+ Refills Left: +

+

+ 4 +

+
+
+

+ Last Refill: +

+

+ 1/10/2023 +

+
+
+

+ Prescribed by: +

+

+ Dr. Robert Stevens +

+
+
+
+
+ + +
+
+
diff --git a/src/app/medications/medications.component.scss b/src/app/medications/medications.component.scss new file mode 100644 index 00000000..6be1731d --- /dev/null +++ b/src/app/medications/medications.component.scss @@ -0,0 +1,238 @@ +:host { + height: 100%; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: stretch; +} +.row-layout { + display: flex; +} +.group { + background-color: rgba(256, 256, 256, 0.6); + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: stretch; + gap: 24px; + position: relative; + padding: 32px; + min-width: 360px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.column-layout { + display: flex; + flex-direction: column; +} +.group_1 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 32px; + position: relative; + min-width: 360px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.group_2 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 16px; + position: relative; + min-width: 360px; + min-height: 50px; + flex-shrink: 0; +} +.group_3 { + justify-content: space-between; + align-items: center; + align-content: flex-start; + gap: 8px; + position: relative; + min-width: 50px; +} +.group_4 { + justify-content: flex-start; + align-items: baseline; + align-content: flex-start; + gap: 4px; + position: relative; + min-width: 50px; +} +.group_5 { + border-color: #CDE0C9; + border-width: 0px 0px 1px; + border-style: solid; + justify-content: space-between; + align-items: center; + align-content: flex-start; + position: relative; + padding: 0 0 16px; + min-width: 50px; + min-height: 50px; +} +.group_6 { + justify-content: flex-start; + align-items: center; + align-content: flex-start; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group_7 { + justify-content: center; + align-items: stretch; + align-content: flex-start; + position: relative; + padding: 0 0 0 24px; + min-width: 50px; + min-height: 50px; +} +.group_8 { + background-color: rgba(256, 256, 256, 0.6); + border-color: #CDE0C9; + border-width: 0px 0px 0px 1px; + border-style: solid; + flex-wrap: wrap; + justify-content: flex-start; + align-items: stretch; + align-content: stretch; + gap: 24px; + position: relative; + padding: 32px; + min-width: 360px; + min-height: 50px; + flex-grow: 1; + flex-basis: 0; +} +.group_9 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 32px; + position: relative; + width: 657px; + min-width: 360px; + min-height: 50px; + max-width: 657px; +} +.group_10 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 8px; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group_11 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 4px; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group_12 { + background-color: #F0F6EF; + justify-content: center; + align-items: center; + align-content: flex-start; + position: relative; + padding: 0 8px; + min-width: 50px; + min-height: 50px; +} +.group_13 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + gap: 16px; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group_14 { + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; + position: relative; + min-width: 50px; + min-height: 50px; +} +.group_15 { + justify-content: flex-start; + align-items: baseline; + align-content: flex-start; + gap: 8px; + position: relative; + min-width: 50px; +} +.group_16 { + justify-content: flex-end; + align-items: stretch; + align-content: flex-start; + gap: 16px; + position: relative; + min-width: 50px; +} +.text { + color: hsla(var(--ig-info-500)); + margin: 0 8px 0 0; + height: max-content; + min-width: min-content; +} +.image { + object-fit: cover; + height: 26px; + min-width: 0; + min-height: 0; + max-height: 26px; + flex-shrink: 0; +} +.content { + color: hsla(var(--ig-secondary-500)); + height: max-content; + min-width: min-content; +} +.text_1 { + color: hsla(var(--ig-secondary-400)); + height: max-content; + min-width: min-content; +} +.text_2 { + color: hsla(var(--ig-info-500)); + height: max-content; + min-width: min-content; +} +.hyperlink { + color: hsla(var(--ig-primary-900)); + height: max-content; + min-width: min-content; +} +.text_3 { + color: hsla(var(--ig-secondary-400)); + height: max-content; + min-width: 120px; +} +.list { + height: max-content; +} +.button { + --igx-button-foreground: hsla(var(--ig-primary-800)); +} +.button_1 { + height: max-content; + flex-shrink: 0; +} +.button_2 { + --igx-button-background: hsla(var(--ig-primary-500)); + height: max-content; + flex-shrink: 0; +} diff --git a/src/app/medications/medications.component.spec.ts b/src/app/medications/medications.component.spec.ts new file mode 100644 index 00000000..b9fa02e1 --- /dev/null +++ b/src/app/medications/medications.component.spec.ts @@ -0,0 +1,29 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormsModule } from '@angular/forms'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; + +import { IgxListModule, IgxButtonModule, IgxRippleModule, IgxIconModule } from 'igniteui-angular'; +import { MedicationsComponent } from './medications.component'; + +describe('MedicationsComponent', () => { + let component: MedicationsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MedicationsComponent ], + imports: [ NoopAnimationsModule, FormsModule, IgxListModule, IgxButtonModule, IgxRippleModule, IgxIconModule ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MedicationsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/medications/medications.component.ts b/src/app/medications/medications.component.ts new file mode 100644 index 00000000..fdff3188 --- /dev/null +++ b/src/app/medications/medications.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-medications', + templateUrl: './medications.component.html', + styleUrls: ['./medications.component.scss'] +}) +export class MedicationsComponent {} diff --git a/src/app/models/patient-dashboard/bpsystolic-diastolic-type.ts b/src/app/models/patient-dashboard/bpsystolic-diastolic-type.ts new file mode 100644 index 00000000..4890a8e1 --- /dev/null +++ b/src/app/models/patient-dashboard/bpsystolic-diastolic-type.ts @@ -0,0 +1,5 @@ +export interface BPSystolicDiastolicType { + Month: string; + Systolic: number; + Diastolic: number; +} diff --git a/src/app/models/patient-dashboard/cholesterol-hdlldltype.ts b/src/app/models/patient-dashboard/cholesterol-hdlldltype.ts new file mode 100644 index 00000000..b5d890c1 --- /dev/null +++ b/src/app/models/patient-dashboard/cholesterol-hdlldltype.ts @@ -0,0 +1,5 @@ +export interface CholesterolHDLLDLType { + Month: string; + HDL: number; + LDL: number; +} diff --git a/src/app/models/patient-dashboard/glucose-type.ts b/src/app/models/patient-dashboard/glucose-type.ts new file mode 100644 index 00000000..27d4c0ea --- /dev/null +++ b/src/app/models/patient-dashboard/glucose-type.ts @@ -0,0 +1,4 @@ +export interface GlucoseType { + Month: string; + Glucose: number; +} diff --git a/src/app/models/patient-dashboard/heart-rate-type.ts b/src/app/models/patient-dashboard/heart-rate-type.ts new file mode 100644 index 00000000..62e5a109 --- /dev/null +++ b/src/app/models/patient-dashboard/heart-rate-type.ts @@ -0,0 +1,4 @@ +export interface HeartRateType { + Month: string; + HeartRate: number; +} diff --git a/src/app/models/patient-dashboard/total-cholesterol-type.ts b/src/app/models/patient-dashboard/total-cholesterol-type.ts new file mode 100644 index 00000000..1f3a2297 --- /dev/null +++ b/src/app/models/patient-dashboard/total-cholesterol-type.ts @@ -0,0 +1,4 @@ +export interface TotalCholesterolType { + Month: string; + Cholesterol: number; +} diff --git a/src/app/models/patient-dashboard/weight-type.ts b/src/app/models/patient-dashboard/weight-type.ts new file mode 100644 index 00000000..18bd22c0 --- /dev/null +++ b/src/app/models/patient-dashboard/weight-type.ts @@ -0,0 +1,4 @@ +export interface WeightType { + Month: string; + Weight: number; +} diff --git a/src/app/profile/profile.component.html b/src/app/profile/profile.component.html new file mode 100644 index 00000000..451f6e42 --- /dev/null +++ b/src/app/profile/profile.component.html @@ -0,0 +1,9 @@ +
+ +
+ Start building! +
+

+ Remove the "demo-content" container, and add your own content. +

+
diff --git a/src/app/profile/profile.component.scss b/src/app/profile/profile.component.scss new file mode 100644 index 00000000..c6488c43 --- /dev/null +++ b/src/app/profile/profile.component.scss @@ -0,0 +1,49 @@ +:host { + height: 100%; + display: flex; + justify-content: flex-start; + align-items: stretch; + align-content: flex-start; +} +.column-layout { + display: flex; + flex-direction: column; +} +.demo-content { + background-color: transparent; + border-color: hsla(var(--ig-gray-400)); + border-width: 2px; + border-style: dashed; + justify-content: center; + align-items: center; + align-content: flex-start; + left: 50%; + transform: translate(-50%, -50%); + top: 50%; + position: absolute; + padding: 64px; + min-width: 50px; + min-height: 50px; +} +.image { + object-fit: cover; + margin: 0 0 24px; + min-width: 0; + min-height: 0; + max-width: 280px; + flex-shrink: 0; +} +.h5 { + color: hsla(var(--ig-info-500)); + margin: 0 0 16px; + height: max-content; + min-width: min-content; +} +.text { + text-align: center; + color: hsla(var(--ig-gray-700)); + margin: 0 0 24px; + height: max-content; + min-width: min-content; + max-width: 320px; +} diff --git a/src/app/profile/profile.component.spec.ts b/src/app/profile/profile.component.spec.ts new file mode 100644 index 00000000..7d6e5450 --- /dev/null +++ b/src/app/profile/profile.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProfileComponent } from './profile.component'; + +describe('ProfileComponent', () => { + let component: ProfileComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ProfileComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ProfileComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/profile/profile.component.ts b/src/app/profile/profile.component.ts new file mode 100644 index 00000000..2f2c8c68 --- /dev/null +++ b/src/app/profile/profile.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-profile', + templateUrl: './profile.component.html', + styleUrls: ['./profile.component.scss'] +}) +export class ProfileComponent {} diff --git a/src/app/services/patient-dashboard.service.spec.ts b/src/app/services/patient-dashboard.service.spec.ts new file mode 100644 index 00000000..855029d8 --- /dev/null +++ b/src/app/services/patient-dashboard.service.spec.ts @@ -0,0 +1,18 @@ +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { TestBed } from '@angular/core/testing'; +import { PatientDashboardService } from './patient-dashboard.service'; + +describe('PatientDashboardService', () => { + let service: PatientDashboardService; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule] + }); + service = TestBed.inject(PatientDashboardService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/patient-dashboard.service.ts b/src/app/services/patient-dashboard.service.ts new file mode 100644 index 00000000..f6ac5d91 --- /dev/null +++ b/src/app/services/patient-dashboard.service.ts @@ -0,0 +1,42 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { BPSystolicDiastolicType } from '../models/patient-dashboard/bpsystolic-diastolic-type'; +import { CholesterolHDLLDLType } from '../models/patient-dashboard/cholesterol-hdlldltype'; +import { GlucoseType } from '../models/patient-dashboard/glucose-type'; +import { HeartRateType } from '../models/patient-dashboard/heart-rate-type'; +import { TotalCholesterolType } from '../models/patient-dashboard/total-cholesterol-type'; +import { WeightType } from '../models/patient-dashboard/weight-type'; + +@Injectable({ + providedIn: 'root' +}) +export class PatientDashboardService { + constructor( + private http: HttpClient + ) { } + + public getWeightList(): Observable { + return this.http.get("https://excel2json.io/api/share/b8fb8833-7e2c-4a84-e611-08daf8ae6744"); + } + + public getHeartRateList(): Observable { + return this.http.get("https://excel2json.io/api/share/43cfd6ae-a6db-42b5-e610-08daf8ae6744"); + } + + public getBPSystolicDiastolicList(): Observable { + return this.http.get("https://excel2json.io/api/share/16761321-7913-4d05-e616-08daf8ae6744"); + } + + public getGlucoseList(): Observable { + return this.http.get("https://excel2json.io/api/share/e1b52986-0c42-4ee1-e617-08daf8ae6744"); + } + + public getTotalCholesterolList(): Observable { + return this.http.get("https://excel2json.io/api/share/2f36bf07-125a-4301-e612-08daf8ae6744"); + } + + public getCholesterolHDLLDLList(): Observable { + return this.http.get("https://excel2json.io/api/share/a1863711-3edb-42ae-e613-08daf8ae6744"); + } +} diff --git a/src/assets/Avatar13.png b/src/assets/Avatar13.png new file mode 100644 index 00000000..647ea796 Binary files /dev/null and b/src/assets/Avatar13.png differ diff --git a/src/assets/Avatar4.png b/src/assets/Avatar4.png new file mode 100644 index 00000000..eea20ffe Binary files /dev/null and b/src/assets/Avatar4.png differ diff --git a/src/assets/BPressure-White.svg b/src/assets/BPressure-White.svg new file mode 100644 index 00000000..9205f026 --- /dev/null +++ b/src/assets/BPressure-White.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/BPressure_Color.svg b/src/assets/BPressure_Color.svg new file mode 100644 index 00000000..677c0666 --- /dev/null +++ b/src/assets/BPressure_Color.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/Cholesterol-White.svg b/src/assets/Cholesterol-White.svg new file mode 100644 index 00000000..2e49d835 --- /dev/null +++ b/src/assets/Cholesterol-White.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/Cholesterol_Color.svg b/src/assets/Cholesterol_Color.svg new file mode 100644 index 00000000..799df182 --- /dev/null +++ b/src/assets/Cholesterol_Color.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/HRate-White.svg b/src/assets/HRate-White.svg new file mode 100644 index 00000000..bd2a8ed4 --- /dev/null +++ b/src/assets/HRate-White.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/HRate_Color.svg b/src/assets/HRate_Color.svg new file mode 100644 index 00000000..6d53af0e --- /dev/null +++ b/src/assets/HRate_Color.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/Med2.svg b/src/assets/Med2.svg new file mode 100644 index 00000000..5e8646b4 --- /dev/null +++ b/src/assets/Med2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/Scale-White.svg b/src/assets/Scale-White.svg new file mode 100644 index 00000000..4dc250a8 --- /dev/null +++ b/src/assets/Scale-White.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/Scale_Color.svg b/src/assets/Scale_Color.svg new file mode 100644 index 00000000..ab2fe1c4 --- /dev/null +++ b/src/assets/Scale_Color.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/appt-past.svg b/src/assets/appt-past.svg new file mode 100644 index 00000000..239cd170 --- /dev/null +++ b/src/assets/appt-past.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/appt-upcoming.svg b/src/assets/appt-upcoming.svg new file mode 100644 index 00000000..538ac21b --- /dev/null +++ b/src/assets/appt-upcoming.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/blood-sugar.svg b/src/assets/blood-sugar.svg new file mode 100644 index 00000000..7a3cae37 --- /dev/null +++ b/src/assets/blood-sugar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/kpi-bp.svg b/src/assets/kpi-bp.svg new file mode 100644 index 00000000..c71b109e --- /dev/null +++ b/src/assets/kpi-bp.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/kpi-cholesterol.svg b/src/assets/kpi-cholesterol.svg new file mode 100644 index 00000000..3cc997f9 --- /dev/null +++ b/src/assets/kpi-cholesterol.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/kpi-hrate.svg b/src/assets/kpi-hrate.svg new file mode 100644 index 00000000..8c18bd10 --- /dev/null +++ b/src/assets/kpi-hrate.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/kpi-weight.svg b/src/assets/kpi-weight.svg new file mode 100644 index 00000000..dc2a6e0e --- /dev/null +++ b/src/assets/kpi-weight.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/logo2.svg b/src/assets/logo2.svg new file mode 100644 index 00000000..24b7577a --- /dev/null +++ b/src/assets/logo2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/meds-expired.svg b/src/assets/meds-expired.svg new file mode 100644 index 00000000..76559d90 --- /dev/null +++ b/src/assets/meds-expired.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/start-building.svg b/src/assets/start-building.svg new file mode 100644 index 00000000..c418b8d8 --- /dev/null +++ b/src/assets/start-building.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts new file mode 100644 index 00000000..3612073b --- /dev/null +++ b/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/src/environments/environment.ts b/src/environments/environment.ts new file mode 100644 index 00000000..7b4f817a --- /dev/null +++ b/src/environments/environment.ts @@ -0,0 +1,16 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/src/favicon.ico b/src/favicon.ico new file mode 100644 index 00000000..1cceb832 Binary files /dev/null and b/src/favicon.ico differ diff --git a/src/index.html b/src/index.html new file mode 100644 index 00000000..8abbb6a9 --- /dev/null +++ b/src/index.html @@ -0,0 +1,18 @@ + + + + + Health Vault + + + + + + + + + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 00000000..c7b673cf --- /dev/null +++ b/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/src/polyfills.ts b/src/polyfills.ts new file mode 100644 index 00000000..66c7d53c --- /dev/null +++ b/src/polyfills.ts @@ -0,0 +1,53 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes recent versions of Safari, Chrome (including + * Opera), Edge on the desktop, and iOS and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ + import 'zone.js'; // Included with Angular CLI. + + + /*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/src/styles.scss b/src/styles.scss new file mode 100644 index 00000000..b3744507 --- /dev/null +++ b/src/styles.scss @@ -0,0 +1,37 @@ +/* You can add global styles to this file, and also import other style files */ + +// Standard CSS normalize, comment out if not required or using a different module +@use "minireset.css/minireset"; +@use "igniteui-angular/theming" as *; + +@include core(); +@include typography($font-family: "Montserrat"); + +$custom-palette: palette( + $primary: #56C596, + $secondary: #205072, + $surface: #fff, + $error: #CC333F, + $success: #97c556, + $warn: #eb8541, + $info: #329D9C); +@include theme($palette: $custom-palette, $elevation: false); + +body { + background: hsla(var(--ig-surface-500)); + color: var(--ig-surface-500-contrast); +} + +html, body { + height: 100%; +} + +.ig-typography { + h1, h2, h3, h4, h5, h6, p, .ig-typography__body-1 { + margin: 0; + } +} + +.outer-wrapper > *:not(router-outlet) { + width: 100%; +} diff --git a/src/test.ts b/src/test.ts new file mode 100644 index 00000000..a992867f --- /dev/null +++ b/src/test.ts @@ -0,0 +1,16 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting(), { + teardown: { destroyAfterEach: false } + } +); diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 00000000..82d91dc4 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,15 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..c264a70d --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,29 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "useDefineForClassFields": false, + "lib": [ + "ES2022", + "dom" + ] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/tsconfig.spec.json b/tsconfig.spec.json new file mode 100644 index 00000000..092345b0 --- /dev/null +++ b/tsconfig.spec.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +}