feat(tools): remove eslint-plugin-prettier for prettier (#42438)
* feat: remove eslint-plugin-prettier for prettier This removes the annoying lint warnings when all that needs to change is formatting * fix: use .js lint-staged config to ignore properly * fix: lint everything if a lot of files are changed It's faster than making lots of individual linter calls * chore: apply prettier * fix: ignore code in curriculum-file-structure
This commit is contained in:
committed by
GitHub
parent
8518079316
commit
c8d7f0a782
@ -131,7 +131,6 @@
|
|||||||
"operator-assignment": 0,
|
"operator-assignment": 0,
|
||||||
"padded-blocks": 0,
|
"padded-blocks": 0,
|
||||||
"prefer-object-spread/prefer-object-spread": 2,
|
"prefer-object-spread/prefer-object-spread": 2,
|
||||||
"prettier/prettier": "error",
|
|
||||||
"quote-props": [2, "as-needed"],
|
"quote-props": [2, "as-needed"],
|
||||||
"quotes": [2, "single", "avoid-escape"],
|
"quotes": [2, "single", "avoid-escape"],
|
||||||
"radix": 2,
|
"radix": 2,
|
||||||
|
@ -10,15 +10,14 @@
|
|||||||
"root": true,
|
"root": true,
|
||||||
"extends": [
|
"extends": [
|
||||||
"./.eslintrc-base.json",
|
"./.eslintrc-base.json",
|
||||||
"plugin:prettier/recommended",
|
|
||||||
"plugin:import/typescript",
|
"plugin:import/typescript",
|
||||||
"plugin:jsx-a11y/recommended"
|
"plugin:jsx-a11y/recommended",
|
||||||
|
"prettier"
|
||||||
],
|
],
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"react",
|
"react",
|
||||||
"import",
|
"import",
|
||||||
"prefer-object-spread",
|
"prefer-object-spread",
|
||||||
"prettier",
|
|
||||||
"react-hooks",
|
"react-hooks",
|
||||||
"jsx-a11y",
|
"jsx-a11y",
|
||||||
"jest-dom",
|
"jest-dom",
|
||||||
@ -58,7 +57,10 @@
|
|||||||
"plugins": ["@typescript-eslint"]
|
"plugins": ["@typescript-eslint"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"files": ["./tools/ui-components/**/*.test.[jt]s?(x)", "./client/**/*.test.[jt]s?(x)"],
|
"files": [
|
||||||
|
"./tools/ui-components/**/*.test.[jt]s?(x)",
|
||||||
|
"./client/**/*.test.[jt]s?(x)"
|
||||||
|
],
|
||||||
"extends": ["plugin:testing-library/react", "plugin:jest-dom/recommended"]
|
"extends": ["plugin:testing-library/react", "plugin:jest-dom/recommended"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
12
.github/labeler.yml
vendored
12
.github/labeler.yml
vendored
@ -1,22 +1,22 @@
|
|||||||
"scope: docs":
|
'scope: docs':
|
||||||
- docs/**/*
|
- docs/**/*
|
||||||
|
|
||||||
"scope: curriculum":
|
'scope: curriculum':
|
||||||
- curriculum/challenges/**/*
|
- curriculum/challenges/**/*
|
||||||
|
|
||||||
"platform: client":
|
'platform: client':
|
||||||
- client/**/*
|
- client/**/*
|
||||||
|
|
||||||
"platform: api":
|
'platform: api':
|
||||||
- api-server/**/*
|
- api-server/**/*
|
||||||
|
|
||||||
"scope: tools/scripts":
|
'scope: tools/scripts':
|
||||||
- cypress/**/*
|
- cypress/**/*
|
||||||
- tools/**/*
|
- tools/**/*
|
||||||
- .github/**/*
|
- .github/**/*
|
||||||
- utils/**/*
|
- utils/**/*
|
||||||
|
|
||||||
"scope: i18n":
|
'scope: i18n':
|
||||||
- any: ['curriculum/challenges/**/*', '!curriculum/challenges/english/**/*']
|
- any: ['curriculum/challenges/**/*', '!curriculum/challenges/english/**/*']
|
||||||
- docs/i18n/**/*
|
- docs/i18n/**/*
|
||||||
- client/i18n/**/*
|
- client/i18n/**/*
|
||||||
|
4
.github/workflows/autoclose.yml
vendored
4
.github/workflows/autoclose.yml
vendored
@ -2,9 +2,9 @@ name: Autoclose
|
|||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
branches:
|
branches:
|
||||||
- "main"
|
- 'main'
|
||||||
paths:
|
paths:
|
||||||
- ".gitignore"
|
- '.gitignore'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
autoclose:
|
autoclose:
|
||||||
|
4
.github/workflows/codeql-analysis.yml
vendored
4
.github/workflows/codeql-analysis.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: "CodeQL"
|
name: 'CodeQL'
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@ -14,7 +14,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
language: ["javascript"]
|
language: ['javascript']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -3,7 +3,7 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
# runs everyday at 11:15 AM UTC
|
# runs everyday at 11:15 AM UTC
|
||||||
- cron: "15 11 * * *"
|
- cron: '15 11 * * *'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
i18n-upload-client-ui-files:
|
i18n-upload-client-ui-files:
|
||||||
|
@ -56,7 +56,6 @@ jobs:
|
|||||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID_CURRICULUM }}
|
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID_CURRICULUM }}
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_SERVICE_TOKEN }}
|
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_SERVICE_TOKEN }}
|
||||||
|
|
||||||
|
|
||||||
# Convert Simplified Chinese to Traditional #
|
# Convert Simplified Chinese to Traditional #
|
||||||
- name: Generate Translations
|
- name: Generate Translations
|
||||||
uses: ./tools/crowdin/actions/convert-chinese
|
uses: ./tools/crowdin/actions/convert-chinese
|
||||||
|
@ -3,7 +3,7 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
# runs everyday at 11:30 AM UTC
|
# runs everyday at 11:30 AM UTC
|
||||||
- cron: "30 11 * * *"
|
- cron: '30 11 * * *'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
i18n-upload-curriculum-files:
|
i18n-upload-curriculum-files:
|
||||||
|
@ -3,7 +3,7 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
# runs everyday at 11:00 AM UTC
|
# runs everyday at 11:00 AM UTC
|
||||||
- cron: "0 11 * * *"
|
- cron: '0 11 * * *'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
i18n-upload-docs-files:
|
i18n-upload-docs-files:
|
||||||
|
1
.github/workflows/cypress.yml
vendored
1
.github/workflows/cypress.yml
vendored
@ -53,7 +53,6 @@ jobs:
|
|||||||
name: webpack-stats
|
name: webpack-stats
|
||||||
path: client/public/stats.json
|
path: client/public/stats.json
|
||||||
|
|
||||||
|
|
||||||
cypress-run:
|
cypress-run:
|
||||||
name: Test
|
name: Test
|
||||||
runs-on: ubuntu-18.04
|
runs-on: ubuntu-18.04
|
||||||
|
12
.github/workflows/labeler.yaml
vendored
12
.github/workflows/labeler.yaml
vendored
@ -1,12 +1,12 @@
|
|||||||
name: "Pull Request Labeler"
|
name: 'Pull Request Labeler'
|
||||||
on:
|
on:
|
||||||
- pull_request_target
|
- pull_request_target
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
triage:
|
triage:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/labeler@v3
|
- uses: actions/labeler@v3
|
||||||
with:
|
with:
|
||||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
repo-token: '${{ secrets.GITHUB_TOKEN }}'
|
||||||
sync-labels: true
|
sync-labels: true
|
||||||
|
28
.lintstagedrc.js
Normal file
28
.lintstagedrc.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
const { ESLint } = require('eslint');
|
||||||
|
|
||||||
|
const cli = new ESLint();
|
||||||
|
|
||||||
|
// if a lot of files are changed, it's faster to run prettier/eslint on the
|
||||||
|
// whole project than to run them on each file separately
|
||||||
|
module.exports = {
|
||||||
|
'*.(js|ts|tsx)': files =>
|
||||||
|
files.length > 10
|
||||||
|
? ['eslint --max-warnings=0 --cache --fix .', 'prettier --write .']
|
||||||
|
: [
|
||||||
|
'eslint --max-warnings=0 --cache --fix ' +
|
||||||
|
files.filter(file => !cli.isPathIgnored(file)).join(' '),
|
||||||
|
...files.map(filename => `prettier --write '${filename}'`)
|
||||||
|
],
|
||||||
|
'*.!(js|ts|tsx)': files =>
|
||||||
|
files.length > 10
|
||||||
|
? 'prettier --write .'
|
||||||
|
: files.map(
|
||||||
|
filename => `prettier --write --ignore-unknown '${filename}'`
|
||||||
|
),
|
||||||
|
'./curriculum/challenges/**/*.md': files =>
|
||||||
|
files.length > 10
|
||||||
|
? 'npm run lint:challenges'
|
||||||
|
: files.map(
|
||||||
|
filename => `node ./tools/scripts/lint/index.js '${filename}'`
|
||||||
|
)
|
||||||
|
};
|
@ -1,6 +1,9 @@
|
|||||||
**/.cache
|
**/.cache
|
||||||
**/public
|
**/public
|
||||||
client/static
|
client/static
|
||||||
fixtures
|
**/*fixtures*
|
||||||
curriculum/challenges/_meta/*/*
|
curriculum/challenges/_meta/*/*
|
||||||
curriculum/challenges/**/*
|
curriculum/challenges/**/*
|
||||||
|
config/**/*.json
|
||||||
|
client/i18n/**/*.json
|
||||||
|
docs/i18n
|
||||||
|
@ -1,2 +1 @@
|
|||||||
|
|
||||||
> Our Code of Conduct is available here: <https://www.freecodecamp.org/code-of-conduct/>
|
> Our Code of Conduct is available here: <https://www.freecodecamp.org/code-of-conduct/>
|
||||||
|
2
HoF.md
2
HoF.md
@ -4,4 +4,4 @@ We appreciate any responsible disclosure of vulnerabilities that might impact th
|
|||||||
|
|
||||||
- Mehul Mohan from [codedamn](https://codedamn.com) ([@mehulmpt](https://twitter.com/mehulmpt)) - [Vulnerability Fix](https://github.com/freeCodeCamp/freeCodeCamp/blob/bb5a9e815313f1f7c91338e171bfe5acb8f3e346/client/src/components/Flash/index.js)
|
- Mehul Mohan from [codedamn](https://codedamn.com) ([@mehulmpt](https://twitter.com/mehulmpt)) - [Vulnerability Fix](https://github.com/freeCodeCamp/freeCodeCamp/blob/bb5a9e815313f1f7c91338e171bfe5acb8f3e346/client/src/components/Flash/index.js)
|
||||||
- Peter Samir https://www.linkedin.com/in/peter-samir/
|
- Peter Samir https://www.linkedin.com/in/peter-samir/
|
||||||
> ### Thank you for your contributions :pray:
|
> ### Thank you for your contributions :pray:
|
||||||
|
@ -6,14 +6,14 @@ All rights reserved.
|
|||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
- Redistributions of source code must retain the above copyright notice, this
|
||||||
list of conditions and the following disclaimer.
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice,
|
- Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions and the following disclaimer in the documentation
|
this list of conditions and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
* Neither the name of the copyright holder nor the names of its
|
- Neither the name of the copyright holder nor the names of its
|
||||||
contributors may be used to endorse or promote products derived from
|
contributors may be used to endorse or promote products derived from
|
||||||
this software without specific prior written permission.
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
@ -2,9 +2,11 @@
|
|||||||
"presets": [
|
"presets": [
|
||||||
[
|
[
|
||||||
"@babel/preset-env",
|
"@babel/preset-env",
|
||||||
{"targets": {
|
{
|
||||||
"node": 10
|
"targets": {
|
||||||
}}
|
"node": 10
|
||||||
|
}
|
||||||
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"plugins": [
|
"plugins": [
|
||||||
|
@ -1 +1,3 @@
|
|||||||
&{ @import "./app/index.less"; }
|
& {
|
||||||
|
@import './app/index.less';
|
||||||
|
}
|
||||||
|
@ -276,9 +276,7 @@
|
|||||||
"default": {}
|
"default": {}
|
||||||
},
|
},
|
||||||
"donationEmails": {
|
"donationEmails": {
|
||||||
"type": [
|
"type": ["string"]
|
||||||
"string"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"isDonating": {
|
"isDonating": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
|
@ -25,10 +25,6 @@
|
|||||||
"clean": "gatsby clean",
|
"clean": "gatsby clean",
|
||||||
"predevelop": "node ../tools/scripts/build/ensure-env.js && npm run build:workers -- --env development",
|
"predevelop": "node ../tools/scripts/build/ensure-env.js && npm run build:workers -- --env development",
|
||||||
"develop": "node --max_old_space_size=4000 node_modules/gatsby-cli develop --inspect=9230",
|
"develop": "node --max_old_space_size=4000 node_modules/gatsby-cli develop --inspect=9230",
|
||||||
"format": "npm run format:gatsby && npm run format:src && npm run format:utils",
|
|
||||||
"format:gatsby": "prettier-eslint --write --trailing-comma none --single-quote './gatsby-*.js'",
|
|
||||||
"format:src": "prettier-eslint --write --trailing-comma none --single-quote './src/**/*.js'",
|
|
||||||
"format:utils": "prettier-eslint --write --trailing-comma none --single-quote './utils/**/*.js'",
|
|
||||||
"lint": "node ./i18n/schema-validation.js",
|
"lint": "node ./i18n/schema-validation.js",
|
||||||
"serve": "gatsby serve -p 8000",
|
"serve": "gatsby serve -p 8000",
|
||||||
"serve-ci": "serve -l 8000 -c ../serve.json public",
|
"serve-ci": "serve -l 8000 -c ../serve.json public",
|
||||||
|
@ -3,15 +3,17 @@ title: Introduction to the Back End Development and APIs Projects
|
|||||||
block: Back End Development and APIs Projects
|
block: Back End Development and APIs Projects
|
||||||
superBlock: Back End Development and APIs
|
superBlock: Back End Development and APIs
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Back End Development and APIs Projects
|
## Introduction to the Back End Development and APIs Projects
|
||||||
|
|
||||||
Time to put your newly learnt skills to work! By working on projects you would have the opportunity of applying all the skills, principles and concepts you have learnt so far including npm packages, basic Node, basic Express, MongoDB, and Mongoose.
|
Time to put your newly learnt skills to work! By working on projects you would have the opportunity of applying all the skills, principles and concepts you have learnt so far including npm packages, basic Node, basic Express, MongoDB, and Mongoose.
|
||||||
|
|
||||||
In this section you get the chance to:
|
In this section you get the chance to:
|
||||||
* Build a Timestamp Microservice
|
|
||||||
* Build a Request Header Parser Microservice
|
- Build a Timestamp Microservice
|
||||||
* Build a URL Shortener Microservice
|
- Build a Request Header Parser Microservice
|
||||||
* Build a Exercise Tracker
|
- Build a URL Shortener Microservice
|
||||||
* Build a File Metadata Microservice
|
- Build a Exercise Tracker
|
||||||
|
- Build a File Metadata Microservice
|
||||||
|
|
||||||
By the end of this, you would have 5 microservices under your belt that you can show off to friends, family, employers, etc. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
By the end of this, you would have 5 microservices under your belt that you can show off to friends, family, employers, etc. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
title: Back End Development and APIs
|
title: Back End Development and APIs
|
||||||
superBlock: back-end-development-and-apis
|
superBlock: back-end-development-and-apis
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Back End Development and APIs
|
## Introduction to Back End Development and APIs
|
||||||
|
|
||||||
This is a stub introduction for Back End Development and APIs
|
This is a stub introduction for Back End Development and APIs
|
||||||
@ -19,7 +20,8 @@ A monolith typically has the three key components of any application - the UI, B
|
|||||||
To overcome some of the issues, one of the suggestions that was made early on was to functionally decompose an application, referred to as the Scale Cube in the book [The Art of Scalability](www.theartofscalability.com). This eventually led to the microservices pattern that we see now. A microservice takes a single bit of functionality and bundles all the layers of technology into it. This means that each microservice has its own UI, business logic and data store. To deliver a larger piece of functionality, microservices talk to one another through common communication methods like APIs or messages.
|
To overcome some of the issues, one of the suggestions that was made early on was to functionally decompose an application, referred to as the Scale Cube in the book [The Art of Scalability](www.theartofscalability.com). This eventually led to the microservices pattern that we see now. A microservice takes a single bit of functionality and bundles all the layers of technology into it. This means that each microservice has its own UI, business logic and data store. To deliver a larger piece of functionality, microservices talk to one another through common communication methods like APIs or messages.
|
||||||
|
|
||||||
## Key benefits
|
## Key benefits
|
||||||
1. Microservices can be developed and deployed independently of one another, thereby reducing the risk of one wrong piece of code bringing down an entire application
|
|
||||||
|
1. Microservices can be developed and deployed independently of one another, thereby reducing the risk of one wrong piece of code bringing down an entire application
|
||||||
2. Easier to isolate and find where issues lie, while debugging
|
2. Easier to isolate and find where issues lie, while debugging
|
||||||
3. Fits the modern DevOps paradigm, as the architecture is well placed for Continuous Integration/Continuous Deployment
|
3. Fits the modern DevOps paradigm, as the architecture is well placed for Continuous Integration/Continuous Deployment
|
||||||
4. Enables developers to choose a language and data store technology best suited for that bit of functionality
|
4. Enables developers to choose a language and data store technology best suited for that bit of functionality
|
||||||
@ -28,6 +30,7 @@ To overcome some of the issues, one of the suggestions that was made early on wa
|
|||||||
7. Easy to change, as it encapsulates a single piece of business functionality
|
7. Easy to change, as it encapsulates a single piece of business functionality
|
||||||
|
|
||||||
## Key drawbacks
|
## Key drawbacks
|
||||||
|
|
||||||
1. Additional operational overheads to monitor and manage multiple services
|
1. Additional operational overheads to monitor and manage multiple services
|
||||||
2. Manage communications between services
|
2. Manage communications between services
|
||||||
3. Additional effort to build fault tolerance
|
3. Additional effort to build fault tolerance
|
||||||
@ -35,6 +38,7 @@ To overcome some of the issues, one of the suggestions that was made early on wa
|
|||||||
5. Distributed transaction model comes with its own share of issues regarding data consistency (eventual consistency)
|
5. Distributed transaction model comes with its own share of issues regarding data consistency (eventual consistency)
|
||||||
|
|
||||||
### Sources
|
### Sources
|
||||||
|
|
||||||
1. Microservices, a definition - by Martin Fowler and James Lewis : https://www.martinfowler.com/articles/microservices.html
|
1. Microservices, a definition - by Martin Fowler and James Lewis : https://www.martinfowler.com/articles/microservices.html
|
||||||
2. Introduction to Microservices - NGINX blog : https://www.nginx.com/blog/introduction-to-microservices/
|
2. Introduction to Microservices - NGINX blog : https://www.nginx.com/blog/introduction-to-microservices/
|
||||||
3. What are microservices - Smartbear : https://smartbear.com/learn/api-design/what-are-microservices/
|
3. What are microservices - Smartbear : https://smartbear.com/learn/api-design/what-are-microservices/
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Coding Interview Algorithms
|
|||||||
block: Algorithms
|
block: Algorithms
|
||||||
superBlock: Coding Interview Prep
|
superBlock: Coding Interview Prep
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Coding Interview Prep Algorithms
|
## Introduction to the Coding Interview Prep Algorithms
|
||||||
|
|
||||||
These challenges are meant to teach and challenge you with common algorithms that you will encounter in real life. These challenges will be a great learning experience to help improve your programming and logical skills.
|
These challenges are meant to teach and challenge you with common algorithms that you will encounter in real life. These challenges will be a great learning experience to help improve your programming and logical skills.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Coding Interview Data Structure Questions
|
|||||||
block: Data Structures
|
block: Data Structures
|
||||||
superBlock: Coding Interview Prep
|
superBlock: Coding Interview Prep
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Coding Interview Data Structure Questions
|
## Introduction to the Coding Interview Data Structure Questions
|
||||||
|
|
||||||
These excercises are meant to help you deal with large or complex data by using many different data types other than your standard objects or arrays.
|
These excercises are meant to help you deal with large or complex data by using many different data types other than your standard objects or arrays.
|
||||||
|
@ -3,12 +3,13 @@ title: Introduction to the Project Euler Problems
|
|||||||
block: Project Euler
|
block: Project Euler
|
||||||
superBlock: Coding Interview Prep
|
superBlock: Coding Interview Prep
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Project Euler Problems
|
## Introduction to the Project Euler Problems
|
||||||
|
|
||||||
[Project Euler](https://projecteuler.net/) (pronounced Oiler) is a series of challenging mathematical/computer programming problems meant to delve into unfamiliar areas and learn new concepts in a fun and recreational manner.
|
[Project Euler](https://projecteuler.net/) (pronounced Oiler) is a series of challenging mathematical/computer programming problems meant to delve into unfamiliar areas and learn new concepts in a fun and recreational manner.
|
||||||
|
|
||||||
>The problems range in difficulty and for many the experience is inductive chain learning. That is, by solving one problem it will expose you to a new concept that allows you to undertake a previously inaccessible problem.
|
> The problems range in difficulty and for many the experience is inductive chain learning. That is, by solving one problem it will expose you to a new concept that allows you to undertake a previously inaccessible problem.
|
||||||
>
|
>
|
||||||
> Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.
|
> Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.
|
||||||
>
|
>
|
||||||
>_from the Project Euler <a href='https://projecteuler.net/' rel='noopener noreferrer'>home page</a>_
|
> _from the Project Euler <a href='https://projecteuler.net/' rel='noopener noreferrer'>home page</a>_
|
||||||
|
@ -3,7 +3,9 @@ title: Introduction to the Rosetta Code Problems
|
|||||||
block: Rosetta Code
|
block: Rosetta Code
|
||||||
superBlock: Coding Interview Prep
|
superBlock: Coding Interview Prep
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Rosetta Code Problems
|
## Introduction to the Rosetta Code Problems
|
||||||
|
|
||||||
[The Rosetta Code](https://rosettacode.org) is a list of programming challenges which will help you build your programming skills.
|
[The Rosetta Code](https://rosettacode.org) is a list of programming challenges which will help you build your programming skills.
|
||||||
>"The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another." - _Homepage of the Rosetta Code site_
|
|
||||||
|
> "The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another." - _Homepage of the Rosetta Code site_
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Coding Interview Take Home Projects
|
|||||||
block: Take Home Projects
|
block: Take Home Projects
|
||||||
superBlock: Coding Interview Prep
|
superBlock: Coding Interview Prep
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Coding Interview Take Home Projects
|
## Introduction to the Coding Interview Take Home Projects
|
||||||
|
|
||||||
Programming interviews have always been stressful. One of the solutions is giving the applicant a take home project to be completed outside of the interview. These types of interviews usually require a lot of work, but they're a great way for employers to see how you might perform on the job.
|
Programming interviews have always been stressful. One of the solutions is giving the applicant a take home project to be completed outside of the interview. These types of interviews usually require a lot of work, but they're a great way for employers to see how you might perform on the job.
|
||||||
@ -10,9 +11,10 @@ Programming interviews have always been stressful. One of the solutions is givin
|
|||||||
The interview after the project submission could be a discussion about the applicant’s design decisions, scalability, and what the applicant might have done differently. This approach is more effective when the applicant doesn’t have a lot of publicly available past projects.
|
The interview after the project submission could be a discussion about the applicant’s design decisions, scalability, and what the applicant might have done differently. This approach is more effective when the applicant doesn’t have a lot of publicly available past projects.
|
||||||
|
|
||||||
In this section you get the chance to work on many Take Home Projects like:
|
In this section you get the chance to work on many Take Home Projects like:
|
||||||
* Show Local Weather using Weather API and Geolocation
|
|
||||||
* Build a Wikipedia Viewer using Wikipedia's API
|
- Show Local Weather using Weather API and Geolocation
|
||||||
* Build a Pinterest Clone using Masonry.js library
|
- Build a Wikipedia Viewer using Wikipedia's API
|
||||||
and many more!
|
- Build a Pinterest Clone using Masonry.js library
|
||||||
|
and many more!
|
||||||
|
|
||||||
By the end of this section, you will have plenty of Take Home Projects under your belt. This will boost your confidence and prepare you for Take Home Project Interviews. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
By the end of this section, you will have plenty of Take Home Projects under your belt. This will boost your confidence and prepare you for Take Home Project Interviews. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Data Analysis with Python Course Lectures
|
|||||||
block: Data Analysis with Python Course
|
block: Data Analysis with Python Course
|
||||||
superBlock: Data Analysis with Python
|
superBlock: Data Analysis with Python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Data Analysis with Python Course Challenges
|
## Introduction to the Data Analysis with Python Course Challenges
|
||||||
|
|
||||||
Learn Data Analysis with Python in this comprehensive tutorial. Data Analysis has been around for a long time, but up until a few years ago, it was practiced using closed, expensive and limited tools like Excel or Tableau. Python, SQL and other open libraries have changed Data Analysis forever.
|
Learn Data Analysis with Python in this comprehensive tutorial. Data Analysis has been around for a long time, but up until a few years ago, it was practiced using closed, expensive and limited tools like Excel or Tableau. Python, SQL and other open libraries have changed Data Analysis forever.
|
||||||
|
@ -3,19 +3,22 @@ title: Introduction to the Data Analysis with Python Projects
|
|||||||
block: Data Analysis with Python Projects
|
block: Data Analysis with Python Projects
|
||||||
superBlock: Data Analysis with Python
|
superBlock: Data Analysis with Python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Data Analysis with Python Projects
|
## Introduction to the Data Analysis with Python Projects
|
||||||
|
|
||||||
There are many ways to analyze data with Python! By completing these projects, you will demonstrate that you have a good foundational knowledge of data analysis with Python.
|
There are many ways to analyze data with Python! By completing these projects, you will demonstrate that you have a good foundational knowledge of data analysis with Python.
|
||||||
|
|
||||||
We are working to finish up the interactive Data Analysis instructional content. For now, here are some videos from freeCodeCamp that will help with the projects. You may also have to use other resources (just like you would have to do when learning new technologies in a job).
|
We are working to finish up the interactive Data Analysis instructional content. For now, here are some videos from freeCodeCamp that will help with the projects. You may also have to use other resources (just like you would have to do when learning new technologies in a job).
|
||||||
* [Python NumPy Video Course](https://www.youtube.com/watch?v=QUT1VHiLmmI) (1 hours)
|
|
||||||
* [Data Science Video Course](https://m.youtube.com/watch?v=ua-CiDNNj30) (6 hours)
|
- [Python NumPy Video Course](https://www.youtube.com/watch?v=QUT1VHiLmmI) (1 hours)
|
||||||
|
- [Data Science Video Course](https://m.youtube.com/watch?v=ua-CiDNNj30) (6 hours)
|
||||||
|
|
||||||
In this section you will develop the following projects:
|
In this section you will develop the following projects:
|
||||||
* Mean-Variance-Standard Deviation Calculator
|
|
||||||
* Demographic Data Analyzer
|
- Mean-Variance-Standard Deviation Calculator
|
||||||
* Medical Data Visualizer
|
- Demographic Data Analyzer
|
||||||
* Page View Time Series Visualizer
|
- Medical Data Visualizer
|
||||||
* Sea Level Predictor
|
- Page View Time Series Visualizer
|
||||||
|
- Sea Level Predictor
|
||||||
|
|
||||||
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
title: Data Analysis with Python
|
title: Data Analysis with Python
|
||||||
superBlock: data-analysis-with-python
|
superBlock: data-analysis-with-python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Data Analysis with Python
|
## Introduction to Data Analysis with Python
|
||||||
|
|
||||||
Learn the basics of data analysis with Python.
|
Learn the basics of data analysis with Python.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Numpy Lectures
|
|||||||
block: Numpy
|
block: Numpy
|
||||||
superBlock: Data Analysis with Python
|
superBlock: Data Analysis with Python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Numpy Challenges
|
## Introduction to the Numpy Challenges
|
||||||
|
|
||||||
Learn the basics of the NumPy library with the following lectures created by Keith Galli. They provide background information on how NumPy works and how it compares to Python's Built-in lists. They go through how to write code with NumPy, creating arrays, indexing, math, statistics, reshaping, and more!
|
Learn the basics of the NumPy library with the following lectures created by Keith Galli. They provide background information on how NumPy works and how it compares to Python's Built-in lists. They go through how to write code with NumPy, creating arrays, indexing, math, statistics, reshaping, and more!
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the D3 Dashboard
|
|||||||
block: D3 Dashboard
|
block: D3 Dashboard
|
||||||
superBlock: Data Visualization
|
superBlock: Data Visualization
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the D3 Dashboard
|
## Introduction to the D3 Dashboard
|
||||||
|
|
||||||
<dfn>D3 Dashboard</dfn> Placeholder Introduction.
|
<dfn>D3 Dashboard</dfn> Placeholder Introduction.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Data Visualization Projects
|
|||||||
block: Data Visualization Projects
|
block: Data Visualization Projects
|
||||||
superBlock: Data Visualization
|
superBlock: Data Visualization
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Data Visualization Projects
|
## Introduction to the Data Visualization Projects
|
||||||
|
|
||||||
These challenges let you test your data visualization skills and how to transfer and use data using AJAX technologies.
|
These challenges let you test your data visualization skills and how to transfer and use data using AJAX technologies.
|
||||||
|
@ -3,7 +3,7 @@ title: Introduction to the Data Visualization with D3 Challenges
|
|||||||
block: Data Visualization with D3
|
block: Data Visualization with D3
|
||||||
superBlock: Data Visualization
|
superBlock: Data Visualization
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Data Visualization with D3 Challenges
|
## Introduction to the Data Visualization with D3 Challenges
|
||||||
|
|
||||||
D3.js, or D3, stands for Data Driven Documents. D3 is a JavaScript library to create dynamic and interactive data visualizations in the browser. It's built to work with common web standards, namely HTML, CSS, and Scalable Vector Graphics (SVG).<br><br>D3 takes input data and maps it into a visual representation of that data. It supports many different data formats. D3 lets you bind (or attach) the data to the Document Object Model (DOM). You use HTML or SVG elements with D3's built-in methods to transform the data into a visualization.<br><br>D3 gives you a lot of control over the presentation of data. This section covers the basic functionality and how to create visualizations with the D3 library.
|
D3.js, or D3, stands for Data Driven Documents. D3 is a JavaScript library to create dynamic and interactive data visualizations in the browser. It's built to work with common web standards, namely HTML, CSS, and Scalable Vector Graphics (SVG).<br><br>D3 takes input data and maps it into a visual representation of that data. It supports many different data formats. D3 lets you bind (or attach) the data to the Document Object Model (DOM). You use HTML or SVG elements with D3's built-in methods to transform the data into a visualization.<br><br>D3 gives you a lot of control over the presentation of data. This section covers the basic functionality and how to create visualizations with the D3 library.
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
title: Data Visualization
|
title: Data Visualization
|
||||||
superBlock: data-visualization
|
superBlock: data-visualization
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Data Visualization
|
## Introduction to Data Visualization
|
||||||
|
|
||||||
This is a stub introduction for Data Visualization
|
This is a stub introduction for Data Visualization
|
||||||
|
@ -3,7 +3,7 @@ title: Introduction to the JSON APIs and AJAX Challenges
|
|||||||
block: JSON APIs and Ajax
|
block: JSON APIs and Ajax
|
||||||
superBlock: Data Visualization
|
superBlock: Data Visualization
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the JSON APIs and AJAX Challenges
|
## Introduction to the JSON APIs and AJAX Challenges
|
||||||
|
|
||||||
Similar to how User Interfaces help people use programs, Application Programming Interfaces (APIs) help programs interact with other programs. APIs are tools that computers use to communicate with one another, in part to send and receive data. You can use API functionality in your page once you understand how to make requests and process data from it. Programmers often use AJAX technologies when working with APIs.<br><br>The term AJAX originated as an acronym for Asynchronous JavaScript And XML. It refers to a group of technologies that make asynchronous requests to a server to transfer data, then load any returned data into the page. An asynchronous process has a couple key properties. The browser does not stop loading a page to wait for the server's response. Also, the browser inserts updated data into part of the page without having to refresh the entire page.<br><br>User experience benefits from asynchronous processes in several ways. Pages load faster since the browser isn't waiting for the server to respond in the middle of a page render. Requests and transfers happen in the background, without interrupting what the user is doing. When the browser receives new data, only the necessary area of the page refreshes. These qualities especially enhance the user experience for single page applications.<br><br>The data transferred between the browser and server is often in a format called JavaScript Object Notation (JSON). JSON resembles JavaScript object literal syntax, except that it's transferred as a string. Once received, it can be converted into an object and used in a script.<br><br>This section covers how to transfer and use data using AJAX technologies with a freeCodeCamp API.
|
Similar to how User Interfaces help people use programs, Application Programming Interfaces (APIs) help programs interact with other programs. APIs are tools that computers use to communicate with one another, in part to send and receive data. You can use API functionality in your page once you understand how to make requests and process data from it. Programmers often use AJAX technologies when working with APIs.<br><br>The term AJAX originated as an acronym for Asynchronous JavaScript And XML. It refers to a group of technologies that make asynchronous requests to a server to transfer data, then load any returned data into the page. An asynchronous process has a couple key properties. The browser does not stop loading a page to wait for the server's response. Also, the browser inserts updated data into part of the page without having to refresh the entire page.<br><br>User experience benefits from asynchronous processes in several ways. Pages load faster since the browser isn't waiting for the server to respond in the middle of a page render. Requests and transfers happen in the background, without interrupting what the user is doing. When the browser receives new data, only the necessary area of the page refreshes. These qualities especially enhance the user experience for single page applications.<br><br>The data transferred between the browser and server is often in a format called JavaScript Object Notation (JSON). JSON resembles JavaScript object literal syntax, except that it's transferred as a string. Once received, it can be converted into an object and used in a script.<br><br>This section covers how to transfer and use data using AJAX technologies with a freeCodeCamp API.
|
||||||
|
|
||||||
|
@ -3,14 +3,16 @@ title: Introduction to the Front End Development Libraries Projects
|
|||||||
block: Front End Development Libraries Projects
|
block: Front End Development Libraries Projects
|
||||||
superBlock: Front End Development Libraries
|
superBlock: Front End Development Libraries
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Front End Development Libraries Projects
|
## Introduction to the Front End Development Libraries Projects
|
||||||
|
|
||||||
It's now time to test out the frontend skills learned. This will help to bolster your skills, so don't hesitate to showcase your frontend skills in these projects.
|
It's now time to test out the frontend skills learned. This will help to bolster your skills, so don't hesitate to showcase your frontend skills in these projects.
|
||||||
In this section you will complete the following projects with Bootstrap, jQuery, Sass, React and Redux:
|
In this section you will complete the following projects with Bootstrap, jQuery, Sass, React and Redux:
|
||||||
* A Random Quote Machine
|
|
||||||
* A Markdown Previewer
|
- A Random Quote Machine
|
||||||
* A Drum Machine
|
- A Markdown Previewer
|
||||||
* A JavaScript Calculator
|
- A Drum Machine
|
||||||
* A 25 + 5 Clock
|
- A JavaScript Calculator
|
||||||
|
- A 25 + 5 Clock
|
||||||
|
|
||||||
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
title: Information Security
|
title: Information Security
|
||||||
superBlock: information-security
|
superBlock: information-security
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Information Security
|
## Introduction to Information Security
|
||||||
|
|
||||||
This is a stub introduction for Information Security
|
This is a stub introduction for Information Security
|
||||||
|
@ -3,15 +3,17 @@ title: Introduction to the Information Security Projects
|
|||||||
block: Information Security Projects
|
block: Information Security Projects
|
||||||
superBlock: Information Security
|
superBlock: Information Security
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Information Security Projects
|
## Introduction to the Information Security Projects
|
||||||
|
|
||||||
Now it’s time to put your newly learned skills to work! By working on these projects, you will have the opportunity of applying all the skills, principles, and concepts from the Information Security sections.
|
Now it’s time to put your newly learned skills to work! By working on these projects, you will have the opportunity of applying all the skills, principles, and concepts from the Information Security sections.
|
||||||
|
|
||||||
In this section you get the chance to:
|
In this section you get the chance to:
|
||||||
* Build a Stock Price Checker
|
|
||||||
* Build an Anonymous Message Board
|
- Build a Stock Price Checker
|
||||||
* Port Scanner
|
- Build an Anonymous Message Board
|
||||||
* Packet Capturer
|
- Port Scanner
|
||||||
* Secure Real Time Multiplayer Game
|
- Packet Capturer
|
||||||
|
- Secure Real Time Multiplayer Game
|
||||||
|
|
||||||
When you are done, you will have plenty of Information Security projects under your belt along with a certification that you can show off to friends, family, and employers. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
When you are done, you will have plenty of Information Security projects under your belt along with a certification that you can show off to friends, family, and employers. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to Information Security with HelmetJS Challenges
|
|||||||
block: Information Security with HelmetJS
|
block: Information Security with HelmetJS
|
||||||
superBlock: Information Security
|
superBlock: Information Security
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Information Security with HelmetJS Challenges
|
## Introduction to Information Security with HelmetJS Challenges
|
||||||
|
|
||||||
HelmetJS is a type of middleware for Express-based applications that automatically sets HTTP headers to prevent sensitive information from unintentionally being passed between the server and client. While HelmetJS does not account for all situations, it does include support for common ones like Content Security Policy, XSS Filtering, and HTTP Strict Transport Security, among others. HelmetJS can be installed on an Express project from npm, after which each layer of protection can be configured to best fit the project.
|
HelmetJS is a type of middleware for Express-based applications that automatically sets HTTP headers to prevent sensitive information from unintentionally being passed between the server and client. While HelmetJS does not account for all situations, it does include support for common ones like Content Security Policy, XSS Filtering, and HTTP Strict Transport Security, among others. HelmetJS can be installed on an Express project from npm, after which each layer of protection can be configured to best fit the project.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Python for Penetration Testing Lectures
|
|||||||
block: Python for Penetration Testing
|
block: Python for Penetration Testing
|
||||||
superBlock: Information Security
|
superBlock: Information Security
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Python for Penetration Testing Challenges
|
## Introduction to the Python for Penetration Testing Challenges
|
||||||
|
|
||||||
<dfn>Python for Penetration Testing</dfn> Placeholder Introduction.
|
<dfn>Python for Penetration Testing</dfn> Placeholder Introduction.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to Basic Algorithm Scripting
|
|||||||
block: Basic Algorithm Scripting
|
block: Basic Algorithm Scripting
|
||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Basic Algorithm Scripting
|
## Introduction to Basic Algorithm Scripting
|
||||||
|
|
||||||
A computer algorithm is a sequence of steps that is followed to achieve a particular outcome. To write an algorithm, you must first understand a problem, and then solve it with coding.
|
A computer algorithm is a sequence of steps that is followed to achieve a particular outcome. To write an algorithm, you must first understand a problem, and then solve it with coding.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Basic Data Structure Challenges
|
|||||||
block: Basic Data Structures
|
block: Basic Data Structures
|
||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Basic Data Structure Challenges
|
## Introduction to the Basic Data Structure Challenges
|
||||||
|
|
||||||
Data can be stored and accessed in many different ways, both in JavaScript and other languages. This section will teach you how to manipulate arrays, as well as access and copy the information within them. It will also teach you how to manipulate and access the data within JavaScript objects, using both dot and bracket notation. When you're done with this section, you should understand the basic properties and differences between arrays and objects, as well as how to choose which to use for a given purpose.
|
Data can be stored and accessed in many different ways, both in JavaScript and other languages. This section will teach you how to manipulate arrays, as well as access and copy the information within them. It will also teach you how to manipulate and access the data within JavaScript objects, using both dot and bracket notation. When you're done with this section, you should understand the basic properties and differences between arrays and objects, as well as how to choose which to use for a given purpose.
|
||||||
|
@ -4,6 +4,7 @@ block: Basic JavaScript RPG Game
|
|||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
isBeta: true
|
isBeta: true
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Basic JavaScript RPG Game
|
## Introduction to the Basic JavaScript RPG Game
|
||||||
|
|
||||||
This is a test for the new project-based curriculum.
|
This is a test for the new project-based curriculum.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to JavaScript
|
|||||||
block: Basic JavaScript
|
block: Basic JavaScript
|
||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to JavaScript
|
## Introduction to JavaScript
|
||||||
|
|
||||||
JavaScript is a high-level programming language that all modern web browsers support. It is also one of the core technologies of the web, along with HTML and CSS that you may have learned previously. This section will cover basic JavaScript programming concepts, which range from variables and arithmetic to objects and loops.
|
JavaScript is a high-level programming language that all modern web browsers support. It is also one of the core technologies of the web, along with HTML and CSS that you may have learned previously. This section will cover basic JavaScript programming concepts, which range from variables and arithmetic to objects and loops.
|
||||||
|
@ -3,10 +3,12 @@ title: Introduction to the Debugging Challenges
|
|||||||
block: Debugging
|
block: Debugging
|
||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Debugging Challenges
|
## Introduction to the Debugging Challenges
|
||||||
|
|
||||||
Debugging is a valuable and (unfortunately) necessary tool for programmers. It follows the testing phase of checking if your code works as intended, and discovering it does not. Debugging is the process of finding exactly what isn't working and fixing it.
|
Debugging is a valuable and (unfortunately) necessary tool for programmers. It follows the testing phase of checking if your code works as intended, and discovering it does not. Debugging is the process of finding exactly what isn't working and fixing it.
|
||||||
After spending time creating a brilliant block of code, it is tough realizing it may have errors. These issues generally come in three forms:
|
After spending time creating a brilliant block of code, it is tough realizing it may have errors. These issues generally come in three forms:
|
||||||
|
|
||||||
1. syntax errors that prevent a program from running
|
1. syntax errors that prevent a program from running
|
||||||
2. runtime errors when code fails to execute or has unexpected behavior
|
2. runtime errors when code fails to execute or has unexpected behavior
|
||||||
3. semantic (or logical) errors when code doesn't do what it's meant to.
|
3. semantic (or logical) errors when code doesn't do what it's meant to.
|
||||||
@ -25,8 +27,8 @@ Here's an example of a runtime error - often detected while the program executes
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
function loopy() {
|
function loopy() {
|
||||||
while(true) {
|
while (true) {
|
||||||
console.log("Hello, world!");
|
console.log('Hello, world!');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Calling loopy starts an infinite loop, which may crash your browser
|
// Calling loopy starts an infinite loop, which may crash your browser
|
||||||
@ -43,4 +45,3 @@ let myRectArea = calcAreaOfRect(2, 3);
|
|||||||
```
|
```
|
||||||
|
|
||||||
Debugging is frustrating, but it helps to develop (and follow) a step-by-step approach to review your code. This means checking the intermediate values and types of variables to see if they are what they should be. You can start with a simple process of elimination.<br><br>For example, if function A works and returns what it's supposed to, then function B may have the issue. Or start checking values in a block of code from the middle to try to cut the search space in half. A problem in one spot indicates a bug in the first half of the code. If not, it's likely in the second.<br><br>This section will cover a couple helpful tools to find bugs, and some of the common forms they take. Fortunately, debugging is a learnable skill that just requires a little patience and practice to master.
|
Debugging is frustrating, but it helps to develop (and follow) a step-by-step approach to review your code. This means checking the intermediate values and types of variables to see if they are what they should be. You can start with a simple process of elimination.<br><br>For example, if function A works and returns what it's supposed to, then function B may have the issue. Or start checking values in a block of code from the middle to try to cut the search space in half. A problem in one spot indicates a bug in the first half of the code. If not, it's likely in the second.<br><br>This section will cover a couple helpful tools to find bugs, and some of the common forms they take. Fortunately, debugging is a learnable skill that just requires a little patience and practice to master.
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the ES6 Challenges
|
|||||||
block: ES6
|
block: ES6
|
||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the ES6 Challenges
|
## Introduction to the ES6 Challenges
|
||||||
|
|
||||||
ECMAScript is a standardized version of JavaScript with the goal of unifying the language's specifications and features. As all major browsers and JavaScript-runtimes follow this specification, the term _ECMAScript_ is interchangeable with the term _JavaScript_.
|
ECMAScript is a standardized version of JavaScript with the goal of unifying the language's specifications and features. As all major browsers and JavaScript-runtimes follow this specification, the term _ECMAScript_ is interchangeable with the term _JavaScript_.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Functional Programming Challenges
|
|||||||
block: Functional Programming
|
block: Functional Programming
|
||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Functional Programming Challenges
|
## Introduction to the Functional Programming Challenges
|
||||||
|
|
||||||
Functional programming is an approach to software development based around the evaluation of functions. Like mathematics, functions in programming map input to output to produce a result. You can combine basic functions in many ways to build more and more complex programs.
|
Functional programming is an approach to software development based around the evaluation of functions. Like mathematics, functions in programming map input to output to produce a result. You can combine basic functions in many ways to build more and more complex programs.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Intermediate Algorithm Scripting Challenges
|
|||||||
block: Intermediate Algorithm Scripting
|
block: Intermediate Algorithm Scripting
|
||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Intermediate Algorithm Scripting Challenges
|
## Introduction to the Intermediate Algorithm Scripting Challenges
|
||||||
|
|
||||||
The following challenges are part of FCC's Intermediate Algorithm Scripting Challenges. These should prepare you to complete the final challenges for the JavaScript Algorithms And Data Structures Certification.
|
The following challenges are part of FCC's Intermediate Algorithm Scripting Challenges. These should prepare you to complete the final challenges for the JavaScript Algorithms And Data Structures Certification.
|
||||||
|
@ -4,6 +4,7 @@ block: Intermediate JavaScript Calorie Counter
|
|||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
isBeta: true
|
isBeta: true
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Intermediate JavaScript Calorie Counter
|
## Introduction to the Intermediate JavaScript Calorie Counter
|
||||||
|
|
||||||
This is a stub for the new project-based curriculum.
|
This is a stub for the new project-based curriculum.
|
@ -3,16 +3,18 @@ title: Introduction to the JavaScript Algorithms and Data Structures Projects
|
|||||||
block: JavaScript Algorithms and Data Structures Projects
|
block: JavaScript Algorithms and Data Structures Projects
|
||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the JavaScript Algorithms and Data Structures Projects
|
## Introduction to the JavaScript Algorithms and Data Structures Projects
|
||||||
|
|
||||||
Time to put your new JavaScript skills to work! These challenges will be similar to the algorithm scripting challenges but more difficult. This will allow you to prove how much you have learned.
|
Time to put your new JavaScript skills to work! These challenges will be similar to the algorithm scripting challenges but more difficult. This will allow you to prove how much you have learned.
|
||||||
|
|
||||||
In this section you will create the following small JavaScript programs:
|
In this section you will create the following small JavaScript programs:
|
||||||
* Palindrome Checker
|
|
||||||
* Roman Numeral Converter
|
- Palindrome Checker
|
||||||
* Caesars Cipher
|
- Roman Numeral Converter
|
||||||
* Telephone Number Validator
|
- Caesars Cipher
|
||||||
* Cash Register
|
- Telephone Number Validator
|
||||||
|
- Cash Register
|
||||||
|
|
||||||
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ title: Introduction to the Object Oriented Programming Challenges
|
|||||||
block: Object Oriented Programming
|
block: Object Oriented Programming
|
||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Object Oriented Programming Challenges
|
## Introduction to the Object Oriented Programming Challenges
|
||||||
|
|
||||||
At its core, software development solves a problem or achieves a result with computation. The software development process first defines a problem, then presents a solution. Object oriented programming is one of several major approaches to the software development process.<br><br>As its name implies, object oriented programming organizes code into object definitions. These are sometimes called classes, and they group together data with related behavior. The data is an object's attributes, and the behavior (or functions) are methods.<br><br>The object structure makes it flexible within a program. Objects can transfer information by calling and passing data to another object's methods. Also, new classes can receive, or inherit, all the features from a base or parent class. This helps to reduce repeated code.<br><br>Your choice of programming approach depends on a few factors. These include the type of problem, as well as how you want to structure your data and algorithms. This section covers object oriented programming principles in JavaScript.
|
At its core, software development solves a problem or achieves a result with computation. The software development process first defines a problem, then presents a solution. Object oriented programming is one of several major approaches to the software development process.<br><br>As its name implies, object oriented programming organizes code into object definitions. These are sometimes called classes, and they group together data with related behavior. The data is an object's attributes, and the behavior (or functions) are methods.<br><br>The object structure makes it flexible within a program. Objects can transfer information by calling and passing data to another object's methods. Also, new classes can receive, or inherit, all the features from a base or parent class. This helps to reduce repeated code.<br><br>Your choice of programming approach depends on a few factors. These include the type of problem, as well as how you want to structure your data and algorithms. This section covers object oriented programming principles in JavaScript.
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ title: Introduction to the Regular Expression Challenges
|
|||||||
block: Regular Expressions
|
block: Regular Expressions
|
||||||
superBlock: JavaScript Algorithms and Data Structures
|
superBlock: JavaScript Algorithms and Data Structures
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Regular Expression Challenges
|
## Introduction to the Regular Expression Challenges
|
||||||
|
|
||||||
Regular expressions are special strings that represent a search pattern. Also known as "regex" or "regexp", they help programmers match, search, and replace text. Regular expressions can appear cryptic because a few characters have special meaning. The goal is to combine the symbols and text into a pattern that matches what you want, but only what you want. This section will cover the characters, a few shortcuts, and the common uses for writing regular expressions.
|
Regular expressions are special strings that represent a search pattern. Also known as "regex" or "regexp", they help programmers match, search, and replace text. Regular expressions can appear cryptic because a few characters have special meaning. The goal is to combine the symbols and text into a pattern that matches what you want, but only what you want. This section will cover the characters, a few shortcuts, and the common uses for writing regular expressions.
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the How Neural Networks Work Lectures
|
|||||||
block: How Neural Networks Work
|
block: How Neural Networks Work
|
||||||
superBlock: Machine Learning with Python
|
superBlock: Machine Learning with Python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the How Neural Networks Work Challenges
|
## Introduction to the How Neural Networks Work Challenges
|
||||||
|
|
||||||
Neural networks are at the core of what we are calling Artificial Intelligence today. They can seem impenetrable, and even mystical, if you are trying to understand them for the first time, but they don't have to.
|
Neural networks are at the core of what we are calling Artificial Intelligence today. They can seem impenetrable, and even mystical, if you are trying to understand them for the first time, but they don't have to.
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
title: Machine Learning with Python
|
title: Machine Learning with Python
|
||||||
superBlock: machine-learning-with-python
|
superBlock: machine-learning-with-python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Machine Learning with Python
|
## Introduction to Machine Learning with Python
|
||||||
|
|
||||||
Learn the basics of Machine Learning with Python.
|
Learn the basics of Machine Learning with Python.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Machine Learning Projects
|
|||||||
block: Machine Learning with Python Projects
|
block: Machine Learning with Python Projects
|
||||||
superBlock: Machine Learning with Python
|
superBlock: Machine Learning with Python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Machine Learning Projects
|
## Introduction to the Machine Learning Projects
|
||||||
|
|
||||||
Machine learning has many practical applications. By completing these projects, you will demonstrate that you have a good foundational knowledge of machine learning.
|
Machine learning has many practical applications. By completing these projects, you will demonstrate that you have a good foundational knowledge of machine learning.
|
||||||
@ -10,10 +11,11 @@ Machine learning has many practical applications. By completing these projects,
|
|||||||
We are still developing the interactive instructional content for the machine learning curriculum. For now, check out the videos in this [machine learning playlist on the freeCodeCamp YouTube channel](https://www.youtube.com/playlist?list=PLWKjhJtqVAblStefaz_YOVpDWqcRScc2s). You may also have to use other resources (just like you would have to do when learning new technologies in a job).
|
We are still developing the interactive instructional content for the machine learning curriculum. For now, check out the videos in this [machine learning playlist on the freeCodeCamp YouTube channel](https://www.youtube.com/playlist?list=PLWKjhJtqVAblStefaz_YOVpDWqcRScc2s). You may also have to use other resources (just like you would have to do when learning new technologies in a job).
|
||||||
|
|
||||||
In this section you will develop the following projects:
|
In this section you will develop the following projects:
|
||||||
* Rock Paper Scissors
|
|
||||||
* Cat and Dog Image Classifier
|
- Rock Paper Scissors
|
||||||
* Book Recommendation Engine using KNN
|
- Cat and Dog Image Classifier
|
||||||
* Linear Regression Health Costs Calculator
|
- Book Recommendation Engine using KNN
|
||||||
* Neural Network SMS Text Classifier
|
- Linear Regression Health Costs Calculator
|
||||||
|
- Neural Network SMS Text Classifier
|
||||||
|
|
||||||
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the TensorFlow Lectures
|
|||||||
block: TensorFlow
|
block: TensorFlow
|
||||||
superBlock: Machine Learning with Python
|
superBlock: Machine Learning with Python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the TensorFlow Challenges
|
## Introduction to the TensorFlow Challenges
|
||||||
|
|
||||||
TensorFlow is an open source framework developed by the Google Brain team aimed to make the powers of machine learning and neural networking easier to use.
|
TensorFlow is an open source framework developed by the Google Brain team aimed to make the powers of machine learning and neural networking easier to use.
|
||||||
|
@ -3,10 +3,11 @@ title: Introduction to the Advanced Node and Express Challenges
|
|||||||
block: Advanced Node and Express
|
block: Advanced Node and Express
|
||||||
superBlock: Quality Assurance
|
superBlock: Quality Assurance
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Advanced Node and Express Challenges
|
## Introduction to Advanced Node and Express Challenges
|
||||||
|
|
||||||
*Authentication* is the process or action of verifying the identity of a user or process. Up to this point you have not been able to create an app utilizing this key concept.
|
_Authentication_ is the process or action of verifying the identity of a user or process. Up to this point you have not been able to create an app utilizing this key concept.
|
||||||
|
|
||||||
The most common and easiest way to use authentication middleware for Node.js is [Passport](http://passportjs.org/). It is easy to learn, light-weight, and extremely flexible allowing for many *strategies*, which we will talk about in later challenges. In addition to authentication we will also look at template engines which allow for use of *Pug* and web sockets which allow for real time communication between all your clients and your server. Working on these challenges will involve you writing your code on Replit on our starter project. After completing each challenge you can copy your public Replit URL (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing.
|
The most common and easiest way to use authentication middleware for Node.js is [Passport](http://passportjs.org/). It is easy to learn, light-weight, and extremely flexible allowing for many _strategies_, which we will talk about in later challenges. In addition to authentication we will also look at template engines which allow for use of _Pug_ and web sockets which allow for real time communication between all your clients and your server. Working on these challenges will involve you writing your code on Replit on our starter project. After completing each challenge you can copy your public Replit URL (to the homepage of your app) into the challenge screen to test it! Optionally you may choose to write your project on another platform but it must be publicly visible for our testing.
|
||||||
|
|
||||||
Start this project on Replit using [this link](https://replit.com/github/freeCodeCamp/boilerplate-advancednode) or clone [this repository](https://github.com/freeCodeCamp/boilerplate-advancednode/) on GitHub! If you use Replit, remember to save the link to your project somewhere safe.
|
Start this project on Replit using [this link](https://replit.com/github/freeCodeCamp/boilerplate-advancednode) or clone [this repository](https://github.com/freeCodeCamp/boilerplate-advancednode/) on GitHub! If you use Replit, remember to save the link to your project somewhere safe.
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
title: Quality Assurance
|
title: Quality Assurance
|
||||||
superBlock: quality-assurance
|
superBlock: quality-assurance
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Quality Assurance
|
## Introduction to Quality Assurance
|
||||||
|
|
||||||
This is a stub introduction for Quality Assurance
|
This is a stub introduction for Quality Assurance
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the Quality Assurance with Chai Challenges
|
|||||||
block: Quality Assurance and Testing with Chai
|
block: Quality Assurance and Testing with Chai
|
||||||
superBlock: Quality Assurance
|
superBlock: Quality Assurance
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Quality Assurance with Chai Challenges
|
## Introduction to Quality Assurance with Chai Challenges
|
||||||
|
|
||||||
As your programs become more complex, you need to test them often to make sure any new code you add doesn't break the program's original functionality. Chai is a JavaScript testing library that helps you check that your program still behaves the way you expect it to after you make changes. Using Chai, you can write tests that describe your program's requirements and see if your program meets them.
|
As your programs become more complex, you need to test them often to make sure any new code you add doesn't break the program's original functionality. Chai is a JavaScript testing library that helps you check that your program still behaves the way you expect it to after you make changes. Using Chai, you can write tests that describe your program's requirements and see if your program meets them.
|
||||||
|
@ -3,15 +3,17 @@ title: Introduction to the Quality Assurance Projects
|
|||||||
block: Quality Assurance Projects
|
block: Quality Assurance Projects
|
||||||
superBlock: Quality Assurance
|
superBlock: Quality Assurance
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Quality Assurance Projects
|
## Introduction to the Quality Assurance Projects
|
||||||
|
|
||||||
Now it’s time to put your newly learned skills to work! By working on these projects, you will have the opportunity of applying all the skills, principles, and concepts from the Quality Assurance sections.
|
Now it’s time to put your newly learned skills to work! By working on these projects, you will have the opportunity of applying all the skills, principles, and concepts from the Quality Assurance sections.
|
||||||
|
|
||||||
In this section you get the chance to:
|
In this section you get the chance to:
|
||||||
* Build a Metric-Imperial Converter
|
|
||||||
* Build an Issue Tracker
|
- Build a Metric-Imperial Converter
|
||||||
* Build a Personal Library
|
- Build an Issue Tracker
|
||||||
* Sudoku Solver
|
- Build a Personal Library
|
||||||
* American British Translator
|
- Sudoku Solver
|
||||||
|
- American British Translator
|
||||||
|
|
||||||
When you are done, you will have plenty of Quality Assurance projects under your belt along with a certification that you can show off to friends, family, and employers. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
When you are done, you will have plenty of Quality Assurance projects under your belt along with a certification that you can show off to friends, family, and employers. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514) method if you get stuck.
|
||||||
|
@ -4,6 +4,7 @@ block: accessibility-quiz
|
|||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
isBeta: true
|
isBeta: true
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Accessibility Quiz
|
## Introduction to the Accessibility Quiz
|
||||||
|
|
||||||
This is a test for the new project-based curriculum.
|
This is a test for the new project-based curriculum.
|
@ -3,6 +3,7 @@ title: Introduction to the Applied Accessibility Challenges
|
|||||||
block: Applied Accessibility
|
block: Applied Accessibility
|
||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Applied Accessibility Challenges
|
## Introduction to the Applied Accessibility Challenges
|
||||||
|
|
||||||
"Accessibility" generally means having web content and a user interface that can be understood, navigated, and interacted with by a broad audience. This includes people with visual, auditory, mobility, or cognitive disabilities.
|
"Accessibility" generally means having web content and a user interface that can be understood, navigated, and interacted with by a broad audience. This includes people with visual, auditory, mobility, or cognitive disabilities.
|
||||||
|
@ -3,7 +3,7 @@ title: Introduction to the Applied Visual Design Challenges
|
|||||||
block: Applied Visual Design
|
block: Applied Visual Design
|
||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Applied Visual Design Challenges
|
## Introduction to the Applied Visual Design Challenges
|
||||||
|
|
||||||
Visual Design in web development is a broad topic. It combines typography, color theory, graphics, animation, and page layout to help deliver a site's message. The definition of good design is a well-discussed subject, with many books on the theme.<br><br>At a basic level, most web content provides a user with information. The visual design of the page can influence its presentation and a user's experience. In web development, HTML gives structure and semantics to a page's content, and CSS controls the layout and appearance of it.<br><br>This section covers some of the basic tools developers use to create their own visual designs.
|
Visual Design in web development is a broad topic. It combines typography, color theory, graphics, animation, and page layout to help deliver a site's message. The definition of good design is a well-discussed subject, with many books on the theme.<br><br>At a basic level, most web content provides a user with information. The visual design of the page can influence its presentation and a user's experience. In web development, HTML gives structure and semantics to a page's content, and CSS controls the layout and appearance of it.<br><br>This section covers some of the basic tools developers use to create their own visual designs.
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ block: Basic CSS Cafe Menu
|
|||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
isBeta: true
|
isBeta: true
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Basic CSS Cafe Menu
|
## Introduction to the Basic CSS Cafe Menu
|
||||||
|
|
||||||
This is a test for the new project-based curriculum.
|
This is a test for the new project-based curriculum.
|
@ -3,6 +3,7 @@ title: Introduction to Basic CSS
|
|||||||
block: Basic CSS
|
block: Basic CSS
|
||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Basic CSS
|
## Introduction to Basic CSS
|
||||||
|
|
||||||
Cascading Style Sheets (CSS) tell the browser how to display the text and other content that you write in HTML.
|
Cascading Style Sheets (CSS) tell the browser how to display the text and other content that you write in HTML.
|
||||||
|
@ -3,15 +3,20 @@ title: Introduction to Basic HTML and HTML5
|
|||||||
block: Basic HTML and HTML5
|
block: Basic HTML and HTML5
|
||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Basic HTML & HTML5
|
## Introduction to Basic HTML & HTML5
|
||||||
|
|
||||||
HTML, or HyperText Markup Language, is a markup language used to describe the structure of a web page. It uses a special syntax or notation to organize and give information about the page to the browser. Elements usually have opening and closing tags that surround and give meaning to content. For example, there are different tag options to place around text to show whether it is a heading, a paragraph, or a list.
|
HTML, or HyperText Markup Language, is a markup language used to describe the structure of a web page. It uses a special syntax or notation to organize and give information about the page to the browser. Elements usually have opening and closing tags that surround and give meaning to content. For example, there are different tag options to place around text to show whether it is a heading, a paragraph, or a list.
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<h1>Top level heading: Maybe a page title</h1>
|
<h1>Top level heading: Maybe a page title</h1>
|
||||||
|
|
||||||
<p>A paragraph of text. Some information we would like to communicate to the viewer. This can be as long or short as we would like.</p>
|
<p>
|
||||||
|
A paragraph of text. Some information we would like to communicate to the
|
||||||
|
viewer. This can be as long or short as we would like.
|
||||||
|
</p>
|
||||||
|
|
||||||
<ol>
|
<ol>
|
||||||
<li>Number one on the list</li>
|
<li>Number one on the list</li>
|
||||||
@ -33,6 +38,7 @@ Becomes:
|
|||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
The HyperText part of HTML comes from the early days of the web and its original use case. Pages usually contained static documents that contained references to other documents. These references contained hypertext links used by the browser to navigate to the reference document so the user could read the reference document without having to manually search for it.
|
The HyperText part of HTML comes from the early days of the web and its original use case. Pages usually contained static documents that contained references to other documents. These references contained hypertext links used by the browser to navigate to the reference document so the user could read the reference document without having to manually search for it.
|
||||||
|
|
||||||
As web pages and web applications grow more complex, the W3 Consortium updates the HTML specification to ensure that a webpage can be shown reliably on any browser. The latest version of HTML is HTML5.
|
As web pages and web applications grow more complex, the W3 Consortium updates the HTML specification to ensure that a webpage can be shown reliably on any browser. The latest version of HTML is HTML5.
|
||||||
|
@ -4,6 +4,7 @@ block: Basic HTML Cat Photo App
|
|||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
isBeta: true
|
isBeta: true
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Basic HTML Cat Photo App
|
## Introduction to the Basic HTML Cat Photo App
|
||||||
|
|
||||||
This is a test for the new project-based curriculum.
|
This is a test for the new project-based curriculum.
|
@ -3,7 +3,7 @@ title: Introduction to the CSS Flexbox Challenges
|
|||||||
block: CSS Flexbox
|
block: CSS Flexbox
|
||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the CSS Flexbox Challenges
|
## Introduction to the CSS Flexbox Challenges
|
||||||
|
|
||||||
A website's User Interface ("UI") has two components. First, there are the visual elements, such as colors, fonts, and images. Second, there is the placement or positioning of those elements. In Responsive Web Design, a UI layout must accommodate many different browsers and devices accessing the content.<br><br>CSS3 introduced Flexible Boxes, or flexbox, to create page layouts for a dynamic UI. It is a layout mode that arranges elements in a predictable way for different screen sizes and browsers. While somewhat new, all popular modern browsers support flexbox. This section covers how to use flexbox and the different layout options it offers.
|
A website's User Interface ("UI") has two components. First, there are the visual elements, such as colors, fonts, and images. Second, there is the placement or positioning of those elements. In Responsive Web Design, a UI layout must accommodate many different browsers and devices accessing the content.<br><br>CSS3 introduced Flexible Boxes, or flexbox, to create page layouts for a dynamic UI. It is a layout mode that arranges elements in a predictable way for different screen sizes and browsers. While somewhat new, all popular modern browsers support flexbox. This section covers how to use flexbox and the different layout options it offers.
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ title: Introduction to the CSS Grid Challenges
|
|||||||
block: CSS Grid
|
block: CSS Grid
|
||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the CSS Grid Challenges
|
## Introduction to the CSS Grid Challenges
|
||||||
|
|
||||||
<dfn>CSS Grid</dfn> helps you easily build complex web designs. It works by turning an HTML element into a grid container with rows and columns for you to place children elements where you want within the grid.
|
<dfn>CSS Grid</dfn> helps you easily build complex web designs. It works by turning an HTML element into a grid container with rows and columns for you to place children elements where you want within the grid.
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ title: Introduction to the CSS Variables Skyline
|
|||||||
block: CSS Variables Skyline
|
block: CSS Variables Skyline
|
||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the CSS Variables Skyline
|
## Introduction to the CSS Variables Skyline
|
||||||
|
|
||||||
<dfn>CSS Variables Skyline</dfn> Placeholder Introduction.
|
<dfn>CSS Variables Skyline</dfn> Placeholder Introduction.
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
title: Responsive Web Design
|
title: Responsive Web Design
|
||||||
superBlock: responsive-web-design
|
superBlock: responsive-web-design
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Responsive Web Design
|
## Introduction to Responsive Web Design
|
||||||
|
|
||||||
Welcome to Responsive Web Design!
|
Welcome to Responsive Web Design!
|
||||||
|
@ -3,10 +3,10 @@ title: Introduction to the Responsive Web Design Challenges
|
|||||||
block: Responsive Web Design Principles
|
block: Responsive Web Design Principles
|
||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Responsive Web Design Challenges
|
## Introduction to the Responsive Web Design Challenges
|
||||||
|
|
||||||
Today, there are many types of devices that can access the web. They range from large desktop computers to small mobile phones. These devices have different screen sizes, resolutions, and processing power.
|
Today, there are many types of devices that can access the web. They range from large desktop computers to small mobile phones. These devices have different screen sizes, resolutions, and processing power.
|
||||||
Responsive Web Design is an approach to designing web content that responds to the constraints of different devices. The page structure and CSS rules should be flexible to accommodate these differences.
|
Responsive Web Design is an approach to designing web content that responds to the constraints of different devices. The page structure and CSS rules should be flexible to accommodate these differences.
|
||||||
In general, design the page's CSS to your target audience. If you expect most of your traffic to be from mobile users, take a 'mobile-first' approach. Then add conditional rules for larger screen sizes. If your visitors are desktop users, then design for larger screens with conditional rules for smaller sizes.
|
In general, design the page's CSS to your target audience. If you expect most of your traffic to be from mobile users, take a 'mobile-first' approach. Then add conditional rules for larger screen sizes. If your visitors are desktop users, then design for larger screens with conditional rules for smaller sizes.
|
||||||
CSS gives you the tools to write different style rules, then apply them depending on the device displaying the page. This section will cover the basic ways to use CSS for Responsive Web Design.
|
CSS gives you the tools to write different style rules, then apply them depending on the device displaying the page. This section will cover the basic ways to use CSS for Responsive Web Design.
|
||||||
|
|
||||||
|
@ -3,16 +3,18 @@ title: Introduction to the Responsive Web Design Projects
|
|||||||
block: Responsive Web Design Projects
|
block: Responsive Web Design Projects
|
||||||
superBlock: Responsive Web Design
|
superBlock: Responsive Web Design
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Responsive Web Design Projects
|
## Introduction to the Responsive Web Design Projects
|
||||||
|
|
||||||
Time to put your newly learnt skills to work! By working on projects you would have the opportunity of applying all the skills, principles and concepts you have learnt so far HTML, CSS, Visual Design, Accessibility, etc.
|
Time to put your newly learnt skills to work! By working on projects you would have the opportunity of applying all the skills, principles and concepts you have learnt so far HTML, CSS, Visual Design, Accessibility, etc.
|
||||||
|
|
||||||
In this section you get the chance to:
|
In this section you get the chance to:
|
||||||
* Build a Tribute Page
|
|
||||||
* Build a Survey Form
|
- Build a Tribute Page
|
||||||
* Build a Product Landing Page
|
- Build a Survey Form
|
||||||
* Build a Technical Documentation Page
|
- Build a Product Landing Page
|
||||||
* Build a Personal Portfolio Webpage
|
- Build a Technical Documentation Page
|
||||||
|
- Build a Personal Portfolio Webpage
|
||||||
|
|
||||||
By the end of this, you would have 5 responsive websites under your belt that you can show off to friends, family, employers, etc. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
By the end of this, you would have 5 responsive websites under your belt that you can show off to friends, family, employers, etc. Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
title: Scientific Computing with Python
|
title: Scientific Computing with Python
|
||||||
superBlock: scientific-computing-with-python
|
superBlock: scientific-computing-with-python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Scientific Computing with Python
|
## Introduction to Scientific Computing with Python
|
||||||
|
|
||||||
Learn the basics of Python.
|
Learn the basics of Python.
|
||||||
|
@ -3,10 +3,9 @@ title: Introduction to Python for Everybody
|
|||||||
block: Python for Everybody
|
block: Python for Everybody
|
||||||
superBlock: Scientific Computing with Python
|
superBlock: Scientific Computing with Python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to Python for Everybody
|
## Introduction to Python for Everybody
|
||||||
|
|
||||||
Python for Everybody is a video course that teaches the basics of programming computers using Python 3.
|
Python for Everybody is a video course that teaches the basics of programming computers using Python 3.
|
||||||
|
|
||||||
The course was created by Dr. Charles Severance (a.k.a. Dr. Chuck). He is a Clinical Professor at the University of Michigan School of Information, where he teaches various technology-oriented courses including programming, database design, and Web development.
|
The course was created by Dr. Charles Severance (a.k.a. Dr. Chuck). He is a Clinical Professor at the University of Michigan School of Information, where he teaches various technology-oriented courses including programming, database design, and Web development.
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,19 +3,22 @@ title: Introduction to the Scientific Computing with Python Projects
|
|||||||
block: Scientific Computing with Python Projects
|
block: Scientific Computing with Python Projects
|
||||||
superBlock: Scientific Computing with Python
|
superBlock: Scientific Computing with Python
|
||||||
---
|
---
|
||||||
|
|
||||||
## Introduction to the Scientific Computing with Python Projects
|
## Introduction to the Scientific Computing with Python Projects
|
||||||
|
|
||||||
Time to put your Python skills to the test! By completing these projects, you will demonstrate that you have a good foundational knowledge of Python.
|
Time to put your Python skills to the test! By completing these projects, you will demonstrate that you have a good foundational knowledge of Python.
|
||||||
|
|
||||||
We are working to finish up the interactive Python instructional content. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete these projects:
|
We are working to finish up the interactive Python instructional content. For now, here are some videos on the freeCodeCamp.org YouTube channel that will teach you everything you need to know to complete these projects:
|
||||||
* [Python for Everybody Video Course](https://www.freecodecamp.org/news/python-for-everybody/) (14 hours)
|
|
||||||
* [Learn Python Video Course](https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/) (4 hours)
|
- [Python for Everybody Video Course](https://www.freecodecamp.org/news/python-for-everybody/) (14 hours)
|
||||||
|
- [Learn Python Video Course](https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/) (4 hours)
|
||||||
|
|
||||||
In this section you will develop the following projects:
|
In this section you will develop the following projects:
|
||||||
* Arithmetic Formatter
|
|
||||||
* Time Calculator
|
- Arithmetic Formatter
|
||||||
* Budget App
|
- Time Calculator
|
||||||
* Polygon Area Calculator
|
- Budget App
|
||||||
* Probability Calculator
|
- Polygon Area Calculator
|
||||||
|
- Probability Calculator
|
||||||
|
|
||||||
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
Have fun and remember to use the [Read-Search-Ask](https://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck-coding/19514) method if you get stuck.
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
{
|
{
|
||||||
"include": [
|
"include": ["./i18n/**/*", "./plugins/**/*", "./src/**/*", "./utils/**/*"],
|
||||||
"./i18n/**/*",
|
|
||||||
"./plugins/**/*",
|
|
||||||
"./src/**/*",
|
|
||||||
"./utils/**/*"
|
|
||||||
],
|
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "es2020",
|
"target": "es2020",
|
||||||
"module": "es2020",
|
"module": "es2020",
|
||||||
@ -18,10 +13,6 @@
|
|||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"types": [
|
"types": ["node", "jest", "@testing-library/jest-dom"]
|
||||||
"node",
|
|
||||||
"jest",
|
|
||||||
"@testing-library/jest-dom"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,17 +1,18 @@
|
|||||||
"project_id_env": "CROWDIN_PROJECT_ID"
|
'project_id_env': 'CROWDIN_PROJECT_ID'
|
||||||
"api_token_env": "CROWDIN_PERSONAL_TOKEN"
|
'api_token_env': 'CROWDIN_PERSONAL_TOKEN'
|
||||||
"base_path_env": "CROWDIN_BASE_PATH"
|
'base_path_env': 'CROWDIN_BASE_PATH'
|
||||||
"base_url_env": "CROWDIN_BASE_URL"
|
'base_url_env': 'CROWDIN_BASE_URL'
|
||||||
|
|
||||||
"preserve_hierarchy": true
|
'preserve_hierarchy': true
|
||||||
|
|
||||||
files: [
|
files:
|
||||||
{
|
[
|
||||||
"source" : "/client/i18n/locales/english/intro.json",
|
{
|
||||||
"translation" : "/client/i18n/locales/%language%/%original_file_name%"
|
'source': '/client/i18n/locales/english/intro.json',
|
||||||
},
|
'translation': '/client/i18n/locales/%language%/%original_file_name%'
|
||||||
{
|
},
|
||||||
"source" : "/client/i18n/locales/english/translations.json",
|
{
|
||||||
"translation" : "/client/i18n/locales/%language%/%original_file_name%"
|
'source': '/client/i18n/locales/english/translations.json',
|
||||||
}
|
'translation': '/client/i18n/locales/%language%/%original_file_name%'
|
||||||
]
|
}
|
||||||
|
]
|
||||||
|
@ -1,19 +1,21 @@
|
|||||||
"project_id_env": "CROWDIN_PROJECT_ID"
|
'project_id_env': 'CROWDIN_PROJECT_ID'
|
||||||
"api_token_env": "CROWDIN_PERSONAL_TOKEN"
|
'api_token_env': 'CROWDIN_PERSONAL_TOKEN'
|
||||||
"base_path_env": "CROWDIN_BASE_PATH"
|
'base_path_env': 'CROWDIN_BASE_PATH'
|
||||||
"base_url_env": "CROWDIN_BASE_URL"
|
'base_url_env': 'CROWDIN_BASE_URL'
|
||||||
|
|
||||||
"preserve_hierarchy": true
|
'preserve_hierarchy': true
|
||||||
|
|
||||||
files: [
|
files:
|
||||||
{
|
[
|
||||||
"source" : "/docs/*.md",
|
{
|
||||||
"translation" : "/docs/i18n/%language%/%original_file_name%",
|
'source': '/docs/*.md',
|
||||||
"ignore" : [
|
'translation': '/docs/i18n/%language%/%original_file_name%',
|
||||||
"/docs/_coverpage.md",
|
'ignore':
|
||||||
"/docs/_navbar.md",
|
[
|
||||||
"/docs/_translations.md",
|
'/docs/_coverpage.md',
|
||||||
"/docs/README.md",
|
'/docs/_navbar.md',
|
||||||
|
'/docs/_translations.md',
|
||||||
|
'/docs/README.md'
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
|
||||||
]
|
|
||||||
|
@ -33,7 +33,7 @@ exhaustive, and do not form part of our licenses.
|
|||||||
material not subject to the license. This includes other CC-
|
material not subject to the license. This includes other CC-
|
||||||
licensed material, or material used under an exception or
|
licensed material, or material used under an exception or
|
||||||
limitation to copyright. More considerations for licensors:
|
limitation to copyright. More considerations for licensors:
|
||||||
wiki.creativecommons.org/Considerations_for_licensors
|
wiki.creativecommons.org/Considerations_for_licensors
|
||||||
|
|
||||||
Considerations for the public: By using one of our public
|
Considerations for the public: By using one of our public
|
||||||
licenses, a licensor grants the public permission to use the
|
licenses, a licensor grants the public permission to use the
|
||||||
@ -50,7 +50,7 @@ exhaustive, and do not form part of our licenses.
|
|||||||
Although not required by our licenses, you are encouraged to
|
Although not required by our licenses, you are encouraged to
|
||||||
respect those requests where reasonable. More_considerations
|
respect those requests where reasonable. More_considerations
|
||||||
for the public:
|
for the public:
|
||||||
wiki.creativecommons.org/Considerations_for_licensees
|
wiki.creativecommons.org/Considerations_for_licensees
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
|
||||||
@ -67,82 +67,80 @@ such rights in consideration of benefits the Licensor receives from
|
|||||||
making the Licensed Material available under these terms and
|
making the Licensed Material available under these terms and
|
||||||
conditions.
|
conditions.
|
||||||
|
|
||||||
|
|
||||||
Section 1 -- Definitions.
|
Section 1 -- Definitions.
|
||||||
|
|
||||||
a. Adapted Material means material subject to Copyright and Similar
|
a. Adapted Material means material subject to Copyright and Similar
|
||||||
Rights that is derived from or based upon the Licensed Material
|
Rights that is derived from or based upon the Licensed Material
|
||||||
and in which the Licensed Material is translated, altered,
|
and in which the Licensed Material is translated, altered,
|
||||||
arranged, transformed, or otherwise modified in a manner requiring
|
arranged, transformed, or otherwise modified in a manner requiring
|
||||||
permission under the Copyright and Similar Rights held by the
|
permission under the Copyright and Similar Rights held by the
|
||||||
Licensor. For purposes of this Public License, where the Licensed
|
Licensor. For purposes of this Public License, where the Licensed
|
||||||
Material is a musical work, performance, or sound recording,
|
Material is a musical work, performance, or sound recording,
|
||||||
Adapted Material is always produced where the Licensed Material is
|
Adapted Material is always produced where the Licensed Material is
|
||||||
synched in timed relation with a moving image.
|
synched in timed relation with a moving image.
|
||||||
|
|
||||||
b. Adapter's License means the license You apply to Your Copyright
|
b. Adapter's License means the license You apply to Your Copyright
|
||||||
and Similar Rights in Your contributions to Adapted Material in
|
and Similar Rights in Your contributions to Adapted Material in
|
||||||
accordance with the terms and conditions of this Public License.
|
accordance with the terms and conditions of this Public License.
|
||||||
|
|
||||||
c. BY-SA Compatible License means a license listed at
|
c. BY-SA Compatible License means a license listed at
|
||||||
creativecommons.org/compatiblelicenses, approved by Creative
|
creativecommons.org/compatiblelicenses, approved by Creative
|
||||||
Commons as essentially the equivalent of this Public License.
|
Commons as essentially the equivalent of this Public License.
|
||||||
|
|
||||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||||
closely related to copyright including, without limitation,
|
closely related to copyright including, without limitation,
|
||||||
performance, broadcast, sound recording, and Sui Generis Database
|
performance, broadcast, sound recording, and Sui Generis Database
|
||||||
Rights, without regard to how the rights are labeled or
|
Rights, without regard to how the rights are labeled or
|
||||||
categorized. For purposes of this Public License, the rights
|
categorized. For purposes of this Public License, the rights
|
||||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||||
Rights.
|
Rights.
|
||||||
|
|
||||||
e. Effective Technological Measures means those measures that, in the
|
e. Effective Technological Measures means those measures that, in the
|
||||||
absence of proper authority, may not be circumvented under laws
|
absence of proper authority, may not be circumvented under laws
|
||||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||||
Treaty adopted on December 20, 1996, and/or similar international
|
Treaty adopted on December 20, 1996, and/or similar international
|
||||||
agreements.
|
agreements.
|
||||||
|
|
||||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||||
any other exception or limitation to Copyright and Similar Rights
|
any other exception or limitation to Copyright and Similar Rights
|
||||||
that applies to Your use of the Licensed Material.
|
that applies to Your use of the Licensed Material.
|
||||||
|
|
||||||
g. License Elements means the license attributes listed in the name
|
g. License Elements means the license attributes listed in the name
|
||||||
of a Creative Commons Public License. The License Elements of this
|
of a Creative Commons Public License. The License Elements of this
|
||||||
Public License are Attribution and ShareAlike.
|
Public License are Attribution and ShareAlike.
|
||||||
|
|
||||||
h. Licensed Material means the artistic or literary work, database,
|
h. Licensed Material means the artistic or literary work, database,
|
||||||
or other material to which the Licensor applied this Public
|
or other material to which the Licensor applied this Public
|
||||||
License.
|
License.
|
||||||
|
|
||||||
i. Licensed Rights means the rights granted to You subject to the
|
i. Licensed Rights means the rights granted to You subject to the
|
||||||
terms and conditions of this Public License, which are limited to
|
terms and conditions of this Public License, which are limited to
|
||||||
all Copyright and Similar Rights that apply to Your use of the
|
all Copyright and Similar Rights that apply to Your use of the
|
||||||
Licensed Material and that the Licensor has authority to license.
|
Licensed Material and that the Licensor has authority to license.
|
||||||
|
|
||||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||||
under this Public License.
|
under this Public License.
|
||||||
|
|
||||||
k. Share means to provide material to the public by any means or
|
k. Share means to provide material to the public by any means or
|
||||||
process that requires permission under the Licensed Rights, such
|
process that requires permission under the Licensed Rights, such
|
||||||
as reproduction, public display, public performance, distribution,
|
as reproduction, public display, public performance, distribution,
|
||||||
dissemination, communication, or importation, and to make material
|
dissemination, communication, or importation, and to make material
|
||||||
available to the public including in ways that members of the
|
available to the public including in ways that members of the
|
||||||
public may access the material from a place and at a time
|
public may access the material from a place and at a time
|
||||||
individually chosen by them.
|
individually chosen by them.
|
||||||
|
|
||||||
l. Sui Generis Database Rights means rights other than copyright
|
l. Sui Generis Database Rights means rights other than copyright
|
||||||
resulting from Directive 96/9/EC of the European Parliament and of
|
resulting from Directive 96/9/EC of the European Parliament and of
|
||||||
the Council of 11 March 1996 on the legal protection of databases,
|
the Council of 11 March 1996 on the legal protection of databases,
|
||||||
as amended and/or succeeded, as well as other essentially
|
as amended and/or succeeded, as well as other essentially
|
||||||
equivalent rights anywhere in the world.
|
equivalent rights anywhere in the world.
|
||||||
|
|
||||||
m. You means the individual or entity exercising the Licensed Rights
|
|
||||||
under this Public License. Your has a corresponding meaning.
|
|
||||||
|
|
||||||
|
m. You means the individual or entity exercising the Licensed Rights
|
||||||
|
under this Public License. Your has a corresponding meaning.
|
||||||
|
|
||||||
Section 2 -- Scope.
|
Section 2 -- Scope.
|
||||||
|
|
||||||
a. License grant.
|
a. License grant.
|
||||||
|
|
||||||
1. Subject to the terms and conditions of this Public License,
|
1. Subject to the terms and conditions of this Public License,
|
||||||
the Licensor hereby grants You a worldwide, royalty-free,
|
the Licensor hereby grants You a worldwide, royalty-free,
|
||||||
@ -202,7 +200,7 @@ Section 2 -- Scope.
|
|||||||
the Licensor or others designated to receive attribution as
|
the Licensor or others designated to receive attribution as
|
||||||
provided in Section 3(a)(1)(A)(i).
|
provided in Section 3(a)(1)(A)(i).
|
||||||
|
|
||||||
b. Other rights.
|
b. Other rights.
|
||||||
|
|
||||||
1. Moral rights, such as the right of integrity, are not
|
1. Moral rights, such as the right of integrity, are not
|
||||||
licensed under this Public License, nor are publicity,
|
licensed under this Public License, nor are publicity,
|
||||||
@ -222,13 +220,12 @@ Section 2 -- Scope.
|
|||||||
licensing scheme. In all other cases the Licensor expressly
|
licensing scheme. In all other cases the Licensor expressly
|
||||||
reserves any right to collect such royalties.
|
reserves any right to collect such royalties.
|
||||||
|
|
||||||
|
|
||||||
Section 3 -- License Conditions.
|
Section 3 -- License Conditions.
|
||||||
|
|
||||||
Your exercise of the Licensed Rights is expressly made subject to the
|
Your exercise of the Licensed Rights is expressly made subject to the
|
||||||
following conditions.
|
following conditions.
|
||||||
|
|
||||||
a. Attribution.
|
a. Attribution.
|
||||||
|
|
||||||
1. If You Share the Licensed Material (including in modified
|
1. If You Share the Licensed Material (including in modified
|
||||||
form), You must:
|
form), You must:
|
||||||
@ -270,7 +267,7 @@ following conditions.
|
|||||||
information required by Section 3(a)(1)(A) to the extent
|
information required by Section 3(a)(1)(A) to the extent
|
||||||
reasonably practicable.
|
reasonably practicable.
|
||||||
|
|
||||||
b. ShareAlike.
|
b. ShareAlike.
|
||||||
|
|
||||||
In addition to the conditions in Section 3(a), if You Share
|
In addition to the conditions in Section 3(a), if You Share
|
||||||
Adapted Material You produce, the following conditions also apply.
|
Adapted Material You produce, the following conditions also apply.
|
||||||
@ -289,68 +286,66 @@ following conditions.
|
|||||||
Measures to, Adapted Material that restrict exercise of the
|
Measures to, Adapted Material that restrict exercise of the
|
||||||
rights granted under the Adapter's License You apply.
|
rights granted under the Adapter's License You apply.
|
||||||
|
|
||||||
|
|
||||||
Section 4 -- Sui Generis Database Rights.
|
Section 4 -- Sui Generis Database Rights.
|
||||||
|
|
||||||
Where the Licensed Rights include Sui Generis Database Rights that
|
Where the Licensed Rights include Sui Generis Database Rights that
|
||||||
apply to Your use of the Licensed Material:
|
apply to Your use of the Licensed Material:
|
||||||
|
|
||||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||||
to extract, reuse, reproduce, and Share all or a substantial
|
to extract, reuse, reproduce, and Share all or a substantial
|
||||||
portion of the contents of the database;
|
portion of the contents of the database;
|
||||||
|
|
||||||
b. if You include all or a substantial portion of the database
|
b. if You include all or a substantial portion of the database
|
||||||
contents in a database in which You have Sui Generis Database
|
contents in a database in which You have Sui Generis Database
|
||||||
Rights, then the database in which You have Sui Generis Database
|
Rights, then the database in which You have Sui Generis Database
|
||||||
Rights (but not its individual contents) is Adapted Material,
|
Rights (but not its individual contents) is Adapted Material,
|
||||||
|
|
||||||
including for purposes of Section 3(b); and
|
including for purposes of Section 3(b); and
|
||||||
c. You must comply with the conditions in Section 3(a) if You Share
|
|
||||||
all or a substantial portion of the contents of the database.
|
c. You must comply with the conditions in Section 3(a) if You Share
|
||||||
|
all or a substantial portion of the contents of the database.
|
||||||
|
|
||||||
For the avoidance of doubt, this Section 4 supplements and does not
|
For the avoidance of doubt, this Section 4 supplements and does not
|
||||||
replace Your obligations under this Public License where the Licensed
|
replace Your obligations under this Public License where the Licensed
|
||||||
Rights include other Copyright and Similar Rights.
|
Rights include other Copyright and Similar Rights.
|
||||||
|
|
||||||
|
|
||||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||||
|
|
||||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
c. The disclaimer of warranties and limitation of liability provided
|
|
||||||
above shall be interpreted in a manner that, to the extent
|
|
||||||
possible, most closely approximates an absolute disclaimer and
|
|
||||||
waiver of all liability.
|
|
||||||
|
|
||||||
|
c. The disclaimer of warranties and limitation of liability provided
|
||||||
|
above shall be interpreted in a manner that, to the extent
|
||||||
|
possible, most closely approximates an absolute disclaimer and
|
||||||
|
waiver of all liability.
|
||||||
|
|
||||||
Section 6 -- Term and Termination.
|
Section 6 -- Term and Termination.
|
||||||
|
|
||||||
a. This Public License applies for the term of the Copyright and
|
a. This Public License applies for the term of the Copyright and
|
||||||
Similar Rights licensed here. However, if You fail to comply with
|
Similar Rights licensed here. However, if You fail to comply with
|
||||||
this Public License, then Your rights under this Public License
|
this Public License, then Your rights under this Public License
|
||||||
terminate automatically.
|
terminate automatically.
|
||||||
|
|
||||||
b. Where Your right to use the Licensed Material has terminated under
|
b. Where Your right to use the Licensed Material has terminated under
|
||||||
Section 6(a), it reinstates:
|
Section 6(a), it reinstates:
|
||||||
|
|
||||||
1. automatically as of the date the violation is cured, provided
|
1. automatically as of the date the violation is cured, provided
|
||||||
it is cured within 30 days of Your discovery of the
|
it is cured within 30 days of Your discovery of the
|
||||||
@ -362,48 +357,45 @@ Section 6 -- Term and Termination.
|
|||||||
right the Licensor may have to seek remedies for Your violations
|
right the Licensor may have to seek remedies for Your violations
|
||||||
of this Public License.
|
of this Public License.
|
||||||
|
|
||||||
c. For the avoidance of doubt, the Licensor may also offer the
|
c. For the avoidance of doubt, the Licensor may also offer the
|
||||||
Licensed Material under separate terms or conditions or stop
|
Licensed Material under separate terms or conditions or stop
|
||||||
distributing the Licensed Material at any time; however, doing so
|
distributing the Licensed Material at any time; however, doing so
|
||||||
will not terminate this Public License.
|
will not terminate this Public License.
|
||||||
|
|
||||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
|
||||||
License.
|
|
||||||
|
|
||||||
|
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||||
|
License.
|
||||||
|
|
||||||
Section 7 -- Other Terms and Conditions.
|
Section 7 -- Other Terms and Conditions.
|
||||||
|
|
||||||
a. The Licensor shall not be bound by any additional or different
|
a. The Licensor shall not be bound by any additional or different
|
||||||
terms or conditions communicated by You unless expressly agreed.
|
terms or conditions communicated by You unless expressly agreed.
|
||||||
|
|
||||||
b. Any arrangements, understandings, or agreements regarding the
|
|
||||||
Licensed Material not stated herein are separate from and
|
|
||||||
independent of the terms and conditions of this Public License.
|
|
||||||
|
|
||||||
|
b. Any arrangements, understandings, or agreements regarding the
|
||||||
|
Licensed Material not stated herein are separate from and
|
||||||
|
independent of the terms and conditions of this Public License.
|
||||||
|
|
||||||
Section 8 -- Interpretation.
|
Section 8 -- Interpretation.
|
||||||
|
|
||||||
a. For the avoidance of doubt, this Public License does not, and
|
a. For the avoidance of doubt, this Public License does not, and
|
||||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||||
conditions on any use of the Licensed Material that could lawfully
|
conditions on any use of the Licensed Material that could lawfully
|
||||||
be made without permission under this Public License.
|
be made without permission under this Public License.
|
||||||
|
|
||||||
b. To the extent possible, if any provision of this Public License is
|
b. To the extent possible, if any provision of this Public License is
|
||||||
deemed unenforceable, it shall be automatically reformed to the
|
deemed unenforceable, it shall be automatically reformed to the
|
||||||
minimum extent necessary to make it enforceable. If the provision
|
minimum extent necessary to make it enforceable. If the provision
|
||||||
cannot be reformed, it shall be severed from this Public License
|
cannot be reformed, it shall be severed from this Public License
|
||||||
without affecting the enforceability of the remaining terms and
|
without affecting the enforceability of the remaining terms and
|
||||||
conditions.
|
conditions.
|
||||||
|
|
||||||
c. No term or condition of this Public License will be waived and no
|
c. No term or condition of this Public License will be waived and no
|
||||||
failure to comply consented to unless expressly agreed to by the
|
failure to comply consented to unless expressly agreed to by the
|
||||||
Licensor.
|
Licensor.
|
||||||
|
|
||||||
d. Nothing in this Public License constitutes or may be interpreted
|
|
||||||
as a limitation upon, or waiver of, any privileges and immunities
|
|
||||||
that apply to the Licensor or You, including from the legal
|
|
||||||
processes of any jurisdiction or authority.
|
|
||||||
|
|
||||||
|
d. Nothing in this Public License constitutes or may be interpreted
|
||||||
|
as a limitation upon, or waiver of, any privileges and immunities
|
||||||
|
that apply to the Licensor or You, including from the legal
|
||||||
|
processes of any jurisdiction or authority.
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
|
||||||
|
@ -5,4 +5,4 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- '${CLIENT_PORT:-8000}:${CLIENT_PORT:-8000}'
|
- '${CLIENT_PORT:-8000}:${CLIENT_PORT:-8000}'
|
||||||
command: ["-l", "${CLIENT_PORT:-8000}"]
|
command: ['-l', '${CLIENT_PORT:-8000}']
|
||||||
|
@ -81,7 +81,7 @@ If you have queries about the stack, architecture of the codebase, translations,
|
|||||||
| Nicholas Carrigan | [@nhcarrigan](https://forum.freecodecamp.org/u/nhcarrigan) |
|
| Nicholas Carrigan | [@nhcarrigan](https://forum.freecodecamp.org/u/nhcarrigan) |
|
||||||
| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
|
| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
|
||||||
| Rafael D Hernandez | [@RafaelHernandez](https://forum.freecodecamp.org/u/rafaelhernandez) |
|
| Rafael D Hernandez | [@RafaelHernandez](https://forum.freecodecamp.org/u/rafaelhernandez) |
|
||||||
| Shaun Hamilton | [@sky020](https://forum.freecodecamp.org/u/sky020) |
|
| Shaun Hamilton | [@sky020](https://forum.freecodecamp.org/u/sky020) |
|
||||||
| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) |
|
| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) |
|
||||||
|
|
||||||
**You can email our developer staff at: `dev[at]freecodecamp.org`**
|
**You can email our developer staff at: `dev[at]freecodecamp.org`**
|
||||||
|
@ -15,6 +15,7 @@ There are a few terms we use when discussing our curriculum content.
|
|||||||
|
|
||||||
Using those terms, here is how the file structure would be defined:
|
Using those terms, here is how the file structure would be defined:
|
||||||
|
|
||||||
|
<!-- prettier-ignore -->
|
||||||
```md
|
```md
|
||||||
|
|
||||||
curriculum/
|
curriculum/
|
||||||
@ -64,7 +65,7 @@ When renaming a certification, you will likely want to rename the associated sup
|
|||||||
Also, you will likely want to rename the certificate and the `{superBlock}-projects` block when you rename a superBlock since they all shares a name. To rename only a superBlock you need to:
|
Also, you will likely want to rename the certificate and the `{superBlock}-projects` block when you rename a superBlock since they all shares a name. To rename only a superBlock you need to:
|
||||||
|
|
||||||
1. Rename the superBlock folder in the `curriculum/challenges/english` directory.
|
1. Rename the superBlock folder in the `curriculum/challenges/english` directory.
|
||||||
1. Rename the superBlock folder in *all* other `curriculum/challenges/{language}` directories.
|
1. Rename the superBlock folder in _all_ other `curriculum/challenges/{language}` directories.
|
||||||
1. For each block within that superBlock, update the `superBlock` value in the `meta.json` file to its dashedName. You don't need to rename any folders here. Do that when renaming a block.
|
1. For each block within that superBlock, update the `superBlock` value in the `meta.json` file to its dashedName. You don't need to rename any folders here. Do that when renaming a block.
|
||||||
1. Rename the superblock folder in `client/src/pages/learn`.
|
1. Rename the superblock folder in `client/src/pages/learn`.
|
||||||
1. Update the `index.md` file in the above folder, changing the `title` and `superBlock` values to the new name.
|
1. Update the `index.md` file in the above folder, changing the `title` and `superBlock` values to the new name.
|
||||||
@ -81,7 +82,7 @@ Also, you will likely want to rename the certificate and the `{superBlock}-proje
|
|||||||
When renaming a curriculum block, you need to:
|
When renaming a curriculum block, you need to:
|
||||||
|
|
||||||
1. Change the name of the block folder in the `curriculum/challenges/english/{superBlock}` directory.
|
1. Change the name of the block folder in the `curriculum/challenges/english/{superBlock}` directory.
|
||||||
1. Change the name of the same block folder in *all* of the other language directories to match. These must all be the same as the English structure or the build will error out.
|
1. Change the name of the same block folder in _all_ of the other language directories to match. These must all be the same as the English structure or the build will error out.
|
||||||
1. Change the name of the block folder in the `_meta` directory.
|
1. Change the name of the block folder in the `_meta` directory.
|
||||||
1. Update the `name` and `dashedName` property for that block's `meta.json` file.
|
1. Update the `name` and `dashedName` property for that block's `meta.json` file.
|
||||||
1. Update the `client/utils/help-category-map.json` to use the new block name as the key.
|
1. Update the `client/utils/help-category-map.json` to use the new block name as the key.
|
||||||
@ -96,7 +97,7 @@ When renaming a single challenge file, you need to:
|
|||||||
|
|
||||||
1. Change the name of the challenge file in the `curriculum/challenges/english` directory.
|
1. Change the name of the challenge file in the `curriculum/challenges/english` directory.
|
||||||
1. Change the name of the `title` and `dashedName` within that file.
|
1. Change the name of the `title` and `dashedName` within that file.
|
||||||
1. Change the name of the file, and the `dashedName` in those files for *all* of the other language directories to match.
|
1. Change the name of the file, and the `dashedName` in those files for _all_ of the other language directories to match.
|
||||||
1. Update the name of the challenge in the relevant `meta.json` file. The challenge names here are not used in the build, but provide a user-friendly way to identify the challenge order.
|
1. Update the name of the challenge in the relevant `meta.json` file. The challenge names here are not used in the build, but provide a user-friendly way to identify the challenge order.
|
||||||
1. If the challenge is a certificate project, update the YAML file in `curriculum/english/12-certificates/<superBlock>` to the new name.
|
1. If the challenge is a certificate project, update the YAML file in `curriculum/english/12-certificates/<superBlock>` to the new name.
|
||||||
1. If the challenge is a certificate project, update the `title` and `link` in `client/src/resources/cert-and-project-map.ts`
|
1. If the challenge is a certificate project, update the `title` and `link` in `client/src/resources/cert-and-project-map.ts`
|
||||||
|
@ -30,6 +30,7 @@ docker stop mailhog
|
|||||||
to stop it.
|
to stop it.
|
||||||
|
|
||||||
When the installation completes, you can start [using MailHog](#using-mailhog).
|
When the installation completes, you can start [using MailHog](#using-mailhog).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details><summary>Installing MailHog on macOS</summary>
|
<details><summary>Installing MailHog on macOS</summary>
|
||||||
@ -44,6 +45,7 @@ brew services start mailhog
|
|||||||
The above commands will start a mailhog service in the background.
|
The above commands will start a mailhog service in the background.
|
||||||
|
|
||||||
When the installation completes, you can start [using MailHog](#using-mailhog).
|
When the installation completes, you can start [using MailHog](#using-mailhog).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details><summary>Installing MailHog on Windows</summary>
|
<details><summary>Installing MailHog on Windows</summary>
|
||||||
@ -55,6 +57,7 @@ When the download completes, click to open the file. A Windows firewall notifica
|
|||||||
Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file.
|
Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file.
|
||||||
|
|
||||||
Start [using MailHog](#using-mailhog).
|
Start [using MailHog](#using-mailhog).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details><summary>Installing MailHog on Linux</summary>
|
<details><summary>Installing MailHog on Linux</summary>
|
||||||
@ -96,6 +99,7 @@ mailhog
|
|||||||
```
|
```
|
||||||
|
|
||||||
Start [using MailHog](#using-mailhog).
|
Start [using MailHog](#using-mailhog).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Using MailHog
|
## Using MailHog
|
||||||
|
@ -8,7 +8,6 @@ The video challenge pages are created by members of the freeCodeCamp team. YouTu
|
|||||||
|
|
||||||
You can help by creating multiple-choice questions related to video sections and adding the questions to the markdown files for the video challenges.
|
You can help by creating multiple-choice questions related to video sections and adding the questions to the markdown files for the video challenges.
|
||||||
|
|
||||||
|
|
||||||
## Challenge Template
|
## Challenge Template
|
||||||
|
|
||||||
Below is a template of what the challenge markdown files look like.
|
Below is a template of what the challenge markdown files look like.
|
||||||
@ -27,9 +26,7 @@ forumTopicId: 12345
|
|||||||
Challenge description text, in markdown
|
Challenge description text, in markdown
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<div>
|
<div>example code</div>
|
||||||
example code
|
|
||||||
</div>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# --question--
|
# --question--
|
||||||
@ -55,7 +52,6 @@ More answers
|
|||||||
## --video-solution--
|
## --video-solution--
|
||||||
|
|
||||||
The number for the correct answer goes here.
|
The number for the correct answer goes here.
|
||||||
|
|
||||||
````
|
````
|
||||||
|
|
||||||
## Creating questions for video challenges
|
## Creating questions for video challenges
|
||||||
@ -76,6 +72,7 @@ Pick a challenge markdown file from the options above.
|
|||||||
First, find the videoId.
|
First, find the videoId.
|
||||||
|
|
||||||
For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be laid out in a table format.
|
For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be laid out in a table format.
|
||||||
|
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
id: 5e9a093a74c4063ca6f7c14d
|
id: 5e9a093a74c4063ca6f7c14d
|
||||||
@ -86,7 +83,7 @@ videoId: nVAaxZ34khk
|
|||||||
```
|
```
|
||||||
|
|
||||||
Next, access the YouTube video with that `videoId`. The URL for the video will be:
|
Next, access the YouTube video with that `videoId`. The URL for the video will be:
|
||||||
https://www.youtube.com/watch?v=[videoId] (replace `videoId` in the URL with the video's ID - without square brackets)
|
https://www.youtube.com/watch?v=[videoId] (replace `videoId` in the URL with the video's ID - without square brackets)
|
||||||
|
|
||||||
In the example above, the URL is https://www.youtube.com/watch?v=nVAaxZ34khk
|
In the example above, the URL is https://www.youtube.com/watch?v=nVAaxZ34khk
|
||||||
|
|
||||||
@ -122,12 +119,14 @@ More answers
|
|||||||
1
|
1
|
||||||
```
|
```
|
||||||
|
|
||||||
Add/Update the question text under the part that shows:
|
Add/Update the question text under the part that shows:
|
||||||
|
|
||||||
```
|
```
|
||||||
# --question--
|
# --question--
|
||||||
|
|
||||||
## --text--
|
## --text--
|
||||||
```
|
```
|
||||||
|
|
||||||
Add/Update answers (`Answer 1`, `Answer 2`, and so on) under `## --answers--`. Make sure to update the number under `## --video-solution--` with the correct answer number. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks.
|
Add/Update answers (`Answer 1`, `Answer 2`, and so on) under `## --answers--`. Make sure to update the number under `## --video-solution--` with the correct answer number. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks.
|
||||||
|
|
||||||
### Question examples
|
### Question examples
|
||||||
@ -136,14 +135,16 @@ Add/Update answers (`Answer 1`, `Answer 2`, and so on) under `## --answers--`. M
|
|||||||
# --question--
|
# --question--
|
||||||
|
|
||||||
## --text--
|
## --text--
|
||||||
|
|
||||||
What does this JavaScript code log to the console?
|
What does this JavaScript code log to the console?
|
||||||
|
|
||||||
```js
|
```js
|
||||||
console.log('hello world');
|
console.log('hello world');
|
||||||
```
|
```
|
||||||
|
|
||||||
## --answers--
|
## --answers--
|
||||||
|
|
||||||
hello *world*
|
hello _world_
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -156,11 +157,11 @@ hello world
|
|||||||
---
|
---
|
||||||
|
|
||||||
## --video-solution--
|
## --video-solution--
|
||||||
|
|
||||||
3
|
3
|
||||||
````
|
````
|
||||||
|
|
||||||
````md
|
````md
|
||||||
|
|
||||||
# --question--
|
# --question--
|
||||||
|
|
||||||
## --text--
|
## --text--
|
||||||
|
@ -19,12 +19,12 @@ When opening a Pull Request(PR), you can use the below to determine the type, sc
|
|||||||
|
|
||||||
**Type:**
|
**Type:**
|
||||||
|
|
||||||
| Type | When to select |
|
| Type | When to select |
|
||||||
| :---- | :--------------------------------------------------------------------------- |
|
| :---- | :------------------------------------------------------------------------------- |
|
||||||
| fix | Changed or updated/improved functionality, tests, the verbiage of a lesson, etc. |
|
| fix | Changed or updated/improved functionality, tests, the verbiage of a lesson, etc. |
|
||||||
| feat | Only if you are adding new functionality, tests, etc. |
|
| feat | Only if you are adding new functionality, tests, etc. |
|
||||||
| chore | Changes that are not related to code, tests, or verbiage of a lesson. |
|
| chore | Changes that are not related to code, tests, or verbiage of a lesson. |
|
||||||
| docs | Changes to `/docs` directory or the contributing guidelines, etc. |
|
| docs | Changes to `/docs` directory or the contributing guidelines, etc. |
|
||||||
|
|
||||||
**Scope:**
|
**Scope:**
|
||||||
|
|
||||||
@ -135,37 +135,37 @@ When you are working on features for our upcoming curriculum `next-*` branches,
|
|||||||
|
|
||||||
a. Either delete your local branch after taking a backup (if you still have it locally):
|
a. Either delete your local branch after taking a backup (if you still have it locally):
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git checkout <pr-branch-name>
|
git checkout <pr-branch-name>
|
||||||
|
|
||||||
# example:
|
# example:
|
||||||
# git checkout feat/add-numpy-video-question
|
# git checkout feat/add-numpy-video-question
|
||||||
|
|
||||||
git checkout -b <backup-branch-name>
|
git checkout -b <backup-branch-name>
|
||||||
|
|
||||||
# example:
|
# example:
|
||||||
# git checkout -b backup-feat/add-numpy-video-question
|
# git checkout -b backup-feat/add-numpy-video-question
|
||||||
|
|
||||||
git branch -D <pr-branch-name>
|
git branch -D <pr-branch-name>
|
||||||
```
|
```
|
||||||
|
|
||||||
b. Or just a backup of your pr branch (if you do not have it locally):
|
b. Or just a backup of your pr branch (if you do not have it locally):
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git checkout -b <backup-branch-name> origin/<pr-branch-name>
|
git checkout -b <backup-branch-name> origin/<pr-branch-name>
|
||||||
|
|
||||||
# example:
|
# example:
|
||||||
# git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question
|
# git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Start off with a clean slate:
|
3. Start off with a clean slate:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git checkout -b <pr-branch-name> next-python-projects
|
git checkout -b <pr-branch-name> next-python-projects
|
||||||
git cherry-pick <commit-hash>
|
git cherry-pick <commit-hash>
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Resolve any conflicts, and cleanup, install run tests
|
4. Resolve any conflicts, and cleanup, install run tests
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm run clean
|
npm run clean
|
||||||
@ -179,7 +179,7 @@ When you are working on features for our upcoming curriculum `next-*` branches,
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
6. If everything looks good push back to the PR
|
5. If everything looks good push back to the PR
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git push --force origin <pr-branch-name>
|
git push --force origin <pr-branch-name>
|
||||||
|
@ -144,7 +144,7 @@ For the video challenges, you need to change a few things. First add the new loc
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
Then add an id for the new language to any video challenge in an audited block. For example, if `auditedCerts` in `all-langs.js` includes `scientific-computing-with-python` for `dothraki`, then you must add a `dothraki` entry in `videoLocaleIds`. The frontmatter should then look like this:
|
Then add an id for the new language to any video challenge in an audited block. For example, if `auditedCerts` in `all-langs.js` includes `scientific-computing-with-python` for `dothraki`, then you must add a `dothraki` entry in `videoLocaleIds`. The frontmatter should then look like this:
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
videoLocaleIds:
|
videoLocaleIds:
|
||||||
|
@ -287,7 +287,7 @@ Challenges should have the minimum number of tests necessary to verify that a ca
|
|||||||
|
|
||||||
Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point.
|
Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point.
|
||||||
|
|
||||||
Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. In addition, the `__helpers` object exposes several functions that simplify the process of writing tests. The available functions are defined in _client/src/utils/curriculum-helpers.ts_.
|
Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable. In addition, the `__helpers` object exposes several functions that simplify the process of writing tests. The available functions are defined in _client/src/utils/curriculum-helpers.ts_.
|
||||||
|
|
||||||
## Formatting seed code
|
## Formatting seed code
|
||||||
|
|
||||||
|
@ -84,6 +84,7 @@ One really neat trick is that you can also create custom one-off templates just
|
|||||||
```sh
|
```sh
|
||||||
npm run zip
|
npm run zip
|
||||||
```
|
```
|
||||||
|
|
||||||
## Other Reference and resources
|
## Other Reference and resources
|
||||||
|
|
||||||
### PostCSS Features Used
|
### PostCSS Features Used
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
This page describes how to contribute to the freeCodeCamp tutorials and projects that are completed using the CodeRoad VS Code extension.
|
This page describes how to contribute to the freeCodeCamp tutorials and projects that are completed using the CodeRoad VS Code extension.
|
||||||
|
|
||||||
## How the tutorials work
|
## How the tutorials work
|
||||||
|
|
||||||
The freeCodeCamp tutorials that use CodeRoad each have their own repo under the freeCodeCamp GitHub organization. They all start with `learn-`. For example, `https://github.com/freeCodeCamp/learn-bash-by-building-a-boilerplate/`.
|
The freeCodeCamp tutorials that use CodeRoad each have their own repo under the freeCodeCamp GitHub organization. They all start with `learn-`. For example, `https://github.com/freeCodeCamp/learn-bash-by-building-a-boilerplate/`.
|
||||||
|
|
||||||
Each tutorial repo has a `main` branch and a "version" branch, e.g. `v1.0.0`.
|
Each tutorial repo has a `main` branch and a "version" branch, e.g. `v1.0.0`.
|
||||||
@ -20,11 +21,13 @@ In order to make changes to commits on a version branch, you would need to rebas
|
|||||||
## How to contribute
|
## How to contribute
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
Install the [CodeRoad CLI tools](https://www.npmjs.com/package/@coderoad/cli) with `npm install -g @coderoad/cli`.
|
Install the [CodeRoad CLI tools](https://www.npmjs.com/package/@coderoad/cli) with `npm install -g @coderoad/cli`.
|
||||||
|
|
||||||
There have been some issues with the latest version. If `coderoad --version` doesn't work after installing, downgrade to `0.7.0` with `npm install -g @coderoad/cli@0.7.0`.
|
There have been some issues with the latest version. If `coderoad --version` doesn't work after installing, downgrade to `0.7.0` with `npm install -g @coderoad/cli@0.7.0`.
|
||||||
|
|
||||||
### Working on `main`
|
### Working on `main`
|
||||||
|
|
||||||
This set of instructions is for PRs that only make minor changes on `main` to **existing lessons**. That mainly consists of typo, grammar, hint, and instructional changes or fixes in the `TUTORIAL.md` file.
|
This set of instructions is for PRs that only make minor changes on `main` to **existing lessons**. That mainly consists of typo, grammar, hint, and instructional changes or fixes in the `TUTORIAL.md` file.
|
||||||
|
|
||||||
For everything else, including adding or deleting lessons, follow the [working on a version branch instructions](#working-on-version-branch). You will not need to create a new version branch for this - you can create a PR following the instructions below.
|
For everything else, including adding or deleting lessons, follow the [working on a version branch instructions](#working-on-version-branch). You will not need to create a new version branch for this - you can create a PR following the instructions below.
|
||||||
@ -47,12 +50,14 @@ Follow these instructions to make a PR, keeping in mind that instructions usuall
|
|||||||
- Make a PR
|
- Make a PR
|
||||||
|
|
||||||
### Testing changes on `main`
|
### Testing changes on `main`
|
||||||
|
|
||||||
If you want to test your changes to `main` after using the above instructions, follow these instructions:
|
If you want to test your changes to `main` after using the above instructions, follow these instructions:
|
||||||
|
|
||||||
- Follow the instructions on the [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) to run a container
|
- Follow the instructions on the [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) to run a container
|
||||||
- Start the tutorial using the `tutorial.json` file on the new branch
|
- Start the tutorial using the `tutorial.json` file on the new branch
|
||||||
|
|
||||||
### Reviewing PR's to `main`
|
### Reviewing PR's to `main`
|
||||||
|
|
||||||
If reviewing a PR that only changes `main` with instructional or grammar issues as described above, the changes in `TUTORIAL.md` should match the changes in `tutorial.json`.
|
If reviewing a PR that only changes `main` with instructional or grammar issues as described above, the changes in `TUTORIAL.md` should match the changes in `tutorial.json`.
|
||||||
|
|
||||||
The `tutorial.json` file should not have changes to commit hashes, or step/level ids. Startup or level commands or file watchers likely should not be changed either. There are exceptions if there's an issue with a step, but they should be treated with more caution.
|
The `tutorial.json` file should not have changes to commit hashes, or step/level ids. Startup or level commands or file watchers likely should not be changed either. There are exceptions if there's an issue with a step, but they should be treated with more caution.
|
||||||
@ -60,6 +65,7 @@ The `tutorial.json` file should not have changes to commit hashes, or step/level
|
|||||||
Also, keep in mind that instructions usually use the lessons around them for context, so make sure they make sense.
|
Also, keep in mind that instructions usually use the lessons around them for context, so make sure they make sense.
|
||||||
|
|
||||||
### Working on version branch
|
### Working on version branch
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
>
|
>
|
||||||
> Reminder: Never make or push changes to a version branch that is on one of the freeCodeCamp repos. Always create a new one
|
> Reminder: Never make or push changes to a version branch that is on one of the freeCodeCamp repos. Always create a new one
|
||||||
@ -86,10 +92,12 @@ Follow these instructions to create a new version:
|
|||||||
- Leave it here for reviewers
|
- Leave it here for reviewers
|
||||||
|
|
||||||
### Testing changes to a version branch
|
### Testing changes to a version branch
|
||||||
|
|
||||||
- Follow the instructions on the [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) to run a container
|
- Follow the instructions on the [rdb-alpha repo](https://github.com/freeCodeCamp/rdb-alpha) to run a container
|
||||||
- Start the tutorial using the `tutorial.json` file on whatever fork the changes are on. Make sure to use the file on the `feat: version-X.X.Y` branch and not the `main` branch
|
- Start the tutorial using the `tutorial.json` file on whatever fork the changes are on. Make sure to use the file on the `feat: version-X.X.Y` branch and not the `main` branch
|
||||||
|
|
||||||
### Pushing a new version
|
### Pushing a new version
|
||||||
|
|
||||||
Before pushing a new version, view the new `feat/version-vX.X.Y` (will be merged to `main`) branch on the user's fork. Make sure there are additions to the `CHANGELOG.md` file that include the new changes, and the version in the two spots of `coderoad.yaml` matches the new version branch.
|
Before pushing a new version, view the new `feat/version-vX.X.Y` (will be merged to `main`) branch on the user's fork. Make sure there are additions to the `CHANGELOG.md` file that include the new changes, and the version in the two spots of `coderoad.yaml` matches the new version branch.
|
||||||
|
|
||||||
If you have write access to the freeCodeCamp repo, have verified the `CHANGELOG` and `coderoad.yaml` files, have tested the changes using the instructions above, and want to push a new version of a tutorial:
|
If you have write access to the freeCodeCamp repo, have verified the `CHANGELOG` and `coderoad.yaml` files, have tested the changes using the instructions above, and want to push a new version of a tutorial:
|
||||||
@ -114,13 +122,17 @@ If you have write access to the freeCodeCamp repo, have verified the `CHANGELOG`
|
|||||||
- Finally, if any PRs for this version exists, close them
|
- Finally, if any PRs for this version exists, close them
|
||||||
|
|
||||||
### How to revert to a previous version
|
### How to revert to a previous version
|
||||||
|
|
||||||
- Create a new branch off the latest `main` with `git checkout -b revert/to-version-X.X.X`
|
- Create a new branch off the latest `main` with `git checkout -b revert/to-version-X.X.X`
|
||||||
- Revert all commits on this branch up to and including the commit of the version after the one you want to revert to. For example, you may have commits that look like this:
|
- Revert all commits on this branch up to and including the commit of the version after the one you want to revert to. For example, you may have commits that look like this:
|
||||||
|
|
||||||
```
|
```
|
||||||
fix: typo
|
fix: typo
|
||||||
release: version 1.0.1
|
release: version 1.0.1
|
||||||
fix: typo
|
fix: typo
|
||||||
release: version 1.0.0
|
release: version 1.0.0
|
||||||
```
|
```
|
||||||
|
|
||||||
If you want to revert to v1.0.0, revert all the commits from `release: version 1.0.1` and after
|
If you want to revert to v1.0.0, revert all the commits from `release: version 1.0.1` and after
|
||||||
|
|
||||||
- Create a PR. Give it a title of `revert: to version X.X.X`
|
- Create a PR. Give it a title of `revert: to version X.X.X`
|
||||||
|
24
package-lock.json
generated
24
package-lock.json
generated
@ -12055,15 +12055,6 @@
|
|||||||
"integrity": "sha1-J/uRhTaQzOs65hAdnIrsxqZ6QCw=",
|
"integrity": "sha1-J/uRhTaQzOs65hAdnIrsxqZ6QCw=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"eslint-plugin-prettier": {
|
|
||||||
"version": "3.4.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz",
|
|
||||||
"integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"prettier-linter-helpers": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"eslint-plugin-react": {
|
"eslint-plugin-react": {
|
||||||
"version": "7.26.1",
|
"version": "7.26.1",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz",
|
||||||
@ -12645,12 +12636,6 @@
|
|||||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"fast-diff": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"fast-glob": {
|
"fast-glob": {
|
||||||
"version": "3.2.5",
|
"version": "3.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
|
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
|
||||||
@ -20365,15 +20350,6 @@
|
|||||||
"integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==",
|
"integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier-linter-helpers": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"fast-diff": "^1.1.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pretty-bytes": {
|
"pretty-bytes": {
|
||||||
"version": "5.6.0",
|
"version": "5.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
|
||||||
|
15
package.json
15
package.json
@ -56,19 +56,18 @@
|
|||||||
"e2e:prd:run": "npm run build && start-test ':3000/status/ping|8000' cypress:dev:run",
|
"e2e:prd:run": "npm run build && start-test ':3000/status/ping|8000' cypress:dev:run",
|
||||||
"e2e:prd:watch": "npm run build && start-test ':3000/status/ping|8000' cypress:dev:watch",
|
"e2e:prd:watch": "npm run build && start-test ':3000/status/ping|8000' cypress:dev:watch",
|
||||||
"ensure-env": "cross-env DEBUG=fcc:* node ./tools/scripts/build/ensure-env.js",
|
"ensure-env": "cross-env DEBUG=fcc:* node ./tools/scripts/build/ensure-env.js",
|
||||||
"format": "npm-run-all -p format:*",
|
"format": "run-s format:eslint format:prettier",
|
||||||
"format:css": "npm run prettier -- --write",
|
"format:eslint": "eslint . --fix",
|
||||||
"format:js": "npm run lint:js -- --fix",
|
"format:prettier": "prettier --write .",
|
||||||
"hooks:install": "node node_modules/husky/husky.js install",
|
"hooks:install": "node node_modules/husky/husky.js install",
|
||||||
"hooks:uninstall": "node node_modules/husky/husky.js uninstall",
|
"hooks:uninstall": "node node_modules/husky/husky.js uninstall",
|
||||||
"lint": "npm-run-all ensure-env -p lint:*",
|
"lint": "npm-run-all ensure-env -p lint:*",
|
||||||
"lint:challenges": "cd ./curriculum && npm run lint",
|
"lint:challenges": "cd ./curriculum && npm run lint",
|
||||||
"lint:css": "npm run prettier -- --check",
|
|
||||||
"lint:js": "eslint --max-warnings 0 .",
|
"lint:js": "eslint --max-warnings 0 .",
|
||||||
"lint:ts": "tsc -p client && tsc -p tools/ui-components",
|
"lint:ts": "tsc -p client && tsc -p tools/ui-components",
|
||||||
"lint:translations": "cd ./client && npm run lint",
|
"lint:translations": "cd ./client && npm run lint",
|
||||||
|
"lint:prettier": "prettier --list-different .",
|
||||||
"postinstall": "npm run bootstrap",
|
"postinstall": "npm run bootstrap",
|
||||||
"prettier": "prettier \"**/*.css\"",
|
|
||||||
"seed": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seedAuthUser",
|
"seed": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seedAuthUser",
|
||||||
"seed:certified-user": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seedAuthUser certUser",
|
"seed:certified-user": "cross-env DEBUG=fcc:* node ./tools/scripts/seed/seedAuthUser certUser",
|
||||||
"serve:client": "cd ./client && npm run serve",
|
"serve:client": "cd ./client && npm run serve",
|
||||||
@ -89,11 +88,6 @@
|
|||||||
"test-ui-components": "jest tools/ui-components",
|
"test-ui-components": "jest tools/ui-components",
|
||||||
"prepare": "husky install"
|
"prepare": "husky install"
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
|
||||||
"*.css": "prettier --write",
|
|
||||||
"*.(js|ts|tsx)": "eslint --max-warnings 0 --cache --fix",
|
|
||||||
"./curriculum/challenges/**/*.md": "node ./tools/scripts/lint/index.js"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dotenv": "10.0.0",
|
"dotenv": "10.0.0",
|
||||||
"invariant": "2.2.4"
|
"invariant": "2.2.4"
|
||||||
@ -121,7 +115,6 @@
|
|||||||
"eslint-plugin-jest-dom": "3.9.2",
|
"eslint-plugin-jest-dom": "3.9.2",
|
||||||
"eslint-plugin-jsx-a11y": "6.4.1",
|
"eslint-plugin-jsx-a11y": "6.4.1",
|
||||||
"eslint-plugin-prefer-object-spread": "1.2.1",
|
"eslint-plugin-prefer-object-spread": "1.2.1",
|
||||||
"eslint-plugin-prettier": "3.4.1",
|
|
||||||
"eslint-plugin-react": "7.26.1",
|
"eslint-plugin-react": "7.26.1",
|
||||||
"eslint-plugin-react-hooks": "2.5.1",
|
"eslint-plugin-react-hooks": "2.5.1",
|
||||||
"eslint-plugin-testing-library": "4.12.4",
|
"eslint-plugin-testing-library": "4.12.4",
|
||||||
|
@ -14,7 +14,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"groupName": "Monaco Editor",
|
"groupName": "Monaco Editor",
|
||||||
"matchPackageNames": ["monaco-editor", "monaco-editor-webpack-plugin", "react-monaco-editor"]
|
"matchPackageNames": [
|
||||||
|
"monaco-editor",
|
||||||
|
"monaco-editor-webpack-plugin",
|
||||||
|
"react-monaco-editor"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"matchPackageNames": ["normalize-url"],
|
"matchPackageNames": ["normalize-url"],
|
||||||
@ -22,9 +26,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"groupName": "CodeSee",
|
"groupName": "CodeSee",
|
||||||
"matchPackagePrefixes": [
|
"matchPackagePrefixes": ["@codesee/"],
|
||||||
"@codesee/"
|
|
||||||
],
|
|
||||||
"automerge": true
|
"automerge": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -28,7 +28,7 @@ Second hint with <code>code</code>
|
|||||||
// more test code
|
// more test code
|
||||||
```
|
```
|
||||||
|
|
||||||
Third *hint* with <code>code</code> and `inline code`
|
Third _hint_ with <code>code</code> and `inline code`
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// more test code
|
// more test code
|
||||||
@ -43,8 +43,7 @@ if(let x of xs) {
|
|||||||
|
|
||||||
```html
|
```html
|
||||||
<html>
|
<html>
|
||||||
<body>
|
<body></body>
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -62,15 +61,13 @@ body {
|
|||||||
var x = 'y';
|
var x = 'y';
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
# --solutions--
|
# --solutions--
|
||||||
|
|
||||||
![html-key]()
|
![html-key]()
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<html>
|
<html>
|
||||||
<body>
|
<body></body>
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -82,4 +79,5 @@ body {
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
var x = 'y';
|
var x = 'y';
|
||||||
``
|
``;
|
||||||
|
```
|
||||||
|
@ -41,7 +41,7 @@ const AppNavBar = styled.nav`
|
|||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
display:flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background: ${({ theme }) => theme.primary};
|
background: ${({ theme }) => theme.primary};
|
||||||
@ -54,7 +54,6 @@ const logoStyle = { paddingLeft: '30px' };
|
|||||||
|
|
||||||
const titleStyle = { margin: '0', padding: '0' };
|
const titleStyle = { margin: '0', padding: '0' };
|
||||||
|
|
||||||
|
|
||||||
class App extends Component {
|
class App extends Component {
|
||||||
state = {
|
state = {
|
||||||
view: 'search',
|
view: 'search',
|
||||||
@ -63,11 +62,11 @@ class App extends Component {
|
|||||||
|
|
||||||
updateInfo() {
|
updateInfo() {
|
||||||
fetch(ENDPOINT_INFO)
|
fetch(ENDPOINT_INFO)
|
||||||
.then(response => response.json())
|
.then((response) => response.json())
|
||||||
.then(({ ok, numPRs, prRange, lastUpdate }) => {
|
.then(({ ok, numPRs, prRange, lastUpdate }) => {
|
||||||
if (ok) {
|
if (ok) {
|
||||||
const footerInfo = { numPRs, prRange, lastUpdate };
|
const footerInfo = { numPRs, prRange, lastUpdate };
|
||||||
this.setState(prevState => ({ footerInfo }));
|
this.setState((prevState) => ({ footerInfo }));
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
@ -77,7 +76,7 @@ class App extends Component {
|
|||||||
|
|
||||||
handleViewChange = ({ target: { id } }) => {
|
handleViewChange = ({ target: { id } }) => {
|
||||||
const view = id.replace('tabs-', '');
|
const view = id.replace('tabs-', '');
|
||||||
this.setState(prevState => ({ ...this.clearObj, view }));
|
this.setState((prevState) => ({ ...this.clearObj, view }));
|
||||||
if (view === 'reports' || view === 'search') {
|
if (view === 'reports' || view === 'search') {
|
||||||
this.updateInfo();
|
this.updateInfo();
|
||||||
}
|
}
|
||||||
@ -94,30 +93,51 @@ class App extends Component {
|
|||||||
} = this;
|
} = this;
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<AppNavBar>
|
<AppNavBar>
|
||||||
<a href="https://www.freecodecamp.org/" target="_blank" rel="noopener noreferrer" style={logoStyle}>
|
<a
|
||||||
<FreeCodeCampLogo />
|
href="https://www.freecodecamp.org/"
|
||||||
</a>
|
target="_blank"
|
||||||
<h1 style={titleStyle}>Contributor Tools</h1>
|
rel="noopener noreferrer"
|
||||||
<ul className="app-menu">
|
style={logoStyle}
|
||||||
<li>
|
>
|
||||||
<a href="https://github.com/freeCodeCamp/freeCodeCamp" target="_blank" rel="noopener noreferrer">GitHub</a>
|
<FreeCodeCampLogo />
|
||||||
</li>
|
</a>
|
||||||
</ul>
|
<h1 style={titleStyle}>Contributor Tools</h1>
|
||||||
</AppNavBar>
|
<ul className="app-menu">
|
||||||
<PageContainer>
|
<li>
|
||||||
|
<a
|
||||||
<Tabs view={view} onViewChange={handleViewChange} />
|
href="https://github.com/freeCodeCamp/freeCodeCamp"
|
||||||
<Container>
|
target="_blank"
|
||||||
{view === 'search' && <Search />}
|
rel="noopener noreferrer"
|
||||||
{view === 'reports' && <Pareto />}
|
>
|
||||||
{view === 'boilerplates' &&
|
GitHub
|
||||||
<Repos key='boilerplates' dataFilter={repo => repo._id.includes('boilerplate')} />}
|
</a>
|
||||||
{view === 'other' &&
|
</li>
|
||||||
<Repos key='other' dataFilter={repo => !repo._id.includes('boilerplate') && repo._id !== 'freeCodeCamp'} />}
|
</ul>
|
||||||
</Container>
|
</AppNavBar>
|
||||||
{footerInfo && <Footer footerInfo={footerInfo} />}
|
<PageContainer>
|
||||||
</PageContainer>
|
<Tabs view={view} onViewChange={handleViewChange} />
|
||||||
|
<Container>
|
||||||
|
{view === 'search' && <Search />}
|
||||||
|
{view === 'reports' && <Pareto />}
|
||||||
|
{view === 'boilerplates' && (
|
||||||
|
<Repos
|
||||||
|
key="boilerplates"
|
||||||
|
dataFilter={(repo) => repo._id.includes('boilerplate')}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
{view === 'other' && (
|
||||||
|
<Repos
|
||||||
|
key="other"
|
||||||
|
dataFilter={(repo) =>
|
||||||
|
!repo._id.includes('boilerplate') &&
|
||||||
|
repo._id !== 'freeCodeCamp'
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</Container>
|
||||||
|
{footerInfo && <Footer footerInfo={footerInfo} />}
|
||||||
|
</PageContainer>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -4,107 +4,107 @@ import React from 'react';
|
|||||||
function freeCodeCampLogo() {
|
function freeCodeCampLogo() {
|
||||||
return (
|
return (
|
||||||
<svg
|
<svg
|
||||||
aria-label='[freeCodeCamp Logo]'
|
aria-label="[freeCodeCamp Logo]"
|
||||||
height={24}
|
height={24}
|
||||||
role='math'
|
role="math"
|
||||||
version='1.1'
|
version="1.1"
|
||||||
viewBox='0 0 210 24'
|
viewBox="0 0 210 24"
|
||||||
width={210}
|
width={210}
|
||||||
xmlns='http://www.w3.org/2000/svg'
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlnsXlink='http://www.w3.org/1999/xlink'
|
xmlnsXlink="http://www.w3.org/1999/xlink"
|
||||||
>
|
>
|
||||||
<defs>
|
<defs>
|
||||||
<path
|
<path
|
||||||
d='m35.42 5.56 0.43 0.05 0.42 0.08 0.39 0.09 0.37 0.12 0.36 0.14 0.32 0.16 0.31 0.18 0.28 0.21 0.27 0.22 0.24 0.24 0.22 0.27 0.2 0.28 0.18 0.31 0.16 0.33 0.13 0.35 0.12 0.37 0.09 0.39 0.08 0.41 0.05 0.44 0.03 0.45 0.01 0.47v0.12 0.11l-0.01 0.1-0.04 0.2-0.04 0.18-0.03 0.08-0.07 0.15-0.04 0.06-0.05 0.06-0.04 0.06-0.06 0.05-0.05 0.05-0.06 0.03-0.06 0.04-0.07 0.03-0.08 0.02-0.07 0.02-0.16 0.02h-8.9v-0.07h-0.02v1.84l0.01 0.24 0.03 0.24 0.03 0.23 0.06 0.22 0.07 0.2 0.09 0.2 0.1 0.17 0.12 0.18 0.13 0.15 0.15 0.16 0.17 0.13 0.18 0.13 0.2 0.11 0.21 0.11 0.23 0.09 0.24 0.09 0.27 0.06 0.27 0.07 0.3 0.05 0.31 0.03 0.32 0.03 0.34 0.02 0.36 0.01h0.13l0.13-0.01h0.13l0.12-0.01h0.13l0.24-0.02 0.23-0.02 0.11-0.01 0.11-0.02 0.21-0.03 0.1-0.01 0.1-0.02 0.29-0.06 0.09-0.03 0.09-0.02 0.08-0.03 0.09-0.03 0.08-0.03 0.05-0.01 0.15-0.06 0.06-0.03 0.06-0.02 0.12-0.06 0.21-0.11 0.08-0.04 0.07-0.05 0.17-0.09 0.08-0.05 0.09-0.05 0.09-0.06 0.19-0.13 0.1-0.06 0.1-0.07 0.11-0.07 0.12-0.12 0.13-0.1 0.06-0.05 0.05-0.04 0.06-0.04 0.05-0.05 0.09-0.07 0.1-0.06 0.04-0.03 0.04-0.02 0.04-0.03 0.07-0.03 0.03-0.01 0.04-0.01 0.02-0.01 0.05-0.01h0.09l0.1 0.01 0.15 0.03 0.04 0.02 0.07 0.04 0.04 0.03 0.09 0.09 0.03 0.04 0.04 0.08 0.01 0.05 0.02 0.05 0.01 0.06 0.02 0.1v0.07 0.07 0.06l-0.01 0.07-0.01 0.06-0.01 0.07-0.06 0.2-0.03 0.06-0.04 0.07-0.03 0.07-0.04 0.07-0.05 0.07-0.05 0.06-0.1 0.14-0.13 0.13-0.13 0.14-0.16 0.14-0.09 0.06-0.08 0.08-0.15 0.1-0.15 0.11-0.32 0.2-0.17 0.09-0.18 0.09-0.18 0.08-0.19 0.07-0.19 0.08-0.21 0.07-0.42 0.12-0.22 0.05-0.23 0.05-0.47 0.09-0.5 0.06-0.52 0.04-0.27 0.01-0.28 0.01h-0.28-0.48l-0.47-0.03-0.45-0.04-0.42-0.07-0.41-0.07-0.38-0.09-0.36-0.11-0.34-0.13-0.31-0.15-0.3-0.16-0.27-0.18-0.26-0.2-0.22-0.21-0.21-0.23-0.19-0.25-0.16-0.26-0.14-0.29-0.13-0.29-0.1-0.32-0.07-0.34-0.06-0.35-0.03-0.37-0.01-0.39v-4.71l0.01-0.14 0.01-0.12 0.01-0.13 0.04-0.26 0.04-0.13 0.03-0.12 0.08-0.24 0.1-0.24 0.12-0.23 0.06-0.11 0.07-0.12 0.08-0.1 0.08-0.11 0.08-0.1 0.09-0.11 0.19-0.2 0.23-0.23 0.3-0.24 0.15-0.11 0.17-0.11 0.17-0.1 0.17-0.09 0.18-0.09 0.38-0.16 0.2-0.07 0.42-0.12 0.22-0.05 0.23-0.05 0.22-0.04 0.24-0.03 0.24-0.04 0.24-0.02 0.25-0.02 0.52-0.02h0.27l0.47 0.01 0.47 0.03zm-2.04 1.6-0.41 0.07-0.39 0.1-0.38 0.13-0.37 0.15-0.35 0.18-0.32 0.25-0.27 0.26-0.23 0.28-0.19 0.3-0.13 0.31-0.08 0.32-0.03 0.35v0.96h8.19l-0.09-0.98-0.25-0.83-0.43-0.69-0.6-0.53-0.76-0.38-0.95-0.23-1.11-0.07-0.43 0.01-0.42 0.04z'
|
d="m35.42 5.56 0.43 0.05 0.42 0.08 0.39 0.09 0.37 0.12 0.36 0.14 0.32 0.16 0.31 0.18 0.28 0.21 0.27 0.22 0.24 0.24 0.22 0.27 0.2 0.28 0.18 0.31 0.16 0.33 0.13 0.35 0.12 0.37 0.09 0.39 0.08 0.41 0.05 0.44 0.03 0.45 0.01 0.47v0.12 0.11l-0.01 0.1-0.04 0.2-0.04 0.18-0.03 0.08-0.07 0.15-0.04 0.06-0.05 0.06-0.04 0.06-0.06 0.05-0.05 0.05-0.06 0.03-0.06 0.04-0.07 0.03-0.08 0.02-0.07 0.02-0.16 0.02h-8.9v-0.07h-0.02v1.84l0.01 0.24 0.03 0.24 0.03 0.23 0.06 0.22 0.07 0.2 0.09 0.2 0.1 0.17 0.12 0.18 0.13 0.15 0.15 0.16 0.17 0.13 0.18 0.13 0.2 0.11 0.21 0.11 0.23 0.09 0.24 0.09 0.27 0.06 0.27 0.07 0.3 0.05 0.31 0.03 0.32 0.03 0.34 0.02 0.36 0.01h0.13l0.13-0.01h0.13l0.12-0.01h0.13l0.24-0.02 0.23-0.02 0.11-0.01 0.11-0.02 0.21-0.03 0.1-0.01 0.1-0.02 0.29-0.06 0.09-0.03 0.09-0.02 0.08-0.03 0.09-0.03 0.08-0.03 0.05-0.01 0.15-0.06 0.06-0.03 0.06-0.02 0.12-0.06 0.21-0.11 0.08-0.04 0.07-0.05 0.17-0.09 0.08-0.05 0.09-0.05 0.09-0.06 0.19-0.13 0.1-0.06 0.1-0.07 0.11-0.07 0.12-0.12 0.13-0.1 0.06-0.05 0.05-0.04 0.06-0.04 0.05-0.05 0.09-0.07 0.1-0.06 0.04-0.03 0.04-0.02 0.04-0.03 0.07-0.03 0.03-0.01 0.04-0.01 0.02-0.01 0.05-0.01h0.09l0.1 0.01 0.15 0.03 0.04 0.02 0.07 0.04 0.04 0.03 0.09 0.09 0.03 0.04 0.04 0.08 0.01 0.05 0.02 0.05 0.01 0.06 0.02 0.1v0.07 0.07 0.06l-0.01 0.07-0.01 0.06-0.01 0.07-0.06 0.2-0.03 0.06-0.04 0.07-0.03 0.07-0.04 0.07-0.05 0.07-0.05 0.06-0.1 0.14-0.13 0.13-0.13 0.14-0.16 0.14-0.09 0.06-0.08 0.08-0.15 0.1-0.15 0.11-0.32 0.2-0.17 0.09-0.18 0.09-0.18 0.08-0.19 0.07-0.19 0.08-0.21 0.07-0.42 0.12-0.22 0.05-0.23 0.05-0.47 0.09-0.5 0.06-0.52 0.04-0.27 0.01-0.28 0.01h-0.28-0.48l-0.47-0.03-0.45-0.04-0.42-0.07-0.41-0.07-0.38-0.09-0.36-0.11-0.34-0.13-0.31-0.15-0.3-0.16-0.27-0.18-0.26-0.2-0.22-0.21-0.21-0.23-0.19-0.25-0.16-0.26-0.14-0.29-0.13-0.29-0.1-0.32-0.07-0.34-0.06-0.35-0.03-0.37-0.01-0.39v-4.71l0.01-0.14 0.01-0.12 0.01-0.13 0.04-0.26 0.04-0.13 0.03-0.12 0.08-0.24 0.1-0.24 0.12-0.23 0.06-0.11 0.07-0.12 0.08-0.1 0.08-0.11 0.08-0.1 0.09-0.11 0.19-0.2 0.23-0.23 0.3-0.24 0.15-0.11 0.17-0.11 0.17-0.1 0.17-0.09 0.18-0.09 0.38-0.16 0.2-0.07 0.42-0.12 0.22-0.05 0.23-0.05 0.22-0.04 0.24-0.03 0.24-0.04 0.24-0.02 0.25-0.02 0.52-0.02h0.27l0.47 0.01 0.47 0.03zm-2.04 1.6-0.41 0.07-0.39 0.1-0.38 0.13-0.37 0.15-0.35 0.18-0.32 0.25-0.27 0.26-0.23 0.28-0.19 0.3-0.13 0.31-0.08 0.32-0.03 0.35v0.96h8.19l-0.09-0.98-0.25-0.83-0.43-0.69-0.6-0.53-0.76-0.38-0.95-0.23-1.11-0.07-0.43 0.01-0.42 0.04z"
|
||||||
id='k'
|
id="k"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m107.21 5.56 0.43 0.05 0.42 0.08 0.39 0.09 0.37 0.12 0.35 0.14 0.33 0.16 0.31 0.18 0.29 0.21 0.26 0.22 0.24 0.24 0.22 0.27 0.21 0.28 0.17 0.31 0.16 0.33 0.14 0.35 0.11 0.37 0.1 0.39 0.07 0.41 0.05 0.44 0.03 0.45 0.01 0.47v0.12l-0.01 0.11-0.02 0.2-0.02 0.1-0.02 0.09-0.03 0.09-0.02 0.08-0.03 0.07-0.04 0.08-0.04 0.06-0.1 0.12-0.1 0.1-0.13 0.07-0.13 0.05-0.08 0.02-0.16 0.02-8.92 0.01v1.76l0.01 0.24 0.02 0.24 0.04 0.23 0.06 0.22 0.07 0.2 0.08 0.2 0.11 0.17 0.11 0.18 0.14 0.15 0.15 0.16 0.17 0.13 0.18 0.13 0.19 0.11 0.22 0.11 0.23 0.09 0.24 0.09 0.26 0.06 0.28 0.07 0.3 0.05 0.31 0.03 0.32 0.03 0.34 0.02 0.36 0.01h0.13l0.13-0.01h0.13l0.25-0.01 0.24-0.02 0.22-0.02 0.12-0.01 0.11-0.02 0.31-0.04 0.2-0.04 0.19-0.04 0.09-0.03 0.09-0.02 0.09-0.03 0.08-0.03 0.13-0.04 0.04-0.02 0.06-0.02 0.05-0.02 0.06-0.03 0.05-0.02 0.07-0.03 0.2-0.1 0.14-0.08 0.08-0.05 0.08-0.04 0.08-0.05 0.18-0.1 0.18-0.12 0.2-0.13 0.1-0.07 0.11-0.07 0.06-0.06 0.07-0.06 0.05-0.05 0.07-0.05 0.05-0.05 0.06-0.04 0.11-0.09 0.05-0.03 0.05-0.04 0.04-0.03 0.05-0.03 0.04-0.03 0.04-0.02 0.04-0.03 0.07-0.03 0.12-0.04h0.02 0.09 0.05l0.06 0.01 0.09 0.02 0.05 0.01 0.12 0.06 0.12 0.12 0.03 0.04 0.04 0.08 0.01 0.05 0.02 0.05 0.02 0.11 0.01 0.05v0.07 0.13l-0.01 0.07-0.01 0.06-0.01 0.07-0.04 0.14-0.02 0.06-0.03 0.06-0.04 0.07-0.03 0.07-0.09 0.14-0.05 0.06-0.05 0.07-0.11 0.14-0.21 0.2-0.23 0.2-0.09 0.08-0.3 0.21-0.15 0.1-0.17 0.1-0.17 0.09-0.18 0.09-0.18 0.08-0.19 0.07-0.2 0.08-0.2 0.07-0.42 0.12-0.22 0.05-0.23 0.05-0.23 0.04-0.24 0.05-0.5 0.06-0.52 0.04-0.55 0.02h-0.28-0.49l-0.46-0.03-0.45-0.04-0.43-0.07-0.39-0.07-0.39-0.09-0.36-0.11-0.33-0.13-0.33-0.15-0.29-0.16-0.27-0.18-0.25-0.2-0.23-0.21-0.22-0.23-0.18-0.25-0.17-0.26-0.14-0.29-0.12-0.29-0.1-0.32-0.08-0.34-0.05-0.35-0.04-0.37-0.01-0.39v-4.58l0.01-0.13v-0.14l0.02-0.12 0.01-0.13 0.02-0.13 0.05-0.26 0.12-0.36 0.1-0.24 0.11-0.23 0.07-0.11 0.07-0.12 0.07-0.1 0.09-0.11 0.08-0.1 0.09-0.11 0.19-0.2 0.1-0.1 0.14-0.13 0.14-0.12 0.15-0.12 0.15-0.11 0.17-0.11 0.17-0.1 0.17-0.09 0.19-0.09 0.18-0.08 0.19-0.08 0.2-0.07 0.42-0.12 0.44-0.1 0.23-0.04 0.23-0.03 0.25-0.04 0.24-0.02 0.25-0.02 0.52-0.02h0.27l0.48 0.01 0.46 0.03zm-2.04 1.6-0.41 0.07-0.39 0.1-0.38 0.13-0.37 0.15-0.34 0.18-0.34 0.25-0.29 0.26-0.23 0.28-0.17 0.3-0.13 0.31-0.07 0.32-0.03 0.35v0.96h8.19l-0.09-0.98-0.25-0.83-0.43-0.69-0.6-0.53-0.76-0.38-0.95-0.23-1.11-0.07-0.43 0.01-0.42 0.04z'
|
d="m107.21 5.56 0.43 0.05 0.42 0.08 0.39 0.09 0.37 0.12 0.35 0.14 0.33 0.16 0.31 0.18 0.29 0.21 0.26 0.22 0.24 0.24 0.22 0.27 0.21 0.28 0.17 0.31 0.16 0.33 0.14 0.35 0.11 0.37 0.1 0.39 0.07 0.41 0.05 0.44 0.03 0.45 0.01 0.47v0.12l-0.01 0.11-0.02 0.2-0.02 0.1-0.02 0.09-0.03 0.09-0.02 0.08-0.03 0.07-0.04 0.08-0.04 0.06-0.1 0.12-0.1 0.1-0.13 0.07-0.13 0.05-0.08 0.02-0.16 0.02-8.92 0.01v1.76l0.01 0.24 0.02 0.24 0.04 0.23 0.06 0.22 0.07 0.2 0.08 0.2 0.11 0.17 0.11 0.18 0.14 0.15 0.15 0.16 0.17 0.13 0.18 0.13 0.19 0.11 0.22 0.11 0.23 0.09 0.24 0.09 0.26 0.06 0.28 0.07 0.3 0.05 0.31 0.03 0.32 0.03 0.34 0.02 0.36 0.01h0.13l0.13-0.01h0.13l0.25-0.01 0.24-0.02 0.22-0.02 0.12-0.01 0.11-0.02 0.31-0.04 0.2-0.04 0.19-0.04 0.09-0.03 0.09-0.02 0.09-0.03 0.08-0.03 0.13-0.04 0.04-0.02 0.06-0.02 0.05-0.02 0.06-0.03 0.05-0.02 0.07-0.03 0.2-0.1 0.14-0.08 0.08-0.05 0.08-0.04 0.08-0.05 0.18-0.1 0.18-0.12 0.2-0.13 0.1-0.07 0.11-0.07 0.06-0.06 0.07-0.06 0.05-0.05 0.07-0.05 0.05-0.05 0.06-0.04 0.11-0.09 0.05-0.03 0.05-0.04 0.04-0.03 0.05-0.03 0.04-0.03 0.04-0.02 0.04-0.03 0.07-0.03 0.12-0.04h0.02 0.09 0.05l0.06 0.01 0.09 0.02 0.05 0.01 0.12 0.06 0.12 0.12 0.03 0.04 0.04 0.08 0.01 0.05 0.02 0.05 0.02 0.11 0.01 0.05v0.07 0.13l-0.01 0.07-0.01 0.06-0.01 0.07-0.04 0.14-0.02 0.06-0.03 0.06-0.04 0.07-0.03 0.07-0.09 0.14-0.05 0.06-0.05 0.07-0.11 0.14-0.21 0.2-0.23 0.2-0.09 0.08-0.3 0.21-0.15 0.1-0.17 0.1-0.17 0.09-0.18 0.09-0.18 0.08-0.19 0.07-0.2 0.08-0.2 0.07-0.42 0.12-0.22 0.05-0.23 0.05-0.23 0.04-0.24 0.05-0.5 0.06-0.52 0.04-0.55 0.02h-0.28-0.49l-0.46-0.03-0.45-0.04-0.43-0.07-0.39-0.07-0.39-0.09-0.36-0.11-0.33-0.13-0.33-0.15-0.29-0.16-0.27-0.18-0.25-0.2-0.23-0.21-0.22-0.23-0.18-0.25-0.17-0.26-0.14-0.29-0.12-0.29-0.1-0.32-0.08-0.34-0.05-0.35-0.04-0.37-0.01-0.39v-4.58l0.01-0.13v-0.14l0.02-0.12 0.01-0.13 0.02-0.13 0.05-0.26 0.12-0.36 0.1-0.24 0.11-0.23 0.07-0.11 0.07-0.12 0.07-0.1 0.09-0.11 0.08-0.1 0.09-0.11 0.19-0.2 0.1-0.1 0.14-0.13 0.14-0.12 0.15-0.12 0.15-0.11 0.17-0.11 0.17-0.1 0.17-0.09 0.19-0.09 0.18-0.08 0.19-0.08 0.2-0.07 0.42-0.12 0.44-0.1 0.23-0.04 0.23-0.03 0.25-0.04 0.24-0.02 0.25-0.02 0.52-0.02h0.27l0.48 0.01 0.46 0.03zm-2.04 1.6-0.41 0.07-0.39 0.1-0.38 0.13-0.37 0.15-0.34 0.18-0.34 0.25-0.29 0.26-0.23 0.28-0.17 0.3-0.13 0.31-0.07 0.32-0.03 0.35v0.96h8.19l-0.09-0.98-0.25-0.83-0.43-0.69-0.6-0.53-0.76-0.38-0.95-0.23-1.11-0.07-0.43 0.01-0.42 0.04z"
|
||||||
id='j'
|
id="j"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m203.57 0.17c-0.12 0.12-0.24 0.29-0.24 0.45 0 0.29 0.34 0.69 0.97 1.33 2.63 2.53 3.95 5.62 3.94 9.35-0.01 4.13-1.4 7.45-4.1 10.01-0.57 0.51-0.8 0.91-0.8 1.25 0 0.17 0.12 0.34 0.23 0.51 0.11 0.12 0.34 0.23 0.51 0.23 0.62 0 1.5-0.73 2.64-2.17 2.22-2.72 3.22-5.73 3.28-9.82 0.05-4.1-1.23-6.88-3.75-9.75-0.9-1.03-1.66-1.56-2.17-1.56-0.17 0-0.35 0.06-0.51 0.17z'
|
d="m203.57 0.17c-0.12 0.12-0.24 0.29-0.24 0.45 0 0.29 0.34 0.69 0.97 1.33 2.63 2.53 3.95 5.62 3.94 9.35-0.01 4.13-1.4 7.45-4.1 10.01-0.57 0.51-0.8 0.91-0.8 1.25 0 0.17 0.12 0.34 0.23 0.51 0.11 0.12 0.34 0.23 0.51 0.23 0.62 0 1.5-0.73 2.64-2.17 2.22-2.72 3.22-5.73 3.28-9.82 0.05-4.1-1.23-6.88-3.75-9.75-0.9-1.03-1.66-1.56-2.17-1.56-0.17 0-0.35 0.06-0.51 0.17z"
|
||||||
id='b'
|
id="b"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m124.75 1.76c1.14 0.86 1.73 2.07 1.73 3.55 0 0.68-0.29 1.02-0.86 1.02-0.39 0-0.68-0.34-0.85-1.02-0.11-0.57-0.34-1.08-0.62-1.62-0.52-0.9-1.61-1.32-3.32-1.32-1.49 0-2.52 0.34-3.14 1.08-0.57 0.68-0.91 1.72-0.91 3.26v5.95c0 1.55 0.34 2.63 0.97 3.31 0.68 0.74 1.72 1.13 3.2 1.13 2.23 0 3.54-0.79 3.82-2.34 0.12-0.57 0.17-0.86 0.17-0.91 0.12-0.34 0.35-0.51 0.68-0.51 0.57 0 0.86 0.34 0.86 1.02 0 1.44-0.57 2.52-1.78 3.38-0.97 0.62-2.18 0.96-3.77 0.96-1.84 0-3.26-0.4-4.3-1.25-1.16-0.8-1.73-2.16-1.73-3.94v-7.16c0-3.77 1.95-5.61 5.95-5.61 1.61 0 2.86 0.34 3.9 1.02z'
|
d="m124.75 1.76c1.14 0.86 1.73 2.07 1.73 3.55 0 0.68-0.29 1.02-0.86 1.02-0.39 0-0.68-0.34-0.85-1.02-0.11-0.57-0.34-1.08-0.62-1.62-0.52-0.9-1.61-1.32-3.32-1.32-1.49 0-2.52 0.34-3.14 1.08-0.57 0.68-0.91 1.72-0.91 3.26v5.95c0 1.55 0.34 2.63 0.97 3.31 0.68 0.74 1.72 1.13 3.2 1.13 2.23 0 3.54-0.79 3.82-2.34 0.12-0.57 0.17-0.86 0.17-0.91 0.12-0.34 0.35-0.51 0.68-0.51 0.57 0 0.86 0.34 0.86 1.02 0 1.44-0.57 2.52-1.78 3.38-0.97 0.62-2.18 0.96-3.77 0.96-1.84 0-3.26-0.4-4.3-1.25-1.16-0.8-1.73-2.16-1.73-3.94v-7.16c0-3.77 1.95-5.61 5.95-5.61 1.61 0 2.86 0.34 3.9 1.02z"
|
||||||
id='n'
|
id="n"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m14.21 6.57c0-0.56 0.34-0.79 1.02-0.79h3.32c0.57 0 0.85 0.51 0.85 1.44 1.02-1.08 2.12-1.73 3.26-1.73 0.96 0 1.72 0.29 2.23 0.86 0.57 0.57 0.8 1.38 0.8 2.29 0 0.63-0.29 0.97-0.8 0.97-0.34 0-0.57-0.23-0.68-0.63-0.23-0.8-0.34-1.19-0.4-1.25-0.22-0.39-0.68-0.62-1.25-0.62-0.62 0-1.25 0.23-1.78 0.68-0.34 0.23-0.8 0.74-1.38 1.49v7.67h3.08c0.68 0 1.03 0.29 1.03 0.8 0 0.57-0.35 0.86-1.03 0.86h-7.33c-0.68 0-1.02-0.29-1.02-0.8 0-0.57 0.34-0.8 1.02-0.8h2.52v-0.07h0.02v-9.57h-2.46c-0.68 0-1.02-0.28-1.02-0.8z'
|
d="m14.21 6.57c0-0.56 0.34-0.79 1.02-0.79h3.32c0.57 0 0.85 0.51 0.85 1.44 1.02-1.08 2.12-1.73 3.26-1.73 0.96 0 1.72 0.29 2.23 0.86 0.57 0.57 0.8 1.38 0.8 2.29 0 0.63-0.29 0.97-0.8 0.97-0.34 0-0.57-0.23-0.68-0.63-0.23-0.8-0.34-1.19-0.4-1.25-0.22-0.39-0.68-0.62-1.25-0.62-0.62 0-1.25 0.23-1.78 0.68-0.34 0.23-0.8 0.74-1.38 1.49v7.67h3.08c0.68 0 1.03 0.29 1.03 0.8 0 0.57-0.35 0.86-1.03 0.86h-7.33c-0.68 0-1.02-0.29-1.02-0.8 0-0.57 0.34-0.8 1.02-0.8h2.52v-0.07h0.02v-9.57h-2.46c-0.68 0-1.02-0.28-1.02-0.8z"
|
||||||
id='l'
|
id="l"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m96.68 0.04 0.06 0.02 0.06 0.03 0.05 0.03 0.06 0.04 0.13 0.13 0.03 0.06 0.04 0.06 0.03 0.07 0.02 0.07 0.04 0.16 0.04 0.18 0.01 0.2v0.1 16.84 0.08l-0.01 0.07v0.07l-0.04 0.13-0.01 0.05-0.03 0.06-0.02 0.05-0.06 0.09-0.07 0.08-0.05 0.03-0.04 0.03-0.05 0.03-0.1 0.04-0.06 0.02-0.12 0.02-0.07 0.01h-0.11l-0.13-0.02-0.04-0.01-0.04-0.02-0.04-0.01-0.03-0.02-0.03-0.01-0.03-0.03-0.03-0.02-0.06-0.05-0.02-0.03-0.07-0.12-0.01-0.04-0.02-0.05-0.01-0.04-0.02-0.05v-0.05-0.08-0.04-0.04l-0.01-0.04v-0.04l-0.01-0.04v-0.04-0.04l-0.01-0.05v-0.04-0.05l-0.01-0.09v-0.06l-0.01-0.04v-0.06-0.11l-0.01-0.06v-0.13l-0.13 0.09-0.13 0.08-0.13 0.09-0.24 0.14-0.11 0.08-0.12 0.07-0.21 0.12-0.1 0.06-0.09 0.06-0.1 0.05-0.25 0.14-0.14 0.08-0.14 0.06-0.12 0.05-0.05 0.02-0.09 0.04-0.09 0.03-0.09 0.02-0.19 0.06-0.4 0.08-0.21 0.03-0.22 0.03-0.11 0.02-0.23 0.02h-0.12l-0.12 0.01h-0.11l-0.12 0.01h-0.46l-0.21-0.01-0.2-0.01-0.2-0.02-0.19-0.01-0.2-0.03-0.18-0.02-0.37-0.07-0.34-0.08-0.18-0.05-0.32-0.1-0.32-0.12-0.15-0.07-0.15-0.06-0.42-0.24-0.13-0.08-0.14-0.1-0.28-0.22-0.12-0.11-0.12-0.13-0.11-0.12-0.11-0.13-0.1-0.14-0.09-0.14-0.17-0.29-0.07-0.15-0.07-0.16-0.06-0.16-0.05-0.16-0.05-0.18-0.04-0.18-0.03-0.17-0.02-0.19-0.03-0.19-0.01-0.19v-5.21l0.01-0.19 0.03-0.18 0.02-0.18 0.03-0.18 0.08-0.34 0.05-0.16 0.06-0.16 0.06-0.15 0.08-0.15 0.07-0.15 0.18-0.28 0.2-0.26 0.1-0.12 0.24-0.24 0.26-0.22 0.14-0.1 0.39-0.24 0.15-0.07 0.28-0.14 0.31-0.12 0.15-0.05 0.33-0.1 0.33-0.08 0.72-0.12 0.37-0.03 0.38-0.02h0.45l0.25 0.02h0.12 0.13l0.12 0.02 0.12 0.01 0.22 0.02 0.22 0.04 0.11 0.01 0.21 0.04 0.1 0.02 0.09 0.02 0.28 0.08 0.09 0.03 0.09 0.04 0.08 0.03 0.09 0.03 0.08 0.04 0.09 0.03 0.09 0.04 0.1 0.05 0.17 0.09 0.29 0.16 0.09 0.05 0.29 0.19 0.2 0.14 0.09 0.07 0.4 0.32v-5.89l0.01-0.1v-0.2l0.04-0.18 0.01-0.08 0.03-0.08 0.02-0.07 0.03-0.07 0.03-0.06 0.04-0.06 0.04-0.04 0.04-0.05 0.04-0.04 0.05-0.04 0.1-0.06 0.06-0.02 0.13-0.03 0.06-0.01h0.14l0.07 0.01 0.14 0.03zm-5.7 7.19-0.26 0.03-0.26 0.02-0.25 0.05-0.24 0.05-0.23 0.05-0.42 0.16-0.19 0.09-0.18 0.1-0.2 0.15-0.2 0.16-0.17 0.17-0.15 0.17-0.14 0.19-0.11 0.2-0.1 0.2-0.08 0.23-0.05 0.23-0.04 0.23-0.01 0.26v4.52l0.01 0.26 0.03 0.25 0.05 0.23 0.07 0.23 0.09 0.21 0.12 0.2 0.13 0.19 0.16 0.17 0.17 0.16 0.2 0.14 0.22 0.14 0.19 0.09 0.42 0.16 0.22 0.07 0.22 0.06 0.24 0.06 0.25 0.04 0.26 0.04 0.27 0.03 0.56 0.02 0.47-0.01 0.44-0.04 0.43-0.06 0.21-0.04 0.2-0.06 0.38-0.12 0.17-0.07 0.14-0.1 0.16-0.11 0.15-0.11 0.16-0.12 0.17-0.12 0.16-0.13 0.18-0.13 0.17-0.15 0.18-0.15 0.36-0.32v-6.59l-0.21-0.16-0.21-0.14-0.2-0.14-0.2-0.13-0.19-0.12-0.18-0.11-0.17-0.11-0.16-0.09-0.3-0.14-0.13-0.06-0.19-0.07-0.38-0.12-0.2-0.05-0.4-0.08-0.21-0.03-0.21-0.02-0.21-0.01-0.43-0.01h-0.28l-0.27 0.01z'
|
d="m96.68 0.04 0.06 0.02 0.06 0.03 0.05 0.03 0.06 0.04 0.13 0.13 0.03 0.06 0.04 0.06 0.03 0.07 0.02 0.07 0.04 0.16 0.04 0.18 0.01 0.2v0.1 16.84 0.08l-0.01 0.07v0.07l-0.04 0.13-0.01 0.05-0.03 0.06-0.02 0.05-0.06 0.09-0.07 0.08-0.05 0.03-0.04 0.03-0.05 0.03-0.1 0.04-0.06 0.02-0.12 0.02-0.07 0.01h-0.11l-0.13-0.02-0.04-0.01-0.04-0.02-0.04-0.01-0.03-0.02-0.03-0.01-0.03-0.03-0.03-0.02-0.06-0.05-0.02-0.03-0.07-0.12-0.01-0.04-0.02-0.05-0.01-0.04-0.02-0.05v-0.05-0.08-0.04-0.04l-0.01-0.04v-0.04l-0.01-0.04v-0.04-0.04l-0.01-0.05v-0.04-0.05l-0.01-0.09v-0.06l-0.01-0.04v-0.06-0.11l-0.01-0.06v-0.13l-0.13 0.09-0.13 0.08-0.13 0.09-0.24 0.14-0.11 0.08-0.12 0.07-0.21 0.12-0.1 0.06-0.09 0.06-0.1 0.05-0.25 0.14-0.14 0.08-0.14 0.06-0.12 0.05-0.05 0.02-0.09 0.04-0.09 0.03-0.09 0.02-0.19 0.06-0.4 0.08-0.21 0.03-0.22 0.03-0.11 0.02-0.23 0.02h-0.12l-0.12 0.01h-0.11l-0.12 0.01h-0.46l-0.21-0.01-0.2-0.01-0.2-0.02-0.19-0.01-0.2-0.03-0.18-0.02-0.37-0.07-0.34-0.08-0.18-0.05-0.32-0.1-0.32-0.12-0.15-0.07-0.15-0.06-0.42-0.24-0.13-0.08-0.14-0.1-0.28-0.22-0.12-0.11-0.12-0.13-0.11-0.12-0.11-0.13-0.1-0.14-0.09-0.14-0.17-0.29-0.07-0.15-0.07-0.16-0.06-0.16-0.05-0.16-0.05-0.18-0.04-0.18-0.03-0.17-0.02-0.19-0.03-0.19-0.01-0.19v-5.21l0.01-0.19 0.03-0.18 0.02-0.18 0.03-0.18 0.08-0.34 0.05-0.16 0.06-0.16 0.06-0.15 0.08-0.15 0.07-0.15 0.18-0.28 0.2-0.26 0.1-0.12 0.24-0.24 0.26-0.22 0.14-0.1 0.39-0.24 0.15-0.07 0.28-0.14 0.31-0.12 0.15-0.05 0.33-0.1 0.33-0.08 0.72-0.12 0.37-0.03 0.38-0.02h0.45l0.25 0.02h0.12 0.13l0.12 0.02 0.12 0.01 0.22 0.02 0.22 0.04 0.11 0.01 0.21 0.04 0.1 0.02 0.09 0.02 0.28 0.08 0.09 0.03 0.09 0.04 0.08 0.03 0.09 0.03 0.08 0.04 0.09 0.03 0.09 0.04 0.1 0.05 0.17 0.09 0.29 0.16 0.09 0.05 0.29 0.19 0.2 0.14 0.09 0.07 0.4 0.32v-5.89l0.01-0.1v-0.2l0.04-0.18 0.01-0.08 0.03-0.08 0.02-0.07 0.03-0.07 0.03-0.06 0.04-0.06 0.04-0.04 0.04-0.05 0.04-0.04 0.05-0.04 0.1-0.06 0.06-0.02 0.13-0.03 0.06-0.01h0.14l0.07 0.01 0.14 0.03zm-5.7 7.19-0.26 0.03-0.26 0.02-0.25 0.05-0.24 0.05-0.23 0.05-0.42 0.16-0.19 0.09-0.18 0.1-0.2 0.15-0.2 0.16-0.17 0.17-0.15 0.17-0.14 0.19-0.11 0.2-0.1 0.2-0.08 0.23-0.05 0.23-0.04 0.23-0.01 0.26v4.52l0.01 0.26 0.03 0.25 0.05 0.23 0.07 0.23 0.09 0.21 0.12 0.2 0.13 0.19 0.16 0.17 0.17 0.16 0.2 0.14 0.22 0.14 0.19 0.09 0.42 0.16 0.22 0.07 0.22 0.06 0.24 0.06 0.25 0.04 0.26 0.04 0.27 0.03 0.56 0.02 0.47-0.01 0.44-0.04 0.43-0.06 0.21-0.04 0.2-0.06 0.38-0.12 0.17-0.07 0.14-0.1 0.16-0.11 0.15-0.11 0.16-0.12 0.17-0.12 0.16-0.13 0.18-0.13 0.17-0.15 0.18-0.15 0.36-0.32v-6.59l-0.21-0.16-0.21-0.14-0.2-0.14-0.2-0.13-0.19-0.12-0.18-0.11-0.17-0.11-0.16-0.09-0.3-0.14-0.13-0.06-0.19-0.07-0.38-0.12-0.2-0.05-0.4-0.08-0.21-0.03-0.21-0.02-0.21-0.01-0.43-0.01h-0.28l-0.27 0.01z"
|
||||||
id='c'
|
id="c"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m195.66 12.04c-0.99-0.25 3.06-5.03-4.13-10.75 0 0 0.94 3-3.81 9.69-4.76 6.68 2.11 10.66 2.11 10.66s-3.22-1.72 0.53-7.84c0.67-1.11 1.55-2.11 2.64-4.38 0 0 0.96 1.37 0.46 4.32-0.75 4.47 3.27 3.19 3.33 3.25 1.41 1.65-1.16 4.56-1.32 4.65s7.34-4.5 2.01-11.42c-0.36 0.36-0.83 2.08-1.82 1.82z'
|
d="m195.66 12.04c-0.99-0.25 3.06-5.03-4.13-10.75 0 0 0.94 3-3.81 9.69-4.76 6.68 2.11 10.66 2.11 10.66s-3.22-1.72 0.53-7.84c0.67-1.11 1.55-2.11 2.64-4.38 0 0 0.96 1.37 0.46 4.32-0.75 4.47 3.27 3.19 3.33 3.25 1.41 1.65-1.16 4.56-1.32 4.65s7.34-4.5 2.01-11.42c-0.36 0.36-0.83 2.08-1.82 1.82z"
|
||||||
id='e'
|
id="e"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m135.26 5.37 0.19 0.01 0.18 0.02 0.18 0.01 0.18 0.02 0.34 0.04 0.16 0.02 0.16 0.04 0.15 0.02 0.14 0.04 0.15 0.03 0.28 0.08 0.26 0.08 0.36 0.15 0.12 0.06 0.11 0.05 0.1 0.06 0.11 0.06 0.12 0.08 0.1 0.09 0.11 0.09 0.2 0.2 0.18 0.22 0.16 0.24 0.07 0.12 0.14 0.26 0.12 0.29 0.05 0.14 0.04 0.15 0.05 0.16 0.04 0.15 0.03 0.17 0.02 0.16 0.04 0.36 0.01 0.18 0.02 0.18v6.1 0.08 0.08l0.02 0.28 0.01 0.07 0.02 0.12 0.02 0.06 0.01 0.06 0.03 0.11 0.02 0.05 0.06 0.14 0.03 0.04 0.02 0.04 0.03 0.04 0.06 0.07 0.08 0.08 0.02 0.01v0.01h0.03l0.01 0.02 0.05 0.02 0.02 0.01 0.05 0.02 0.03 0.02 0.04 0.01 0.11 0.04 0.12 0.05 0.1 0.04 0.04 0.01 0.05 0.02 0.05 0.03 0.09 0.03 0.07 0.03 0.02 0.02 0.03 0.02 0.05 0.04 0.02 0.02 0.02 0.03 0.02 0.02 0.04 0.06 0.03 0.06 0.01 0.04 0.01 0.03 0.02 0.08v0.04l0.01 0.04 0.01 0.05v0.05l0.01 0.05v0.21l-0.02 0.05v0.04l-0.01 0.05-0.01 0.04-0.02 0.04-0.01 0.04-0.02 0.03-0.03 0.04-0.05 0.06-0.02 0.03-0.04 0.02-0.11 0.06-0.08 0.04-0.1 0.02-0.1 0.01h-0.06-0.11-0.02-0.01l-0.03-0.01h-0.02-0.02l-0.1-0.02-0.03-0.02h-0.03l-0.06-0.02-0.11-0.03-0.12-0.03-0.05-0.01-0.04-0.01-0.05-0.02-0.21-0.07-0.07-0.02-0.07-0.03-0.24-0.08-0.1-0.04-0.05-0.01-0.04-0.02-0.05-0.01-0.04-0.01-0.04-0.02-0.03-0.01-0.07-0.02-0.07-0.03-0.03-0.01-0.01-0.01-0.02-0.01h-0.03-0.04l-0.03-0.02-0.03-0.01-0.04-0.01-0.02-0.02-0.06-0.04-0.03-0.03-0.02-0.03-0.03-0.03-0.02-0.03-0.02-0.04-0.03-0.04-0.02-0.04-0.01-0.04-0.03-0.04-0.02-0.05-0.03-0.09-0.06-0.21-0.02-0.06-0.23 0.16-0.22 0.15-0.1 0.07-0.2 0.12-0.1 0.07-0.34 0.22-0.08 0.04-0.07 0.05-0.21 0.12-0.06 0.04-0.16 0.08-0.05 0.02-0.09 0.04-0.04 0.01-0.06 0.04-0.07 0.02-0.15 0.05-0.4 0.1-0.08 0.01-0.18 0.03-0.09 0.01-0.09 0.02-0.28 0.03-0.2 0.02h-0.1l-0.11 0.01h-0.1-0.49-0.16l-0.16-0.01-0.31-0.02-0.3-0.03-0.15-0.02-0.15-0.03-0.28-0.05-0.27-0.06-0.14-0.04-0.13-0.04-0.12-0.04-0.13-0.05-0.24-0.09-0.12-0.06-0.11-0.05-0.11-0.06-0.11-0.07-0.11-0.06-0.1-0.07-0.24-0.16-0.22-0.19-0.1-0.1-0.09-0.1-0.1-0.1-0.24-0.33-0.14-0.24-0.06-0.12-0.06-0.13-0.05-0.12-0.05-0.13-0.08-0.27-0.06-0.28-0.04-0.3-0.02-0.3v-0.32l0.01-0.15 0.01-0.16 0.02-0.14 0.05-0.3 0.07-0.28 0.05-0.14 0.11-0.26 0.12-0.26 0.15-0.24 0.16-0.22 0.09-0.11 0.1-0.11 0.2-0.2 0.11-0.09 0.23-0.18 0.13-0.08 0.33-0.24 0.24-0.13 0.26-0.13 0.13-0.05 0.26-0.11 0.14-0.05 0.42-0.12 0.15-0.03 0.14-0.04 0.15-0.02 0.15-0.03 0.16-0.02 0.15-0.01 0.16-0.02 0.48-0.03h0.3l0.13 0.01h0.14l0.29 0.02 0.14 0.02 0.15 0.02 0.14 0.02 0.16 0.02 0.14 0.02 0.15 0.04 0.16 0.02 0.15 0.03 0.32 0.08 0.49 0.12 0.16 0.05 0.51 0.15 0.36 0.12 0.17 0.06v-2.01-0.12l-0.01-0.11-0.01-0.1-0.01-0.12-0.02-0.09-0.02-0.11-0.04-0.1-0.03-0.1-0.03-0.09-0.05-0.09-0.04-0.09-0.11-0.16-0.06-0.09-0.06-0.07-0.07-0.08-0.15-0.14-0.08-0.07-0.18-0.12-0.1-0.06-0.2-0.1-0.11-0.06-0.07-0.03-0.16-0.06-0.34-0.11-0.26-0.06-0.1-0.02-0.09-0.01-0.1-0.02-0.09-0.01-0.3-0.03-0.1-0.02h-0.1l-0.11-0.01-0.1-0.01h-0.11-0.1-0.47l-0.25 0.01-0.24 0.01-0.23 0.02-0.42 0.06-0.2 0.03-0.19 0.04-0.17 0.05-0.17 0.06-0.16 0.05-0.15 0.07-0.14 0.07-0.13 0.07-0.12 0.09-0.12 0.08-0.1 0.1-0.09 0.1-0.09 0.11-0.08 0.11-0.06 0.11-0.06 0.13-0.05 0.13-0.04 0.14-0.03 0.14-0.01 0.07-0.02 0.06-0.04 0.22-0.02 0.09-0.01 0.05-0.01 0.04-0.01 0.03v0.04l-0.02 0.06-0.01 0.06-0.01 0.04v0.02l-0.01 0.02v0.01 0.01 0.03l-0.02 0.03-0.03 0.07-0.01 0.02-0.05 0.06-0.01 0.02-0.03 0.02-0.05 0.05-0.02 0.01-0.02 0.02-0.03 0.01-0.03 0.02-0.09 0.03-0.04 0.01-0.06 0.02h-0.04-0.04l-0.03 0.01h-0.15l-0.06-0.01-0.13-0.02-0.06-0.01-0.15-0.06-0.1-0.06-0.04-0.04-0.04-0.03-0.08-0.08-0.03-0.05-0.05-0.09-0.03-0.06-0.01-0.06-0.04-0.12-0.01-0.06v-0.07l-0.01-0.08v-0.17l0.01-0.1v-0.1l0.02-0.1 0.01-0.1 0.04-0.2 0.05-0.2 0.03-0.1 0.03-0.09 0.08-0.2 0.05-0.1 0.09-0.19 0.18-0.28 0.06-0.09 0.07-0.09 0.22-0.27 0.08-0.09 0.1-0.11 0.22-0.2 0.12-0.09 0.26-0.18 0.14-0.08 0.15-0.08 0.16-0.08 0.15-0.06 0.17-0.07 0.18-0.06 0.18-0.05 0.38-0.1 0.2-0.04 0.42-0.08 0.44-0.05 0.46-0.04 0.24-0.01h0.25l0.25-0.01h0.2l0.2 0.01h0.2zm-2.41 7.31-0.68 0.24-0.54 0.35-0.38 0.44-0.23 0.54-0.07 0.64 0.02 0.34 0.06 0.31 0.11 0.3 0.15 0.27 0.2 0.25 0.25 0.2 0.29 0.17 0.25 0.13 0.28 0.12 0.3 0.09 0.32 0.08 0.34 0.05 0.36 0.03 0.38 0.01 0.34-0.01 0.32-0.02 0.32-0.04 0.31-0.07 0.3-0.07 0.3-0.11 0.29-0.13 0.2-0.12 0.22-0.15 0.25-0.16 0.26-0.18 0.28-0.21 0.3-0.22 0.31-0.23v-2.41l-0.54-0.16-0.53-0.14-0.53-0.11-0.52-0.09-0.51-0.07-0.49-0.04-0.48-0.01-0.98 0.05-0.83 0.14z'
|
d="m135.26 5.37 0.19 0.01 0.18 0.02 0.18 0.01 0.18 0.02 0.34 0.04 0.16 0.02 0.16 0.04 0.15 0.02 0.14 0.04 0.15 0.03 0.28 0.08 0.26 0.08 0.36 0.15 0.12 0.06 0.11 0.05 0.1 0.06 0.11 0.06 0.12 0.08 0.1 0.09 0.11 0.09 0.2 0.2 0.18 0.22 0.16 0.24 0.07 0.12 0.14 0.26 0.12 0.29 0.05 0.14 0.04 0.15 0.05 0.16 0.04 0.15 0.03 0.17 0.02 0.16 0.04 0.36 0.01 0.18 0.02 0.18v6.1 0.08 0.08l0.02 0.28 0.01 0.07 0.02 0.12 0.02 0.06 0.01 0.06 0.03 0.11 0.02 0.05 0.06 0.14 0.03 0.04 0.02 0.04 0.03 0.04 0.06 0.07 0.08 0.08 0.02 0.01v0.01h0.03l0.01 0.02 0.05 0.02 0.02 0.01 0.05 0.02 0.03 0.02 0.04 0.01 0.11 0.04 0.12 0.05 0.1 0.04 0.04 0.01 0.05 0.02 0.05 0.03 0.09 0.03 0.07 0.03 0.02 0.02 0.03 0.02 0.05 0.04 0.02 0.02 0.02 0.03 0.02 0.02 0.04 0.06 0.03 0.06 0.01 0.04 0.01 0.03 0.02 0.08v0.04l0.01 0.04 0.01 0.05v0.05l0.01 0.05v0.21l-0.02 0.05v0.04l-0.01 0.05-0.01 0.04-0.02 0.04-0.01 0.04-0.02 0.03-0.03 0.04-0.05 0.06-0.02 0.03-0.04 0.02-0.11 0.06-0.08 0.04-0.1 0.02-0.1 0.01h-0.06-0.11-0.02-0.01l-0.03-0.01h-0.02-0.02l-0.1-0.02-0.03-0.02h-0.03l-0.06-0.02-0.11-0.03-0.12-0.03-0.05-0.01-0.04-0.01-0.05-0.02-0.21-0.07-0.07-0.02-0.07-0.03-0.24-0.08-0.1-0.04-0.05-0.01-0.04-0.02-0.05-0.01-0.04-0.01-0.04-0.02-0.03-0.01-0.07-0.02-0.07-0.03-0.03-0.01-0.01-0.01-0.02-0.01h-0.03-0.04l-0.03-0.02-0.03-0.01-0.04-0.01-0.02-0.02-0.06-0.04-0.03-0.03-0.02-0.03-0.03-0.03-0.02-0.03-0.02-0.04-0.03-0.04-0.02-0.04-0.01-0.04-0.03-0.04-0.02-0.05-0.03-0.09-0.06-0.21-0.02-0.06-0.23 0.16-0.22 0.15-0.1 0.07-0.2 0.12-0.1 0.07-0.34 0.22-0.08 0.04-0.07 0.05-0.21 0.12-0.06 0.04-0.16 0.08-0.05 0.02-0.09 0.04-0.04 0.01-0.06 0.04-0.07 0.02-0.15 0.05-0.4 0.1-0.08 0.01-0.18 0.03-0.09 0.01-0.09 0.02-0.28 0.03-0.2 0.02h-0.1l-0.11 0.01h-0.1-0.49-0.16l-0.16-0.01-0.31-0.02-0.3-0.03-0.15-0.02-0.15-0.03-0.28-0.05-0.27-0.06-0.14-0.04-0.13-0.04-0.12-0.04-0.13-0.05-0.24-0.09-0.12-0.06-0.11-0.05-0.11-0.06-0.11-0.07-0.11-0.06-0.1-0.07-0.24-0.16-0.22-0.19-0.1-0.1-0.09-0.1-0.1-0.1-0.24-0.33-0.14-0.24-0.06-0.12-0.06-0.13-0.05-0.12-0.05-0.13-0.08-0.27-0.06-0.28-0.04-0.3-0.02-0.3v-0.32l0.01-0.15 0.01-0.16 0.02-0.14 0.05-0.3 0.07-0.28 0.05-0.14 0.11-0.26 0.12-0.26 0.15-0.24 0.16-0.22 0.09-0.11 0.1-0.11 0.2-0.2 0.11-0.09 0.23-0.18 0.13-0.08 0.33-0.24 0.24-0.13 0.26-0.13 0.13-0.05 0.26-0.11 0.14-0.05 0.42-0.12 0.15-0.03 0.14-0.04 0.15-0.02 0.15-0.03 0.16-0.02 0.15-0.01 0.16-0.02 0.48-0.03h0.3l0.13 0.01h0.14l0.29 0.02 0.14 0.02 0.15 0.02 0.14 0.02 0.16 0.02 0.14 0.02 0.15 0.04 0.16 0.02 0.15 0.03 0.32 0.08 0.49 0.12 0.16 0.05 0.51 0.15 0.36 0.12 0.17 0.06v-2.01-0.12l-0.01-0.11-0.01-0.1-0.01-0.12-0.02-0.09-0.02-0.11-0.04-0.1-0.03-0.1-0.03-0.09-0.05-0.09-0.04-0.09-0.11-0.16-0.06-0.09-0.06-0.07-0.07-0.08-0.15-0.14-0.08-0.07-0.18-0.12-0.1-0.06-0.2-0.1-0.11-0.06-0.07-0.03-0.16-0.06-0.34-0.11-0.26-0.06-0.1-0.02-0.09-0.01-0.1-0.02-0.09-0.01-0.3-0.03-0.1-0.02h-0.1l-0.11-0.01-0.1-0.01h-0.11-0.1-0.47l-0.25 0.01-0.24 0.01-0.23 0.02-0.42 0.06-0.2 0.03-0.19 0.04-0.17 0.05-0.17 0.06-0.16 0.05-0.15 0.07-0.14 0.07-0.13 0.07-0.12 0.09-0.12 0.08-0.1 0.1-0.09 0.1-0.09 0.11-0.08 0.11-0.06 0.11-0.06 0.13-0.05 0.13-0.04 0.14-0.03 0.14-0.01 0.07-0.02 0.06-0.04 0.22-0.02 0.09-0.01 0.05-0.01 0.04-0.01 0.03v0.04l-0.02 0.06-0.01 0.06-0.01 0.04v0.02l-0.01 0.02v0.01 0.01 0.03l-0.02 0.03-0.03 0.07-0.01 0.02-0.05 0.06-0.01 0.02-0.03 0.02-0.05 0.05-0.02 0.01-0.02 0.02-0.03 0.01-0.03 0.02-0.09 0.03-0.04 0.01-0.06 0.02h-0.04-0.04l-0.03 0.01h-0.15l-0.06-0.01-0.13-0.02-0.06-0.01-0.15-0.06-0.1-0.06-0.04-0.04-0.04-0.03-0.08-0.08-0.03-0.05-0.05-0.09-0.03-0.06-0.01-0.06-0.04-0.12-0.01-0.06v-0.07l-0.01-0.08v-0.17l0.01-0.1v-0.1l0.02-0.1 0.01-0.1 0.04-0.2 0.05-0.2 0.03-0.1 0.03-0.09 0.08-0.2 0.05-0.1 0.09-0.19 0.18-0.28 0.06-0.09 0.07-0.09 0.22-0.27 0.08-0.09 0.1-0.11 0.22-0.2 0.12-0.09 0.26-0.18 0.14-0.08 0.15-0.08 0.16-0.08 0.15-0.06 0.17-0.07 0.18-0.06 0.18-0.05 0.38-0.1 0.2-0.04 0.42-0.08 0.44-0.05 0.46-0.04 0.24-0.01h0.25l0.25-0.01h0.2l0.2 0.01h0.2zm-2.41 7.31-0.68 0.24-0.54 0.35-0.38 0.44-0.23 0.54-0.07 0.64 0.02 0.34 0.06 0.31 0.11 0.3 0.15 0.27 0.2 0.25 0.25 0.2 0.29 0.17 0.25 0.13 0.28 0.12 0.3 0.09 0.32 0.08 0.34 0.05 0.36 0.03 0.38 0.01 0.34-0.01 0.32-0.02 0.32-0.04 0.31-0.07 0.3-0.07 0.3-0.11 0.29-0.13 0.2-0.12 0.22-0.15 0.25-0.16 0.26-0.18 0.28-0.21 0.3-0.22 0.31-0.23v-2.41l-0.54-0.16-0.53-0.14-0.53-0.11-0.52-0.09-0.51-0.07-0.49-0.04-0.48-0.01-0.98 0.05-0.83 0.14z"
|
||||||
id='m'
|
id="m"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m0.97 5.8h1.84v-1.61c0-2.8 1.44-4.19 4.24-4.19 1.14 0 2.12 0.23 2.86 0.63 0.96 0.57 1.5 1.5 1.5 2.58 0 0.73-0.29 1.02-0.8 1.02-0.34 0-0.68-0.23-0.86-0.63-0.22-0.73-0.45-1.13-0.56-1.32-0.34-0.4-1.03-0.63-2.01-0.63-1.72 0-2.57 0.85-2.57 2.58v1.55h3.31c0.74 0 1.08 0.29 1.08 0.79 0 0.57-0.34 0.8-1.08 0.8h-3.31v10.48c0 0.62-0.29 0.96-0.8 0.96-0.57 0-0.8-0.34-0.8-0.96v-10.46h-2.04c-0.63 0-0.97-0.28-0.97-0.79 0-0.58 0.34-0.8 0.97-0.8z'
|
d="m0.97 5.8h1.84v-1.61c0-2.8 1.44-4.19 4.24-4.19 1.14 0 2.12 0.23 2.86 0.63 0.96 0.57 1.5 1.5 1.5 2.58 0 0.73-0.29 1.02-0.8 1.02-0.34 0-0.68-0.23-0.86-0.63-0.22-0.73-0.45-1.13-0.56-1.32-0.34-0.4-1.03-0.63-2.01-0.63-1.72 0-2.57 0.85-2.57 2.58v1.55h3.31c0.74 0 1.08 0.29 1.08 0.79 0 0.57-0.34 0.8-1.08 0.8h-3.31v10.48c0 0.62-0.29 0.96-0.8 0.96-0.57 0-0.8-0.34-0.8-0.96v-10.46h-2.04c-0.63 0-0.97-0.28-0.97-0.79 0-0.58 0.34-0.8 0.97-0.8z"
|
||||||
id='a'
|
id="a"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m78.8 5.55 0.61 0.08 0.56 0.12 0.52 0.15 0.48 0.18 0.43 0.22 0.38 0.25 0.34 0.29 0.29 0.32 0.25 0.35 0.21 0.39 0.16 0.42 0.11 0.45 0.07 0.49 0.02 0.51v4.71l-0.02 0.52-0.07 0.48-0.11 0.46-0.15 0.42-0.2 0.38-0.24 0.35-0.29 0.32-0.33 0.29-0.38 0.25-0.42 0.22-0.47 0.19-0.51 0.15-0.55 0.11-0.6 0.09-0.64 0.05-0.68 0.02-0.72-0.01-0.68-0.04-0.63-0.08-0.58-0.11-0.53-0.15-0.48-0.18-0.43-0.22-0.39-0.25-0.34-0.29-0.3-0.32-0.25-0.36-0.21-0.38-0.15-0.43-0.11-0.46-0.07-0.49-0.02-0.53v-4.71l0.02-0.51 0.07-0.49 0.11-0.45 0.16-0.42 0.2-0.39 0.26-0.35 0.29-0.32 0.34-0.29 0.39-0.25 0.43-0.22 0.47-0.18 0.52-0.15 0.56-0.12 0.61-0.08 0.65-0.06 0.7-0.01 0.69 0.01 0.65 0.06zm-2.67 1.61-0.53 0.1-0.47 0.13-0.42 0.17-0.37 0.21-0.31 0.24-0.25 0.28-0.2 0.32-0.14 0.35-0.09 0.39-0.02 0.42v4.71l0.02 0.42 0.09 0.39 0.14 0.36 0.21 0.31 0.26 0.28 0.31 0.24 0.37 0.2 0.43 0.17 0.49 0.12 0.55 0.09 0.6 0.04h0.66 0.64l0.59-0.04 0.54-0.08 0.48-0.12 0.42-0.16 0.37-0.2 0.31-0.23 0.26-0.28 0.2-0.32 0.14-0.36 0.09-0.4 0.03-0.43v-4.71l-0.03-0.42-0.09-0.39-0.14-0.35-0.2-0.32-0.27-0.28-0.31-0.24-0.38-0.21-0.44-0.17-0.49-0.13-0.55-0.1-0.62-0.05-0.67-0.02-0.63 0.02-0.58 0.05z'
|
d="m78.8 5.55 0.61 0.08 0.56 0.12 0.52 0.15 0.48 0.18 0.43 0.22 0.38 0.25 0.34 0.29 0.29 0.32 0.25 0.35 0.21 0.39 0.16 0.42 0.11 0.45 0.07 0.49 0.02 0.51v4.71l-0.02 0.52-0.07 0.48-0.11 0.46-0.15 0.42-0.2 0.38-0.24 0.35-0.29 0.32-0.33 0.29-0.38 0.25-0.42 0.22-0.47 0.19-0.51 0.15-0.55 0.11-0.6 0.09-0.64 0.05-0.68 0.02-0.72-0.01-0.68-0.04-0.63-0.08-0.58-0.11-0.53-0.15-0.48-0.18-0.43-0.22-0.39-0.25-0.34-0.29-0.3-0.32-0.25-0.36-0.21-0.38-0.15-0.43-0.11-0.46-0.07-0.49-0.02-0.53v-4.71l0.02-0.51 0.07-0.49 0.11-0.45 0.16-0.42 0.2-0.39 0.26-0.35 0.29-0.32 0.34-0.29 0.39-0.25 0.43-0.22 0.47-0.18 0.52-0.15 0.56-0.12 0.61-0.08 0.65-0.06 0.7-0.01 0.69 0.01 0.65 0.06zm-2.67 1.61-0.53 0.1-0.47 0.13-0.42 0.17-0.37 0.21-0.31 0.24-0.25 0.28-0.2 0.32-0.14 0.35-0.09 0.39-0.02 0.42v4.71l0.02 0.42 0.09 0.39 0.14 0.36 0.21 0.31 0.26 0.28 0.31 0.24 0.37 0.2 0.43 0.17 0.49 0.12 0.55 0.09 0.6 0.04h0.66 0.64l0.59-0.04 0.54-0.08 0.48-0.12 0.42-0.16 0.37-0.2 0.31-0.23 0.26-0.28 0.2-0.32 0.14-0.36 0.09-0.4 0.03-0.43v-4.71l-0.03-0.42-0.09-0.39-0.14-0.35-0.2-0.32-0.27-0.28-0.31-0.24-0.38-0.21-0.44-0.17-0.49-0.13-0.55-0.1-0.62-0.05-0.67-0.02-0.63 0.02-0.58 0.05z"
|
||||||
id='i'
|
id="i"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m181.88 0.18c0.12 0.11 0.23 0.28 0.23 0.45 0 0.29-0.34 0.68-0.97 1.32-2.62 2.53-3.94 5.62-3.93 9.36 0.01 4.12 1.4 7.44 4.1 10.01 0.56 0.5 0.8 0.9 0.8 1.24 0 0.17-0.12 0.35-0.23 0.51-0.11 0.12-0.34 0.24-0.51 0.24-0.63 0-1.5-0.74-2.64-2.18-2.22-2.72-3.22-5.72-3.28-9.82-0.05-4.1 1.23-6.88 3.75-9.75 0.9-1.02 1.66-1.56 2.17-1.56 0.17 0 0.34 0.06 0.51 0.18z'
|
d="m181.88 0.18c0.12 0.11 0.23 0.28 0.23 0.45 0 0.29-0.34 0.68-0.97 1.32-2.62 2.53-3.94 5.62-3.93 9.36 0.01 4.12 1.4 7.44 4.1 10.01 0.56 0.5 0.8 0.9 0.8 1.24 0 0.17-0.12 0.35-0.23 0.51-0.11 0.12-0.34 0.24-0.51 0.24-0.63 0-1.5-0.74-2.64-2.18-2.22-2.72-3.22-5.72-3.28-9.82-0.05-4.1 1.23-6.88 3.75-9.75 0.9-1.02 1.66-1.56 2.17-1.56 0.17 0 0.34 0.06 0.51 0.18z"
|
||||||
id='f'
|
id="f"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m149.59 6.94c0.45-0.57 0.85-0.92 1.25-1.08 0.39-0.23 0.96-0.34 1.6-0.34 1.96 0 2.98 0.96 2.98 2.85v9.29c0 0.79-0.28 1.14-0.85 1.14s-0.8-0.35-0.8-1.14v-8.7c0-1.19-0.51-1.83-1.49-1.83-0.74 0-1.5 0.45-2.12 1.32v9.29c0 0.79-0.29 1.13-0.8 1.13s-0.8-0.34-0.8-1.13v-8.59c0-1.33-0.56-1.95-1.61-1.95-0.68 0-1.32 0.46-2 1.33v9.22c0 0.8-0.29 1.14-0.86 1.14s-0.79-0.34-0.79-1.14v-11.38c0-0.57 0.22-0.8 0.68-0.8 0.23 0 0.45 0.17 0.57 0.51 0.11 0.15 0.17 0.44 0.17 0.78 0.53-0.57 0.87-0.91 1.02-1.03 0.34-0.22 0.8-0.34 1.44-0.34 0.91 0 1.72 0.46 2.41 1.45z'
|
d="m149.59 6.94c0.45-0.57 0.85-0.92 1.25-1.08 0.39-0.23 0.96-0.34 1.6-0.34 1.96 0 2.98 0.96 2.98 2.85v9.29c0 0.79-0.28 1.14-0.85 1.14s-0.8-0.35-0.8-1.14v-8.7c0-1.19-0.51-1.83-1.49-1.83-0.74 0-1.5 0.45-2.12 1.32v9.29c0 0.79-0.29 1.13-0.8 1.13s-0.8-0.34-0.8-1.13v-8.59c0-1.33-0.56-1.95-1.61-1.95-0.68 0-1.32 0.46-2 1.33v9.22c0 0.8-0.29 1.14-0.86 1.14s-0.79-0.34-0.79-1.14v-11.38c0-0.57 0.22-0.8 0.68-0.8 0.23 0 0.45 0.17 0.57 0.51 0.11 0.15 0.17 0.44 0.17 0.78 0.53-0.57 0.87-0.91 1.02-1.03 0.34-0.22 0.8-0.34 1.44-0.34 0.91 0 1.72 0.46 2.41 1.45z"
|
||||||
id='g'
|
id="g"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m49.79 5.56 0.44 0.05 0.41 0.08 0.4 0.09 0.37 0.12 0.35 0.14 0.33 0.16 0.31 0.18 0.28 0.21 0.27 0.22 0.24 0.24 0.22 0.27 0.2 0.28 0.18 0.31 0.16 0.33 0.13 0.35 0.11 0.37 0.1 0.39 0.07 0.41 0.06 0.44 0.03 0.45 0.01 0.47v0.12l-0.01 0.11-0.01 0.1-0.03 0.2-0.02 0.09-0.03 0.09-0.02 0.08-0.08 0.15-0.03 0.06-0.1 0.12-0.05 0.05-0.06 0.05-0.05 0.03-0.07 0.04-0.07 0.03-0.14 0.04-0.08 0.01-0.09 0.01h-8.89v-0.07h-0.02v1.84l0.01 0.24 0.02 0.24 0.04 0.23 0.06 0.22 0.06 0.2 0.09 0.2 0.1 0.17 0.12 0.18 0.14 0.15 0.15 0.16 0.16 0.13 0.18 0.13 0.2 0.11 0.22 0.11 0.22 0.09 0.25 0.09 0.26 0.06 0.28 0.07 0.29 0.05 0.31 0.03 0.33 0.03 0.34 0.02 0.36 0.01h0.13l0.13-0.01h0.12l0.13-0.01h0.12l0.24-0.02 0.23-0.02 0.11-0.01 0.12-0.02 0.31-0.04 0.1-0.02 0.09-0.02 0.1-0.02 0.09-0.02 0.1-0.03 0.09-0.02 0.16-0.06 0.09-0.03 0.04-0.01 0.05-0.02 0.06-0.02 0.05-0.02 0.05-0.03 0.06-0.02 0.06-0.03 0.07-0.03 0.14-0.07 0.14-0.08 0.08-0.05 0.08-0.04 0.08-0.05 0.18-0.1 0.08-0.06 0.19-0.13 0.1-0.06 0.11-0.07 0.1-0.07 0.13-0.12 0.13-0.1 0.05-0.05 0.06-0.04 0.05-0.04 0.06-0.05 0.09-0.07 0.09-0.06 0.05-0.03 0.04-0.02 0.04-0.03 0.07-0.03 0.09-0.03 0.05-0.01h0.09l0.1 0.01 0.15 0.03 0.04 0.02 0.07 0.04 0.04 0.03 0.09 0.09 0.03 0.04 0.04 0.08 0.02 0.1 0.02 0.06v0.05l0.01 0.05v0.07l0.01 0.07-0.01 0.06v0.07l-0.01 0.06-0.01 0.07-0.07 0.2-0.03 0.06-0.06 0.14-0.09 0.14-0.05 0.06-0.11 0.14-0.12 0.13-0.14 0.14-0.16 0.14-0.08 0.06-0.08 0.08-0.15 0.1-0.15 0.11-0.32 0.2-0.17 0.09-0.18 0.09-0.18 0.08-0.19 0.07-0.2 0.08-0.2 0.07-0.21 0.06-0.22 0.06-0.44 0.1-0.47 0.09-0.5 0.06-0.52 0.04-0.55 0.02h-0.28-0.49l-0.47-0.03-0.44-0.04-0.43-0.07-0.4-0.07-0.38-0.09-0.36-0.11-0.34-0.13-0.32-0.15-0.29-0.16-0.27-0.18-0.26-0.2-0.23-0.21-0.21-0.23-0.19-0.25-0.16-0.26-0.14-0.29-0.12-0.29-0.1-0.32-0.08-0.34-0.06-0.35-0.03-0.37-0.01-0.39v-4.71l0.01-0.14 0.01-0.12 0.06-0.39 0.03-0.13 0.03-0.12 0.05-0.12 0.08-0.24 0.06-0.12 0.11-0.23 0.07-0.11 0.07-0.12 0.07-0.1 0.08-0.11 0.09-0.1 0.09-0.11 0.18-0.2 0.1-0.1 0.14-0.13 0.29-0.24 0.32-0.22 0.17-0.1 0.36-0.18 0.38-0.16 0.2-0.07 0.42-0.12 0.44-0.1 0.23-0.04 0.23-0.03 0.24-0.04 0.24-0.02 0.26-0.02 0.52-0.02h0.26l0.48 0.01 0.46 0.03zm-2.04 1.6-0.4 0.07-0.4 0.1-0.38 0.13-0.36 0.15-0.35 0.18-0.34 0.25-0.28 0.26-0.23 0.28-0.17 0.3-0.13 0.31-0.08 0.32-0.02 0.35v0.96h8.18l-0.08-0.98-0.26-0.83-0.42-0.69-0.6-0.53-0.77-0.38-0.94-0.23-1.11-0.07-0.44 0.01-0.42 0.04z'
|
d="m49.79 5.56 0.44 0.05 0.41 0.08 0.4 0.09 0.37 0.12 0.35 0.14 0.33 0.16 0.31 0.18 0.28 0.21 0.27 0.22 0.24 0.24 0.22 0.27 0.2 0.28 0.18 0.31 0.16 0.33 0.13 0.35 0.11 0.37 0.1 0.39 0.07 0.41 0.06 0.44 0.03 0.45 0.01 0.47v0.12l-0.01 0.11-0.01 0.1-0.03 0.2-0.02 0.09-0.03 0.09-0.02 0.08-0.08 0.15-0.03 0.06-0.1 0.12-0.05 0.05-0.06 0.05-0.05 0.03-0.07 0.04-0.07 0.03-0.14 0.04-0.08 0.01-0.09 0.01h-8.89v-0.07h-0.02v1.84l0.01 0.24 0.02 0.24 0.04 0.23 0.06 0.22 0.06 0.2 0.09 0.2 0.1 0.17 0.12 0.18 0.14 0.15 0.15 0.16 0.16 0.13 0.18 0.13 0.2 0.11 0.22 0.11 0.22 0.09 0.25 0.09 0.26 0.06 0.28 0.07 0.29 0.05 0.31 0.03 0.33 0.03 0.34 0.02 0.36 0.01h0.13l0.13-0.01h0.12l0.13-0.01h0.12l0.24-0.02 0.23-0.02 0.11-0.01 0.12-0.02 0.31-0.04 0.1-0.02 0.09-0.02 0.1-0.02 0.09-0.02 0.1-0.03 0.09-0.02 0.16-0.06 0.09-0.03 0.04-0.01 0.05-0.02 0.06-0.02 0.05-0.02 0.05-0.03 0.06-0.02 0.06-0.03 0.07-0.03 0.14-0.07 0.14-0.08 0.08-0.05 0.08-0.04 0.08-0.05 0.18-0.1 0.08-0.06 0.19-0.13 0.1-0.06 0.11-0.07 0.1-0.07 0.13-0.12 0.13-0.1 0.05-0.05 0.06-0.04 0.05-0.04 0.06-0.05 0.09-0.07 0.09-0.06 0.05-0.03 0.04-0.02 0.04-0.03 0.07-0.03 0.09-0.03 0.05-0.01h0.09l0.1 0.01 0.15 0.03 0.04 0.02 0.07 0.04 0.04 0.03 0.09 0.09 0.03 0.04 0.04 0.08 0.02 0.1 0.02 0.06v0.05l0.01 0.05v0.07l0.01 0.07-0.01 0.06v0.07l-0.01 0.06-0.01 0.07-0.07 0.2-0.03 0.06-0.06 0.14-0.09 0.14-0.05 0.06-0.11 0.14-0.12 0.13-0.14 0.14-0.16 0.14-0.08 0.06-0.08 0.08-0.15 0.1-0.15 0.11-0.32 0.2-0.17 0.09-0.18 0.09-0.18 0.08-0.19 0.07-0.2 0.08-0.2 0.07-0.21 0.06-0.22 0.06-0.44 0.1-0.47 0.09-0.5 0.06-0.52 0.04-0.55 0.02h-0.28-0.49l-0.47-0.03-0.44-0.04-0.43-0.07-0.4-0.07-0.38-0.09-0.36-0.11-0.34-0.13-0.32-0.15-0.29-0.16-0.27-0.18-0.26-0.2-0.23-0.21-0.21-0.23-0.19-0.25-0.16-0.26-0.14-0.29-0.12-0.29-0.1-0.32-0.08-0.34-0.06-0.35-0.03-0.37-0.01-0.39v-4.71l0.01-0.14 0.01-0.12 0.06-0.39 0.03-0.13 0.03-0.12 0.05-0.12 0.08-0.24 0.06-0.12 0.11-0.23 0.07-0.11 0.07-0.12 0.07-0.1 0.08-0.11 0.09-0.1 0.09-0.11 0.18-0.2 0.1-0.1 0.14-0.13 0.29-0.24 0.32-0.22 0.17-0.1 0.36-0.18 0.38-0.16 0.2-0.07 0.42-0.12 0.44-0.1 0.23-0.04 0.23-0.03 0.24-0.04 0.24-0.02 0.26-0.02 0.52-0.02h0.26l0.48 0.01 0.46 0.03zm-2.04 1.6-0.4 0.07-0.4 0.1-0.38 0.13-0.36 0.15-0.35 0.18-0.34 0.25-0.28 0.26-0.23 0.28-0.17 0.3-0.13 0.31-0.08 0.32-0.02 0.35v0.96h8.18l-0.08-0.98-0.26-0.83-0.42-0.69-0.6-0.53-0.77-0.38-0.94-0.23-1.11-0.07-0.44 0.01-0.42 0.04z"
|
||||||
id='h'
|
id="h"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m67.34 1.76c1.14 0.86 1.73 2.07 1.73 3.55 0 0.68-0.29 1.02-0.86 1.02-0.4 0-0.68-0.34-0.85-1.02-0.12-0.57-0.34-1.08-0.62-1.62-0.52-0.9-1.61-1.32-3.32-1.32-1.5 0-2.52 0.34-3.14 1.08-0.57 0.68-0.92 1.72-0.92 3.26v5.95c0 1.55 0.35 2.63 0.97 3.31 0.68 0.74 1.73 1.13 3.21 1.13 2.23 0 3.54-0.79 3.82-2.34 0.11-0.57 0.17-0.86 0.17-0.91 0.11-0.34 0.34-0.51 0.68-0.51 0.57 0 0.86 0.34 0.86 1.02 0 1.44-0.58 2.52-1.79 3.38-0.96 0.62-2.18 0.96-3.77 0.96-1.83 0-3.25-0.4-4.3-1.25-1.21-0.8-1.72-2.16-1.72-3.94v-7.16c0-3.77 1.93-5.61 5.95-5.61 1.61 0 2.86 0.34 3.9 1.02z'
|
d="m67.34 1.76c1.14 0.86 1.73 2.07 1.73 3.55 0 0.68-0.29 1.02-0.86 1.02-0.4 0-0.68-0.34-0.85-1.02-0.12-0.57-0.34-1.08-0.62-1.62-0.52-0.9-1.61-1.32-3.32-1.32-1.5 0-2.52 0.34-3.14 1.08-0.57 0.68-0.92 1.72-0.92 3.26v5.95c0 1.55 0.35 2.63 0.97 3.31 0.68 0.74 1.73 1.13 3.21 1.13 2.23 0 3.54-0.79 3.82-2.34 0.11-0.57 0.17-0.86 0.17-0.91 0.11-0.34 0.34-0.51 0.68-0.51 0.57 0 0.86 0.34 0.86 1.02 0 1.44-0.58 2.52-1.79 3.38-0.96 0.62-2.18 0.96-3.77 0.96-1.83 0-3.25-0.4-4.3-1.25-1.21-0.8-1.72-2.16-1.72-3.94v-7.16c0-3.77 1.93-5.61 5.95-5.61 1.61 0 2.86 0.34 3.9 1.02z"
|
||||||
id='o'
|
id="o"
|
||||||
/>
|
/>
|
||||||
<path
|
<path
|
||||||
d='m158.79 5.43 0.12 0.04 0.03 0.02 0.03 0.01 0.03 0.03 0.06 0.04 0.03 0.03 0.03 0.02 0.1 0.14 0.06 0.08 0.02 0.05 0.02 0.04 0.01 0.04 0.02 0.09 0.01 0.04 0.02 0.04 0.01 0.05 0.01 0.04 0.02 0.04 0.01 0.05 0.05 0.12 0.02 0.05 0.03 0.08 0.01 0.05 0.03 0.12 0.02 0.04 0.02 0.08 0.25-0.12 0.49-0.23 0.24-0.11 0.23-0.1 0.46-0.18 0.22-0.08 0.21-0.08 0.21-0.07 0.2-0.06 0.2-0.07 0.2-0.05 0.38-0.09 0.19-0.04 0.34-0.06 0.17-0.02 0.32-0.02h0.16l0.46 0.01 0.44 0.03 0.43 0.04 0.39 0.06 0.38 0.09 0.36 0.1 0.33 0.12 0.31 0.14 0.29 0.15 0.27 0.17 0.25 0.2 0.22 0.2 0.21 0.23 0.18 0.24 0.16 0.26 0.14 0.28 0.12 0.3 0.09 0.31 0.08 0.33 0.06 0.35 0.03 0.36 0.01 0.38v4.76l-0.01 0.19-0.01 0.18-0.01 0.17-0.03 0.18-0.02 0.17-0.08 0.32-0.05 0.16-0.05 0.15-0.12 0.3-0.08 0.14-0.07 0.14-0.09 0.14-0.09 0.13-0.09 0.12-0.1 0.13-0.11 0.12-0.12 0.12-0.11 0.12-0.26 0.22-0.24 0.18-0.26 0.16-0.14 0.07-0.13 0.07-0.15 0.07-0.15 0.06-0.15 0.05-0.32 0.11-0.33 0.08-0.17 0.04-0.36 0.06-0.36 0.04-0.19 0.02-0.2 0.01h-0.19-0.44l-0.24-0.01-0.24-0.02-0.23-0.01-0.46-0.06-0.22-0.04-0.44-0.09-0.21-0.06-0.21-0.05-0.21-0.07-0.21-0.08-0.4-0.16-0.2-0.1-0.19-0.1-0.2-0.1-0.19-0.11-0.19-0.12-0.36-0.26v5.49l-0.02 0.2-0.01 0.09-0.02 0.09-0.06 0.24-0.03 0.07-0.04 0.07-0.03 0.05-0.04 0.06-0.08 0.1-0.1 0.08-0.06 0.02-0.05 0.03-0.06 0.02-0.06 0.01-0.07 0.01h-0.14-0.06l-0.07-0.02-0.05-0.02-0.06-0.02-0.11-0.06-0.04-0.04-0.05-0.04-0.08-0.1-0.04-0.06-0.03-0.06-0.02-0.07-0.03-0.08-0.04-0.16-0.02-0.1-0.01-0.09-0.01-0.11v-0.1-16.31-0.1l0.01-0.09 0.01-0.1 0.01-0.09 0.01-0.08 0.02-0.08 0.03-0.07 0.02-0.08 0.05-0.12 0.04-0.06 0.03-0.05 0.04-0.05 0.04-0.03 0.05-0.04 0.04-0.03 0.05-0.03 0.11-0.03 0.06-0.01h0.09l0.03 0.01h0.03zm4.49 1.74-0.46 0.04-0.22 0.03-0.21 0.03-0.21 0.05-0.38 0.1-0.36 0.14-0.15 0.07-0.16 0.08-0.15 0.1-0.17 0.11-0.16 0.12-0.17 0.14-0.17 0.15-0.18 0.16-0.18 0.18-0.2 0.19-0.2 0.2v6.54h0.06v-0.03l0.47 0.28 0.45 0.25 0.45 0.24 0.42 0.19 0.41 0.18 0.4 0.14 0.38 0.12 0.36 0.09 0.35 0.07 0.34 0.04 0.32 0.02 0.28-0.01 0.27-0.01 0.26-0.03 0.24-0.03 0.25-0.04 0.23-0.05 0.22-0.06 0.21-0.07 0.2-0.08 0.19-0.09 0.17-0.1 0.21-0.13 0.18-0.15 0.17-0.15 0.14-0.16 0.12-0.17 0.1-0.19 0.08-0.19 0.06-0.2 0.05-0.22 0.02-0.22 0.01-0.23v-4.75l-0.01-0.28-0.03-0.26-0.05-0.23-0.07-0.23-0.09-0.21-0.11-0.2-0.14-0.18-0.15-0.17-0.18-0.15-0.2-0.15-0.22-0.12-0.18-0.09-0.19-0.09-0.2-0.06-0.21-0.07-0.22-0.05-0.24-0.05-0.24-0.04-0.26-0.03-0.27-0.02-0.28-0.01-0.29-0.01-0.25 0.01h-0.26z'
|
d="m158.79 5.43 0.12 0.04 0.03 0.02 0.03 0.01 0.03 0.03 0.06 0.04 0.03 0.03 0.03 0.02 0.1 0.14 0.06 0.08 0.02 0.05 0.02 0.04 0.01 0.04 0.02 0.09 0.01 0.04 0.02 0.04 0.01 0.05 0.01 0.04 0.02 0.04 0.01 0.05 0.05 0.12 0.02 0.05 0.03 0.08 0.01 0.05 0.03 0.12 0.02 0.04 0.02 0.08 0.25-0.12 0.49-0.23 0.24-0.11 0.23-0.1 0.46-0.18 0.22-0.08 0.21-0.08 0.21-0.07 0.2-0.06 0.2-0.07 0.2-0.05 0.38-0.09 0.19-0.04 0.34-0.06 0.17-0.02 0.32-0.02h0.16l0.46 0.01 0.44 0.03 0.43 0.04 0.39 0.06 0.38 0.09 0.36 0.1 0.33 0.12 0.31 0.14 0.29 0.15 0.27 0.17 0.25 0.2 0.22 0.2 0.21 0.23 0.18 0.24 0.16 0.26 0.14 0.28 0.12 0.3 0.09 0.31 0.08 0.33 0.06 0.35 0.03 0.36 0.01 0.38v4.76l-0.01 0.19-0.01 0.18-0.01 0.17-0.03 0.18-0.02 0.17-0.08 0.32-0.05 0.16-0.05 0.15-0.12 0.3-0.08 0.14-0.07 0.14-0.09 0.14-0.09 0.13-0.09 0.12-0.1 0.13-0.11 0.12-0.12 0.12-0.11 0.12-0.26 0.22-0.24 0.18-0.26 0.16-0.14 0.07-0.13 0.07-0.15 0.07-0.15 0.06-0.15 0.05-0.32 0.11-0.33 0.08-0.17 0.04-0.36 0.06-0.36 0.04-0.19 0.02-0.2 0.01h-0.19-0.44l-0.24-0.01-0.24-0.02-0.23-0.01-0.46-0.06-0.22-0.04-0.44-0.09-0.21-0.06-0.21-0.05-0.21-0.07-0.21-0.08-0.4-0.16-0.2-0.1-0.19-0.1-0.2-0.1-0.19-0.11-0.19-0.12-0.36-0.26v5.49l-0.02 0.2-0.01 0.09-0.02 0.09-0.06 0.24-0.03 0.07-0.04 0.07-0.03 0.05-0.04 0.06-0.08 0.1-0.1 0.08-0.06 0.02-0.05 0.03-0.06 0.02-0.06 0.01-0.07 0.01h-0.14-0.06l-0.07-0.02-0.05-0.02-0.06-0.02-0.11-0.06-0.04-0.04-0.05-0.04-0.08-0.1-0.04-0.06-0.03-0.06-0.02-0.07-0.03-0.08-0.04-0.16-0.02-0.1-0.01-0.09-0.01-0.11v-0.1-16.31-0.1l0.01-0.09 0.01-0.1 0.01-0.09 0.01-0.08 0.02-0.08 0.03-0.07 0.02-0.08 0.05-0.12 0.04-0.06 0.03-0.05 0.04-0.05 0.04-0.03 0.05-0.04 0.04-0.03 0.05-0.03 0.11-0.03 0.06-0.01h0.09l0.03 0.01h0.03zm4.49 1.74-0.46 0.04-0.22 0.03-0.21 0.03-0.21 0.05-0.38 0.1-0.36 0.14-0.15 0.07-0.16 0.08-0.15 0.1-0.17 0.11-0.16 0.12-0.17 0.14-0.17 0.15-0.18 0.16-0.18 0.18-0.2 0.19-0.2 0.2v6.54h0.06v-0.03l0.47 0.28 0.45 0.25 0.45 0.24 0.42 0.19 0.41 0.18 0.4 0.14 0.38 0.12 0.36 0.09 0.35 0.07 0.34 0.04 0.32 0.02 0.28-0.01 0.27-0.01 0.26-0.03 0.24-0.03 0.25-0.04 0.23-0.05 0.22-0.06 0.21-0.07 0.2-0.08 0.19-0.09 0.17-0.1 0.21-0.13 0.18-0.15 0.17-0.15 0.14-0.16 0.12-0.17 0.1-0.19 0.08-0.19 0.06-0.2 0.05-0.22 0.02-0.22 0.01-0.23v-4.75l-0.01-0.28-0.03-0.26-0.05-0.23-0.07-0.23-0.09-0.21-0.11-0.2-0.14-0.18-0.15-0.17-0.18-0.15-0.2-0.15-0.22-0.12-0.18-0.09-0.19-0.09-0.2-0.06-0.21-0.07-0.22-0.05-0.24-0.05-0.24-0.04-0.26-0.03-0.27-0.02-0.28-0.01-0.29-0.01-0.25 0.01h-0.26z"
|
||||||
id='d'
|
id="d"
|
||||||
/>
|
/>
|
||||||
</defs>
|
</defs>
|
||||||
<use fill='#ffffff' xlinkHref='#k' />
|
<use fill="#ffffff" xlinkHref="#k" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#k' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#k" />
|
||||||
<use fill='#ffffff' xlinkHref='#j' />
|
<use fill="#ffffff" xlinkHref="#j" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#j' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#j" />
|
||||||
<use fill='#ffffff' xlinkHref='#b' />
|
<use fill="#ffffff" xlinkHref="#b" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#b' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#b" />
|
||||||
<use fill='#ffffff' xlinkHref='#n' />
|
<use fill="#ffffff" xlinkHref="#n" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#n' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#n" />
|
||||||
<use fill='#ffffff' xlinkHref='#l' />
|
<use fill="#ffffff" xlinkHref="#l" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#l' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#l" />
|
||||||
<use fill='#ffffff' xlinkHref='#c' />
|
<use fill="#ffffff" xlinkHref="#c" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#c' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#c" />
|
||||||
<use fill='#ffffff' xlinkHref='#e' />
|
<use fill="#ffffff" xlinkHref="#e" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#e' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#e" />
|
||||||
<use fill='#ffffff' xlinkHref='#m' />
|
<use fill="#ffffff" xlinkHref="#m" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#m' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#m" />
|
||||||
<use fill='#ffffff' xlinkHref='#a' />
|
<use fill="#ffffff" xlinkHref="#a" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#a' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#a" />
|
||||||
<use fill='#ffffff' xlinkHref='#i' />
|
<use fill="#ffffff" xlinkHref="#i" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#i' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#i" />
|
||||||
<use fill='#ffffff' xlinkHref='#f' />
|
<use fill="#ffffff" xlinkHref="#f" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#f' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#f" />
|
||||||
<use fill='#ffffff' xlinkHref='#g' />
|
<use fill="#ffffff" xlinkHref="#g" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#g' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#g" />
|
||||||
<use fill='#ffffff' xlinkHref='#h' />
|
<use fill="#ffffff" xlinkHref="#h" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#h' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#h" />
|
||||||
<use fill='#ffffff' xlinkHref='#o' />
|
<use fill="#ffffff" xlinkHref="#o" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#o' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#o" />
|
||||||
<use fill='#ffffff' xlinkHref='#d' />
|
<use fill="#ffffff" xlinkHref="#d" />
|
||||||
<use fillOpacity={0} stroke='#000000' strokeOpacity={0} xlinkHref='#d' />
|
<use fillOpacity={0} stroke="#000000" strokeOpacity={0} xlinkHref="#d" />
|
||||||
</svg>
|
</svg>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ const List = styled.div`
|
|||||||
const filenameTitle = { fontWeight: '600' };
|
const filenameTitle = { fontWeight: '600' };
|
||||||
|
|
||||||
const FilenameResults = ({ searchValue, results, rateLimitMessage }) => {
|
const FilenameResults = ({ searchValue, results, rateLimitMessage }) => {
|
||||||
const elements = results.map(result => {
|
const elements = results.map((result) => {
|
||||||
const { filename, prs: prObjects } = result;
|
const { filename, prs: prObjects } = result;
|
||||||
const prs = prObjects.map(({ number, username, title }, index) => {
|
const prs = prObjects.map(({ number, username, title }, index) => {
|
||||||
return <ListItem number={number} username={username} prTitle={title} />;
|
return <ListItem number={number} username={username} prTitle={title} />;
|
||||||
@ -33,17 +33,16 @@ const FilenameResults = ({ searchValue, results, rateLimitMessage }) => {
|
|||||||
});
|
});
|
||||||
const showResults = () => {
|
const showResults = () => {
|
||||||
if (!rateLimitMessage) {
|
if (!rateLimitMessage) {
|
||||||
return (results.length ? <h3>Results for: {searchValue}</h3> : null) && elements;
|
return (
|
||||||
|
(results.length ? <h3>Results for: {searchValue}</h3> : null) &&
|
||||||
|
elements
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return rateLimitMessage;
|
return rateLimitMessage;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return <FullWidthDiv>{showResults()}</FullWidthDiv>;
|
||||||
<FullWidthDiv>
|
|
||||||
{showResults()}
|
|
||||||
</FullWidthDiv>
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default FilenameResults;
|
export default FilenameResults;
|
||||||
|
@ -7,18 +7,24 @@ const Container = styled.label`
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const FilterOption = ({ group, children, value, selectedOption, onOptionChange }) => {
|
const FilterOption = ({
|
||||||
|
group,
|
||||||
|
children,
|
||||||
|
value,
|
||||||
|
selectedOption,
|
||||||
|
onOptionChange
|
||||||
|
}) => {
|
||||||
return (
|
return (
|
||||||
<Container>
|
<Container>
|
||||||
<input
|
<input
|
||||||
name={group}
|
name={group}
|
||||||
type="radio"
|
type="radio"
|
||||||
value={value}
|
value={value}
|
||||||
checked={selectedOption === value}
|
checked={selectedOption === value}
|
||||||
onChange={onOptionChange}
|
onChange={onOptionChange}
|
||||||
/>
|
/>
|
||||||
{children}
|
{children}
|
||||||
</Container>
|
</Container>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
export default FilterOption;
|
export default FilterOption;
|
||||||
|
@ -11,8 +11,8 @@ const Info = styled.div`
|
|||||||
padding: 2px;
|
padding: 2px;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const Footer = props => {
|
const Footer = (props) => {
|
||||||
const localTime = lastUpdate => {
|
const localTime = (lastUpdate) => {
|
||||||
const newTime = new Date(lastUpdate);
|
const newTime = new Date(lastUpdate);
|
||||||
return newTime.toLocaleString();
|
return newTime.toLocaleString();
|
||||||
};
|
};
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user