diff --git a/assets/js/EditProfile.jsx b/assets/js/EditProfile.jsx index a9ba5fbf92cfa235be0ed78ca2860d364d8340e4..63f3235e58d9ca47ee87945dba71b8e24b90d475 100644 --- a/assets/js/EditProfile.jsx +++ b/assets/js/EditProfile.jsx @@ -8,32 +8,19 @@ import { Button, Form, } from 'semantic-ui-react'; +import Dumper from './lib/Dumper'; import Server from './lib/Server'; import Storage from './lib/Storage'; import ModalAlert from './components/ModalAlert'; -import ProfileHandler from './ProfileHandler'; - -export default class EditProfile extends ProfileHandler { - static propTypes = { - route: PropTypes.object.isRequired, - params: PropTypes.object.isRequired, - user: PropTypes.object.isRequired, - }; +import { isFromGithubLinkValid } from './Utils'; +export default class EditProfile extends React.Component { constructor(props) { super(props); /* istanbul ignore next */ this.state = { id: '', name: '', - email: '', - region: '', - alamat: '', - phone_number: '', - portfolio_link: '', - show_transcript: '', - intro: '', - skills: '', form: { picture: '', email: '', @@ -54,7 +41,7 @@ export default class EditProfile extends ProfileHandler { awards: '', projects: '', certification: '', - sertifikat:'', + sertifikat: '', languages: '', seminar: '', interests: '', @@ -62,25 +49,6 @@ export default class EditProfile extends ProfileHandler { }, refresh: 1, loading: false, - linkedin_url: '', - self_description: '', - hackerrank_url: '', - student_gpa: 0.0, - student_toefl: 0, - student_toefl_file: '', - website_url: '', - latest_work: '', - latest_work_desc: '', - github_url: '', - awards: '', - projects: '', - certification: '', - languages: '', - seminar: '', - interests: '', - dependants: '', - related_course: '', - ielts: 1.0, }; this.getProfile = this.getProfile.bind(this); this.handleChange = this.handleChange.bind(this); @@ -91,54 +59,136 @@ export default class EditProfile extends ProfileHandler { } getProfile() { - const id = this.props.route.own - ? this.props.user.data.student.id - : this.props.params.id; + const { + route: { own }, + params, + user: { + data: { student }, + }, + user, + } = this.props; + const { refresh } = this.state; + const id = own ? student.id : params.id; + return Server.get(`/students/${id}/`).then( (data) => { this.setState({ id: data.id, name: data.full_name, - email: data.user.email, - region: data.region, - alamat: data.alamat, - phone_number: data.phone_number, - portfolio_link: data.portfolio_link, - show_transcript: data.show_transcript, - refresh: this.state.refresh + 1, - intro: data.intro, - linkedin_url: data.linkedin_url, - hackerrank_url: data.hackerrank_url, - student_gpa: data.student_gpa, - student_toefl: data.student_toefl, - website_url: data.website_url, - latest_work: data.latest_work, - latest_work_desc: data.latest_work_desc, - skills: data.skills, - github_url: data.github_url, - awards: data.awards, - projects: data.projects, - certification: data.certification, - sertifikat:data.sertifikat, - languages: data.languages, - seminar: data.seminar, - interests: data.interests, - related_course: data.related_course, - ielts: data.ielts, + refresh: refresh + 1, + form: { + email: data.user.email, + phone_number: data.phone_number, + gender: data.gender, + self_description: data.self_description, + region: data.region, + intro: data.intro, + expected_salary: data.expected_salary, + alamat: data.alamat, + related_course: data.related_course, + volunteer: data.volunteer, + student_gpa: data.student_gpa, + dependants: data.dependants, + job_seeking_status: data.job_seeking_status, + show_transcript: data.show_transcript, + latest_work: data.latest_work, + latest_work_desc: data.latest_work_desc, + awards: data.awards, + certification: data.certification, + projects: data.projects, + seminar: data.seminar, + ielts: data.ielts, + languages: data.languages, + skills: data.skills, + student_toefl: data.student_toefl, + linkedin_url: data.linkedin_url, + hackerrank_url: data.hackerrank_url, + website_url: data.website_url, + github_url: data.github_url, + portfolio_link: data.portfolio_link, + }, }); - if (this.props.route.own) { - const newSession = this.props.user.data; + if (own) { + const newSession = user.data; newSession.student = data; Storage.set('user-data', newSession); window.scrollTo(0, 0); } }, - (error) => error.then(() => { - this.state.name = 'Gagal mendapatkan informasi'; - }), + (error) => + error.then(() => { + this.state.name = 'Gagal mendapatkan informasi'; + }), ); } + handleSubmit = (e) => { + const { form, id } = this.state; + e.preventDefault(); + if (!isFromGithubLinkValid(form.github_url)) { + this.modalAlert.open( + 'Pembaharuan profil gagal', + 'Pastikan link github yang anda tulis benar.(Berpola : https://github.com/', + ); + } else { + const submitForm = {}; + Object.keys(form).forEach((key) => { + if (form[key] !== '') { + submitForm[key] = [key]; + } + }); + this.setState({ loading: true }); + Server.submit(`/students/${id}/profile/`, submitForm, 'PATCH').then( + () => { + this.setState({ loading: false }); + this.modalAlert.open( + 'Profil berhasil diperbaharui', + 'Silakan periksa kembali profil anda', + this.getProfile, + ); + }, + (error) => + error.then((r) => { + this.setState({ loading: false }); + this.modalAlert.open('Pembaharuan profil gagal', Dumper.dump(r)); + }), + ); + } + }; + + handleFile = (e) => { + const { + target: { name, files }, + } = e; + const { form } = this.state; + form[name] = files[0]; + this.setState({ form }); + }; + + handleChange = (e) => { + const { form } = this.state; + form[e.target.name] = e.target.value; + this.setState({ form }); + }; + + handleCheckbox = (e, d) => { + const { form } = this.state; + form[d.name] = d.checked; + this.setState({ form }); + }; + + handleRadioGender = (e, { value }) => { + const { form } = this.state; + form.gender = value; + this.setState({ form }); + }; + + handleRadio = (e, { value }) => { + const { form } = this.state; + form.job_seeking_status = value; + this.setState({ form }); + }; + parseIndonesianDateFormat(dateIndex) { const monthNameIndex = { '01': 'Januari', @@ -162,6 +212,7 @@ export default class EditProfile extends ProfileHandler { } updateForm(show) { + const { refresh } = this.state; if (show) { return (
@@ -179,7 +230,7 @@ export default class EditProfile extends ProfileHandler { ref={(input) => { this.form = input; }} - key={this.state.refresh} + key={refresh} size="small" > @@ -195,14 +246,8 @@ export default class EditProfile extends ProfileHandler { @@ -210,16 +255,8 @@ export default class EditProfile extends ProfileHandler { @@ -229,12 +266,14 @@ export default class EditProfile extends ProfileHandler { label="Perempuan" name="gender" value="Perempuan" + checked={this.state.form.gender === 'Perempuan'} onClick={this.handleRadioGender} /> @@ -243,20 +282,16 @@ export default class EditProfile extends ProfileHandler { - @@ -264,14 +299,8 @@ export default class EditProfile extends ProfileHandler { @@ -279,18 +308,11 @@ export default class EditProfile extends ProfileHandler { - - - - - - - - - - - - - - - - - - + - + @@ -428,25 +397,16 @@ export default class EditProfile extends ProfileHandler { ref={(input) => { this.form = input; }} - key={this.state.refresh} + key={refresh} size="small" onSubmit={this.handleSubmit} > - @@ -454,167 +414,59 @@ export default class EditProfile extends ProfileHandler { - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + + - - @@ -627,7 +479,7 @@ export default class EditProfile extends ProfileHandler { ref={(input) => { this.form = input; }} - key={this.state.refresh} + key={refresh} size="small" > @@ -635,7 +487,7 @@ export default class EditProfile extends ProfileHandler { @@ -643,14 +495,8 @@ export default class EditProfile extends ProfileHandler { @@ -658,16 +504,8 @@ export default class EditProfile extends ProfileHandler { @@ -675,16 +513,8 @@ export default class EditProfile extends ProfileHandler { IELTS @@ -723,25 +545,16 @@ export default class EditProfile extends ProfileHandler { ref={(input) => { this.form = input; }} - key={this.state.refresh} + key={refresh} size="small" onSubmit={this.handleSubmit} > - @@ -750,16 +563,8 @@ export default class EditProfile extends ProfileHandler { @@ -768,16 +573,8 @@ export default class EditProfile extends ProfileHandler { @@ -786,16 +583,8 @@ export default class EditProfile extends ProfileHandler { @@ -804,8 +593,8 @@ export default class EditProfile extends ProfileHandler { @@ -820,7 +609,7 @@ export default class EditProfile extends ProfileHandler { primary > Submit - +
); } @@ -829,8 +618,15 @@ export default class EditProfile extends ProfileHandler { } render() { - return ( -
{this.updateForm(this.props.route.own)}
- ); + const { + route: { own }, + } = this.props; + return
{this.updateForm(own)}
; } -} \ No newline at end of file +} + +EditProfile.propTypes = { + route: PropTypes.object.isRequired, + params: PropTypes.object.isRequired, + user: PropTypes.object.isRequired, +}; diff --git a/assets/js/Utils.js b/assets/js/Utils.js deleted file mode 100644 index 860ca4c090828f490fb977a823b68aa4de7e2404..0000000000000000000000000000000000000000 --- a/assets/js/Utils.js +++ /dev/null @@ -1,6 +0,0 @@ -export const isFromGithubLinkValid = github_link => { - if (github_link == null) return; - return github_link.includes('https://github.com/'); - }; - -export const gotoLink = url => window.open(url).focus(); diff --git a/assets/js/Utils.jsx b/assets/js/Utils.jsx new file mode 100644 index 0000000000000000000000000000000000000000..8d8d5f8f7dd5b9560f3a26a0554cbf96f1156077 --- /dev/null +++ b/assets/js/Utils.jsx @@ -0,0 +1,9 @@ +export const isFromGithubLinkValid = (githubLink) => { + if (githubLink && githubLink.length > 0) { + return githubLink.includes('https://github.com/'); + } + + return true; +}; + +export const gotoLink = (url) => window.open(url).focus(); diff --git a/assets/js/__test__/Utils-test.jsx b/assets/js/__test__/Utils-test.jsx index d128392880adae5e23ac306b22d9a5b7b61d2a54..4222e0cf195ec18126f29e79884bb0e1c332398b 100644 --- a/assets/js/__test__/Utils-test.jsx +++ b/assets/js/__test__/Utils-test.jsx @@ -1,17 +1,15 @@ -import { isFromGithubLinkValid } from "../Utils"; +import { isFromGithubLinkValid } from '../Utils'; var assert = require('assert'); -describe('isFromGithubLinkValid', function () { - - it('should return nothing when param is null', function () { - assert(isFromGithubLinkValid(null) == null); - }); - it('should return false when link doesnt include https://github.com', function () { - assert(isFromGithubLinkValid("https://haha.com") == false); - }); - it('should return true when link include https://github.com', function () { - assert(isFromGithubLinkValid("https://github.com/ranisianipar") == true); - }); - -}) \ No newline at end of file +describe('isFromGithubLinkValid', function() { + it('should return true when param is null', function() { + assert(isFromGithubLinkValid(null) === true); + }); + it('should return false when link doesnt include https://github.com', function() { + assert(isFromGithubLinkValid('https://haha.com') === false); + }); + it('should return true when link include https://github.com', function() { + assert(isFromGithubLinkValid('https://github.com/ranisianipar') === true); + }); +}); diff --git a/core/views/accounts/student.py b/core/views/accounts/student.py index 94aed6d13a16e6de958734dc1b1aea5f47bc5f22..881120cc53070c9c167803d128ccb99f85fad171 100644 --- a/core/views/accounts/student.py +++ b/core/views/accounts/student.py @@ -44,13 +44,13 @@ class StudentViewSet(viewsets.ModelViewSet): github_url_pattern = "^(https:\/\/www\.|https:\/\/)(github.com\/)([a-z\d](?:[a-z\d]|-(?=[a-z\d])){0,38})(\/)?$" linkedin_url_pattern = "^(https:\/\/www\.|https:\/\/|https:\/\/id\.)(linkedin.com)(\/in)(\/[a-zA-Z0-9]*)(\/)?$" hackerrank_url_pattern = "^(https:\/\/www\.)(hackerrank.com)(\/[a-zA-Z0-9]*)(\/)?$" - + print(request.data) if 'pdf_sertifikat' in request.data.keys(): return self.__profile_helper('pdf_sertifikat', request, user) elif 'pdf_file' in request.data.keys(): return self.__profile_helper('pdf_file', request, user) - if 'github_url' in request.data.keys() and not re.search(github_url_pattern, request.data['github_url']): + if 'github_url' in request.data.keys() and len(request.data['github_url']) > 0 and not re.search(github_url_pattern, request.data['github_url']): return Response( {'Error': "Pastikan link github yang anda tulis benar. (Berpola : https://github.com/"}, status=status.HTTP_400_BAD_REQUEST) diff --git a/package-lock.json b/package-lock.json index ad8a4245e00eb9fc19e4b9f48a80d17e017f5b20..cce888b74dd80303005eb06d73ee225dbd40b40a 100755 --- a/package-lock.json +++ b/package-lock.json @@ -66,7 +66,7 @@ "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "optional": true, "requires": { @@ -153,7 +153,7 @@ "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true } } @@ -1750,7 +1750,7 @@ "@babel/plugin-proposal-do-expressions": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.6.0.tgz", - "integrity": "sha1-GSlT/thiDRPRKmH2je/Sb0EFkZM=", + "integrity": "sha512-qJDaoBDbLySwU1tG0jbAomOwz8W1PEiiiK0iLQAnHLr4PYIMVX4ltDGkj3uAKx4HDs1WJ0tozGW1zAQjuTIiWg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1770,7 +1770,7 @@ "@babel/plugin-proposal-export-default-from": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.5.2.tgz", - "integrity": "sha1-LArC3MNuOyRD/q0sPF/HlvsbUUU=", + "integrity": "sha512-wr9Itk05L1/wyyZKVEmXWCdcsp/e185WUNl6AfYZeEKYaUPPvHXRDqO5K1VH7/UamYqGJowFRuCv30aDYZawsg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1780,7 +1780,7 @@ "@babel/plugin-proposal-export-namespace-from": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.5.2.tgz", - "integrity": "sha1-zNXtBbBtcAaI/x2wGp3ScVXg0qA=", + "integrity": "sha512-TKUdOL07anjZEbR1iSxb5WFh810KyObdd29XLFLGo1IDsSuGrjH3ouWSbAxHNmrVKzr9X71UYl2dQ7oGGcRp0g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1801,7 +1801,7 @@ "@babel/plugin-proposal-json-strings": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha1-Vo7MRGxhSK5rJn8CVREwiR4p8xc=", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1811,7 +1811,7 @@ "@babel/plugin-proposal-logical-assignment-operators": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.2.0.tgz", - "integrity": "sha1-ilzqbEKnyHRGlZ4C//X60BLFb1c=", + "integrity": "sha512-0w797xwdPXKk0m3Js74hDi0mCTZplIu93MOSfb1ZLd/XFe3abWypx1QknVk0J+ohnsjYpvjH4Gwfo2i3RicB6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1821,7 +1821,7 @@ "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.4.tgz", - "integrity": "sha1-QcNg1ZSB2I4M46P4N98QEhp2mzk=", + "integrity": "sha512-Amph7Epui1Dh/xxUxS2+K22/MUi6+6JVTvy3P58tja3B6yKTSjwwx0/d83rF7551D6PVSSoplQb8GCwqec7HRw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1831,7 +1831,7 @@ "@babel/plugin-proposal-numeric-separator": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.2.0.tgz", - "integrity": "sha1-ZGhU2vTNIv1nM/YHYBOpNjEEQ6w=", + "integrity": "sha512-DohMOGDrZiMKS7LthjUZNNcWl8TAf5BZDwZAH4wpm55FuJTHgfqPGdibg7rZDmont/8Yg0zA03IgT6XLeP+4sg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1861,7 +1861,7 @@ "@babel/plugin-proposal-optional-chaining": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.6.0.tgz", - "integrity": "sha1-6b8fm5uhDHfAMwgtp18Gg4kEGvg=", + "integrity": "sha512-kj4gkZ6qUggkprRq3Uh5KP8XnE1MdIO0J7MhdDX8+rAbB6dJ2UrensGIS+0NPZAaaJ1Vr0PN6oLUgXMU1uMcSg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1871,7 +1871,7 @@ "@babel/plugin-proposal-pipeline-operator": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.5.0.tgz", - "integrity": "sha1-QQDsVe9PakwkkLX1pPKiLfonLAY=", + "integrity": "sha512-HFYuu/yGnkn69ligXxU0ohOVvQDsMNOUJs/c4PYLUVS6ntCYOyGmRQQaSYJARJ9rvc7/ulZKIzxd4wk91hN63A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1881,7 +1881,7 @@ "@babel/plugin-proposal-throw-expressions": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.2.0.tgz", - "integrity": "sha1-LZ5FLTcPE5AA5R22XQqF3GDGRzk=", + "integrity": "sha512-adsydM8DQF4i5DLNO4ySAU5VtHTPewOtNBV3u7F4lNMPADFF9bWQ+iDtUUe8+033cYCUz+bFlQdXQJmJOwoLpw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1928,7 +1928,7 @@ "@babel/plugin-syntax-dynamic-import": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha1-acFZ/69JmBIhYa2OvF5tH1XfhhI=", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -1964,7 +1964,7 @@ "@babel/plugin-syntax-import-meta": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.2.0.tgz", - "integrity": "sha1-IzPvS4dVU6O80ek/jrwJ9bkhOkA=", + "integrity": "sha512-Hq6kFSZD7+PHkmBN8bCpHR6J8QEoCuEV/B38AIQscYjgMZkGlXB7cHNFzP5jR4RCh5545yP1ujHdmO7hAgKtBA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -2555,7 +2555,7 @@ "regenerator-runtime": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha1-fPanfY9cb2Drc8X8GVWyzrAea/U=", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", "dev": true } } @@ -3068,7 +3068,7 @@ "ajv": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha1-086gTWsBeyiUrWkED+yLYj60vVI=", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -3350,7 +3350,7 @@ "axios": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", - "integrity": "sha1-jgm/89kSLhM/e4EByPvdAO09Krg=", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", "requires": { "follow-redirects": "1.5.10", "is-buffer": "^2.0.2" @@ -3429,7 +3429,7 @@ "babel-eslint": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", - "integrity": "sha1-gaLGab4PIF4ZRi/tJILTPkaHqIo=", + "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -3490,7 +3490,7 @@ "babel-loader": { "version": "8.0.6", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha1-4zvbbzYrA/S7FBoMIauHxQG3Dfs=", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", "dev": true, "requires": { "find-cache-dir": "^2.0.0", @@ -3517,7 +3517,7 @@ "loader-utils": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -4513,7 +4513,7 @@ "compression-webpack-plugin": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-3.0.0.tgz", - "integrity": "sha1-CX0uTZXDoUy1yO0giZAJq1ubvKA=", + "integrity": "sha512-ls+oKw4eRbvaSv/hj9NmctihhBcR26j76JxV0bLRLcWhrUBdQFgd06z/Kgg7exyQvtWWP484wZxs0gIUX3NO0Q==", "requires": { "cacache": "^11.2.0", "find-cache-dir": "^3.0.0", @@ -5665,7 +5665,7 @@ "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -5676,7 +5676,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -5685,7 +5685,7 @@ "eslint-scope": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k=", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -5695,7 +5695,7 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "fast-levenshtein": { @@ -5707,7 +5707,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "levn": { @@ -5743,13 +5743,13 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -5769,7 +5769,7 @@ "eslint-config-airbnb": { "version": "18.0.1", "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.0.1.tgz", - "integrity": "sha1-o6dMwptGQTtglpZQJTgd+PuQhVk=", + "integrity": "sha512-hLb/ccvW4grVhvd6CT83bECacc+s4Z3/AEyWQdIT2KeTsG9dR7nx1gs7Iw4tDmGKozCNHFn4yZmRm3Tgy+XxyQ==", "dev": true, "requires": { "eslint-config-airbnb-base": "^14.0.0", @@ -5888,7 +5888,7 @@ "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "integrity": "sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY=", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -5899,7 +5899,7 @@ "eslint-plugin-jsx-a11y": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", - "integrity": "sha1-uHKgnV3lGvcKl9se6n3JMwQ3CKo=", + "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", "dev": true, "requires": { "@babel/runtime": "^7.4.5", @@ -5916,7 +5916,7 @@ "eslint-plugin-react": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", - "integrity": "sha1-mSjk8+ISLtO6altW0DA7o+QdjAk=", + "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -5933,7 +5933,7 @@ "doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -5953,7 +5953,7 @@ "eslint-plugin-react-hooks": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha1-YhC21aNyBfC5KFj4laToJwIKfQQ=" + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" }, "eslint-scope": { "version": "4.0.3", @@ -5989,7 +5989,7 @@ "eslint-watch": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/eslint-watch/-/eslint-watch-6.0.1.tgz", - "integrity": "sha1-4Jg5FlinwUjeyhcq0glQZa2gU1k=", + "integrity": "sha512-tWT6gQQWzGVn4KMs6ZAdG+nkNNQHg+c6wGdw/mwhp+jWyA7OWEOLxQnRhrP34ddJjpgDafhHOHBNtpVOtXXv4g==", "dev": true, "requires": { "chokidar": "^3.1.1", @@ -6026,7 +6026,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -6492,7 +6492,7 @@ "integrity": "sha1-nvxRzhnsVykIayKuiJ5dfQ4lZgE=", "dev": true, "requires": { - "esprima": "github:substack/esprima#0a7f8489a11b44b019ce168506f535f22d0be290" + "esprima": "github:substack/esprima#is-keyword" } }, "fast-deep-equal": { @@ -6835,7 +6835,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -6872,7 +6873,8 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", @@ -6881,7 +6883,8 @@ }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -6984,7 +6987,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -6994,6 +6998,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -7019,6 +7024,7 @@ "minipass": { "version": "2.3.5", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -7035,6 +7041,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -7107,7 +7114,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -7117,6 +7125,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -7192,7 +7201,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -7222,6 +7232,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -7239,6 +7250,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -7277,11 +7289,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -8296,7 +8310,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", "dev": true } } @@ -8538,7 +8552,7 @@ "istanbul-instrumenter-loader": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", - "integrity": "sha1-mVe9WSUrNz+uXFK3tRiOb94qCUk=", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", "dev": true, "requires": { "convert-source-map": "^1.5.0", @@ -8589,7 +8603,7 @@ "loader-utils": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -8851,7 +8865,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } @@ -8904,7 +8918,7 @@ "karma-chrome-launcher": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha1-gFpYZ5mk0F9OVPcqIEl58/MGZzg=", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", "dev": true, "requires": { "which": "^1.2.1" @@ -8924,7 +8938,7 @@ "karma-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.1.tgz", - "integrity": "sha1-8CTxkfDxNd7iQDdjrDbMUqrCeaw=", + "integrity": "sha512-SnFkHsnLsaXfxkey51rRN9JDLAEKYW2Lb0qOEvcruukk0NkSNDkjobNDZPt9Ni3kIhLZkLtpGOz661hN7OaZvQ==", "dev": true, "requires": { "dateformat": "^1.0.6", @@ -8942,13 +8956,13 @@ "istanbul-lib-coverage": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha1-Z18KtpUD+tSx2En3NrqsqAM0T0k=", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, "istanbul-lib-instrument": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha1-pfY9kfC7wMPkee9MXeAnM17G1jA=", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { "@babel/generator": "^7.4.0", @@ -8971,7 +8985,7 @@ "karma-coverage-istanbul-reporter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.0.tgz", - "integrity": "sha1-XxvME8XhTuHZGCHuiUaGFnT1THU=", + "integrity": "sha512-UH0mXPJFJyK5uiK7EkwGtQ8f30lCBAfqRResnZ4pzLJ04SOp4SPlYkmwbbZ6iVJ6sQFVzlDUXlntBEsLRdgZpg==", "dev": true, "requires": { "istanbul-api": "^2.1.6", @@ -9033,7 +9047,7 @@ "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -9073,7 +9087,7 @@ "karma-webpack": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-4.0.2.tgz", - "integrity": "sha1-IyGb2VvdqFPjBz04dNNER8d7ztA=", + "integrity": "sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -9102,7 +9116,7 @@ "loader-utils": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -9119,7 +9133,7 @@ "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -9980,13 +9994,13 @@ "ansi-colors": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha1-V9NbhoboUeLMBMQD8cACA5dqGBM=", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -9995,7 +10009,7 @@ "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { "locate-path": "^3.0.0" @@ -10004,7 +10018,7 @@ "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -10028,7 +10042,7 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, "p-limit": { @@ -10070,7 +10084,7 @@ "supports-color": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha1-ds/nQs8fQbubHCmtAwaMBbTA5Ao=", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -10079,7 +10093,7 @@ "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -11287,10 +11301,29 @@ "prop-types": "^15.6.2" } }, + "react-async-script": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/react-async-script/-/react-async-script-1.1.1.tgz", + "integrity": "sha512-pmgS3O7JcX4YtH/Xy//NXylpD5CNb5T4/zqlVUV3HvcuyOanatvuveYoxl3X30ZSq/+q/+mSXcNS8xDVQJpSeA==", + "requires": { + "hoist-non-react-statics": "^3.3.0", + "prop-types": "^15.5.0" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==", + "requires": { + "react-is": "^16.7.0" + } + } + } + }, "react-chartjs-2": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.8.0.tgz", - "integrity": "sha1-HCTekfs3VfjEMCZ13n1m/dozl1k=", + "integrity": "sha512-BPpC+qfnh37DkcXvxRwA1rdD9rX/0AQrwru4VZTLofCCuZBwRsc7PbfxjilvoB6YlHhorwZu40YDWEQkoz7xfQ==", "requires": { "lodash": "^4.17.4", "prop-types": "^15.5.8" @@ -11312,7 +11345,7 @@ "react-datepicker": { "version": "0.60.2", "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-0.60.2.tgz", - "integrity": "sha1-EIPcHLn/BjK8oywDmYz4PuHOLgE=", + "integrity": "sha512-5WNtLhozO5i6iGlcgpvjP/Wu4l7RqvTC48CEE/pS1juUny/T4juYHSv53mo+Z90qO4qfyUj59jECTT8AIwAVRQ==", "requires": { "classnames": "^2.2.5", "moment": "^2.17.1", @@ -11338,6 +11371,15 @@ "scheduler": "^0.18.0" } }, + "react-google-recaptcha": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/react-google-recaptcha/-/react-google-recaptcha-2.0.1.tgz", + "integrity": "sha512-4Y8awVnarn7+gdVpu8uvSmRJzzlMMoXqdhLoyToTOfVK6oM+NaChNI8NShnu75Q2YGHLvR1IA1FWZesuYHwn5w==", + "requires": { + "prop-types": "^15.5.0", + "react-async-script": "^1.1.1" + } + }, "react-hot-loader": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-3.1.3.tgz", @@ -11869,7 +11911,7 @@ "semantic-ui-react": { "version": "0.79.1", "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-0.79.1.tgz", - "integrity": "sha1-gL0Mz7OzwRhKGxs/YGerEiWu1fA=", + "integrity": "sha512-Z/QHE/h+l4MrZMilKe7RCBv6wPSBopcwRh5fPPZ1Cavxw4703XizJ3m+g7qcYXa5F40NnM0LKaVDuaReJ0f/3w==", "requires": { "babel-runtime": "^6.25.0", "classnames": "^2.2.5", @@ -13135,7 +13177,7 @@ "uglifyjs-webpack-plugin": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz", - "integrity": "sha1-51vIDn8ZN/cllUybTFoeln6p0Nc=", + "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==", "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", @@ -13156,7 +13198,7 @@ "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "requires": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -13666,7 +13708,7 @@ "acorn": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha1-AIdQkRn/pPwKAEHR6TpBfmjLhW4=" + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" }, "big.js": { "version": "5.2.2", @@ -13684,7 +13726,7 @@ "loader-utils": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "requires": { "big.js": "^5.2.2", "emojis-list": "^2.0.0", @@ -13701,7 +13743,7 @@ "webpack-bundle-tracker": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-0.4.3.tgz", - "integrity": "sha1-SKPiIm3bnSTXBGQKtBaMLRIPRSY=", + "integrity": "sha512-Sl/+OsNhFAH3/c6XADupRu8jLvGojfXX0pZIIm3O5ZcJqkHHqlY4nLG+NVRcbDgM/jOeWimKDGQMVEa8FBeJ2g==", "requires": { "deep-extend": "^0.6.0", "mkdirp": "^0.5.1", @@ -13766,7 +13808,7 @@ "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -13777,7 +13819,7 @@ "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -13823,7 +13865,7 @@ "loader-utils": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -13900,7 +13942,7 @@ "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -13915,7 +13957,7 @@ "yargs": { "version": "13.2.4", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha1-C1YreUAW65ZRuYvTes82SqXW3IM=", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", "dev": true, "requires": { "cliui": "^5.0.0", @@ -14049,7 +14091,7 @@ "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -14091,7 +14133,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -14233,7 +14275,7 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "string-width": { @@ -14260,7 +14302,7 @@ "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -14301,7 +14343,7 @@ "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", "dev": true, "requires": { "async-limiter": "~1.0.0" @@ -14310,7 +14352,7 @@ "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", "dev": true, "requires": { "cliui": "^4.0.0",