Full Code of Seunope/aloc-endpoints for AI

master 2a7d9577ba41 cached
611 files
29.9 MB
7.9M tokens
1956 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (31,536K chars total). Download the full file to get everything.
Repository: Seunope/aloc-endpoints
Branch: master
Commit: 2a7d9577ba41
Files: 611
Total size: 29.9 MB

Directory structure:
gitextract_nct3mn5x/

├── .editorconfig
├── .gitattributes
├── .gitignore
├── .styleci.yml
├── README1.md
├── app/
│   ├── Console/
│   │   └── Kernel.php
│   ├── Exceptions/
│   │   └── Handler.php
│   ├── Http/
│   │   ├── Controllers/
│   │   │   ├── Admin/
│   │   │   │   ├── AccessTokenController.php
│   │   │   │   ├── Auth/
│   │   │   │   │   ├── AuthController.php
│   │   │   │   │   └── ForgotPasswordController.php
│   │   │   │   ├── BillingController.php
│   │   │   │   └── DashboardController.php
│   │   │   ├── Api/
│   │   │   │   ├── v1/
│   │   │   │   │   ├── MetricsController.php
│   │   │   │   │   └── QuestionController.php
│   │   │   │   └── v2/
│   │   │   │       ├── MetricsController.php
│   │   │   │       └── QuestionController.php
│   │   │   └── Controller.php
│   │   ├── Kernel.php
│   │   └── Middleware/
│   │       ├── Authenticate.php
│   │       ├── EncryptCookies.php
│   │       ├── PreventRequestsDuringMaintenance.php
│   │       ├── RedirectIfAuthenticated.php
│   │       ├── TrimStrings.php
│   │       ├── TrustHosts.php
│   │       ├── TrustProxies.php
│   │       └── VerifyCsrfToken.php
│   ├── Models/
│   │   ├── AccessToken.php
│   │   ├── AccessTokenCall.php
│   │   ├── ApiCallIpAddress.php
│   │   ├── PasswordReset.php
│   │   ├── Payment.php
│   │   ├── PricePlan.php
│   │   ├── QBoardLog.php
│   │   ├── QLoader.php
│   │   ├── ReportQuestion.php
│   │   ├── Subscription.php
│   │   └── User.php
│   ├── Providers/
│   │   ├── AppServiceProvider.php
│   │   ├── AuthServiceProvider.php
│   │   ├── BroadcastServiceProvider.php
│   │   ├── EventServiceProvider.php
│   │   └── RouteServiceProvider.php
│   └── functions.php
├── artisan
├── bootstrap/
│   ├── app.php
│   └── cache/
│       └── .gitignore
├── composer.json
├── config/
│   ├── app.php
│   ├── auth.php
│   ├── broadcasting.php
│   ├── cache.php
│   ├── cors.php
│   ├── database.php
│   ├── filesystems.php
│   ├── hashing.php
│   ├── location.php
│   ├── logging.php
│   ├── mail.php
│   ├── queue.php
│   ├── services.php
│   ├── session.php
│   └── view.php
├── database/
│   ├── .gitignore
│   ├── factories/
│   │   └── UserFactory.php
│   ├── migrations/
│   │   ├── 2014_10_12_000000_create_users_table.php
│   │   ├── 2014_10_12_100000_create_password_resets_table.php
│   │   ├── 2018_08_13_124632_create_questions_tables.php
│   │   ├── 2018_08_28_195542_create_report_question_tables.php
│   │   ├── 2018_11_10_105744_create_table_ipaddres_2_question.php
│   │   ├── 2019_08_19_000000_create_failed_jobs_table.php
│   │   ├── 2021_07_10_192953_create_access_token_table.php
│   │   ├── 2021_07_13_194154_create_table_access_token_calls.php
│   │   ├── 2021_07_17_152326_create_table_price_plans.php
│   │   ├── 2021_08_03_124437_create_payment_table.php
│   │   └── 2022_10_22_110248_create_qboard_log_table.php
│   └── seeders/
│       ├── DatabaseSeeder.php
│       ├── LoadDummyQuestions.php
│       └── ReportQuestionType.php
├── package.json
├── phpunit.xml
├── public/
│   ├── .htaccess
│   ├── admin/
│   │   ├── css/
│   │   │   ├── animate.css
│   │   │   ├── bootstrap.css
│   │   │   ├── plugins/
│   │   │   │   ├── blueimp/
│   │   │   │   │   └── css/
│   │   │   │   │       ├── blueimp-gallery-indicator.css
│   │   │   │   │       ├── blueimp-gallery-video.css
│   │   │   │   │       ├── blueimp-gallery.css
│   │   │   │   │       └── demo.css
│   │   │   │   ├── bootstrap-rtl/
│   │   │   │   │   └── bootstrap-rtl.css
│   │   │   │   ├── chosen/
│   │   │   │   │   └── chosen.css
│   │   │   │   ├── codemirror/
│   │   │   │   │   ├── ambiance.css
│   │   │   │   │   └── codemirror.css
│   │   │   │   ├── dataTables/
│   │   │   │   │   ├── dataTables.bootstrap.css
│   │   │   │   │   └── dataTables.responsive.css
│   │   │   │   ├── datapicker/
│   │   │   │   │   └── datepicker3.css
│   │   │   │   ├── dropzone/
│   │   │   │   │   ├── basic.css
│   │   │   │   │   └── dropzone.css
│   │   │   │   ├── fullcalendar/
│   │   │   │   │   ├── fullcalendar.css
│   │   │   │   │   └── fullcalendar.print.css
│   │   │   │   ├── iCheck/
│   │   │   │   │   └── custom.css
│   │   │   │   ├── ionRangeSlider/
│   │   │   │   │   ├── ion.rangeSlider.css
│   │   │   │   │   ├── ion.rangeSlider.skinFlat.css
│   │   │   │   │   ├── ion.rangeSlider.skinNice.css
│   │   │   │   │   └── ion.rangeSlider.skinSimple.css
│   │   │   │   ├── jqGrid/
│   │   │   │   │   └── ui.jqgrid.css
│   │   │   │   ├── jsTree/
│   │   │   │   │   └── style.css
│   │   │   │   ├── nouslider/
│   │   │   │   │   └── jquery.nouislider.css
│   │   │   │   ├── social-buttons/
│   │   │   │   │   └── social-buttons.css
│   │   │   │   ├── steps/
│   │   │   │   │   └── jquery.steps.css
│   │   │   │   ├── summernote/
│   │   │   │   │   ├── summernote-bs3.css
│   │   │   │   │   └── summernote.css
│   │   │   │   └── switchery/
│   │   │   │       └── switchery.css
│   │   │   └── style.css
│   │   ├── email_templates/
│   │   │   ├── action.html
│   │   │   ├── alert.html
│   │   │   ├── billing.html
│   │   │   └── styles.css
│   │   ├── font-awesome/
│   │   │   ├── css/
│   │   │   │   └── font-awesome.css
│   │   │   ├── fonts/
│   │   │   │   └── FontAwesome.otf
│   │   │   ├── less/
│   │   │   │   ├── animated.less
│   │   │   │   ├── bordered-pulled.less
│   │   │   │   ├── core.less
│   │   │   │   ├── fixed-width.less
│   │   │   │   ├── font-awesome.less
│   │   │   │   ├── icons.less
│   │   │   │   ├── larger.less
│   │   │   │   ├── list.less
│   │   │   │   ├── mixins.less
│   │   │   │   ├── path.less
│   │   │   │   ├── rotated-flipped.less
│   │   │   │   ├── stacked.less
│   │   │   │   └── variables.less
│   │   │   └── scss/
│   │   │       ├── _animated.scss
│   │   │       ├── _bordered-pulled.scss
│   │   │       ├── _core.scss
│   │   │       ├── _fixed-width.scss
│   │   │       ├── _icons.scss
│   │   │       ├── _larger.scss
│   │   │       ├── _list.scss
│   │   │       ├── _mixins.scss
│   │   │       ├── _path.scss
│   │   │       ├── _rotated-flipped.scss
│   │   │       ├── _stacked.scss
│   │   │       ├── _variables.scss
│   │   │       └── font-awesome.scss
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   ├── demo/
│   │   │   │   ├── chartjs-demo.js
│   │   │   │   ├── dashboard-demo.js
│   │   │   │   ├── flot-demo.js
│   │   │   │   ├── flot-demo2.js
│   │   │   │   ├── morris-demo.js
│   │   │   │   ├── peity-demo.js
│   │   │   │   ├── rickshaw-demo.js
│   │   │   │   └── sparkline-demo.js
│   │   │   ├── inspinia.js
│   │   │   ├── jquery-2.1.1.js
│   │   │   └── plugins/
│   │   │       ├── chosen/
│   │   │       │   └── chosen.jquery.js
│   │   │       ├── codemirror/
│   │   │       │   ├── codemirror.js
│   │   │       │   └── mode/
│   │   │       │       ├── apl/
│   │   │       │       │   ├── apl.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── asterisk/
│   │   │       │       │   ├── asterisk.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── clike/
│   │   │       │       │   ├── clike.js
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── scala.html
│   │   │       │       ├── clojure/
│   │   │       │       │   ├── clojure.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── cobol/
│   │   │       │       │   ├── cobol.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── coffeescript/
│   │   │       │       │   ├── coffeescript.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── commonlisp/
│   │   │       │       │   ├── commonlisp.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── css/
│   │   │       │       │   ├── css.js
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── less.html
│   │   │       │       │   ├── less_test.js
│   │   │       │       │   ├── scss.html
│   │   │       │       │   ├── scss_test.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── cypher/
│   │   │       │       │   ├── cypher.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── d/
│   │   │       │       │   ├── d.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── diff/
│   │   │       │       │   ├── diff.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── django/
│   │   │       │       │   ├── django.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── dtd/
│   │   │       │       │   ├── dtd.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── dylan/
│   │   │       │       │   ├── dylan.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── ecl/
│   │   │       │       │   ├── ecl.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── eiffel/
│   │   │       │       │   ├── eiffel.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── erlang/
│   │   │       │       │   ├── erlang.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── fortran/
│   │   │       │       │   ├── fortran.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── gas/
│   │   │       │       │   ├── gas.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── gfm/
│   │   │       │       │   ├── gfm.js
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── test.js
│   │   │       │       ├── gherkin/
│   │   │       │       │   ├── gherkin.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── go/
│   │   │       │       │   ├── go.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── groovy/
│   │   │       │       │   ├── groovy.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── haml/
│   │   │       │       │   ├── haml.js
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── test.js
│   │   │       │       ├── haskell/
│   │   │       │       │   ├── haskell.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── haxe/
│   │   │       │       │   ├── haxe.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── htmlembedded/
│   │   │       │       │   ├── htmlembedded.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── htmlmixed/
│   │   │       │       │   ├── htmlmixed.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── http/
│   │   │       │       │   ├── http.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── index.html
│   │   │       │       ├── jade/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── jade.js
│   │   │       │       ├── javascript/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── javascript.js
│   │   │       │       │   ├── json-ld.html
│   │   │       │       │   ├── test.js
│   │   │       │       │   └── typescript.html
│   │   │       │       ├── jinja2/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── jinja2.js
│   │   │       │       ├── julia/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── julia.js
│   │   │       │       ├── kotlin/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── kotlin.js
│   │   │       │       ├── livescript/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── livescript.js
│   │   │       │       ├── lua/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── lua.js
│   │   │       │       ├── markdown/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── markdown.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── meta.js
│   │   │       │       ├── mirc/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── mirc.js
│   │   │       │       ├── mllike/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── mllike.js
│   │   │       │       ├── modelica/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── modelica.js
│   │   │       │       ├── nginx/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── nginx.js
│   │   │       │       ├── ntriples/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── ntriples.js
│   │   │       │       ├── octave/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── octave.js
│   │   │       │       ├── pascal/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── pascal.js
│   │   │       │       ├── pegjs/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── pegjs.js
│   │   │       │       ├── perl/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── perl.js
│   │   │       │       ├── php/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── php.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── pig/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── pig.js
│   │   │       │       ├── properties/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── properties.js
│   │   │       │       ├── puppet/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── puppet.js
│   │   │       │       ├── python/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── python.js
│   │   │       │       ├── q/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── q.js
│   │   │       │       ├── r/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── r.js
│   │   │       │       ├── rpm/
│   │   │       │       │   ├── changes/
│   │   │       │       │   │   └── index.html
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── rpm.js
│   │   │       │       ├── rst/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── rst.js
│   │   │       │       ├── ruby/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── ruby.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── rust/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── rust.js
│   │   │       │       ├── sass/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── sass.js
│   │   │       │       ├── scheme/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── scheme.js
│   │   │       │       ├── shell/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── shell.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── sieve/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── sieve.js
│   │   │       │       ├── slim/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── slim.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── smalltalk/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── smalltalk.js
│   │   │       │       ├── smarty/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── smarty.js
│   │   │       │       ├── smartymixed/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── smartymixed.js
│   │   │       │       ├── solr/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── solr.js
│   │   │       │       ├── sparql/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── sparql.js
│   │   │       │       ├── sql/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── sql.js
│   │   │       │       ├── stex/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── stex.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── tcl/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── tcl.js
│   │   │       │       ├── textile/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── test.js
│   │   │       │       │   └── textile.js
│   │   │       │       ├── tiddlywiki/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── tiddlywiki.css
│   │   │       │       │   └── tiddlywiki.js
│   │   │       │       ├── tiki/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── tiki.css
│   │   │       │       │   └── tiki.js
│   │   │       │       ├── toml/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── toml.js
│   │   │       │       ├── tornado/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── tornado.js
│   │   │       │       ├── turtle/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── turtle.js
│   │   │       │       ├── vb/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── vb.js
│   │   │       │       ├── vbscript/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── vbscript.js
│   │   │       │       ├── velocity/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── velocity.js
│   │   │       │       ├── verilog/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── test.js
│   │   │       │       │   └── verilog.js
│   │   │       │       ├── xml/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── test.js
│   │   │       │       │   └── xml.js
│   │   │       │       ├── xquery/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── test.js
│   │   │       │       │   └── xquery.js
│   │   │       │       ├── yaml/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── yaml.js
│   │   │       │       └── z80/
│   │   │       │           ├── index.html
│   │   │       │           └── z80.js
│   │   │       ├── dataTables/
│   │   │       │   ├── dataTables.bootstrap.js
│   │   │       │   ├── dataTables.responsive.js
│   │   │       │   ├── jquery.dataTables.js
│   │   │       │   └── swf/
│   │   │       │       ├── copy_csv_xls.swf
│   │   │       │       └── copy_csv_xls_pdf.swf
│   │   │       ├── datapicker/
│   │   │       │   └── bootstrap-datepicker.js
│   │   │       ├── dropzone/
│   │   │       │   └── dropzone.js
│   │   │       ├── easypiechart/
│   │   │       │   ├── easypiechart.js
│   │   │       │   └── jquery.easypiechart.js
│   │   │       ├── flot/
│   │   │       │   ├── curvedLines.js
│   │   │       │   ├── jquery.flot.js
│   │   │       │   ├── jquery.flot.pie.js
│   │   │       │   ├── jquery.flot.resize.js
│   │   │       │   ├── jquery.flot.spline.js
│   │   │       │   ├── jquery.flot.symbol.js
│   │   │       │   └── jquery.flot.time.js
│   │   │       ├── gritter/
│   │   │       │   └── jquery.gritter.css
│   │   │       ├── jeditable/
│   │   │       │   └── jquery.jeditable.js
│   │   │       ├── jqGrid/
│   │   │       │   └── i18n/
│   │   │       │       ├── grid.locale-ar.js
│   │   │       │       ├── grid.locale-bg.js
│   │   │       │       ├── grid.locale-bg1251.js
│   │   │       │       ├── grid.locale-cat.js
│   │   │       │       ├── grid.locale-cn.js
│   │   │       │       ├── grid.locale-cs.js
│   │   │       │       ├── grid.locale-da.js
│   │   │       │       ├── grid.locale-de.js
│   │   │       │       ├── grid.locale-dk.js
│   │   │       │       ├── grid.locale-el.js
│   │   │       │       ├── grid.locale-en.js
│   │   │       │       ├── grid.locale-es.js
│   │   │       │       ├── grid.locale-fa.js
│   │   │       │       ├── grid.locale-fi.js
│   │   │       │       ├── grid.locale-fr.js
│   │   │       │       ├── grid.locale-gl.js
│   │   │       │       ├── grid.locale-he.js
│   │   │       │       ├── grid.locale-hr.js
│   │   │       │       ├── grid.locale-hr1250.js
│   │   │       │       ├── grid.locale-hu.js
│   │   │       │       ├── grid.locale-id.js
│   │   │       │       ├── grid.locale-is.js
│   │   │       │       ├── grid.locale-it.js
│   │   │       │       ├── grid.locale-ja.js
│   │   │       │       ├── grid.locale-kr.js
│   │   │       │       ├── grid.locale-lt.js
│   │   │       │       ├── grid.locale-mne.js
│   │   │       │       ├── grid.locale-nl.js
│   │   │       │       ├── grid.locale-no.js
│   │   │       │       ├── grid.locale-pl.js
│   │   │       │       ├── grid.locale-pt-br.js
│   │   │       │       ├── grid.locale-pt.js
│   │   │       │       ├── grid.locale-ro.js
│   │   │       │       ├── grid.locale-ru.js
│   │   │       │       ├── grid.locale-sk.js
│   │   │       │       ├── grid.locale-sr-latin.js
│   │   │       │       ├── grid.locale-sr.js
│   │   │       │       ├── grid.locale-sv.js
│   │   │       │       ├── grid.locale-th.js
│   │   │       │       ├── grid.locale-tr.js
│   │   │       │       ├── grid.locale-tw.js
│   │   │       │       ├── grid.locale-ua.js
│   │   │       │       └── grid.locale-vi.js
│   │   │       ├── jquery-ui/
│   │   │       │   ├── jquery-ui.css
│   │   │       │   └── jquery-ui.js
│   │   │       ├── jsKnob/
│   │   │       │   └── jquery.knob.js
│   │   │       ├── justified-gallery/
│   │   │       │   ├── README.md
│   │   │       │   ├── jquery.justifiedgallery.css
│   │   │       │   └── jquery.justifiedgallery.js
│   │   │       ├── jvectormap/
│   │   │       │   └── jquery-jvectormap-world-mill-en.js
│   │   │       ├── metisMenu/
│   │   │       │   └── jquery.metisMenu.js
│   │   │       ├── morris/
│   │   │       │   └── morris.js
│   │   │       ├── nestable/
│   │   │       │   └── jquery.nestable.js
│   │   │       ├── rickshaw/
│   │   │       │   └── vendor/
│   │   │       │       └── d3.v3.js
│   │   │       ├── slimscroll/
│   │   │       │   └── jquery.slimscroll.js
│   │   │       ├── switchery/
│   │   │       │   └── switchery.js
│   │   │       └── video/
│   │   │           └── responsible-video.js
│   │   └── scss/
│   │       ├── badgets_labels.scss
│   │       ├── base.scss
│   │       ├── buttons.scss
│   │       ├── custom.scss
│   │       ├── elements.scss
│   │       ├── media.scss
│   │       ├── mixins.scss
│   │       ├── navigation.scss
│   │       ├── pages.scss
│   │       ├── rtl.scss
│   │       ├── sidebar.scss
│   │       ├── skins.scss
│   │       ├── style.scss
│   │       ├── theme-config.scss
│   │       ├── top_navigation.scss
│   │       ├── typography.scss
│   │       └── variables.scss
│   ├── index.php
│   ├── landing/
│   │   ├── css/
│   │   │   ├── aos.css
│   │   │   ├── bootstrap/
│   │   │   │   ├── bootstrap-grid.css
│   │   │   │   ├── bootstrap-reboot.css
│   │   │   │   └── bootstrap.css
│   │   │   ├── bootstrap-datepicker.css
│   │   │   ├── jquery-ui.css
│   │   │   ├── magnific-popup.css
│   │   │   ├── mediaelementplayer.css
│   │   │   └── style.css
│   │   ├── fonts/
│   │   │   ├── flaticon/
│   │   │   │   ├── backup.txt
│   │   │   │   └── font/
│   │   │   │       ├── _flaticon.scss
│   │   │   │       ├── flaticon.css
│   │   │   │       └── flaticon.html
│   │   │   └── icomoon/
│   │   │       ├── Read Me.txt
│   │   │       ├── demo-files/
│   │   │       │   ├── demo.css
│   │   │       │   └── demo.js
│   │   │       ├── demo.html
│   │   │       ├── selection.json
│   │   │       └── style.css
│   │   ├── js/
│   │   │   ├── aos.js
│   │   │   ├── jquery-ui.js
│   │   │   ├── jquery.easing.1.3.js
│   │   │   ├── jquery.sticky.js
│   │   │   ├── main.js
│   │   │   └── typed.js
│   │   └── scss/
│   │       ├── _site-base.scss
│   │       ├── _site-blocks.scss
│   │       ├── _site-navbar.scss
│   │       ├── bootstrap/
│   │       │   ├── _alert.scss
│   │       │   ├── _badge.scss
│   │       │   ├── _breadcrumb.scss
│   │       │   ├── _button-group.scss
│   │       │   ├── _buttons.scss
│   │       │   ├── _card.scss
│   │       │   ├── _carousel.scss
│   │       │   ├── _close.scss
│   │       │   ├── _code.scss
│   │       │   ├── _custom-forms.scss
│   │       │   ├── _dropdown.scss
│   │       │   ├── _forms.scss
│   │       │   ├── _functions.scss
│   │       │   ├── _grid.scss
│   │       │   ├── _images.scss
│   │       │   ├── _input-group.scss
│   │       │   ├── _jumbotron.scss
│   │       │   ├── _list-group.scss
│   │       │   ├── _media.scss
│   │       │   ├── _mixins.scss
│   │       │   ├── _modal.scss
│   │       │   ├── _nav.scss
│   │       │   ├── _navbar.scss
│   │       │   ├── _pagination.scss
│   │       │   ├── _popover.scss
│   │       │   ├── _print.scss
│   │       │   ├── _progress.scss
│   │       │   ├── _reboot.scss
│   │       │   ├── _root.scss
│   │       │   ├── _tables.scss
│   │       │   ├── _tooltip.scss
│   │       │   ├── _transitions.scss
│   │       │   ├── _type.scss
│   │       │   ├── _utilities.scss
│   │       │   ├── _variables.scss
│   │       │   ├── bootstrap-grid.scss
│   │       │   ├── bootstrap-reboot.scss
│   │       │   ├── bootstrap.scss
│   │       │   ├── mixins/
│   │       │   │   ├── _alert.scss
│   │       │   │   ├── _background-variant.scss
│   │       │   │   ├── _badge.scss
│   │       │   │   ├── _border-radius.scss
│   │       │   │   ├── _box-shadow.scss
│   │       │   │   ├── _breakpoints.scss
│   │       │   │   ├── _buttons.scss
│   │       │   │   ├── _caret.scss
│   │       │   │   ├── _clearfix.scss
│   │       │   │   ├── _float.scss
│   │       │   │   ├── _forms.scss
│   │       │   │   ├── _gradients.scss
│   │       │   │   ├── _grid-framework.scss
│   │       │   │   ├── _grid.scss
│   │       │   │   ├── _hover.scss
│   │       │   │   ├── _image.scss
│   │       │   │   ├── _list-group.scss
│   │       │   │   ├── _lists.scss
│   │       │   │   ├── _nav-divider.scss
│   │       │   │   ├── _pagination.scss
│   │       │   │   ├── _reset-text.scss
│   │       │   │   ├── _resize.scss
│   │       │   │   ├── _screen-reader.scss
│   │       │   │   ├── _size.scss
│   │       │   │   ├── _table-row.scss
│   │       │   │   ├── _text-emphasis.scss
│   │       │   │   ├── _text-hide.scss
│   │       │   │   ├── _text-truncate.scss
│   │       │   │   ├── _transition.scss
│   │       │   │   └── _visibility.scss
│   │       │   └── utilities/
│   │       │       ├── _align.scss
│   │       │       ├── _background.scss
│   │       │       ├── _borders.scss
│   │       │       ├── _clearfix.scss
│   │       │       ├── _display.scss
│   │       │       ├── _embed.scss
│   │       │       ├── _flex.scss
│   │       │       ├── _float.scss
│   │       │       ├── _position.scss
│   │       │       ├── _screenreaders.scss
│   │       │       ├── _shadows.scss
│   │       │       ├── _sizing.scss
│   │       │       ├── _spacing.scss
│   │       │       ├── _text.scss
│   │       │       └── _visibility.scss
│   │       └── style.scss
│   ├── robots.txt
│   └── web.config
├── readme.md
├── resources/
│   ├── css/
│   │   └── app.css
│   ├── js/
│   │   ├── app.js
│   │   └── bootstrap.js
│   ├── lang/
│   │   └── en/
│   │       ├── auth.php
│   │       ├── pagination.php
│   │       ├── passwords.php
│   │       └── validation.php
│   └── views/
│       ├── admin/
│       │   ├── access_token.blade.php
│       │   ├── dashboard.blade.php
│       │   ├── layouts/
│       │   │   ├── base.blade.php
│       │   │   ├── footer.blade.php
│       │   │   ├── header.blade.php
│       │   │   └── partials/
│       │   │       ├── _footer_note.blade.php
│       │   │       ├── _sidebar.blade.php
│       │   │       └── _top_toolbar.blade.php
│       │   └── subscription/
│       │       └── billing.blade.php
│       ├── landing/
│       │   ├── auth/
│       │   │   ├── forget_password.blade.php
│       │   │   ├── forget_password_link.blade.php
│       │   │   └── signup.blade.php
│       │   ├── emails/
│       │   │   └── forget_password.blade.php
│       │   ├── index.blade.php
│       │   └── layouts/
│       │       ├── base.blade.php
│       │       ├── footer.blade.php
│       │       ├── header.blade.php
│       │       └── partials/
│       │           ├── _footer_note.blade.php
│       │           ├── _header_note.blade.php
│       │           └── _header_note2.blade.php
│       └── welcome.blade.php
├── routes/
│   ├── api.php
│   ├── channels.php
│   ├── console.php
│   └── web.php
├── server.php
├── storage/
│   ├── app/
│   │   └── .gitignore
│   ├── backups/
│   │   ├── 2020-07-02.sql
│   │   ├── 2020-07-07.sql
│   │   ├── 2020-07-15.sql
│   │   ├── 2020-07-22.sql
│   │   ├── 2020-07-28.sql
│   │   ├── 2020-08-16.sql
│   │   └── 2020-08-20.sql
│   ├── framework/
│   │   ├── .gitignore
│   │   ├── cache/
│   │   │   └── .gitignore
│   │   ├── sessions/
│   │   │   └── .gitignore
│   │   ├── testing/
│   │   │   └── .gitignore
│   │   └── views/
│   │       └── .gitignore
│   └── logs/
│       └── .gitignore
├── tests/
│   ├── CreatesApplication.php
│   ├── Feature/
│   │   └── ExampleTest.php
│   ├── TestCase.php
│   └── Unit/
│       └── ExampleTest.php
└── webpack.mix.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2


================================================
FILE: .gitattributes
================================================
* text=auto
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
CHANGELOG.md export-ignore


================================================
FILE: .gitignore
================================================
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.phpunit.result.cache
docker-compose.override.yml
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
/.idea
/.vscode


================================================
FILE: .styleci.yml
================================================
php:
  preset: laravel
  disabled:
    - no_unused_imports
  finder:
    not-name:
      - index.php
      - server.php
js:
  finder:
    not-name:
      - webpack.mix.js
css: true


================================================
FILE: README1.md
================================================
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400"></a></p>

<p align="center">
<a href="https://travis-ci.org/laravel/framework"><img src="https://travis-ci.org/laravel/framework.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>

## About Laravel

Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:

- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).

Laravel is accessible, powerful, and provides tools required for large, robust applications.

## Learning Laravel

Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.

If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 1500 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.

## Laravel Sponsors

We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell).

### Premium Partners

- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)**
- **[Cubet Techno Labs](https://cubettech.com)**
- **[Cyber-Duck](https://cyber-duck.co.uk)**
- **[Many](https://www.many.co.uk)**
- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)**
- **[DevSquad](https://devsquad.com)**
- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
- **[OP.GG](https://op.gg)**

## Contributing

Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).

## Code of Conduct

In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).

## Security Vulnerabilities

If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.

## License

The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).


================================================
FILE: app/Console/Kernel.php
================================================
<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        // $schedule->command('inspire')->hourly();
    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}


================================================
FILE: app/Exceptions/Handler.php
================================================
<?php

namespace App\Exceptions;

use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;

class Handler extends ExceptionHandler
{
    /**
     * A list of the exception types that are not reported.
     *
     * @var array
     */
    protected $dontReport = [
        //
    ];

    /**
     * A list of the inputs that are never flashed for validation exceptions.
     *
     * @var array
     */
    protected $dontFlash = [
        'current_password',
        'password',
        'password_confirmation',
    ];

    /**
     * Register the exception handling callbacks for the application.
     *
     * @return void
     */
    public function register()
    {
        $this->reportable(function (Throwable $e) {
            //
        });
    }
}


================================================
FILE: app/Http/Controllers/Admin/AccessTokenController.php
================================================
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\AccessToken;
use Illuminate\Http\Request;

class AccessTokenController extends Controller
{
    public function index (){

        $access = AccessToken::whereUserId(auth()->user()->id)->first();
        $data['token'] = $access->token;
        $data['count'] = $access->count;
        $data['lastUsed'] = $access->updated_at;

        return view('admin.access_token')->with($data);
    }

    public function generateNewToken (){

        $access = AccessToken::whereUserId(auth()->user()->id)->first();
        $bytes = random_bytes(10);
        $token = "QB-".bin2hex($bytes);
        $access->update(['token'=> $token]);
        flash('New token created successfully')->success();

        return redirect('admin/access-token');
    }
}


================================================
FILE: app/Http/Controllers/Admin/Auth/AuthController.php
================================================
<?php

namespace App\Http\Controllers\Admin\Auth;

use App\Http\Controllers\Controller;
use App\Models\AccessToken;
use App\Models\PricePlan;
use App\Models\Subscription;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;

class AuthController extends Controller
{
    public function signup()
    {
        return view('landing.auth.signup');
    }

    public function handleSignup(Request $request)
    {
        $input = $request->except('_token');
        $rules = array(
            'name'   => 'required|min:4|max:40',
            'email'      => 'required|email|unique:users,email',
            'password' => 'required|alpha_num|min:6|max:20');

        $messages = array(
            'min' => 'Hmm, that looks short.',
            'max' => 'Oops, that too long you might forget.',
            'alpha_num'  => 'Use alphabet or alphabet with numbers to secure your password.');


        $validator = Validator::make($input, $rules, $messages);

        if (!$validator->passes()) {
            flash('Something is wrong with your entries')->warning();
            return back()->withInput()->withErrors($validator);
        }

        try {

            DB::beginTransaction();
            $input['name'] = ucfirst($input['name']);
            $input['password'] = Hash::make($input['password']);
            $newUser = User::create($input);

            $bytes = random_bytes(10);
            $accessData['user_id'] = $newUser->id;
            $accessData['token'] = "ALOC-" . bin2hex($bytes);
            AccessToken::create($accessData);

            $price = PricePlan::first();

            $sub['user_id'] = $newUser->id;
            $sub['limit'] = $price->unit_limit;
            $sub['plan_id'] = $price->id;
            Subscription::create($sub);
            DB::commit();

            flash('Account created successfully')->success();
            $credentials = $request->except('_token', 'name');


            if (Auth::attempt($credentials, true)) {
                return redirect('/admin/dashboard');

            } else {
                flash('Hey! Contact admin, could not login')->warning();
                return back();
            }
        }
        catch(\Exception $e)
        {
            //dd($e);
            DB::rollback();
            flash('Technical issue. Try again or contact admin')->error();
            return back();
        }


    }

    public function login()
    {
        if(Auth::check()) {
            return redirect('admin/dashboard');
        }
        else {
            flash('Access denied! Unauthorised login')->warning();
            return redirect('/');

        }
    }

    public function handleLogin(Request $request)
    {
        $credentials = $request->except('_token');
        $rules = array(
            'email'      => 'required|email',
            'password' => 'required');

        $validator = Validator::make($credentials, $rules);

        if (!$validator->passes()) {
            flash('Something is wrong with your entries')->warning();
            return back()->withInput()->withErrors($validator);
        }

        if (Auth::attempt($credentials,true)) {
            $user = auth()->user();
            flash('Welcome back '.$user->name)->success ();
            return redirect('admin/dashboard');
        }
        else {
            flash('Awh! Incorrect login details')->warning();
            return back()->withInput()->withErrors($validator);
        }

    }

    public function handleLogout ()
    {
        Auth::logout();
        flash('You have successfully log out')->success();
        return redirect('/');
    }
}


================================================
FILE: app/Http/Controllers/Admin/Auth/ForgotPasswordController.php
================================================
<?php

namespace App\Http\Controllers\Admin\Auth;

use App\Http\Controllers\Controller;
use App\Models\PasswordReset;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;

class ForgotPasswordController extends Controller
{

    public function showForgetPasswordForm()
    {
        return view('landing.auth.forget_password');
    }

    public function submitForgetPasswordForm(Request $request)
    {
        $request->validate([
            'email' => 'required|email|exists:users',
        ]);

        $token = Str::random(64);
        $input['email'] = $request->email;
        $input['token'] = $token;

        PasswordReset::create($input);

        try{
            Mail::send('landing.emails.forget_password', ['token' => $token], function($message) use($request){
                $message->to($request->email);
                $message->subject('ALOC Endpoints Reset Password');
            });
        }catch (\Exception $e){
            //dd($e);
            flash('Could not send email. Please try again')->error();
            return back();
        }

        flash('We have e-mailed your password reset link!')->success();
        return redirect('/');

    }


    public function showResetPasswordForm($token) {
        return view('landing.auth.forget_password_link', ['token' => $token]);
    }

    public function submitResetPasswordForm(Request $request)
    {

        $request->validate([
            'email' => 'required|email|exists:users',
            'password' => 'required|string|min:6|confirmed',
            'password_confirmation' => 'required'
        ]);


        $updatePassword = PasswordReset::where([
                'email' => $request->email,
                'token' => $request->token])->first();

        if(!$updatePassword){
            flash('Invalid token!')->error();
            return back()->withInput()->with('error', 'Invalid token!');
        }

        $user = User::where('email', $request->email)
                      ->update(['password' => Hash::make($request->password)]);

        PasswordReset::where(['email'=> $request->email])->delete();

        flash('Your password has been changed!')->success();
        return redirect('/');

    }
}


================================================
FILE: app/Http/Controllers/Admin/BillingController.php
================================================
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Payment;
use App\Models\PricePlan;
use App\Models\Subscription;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;

class BillingController extends Controller
{
    public function index (){
        $data['pricing'] = PricePlan::get();
        return view('admin.subscription.billing')->with($data);
    }

    public function paystackCallBack(Request $request)
    {
        $input = $request->all();
        $user = auth()->user();
        $userId =$user->id;
        $rules = array(
            'transReference'   => 'required',
            'amount'      => 'required',
            'plan' => 'required');

        $validator = Validator::make($input, $rules);

        if ($validator->passes())
        {
            try
            {

                $verifyData = $this->verifyPaystackTrans($input['transReference'],$userId);

                $pay['amount'] =  $input['amount'] ;
                $pay['plan_id'] =  $input['plan'] ;
                $pay['price'] = $input['amount'] ;
                $pay['trans_reference'] = $input['transReference'] ;
                $pay['user_id'] = $userId;
                $pay['message'] =$verifyData['message'];

                if(!$verifyData['status']){
                    flash('Aw! Could not verify transaction, please contact admin')->error();
                    Payment::create($pay);
                    return back();
                }

                $plan  = PricePlan::find($input['plan']);

                if(is_null($plan)){
                    $pay['plan_id'] = $plan->id ;
                    $pay['message'] ='Oops! Something wried just happened. Plan not found';
                    Payment::create($pay);
                    flash('Oops! Something wried just happened, please contact admin')->warning();
                    return back();
                }

                $pay['plan_id'] =   $plan->id ;
                $pay['price'] = $plan->price ;

                if($plan->price != $input['amount']){
                    $pay['message'] ='Oops! Wried stuff just happened. Amount does not match';
                    Payment::create($pay);
                    flash('Oops! Wried stuff just happened, please contact admin')->warning();
                    return back();
                }

                $subscription = Subscription::whereUser_id($userId)->first();
                $pay['status'] = 1;

                DB::beginTransaction();

                Payment::create($pay);
                $newLimit = $subscription->limit + $plan->unit_limit;
                $subscription->update(['limit' => $newLimit,'paying' => 1, 'plan_id' => $plan->id]);

                User::where(['id'=> $userId])->update(['price_plan' => $plan->id]);

                DB::commit();

                flash('Yeah! Payment was processed successfully')->warning();
                return redirect('admin/dashboard');

            }
            catch(\Exception $e)
            {
                //dd($e);
                DB::rollback();
                flash('App logic got crashed. Payment not saved, contact Admin')->error();
                return back();
            }
        }else{

            flash('Parameter not properly set. contact Admin')->warning();
            return back();
        }

    }

    private function verifyPaystackTrans($transReference, $userId)
    {
        $responseData = [];
        try {
            $res =payStackVerifyTransaction($transReference);
            if($res->status){
                $responseData['status'] = true;
                $responseData['message'] = $res->message;
                $responseData['amount'] = $res->data->amount/100;
            }else{
                $responseData['status'] = false;
                $responseData['message'] = $res->message;
                $responseData['amount'] = 0;
            }

        } catch (\Exception $e) {
            //dd($e);
            $responseData['status'] = false;
            $responseData['message'] = 'Logic error';
            $responseData['amount'] = 0;
        }

        return $responseData;
    }

}


================================================
FILE: app/Http/Controllers/Admin/DashboardController.php
================================================
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\AccessToken;
use App\Models\AccessTokenCall;
use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index (){
        $data['tracker'] = $this->questionRequest();
        $data['topMetrics'] = $this->topMetrics();
        //dd($data);
        return view('admin.dashboard')->with($data);
    }


    private function questionRequest(){

        $userId =auth()->user()->id;
        $res= AccessTokenCall::whereUserId(['$userId'=> $userId])->get()
             ->groupBy('subject');
        $data = Array();
        $questionCalls = 0;
        $subjectCount = 0;

        if(!$res->isEmpty()){

            foreach ($res as $subjectCalls){
                 $groupCounter = 0;
                 $requestCount = 0 ;
                 foreach ($subjectCalls as $calls){
                     $groupCounter++;
                     $requestCount += $calls->requestCount;
                     $questionCalls += $calls->requestCount;
                     $data[$subjectCount]['subject'] = $calls->subject;
                     $data[$subjectCount]['count'] = $requestCount;
                     $data[$subjectCount]['lastCall'] = $calls->updated_at;
                     $data[$subjectCount]['token'] = $groupCounter;
                 }
                 $subjectCount++;
             }
        }
        $finalData['subjectCount'] = $subjectCount;
        $finalData['questionCalls'] = $questionCalls;
        $finalData['subjectTracker'] = $data;

        return $finalData;
    }

    private function topMetrics(){
        $user =auth()->user();
        $access = AccessToken::whereUserId($user->id)->first();

        $data['accessCount'] = $access->count;
        $data['subscription'] = $user->subscription;
        $data['plan'] = $user->pricePlan;

        return $data;
    }
}


================================================
FILE: app/Http/Controllers/Api/v1/MetricsController.php
================================================
<?php

namespace App\Http\Controllers\Api\v1;

use App\Models\QLoader;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Mockery\Exception;

class MetricsController extends Controller
{
    public function subjectsApiCallCounts(){

        $subjectTable = subjectArray();
        $totalSubject = count($subjectTable);
        $question = new QLoader;
        $totalQuestionsAPiCalls  = 0;
        $data = [];
        for ($i=0; $i < $totalSubject; $i++){

            try{
                $question->setTable($subjectTable[$i]);
                $subject = $question->get()->sum('requestCount');
                $totalQuestionsAPiCalls = $totalQuestionsAPiCalls + $subject;
                $data[] = ucfirst($subjectTable[$i])." =>".formatNumber($subject);
            }catch (\Exception $e){
                $data[] = ucfirst($subjectTable[$i])." =>Not found";
            }
        }
        $res['message'] = "Metrics on API subject calls";
        $res['status'] = 200;
        $res['data'] = (object) $data;
        $res['questions-called-by-api'] = formatNumber($totalQuestionsAPiCalls);


        return response()->json($res, 200, [], JSON_PRETTY_PRINT);

    }

    public function availableSubjects(){
        $subjects = subjectArray();
        $res['message'] = "Subject available";
        $res['status'] = 200;
        $res['data'] = (object)$subjects;

        return response()->json($res, 200, [], JSON_PRETTY_PRINT);
    }

    public function subjectAvailableForYear($year)
    {
        if (isset($year) && $year != "") {

            if(!is_numeric($year)){
                $res['message'] = 'Enter numbers only';
                $res['status'] = 400;
                $res['data'] = array();

                return response()->json($res, 400, [], JSON_PRETTY_PRINT);
            }
            $subjectTable = subjectArray();
            $subjectNub = count($subjectTable);
            $subjectAvailable = array();

            try {

                $question = new QLoader;
                $itemCounter = 0;
                for($i=0; $i < $subjectNub; $i++){
                    $question->setTable($subjectTable[$i]);
                    $resData= $question->where(['examyear' => $year])->get();
                    if(!$resData->isEmpty()){
                        $subjectAvailable[$itemCounter]['subject'] = $subjectTable[$i];
                        $subjectAvailable[$itemCounter]['questions'] = count($resData);
                        $itemCounter++;
                    }
                }
                $res['message'] = 'Subjects available for year '.$year;
                $res['status'] = 200;
                $res['data'] =  $subjectAvailable;

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                //dd($e);
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Year not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function yearAvailableForSubject($subject)
    {
        if (isset($subject) && $subject != "") {

            try {

                $question = new QLoader;
                $question->setTable($subject);
                $resData= $question ->select(DB::raw('count(*) as questions, examyear'))->groupBy('examyear')->get();

                $res['message'] = 'Years available for '.$subject;
                $res['status'] = 200;
                $res['data'] =  $resData;

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray1();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Supported exam types.', 'Exams' => $type,
                    'message-3' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function subjectQuestions($subject)
    {
        if (isset($subject) && $subject != "") {

            try {

                $question = new QLoader;
                $question->setTable($subject);
                $resData= $question->get();

                $data['subject'] = $subject;
                $data['questions'] =  count($resData);

                $res['message'] = 'Action was successful';
                $res['status'] = 200;
                $res['data'] =  $data;

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                //dd($e);
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray1();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Supported exam types.', 'Exams' => $type,
                    'message-3' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }


}


================================================
FILE: app/Http/Controllers/Api/v1/QuestionController.php
================================================
<?php

namespace App\Http\Controllers\Api\v1;

use App\Models\ApiCallIpAddress;
use App\Models\QLoader;
use App\Models\ReportQuestion;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;


class QuestionController extends Controller
{

    public function index()
    {
        return $this->depreciateApiV1();

        $input = request()->all();
        if (isset($input['subject']) && $input['subject'] != "") {

            $subjectTable = strtolower($input['subject']);
            try {
                $question = new QLoader;
                $question->setTable($subjectTable);

                if (isset($input['year']) && isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    $data = $question->where(['examtype' => $examType, 'examyear' => $input['year']])->inRandomOrder()->first();
                } else if (isset($input['year'])) {
                    $data = $question->where(['examyear' => $input['year']])->inRandomOrder()->first();
                } else if (isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    $data = $question->where(['examtype' => $examType])->inRandomOrder()->first();
                } else {
                    $data = $question->inRandomOrder()->first();
                }

                if (empty($data)) {
                    $res['message'] = "We could not find what you asked for, but got you this";
                    $data = $question->inRandomOrder()->first();
                }

                $count = $data->requestCount + 1;
                $question->where(['id' => $data->id])->update(['requestCount' => $count]);
                storeQuestionRequestByIP($subjectTable);


                $res['subject'] = $subjectTable;
                $res['status'] = 200;
                $res['data'] = $question::FormatQuestionData($data);
                $res['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';


                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                //dd($e);
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray1();
                $data = null;
                $data['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Supported exam types.', 'Exams' => $type,
                    'message-3' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function show($recordLimit)
    {
        return $this->depreciateApiV1();

        $input = request()->all();
        $limit = $recordLimit;
        if (isset($input['subject']) && $input['subject'] != "") {

            if (!is_numeric($recordLimit)) {
                $limit = 1;
            } else if ($recordLimit > 40) {
                $limit = 40;
            }

            $subjectTable = strtolower($input['subject']);
            try {
                $question = new QLoader;
                $question->setTable($subjectTable);

                if (isset($input['year']) && isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    $data = $question->where(['examtype' => $examType, 'examyear' => $input['year']])->inRandomOrder()->limit($limit)->get();
                } else if (isset($input['year'])) {
                    $data = $question->where(['examyear' => $input['year']])->inRandomOrder()->limit($limit)->get();
                } else if (isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    $data = $question->where(['examtype' => $examType])->inRandomOrder()->limit($limit)->get();
                } else {
                    $data = $question->inRandomOrder()->limit($limit)->get();
                }

                if ($data->isEmpty()) {
                    $res['message'] = "We could not find what you asked for, but got you this";
                    $data = $question->inRandomOrder()->limit($limit)->get();
                }

                foreach ($data as $datum) {
                    $count = $datum->requestCount + 1;
                    $question->where(['id' => $datum->id])->update(['requestCount' => $count]);
                    storeQuestionRequestByIP($subjectTable);
                }

                $res['subject'] = $subjectTable;
                $res['status'] = 200;
                $res['data'] = $question::FormatQuestionsData($data);
                $res['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                //dd($e);
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray2();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Supported exam types.', 'Exams' => $type,
                    'message-3' => 'Query samples.', 'Queries' => $querySample,];


                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function questionById($questionId){

        return $this->depreciateApiV1();

        $input = request()->all();
        if (isset($input['subject']) && $input['subject'] != "") {

            if (!is_numeric($questionId)) {
                $data ['error'] = "Supply numbers only";
                $data['status'] = 400;
                return response()->json($data, 400, [], JSON_PRETTY_PRINT);
            }

            $subjectTable = strtolower($input['subject']);
            try {
                $question = new QLoader;
                $question->setTable($subjectTable);
                $data = $question->find($questionId);

                $res['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
                if (!empty($data)) {
                    $res['subject'] = $subjectTable;
                    $res['status'] = 200;
                    $res['data'] = $question::FormatQuestionData($data);

                    $count = $data->requestCount + 1;
                    $question->where(['id' => $data->id])->update(['requestCount' => $count]);
                    storeQuestionRequestByIP($subjectTable);
                    return response()->json($res, 200, [], JSON_PRETTY_PRINT);

                } else {
                    $res['subject'] = $subjectTable;
                    $res['question_id'] = $questionId;
                    $res['status'] = 204;
                    $res['error'] = "No content found";
                    return response()->json($res, 400, [], JSON_PRETTY_PRINT);
                }

            } catch (\Exception $e) {
                //dd($e);
                $subject = (object) subjectArray();
                $querySample = (object) querySampleArray2();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function reportQuestion(Request $request){

        $input = $request->all();
        if(isset($input['message'])){$input['message'] = ucfirst($input['message']);}
        if(isset($input['full_name'])){$input['full_name'] = ucfirst($input['full_name']);}
        if(isset($input['question_id']) && isset($input['subject'])){

            $questionID = (int) $input['question_id'];
            $questionID = abs($questionID);
            $subject =  strtolower($input['subject']);
            $subjectList = subjectArray();

            if( $questionID == 0 ){
                $data ['error'] = "You supplied wrong question id";
                $data ['status'] = 400;
                return response()->json($data, 400, [], JSON_PRETTY_PRINT);
            }

            if(!in_array ( $subject, $subjectList )){
                $data ['error'] = "Wrong subject not supplied";
                $data ['status'] = 400;
                return response()->json($data, 400, [], JSON_PRETTY_PRINT);
            }

            try{

                ReportQuestion::create($input);
                $data['status'] = 200;
                $data['message'] = "We have received your report on the question. Thank you.";
                return response()->json($data, 200, [], JSON_PRETTY_PRINT);

            }catch(\Exception $e){
                $data['status'] = 406;
                $data['message'] = "Something strange went wrong.";
                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }
        }else{

            $data['status'] = 406;
            $data['message'] = "The parameters you sent does not match our requirement. You should provide subject and question_id";
            return response()->json($data, 406, [], JSON_PRETTY_PRINT);
        }

    }

    public function allSubjects(){

        $subject = (object) subjectArray();
        $res['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
        $data['message'] = "List of subjects supported";
        $data['status'] = 200;
        $data['subjects'] = $subject;
        return response()->json($data, 200, [], JSON_PRETTY_PRINT);
    }

    public function manyQuestions(){

        return $this->depreciateApiV1();

        $input = request()->all();
        $questionLimit = 40;
        if (isset($input['subject']) && $input['subject'] != "") {

            $subjectTable = strtolower($input['subject']);
            try {
                $question = new QLoader;
                $question->setTable($subjectTable);

                if (isset($input['year']) && isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    $data = $question->where(['examtype' => $examType, 'examyear' => $input['year']])
                        ->inRandomOrder()->take($questionLimit)->get();
                } else if (isset($input['year'])) {
                    $data = $question->where(['examyear' => $input['year']])
                        ->inRandomOrder()->take($questionLimit)->get();
                } else if (isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    $data = $question->where(['examtype' => $examType])
                        ->inRandomOrder()->take($questionLimit)->get();
                } else {
                    $data = $question->inRandomOrder()->take($questionLimit)->get();
                }

                if (empty($data)) {
                    $res['message'] = "We could not find what you asked for, but got you this";
                    $data = $question->inRandomOrder()->take($questionLimit)->get();
                }

                foreach ($data as $datum) {
                    $count = $datum->requestCount + 1;
                    $question->where(['id' => $datum->id])->update(['requestCount' => $count]);
                    storeQuestionRequestByIP($subjectTable);
                }

                $res['subject'] = $subjectTable;
                $res['status'] = 200;
                $res['data'] = $question::FormatQuestionsData($data);
                $res['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray1();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Supported exam types.', 'Exams' => $type,
                    'message-3' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function topQuestion(){
        return $this->depreciateApiV1();

        try{
            $randSubjects = randomSubjects();
            $question = new QLoader;
            foreach ( $randSubjects as $key => $subject ){
                $question->setTable( $subject);
                $questionSet = $question->where('id','!=', 0)->latest('updated_at')->inRandomOrder()->limit(2)->get();

                foreach ($questionSet as $eachQuestion){

                    $eachQuestion['subject'] = $subject;
                    $data[] = $eachQuestion;
                    storeQuestionRequestByIP($subject);
                    // $count = $eachQuestion->requestCount + 1;
                    // $question->where(['id' => $eachQuestion->id])->update(['requestCount' => $count]);
                }
            }
            shuffle($data);
            $res['status'] = 200;
            $res['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
            $res['data'] = $question::FormatTopQuestionsData($data);
            return response()->json($res, 200, [], JSON_PRETTY_PRINT);
        } catch (\Exception $e) {
            $data = null;
            $data['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
            $data ['error'] = "Something strange just happened";
            $data['status'] = 406;
            return response()->json($data, 406, [], JSON_PRETTY_PRINT);
        }
    }

    private function depreciateApiV1 (){
        $data['notice'] = 'This API is depreciated and will be terminated by September 1st 2021. Kindly migrate to v2';
        $data ['error'] = "Depreciated v1 was terminated on September 6th 2021. Kindly migrate to v2";
        $data['status'] = 400;
        return response()->json($data, 400, [], JSON_PRETTY_PRINT);
    }

}


================================================
FILE: app/Http/Controllers/Api/v2/MetricsController.php
================================================
<?php

namespace App\Http\Controllers\Api\v2;

use App\Models\QLoader;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Mockery\Exception;

class MetricsController extends Controller
{
    public function subjectsApiCallCounts(){

        $subjectTable = subjectArray();
        $totalSubject = count($subjectTable);
        $question = new QLoader;
        $totalQuestionsAPiCalls  = 0;
        $data = [];
        for ($i=0; $i < $totalSubject; $i++){

            try{
                $question->setTable($subjectTable[$i]);
                $subject = $question->get()->sum('requestCount');
                $totalQuestionsAPiCalls = $totalQuestionsAPiCalls + $subject;
                $data[] = ucfirst($subjectTable[$i])." =>".formatNumber($subject);
            }catch (\Exception $e){
                $data[] = ucfirst($subjectTable[$i])." =>Not found";
            }
        }
        $res['message'] = "Metrics on API subject calls";
        $res['status'] = 200;
        $res['data'] = (object) $data;
        $res['questions-called-by-api'] = formatNumber($totalQuestionsAPiCalls);


        return response()->json($res, 200, [], JSON_PRETTY_PRINT);

    }

    public function availableSubjects(){
        $subjects = subjectArray();
        $res['message'] = "Subject available";
        $res['status'] = 200;
        $res['data'] = (object)$subjects;

        return response()->json($res, 200, [], JSON_PRETTY_PRINT);
    }

    public function subjectAvailableForYear($year)
    {
        if (isset($year) && $year != "") {

            if(!is_numeric($year)){
                $res['message'] = 'Enter numbers only';
                $res['status'] = 400;
                $res['data'] = array();

                return response()->json($res, 400, [], JSON_PRETTY_PRINT);
            }
            $subjectTable = subjectArray();
            $subjectNub = count($subjectTable);
            $subjectAvailable = array();

            try {

                $question = new QLoader;
                $itemCounter = 0;
                for($i=0; $i < $subjectNub; $i++){
                    $question->setTable($subjectTable[$i]);
                    $resData= $question->where(['examyear' => $year])->get();
                    if(!$resData->isEmpty()){
                        $subjectAvailable[$itemCounter]['subject'] = $subjectTable[$i];
                        $subjectAvailable[$itemCounter]['questions'] = count($resData);
                        $itemCounter++;
                    }
                }
                $res['message'] = 'Subjects available for year '.$year;
                $res['status'] = 200;
                $res['data'] =  $subjectAvailable;

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                //dd($e);
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Year not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function yearAvailableForSubject($subject)
    {
        if (isset($subject) && $subject != "") {

            try {

                $question = new QLoader;
                $question->setTable($subject);
                $resData= $question ->select(DB::raw('count(*) as questions, examyear'))->groupBy('examyear')->get();

                $res['message'] = 'Years available for '.$subject;
                $res['status'] = 200;
                $res['data'] =  $resData;

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray1();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Supported exam types.', 'Exams' => $type,
                    'message-3' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function subjectQuestions($subject)
    {
        if (isset($subject) && $subject != "") {

            try {

                $question = new QLoader;
                $question->setTable($subject);
                $resData= $question->get();

                $data['subject'] = $subject;
                $data['questions'] =  count($resData);

                $res['message'] = 'Action was successful';
                $res['status'] = 200;
                $res['data'] =  $data;

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                //dd($e);
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray1();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Supported exam types.', 'Exams' => $type,
                    'message-3' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }


}


================================================
FILE: app/Http/Controllers/Api/v2/QuestionController.php
================================================
<?php

namespace App\Http\Controllers\Api\v2;

use App\Models\QLoader;
use App\Models\QBoardLog;
use App\Models\AccessToken;
use Illuminate\Http\Request;
use App\Models\Subscription;
use App\Models\ReportQuestion;
use App\Models\AccessTokenCall;
use App\Models\ApiCallIpAddress;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;


class QuestionController extends Controller
{

    public function index()
    {
        $processReq =  $this->processRequest();
        if($processReq['shouldReturn']){
            unset($processReq['shouldReturn']);
            return response()->json($processReq, 406, [], JSON_PRETTY_PRINT);
        }

        $input = request()->all();

        if (isset($input['subject']) && $input['subject'] != "") {

            $subjectTable = strtolower($input['subject']);
            try {
                $question = new QLoader;
                $question->setTable($subjectTable);

                if(!isset($input['random'])){
                    $random = 'true';
                }else{
                    $random = strtolower($input['random']);
                }

                if (isset($input['year']) && isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    if($random === 'true'){
                        $data = $question->where(['examtype' => $examType, 'examyear' => $input['year']])->inRandomOrder()->first();
                    }else{
                        $data = $question->where(['examtype' => $examType, 'examyear' => $input['year']])->first();
                    }
                } else if (isset($input['year'])) {
                    if($random === 'true'){
                        $data = $question->where(['examyear' => $input['year']])->inRandomOrder()->first();
                    }else{
                        $data = $question->where(['examyear' => $input['year']])->first();

                    }
                } else if (isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    if($random === 'true'){
                        $data = $question->where(['examtype' => $examType])->inRandomOrder()->first();
                    }else{
                        $data = $question->where(['examtype' => $examType])->first();
                    }
                } else {
                    if($random === 'true'){
                        $data = $question->inRandomOrder()->first();
                    }else{
                        $data = $question->first();
                    }
                }

                if (empty($data)) {
                    $res['message'] = "We could not find what you asked for, but got you this";
                    $data = $question->inRandomOrder()->first();
                }

                $count = $data->requestCount + 1;
                $question->where(['id' => $data->id])->update(['requestCount' => $count]);
                if(!env('APP_DEBUG')){
                    storeQuestionRequestByIP($subjectTable);
                }

                $res['subject'] = $subjectTable;
                $res['status'] = 200;
                $res['data'] = $question::FormatQuestionData($data, $subjectTable);

                $this->tokenQuestions(1, $subjectTable, $processReq['userId'], $processReq['token'] );

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                print($e);
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray1();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                                  'message-2' => 'Supported exam types.', 'Exams' => $type,
                                  'message-3' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function show($recordLimit)
    {
        $processReq =  $this->processRequest();
        if($processReq['shouldReturn']){
            unset($processReq['shouldReturn']);
            return response()->json($processReq, 406, [], JSON_PRETTY_PRINT);
        }

        $input = request()->all();
        $limit = $recordLimit;
        if (isset($input['subject']) && $input['subject'] != "") {

            if (!is_numeric($recordLimit)) {
                $limit = 1;
            } else if ($recordLimit > 40) {
                $limit = 40;
            }

            $subjectTable = strtolower($input['subject']);
            try {
                $question = new QLoader;
                $question->setTable($subjectTable);
 
                if (isset($input['year']) && isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    $data = $question->where(['examtype' => $examType, 'examyear' => $input['year']])->inRandomOrder()->limit($limit)->get();
                } else if (isset($input['year'])) {
                    $data = $question->where(['examyear' => $input['year']])->inRandomOrder()->limit($limit)->get();
                } else if (isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    $data = $question->where(['examtype' => $examType])->inRandomOrder()->limit($limit)->get();
                } else {
                    $data = $question->inRandomOrder()->limit($limit)->get();
                }

                if ($data->isEmpty()) {
                    $res['message'] = "We could not find what you asked for, but got you this";
                    $data = $question->inRandomOrder()->limit($limit)->get();
                }

                if(!env('APP_DEBUG')){
                    foreach ($data as $datum) {
                        $count = $datum->requestCount + 1;
                        $question->where(['id' => $datum->id])->update(['requestCount' => $count]);
                        storeQuestionRequestByIP($subjectTable);
                    }
                }


                $res['subject'] = $subjectTable;  
                $res['status'] = 200;
                $res['data'] = $question::FormatQuestionsData($data, $subjectTable);

                $this->tokenQuestions($recordLimit, $subjectTable, $processReq['userId'], $processReq['token'] );

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                // dd($e);
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray2();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                                  'message-2' => 'Supported exam types.', 'Exams' => $type,
                                  'message-3' => 'Query samples.', 'Queries' => $querySample,];


                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    // public function showVendor($recordLimit)
    // {
    //     $processReq =  $this->processRequest();
    //     if($processReq['shouldReturn']){
    //         unset($processReq['shouldReturn']);
    //         return response()->json($processReq, 406, [], JSON_PRETTY_PRINT);
    //     }

    //     $input = request()->all();
    //     $limit = $recordLimit;
    //     if (isset($input['subject']) && $input['subject'] != "") {

    //         if (!is_numeric($recordLimit)) {
    //             $limit = 1;
    //         } else if ($recordLimit > 40) {
    //             $limit = 40;
    //         }

    //         $subjectTable = strtolower($input['subject']);
    //         try {
    //             $question = new QLoader;
    //             $question->setTable($subjectTable);
 
    //             if (isset($input['year']) && isset($input['type'])) {
    //                 $examType = strtolower($input['type']);
    //                 $data = $question->where(['examtype' => $examType, 'examyear' => $input['year']])->inRandomOrder()->limit($limit)->get();
    //             } else if (isset($input['year'])) {
    //                 $data = $question->where(['examyear' => $input['year']])->inRandomOrder()->limit($limit)->get();
    //             } else if (isset($input['type'])) {
    //                 $examType = strtolower($input['type']);
    //                 $data = $question->where(['examtype' => $examType])->inRandomOrder()->limit($limit)->get();
    //             } else {
    //                 $data = $question->inRandomOrder()->limit($limit)->get();
    //             }

    //             if ($data->isEmpty()) {
    //                 $res['message'] = "We could not find what you asked for, but got you this";
    //                 $data = $question->inRandomOrder()->limit($limit)->get();
    //             }

    //             if(!env('APP_DEBUG')){
    //                 foreach ($data as $datum) {
    //                     $count = $datum->requestCount + 1;
    //                     $question->where(['id' => $datum->id])->update(['requestCount' => $count]);
    //                     storeQuestionRequestByIP($subjectTable);
    //                 }
    //             }


    //             $res['subject'] = $subjectTable;  
    //             $res['status'] = 200;
    //             $res['data'] = $question::FormatQuestionsData($data, $subjectTable);

    //             $this->tokenQuestions($recordLimit, $subjectTable, $processReq['userId'], $processReq['token'] );

    //             return response()->json($res, 200, [], JSON_PRETTY_PRINT);

    //         } catch (\Exception $e) {
    //             // dd($e);
    //             $subject = (object) subjectArray();
    //             $type = (object) examTypeArray();
    //             $querySample = (object) querySampleArray2();
    //             $data = null;
    //             $data ['error'] = "Something strange just happened";
    //             $data['status'] = 406;
    //             $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
    //                               'message-2' => 'Supported exam types.', 'Exams' => $type,
    //                               'message-3' => 'Query samples.', 'Queries' => $querySample,];


    //             return response()->json($data, 406, [], JSON_PRETTY_PRINT);
    //         }

    //     } else {
    //         $data ['error'] = "Subject not supplied";
    //         $data['status'] = 400;
    //         return response()->json($data, 400, [], JSON_PRETTY_PRINT);
    //     }
    // }

    public function questionById($questionId){

        $processReq =  $this->processRequest();
        if($processReq['shouldReturn']){
            unset($processReq['shouldReturn']);
            return response()->json($processReq, 406, [], JSON_PRETTY_PRINT);
        }
        $input = request()->all();
        if (isset($input['subject']) && $input['subject'] != "") {

            if (!is_numeric($questionId)) {
                $data ['error'] = "Supply numbers only";
                $data['status'] = 400;
                return response()->json($data, 400, [], JSON_PRETTY_PRINT);
            }

            $subjectTable = strtolower($input['subject']);
            try {
                $question = new QLoader;
                $question->setTable($subjectTable);
                $data = $question->find($questionId);

                if (!empty($data)) {
                    $res['subject'] = $subjectTable;
                    $res['status'] = 200;
                    $res['data'] = $question::FormatQuestionData($data,$subjectTable);

                    $count = $data->requestCount + 1;
                    $question->where(['id' => $data->id])->update(['requestCount' => $count]);
                    if(!env('APP_DEBUG')){
                        storeQuestionRequestByIP($subjectTable);
                    }
                    $this->tokenQuestions(1, $subjectTable, $processReq['userId'], $processReq['token'] );
                    return response()->json($res, 200, [], JSON_PRETTY_PRINT);

                } else {
                    $res['subject'] = $subjectTable;
                    $res['question_id'] = $questionId;
                    $res['status'] = 204;
                    $res['error'] = "No content found";
                    return response()->json($res, 400, [], JSON_PRETTY_PRINT);
                }

            } catch (\Exception $e) {
                //dd($e);
                $subject = (object) subjectArray();
                $querySample = (object) querySampleArray2();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function reportQuestion(Request $request){

        $input = $request->all();
        if(isset($input['message'])){$input['message'] = ucfirst($input['message']);}
        if(isset($input['full_name'])){$input['full_name'] = ucfirst($input['full_name']);}
        if(isset($input['question_id']) && isset($input['subject'])){

            $questionID = (int) $input['question_id'];
            $questionID = abs($questionID);
            $subject =  strtolower($input['subject']);
            $subjectList = subjectArray();

            if( $questionID == 0 ){
                $data ['error'] = "You supplied wrong question id";
                $data ['status'] = 400;
                return response()->json($data, 400, [], JSON_PRETTY_PRINT);
            }

            if(!in_array ( $subject, $subjectList )){
                $data ['error'] = "Wrong subject not supplied";
                $data ['status'] = 400;
                return response()->json($data, 400, [], JSON_PRETTY_PRINT);
            }

            try{

                ReportQuestion::create($input);
                $data['status'] = 200;
                $data['message'] = "We have received your report on the question. Thank you.";
                return response()->json($data, 200, [], JSON_PRETTY_PRINT);

            }catch(\Exception $e){
                $data['status'] = 406;
                $data['message'] = "Something strange went wrong.";
                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }
        }else{

            $data['status'] = 406;
            $data['message'] = "The parameters you sent does not match our requirement. You should provide subject and question_id";
            return response()->json($data, 406, [], JSON_PRETTY_PRINT);
        }

    }

    public function allSubjects(){

        $subject = (object) subjectArray();
        $data['message'] = "List of subjects supported";
        $data['status'] = 200;
        $data['subjects'] = $subject;
        return response()->json($data, 200, [], JSON_PRETTY_PRINT);
    }

    public function comprehensionYears(){

        $processReq =  $this->processRequest();
        if($processReq['shouldReturn']){
            unset($processReq['shouldReturn']);
            return response()->json($processReq, 406, [], JSON_PRETTY_PRINT);
        }

        $input = request()->all();
        if (isset($input['subject']) && $input['subject'] != "") {

            $subjectTable = strtolower($input['subject']);
            if($subjectTable !== 'english'){
                $data ['error'] = "Subject not supplied. Only english language is supported";
                $data['status'] = 400;
                return response()->json($data, 400, [], JSON_PRETTY_PRINT);
            }

            try {
                $question = new QLoader;
                $question->setTable($subjectTable);
                $data = $question->where(['hasPassage' => true])->select(['examyear'])->groupBy('examyear')->get();


                $res['subject'] = $subjectTable;
                $res['status'] = 200;
                $res['data'] = $data;

                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                //dd($e);
                $data = null;
                $data ['error'] = "Something strange just happened. Check your input";
                $data['status'] = 406;
                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }


    public function manyQuestions(){

        $processReq =  $this->processRequest();
        if($processReq['shouldReturn']){
            unset($processReq['shouldReturn']);
            return response()->json($processReq, 406, [], JSON_PRETTY_PRINT);
        }

        $input = request()->all();
        $questionLimit = 40;
        if (isset($input['subject']) && $input['subject'] != "") {

            $subjectTable = strtolower($input['subject']);
            try {
                $question = new QLoader;
                $question->setTable($subjectTable);

                if (isset($input['year']) && isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    $data = $question->where(['examtype' => $examType, 'examyear' => $input['year']])
                                     ->inRandomOrder()->take($questionLimit)->get();
                } else if (isset($input['year'])) {
                    $data = $question->where(['examyear' => $input['year']])
                                     ->inRandomOrder()->take($questionLimit)->get();
                } else if (isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    $data = $question->where(['examtype' => $examType])
                                     ->inRandomOrder()->take($questionLimit)->get();
                } else {
                    $data = $question->inRandomOrder()->take($questionLimit)->get();
                }

                if ($data->isEmpty()) {
                    $res['message'] = "We could not find what you asked for, but got you this";
                    $data = $question->inRandomOrder()->take($questionLimit)->get();
                }

                if(!env('APP_DEBUG')){
                    foreach ($data as $datum) {
                        $count = $datum->requestCount + 1;
                        $question->where(['id' => $datum->id])->update(['requestCount' => $count]);
                        storeQuestionRequestByIP($subjectTable);
                    }
                }

                $qResult = $question::FormatQuestionsData($data, $subjectTable);
                $res['subject'] = $subjectTable;
                $res['status'] = 200;
                $res['total'] = count($qResult);
                $res['data'] = $qResult;

                $this->tokenQuestions(40, $subjectTable, $processReq['userId'], $processReq['token'] );
                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray1();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Supported exam types.', 'Exams' => $type,
                    'message-3' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function hugeQuestions($questionLimit){

        if($questionLimit > 120){
            $data ['error'] = "Maximum questions support is 120";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }

        $processReq =  $this->processRequest($questionLimit);
        if($processReq['shouldReturn']){
            unset($processReq['shouldReturn']);
            return response()->json($processReq, 406, [], JSON_PRETTY_PRINT);
        }

        $input = request()->all();
        // $questionLimit = 40;
        //dd($input);
        if (isset($input['subject']) && $input['subject'] != "") {

            $subjectTable = strtolower($input['subject']);

            if(!isset($input['random'])){
                $random = 'true';
            }else{
                $random = strtolower($input['random']);
            }

            if(!isset($input['withComprehension'])){
                $withComprehension = 'false';
            }else{
                $withComprehension = strtolower($input['withComprehension']);
            }

            try {
                $question = new QLoader;
                $question->setTable($subjectTable);

                if (isset($input['year']) && isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    if($random === 'true'){
                        $data = $question->where(['examtype' => $examType, 'examyear' => $input['year']])
                                        ->inRandomOrder()->take($questionLimit)->get();
                    }else{
                        $data = $question->where(['examtype' => $examType, 'examyear' => $input['year']])->take($questionLimit)->get();
                    }
                } else if (isset($input['year'])) {
                    if($random === 'true'){
                        $data = $question->where(['examyear' => $input['year']])->inRandomOrder()->take($questionLimit)->get();
                    }else{
                        $data = $question->where(['examyear' => $input['year']])->take($questionLimit)->get();
                    }

                } else if (isset($input['type'])) {
                    $examType = strtolower($input['type']);
                    if($random === 'true'){
                         $data = $question->where(['examtype' => $examType])
                                     ->inRandomOrder()->take($questionLimit)->get();
                    }else{
                        $data = $question->where(['examtype' => $examType])->take($questionLimit)->get();
                    }
                } else {
                    if($random === 'true'){
                      $data = $question->inRandomOrder()->take($questionLimit)->get();
                    }else{
                        $data = $question->take($questionLimit)->get();
                    }
                }

                if ($data->isEmpty()) {
                    $res['message'] = "We could not find what you asked for, but got you this";
                    $data = $question->inRandomOrder()->take($questionLimit)->get();
                }

                if(!env('APP_DEBUG')){
                    foreach ($data as $datum) {
                        $count = $datum->requestCount + 1;
                        $question->where(['id' => $datum->id])->update(['requestCount' => $count]);
                        storeQuestionRequestByIP($subjectTable);
                    }
                }

                $qResult = $question::FormatQuestionsData($data, $subjectTable, $withComprehension);
                $res['subject'] = $subjectTable;
                $res['status'] = 200;
                $res['total'] = count($qResult);
                $res['data'] = $qResult;

                if( $res['total'] == 0 && isset($input['withComprehension'])){
                    $data = null;
                    $data ['error'] = "Comprehension not supported for subject or year";
                    $data['status'] = 406;
                    $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => 'english',
                    'message-2' => 'Supported years. 2000, 2001, 2002, 2011,2012, 2013, 2014, 2015,2016, 2017, 2018, 2019,2020, 2021, 2022', 'Exams' => 'utme'];
                    return response()->json($data, 406, [], JSON_PRETTY_PRINT);

                }

                $this->tokenQuestions($questionLimit, $subjectTable, $processReq['userId'], $processReq['token'] );
                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray1();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Supported exam types.', 'Exams' => $type,
                    'message-3' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }

    public function vendorHugeQuestions($questionLimit){

        if($questionLimit > 60){
            $data ['error'] = "Maximum questions support is 60";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }

        $processReq =  $this->processRequest($questionLimit);
        if($processReq['shouldReturn']){
            unset($processReq['shouldReturn']);
            return response()->json($processReq, 406, [], JSON_PRETTY_PRINT);
        }

        $input = request()->all();
        // $questionLimit = 40;
        //dd($input);
        if (isset($input['subject']) && $input['subject'] != "") {

            $subjectTable = strtolower($input['subject']);

            if(!isset($input['random'])){
                $random = 'true';
            }else{
                $random = strtolower($input['random']);
            }

            if(!isset($input['withComprehension'])){
                $withComprehension = 'false';
            }else{
                $withComprehension = strtolower($input['withComprehension']);
            }

            try {
                $question = new QLoader;
                $question->setTable($subjectTable);

                if (isset($input['examtype']) && isset($input['type'])) {
                    $examType = strtolower($input['examtype']);
                    $type = strtolower($input['type']);

                    if($random === 'true'){
                        $data = $question->where(['examtype' => $examType, 'type' => $input['type']])
                                        ->inRandomOrder()->take($questionLimit)->get();
                    }else{
                        $data = $question->where(['examtype' => $examType, 'type' => $input['type']])->take($questionLimit)->get();
                    }

                } else {
                    $data ['error'] = "examtype or type was not supplied";
                    $data['status'] = 400;
                    return response()->json($data, 400, [], JSON_PRETTY_PRINT);
                }

                // dd( $data);

                if ($data->isEmpty()) {
                    // dd( $data);

                    $data['status'] = 400;
                    $data ['error'] = "We could not find what you asked for";
                    return response()->json($data, 406, [], JSON_PRETTY_PRINT);
                }


                if(!env('APP_DEBUG')){
                    foreach ($data as $datum) {
                        $count = $datum->requestCount + 1;
                        $question->where(['id' => $datum->id])->update(['requestCount' => $count]);
                        storeQuestionRequestByIP($subjectTable);
                    }
                }
                

                $qResult = $question::FormatQuestionsData($data, $subjectTable, $withComprehension);
                $res['subject'] = $subjectTable;
                $res['status'] = 200;
                $res['total'] = count($qResult);
                $res['data'] = $qResult;

                if( $res['total'] == 0 && isset($input['withComprehension'])){
                    $data = null;
                    $data ['error'] = "Comprehension not supported for subject or year";
                    $data['status'] = 406;
                    $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => 'english',
                    'message-2' => 'Supported years. 2000, 2001, 2002, 2011,2012, 2013, 2014, 2015,2016, 2017, 2018, 2019,2020, 2021, 2022', 'Exams' => 'utme'];
                    return response()->json($data, 406, [], JSON_PRETTY_PRINT);

                }

                $this->tokenQuestions($questionLimit, $subjectTable, $processReq['userId'], $processReq['token'] );
                return response()->json($res, 200, [], JSON_PRETTY_PRINT);

            } catch (\Exception $e) {

                //dd($e);
                $subject = (object) subjectArray();
                $type = (object) examTypeArray();
                $querySample = (object) querySampleArray1();
                $data = null;
                $data ['error'] = "Something strange just happened";
                $data['status'] = 406;
                $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                    'message-2' => 'Supported exam types.', 'Exams' => $type,
                    'message-3' => 'Query samples.', 'Queries' => $querySample,];

                return response()->json($data, 406, [], JSON_PRETTY_PRINT);
            }

        } else {
            $data ['error'] = "Subject not supplied";
            $data['status'] = 400;
            return response()->json($data, 400, [], JSON_PRETTY_PRINT);
        }
    }


    public function groupSubjectsQuestions(Request $request)
    {
        $processReq =  $this->processRequest();
        if($processReq['shouldReturn']){
            unset($processReq['shouldReturn']);
            return response()->json($processReq, 406, [], JSON_PRETTY_PRINT);
        }

        $input = $request->all();

        $rules = array(
            'subject1'   => 'required', 
            'number'=> 'required|numeric');

        $validator = Validator::make($input, $rules);

        if (!$validator->passes()){
            $res['status'] = 406;
            $res['message'] = $validator->errors();
            return response()->json($res,406);
        }

        try{

            $questions['subject1'] = $this->getBySubject($input['subject1'], $input['number'],$processReq);

            if (isset($input['subject2']) && $input['subject2'] != "") {
                $questions['subject2'] = $this->getBySubject($input['subject2'], $input['number'],$processReq);
            }

            if (isset($input['subject3']) && $input['subject3'] != "") {
                $questions['subject3'] = $this->getBySubject($input['subject3'], $input['number'],$processReq);
            }

            if (isset($input['subject4']) && $input['subject4'] != "") {
                $questions['subject4'] = $this->getBySubject($input['subject4'], $input['number'],$processReq);
            }

            $res['status'] = 200;
            $res['data'] = $questions;
            $res['message'] = 'Group questions was fetched';

            return response()->json($res, 200, [], JSON_PRETTY_PRINT);

        } catch (\Exception $e) {
           // print($e);
            $subject = (object) subjectArray();
            $type = (object) examTypeArray();
            $querySample = (object) querySampleArray1();
            $data = null;
            $data ['error'] = "Something strange just happened";
            $data['status'] = 406;
            $data ['hint'] = ['message-1' => 'This is the list of supported subjects.', 'Subjects' => $subject,
                                'message-2' => 'Supported exam types.', 'Exams' => $type,
                                'message-3' => 'Query samples.', 'Queries' => $querySample,];

            return response()->json($data, 406, [], JSON_PRETTY_PRINT);
        }

    }

    public function topQuestion(){

        try{
            $randSubjects = randomSubjects();
            $question = new QLoader;
            $data = Array();
            foreach ( $randSubjects as $key => $subject ){
                $question->setTable( $subject);
                $questionSet = $question->where('id','!=', 0)->latest('updated_at')->inRandomOrder()->limit(2)->get();

                foreach ($questionSet as $eachQuestion){

                    $eachQuestion['subject'] = $subject;
                    $data[] = $eachQuestion;
                    if(!env('APP_DEBUG')) {
                        storeQuestionRequestByIP($subject);
                    }
                    // $count = $eachQuestion->requestCount + 1;
                    // $question->where(['id' => $eachQuestion->id])->update(['requestCount' => $count]);
                }
            }
            shuffle($data);
            $res['status'] = 200;
            $res['data'] = $question::FormatTopQuestionsData($data);
            return response()->json($res, 200, [], JSON_PRETTY_PRINT);
        } catch (\Exception $e) {
            $data = null;
            $data ['error'] = "Something strange just happened";
            $data['status'] = 406;
            return response()->json($data, 406, [], JSON_PRETTY_PRINT);
        }
    }

    private function processRequest($questions = 40){
        $computeCount = ceil($questions/40);
        $accessToken =  request()->header('AccessToken');
        if(!$accessToken){
            $data['status'] = 400;
            $data['shouldReturn'] = true;
            $data ['error'] = "Access token not provide on request header";
            return $data;
        }

        $res = AccessToken::whereToken($accessToken)->first();
        if(!is_null($res)){

            $subscription = Subscription::whereUserId($res->user_id)->first();
            if($res->count >= $subscription->limit){
                $data['status'] = 400;
                $data['shouldReturn'] = true;
                $data ['error'] = "You have used up your quota. Please, upgrade your plan to continue";
                return $data;
            }
            $newCount =  $res->count + $computeCount;

            if($newCount > $subscription->limit){
                $newCount = $subscription->limit;
            }
            $data['status'] = 200;
            $data['shouldReturn'] = false;
            $data['userId'] = $res->user_id;
            $data['token'] = $accessToken;
            $res->update(['count'=> $newCount]);
        }else{
            $data['status'] = 406;
            $data['shouldReturn'] = true;
            $data ['error'] = "Access token not valid or deactivated";
        }
        return $data;
    }

    private function tokenQuestions($questionNumber,$subject, $userId, $token){

        $res =  AccessTokenCall::where(['token' =>$token,'subject' => $subject])->first();
        if(!is_null($res)){
            $count = $res->requestCount + $questionNumber;
            $res->update(['requestCount'=>$count]);
        }else{

            $data['subject'] =$subject;
            $data['requestCount'] = $questionNumber ;
            $data['token'] = $token ;
            $data['user_id'] =$userId;
            AccessTokenCall::create($data);
        }

        $this->saveQuestionsRequestByMonth($questionNumber,$subject);
    }


    private function saveQuestionsRequestByMonth ($questionNumber,$subject){

        $year = date('Y');
        $month = date('M');
        $res =  QBoardLog::where(['month' =>$month,'year' =>$year,'subject' => $subject])->first();
        if(!is_null($res)){
            $count = $res->requestCount + 1;
            $countQ = $res->questionCount + $questionNumber;
            $res->update(['requestCount'=>$count, 'questionCount'=>$countQ]);
        }else{

            $data['subject'] =$subject;
            $data['requestCount'] = 1 ;
            $data['questionCount'] = $questionNumber ;
            $data['month'] = $month ;
            $data['year'] =$year;
            QBoardLog::create($data);
        }
    }

    private function getBySubject($subject, $recordLimit, $processReq)
    {
      
        $limit = $recordLimit;
        if ($subject != "") {

            if (!is_numeric($recordLimit)) {
                $limit = 1;
            } else if ($recordLimit > 20) {
                $limit = 20;
            }

            $subjectTable = strtolower($subject);
            try {
                $question = new QLoader;
                $question->setTable($subjectTable);
 
                if($subject === 'english'){
                    $data = $question->where(['hasPassage' => false])->inRandomOrder()->limit($limit)->get();
                }else{
                    $data = $question->inRandomOrder()->limit($limit)->get();
                }

                if(!env('APP_DEBUG')){
                    foreach ($data as $datum) {
                        $count = $datum->requestCount + 1;
                        $question->where(['id' => $datum->id])->update(['requestCount' => $count]);
                        storeQuestionRequestByIP($subjectTable);
                    }
                }


                $res['subject'] = $subjectTable;  
                $res['data'] = $question::FormatQuestionsData($data, $subjectTable);

                $this->tokenQuestions($recordLimit, $subjectTable, $processReq['userId'], $processReq['token'] );

                return $res;

            } catch (\Exception $e) {
                // dd($e);
                $res['subject'] = $subject;  
                $res['data'] = [];
            }

        } else {
            $res['subject'] = $subject;  
            $res['data'] = [];
        }
    }

}


================================================
FILE: app/Http/Controllers/Controller.php
================================================
<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}


================================================
FILE: app/Http/Kernel.php
================================================
<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        \Fruitcake\Cors\HandleCors::class,
        \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
    ];
}


================================================
FILE: app/Http/Middleware/Authenticate.php
================================================
<?php

namespace App\Http\Middleware;

use Illuminate\Auth\Middleware\Authenticate as Middleware;

class Authenticate extends Middleware
{
    /**
     * Get the path the user should be redirected to when they are not authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string|null
     */
    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            return route('login');
        }
    }
}


================================================
FILE: app/Http/Middleware/EncryptCookies.php
================================================
<?php

namespace App\Http\Middleware;

use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;

class EncryptCookies extends Middleware
{
    /**
     * The names of the cookies that should not be encrypted.
     *
     * @var array
     */
    protected $except = [
        //
    ];
}


================================================
FILE: app/Http/Middleware/PreventRequestsDuringMaintenance.php
================================================
<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;

class PreventRequestsDuringMaintenance extends Middleware
{
    /**
     * The URIs that should be reachable while maintenance mode is enabled.
     *
     * @var array
     */
    protected $except = [
        //
    ];
}


================================================
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
================================================
<?php

namespace App\Http\Middleware;

use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  ...$guards
     * @return mixed
     */
    public function handle(Request $request, Closure $next, ...$guards)
    {
        $guards = empty($guards) ? [null] : $guards;

        foreach ($guards as $guard) {
            if (Auth::guard($guard)->check()) {
                return redirect(RouteServiceProvider::HOME);
            }
        }

        return $next($request);
    }
}


================================================
FILE: app/Http/Middleware/TrimStrings.php
================================================
<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;

class TrimStrings extends Middleware
{
    /**
     * The names of the attributes that should not be trimmed.
     *
     * @var array
     */
    protected $except = [
        'current_password',
        'password',
        'password_confirmation',
    ];
}


================================================
FILE: app/Http/Middleware/TrustHosts.php
================================================
<?php

namespace App\Http\Middleware;

use Illuminate\Http\Middleware\TrustHosts as Middleware;

class TrustHosts extends Middleware
{
    /**
     * Get the host patterns that should be trusted.
     *
     * @return array
     */
    public function hosts()
    {
        return [
            $this->allSubdomainsOfApplicationUrl(),
        ];
    }
}


================================================
FILE: app/Http/Middleware/TrustProxies.php
================================================
<?php

namespace App\Http\Middleware;

use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;

class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array|string|null
     */
    protected $proxies;

    /**
     * The headers that should be used to detect proxies.
     *
     * @var int
     */
    protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB;
}


================================================
FILE: app/Http/Middleware/VerifyCsrfToken.php
================================================
<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        //
    ];
}


================================================
FILE: app/Models/AccessToken.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class AccessToken extends Model
{
    use HasFactory;
    protected $table = 'q_access_tokens';

    protected  $fillable = ['user_id','count','token'];
}


================================================
FILE: app/Models/AccessTokenCall.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class AccessTokenCall extends Model
{
    use HasFactory;
    protected $table = 'q_access_token_calls';

    protected  $fillable = ['user_id','subject','token','requestCount'];

}


================================================
FILE: app/Models/ApiCallIpAddress.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ApiCallIpAddress extends Model
{
    protected $table = 'api_call_ip_address';

    protected  $fillable = ['subject', 'ipAddress','requestCount','countryCode','countryName','regionCode',
                            'regionName','cityName','zipCode','latitude','longitude'];

}


================================================
FILE: app/Models/PasswordReset.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class PasswordReset extends Model
{
    use HasFactory;
    protected $table = 'q_password_resets';
    protected  $fillable = ['token','email'];

    const UPDATED_AT = null;

}


================================================
FILE: app/Models/Payment.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Payment extends Model
{
    use HasFactory;

    protected $table = 'q_payments';

    protected  $fillable = ['method', 'user_id','amount','plan_id','price','status','trans_reference','message'];
}


================================================
FILE: app/Models/PricePlan.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class PricePlan extends Model
{
    use HasFactory;
    protected $table = 'q_price_plans';

}


================================================
FILE: app/Models/QBoardLog.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class QBoardLog extends Model
{
    use HasFactory;
    protected $table = 'q_qboard_logs';

    protected  $fillable = ['month','subject','year','requestCount','questionCount'];

}


================================================
FILE: app/Models/QLoader.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class QLoader extends Model
{
    protected  $fillable = ['question', 'optionA','optionB','optionC','optionD','optionE','section','image','answer','solution','examtype','examyear','requestCount','authorised' ];

    protected $hidden = ['created_at, updated_at', 'requestCount', 'authorised'];


    public function setTable($table)
    {
        $this->table = $table;
    }

    public static function FormatQuestionData($result, $subject)
    {
        $data =[];

        $option['a'] = $result->optionA;
        $option['b'] = $result->optionB;
        $option['c'] = $result->optionC;
        $option['d'] = $result->optionD;
        $option['e'] = $result->optionE;

        $data['id'] = $result->id;
        $data['question'] = $result->question;
        $data['option'] = $option;
        $data['section'] = $result->section;
        $data['image'] = $result->image;
        $data['answer'] = $result->answer;
        $data['solution'] = $result->solution;
        $data['examtype'] = $result->examtype;
        $data['examyear'] = $result->examyear;


        if($subject=== 'english'){
            $data['questionNub'] = $result->questionNub;
            $data['hasPassage'] = $result->hasPassage;
            $data['category'] = $result->category;
        }

        return $data;
    }

    public static function FormatQuestionsData($results, $subject,  $withComprehension='false')
    {
        $dataAll =[];
        foreach ($results as $result){
            if($subject=== 'english' && $result->hasPassage && $withComprehension !== 'true'){
                continue;
            }else if($subject=== 'english' && $result->hasPassage && $withComprehension == 'true'){
                $option['a'] = $result->optionA;
                $option['b'] = $result->optionB;
                $option['c'] = $result->optionC;
                $option['d'] = $result->optionD;

                if( property_exists('optionE', $result)){
                    $option['e'] = $result->optionE;
                }

                $data['id'] = $result->id;
                $data['question'] = $result->question;
                $data['option'] = $option;
                $data['section'] = $result->section;
                $data['image'] = $result->image;
                $data['answer'] = $result->answer;
                $data['solution'] = $result->solution;
                $data['examtype'] = $result->examtype;
                $data['examyear'] = $result->examyear;

                $data['questionNub'] = $result->questionNub;
                $data['hasPassage'] = $result->hasPassage;
                $data['category'] = $result->category;

                $dataAll[] = $data;

            }else{
                $option['a'] = $result->optionA;
                $option['b'] = $result->optionB;
                $option['c'] = $result->optionC;
                $option['d'] = $result->optionD;

                if( property_exists('optionE', $result)){
                    $option['e'] = $result->optionE;
                }

                $data['id'] = $result->id;
                $data['question'] = $result->question;
                $data['option'] = $option;
                $data['section'] = $result->section;
                $data['image'] = $result->image;
                $data['answer'] = $result->answer;
                $data['solution'] = $result->solution;
                $data['examtype'] = $result->examtype;
                $data['examyear'] = $result->examyear;

                if($subject=== 'english'){
                    $data['questionNub'] = $result->questionNub;
                    $data['hasPassage'] = $result->hasPassage;
                    $data['category'] = $result->category;
                }

                $dataAll[] = $data;
            }
        }
        return $dataAll;
    }

    public static function FormatTopQuestionsData($results)
    {
        $dataAll =[];
        foreach ($results as $result){
            $option['a'] = $result->optionA;
            $option['b'] = $result->optionB;
            $option['c'] = $result->optionC;
            $option['d'] = $result->optionD;
            if( property_exists('optionE', $result)){
                $option['e'] = $result->optionE;
            }
            
            $data['id'] = $result->id;
            $data['subject'] = $result->subject;
            $data['question'] = $result->question;
            $data['option'] = $option;
            $data['section'] = $result->section;
            $data['image'] = $result->image;
            $data['answer'] = $result->answer;
            $data['solution'] = $result->solution;
            $data['examtype'] = $result->examtype;
            $dataAll[] = $data;
        }
        return $dataAll;
    }
}


================================================
FILE: app/Models/ReportQuestion.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ReportQuestion extends Model
{
    protected $table = 'report_question';

    protected  $fillable = ['question_id', 'subject','message','type','status','full_name'];

}


================================================
FILE: app/Models/Subscription.php
================================================
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Subscription extends Model
{
    use HasFactory;
    protected $table = 'q_subscriptions';

    protected  $fillable = ['user_id', 'limit','plan_id','paying','status'];

}


================================================
FILE: app/Models/User.php
================================================
<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use HasFactory, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name',
        'email',
        'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function pricePlan()
    {
        return $this->belongsTo(PricePlan::class,'price_plan');
    }

    public function subscription()
    {
        return $this->hasOne(Subscription::class,'user_id', );
    }
}


================================================
FILE: app/Providers/AppServiceProvider.php
================================================
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}


================================================
FILE: app/Providers/AuthServiceProvider.php
================================================
<?php

namespace App\Providers;

use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        // 'App\Models\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        //
    }
}


================================================
FILE: app/Providers/BroadcastServiceProvider.php
================================================
<?php

namespace App\Providers;

use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;

class BroadcastServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Broadcast::routes();

        require base_path('routes/channels.php');
    }
}


================================================
FILE: app/Providers/EventServiceProvider.php
================================================
<?php

namespace App\Providers;

use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
    ];

    /**
     * Register any events for your application.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}


================================================
FILE: app/Providers/RouteServiceProvider.php
================================================
<?php

namespace App\Providers;

use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;

class RouteServiceProvider extends ServiceProvider
{
    /**
     * The path to the "home" route for your application.
     *
     * This is used by Laravel authentication to redirect users after login.
     *
     * @var string
     */
    public const HOME = '/home';

    /**
     * The controller namespace for the application.
     *
     * When present, controller route declarations will automatically be prefixed with this namespace.
     *
     * @var string|null
     */
    protected $namespace = 'App\\Http\\Controllers';

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @return void
     */
    public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::prefix('api')
                ->middleware('api')
                ->namespace($this->namespace)
                ->group(base_path('routes/api.php'));

            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/web.php'));
        });
    }

    /**
     * Configure the rate limiters for the application.
     *
     * @return void
     */
    protected function configureRateLimiting()
    {
        RateLimiter::for('api', function (Request $request) {
            return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
        });
    }
}


================================================
FILE: app/functions.php
================================================
<?php

use App\Models\ApiCallIpAddress;
use Illuminate\Support\Arr;

function subjectArray (){
    return ['english', 'mathematics', 'commerce', 'accounting', 'biology', 'physics', 'chemistry', 'englishlit', 'government', 'crk', 'geography', 'economics', 'irk', 'civiledu', 'insurance', 'currentaffairs', 'history'];
}

function examTypeArray(){
    return ['waec', 'utme', 'neco', 'post-utme'];
}

function querySampleArray1(){
    return ['https://questions.aloc.com.ng/api/q?subject=english',
        'https://questions.aloc.com.ng/api/q?subject=english&year=2010',
        'https://questions.aloc.com.ng/api/q?subject=insurance&type=wassce',
        'https://questions.aloc.com.ng/api/q?subject=english&year=2009&type=utme'];
}

function querySampleArray2(){
    return ['https://questions.aloc.com.ng/api/q/0?subject=english',
        'https://questions.aloc.com.ng/api/q/1?subject=english&year=2010',
        'https://questions.aloc.com.ng/api/q/2?subject=insurance&type=wassce',
        'https://questions.aloc.com.ng/api/q/3?subject=english&year=2009&type=utme'];
}

function randomSubjects(){
    return Arr::random(subjectArray(), 7);

}

function storeQuestionRequestByIP($subject){
    $userIp = request()->getClientIp(true);
    $locationData = \Location::get( $userIp);
    // dd($locationData, $userIp);

    if( $locationData !== false){
        $res =  ApiCallIpAddress::where(['ipAddress' => $userIp,'subject' => $subject] )->get();
        if(!$res->isEmpty()){
            $res = $res->first();
            $count = $res->requestCount + 1;
            $res::where('id','=', $res->id)->update(['requestCount'=>$count,'countryCode'=>$locationData->countryCode,
                'countryName'=>$locationData->countryName,'regionName'=>$locationData->regionName,]);
        }else{

            $data['countryCode'] = $locationData->countryCode;
            $data['countryName'] = $locationData->countryName ;
            $data['regionCode'] = $locationData->regionCode ;
            $data['regionName'] = $locationData->regionName ;
            $data['cityName'] = $locationData->cityName ;
            $data['zipCode'] = $locationData->zipCode;
            $data['latitude'] = $locationData->latitude ;
            $data['longitude'] = $locationData->longitude;

            $data['subject'] = $subject;
            $data['ipAddress'] = $userIp;
            ApiCallIpAddress::create($data);
        }
    }else{
        //localhost
    }
}

function formatNumber($num)
{
    return number_format($num, 0, '.', ',');
}

function payStackVerifyTransaction ($transactionReference) {

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => env('PAYSTACK_BASE_URL')."/transaction/verify/".$transactionReference,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => array(
            "Authorization: Bearer ".env('PAYSTACK_SECRET_KEY'),
            "Cache-Control: no-cache",
        ),
    ));

    $response = curl_exec($curl);
    $err = curl_error($curl);
    curl_close($curl);

    if ($err) {
        return $err;
    } else {
        return json_decode($response);
    }
}


================================================
FILE: artisan
================================================
#!/usr/bin/env php
<?php

define('LARAVEL_START', microtime(true));

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any of our classes manually. It's great to relax.
|
*/

require __DIR__.'/vendor/autoload.php';

$app = require_once __DIR__.'/bootstrap/app.php';

/*
|--------------------------------------------------------------------------
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/

$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);

$status = $kernel->handle(
    $input = new Symfony\Component\Console\Input\ArgvInput,
    new Symfony\Component\Console\Output\ConsoleOutput
);

/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once Artisan has finished running, we will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/

$kernel->terminate($input, $status);

exit($status);


================================================
FILE: bootstrap/app.php
================================================
<?php

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/

$app = new Illuminate\Foundation\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);

/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);

/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/

return $app;


================================================
FILE: bootstrap/cache/.gitignore
================================================
*
!.gitignore


================================================
FILE: composer.json
================================================
{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "php": "^7.3|^8.0",
        "fideloper/proxy": "^4.4",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^7.0.1",
        "laracasts/flash": "^3.2",
        "laravel/framework": "^8.40",
        "laravel/tinker": "^2.5",
        "stevebauman/location": "^6.1"
    },
    "php": "^7.1.3",
    "require-dev": {
        "facade/ignition": "^2.5",
        "fakerphp/faker": "^1.9.1",
        "laravel/sail": "^1.0.1",
        "mockery/mockery": "^1.4.2",
        "nunomaduro/collision": "^5.0",
        "phpunit/phpunit": "^9.3.3"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        },
        "files": [
            "app/functions.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}


================================================
FILE: config/app.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Application Name
    |--------------------------------------------------------------------------
    |
    | This value is the name of your application. This value is used when the
    | framework needs to place the application's name in a notification or
    | any other location as required by the application or its packages.
    |
    */

    'name' => env('APP_NAME', 'Laravel'),

    /*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services the application utilizes. Set this in your ".env" file.
    |
    */

    'env' => env('APP_ENV', 'production'),

    /*
    |--------------------------------------------------------------------------
    | Application Debug Mode
    |--------------------------------------------------------------------------
    |
    | When your application is in debug mode, detailed error messages with
    | stack traces will be shown on every error that occurs within your
    | application. If disabled, a simple generic error page is shown.
    |
    */

    'debug' => (bool) env('APP_DEBUG', false),

    /*
    |--------------------------------------------------------------------------
    | Application URL
    |--------------------------------------------------------------------------
    |
    | This URL is used by the console to properly generate URLs when using
    | the Artisan command line tool. You should set this to the root of
    | your application so that it is used when running Artisan tasks.
    |
    */

    'url' => env('APP_URL', 'http://localhost'),

    'asset_url' => env('ASSET_URL', null),

    /*
    |--------------------------------------------------------------------------
    | Application Timezone
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default timezone for your application, which
    | will be used by the PHP date and date-time functions. We have gone
    | ahead and set this to a sensible default for you out of the box.
    |
    */

    'timezone' => 'UTC',

    /*
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by the translation service provider. You are free to set this value
    | to any of the locales which will be supported by the application.
    |
    */

    'locale' => 'en',

    /*
    |--------------------------------------------------------------------------
    | Application Fallback Locale
    |--------------------------------------------------------------------------
    |
    | The fallback locale determines the locale to use when the current one
    | is not available. You may change the value to correspond to any of
    | the language folders that are provided through your application.
    |
    */

    'fallback_locale' => 'en',

    /*
    |--------------------------------------------------------------------------
    | Faker Locale
    |--------------------------------------------------------------------------
    |
    | This locale will be used by the Faker PHP library when generating fake
    | data for your database seeds. For example, this will be used to get
    | localized telephone numbers, street address information and more.
    |
    */

    'faker_locale' => 'en_US',

    /*
    |--------------------------------------------------------------------------
    | Encryption Key
    |--------------------------------------------------------------------------
    |
    | This key is used by the Illuminate encrypter service and should be set
    | to a random, 32 character string, otherwise these encrypted strings
    | will not be safe. Please do this before deploying an application!
    |
    */

    'key' => env('APP_KEY'),

    'cipher' => 'AES-256-CBC',

    /*
    |--------------------------------------------------------------------------
    | Autoloaded Service Providers
    |--------------------------------------------------------------------------
    |
    | The service providers listed here will be automatically loaded on the
    | request to your application. Feel free to add your own services to
    | this array to grant expanded functionality to your applications.
    |
    */

    'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
        Illuminate\Bus\BusServiceProvider::class,
        Illuminate\Cache\CacheServiceProvider::class,
        Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
        Illuminate\Cookie\CookieServiceProvider::class,
        Illuminate\Database\DatabaseServiceProvider::class,
        Illuminate\Encryption\EncryptionServiceProvider::class,
        Illuminate\Filesystem\FilesystemServiceProvider::class,
        Illuminate\Foundation\Providers\FoundationServiceProvider::class,
        Illuminate\Hashing\HashServiceProvider::class,
        Illuminate\Mail\MailServiceProvider::class,
        Illuminate\Notifications\NotificationServiceProvider::class,
        Illuminate\Pagination\PaginationServiceProvider::class,
        Illuminate\Pipeline\PipelineServiceProvider::class,
        Illuminate\Queue\QueueServiceProvider::class,
        Illuminate\Redis\RedisServiceProvider::class,
        Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
        Illuminate\Session\SessionServiceProvider::class,
        Illuminate\Translation\TranslationServiceProvider::class,
        Illuminate\Validation\ValidationServiceProvider::class,
        Illuminate\View\ViewServiceProvider::class,

        /*
         * Package Service Providers...
         */

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,

    ],

    /*
    |--------------------------------------------------------------------------
    | Class Aliases
    |--------------------------------------------------------------------------
    |
    | This array of class aliases will be registered when this application
    | is started. However, feel free to register as many as you wish as
    | the aliases are "lazy" loaded so they don't hinder performance.
    |
    */

    'aliases' => [

        'App' => Illuminate\Support\Facades\App::class,
        'Arr' => Illuminate\Support\Arr::class,
        'Artisan' => Illuminate\Support\Facades\Artisan::class,
        'Auth' => Illuminate\Support\Facades\Auth::class,
        'Blade' => Illuminate\Support\Facades\Blade::class,
        'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
        'Bus' => Illuminate\Support\Facades\Bus::class,
        'Cache' => Illuminate\Support\Facades\Cache::class,
        'Config' => Illuminate\Support\Facades\Config::class,
        'Cookie' => Illuminate\Support\Facades\Cookie::class,
        'Crypt' => Illuminate\Support\Facades\Crypt::class,
        'Date' => Illuminate\Support\Facades\Date::class,
        'DB' => Illuminate\Support\Facades\DB::class,
        'Eloquent' => Illuminate\Database\Eloquent\Model::class,
        'Event' => Illuminate\Support\Facades\Event::class,
        'File' => Illuminate\Support\Facades\File::class,
        'Gate' => Illuminate\Support\Facades\Gate::class,
        'Hash' => Illuminate\Support\Facades\Hash::class,
        'Http' => Illuminate\Support\Facades\Http::class,
        'Lang' => Illuminate\Support\Facades\Lang::class,
        'Log' => Illuminate\Support\Facades\Log::class,
        'Mail' => Illuminate\Support\Facades\Mail::class,
        'Notification' => Illuminate\Support\Facades\Notification::class,
        'Password' => Illuminate\Support\Facades\Password::class,
        'Queue' => Illuminate\Support\Facades\Queue::class,
        'Redirect' => Illuminate\Support\Facades\Redirect::class,
        // 'Redis' => Illuminate\Support\Facades\Redis::class,
        'Request' => Illuminate\Support\Facades\Request::class,
        'Response' => Illuminate\Support\Facades\Response::class,
        'Route' => Illuminate\Support\Facades\Route::class,
        'Schema' => Illuminate\Support\Facades\Schema::class,
        'Session' => Illuminate\Support\Facades\Session::class,
        'Storage' => Illuminate\Support\Facades\Storage::class,
        'Str' => Illuminate\Support\Str::class,
        'URL' => Illuminate\Support\Facades\URL::class,
        'Validator' => Illuminate\Support\Facades\Validator::class,
        'View' => Illuminate\Support\Facades\View::class,

    ],

];


================================================
FILE: config/auth.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option controls the default authentication "guard" and password
    | reset options for your application. You may change these defaults
    | as required, but they're a perfect start for most applications.
    |
    */

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

    /*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | here which uses session storage and the Eloquent user provider.
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | Supported: "session", "token"
    |
    */

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Resetting Passwords
    |--------------------------------------------------------------------------
    |
    | You may specify multiple password reset configurations if you have more
    | than one user table or model in the application and you want to have
    | separate password reset settings based on the specific user types.
    |
    | The expire time is the number of minutes that the reset token should be
    | considered valid. This security feature keeps tokens short-lived so
    | they have less time to be guessed. You may change this as needed.
    |
    */

    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
            'throttle' => 60,
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Password Confirmation Timeout
    |--------------------------------------------------------------------------
    |
    | Here you may define the amount of seconds before a password confirmation
    | times out and the user is prompted to re-enter their password via the
    | confirmation screen. By default, the timeout lasts for three hours.
    |
    */

    'password_timeout' => 10800,

];


================================================
FILE: config/broadcasting.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Broadcaster
    |--------------------------------------------------------------------------
    |
    | This option controls the default broadcaster that will be used by the
    | framework when an event needs to be broadcast. You may set this to
    | any of the connections defined in the "connections" array below.
    |
    | Supported: "pusher", "ably", "redis", "log", "null"
    |
    */

    'default' => env('BROADCAST_DRIVER', 'null'),

    /*
    |--------------------------------------------------------------------------
    | Broadcast Connections
    |--------------------------------------------------------------------------
    |
    | Here you may define all of the broadcast connections that will be used
    | to broadcast events to other systems or over websockets. Samples of
    | each available type of connection are provided inside this array.
    |
    */

    'connections' => [

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_APP_CLUSTER'),
                'useTLS' => true,
            ],
        ],

        'ably' => [
            'driver' => 'ably',
            'key' => env('ABLY_KEY'),
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],

        'log' => [
            'driver' => 'log',
        ],

        'null' => [
            'driver' => 'null',
        ],

    ],

];


================================================
FILE: config/cache.php
================================================
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Cache Store
    |--------------------------------------------------------------------------
    |
    | This option controls the default cache connection that gets used while
    | using this caching library. This connection is used when another is
    | not explicitly specified when executing a given caching function.
    |
    */

    'default' => env('CACHE_DRIVER', 'file'),

    /*
    |--------------------------------------------------------------------------
    | Cache Stores
    |--------------------------------------------------------------------------
    |
    | Here you may define all of the cache "stores" for your application as
    | well as their drivers. You may even define multiple stores for the
    | same cache driver to group types of items stored in your caches.
    |
    | Supported drivers: "apc", "array", "database", "file",
    |         "memcached", "redis", "dynamodb", "octane", "null"
    |
    */

    'stores' => [

        'apc' => [
            'driver' => 'apc',
        ],

        'array' => [
            'driver' => 'array',
            'serialize' => false,
        ],

        'database' => [
            'driver' => 'database',
            'table' => 'cache',
            'connection' => null,
            'lock_connection' => null,
        ],

        'file' => [
            'driver' => 'file',
            'path' => storage_path('framework/cache/data'),
        ],

        'memcached' => [
            'driver' => 'memcached',
            'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
            'sasl' => [
                env('MEMCACHED_USERNAME'),
                env('MEMCACHED_PASSWORD'),
            ],
            'options' => [
                // Memcached::OPT_CONNECT_TIMEOUT => 2000,
            ],
            'servers' => [
                [
                    'host' => env('MEMCACHED_HOST', '127.0.0.1'),
                    'port' => env('MEMCACHED_PORT', 11211),
                    'weight' => 100,
                ],
            ],
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'cache',
            'lock_connection' => 'default',
        ],

        'dynamodb' => [
            'driver' => 'dynamodb',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
            'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
            'endpoint' => env('DYNAMODB_ENDPOINT'),
        ],

        'octane' => [
            'driver' => 'octane',
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Cache Key Prefix
    |--------------------------------------------------------------------------
    |
    | When utilizing a RAM based store such as APC or Memcached, there might
    | be other applications utilizing the same cache. So, we'll specify a
    | value to get prefixed to all our keys so we can avoid collisions.
    |
    */

    'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),

];


================================================
FILE: config/cors.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Cross-Origin Resource Sharing (CORS) Configuration
    |--------------------------------------------------------------------------
    |
    | Here you may configure your settings for cross-origin resource sharing
    | or "CORS". This determines what cross-origin operations may execute
    | in web browsers. You are free to adjust these settings as needed.
    |
    | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    |
    */

    'paths' => ['api/*', 'sanctum/csrf-cookie'],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => false,

];


================================================
FILE: config/database.php
================================================
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Database Connection Name
    |--------------------------------------------------------------------------
    |
    | Here you may specify which of the database connections below you wish
    | to use as your default connection for all database work. Of course
    | you may use many connections at once using the Database library.
    |
    */

    'default' => env('DB_CONNECTION', 'mysql'),

    /*
    |--------------------------------------------------------------------------
    | Database Connections
    |--------------------------------------------------------------------------
    |
    | Here are each of the database connections setup for your application.
    | Of course, examples of configuring each database platform that is
    | supported by Laravel is shown below to make development simple.
    |
    |
    | All database work in Laravel is done through the PHP PDO facilities
    | so make sure you have the driver for your particular database of
    | choice installed on your machine before you begin development.
    |
    */

    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DATABASE_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ],

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

        'pgsql' => [
            'driver' => 'pgsql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],

        'sqlsrv' => [
            'driver' => 'sqlsrv',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Migration Repository Table
    |--------------------------------------------------------------------------
    |
    | This table keeps track of all the migrations that have already run for
    | your application. Using this information, we can determine which of
    | the migrations on disk haven't actually been run in the database.
    |
    */

    'migrations' => 'migrations',

    /*
    |--------------------------------------------------------------------------
    | Redis Databases
    |--------------------------------------------------------------------------
    |
    | Redis is an open source, fast, and advanced key-value store that also
    | provides a richer body of commands than a typical key-value system
    | such as APC or Memcached. Laravel makes it easy to dig right in.
    |
    */

    'redis' => [

        'client' => env('REDIS_CLIENT', 'phpredis'),

        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'redis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
        ],

        'default' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_DB', '0'),
        ],

        'cache' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_CACHE_DB', '1'),
        ],

    ],

];


================================================
FILE: config/filesystems.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Filesystem Disk
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default filesystem disk that should be used
    | by the framework. The "local" disk, as well as a variety of cloud
    | based disks are available to your application. Just store away!
    |
    */

    'default' => env('FILESYSTEM_DRIVER', 'local'),

    /*
    |--------------------------------------------------------------------------
    | Filesystem Disks
    |--------------------------------------------------------------------------
    |
    | Here you may configure as many filesystem "disks" as you wish, and you
    | may even configure multiple disks of the same driver. Defaults have
    | been setup for each driver as an example of the required options.
    |
    | Supported Drivers: "local", "ftp", "sftp", "s3"
    |
    */

    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
            'endpoint' => env('AWS_ENDPOINT'),
            'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Symbolic Links
    |--------------------------------------------------------------------------
    |
    | Here you may configure the symbolic links that will be created when the
    | `storage:link` Artisan command is executed. The array keys should be
    | the locations of the links and the values should be their targets.
    |
    */

    'links' => [
        public_path('storage') => storage_path('app/public'),
    ],

];


================================================
FILE: config/hashing.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Hash Driver
    |--------------------------------------------------------------------------
    |
    | This option controls the default hash driver that will be used to hash
    | passwords for your application. By default, the bcrypt algorithm is
    | used; however, you remain free to modify this option if you wish.
    |
    | Supported: "bcrypt", "argon", "argon2id"
    |
    */

    'driver' => 'bcrypt',

    /*
    |--------------------------------------------------------------------------
    | Bcrypt Options
    |--------------------------------------------------------------------------
    |
    | Here you may specify the configuration options that should be used when
    | passwords are hashed using the Bcrypt algorithm. This will allow you
    | to control the amount of time it takes to hash the given password.
    |
    */

    'bcrypt' => [
        'rounds' => env('BCRYPT_ROUNDS', 10),
    ],

    /*
    |--------------------------------------------------------------------------
    | Argon Options
    |--------------------------------------------------------------------------
    |
    | Here you may specify the configuration options that should be used when
    | passwords are hashed using the Argon algorithm. These will allow you
    | to control the amount of time it takes to hash the given password.
    |
    */

    'argon' => [
        'memory' => 1024,
        'threads' => 2,
        'time' => 2,
    ],

];


================================================
FILE: config/location.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Driver
    |--------------------------------------------------------------------------
    |
    | The default driver you would like to use for location retrieval.
    |
    */

    'driver' => Stevebauman\Location\Drivers\IpApi::class,

    /*
    |--------------------------------------------------------------------------
    | Driver Fallbacks
    |--------------------------------------------------------------------------
    |
    | The drivers you want to use to retrieve the users location
    | if the above selected driver is unavailable.
    |
    | These will be called upon in order (first to last).
    |
    */

    'fallbacks' => [

        Stevebauman\Location\Drivers\IpInfo::class,

        Stevebauman\Location\Drivers\GeoPlugin::class,

        Stevebauman\Location\Drivers\MaxMind::class,

    ],

    /*
    |--------------------------------------------------------------------------
    | Position
    |--------------------------------------------------------------------------
    |
    | Here you may configure the position instance that is created
    | and returned from the above drivers. The instance you
    | create must extend the built-in Position class.
    |
    */

    'position' => Stevebauman\Location\Position::class,

    /*
    |--------------------------------------------------------------------------
    | MaxMind Configuration
    |--------------------------------------------------------------------------
    |
    | The configuration for the MaxMind driver.
    |
    | If web service is enabled, you must fill in your user ID and license key.
    |
    | If web service is disabled, it will try and retrieve the users location
    | from the MaxMind database file located in the local path below.
    |
    */

    'maxmind' => [

        'web' => [

            'enabled' => false,

            'user_id' => '',

            'license_key' => '',

            'options' => [

                'host' => 'geoip.maxmind.com',

            ],

        ],

        'local' => [

            'path' => database_path('maxmind/GeoLite2-City.mmdb')

        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | IP API Pro Configuration
    |--------------------------------------------------------------------------
    |
    | The configuration for the IP API Pro driver.
    |
    */

    'ip_api' => [

        'token' => env('IP_API_TOKEN'),

    ],

    /*
    |--------------------------------------------------------------------------
    | IPInfo Configuration
    |--------------------------------------------------------------------------
    |
    | The configuration for the IPInfo driver.
    |
    */

    'ipinfo' => [

        'token' => env('IPINFO_TOKEN'),

    ],

    /*
    |--------------------------------------------------------------------------
    | Localhost Testing
    |--------------------------------------------------------------------------
    |
    | If your running your website locally and want to test different
    | IP addresses to see location detection, set 'enabled' to true.
    |
    | The testing IP address is a Google host in the United-States.
    |
    */

    'testing' => [

        'enabled' => env('LOCATION_TESTING', true),

        'ip' => '66.102.0.0',

    ],

];


================================================
FILE: config/logging.php
================================================
<?php

use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Log Channel
    |--------------------------------------------------------------------------
    |
    | This option defines the default log channel that gets used when writing
    | messages to the logs. The name specified in this option should match
    | one of the channels defined in the "channels" configuration array.
    |
    */

    'default' => env('LOG_CHANNEL', 'stack'),

    /*
    |--------------------------------------------------------------------------
    | Log Channels
    |--------------------------------------------------------------------------
    |
    | Here you may configure the log channels for your application. Out of
    | the box, Laravel uses the Monolog PHP logging library. This gives
    | you a variety of powerful log handlers / formatters to utilize.
    |
    | Available Drivers: "single", "daily", "slack", "syslog",
    |                    "errorlog", "monolog",
    |                    "custom", "stack"
    |
    */

    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['single'],
            'ignore_exceptions' => false,
        ],

        'single' => [
            'driver' => 'single',
            'path' => storage_path('logs/laravel.log'),
            'level' => env('LOG_LEVEL', 'debug'),
        ],

        'daily' => [
            'driver' => 'daily',
            'path' => storage_path('logs/laravel.log'),
            'level' => env('LOG_LEVEL', 'debug'),
            'days' => 14,
        ],

        'slack' => [
            'driver' => 'slack',
            'url' => env('LOG_SLACK_WEBHOOK_URL'),
            'username' => 'Laravel Log',
            'emoji' => ':boom:',
            'level' => env('LOG_LEVEL', 'critical'),
        ],

        'papertrail' => [
            'driver' => 'monolog',
            'level' => env('LOG_LEVEL', 'debug'),
            'handler' => SyslogUdpHandler::class,
            'handler_with' => [
                'host' => env('PAPERTRAIL_URL'),
                'port' => env('PAPERTRAIL_PORT'),
            ],
        ],

        'stderr' => [
            'driver' => 'monolog',
            'level' => env('LOG_LEVEL', 'debug'),
            'handler' => StreamHandler::class,
            'formatter' => env('LOG_STDERR_FORMATTER'),
            'with' => [
                'stream' => 'php://stderr',
            ],
        ],

        'syslog' => [
            'driver' => 'syslog',
            'level' => env('LOG_LEVEL', 'debug'),
        ],

        'errorlog' => [
            'driver' => 'errorlog',
            'level' => env('LOG_LEVEL', 'debug'),
        ],

        'null' => [
            'driver' => 'monolog',
            'handler' => NullHandler::class,
        ],

        'emergency' => [
            'path' => storage_path('logs/laravel.log'),
        ],
    ],

];


================================================
FILE: config/mail.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Mailer
    |--------------------------------------------------------------------------
    |
    | This option controls the default mailer that is used to send any email
    | messages sent by your application. Alternative mailers may be setup
    | and used as needed; however, this mailer will be used by default.
    |
    */

    'default' => env('MAIL_MAILER', 'smtp'),

    /*
    |--------------------------------------------------------------------------
    | Mailer Configurations
    |--------------------------------------------------------------------------
    |
    | Here you may configure all of the mailers used by your application plus
    | their respective settings. Several examples have been configured for
    | you and you are free to add your own as your application requires.
    |
    | Laravel supports a variety of mail "transport" drivers to be used while
    | sending an e-mail. You will specify which one you are using for your
    | mailers below. You are free to add additional mailers as required.
    |
    | Supported: "smtp", "sendmail", "mailgun", "ses",
    |            "postmark", "log", "array"
    |
    */

    'mailers' => [
        'smtp' => [
            'transport' => 'smtp',
            'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
            'port' => env('MAIL_PORT', 587),
            'encryption' => env('MAIL_ENCRYPTION', 'tls'),
            'username' => env('MAIL_USERNAME'),
            'password' => env('MAIL_PASSWORD'),
            'timeout' => null,
            'auth_mode' => null,
        ],

        'ses' => [
            'transport' => 'ses',
        ],

        'mailgun' => [
            'transport' => 'mailgun',
        ],

        'postmark' => [
            'transport' => 'postmark',
        ],

        'sendmail' => [
            'transport' => 'sendmail',
            'path' => '/usr/sbin/sendmail -bs',
        ],

        'log' => [
            'transport' => 'log',
            'channel' => env('MAIL_LOG_CHANNEL'),
        ],

        'array' => [
            'transport' => 'array',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Global "From" Address
    |--------------------------------------------------------------------------
    |
    | You may wish for all e-mails sent by your application to be sent from
    | the same address. Here, you may specify a name and address that is
    | used globally for all e-mails that are sent by your application.
    |
    */

    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
        'name' => env('MAIL_FROM_NAME', 'Example'),
    ],

    /*
    |--------------------------------------------------------------------------
    | Markdown Mail Settings
    |--------------------------------------------------------------------------
    |
    | If you are using Markdown based email rendering, you may configure your
    | theme and component paths here, allowing you to customize the design
    | of the emails. Or, you may simply stick with the Laravel defaults!
    |
    */

    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],

];


================================================
FILE: config/queue.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Queue Connection Name
    |--------------------------------------------------------------------------
    |
    | Laravel's queue API supports an assortment of back-ends via a single
    | API, giving you convenient access to each back-end using the same
    | syntax for every one. Here you may define a default connection.
    |
    */

    'default' => env('QUEUE_CONNECTION', 'sync'),

    /*
    |--------------------------------------------------------------------------
    | Queue Connections
    |--------------------------------------------------------------------------
    |
    | Here you may configure the connection information for each server that
    | is used by your application. A default configuration has been added
    | for each back-end shipped with Laravel. You are free to add more.
    |
    | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
    |
    */

    'connections' => [

        'sync' => [
            'driver' => 'sync',
        ],

        'database' => [
            'driver' => 'database',
            'table' => 'jobs',
            'queue' => 'default',
            'retry_after' => 90,
            'after_commit' => false,
        ],

        'beanstalkd' => [
            'driver' => 'beanstalkd',
            'host' => 'localhost',
            'queue' => 'default',
            'retry_after' => 90,
            'block_for' => 0,
            'after_commit' => false,
        ],

        'sqs' => [
            'driver' => 'sqs',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
            'queue' => env('SQS_QUEUE', 'default'),
            'suffix' => env('SQS_SUFFIX'),
            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
            'after_commit' => false,
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
            'queue' => env('REDIS_QUEUE', 'default'),
            'retry_after' => 90,
            'block_for' => null,
            'after_commit' => false,
        ],

    ],

    /*
    |--------------------------------------------------------------------------
    | Failed Queue Jobs
    |--------------------------------------------------------------------------
    |
    | These options configure the behavior of failed queue job logging so you
    | can control which database and table are used to store the jobs that
    | have failed. You may change them to any database / table you wish.
    |
    */

    'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
        'database' => env('DB_CONNECTION', 'mysql'),
        'table' => 'failed_jobs',
    ],

];


================================================
FILE: config/services.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Third Party Services
    |--------------------------------------------------------------------------
    |
    | This file is for storing the credentials for third party services such
    | as Mailgun, Postmark, AWS and more. This file provides the de facto
    | location for this type of information, allowing packages to have
    | a conventional file to locate the various service credentials.
    |
    */

    'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN'),
        'secret' => env('MAILGUN_SECRET'),
        'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
    ],

    'postmark' => [
        'token' => env('POSTMARK_TOKEN'),
    ],

    'ses' => [
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    ],

];


================================================
FILE: config/session.php
================================================
<?php

use Illuminate\Support\Str;

return [

    /*
    |--------------------------------------------------------------------------
    | Default Session Driver
    |--------------------------------------------------------------------------
    |
    | This option controls the default session "driver" that will be used on
    | requests. By default, we will use the lightweight native driver but
    | you may specify any of the other wonderful drivers provided here.
    |
    | Supported: "file", "cookie", "database", "apc",
    |            "memcached", "redis", "dynamodb", "array"
    |
    */

    'driver' => env('SESSION_DRIVER', 'file'),

    /*
    |--------------------------------------------------------------------------
    | Session Lifetime
    |--------------------------------------------------------------------------
    |
    | Here you may specify the number of minutes that you wish the session
    | to be allowed to remain idle before it expires. If you want them
    | to immediately expire on the browser closing, set that option.
    |
    */

    'lifetime' => env('SESSION_LIFETIME', 120),

    'expire_on_close' => false,

    /*
    |--------------------------------------------------------------------------
    | Session Encryption
    |--------------------------------------------------------------------------
    |
    | This option allows you to easily specify that all of your session data
    | should be encrypted before it is stored. All encryption will be run
    | automatically by Laravel and you can use the Session like normal.
    |
    */

    'encrypt' => false,

    /*
    |--------------------------------------------------------------------------
    | Session File Location
    |--------------------------------------------------------------------------
    |
    | When using the native session driver, we need a location where session
    | files may be stored. A default has been set for you but a different
    | location may be specified. This is only needed for file sessions.
    |
    */

    'files' => storage_path('framework/sessions'),

    /*
    |--------------------------------------------------------------------------
    | Session Database Connection
    |--------------------------------------------------------------------------
    |
    | When using the "database" or "redis" session drivers, you may specify a
    | connection that should be used to manage these sessions. This should
    | correspond to a connection in your database configuration options.
    |
    */

    'connection' => env('SESSION_CONNECTION', null),

    /*
    |--------------------------------------------------------------------------
    | Session Database Table
    |--------------------------------------------------------------------------
    |
    | When using the "database" session driver, you may specify the table we
    | should use to manage the sessions. Of course, a sensible default is
    | provided for you; however, you are free to change this as needed.
    |
    */

    'table' => 'sessions',

    /*
    |--------------------------------------------------------------------------
    | Session Cache Store
    |--------------------------------------------------------------------------
    |
    | While using one of the framework's cache driven session backends you may
    | list a cache store that should be used for these sessions. This value
    | must match with one of the application's configured cache "stores".
    |
    | Affects: "apc", "dynamodb", "memcached", "redis"
    |
    */

    'store' => env('SESSION_STORE', null),

    /*
    |--------------------------------------------------------------------------
    | Session Sweeping Lottery
    |--------------------------------------------------------------------------
    |
    | Some session drivers must manually sweep their storage location to get
    | rid of old sessions from storage. Here are the chances that it will
    | happen on a given request. By default, the odds are 2 out of 100.
    |
    */

    'lottery' => [2, 100],

    /*
    |--------------------------------------------------------------------------
    | Session Cookie Name
    |--------------------------------------------------------------------------
    |
    | Here you may change the name of the cookie used to identify a session
    | instance by ID. The name specified here will get used every time a
    | new session cookie is created by the framework for every driver.
    |
    */

    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),

    /*
    |--------------------------------------------------------------------------
    | Session Cookie Path
    |--------------------------------------------------------------------------
    |
    | The session cookie path determines the path for which the cookie will
    | be regarded as available. Typically, this will be the root path of
    | your application but you are free to change this when necessary.
    |
    */

    'path' => '/',

    /*
    |--------------------------------------------------------------------------
    | Session Cookie Domain
    |--------------------------------------------------------------------------
    |
    | Here you may change the domain of the cookie used to identify a session
    | in your application. This will determine which domains the cookie is
    | available to in your application. A sensible default has been set.
    |
    */

    'domain' => env('SESSION_DOMAIN', null),

    /*
    |--------------------------------------------------------------------------
    | HTTPS Only Cookies
    |--------------------------------------------------------------------------
    |
    | By setting this option to true, session cookies will only be sent back
    | to the server if the browser has a HTTPS connection. This will keep
    | the cookie from being sent to you when it can't be done securely.
    |
    */

    'secure' => env('SESSION_SECURE_COOKIE'),

    /*
    |--------------------------------------------------------------------------
    | HTTP Access Only
    |--------------------------------------------------------------------------
    |
    | Setting this value to true will prevent JavaScript from accessing the
    | value of the cookie and the cookie will only be accessible through
    | the HTTP protocol. You are free to modify this option if needed.
    |
    */

    'http_only' => true,

    /*
    |--------------------------------------------------------------------------
    | Same-Site Cookies
    |--------------------------------------------------------------------------
    |
    | This option determines how your cookies behave when cross-site requests
    | take place, and can be used to mitigate CSRF attacks. By default, we
    | will set this value to "lax" since this is a secure default value.
    |
    | Supported: "lax", "strict", "none", null
    |
    */

    'same_site' => 'lax',

];


================================================
FILE: config/view.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | View Storage Paths
    |--------------------------------------------------------------------------
    |
    | Most templating systems load templates from disk. Here you may specify
    | an array of paths that should be checked for your views. Of course
    | the usual Laravel view path has already been registered for you.
    |
    */

    'paths' => [
        resource_path('views'),
    ],

    /*
    |--------------------------------------------------------------------------
    | Compiled View Path
    |--------------------------------------------------------------------------
    |
    | This option determines where all the compiled Blade templates will be
    | stored for your application. Typically, this is within the storage
    | directory. However, as usual, you are free to change this value.
    |
    */

    'compiled' => env(
        'VIEW_COMPILED_PATH',
        realpath(storage_path('framework/views'))
    ),

];


================================================
FILE: database/.gitignore
================================================
*.sqlite*


================================================
FILE: database/factories/UserFactory.php
================================================
<?php

namespace Database\Factories;

use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class UserFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = User::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'name' => $this->faker->name(),
            'email' => $this->faker->unique()->safeEmail(),
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
        ];
    }

    /**
     * Indicate that the model's email address should be unverified.
     *
     * @return \Illuminate\Database\Eloquent\Factories\Factory
     */
    public function unverified()
    {
        return $this->state(function (array $attributes) {
            return [
                'email_verified_at' => null,
            ];
        });
    }
}


================================================
FILE: database/migrations/2014_10_12_000000_create_users_table.php
================================================
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->Integer('price_plan')->unsigned()->default(1);
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}


================================================
FILE: database/migrations/2014_10_12_100000_create_password_resets_table.php
================================================
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePasswordResetsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('q_password_resets', function (Blueprint $table) {
            $table->string('email')->index();
            $table->string('token');
            $table->timestamp('created_at')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('q_password_resets');
    }
}


================================================
FILE: database/migrations/2018_08_13_124632_create_questions_tables.php
================================================
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateQuestionsTables extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
//        Schema::create('english', function($table)
//        {
//            $table->increments('id');
//            $table->text('question');
//            $table->string('optionA', 225);
//            $table->string('optionB', 225);
//            $table->string('optionC', 225);
//            $table->string('optionD', 225);
//            $table->text('section')->nullable();
//            $table->text('image')->nullable();
//            $table->string('answer', 10);
//            $table->text('solution')->nullable();
//            $table->string('examtype',20);
//            $table->string('examyear', 6);
//            $table->mediumInteger('requestCount')->default(0);
//            $table->string('authorised', 50)->nullable();
//            $table->timestamps();
//        });
//
//        Schema::create('mathematics', function($table)
//        {
//            $table->increments('id');
//            $table->text('question');
//            $table->string('optionA', 225);
//            $table->string('optionB', 225);
//            $table->string('optionC', 225);
//            $table->string('optionD', 225);
//            $table->text('section')->nullable();
//            $table->text('image')->nullable();
//            $table->string('answer', 10);
//            $table->text('solution')->nullable();
//            $table->string('examtype',20);
//            $table->string('examyear', 6);
//            $table->mediumInteger('requestCount')->default(0);
//            $table->string('authorised', 50)->nullable();
//            $table->timestamps();
//        });
//
//        Schema::create('physics', function($table)
//        {
//            $table->increments('id');
//            $table->text('question');
//            $table->string('optionA', 225);
//            $table->string('optionB', 225);
//            $table->string('optionC', 225);
//            $table->string('optionD', 225);
//            $table->text('section')->nullable();
//            $table->text('image')->nullable();
//            $table->string('answer', 10);
//            $table->text('solution')->nullable();
//            $table->string('examtype',20);
//            $table->string('examyear', 6);
//            $table->mediumInteger('requestCount')->default(0);
//            $table->string('authorised', 50)->nullable();
//            $table->timestamps();
//        });
//
//        Schema::create('chemistry', function($table)
//        {
//            $table->increments('id');
//            $table->text('question');
//            $table->string('optionA', 225);
//            $table->string('optionB', 225);
//            $table->string('optionC', 225);
//            $table->string('optionD', 225);
//            $table->text('section')->nullable();
//            $table->text('image')->nullable();
//            $table->string('answer', 10);
//            $table->text('solution')->nullable();
//            $table->string('examtype',20);
//            $table->string('examyear', 6);
//            $table->mediumInteger('requestCount')->default(0);
//            $table->string('authorised', 50)->nullable();
//            $table->timestamps();
//        });
//
//
//        Schema::create('biology', function($table)
//        {
//            $table->increments('id');
//            $table->text('question');
//            $table->string('optionA', 225);
//            $table->string('optionB', 225);
//            $table->string('optionC', 225);
//            $table->string('optionD', 225);
//            $table->text('section')->nullable();
//            $table->text('image')->nullable();
//            $table->string('answer', 10);
//            $table->text('solution')->nullable();
//            $table->string('examtype',20);
//            $table->string('examyear', 6);
//            $table->mediumInteger('requestCount')->default(0);
//            $table->string('authorised', 50)->nullable();
//            $table->timestamps();
//        });
//
//        Schema::create('accounting', function($table)
//        {
//            $table->increments('id');
//            $table->text('question');
//            $table->string('optionA', 225);
//            $table->string('optionB', 225);
//            $table->string('optionC', 225);
//            $table->string('optionD', 225);
//            $table->text('section')->nullable();
//            $table->text('image')->nullable();
//            $table->string('answer', 10);
//            $table->text('solution')->nullable();
//            $table->string('examtype',20);
//            $table->string('examyear', 6);
//            $table->mediumInteger('requestCount')->default(0);
//            $table->string('authorised', 50)->nullable();
//            $table->timestamps();
//        });
//
//        Schema::create('commerce', function($table)
//        {
//            $table->increments('id');
//            $table->text('question');
//            $table->string('optionA', 225);
//            $table->string('optionB', 225);
//            $table->string('optionC', 225);
//            $table->string('optionD', 225);
//            $table->text('section')->nullable();
//            $table->text('image')->nullable();
//            $table->string('answer', 10);
//            $table->text('solution')->nullable();
//            $table->string('examtype',20);
//            $table->string('examyear', 6);
//            $table->mediumInteger('requestCount')->default(0);
//            $table->string('authorised', 50)->nullable();
//            $table->timestamps();
//        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
//        Schema::dropIfExists('english');
//        Schema::dropIfExists('mathematics');
//        Schema::dropIfExists('physics');
//        Schema::dropIfExists('chemistry');
//        Schema::dropIfExists('biology');
//        Schema::dropIfExists('accounting');
//        Schema::dropIfExists('commerce');
    }
}


================================================
FILE: database/migrations/2018_08_28_195542_create_report_question_tables.php
================================================
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateReportQuestionTables extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
//        Schema::create('report_question', function (Blueprint $table) {
//            $table->increments('id');
//            $table->string('full_name')->default('Anonymous');
//            $table->mediumInteger('question_id');
//            $table->string('subject');
//            $table->text('message', 225)->nullable();
//            $table->enum('type',['1','2','3','4','5','6','7']); //1=>question. 2=>option A 3=> option B, 4=>option C 5=> option D 6=>answer 7=>solution
//            $table->enum('status', ['0','1']);  //0=> opened 1=>closed
//            $table->timestamps();
//        });
//
//        Schema::create('report_question_type', function(Blueprint $table)
//        {
//            $table->increments('id');
//            $table->text('name', 50);
//            $table->string('description', 225)->nullable();
//            $table->timestamps();
//        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
//        Schema::dropIfExists('report_question');
//        Schema::dropIfExists('report_question_type');

    }
}


================================================
FILE: database/migrations/2018_11_10_105744_create_table_ipaddres_2_question.php
================================================
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTableIpaddres2Question extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
//        Schema::create('api_call_ip_address', function (Blueprint $table) {
//            $table->increments('id');
//            $table->string('subject');
//            $table->string('ipAddress');
//            $table->string('countryName')->nullable();
//            $table->string('countryCode')->nullable();
//            $table->string('regionCode')->nullable();
//            $table->string('regionName')->nullable();
//            $table->string('cityName')->nullable();
//            $table->string('zipCode')->nullable();
//            $table->string('latitude')->nullable();
//            $table->string('longitude')->nullable();
//            $table->Integer('requestCount')->default(0);
//            $table->timestamps();
//        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //Schema::dropIfExists('api_call_ip_address');

    }
}


================================================
FILE: database/migrations/2019_08_19_000000_create_failed_jobs_table.php
================================================
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateFailedJobsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
//        Schema::create('failed_jobs', function (Blueprint $table) {
//            $table->id();
//            $table->string('uuid')->unique();
//            $table->text('connection');
//            $table->text('queue');
//            $table->longText('payload');
//            $table->longText('exception');
//            $table->timestamp('failed_at')->useCurrent();
//        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
//        Schema::dropIfExists('failed_jobs');
    }
}


================================================
FILE: database/migrations/2021_07_10_192953_create_access_token_table.php
================================================
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateAccessTokenTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {

        Schema::create('q_access_tokens', function (Blueprint $table) {
            $table->id();
            $table->Integer('user_id')->unsigned()->unique();
            $table->string('token', 225);
            $table->Integer('count')->default(0);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('q_access_tokens');
    }
}


================================================
FILE: database/migrations/2021_07_13_194154_create_table_access_token_calls.php
================================================
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateTableAccessTokenCalls extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('q_access_token_calls', function (Blueprint $table) {
            $table->id();
            $table->Integer('user_id')->unsigned();
            $table->string('subject');
            $table->Integer('requestCount')->default(0);
            $table->string('token', 225);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('q_access_token_calls');
    }
}


================================================
FILE: database/migrations/2021_07_17_152326_create_table_price_plans.php
================================================
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateTablePricePlans extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('q_price_plans', function (Blueprint $table) {
            $table->id();
            $table->string('plan');
            $table->Integer('price')->default(0);
            $table->Integer('default_unit')->default(0);
            $table->Integer('bonus_unit')->default(0);
            $table->Integer('unit_limit')->default(0);

            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('q_price_plans');
    }
}


================================================
FILE: database/migrations/2021_08_03_124437_create_payment_table.php
================================================
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePaymentTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('q_payments', function (Blueprint $table) {
            $table->id();
            $table->Integer('user_id')->unsigned();
            $table->Integer('amount')->default(0);
            $table->Integer('plan_id')->unsigned();
            $table->Integer('price')->default(0);
            $table->enum('method', ['paystack','monnify'])->default('paystack');
            $table->string('trans_reference');
            $table->text('message');
            $table->boolean('status')->default(false);

            $table->timestamps();
        });

        Schema::create('q_subscriptions', function (Blueprint $table) {
            $table->id();
            $table->Integer('user_id')->unsigned();
            $table->Integer('plan_id')->unsigned();
            $table->Integer('limit')->default(0);
            $table->boolean('paying')->default(false);

            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('q_payments');
        Schema::dropIfExists('q_subscriptions');

    }
}


================================================
FILE: database/migrations/2022_10_22_110248_create_qboard_log_table.php
================================================
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateQboardLogTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('q_qboard_logs', function (Blueprint $table) {
            $table->id();
            $table->string('subject');
            $table->string('month');
            $table->string('year');
            $table->Integer('requestCount')->default(0);
            $table->Integer('questionCount')->default(0);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('q_qboard_logs');
    }
}


================================================
FILE: database/seeders/DatabaseSeeder.php
================================================
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // \App\Models\User::factory(10)->create();
    }
}


================================================
FILE: database/seeders/LoadDummyQuestions.php
================================================
<?php

use Illuminate\Database\Seeder;

class LoadDummyQuestions extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('accounting')->insert(['question' => 'The bad debt account is closed by transferring the balance to','optionA' => 'credit of capital account', 'optionB' => 'debit of profit  and loss', 'optionC' => 'debit of the debtors personal account','optionD' => 'credit of profit and loss account', 'answer' => 'a', 'examtype' => 'JAMB', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('accounting')->insert(['question' => 'The bad  account is closed','optionA' => 'capital account', 'optionB' => 'debit of profit  ', 'optionC' => 'debit of account','optionD' => 'credit of profit account', 'answer' => 'b', 'examtype' => 'JAMB', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('accounting')->insert(['question' => 'The bad debt account o','optionA' => 'credit', 'optionB' => 'debitband loss', 'optionC' => ' account','optionD' => 'credit of profit and loss account', 'answer' => 'c', 'examtype' => 'WAEC', 'examyear' => '2008', 'authorised' => 'Admin',]);
        DB::table('accounting')->insert(['question' => 'Bad debt account','optionA' => 'credit of capital account', 'optionB' => 'debit of profit  and loss', 'optionC' => 'debit of the debtors personal account','optionD' => 'credit of profit and loss account', 'answer' => 'd', 'examtype' => 'WAEC', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('accounting')->insert(['question' => 'Bad account','optionA' => 'credit', 'optionB' => 'loss', 'optionC' => 'debit o account','optionD' => 'credit of profit ', 'answer' => 'a', 'examtype' => 'JAMB', 'examyear' => '2008', 'authorised' => 'Admin',]);

        DB::table('english')->insert(['question' => 'The bad debt account is closed by transferring the balance to','optionA' => 'credit of capital account', 'optionB' => 'debit of profit  and loss', 'optionC' => 'debit of the debtors personal account','optionD' => 'credit of profit and loss account', 'answer' => 'a', 'examtype' => 'JAMB', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('english')->insert(['question' => 'The bad  account is closed','optionA' => 'capital account', 'optionB' => 'debit of profit  ', 'optionC' => 'debit of account','optionD' => 'credit of profit account', 'answer' => 'b', 'examtype' => 'JAMB', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('english')->insert(['question' => 'The bad debt account o','optionA' => 'credit', 'optionB' => 'debitband loss', 'optionC' => ' account','optionD' => 'credit of profit and loss account', 'answer' => 'c', 'examtype' => 'WAEC', 'examyear' => '2008', 'authorised' => 'Admin',]);
        DB::table('english')->insert(['question' => 'Bad debt account','optionA' => 'credit of capital account', 'optionB' => 'debit of profit  and loss', 'optionC' => 'debit of the debtors personal account','optionD' => 'credit of profit and loss account', 'answer' => 'd', 'examtype' => 'WAEC', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('english')->insert(['question' => 'Bad account','optionA' => 'credit', 'optionB' => 'loss', 'optionC' => 'debit o account','optionD' => 'credit of profit ', 'answer' => 'a', 'examtype' => 'JAMB', 'examyear' => '2008', 'authorised' => 'Admin',]);

        DB::table('mathematics')->insert(['question' => 'The bad debt account is closed by transferring the balance to','optionA' => 'credit of capital account', 'optionB' => 'debit of profit  and loss', 'optionC' => 'debit of the debtors personal account','optionD' => 'credit of profit and loss account', 'answer' => 'a', 'examtype' => 'JAMB', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('mathematics')->insert(['question' => 'The bad  account is closed','optionA' => 'capital account', 'optionB' => 'debit of profit  ', 'optionC' => 'debit of account','optionD' => 'credit of profit account', 'answer' => 'b', 'examtype' => 'JAMB', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('mathematics')->insert(['question' => 'The bad debt account o','optionA' => 'credit', 'optionB' => 'debitband loss', 'optionC' => ' account','optionD' => 'credit of profit and loss account', 'answer' => 'c', 'examtype' => 'WAEC', 'examyear' => '2008', 'authorised' => 'Admin',]);
        DB::table('mathematics')->insert(['question' => 'Bad debt account','optionA' => 'credit of capital account', 'optionB' => 'debit of profit  and loss', 'optionC' => 'debit of the debtors personal account','optionD' => 'credit of profit and loss account', 'answer' => 'd', 'examtype' => 'WAEC', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('mathematics')->insert(['question' => 'Bad account','optionA' => 'credit', 'optionB' => 'loss', 'optionC' => 'debit o account','optionD' => 'credit of profit ', 'answer' => 'a', 'examtype' => 'JAMB', 'examyear' => '2008', 'authorised' => 'Admin',]);

        DB::table('physics')->insert(['question' => 'The bad debt account is closed by transferring the balance to','optionA' => 'credit of capital account', 'optionB' => 'debit of profit  and loss', 'optionC' => 'debit of the debtors personal account','optionD' => 'credit of profit and loss account', 'answer' => 'a', 'examtype' => 'JAMB', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('physics')->insert(['question' => 'The bad  account is closed','optionA' => 'capital account', 'optionB' => 'debit of profit  ', 'optionC' => 'debit of account','optionD' => 'credit of profit account', 'answer' => 'b', 'examtype' => 'JAMB', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('physics')->insert(['question' => 'The bad debt account o','optionA' => 'credit', 'optionB' => 'debitband loss', 'optionC' => ' account','optionD' => 'credit of profit and loss account', 'answer' => 'c', 'examtype' => 'WAEC', 'examyear' => '2008', 'authorised' => 'Admin',]);
        DB::table('physics')->insert(['question' => 'Bad debt account','optionA' => 'credit of capital account', 'optionB' => 'debit of profit  and loss', 'optionC' => 'debit of the debtors personal account','optionD' => 'credit of profit and loss account', 'answer' => 'd', 'examtype' => 'WAEC', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('physics')->insert(['question' => 'Bad account','optionA' => 'credit', 'optionB' => 'loss', 'optionC' => 'debit o account','optionD' => 'credit of profit ', 'answer' => 'a', 'examtype' => 'JAMB', 'examyear' => '2008', 'authorised' => 'Admin',]);

        DB::table('chemistry')->insert(['question' => 'The bad debt account is closed by transferring the balance to','optionA' => 'credit of capital account', 'optionB' => 'debit of profit  and loss', 'optionC' => 'debit of the debtors personal account','optionD' => 'credit of profit and loss account', 'answer' => 'a', 'examtype' => 'JAMB', 'examyear' => '2006', 'authorised' => 'Admin',]);
        DB::table('chemistry')->insert(['questi
Download .txt
gitextract_nct3mn5x/

├── .editorconfig
├── .gitattributes
├── .gitignore
├── .styleci.yml
├── README1.md
├── app/
│   ├── Console/
│   │   └── Kernel.php
│   ├── Exceptions/
│   │   └── Handler.php
│   ├── Http/
│   │   ├── Controllers/
│   │   │   ├── Admin/
│   │   │   │   ├── AccessTokenController.php
│   │   │   │   ├── Auth/
│   │   │   │   │   ├── AuthController.php
│   │   │   │   │   └── ForgotPasswordController.php
│   │   │   │   ├── BillingController.php
│   │   │   │   └── DashboardController.php
│   │   │   ├── Api/
│   │   │   │   ├── v1/
│   │   │   │   │   ├── MetricsController.php
│   │   │   │   │   └── QuestionController.php
│   │   │   │   └── v2/
│   │   │   │       ├── MetricsController.php
│   │   │   │       └── QuestionController.php
│   │   │   └── Controller.php
│   │   ├── Kernel.php
│   │   └── Middleware/
│   │       ├── Authenticate.php
│   │       ├── EncryptCookies.php
│   │       ├── PreventRequestsDuringMaintenance.php
│   │       ├── RedirectIfAuthenticated.php
│   │       ├── TrimStrings.php
│   │       ├── TrustHosts.php
│   │       ├── TrustProxies.php
│   │       └── VerifyCsrfToken.php
│   ├── Models/
│   │   ├── AccessToken.php
│   │   ├── AccessTokenCall.php
│   │   ├── ApiCallIpAddress.php
│   │   ├── PasswordReset.php
│   │   ├── Payment.php
│   │   ├── PricePlan.php
│   │   ├── QBoardLog.php
│   │   ├── QLoader.php
│   │   ├── ReportQuestion.php
│   │   ├── Subscription.php
│   │   └── User.php
│   ├── Providers/
│   │   ├── AppServiceProvider.php
│   │   ├── AuthServiceProvider.php
│   │   ├── BroadcastServiceProvider.php
│   │   ├── EventServiceProvider.php
│   │   └── RouteServiceProvider.php
│   └── functions.php
├── artisan
├── bootstrap/
│   ├── app.php
│   └── cache/
│       └── .gitignore
├── composer.json
├── config/
│   ├── app.php
│   ├── auth.php
│   ├── broadcasting.php
│   ├── cache.php
│   ├── cors.php
│   ├── database.php
│   ├── filesystems.php
│   ├── hashing.php
│   ├── location.php
│   ├── logging.php
│   ├── mail.php
│   ├── queue.php
│   ├── services.php
│   ├── session.php
│   └── view.php
├── database/
│   ├── .gitignore
│   ├── factories/
│   │   └── UserFactory.php
│   ├── migrations/
│   │   ├── 2014_10_12_000000_create_users_table.php
│   │   ├── 2014_10_12_100000_create_password_resets_table.php
│   │   ├── 2018_08_13_124632_create_questions_tables.php
│   │   ├── 2018_08_28_195542_create_report_question_tables.php
│   │   ├── 2018_11_10_105744_create_table_ipaddres_2_question.php
│   │   ├── 2019_08_19_000000_create_failed_jobs_table.php
│   │   ├── 2021_07_10_192953_create_access_token_table.php
│   │   ├── 2021_07_13_194154_create_table_access_token_calls.php
│   │   ├── 2021_07_17_152326_create_table_price_plans.php
│   │   ├── 2021_08_03_124437_create_payment_table.php
│   │   └── 2022_10_22_110248_create_qboard_log_table.php
│   └── seeders/
│       ├── DatabaseSeeder.php
│       ├── LoadDummyQuestions.php
│       └── ReportQuestionType.php
├── package.json
├── phpunit.xml
├── public/
│   ├── .htaccess
│   ├── admin/
│   │   ├── css/
│   │   │   ├── animate.css
│   │   │   ├── bootstrap.css
│   │   │   ├── plugins/
│   │   │   │   ├── blueimp/
│   │   │   │   │   └── css/
│   │   │   │   │       ├── blueimp-gallery-indicator.css
│   │   │   │   │       ├── blueimp-gallery-video.css
│   │   │   │   │       ├── blueimp-gallery.css
│   │   │   │   │       └── demo.css
│   │   │   │   ├── bootstrap-rtl/
│   │   │   │   │   └── bootstrap-rtl.css
│   │   │   │   ├── chosen/
│   │   │   │   │   └── chosen.css
│   │   │   │   ├── codemirror/
│   │   │   │   │   ├── ambiance.css
│   │   │   │   │   └── codemirror.css
│   │   │   │   ├── dataTables/
│   │   │   │   │   ├── dataTables.bootstrap.css
│   │   │   │   │   └── dataTables.responsive.css
│   │   │   │   ├── datapicker/
│   │   │   │   │   └── datepicker3.css
│   │   │   │   ├── dropzone/
│   │   │   │   │   ├── basic.css
│   │   │   │   │   └── dropzone.css
│   │   │   │   ├── fullcalendar/
│   │   │   │   │   ├── fullcalendar.css
│   │   │   │   │   └── fullcalendar.print.css
│   │   │   │   ├── iCheck/
│   │   │   │   │   └── custom.css
│   │   │   │   ├── ionRangeSlider/
│   │   │   │   │   ├── ion.rangeSlider.css
│   │   │   │   │   ├── ion.rangeSlider.skinFlat.css
│   │   │   │   │   ├── ion.rangeSlider.skinNice.css
│   │   │   │   │   └── ion.rangeSlider.skinSimple.css
│   │   │   │   ├── jqGrid/
│   │   │   │   │   └── ui.jqgrid.css
│   │   │   │   ├── jsTree/
│   │   │   │   │   └── style.css
│   │   │   │   ├── nouslider/
│   │   │   │   │   └── jquery.nouislider.css
│   │   │   │   ├── social-buttons/
│   │   │   │   │   └── social-buttons.css
│   │   │   │   ├── steps/
│   │   │   │   │   └── jquery.steps.css
│   │   │   │   ├── summernote/
│   │   │   │   │   ├── summernote-bs3.css
│   │   │   │   │   └── summernote.css
│   │   │   │   └── switchery/
│   │   │   │       └── switchery.css
│   │   │   └── style.css
│   │   ├── email_templates/
│   │   │   ├── action.html
│   │   │   ├── alert.html
│   │   │   ├── billing.html
│   │   │   └── styles.css
│   │   ├── font-awesome/
│   │   │   ├── css/
│   │   │   │   └── font-awesome.css
│   │   │   ├── fonts/
│   │   │   │   └── FontAwesome.otf
│   │   │   ├── less/
│   │   │   │   ├── animated.less
│   │   │   │   ├── bordered-pulled.less
│   │   │   │   ├── core.less
│   │   │   │   ├── fixed-width.less
│   │   │   │   ├── font-awesome.less
│   │   │   │   ├── icons.less
│   │   │   │   ├── larger.less
│   │   │   │   ├── list.less
│   │   │   │   ├── mixins.less
│   │   │   │   ├── path.less
│   │   │   │   ├── rotated-flipped.less
│   │   │   │   ├── stacked.less
│   │   │   │   └── variables.less
│   │   │   └── scss/
│   │   │       ├── _animated.scss
│   │   │       ├── _bordered-pulled.scss
│   │   │       ├── _core.scss
│   │   │       ├── _fixed-width.scss
│   │   │       ├── _icons.scss
│   │   │       ├── _larger.scss
│   │   │       ├── _list.scss
│   │   │       ├── _mixins.scss
│   │   │       ├── _path.scss
│   │   │       ├── _rotated-flipped.scss
│   │   │       ├── _stacked.scss
│   │   │       ├── _variables.scss
│   │   │       └── font-awesome.scss
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   ├── demo/
│   │   │   │   ├── chartjs-demo.js
│   │   │   │   ├── dashboard-demo.js
│   │   │   │   ├── flot-demo.js
│   │   │   │   ├── flot-demo2.js
│   │   │   │   ├── morris-demo.js
│   │   │   │   ├── peity-demo.js
│   │   │   │   ├── rickshaw-demo.js
│   │   │   │   └── sparkline-demo.js
│   │   │   ├── inspinia.js
│   │   │   ├── jquery-2.1.1.js
│   │   │   └── plugins/
│   │   │       ├── chosen/
│   │   │       │   └── chosen.jquery.js
│   │   │       ├── codemirror/
│   │   │       │   ├── codemirror.js
│   │   │       │   └── mode/
│   │   │       │       ├── apl/
│   │   │       │       │   ├── apl.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── asterisk/
│   │   │       │       │   ├── asterisk.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── clike/
│   │   │       │       │   ├── clike.js
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── scala.html
│   │   │       │       ├── clojure/
│   │   │       │       │   ├── clojure.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── cobol/
│   │   │       │       │   ├── cobol.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── coffeescript/
│   │   │       │       │   ├── coffeescript.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── commonlisp/
│   │   │       │       │   ├── commonlisp.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── css/
│   │   │       │       │   ├── css.js
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── less.html
│   │   │       │       │   ├── less_test.js
│   │   │       │       │   ├── scss.html
│   │   │       │       │   ├── scss_test.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── cypher/
│   │   │       │       │   ├── cypher.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── d/
│   │   │       │       │   ├── d.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── diff/
│   │   │       │       │   ├── diff.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── django/
│   │   │       │       │   ├── django.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── dtd/
│   │   │       │       │   ├── dtd.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── dylan/
│   │   │       │       │   ├── dylan.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── ecl/
│   │   │       │       │   ├── ecl.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── eiffel/
│   │   │       │       │   ├── eiffel.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── erlang/
│   │   │       │       │   ├── erlang.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── fortran/
│   │   │       │       │   ├── fortran.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── gas/
│   │   │       │       │   ├── gas.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── gfm/
│   │   │       │       │   ├── gfm.js
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── test.js
│   │   │       │       ├── gherkin/
│   │   │       │       │   ├── gherkin.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── go/
│   │   │       │       │   ├── go.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── groovy/
│   │   │       │       │   ├── groovy.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── haml/
│   │   │       │       │   ├── haml.js
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── test.js
│   │   │       │       ├── haskell/
│   │   │       │       │   ├── haskell.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── haxe/
│   │   │       │       │   ├── haxe.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── htmlembedded/
│   │   │       │       │   ├── htmlembedded.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── htmlmixed/
│   │   │       │       │   ├── htmlmixed.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── http/
│   │   │       │       │   ├── http.js
│   │   │       │       │   └── index.html
│   │   │       │       ├── index.html
│   │   │       │       ├── jade/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── jade.js
│   │   │       │       ├── javascript/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── javascript.js
│   │   │       │       │   ├── json-ld.html
│   │   │       │       │   ├── test.js
│   │   │       │       │   └── typescript.html
│   │   │       │       ├── jinja2/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── jinja2.js
│   │   │       │       ├── julia/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── julia.js
│   │   │       │       ├── kotlin/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── kotlin.js
│   │   │       │       ├── livescript/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── livescript.js
│   │   │       │       ├── lua/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── lua.js
│   │   │       │       ├── markdown/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── markdown.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── meta.js
│   │   │       │       ├── mirc/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── mirc.js
│   │   │       │       ├── mllike/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── mllike.js
│   │   │       │       ├── modelica/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── modelica.js
│   │   │       │       ├── nginx/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── nginx.js
│   │   │       │       ├── ntriples/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── ntriples.js
│   │   │       │       ├── octave/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── octave.js
│   │   │       │       ├── pascal/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── pascal.js
│   │   │       │       ├── pegjs/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── pegjs.js
│   │   │       │       ├── perl/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── perl.js
│   │   │       │       ├── php/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── php.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── pig/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── pig.js
│   │   │       │       ├── properties/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── properties.js
│   │   │       │       ├── puppet/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── puppet.js
│   │   │       │       ├── python/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── python.js
│   │   │       │       ├── q/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── q.js
│   │   │       │       ├── r/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── r.js
│   │   │       │       ├── rpm/
│   │   │       │       │   ├── changes/
│   │   │       │       │   │   └── index.html
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── rpm.js
│   │   │       │       ├── rst/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── rst.js
│   │   │       │       ├── ruby/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── ruby.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── rust/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── rust.js
│   │   │       │       ├── sass/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── sass.js
│   │   │       │       ├── scheme/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── scheme.js
│   │   │       │       ├── shell/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── shell.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── sieve/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── sieve.js
│   │   │       │       ├── slim/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── slim.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── smalltalk/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── smalltalk.js
│   │   │       │       ├── smarty/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── smarty.js
│   │   │       │       ├── smartymixed/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── smartymixed.js
│   │   │       │       ├── solr/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── solr.js
│   │   │       │       ├── sparql/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── sparql.js
│   │   │       │       ├── sql/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── sql.js
│   │   │       │       ├── stex/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── stex.js
│   │   │       │       │   └── test.js
│   │   │       │       ├── tcl/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── tcl.js
│   │   │       │       ├── textile/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── test.js
│   │   │       │       │   └── textile.js
│   │   │       │       ├── tiddlywiki/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── tiddlywiki.css
│   │   │       │       │   └── tiddlywiki.js
│   │   │       │       ├── tiki/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── tiki.css
│   │   │       │       │   └── tiki.js
│   │   │       │       ├── toml/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── toml.js
│   │   │       │       ├── tornado/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── tornado.js
│   │   │       │       ├── turtle/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── turtle.js
│   │   │       │       ├── vb/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── vb.js
│   │   │       │       ├── vbscript/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── vbscript.js
│   │   │       │       ├── velocity/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── velocity.js
│   │   │       │       ├── verilog/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── test.js
│   │   │       │       │   └── verilog.js
│   │   │       │       ├── xml/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── test.js
│   │   │       │       │   └── xml.js
│   │   │       │       ├── xquery/
│   │   │       │       │   ├── index.html
│   │   │       │       │   ├── test.js
│   │   │       │       │   └── xquery.js
│   │   │       │       ├── yaml/
│   │   │       │       │   ├── index.html
│   │   │       │       │   └── yaml.js
│   │   │       │       └── z80/
│   │   │       │           ├── index.html
│   │   │       │           └── z80.js
│   │   │       ├── dataTables/
│   │   │       │   ├── dataTables.bootstrap.js
│   │   │       │   ├── dataTables.responsive.js
│   │   │       │   ├── jquery.dataTables.js
│   │   │       │   └── swf/
│   │   │       │       ├── copy_csv_xls.swf
│   │   │       │       └── copy_csv_xls_pdf.swf
│   │   │       ├── datapicker/
│   │   │       │   └── bootstrap-datepicker.js
│   │   │       ├── dropzone/
│   │   │       │   └── dropzone.js
│   │   │       ├── easypiechart/
│   │   │       │   ├── easypiechart.js
│   │   │       │   └── jquery.easypiechart.js
│   │   │       ├── flot/
│   │   │       │   ├── curvedLines.js
│   │   │       │   ├── jquery.flot.js
│   │   │       │   ├── jquery.flot.pie.js
│   │   │       │   ├── jquery.flot.resize.js
│   │   │       │   ├── jquery.flot.spline.js
│   │   │       │   ├── jquery.flot.symbol.js
│   │   │       │   └── jquery.flot.time.js
│   │   │       ├── gritter/
│   │   │       │   └── jquery.gritter.css
│   │   │       ├── jeditable/
│   │   │       │   └── jquery.jeditable.js
│   │   │       ├── jqGrid/
│   │   │       │   └── i18n/
│   │   │       │       ├── grid.locale-ar.js
│   │   │       │       ├── grid.locale-bg.js
│   │   │       │       ├── grid.locale-bg1251.js
│   │   │       │       ├── grid.locale-cat.js
│   │   │       │       ├── grid.locale-cn.js
│   │   │       │       ├── grid.locale-cs.js
│   │   │       │       ├── grid.locale-da.js
│   │   │       │       ├── grid.locale-de.js
│   │   │       │       ├── grid.locale-dk.js
│   │   │       │       ├── grid.locale-el.js
│   │   │       │       ├── grid.locale-en.js
│   │   │       │       ├── grid.locale-es.js
│   │   │       │       ├── grid.locale-fa.js
│   │   │       │       ├── grid.locale-fi.js
│   │   │       │       ├── grid.locale-fr.js
│   │   │       │       ├── grid.locale-gl.js
│   │   │       │       ├── grid.locale-he.js
│   │   │       │       ├── grid.locale-hr.js
│   │   │       │       ├── grid.locale-hr1250.js
│   │   │       │       ├── grid.locale-hu.js
│   │   │       │       ├── grid.locale-id.js
│   │   │       │       ├── grid.locale-is.js
│   │   │       │       ├── grid.locale-it.js
│   │   │       │       ├── grid.locale-ja.js
│   │   │       │       ├── grid.locale-kr.js
│   │   │       │       ├── grid.locale-lt.js
│   │   │       │       ├── grid.locale-mne.js
│   │   │       │       ├── grid.locale-nl.js
│   │   │       │       ├── grid.locale-no.js
│   │   │       │       ├── grid.locale-pl.js
│   │   │       │       ├── grid.locale-pt-br.js
│   │   │       │       ├── grid.locale-pt.js
│   │   │       │       ├── grid.locale-ro.js
│   │   │       │       ├── grid.locale-ru.js
│   │   │       │       ├── grid.locale-sk.js
│   │   │       │       ├── grid.locale-sr-latin.js
│   │   │       │       ├── grid.locale-sr.js
│   │   │       │       ├── grid.locale-sv.js
│   │   │       │       ├── grid.locale-th.js
│   │   │       │       ├── grid.locale-tr.js
│   │   │       │       ├── grid.locale-tw.js
│   │   │       │       ├── grid.locale-ua.js
│   │   │       │       └── grid.locale-vi.js
│   │   │       ├── jquery-ui/
│   │   │       │   ├── jquery-ui.css
│   │   │       │   └── jquery-ui.js
│   │   │       ├── jsKnob/
│   │   │       │   └── jquery.knob.js
│   │   │       ├── justified-gallery/
│   │   │       │   ├── README.md
│   │   │       │   ├── jquery.justifiedgallery.css
│   │   │       │   └── jquery.justifiedgallery.js
│   │   │       ├── jvectormap/
│   │   │       │   └── jquery-jvectormap-world-mill-en.js
│   │   │       ├── metisMenu/
│   │   │       │   └── jquery.metisMenu.js
│   │   │       ├── morris/
│   │   │       │   └── morris.js
│   │   │       ├── nestable/
│   │   │       │   └── jquery.nestable.js
│   │   │       ├── rickshaw/
│   │   │       │   └── vendor/
│   │   │       │       └── d3.v3.js
│   │   │       ├── slimscroll/
│   │   │       │   └── jquery.slimscroll.js
│   │   │       ├── switchery/
│   │   │       │   └── switchery.js
│   │   │       └── video/
│   │   │           └── responsible-video.js
│   │   └── scss/
│   │       ├── badgets_labels.scss
│   │       ├── base.scss
│   │       ├── buttons.scss
│   │       ├── custom.scss
│   │       ├── elements.scss
│   │       ├── media.scss
│   │       ├── mixins.scss
│   │       ├── navigation.scss
│   │       ├── pages.scss
│   │       ├── rtl.scss
│   │       ├── sidebar.scss
│   │       ├── skins.scss
│   │       ├── style.scss
│   │       ├── theme-config.scss
│   │       ├── top_navigation.scss
│   │       ├── typography.scss
│   │       └── variables.scss
│   ├── index.php
│   ├── landing/
│   │   ├── css/
│   │   │   ├── aos.css
│   │   │   ├── bootstrap/
│   │   │   │   ├── bootstrap-grid.css
│   │   │   │   ├── bootstrap-reboot.css
│   │   │   │   └── bootstrap.css
│   │   │   ├── bootstrap-datepicker.css
│   │   │   ├── jquery-ui.css
│   │   │   ├── magnific-popup.css
│   │   │   ├── mediaelementplayer.css
│   │   │   └── style.css
│   │   ├── fonts/
│   │   │   ├── flaticon/
│   │   │   │   ├── backup.txt
│   │   │   │   └── font/
│   │   │   │       ├── _flaticon.scss
│   │   │   │       ├── flaticon.css
│   │   │   │       └── flaticon.html
│   │   │   └── icomoon/
│   │   │       ├── Read Me.txt
│   │   │       ├── demo-files/
│   │   │       │   ├── demo.css
│   │   │       │   └── demo.js
│   │   │       ├── demo.html
│   │   │       ├── selection.json
│   │   │       └── style.css
│   │   ├── js/
│   │   │   ├── aos.js
│   │   │   ├── jquery-ui.js
│   │   │   ├── jquery.easing.1.3.js
│   │   │   ├── jquery.sticky.js
│   │   │   ├── main.js
│   │   │   └── typed.js
│   │   └── scss/
│   │       ├── _site-base.scss
│   │       ├── _site-blocks.scss
│   │       ├── _site-navbar.scss
│   │       ├── bootstrap/
│   │       │   ├── _alert.scss
│   │       │   ├── _badge.scss
│   │       │   ├── _breadcrumb.scss
│   │       │   ├── _button-group.scss
│   │       │   ├── _buttons.scss
│   │       │   ├── _card.scss
│   │       │   ├── _carousel.scss
│   │       │   ├── _close.scss
│   │       │   ├── _code.scss
│   │       │   ├── _custom-forms.scss
│   │       │   ├── _dropdown.scss
│   │       │   ├── _forms.scss
│   │       │   ├── _functions.scss
│   │       │   ├── _grid.scss
│   │       │   ├── _images.scss
│   │       │   ├── _input-group.scss
│   │       │   ├── _jumbotron.scss
│   │       │   ├── _list-group.scss
│   │       │   ├── _media.scss
│   │       │   ├── _mixins.scss
│   │       │   ├── _modal.scss
│   │       │   ├── _nav.scss
│   │       │   ├── _navbar.scss
│   │       │   ├── _pagination.scss
│   │       │   ├── _popover.scss
│   │       │   ├── _print.scss
│   │       │   ├── _progress.scss
│   │       │   ├── _reboot.scss
│   │       │   ├── _root.scss
│   │       │   ├── _tables.scss
│   │       │   ├── _tooltip.scss
│   │       │   ├── _transitions.scss
│   │       │   ├── _type.scss
│   │       │   ├── _utilities.scss
│   │       │   ├── _variables.scss
│   │       │   ├── bootstrap-grid.scss
│   │       │   ├── bootstrap-reboot.scss
│   │       │   ├── bootstrap.scss
│   │       │   ├── mixins/
│   │       │   │   ├── _alert.scss
│   │       │   │   ├── _background-variant.scss
│   │       │   │   ├── _badge.scss
│   │       │   │   ├── _border-radius.scss
│   │       │   │   ├── _box-shadow.scss
│   │       │   │   ├── _breakpoints.scss
│   │       │   │   ├── _buttons.scss
│   │       │   │   ├── _caret.scss
│   │       │   │   ├── _clearfix.scss
│   │       │   │   ├── _float.scss
│   │       │   │   ├── _forms.scss
│   │       │   │   ├── _gradients.scss
│   │       │   │   ├── _grid-framework.scss
│   │       │   │   ├── _grid.scss
│   │       │   │   ├── _hover.scss
│   │       │   │   ├── _image.scss
│   │       │   │   ├── _list-group.scss
│   │       │   │   ├── _lists.scss
│   │       │   │   ├── _nav-divider.scss
│   │       │   │   ├── _pagination.scss
│   │       │   │   ├── _reset-text.scss
│   │       │   │   ├── _resize.scss
│   │       │   │   ├── _screen-reader.scss
│   │       │   │   ├── _size.scss
│   │       │   │   ├── _table-row.scss
│   │       │   │   ├── _text-emphasis.scss
│   │       │   │   ├── _text-hide.scss
│   │       │   │   ├── _text-truncate.scss
│   │       │   │   ├── _transition.scss
│   │       │   │   └── _visibility.scss
│   │       │   └── utilities/
│   │       │       ├── _align.scss
│   │       │       ├── _background.scss
│   │       │       ├── _borders.scss
│   │       │       ├── _clearfix.scss
│   │       │       ├── _display.scss
│   │       │       ├── _embed.scss
│   │       │       ├── _flex.scss
│   │       │       ├── _float.scss
│   │       │       ├── _position.scss
│   │       │       ├── _screenreaders.scss
│   │       │       ├── _shadows.scss
│   │       │       ├── _sizing.scss
│   │       │       ├── _spacing.scss
│   │       │       ├── _text.scss
│   │       │       └── _visibility.scss
│   │       └── style.scss
│   ├── robots.txt
│   └── web.config
├── readme.md
├── resources/
│   ├── css/
│   │   └── app.css
│   ├── js/
│   │   ├── app.js
│   │   └── bootstrap.js
│   ├── lang/
│   │   └── en/
│   │       ├── auth.php
│   │       ├── pagination.php
│   │       ├── passwords.php
│   │       └── validation.php
│   └── views/
│       ├── admin/
│       │   ├── access_token.blade.php
│       │   ├── dashboard.blade.php
│       │   ├── layouts/
│       │   │   ├── base.blade.php
│       │   │   ├── footer.blade.php
│       │   │   ├── header.blade.php
│       │   │   └── partials/
│       │   │       ├── _footer_note.blade.php
│       │   │       ├── _sidebar.blade.php
│       │   │       └── _top_toolbar.blade.php
│       │   └── subscription/
│       │       └── billing.blade.php
│       ├── landing/
│       │   ├── auth/
│       │   │   ├── forget_password.blade.php
│       │   │   ├── forget_password_link.blade.php
│       │   │   └── signup.blade.php
│       │   ├── emails/
│       │   │   └── forget_password.blade.php
│       │   ├── index.blade.php
│       │   └── layouts/
│       │       ├── base.blade.php
│       │       ├── footer.blade.php
│       │       ├── header.blade.php
│       │       └── partials/
│       │           ├── _footer_note.blade.php
│       │           ├── _header_note.blade.php
│       │           └── _header_note2.blade.php
│       └── welcome.blade.php
├── routes/
│   ├── api.php
│   ├── channels.php
│   ├── console.php
│   └── web.php
├── server.php
├── storage/
│   ├── app/
│   │   └── .gitignore
│   ├── backups/
│   │   ├── 2020-07-02.sql
│   │   ├── 2020-07-07.sql
│   │   ├── 2020-07-15.sql
│   │   ├── 2020-07-22.sql
│   │   ├── 2020-07-28.sql
│   │   ├── 2020-08-16.sql
│   │   └── 2020-08-20.sql
│   ├── framework/
│   │   ├── .gitignore
│   │   ├── cache/
│   │   │   └── .gitignore
│   │   ├── sessions/
│   │   │   └── .gitignore
│   │   ├── testing/
│   │   │   └── .gitignore
│   │   └── views/
│   │       └── .gitignore
│   └── logs/
│       └── .gitignore
├── tests/
│   ├── CreatesApplication.php
│   ├── Feature/
│   │   └── ExampleTest.php
│   ├── TestCase.php
│   └── Unit/
│       └── ExampleTest.php
└── webpack.mix.js
Download .txt
SYMBOL INDEX (1956 symbols across 180 files)

FILE: app/Console/Kernel.php
  class Kernel (line 8) | class Kernel extends ConsoleKernel
    method schedule (line 25) | protected function schedule(Schedule $schedule)
    method commands (line 35) | protected function commands()

FILE: app/Exceptions/Handler.php
  class Handler (line 8) | class Handler extends ExceptionHandler
    method register (line 35) | public function register()

FILE: app/Http/Controllers/Admin/AccessTokenController.php
  class AccessTokenController (line 9) | class AccessTokenController extends Controller
    method index (line 11) | public function index (){
    method generateNewToken (line 21) | public function generateNewToken (){

FILE: app/Http/Controllers/Admin/Auth/AuthController.php
  class AuthController (line 16) | class AuthController extends Controller
    method signup (line 18) | public function signup()
    method handleSignup (line 23) | public function handleSignup(Request $request)
    method login (line 87) | public function login()
    method handleLogin (line 99) | public function handleLogin(Request $request)
    method handleLogout (line 125) | public function handleLogout ()

FILE: app/Http/Controllers/Admin/Auth/ForgotPasswordController.php
  class ForgotPasswordController (line 13) | class ForgotPasswordController extends Controller
    method showForgetPasswordForm (line 16) | public function showForgetPasswordForm()
    method submitForgetPasswordForm (line 21) | public function submitForgetPasswordForm(Request $request)
    method showResetPasswordForm (line 50) | public function showResetPasswordForm($token) {
    method submitResetPasswordForm (line 54) | public function submitResetPasswordForm(Request $request)

FILE: app/Http/Controllers/Admin/BillingController.php
  class BillingController (line 14) | class BillingController extends Controller
    method index (line 16) | public function index (){
    method paystackCallBack (line 21) | public function paystackCallBack(Request $request)
    method verifyPaystackTrans (line 105) | private function verifyPaystackTrans($transReference, $userId)

FILE: app/Http/Controllers/Admin/DashboardController.php
  class DashboardController (line 10) | class DashboardController extends Controller
    method index (line 12) | public function index (){
    method questionRequest (line 20) | private function questionRequest(){
    method topMetrics (line 53) | private function topMetrics(){

FILE: app/Http/Controllers/Api/v1/MetricsController.php
  class MetricsController (line 11) | class MetricsController extends Controller
    method subjectsApiCallCounts (line 13) | public function subjectsApiCallCounts(){
    method availableSubjects (line 41) | public function availableSubjects(){
    method subjectAvailableForYear (line 50) | public function subjectAvailableForYear($year)
    method yearAvailableForSubject (line 100) | public function yearAvailableForSubject($subject)
    method subjectQuestions (line 137) | public function subjectQuestions($subject)

FILE: app/Http/Controllers/Api/v1/QuestionController.php
  class QuestionController (line 12) | class QuestionController extends Controller
    method index (line 15) | public function index()
    method show (line 81) | public function show($recordLimit)
    method questionById (line 155) | public function questionById($questionId){
    method reportQuestion (line 215) | public function reportQuestion(Request $request){
    method allSubjects (line 260) | public function allSubjects(){
    method manyQuestions (line 270) | public function manyQuestions(){
    method topQuestion (line 339) | public function topQuestion(){
    method depreciateApiV1 (line 372) | private function depreciateApiV1 (){

FILE: app/Http/Controllers/Api/v2/MetricsController.php
  class MetricsController (line 11) | class MetricsController extends Controller
    method subjectsApiCallCounts (line 13) | public function subjectsApiCallCounts(){
    method availableSubjects (line 41) | public function availableSubjects(){
    method subjectAvailableForYear (line 50) | public function subjectAvailableForYear($year)
    method yearAvailableForSubject (line 100) | public function yearAvailableForSubject($subject)
    method subjectQuestions (line 137) | public function subjectQuestions($subject)

FILE: app/Http/Controllers/Api/v2/QuestionController.php
  class QuestionController (line 17) | class QuestionController extends Controller
    method index (line 20) | public function index()
    method show (line 113) | public function show($recordLimit)
    method questionById (line 273) | public function questionById($questionId){
    method reportQuestion (line 336) | public function reportQuestion(Request $request){
    method allSubjects (line 381) | public function allSubjects(){
    method comprehensionYears (line 390) | public function comprehensionYears(){
    method manyQuestions (line 436) | public function manyQuestions(){
    method hugeQuestions (line 511) | public function hugeQuestions($questionLimit){
    method vendorHugeQuestions (line 632) | public function vendorHugeQuestions($questionLimit){
    method groupSubjectsQuestions (line 749) | public function groupSubjectsQuestions(Request $request)
    method topQuestion (line 810) | public function topQuestion(){
    method processRequest (line 843) | private function processRequest($questions = 40){
    method tokenQuestions (line 881) | private function tokenQuestions($questionNumber,$subject, $userId, $to...
    method saveQuestionsRequestByMonth (line 900) | private function saveQuestionsRequestByMonth ($questionNumber,$subject){
    method getBySubject (line 920) | private function getBySubject($subject, $recordLimit, $processReq)

FILE: app/Http/Controllers/Controller.php
  class Controller (line 10) | class Controller extends BaseController

FILE: app/Http/Kernel.php
  class Kernel (line 7) | class Kernel extends HttpKernel

FILE: app/Http/Middleware/Authenticate.php
  class Authenticate (line 7) | class Authenticate extends Middleware
    method redirectTo (line 15) | protected function redirectTo($request)

FILE: app/Http/Middleware/EncryptCookies.php
  class EncryptCookies (line 7) | class EncryptCookies extends Middleware

FILE: app/Http/Middleware/PreventRequestsDuringMaintenance.php
  class PreventRequestsDuringMaintenance (line 7) | class PreventRequestsDuringMaintenance extends Middleware

FILE: app/Http/Middleware/RedirectIfAuthenticated.php
  class RedirectIfAuthenticated (line 10) | class RedirectIfAuthenticated
    method handle (line 20) | public function handle(Request $request, Closure $next, ...$guards)

FILE: app/Http/Middleware/TrimStrings.php
  class TrimStrings (line 7) | class TrimStrings extends Middleware

FILE: app/Http/Middleware/TrustHosts.php
  class TrustHosts (line 7) | class TrustHosts extends Middleware
    method hosts (line 14) | public function hosts()

FILE: app/Http/Middleware/TrustProxies.php
  class TrustProxies (line 8) | class TrustProxies extends Middleware

FILE: app/Http/Middleware/VerifyCsrfToken.php
  class VerifyCsrfToken (line 7) | class VerifyCsrfToken extends Middleware

FILE: app/Models/AccessToken.php
  class AccessToken (line 8) | class AccessToken extends Model

FILE: app/Models/AccessTokenCall.php
  class AccessTokenCall (line 8) | class AccessTokenCall extends Model

FILE: app/Models/ApiCallIpAddress.php
  class ApiCallIpAddress (line 7) | class ApiCallIpAddress extends Model

FILE: app/Models/PasswordReset.php
  class PasswordReset (line 8) | class PasswordReset extends Model

FILE: app/Models/Payment.php
  class Payment (line 8) | class Payment extends Model

FILE: app/Models/PricePlan.php
  class PricePlan (line 8) | class PricePlan extends Model

FILE: app/Models/QBoardLog.php
  class QBoardLog (line 8) | class QBoardLog extends Model

FILE: app/Models/QLoader.php
  class QLoader (line 7) | class QLoader extends Model
    method setTable (line 14) | public function setTable($table)
    method FormatQuestionData (line 19) | public static function FormatQuestionData($result, $subject)
    method FormatQuestionsData (line 49) | public static function FormatQuestionsData($results, $subject,  $withC...
    method FormatTopQuestionsData (line 113) | public static function FormatTopQuestionsData($results)

FILE: app/Models/ReportQuestion.php
  class ReportQuestion (line 7) | class ReportQuestion extends Model

FILE: app/Models/Subscription.php
  class Subscription (line 8) | class Subscription extends Model

FILE: app/Models/User.php
  class User (line 10) | class User extends Authenticatable
    method pricePlan (line 44) | public function pricePlan()
    method subscription (line 49) | public function subscription()

FILE: app/Providers/AppServiceProvider.php
  class AppServiceProvider (line 7) | class AppServiceProvider extends ServiceProvider
    method register (line 14) | public function register()
    method boot (line 24) | public function boot()

FILE: app/Providers/AuthServiceProvider.php
  class AuthServiceProvider (line 8) | class AuthServiceProvider extends ServiceProvider
    method boot (line 24) | public function boot()

FILE: app/Providers/BroadcastServiceProvider.php
  class BroadcastServiceProvider (line 8) | class BroadcastServiceProvider extends ServiceProvider
    method boot (line 15) | public function boot()

FILE: app/Providers/EventServiceProvider.php
  class EventServiceProvider (line 10) | class EventServiceProvider extends ServiceProvider
    method boot (line 28) | public function boot()

FILE: app/Providers/RouteServiceProvider.php
  class RouteServiceProvider (line 11) | class RouteServiceProvider extends ServiceProvider
    method boot (line 36) | public function boot()
    method configureRateLimiting (line 57) | protected function configureRateLimiting()

FILE: app/functions.php
  function subjectArray (line 6) | function subjectArray (){
  function examTypeArray (line 10) | function examTypeArray(){
  function querySampleArray1 (line 14) | function querySampleArray1(){
  function querySampleArray2 (line 21) | function querySampleArray2(){
  function randomSubjects (line 28) | function randomSubjects(){
  function storeQuestionRequestByIP (line 33) | function storeQuestionRequestByIP($subject){
  function formatNumber (line 65) | function formatNumber($num)
  function payStackVerifyTransaction (line 70) | function payStackVerifyTransaction ($transactionReference) {

FILE: database/factories/UserFactory.php
  class UserFactory (line 9) | class UserFactory extends Factory
    method definition (line 23) | public function definition()
    method unverified (line 39) | public function unverified()

FILE: database/migrations/2014_10_12_000000_create_users_table.php
  class CreateUsersTable (line 7) | class CreateUsersTable extends Migration
    method up (line 14) | public function up()
    method down (line 33) | public function down()

FILE: database/migrations/2014_10_12_100000_create_password_resets_table.php
  class CreatePasswordResetsTable (line 7) | class CreatePasswordResetsTable extends Migration
    method up (line 14) | public function up()
    method down (line 28) | public function down()

FILE: database/migrations/2018_08_13_124632_create_questions_tables.php
  class CreateQuestionsTables (line 7) | class CreateQuestionsTables extends Migration
    method up (line 14) | public function up()
    method down (line 156) | public function down()

FILE: database/migrations/2018_08_28_195542_create_report_question_tables.php
  class CreateReportQuestionTables (line 7) | class CreateReportQuestionTables extends Migration
    method up (line 14) | public function up()
    method down (line 41) | public function down()

FILE: database/migrations/2018_11_10_105744_create_table_ipaddres_2_question.php
  class CreateTableIpaddres2Question (line 7) | class CreateTableIpaddres2Question extends Migration
    method up (line 14) | public function up()
    method down (line 38) | public function down()

FILE: database/migrations/2019_08_19_000000_create_failed_jobs_table.php
  class CreateFailedJobsTable (line 7) | class CreateFailedJobsTable extends Migration
    method up (line 14) | public function up()
    method down (line 32) | public function down()

FILE: database/migrations/2021_07_10_192953_create_access_token_table.php
  class CreateAccessTokenTable (line 7) | class CreateAccessTokenTable extends Migration
    method up (line 14) | public function up()
    method down (line 31) | public function down()

FILE: database/migrations/2021_07_13_194154_create_table_access_token_calls.php
  class CreateTableAccessTokenCalls (line 7) | class CreateTableAccessTokenCalls extends Migration
    method up (line 14) | public function up()
    method down (line 31) | public function down()

FILE: database/migrations/2021_07_17_152326_create_table_price_plans.php
  class CreateTablePricePlans (line 7) | class CreateTablePricePlans extends Migration
    method up (line 14) | public function up()
    method down (line 33) | public function down()

FILE: database/migrations/2021_08_03_124437_create_payment_table.php
  class CreatePaymentTable (line 7) | class CreatePaymentTable extends Migration
    method up (line 14) | public function up()
    method down (line 46) | public function down()

FILE: database/migrations/2022_10_22_110248_create_qboard_log_table.php
  class CreateQboardLogTable (line 7) | class CreateQboardLogTable extends Migration
    method up (line 14) | public function up()
    method down (line 32) | public function down()

FILE: database/seeders/DatabaseSeeder.php
  class DatabaseSeeder (line 7) | class DatabaseSeeder extends Seeder
    method run (line 14) | public function run()

FILE: database/seeders/LoadDummyQuestions.php
  class LoadDummyQuestions (line 5) | class LoadDummyQuestions extends Seeder
    method run (line 12) | public function run()

FILE: database/seeders/ReportQuestionType.php
  class ReportQuestionType (line 5) | class ReportQuestionType extends Seeder
    method run (line 12) | public function run()

FILE: public/admin/js/bootstrap.js
  function transitionEnd (line 33) | function transitionEnd() {
  function removeElement (line 125) | function removeElement() {
  function Plugin (line 141) | function Plugin(option) {
  function Plugin (line 246) | function Plugin(option) {
  function Plugin (line 467) | function Plugin(option) {
  function getTargetFromTrigger (line 686) | function getTargetFromTrigger($trigger) {
  function Plugin (line 698) | function Plugin(option) {
  function clearMenus (line 830) | function clearMenus(e) {
  function getParent (line 849) | function getParent($this) {
  function Plugin (line 866) | function Plugin(option) {
  function Plugin (line 1137) | function Plugin(option, _relatedTarget) {
  function complete (line 1479) | function complete() {
  function Plugin (line 1631) | function Plugin(option) {
  function Plugin (line 1751) | function Plugin(option) {
  function ScrollSpy (line 1800) | function ScrollSpy(element, options) {
  function Plugin (line 1923) | function Plugin(option) {
  function next (line 2030) | function next() {
  function Plugin (line 2076) | function Plugin(option) {
  function Plugin (line 2233) | function Plugin(option) {

FILE: public/admin/js/demo/flot-demo.js
  function getRandomData (line 157) | function getRandomData() {
  function euroFormatter (line 249) | function euroFormatter(v, axis) {
  function doPlot (line 253) | function doPlot(position) {

FILE: public/admin/js/inspinia.js
  function fix_height (line 60) | function fix_height() {

FILE: public/admin/js/jquery-2.1.1.js
  function s (line 2) | function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindo...
  function fb (line 2) | function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)...
  function gb (line 2) | function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLengt...
  function hb (line 2) | function hb(a){return a[u]=!0,a}
  function ib (line 2) | function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){re...
  function jb (line 2) | function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[...
  function kb (line 2) | function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sou...
  function lb (line 2) | function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"...
  function mb (line 2) | function mb(a){return function(b){var c=b.nodeName.toLowerCase();return(...
  function nb (line 2) | function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,...
  function ob (line 2) | function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}
  function pb (line 2) | function pb(){}
  function qb (line 2) | function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}
  function rb (line 2) | function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.firs...
  function sb (line 2) | function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e-...
  function tb (line 2) | function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}
  function ub (line 2) | function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(...
  function vb (line 2) | function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)...
  function wb (line 2) | function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.r...
  function xb (line 2) | function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var...
  function x (line 2) | function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){retur...
  function D (line 2) | function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}
  function G (line 2) | function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b...
  function I (line 2) | function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEven...
  function K (line 2) | function K(){Object.defineProperty(this.cache={},0,{get:function(){retur...
  function P (line 2) | function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.rep...
  function Z (line 3) | function Z(){return!0}
  function $ (line 3) | function $(){return!1}
  function _ (line 3) | function _(){try{return l.activeElement}catch(a){}}
  function jb (line 3) | function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeTyp...
  function kb (line 3) | function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}
  function lb (line 3) | function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttrib...
  function mb (line 3) | function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",...
  function nb (line 3) | function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&...
  function ob (line 3) | function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||...
  function pb (line 3) | function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.ty...
  function sb (line 3) | function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getD...
  function tb (line 3) | function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(...
  function xb (line 3) | function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPr...
  function yb (line 3) | function yb(a,b){return{get:function(){return a()?void delete this.get:(...
  function g (line 3) | function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-siz...
  function Fb (line 3) | function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),...
  function Gb (line 3) | function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[...
  function Hb (line 3) | function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===...
  function Ib (line 3) | function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f...
  function Jb (line 3) | function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.styl...
  function Kb (line 3) | function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}
  function Sb (line 3) | function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}
  function Tb (line 3) | function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e[...
  function Ub (line 3) | function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.lengt...
  function Vb (line 3) | function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeTyp...
  function Wb (line 3) | function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a...
  function Xb (line 3) | function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(functio...
  function rc (line 4) | function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var ...
  function sc (line 4) | function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!...
  function tc (line 4) | function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)voi...
  function uc (line 4) | function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[...
  function vc (line 4) | function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])fo...
  function x (line 4) | function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=v...
  function Bc (line 4) | function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc....
  function Kc (line 4) | function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}

FILE: public/admin/js/plugins/chosen/chosen.jquery.js
  function ctor (line 16) | function ctor() { this.constructor = child; }
  function SelectParser (line 19) | function SelectParser() {
  function AbstractChosen (line 117) | function AbstractChosen(form_field, options) {
  function Chosen (line 546) | function Chosen() {

FILE: public/admin/js/plugins/codemirror/codemirror.js
  function CodeMirror (line 61) | function CodeMirror(place, options) {
  function Display (line 121) | function Display(place, doc) {
  function loadMode (line 245) | function loadMode(cm) {
  function resetModeState (line 250) | function resetModeState(cm) {
  function wrappingChanged (line 261) | function wrappingChanged(cm) {
  function estimateHeight (line 278) | function estimateHeight(cm) {
  function estimateLineHeights (line 296) | function estimateLineHeights(cm) {
  function keyMapChanged (line 304) | function keyMapChanged(cm) {
  function themeChanged (line 310) | function themeChanged(cm) {
  function guttersChanged (line 316) | function guttersChanged(cm) {
  function updateGutters (line 324) | function updateGutters(cm) {
  function updateGutterSpace (line 339) | function updateGutterSpace(cm) {
  function lineLength (line 348) | function lineLength(line) {
  function findMaxLine (line 367) | function findMaxLine(cm) {
  function setGuttersForLineNumbers (line 383) | function setGuttersForLineNumbers(options) {
  function hScrollbarTakesSpace (line 395) | function hScrollbarTakesSpace(cm) {
  function measureForScrollbars (line 401) | function measureForScrollbars(cm) {
  function updateScrollbars (line 415) | function updateScrollbars(cm, measure) {
  function visibleLines (line 472) | function visibleLines(display, doc, viewport) {
  function alignHorizontally (line 496) | function alignHorizontally(cm) {
  function maybeUpdateLineNumberWidth (line 515) | function maybeUpdateLineNumberWidth(cm) {
  function lineNumberFor (line 533) | function lineNumberFor(options, i) {
  function compensateForHScroll (line 540) | function compensateForHScroll(display) {
  function DisplayUpdate (line 546) | function DisplayUpdate(cm, viewport, force) {
  function updateDisplayIfNeeded (line 563) | function updateDisplayIfNeeded(cm, update) {
  function postUpdateDisplay (line 631) | function postUpdateDisplay(cm, update) {
  function updateDisplaySimple (line 661) | function updateDisplaySimple(cm, viewport) {
  function setDocumentHeight (line 673) | function setDocumentHeight(cm, measure) {
  function checkForWebkitWidthBug (line 678) | function checkForWebkitWidthBug(cm, measure) {
  function updateHeightsInViewport (line 689) | function updateHeightsInViewport(cm) {
  function updateWidgetHeight (line 716) | function updateWidgetHeight(line) {
  function getDimensions (line 723) | function getDimensions(cm) {
  function patchDisplay (line 741) | function patchDisplay(cm, updateNumbersFrom, dims) {
  function updateLineForChanges (line 786) | function updateLineForChanges(cm, lineView, lineN, dims) {
  function ensureLineWrapped (line 799) | function ensureLineWrapped(lineView) {
  function updateLineBackground (line 810) | function updateLineBackground(lineView) {
  function getLineContent (line 824) | function getLineContent(cm, lineView) {
  function updateLineText (line 837) | function updateLineText(cm, lineView) {
  function updateLineClasses (line 852) | function updateLineClasses(lineView) {
  function updateLineGutter (line 862) | function updateLineGutter(cm, lineView, lineN, dims) {
  function updateLineWidgets (line 889) | function updateLineWidgets(lineView, dims) {
  function buildLineElement (line 900) | function buildLineElement(cm, lineView, lineN, dims) {
  function insertLineWidgets (line 914) | function insertLineWidgets(lineView, dims) {
  function insertLineWidgetsFor (line 920) | function insertLineWidgetsFor(line, lineView, dims, allowAbove) {
  function positionLineWidget (line 935) | function positionLineWidget(widget, node, lineView, dims) {
  function copyPos (line 965) | function copyPos(x) {return Pos(x.line, x.ch);}
  function maxPos (line 966) | function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; }
  function minPos (line 967) | function minPos(a, b) { return cmp(a, b) < 0 ? a : b; }
  function Selection (line 976) | function Selection(ranges, primIndex) {
  function Range (line 1013) | function Range(anchor, head) {
  function normalizeSelection (line 1028) | function normalizeSelection(ranges, primIndex) {
  function simpleSelection (line 1044) | function simpleSelection(anchor, head) {
  function clipLine (line 1050) | function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.fi...
  function clipPos (line 1051) | function clipPos(doc, pos) {
  function clipToLen (line 1057) | function clipToLen(pos, linelen) {
  function isLine (line 1063) | function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.si...
  function clipPosArray (line 1064) | function clipPosArray(doc, array) {
  function extendRange (line 1079) | function extendRange(doc, range, head, other) {
  function extendSelection (line 1098) | function extendSelection(doc, head, other, options) {
  function extendSelections (line 1104) | function extendSelections(doc, heads, options) {
  function replaceOneSelection (line 1112) | function replaceOneSelection(doc, i, range, options) {
  function setSimpleSelection (line 1119) | function setSimpleSelection(doc, anchor, head, options) {
  function filterSelectionChange (line 1125) | function filterSelectionChange(doc, sel) {
  function setSelectionReplaceHistory (line 1141) | function setSelectionReplaceHistory(doc, sel, options) {
  function setSelection (line 1152) | function setSelection(doc, sel, options) {
  function setSelectionNoUndo (line 1157) | function setSelectionNoUndo(doc, sel, options) {
  function setSelectionInner (line 1169) | function setSelectionInner(doc, sel) {
  function reCheckSelection (line 1183) | function reCheckSelection(doc) {
  function skipAtomicInSelection (line 1189) | function skipAtomicInSelection(doc, sel, bias, mayClear) {
  function skipAtomic (line 1204) | function skipAtomic(doc, pos, bias, mayClear) {
  function drawSelection (line 1257) | function drawSelection(cm) {
  function showSelection (line 1284) | function showSelection(cm, drawn) {
  function updateSelection (line 1293) | function updateSelection(cm) {
  function drawSelectionCursor (line 1298) | function drawSelectionCursor(cm, range, output) {
  function drawSelectionRange (line 1317) | function drawSelectionRange(cm, range, output) {
  function restartBlink (line 1391) | function restartBlink(cm) {
  function startWorker (line 1407) | function startWorker(cm, time) {
  function highlightWorker (line 1412) | function highlightWorker(cm) {
  function findStartLine (line 1454) | function findStartLine(cm, n, precise) {
  function getStateBefore (line 1470) | function getStateBefore(cm, n, precise) {
  function paddingTop (line 1488) | function paddingTop(display) {return display.lineSpace.offsetTop;}
  function paddingVert (line 1489) | function paddingVert(display) {return display.mover.offsetHeight - displ...
  function paddingH (line 1490) | function paddingH(display) {
  function ensureLineHeights (line 1503) | function ensureLineHeights(cm, lineView, rect) {
  function mapFromLineView (line 1524) | function mapFromLineView(lineView, line, lineN) {
  function updateExternalMeasurement (line 1537) | function updateExternalMeasurement(cm, line) {
  function measureChar (line 1550) | function measureChar(cm, line, ch, bias) {
  function findViewForLine (line 1555) | function findViewForLine(cm, lineN) {
  function prepareMeasureForLine (line 1568) | function prepareMeasureForLine(cm, line) {
  function measureCharPrepared (line 1588) | function measureCharPrepared(cm, prepared, ch, bias, varHeight) {
  function measureCharInner (line 1610) | function measureCharInner(cm, prepared, ch, bias) {
  function maybeUpdateRectForZooming (line 1702) | function maybeUpdateRectForZooming(measure, rect) {
  function clearLineMeasurementCacheFor (line 1712) | function clearLineMeasurementCacheFor(lineView) {
  function clearLineMeasurementCache (line 1721) | function clearLineMeasurementCache(cm) {
  function clearCaches (line 1728) | function clearCaches(cm) {
  function pageScrollX (line 1735) | function pageScrollX() { return window.pageXOffset || (document.document...
  function pageScrollY (line 1736) | function pageScrollY() { return window.pageYOffset || (document.document...
  function intoCoordSystem (line 1741) | function intoCoordSystem(cm, lineObj, rect, context) {
  function fromCoordSystem (line 1763) | function fromCoordSystem(cm, coords, context) {
  function charCoords (line 1780) | function charCoords(cm, pos, context, lineObj, bias) {
  function cursorCoords (line 1788) | function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHei...
  function estimateCoords (line 1820) | function estimateCoords(cm, pos) {
  function PosWithInfo (line 1834) | function PosWithInfo(line, ch, outside, xRel) {
  function coordsChar (line 1843) | function coordsChar(cm, x, y) {
  function coordsCharInner (line 1864) | function coordsCharInner(cm, lineObj, lineNo, x, y) {
  function textHeight (line 1906) | function textHeight(display) {
  function charWidth (line 1926) | function charWidth(display) {
  function startOperation (line 1948) | function startOperation(cm) {
  function fireCallbacksForOps (line 1975) | function fireCallbacksForOps(group) {
  function endOperation (line 1992) | function endOperation(cm) {
  function endOperations (line 2007) | function endOperations(group) {
  function endOperation_R1 (line 2021) | function endOperation_R1(op) {
  function endOperation_W1 (line 2033) | function endOperation_W1(op) {
  function endOperation_R2 (line 2037) | function endOperation_R2(op) {
  function endOperation_W2 (line 2056) | function endOperation_W2(op) {
  function endOperation_finish (line 2079) | function endOperation_finish(op) {
  function runInOp (line 2135) | function runInOp(cm, f) {
  function operation (line 2142) | function operation(cm, f) {
  function methodOp (line 2152) | function methodOp(f) {
  function docMethodOp (line 2160) | function docMethodOp(f) {
  function LineView (line 2175) | function LineView(doc, line, lineN) {
  function buildViewArray (line 2187) | function buildViewArray(cm, from, to) {
  function regChange (line 2203) | function regChange(cm, from, to, lendiff) {
  function regLineChange (line 2268) | function regLineChange(cm, line, type) {
  function resetView (line 2282) | function resetView(cm) {
  function findViewIndex (line 2290) | function findViewIndex(cm, n) {
  function viewCuttingPoint (line 2301) | function viewCuttingPoint(cm, oldN, newN, dir) {
  function adjustView (line 2327) | function adjustView(cm, from, to) {
  function countDirtyView (line 2348) | function countDirtyView(cm) {
  function slowPoll (line 2361) | function slowPoll(cm) {
  function fastPoll (line 2372) | function fastPoll(cm) {
  function readInput (line 2394) | function readInput(cm) {
  function resetInput (line 2486) | function resetInput(cm, typing) {
  function focusInput (line 2504) | function focusInput(cm) {
  function ensureFocus (line 2509) | function ensureFocus(cm) {
  function isReadOnly (line 2513) | function isReadOnly(cm) {
  function registerEventHandlers (line 2520) | function registerEventHandlers(cm) {
  function onResize (line 2654) | function onResize(cm) {
  function eventInWidget (line 2664) | function eventInWidget(display, e) {
  function posFromMouse (line 2675) | function posFromMouse(cm, e, liberal, forRect) {
  function onMouseDown (line 2699) | function onMouseDown(e) {
  function leftButtonDown (line 2737) | function leftButtonDown(cm, e, start) {
  function leftButtonStartDrag (line 2761) | function leftButtonStartDrag(cm, e, start, modifier) {
  function leftButtonSelect (line 2788) | function leftButtonSelect(cm, e, start, type, addNew) {
  function gutterEvent (line 2927) | function gutterEvent(cm, e, type, prevent, signalfn) {
  function clickInGutter (line 2950) | function clickInGutter(cm, e) {
  function onDrop (line 2958) | function onDrop(e) {
  function onDragStart (line 3008) | function onDragStart(cm, e) {
  function setScrollTop (line 3034) | function setScrollTop(cm, val) {
  function setScrollLeft (line 3045) | function setScrollLeft(cm, val, isScroller) {
  function onScrollWheel (line 3075) | function onScrollWheel(cm, e) {
  function doHandleBinding (line 3150) | function doHandleBinding(cm, bound, dropShift) {
  function allKeyMaps (line 3171) | function allKeyMaps(cm) {
  function handleKeyBinding (line 3180) | function handleKeyBinding(cm, e) {
  function handleCharBinding (line 3217) | function handleCharBinding(cm, e, ch) {
  function onKeyDown (line 3229) | function onKeyDown(e) {
  function showCrossHair (line 3250) | function showCrossHair(cm) {
  function onKeyUp (line 3265) | function onKeyUp(e) {
  function onKeyPress (line 3270) | function onKeyPress(e) {
  function onFocus (line 3284) | function onFocus(cm) {
  function onBlur (line 3301) | function onBlur(cm) {
  function onContextMenu (line 3316) | function onContextMenu(cm, e) {
  function contextMenuInGutter (line 3391) | function contextMenuInGutter(cm, e) {
  function adjustForChange (line 3408) | function adjustForChange(pos, change) {
  function computeSelAfterChange (line 3417) | function computeSelAfterChange(doc, change) {
  function offsetPos (line 3427) | function offsetPos(pos, old, nw) {
  function computeReplacedSel (line 3436) | function computeReplacedSel(doc, changes, hint) {
  function filterChange (line 3456) | function filterChange(doc, change, update) {
  function makeChange (line 3480) | function makeChange(doc, change, ignoreReadOnly) {
  function makeChangeInner (line 3502) | function makeChangeInner(doc, change) {
  function makeChangeFromHistory (line 3520) | function makeChangeFromHistory(doc, type, allowSelectionOnly) {
  function shiftDoc (line 3586) | function shiftDoc(doc, distance) {
  function makeChangeSingleDoc (line 3602) | function makeChangeSingleDoc(doc, change, selAfter, spans) {
  function makeChangeSingleDocInEditor (line 3635) | function makeChangeSingleDocInEditor(cm, change, spans) {
  function replaceRange (line 3692) | function replaceRange(doc, code, from, to, origin) {
  function maybeScrollWindow (line 3703) | function maybeScrollWindow(cm, coords) {
  function scrollPosIntoView (line 3721) | function scrollPosIntoView(cm, pos, end, margin) {
  function scrollIntoView (line 3744) | function scrollIntoView(cm, x1, y1, x2, y2) {
  function calculateScrollPos (line 3754) | function calculateScrollPos(cm, x1, y1, x2, y2) {
  function addToScrollPos (line 3785) | function addToScrollPos(cm, left, top) {
  function ensureCursorVisible (line 3795) | function ensureCursorVisible(cm) {
  function resolveScrollToPos (line 3809) | function resolveScrollToPos(cm) {
  function indentLine (line 3829) | function indentLine(cm, n, how, aggressive) {
  function changeLine (line 3890) | function changeLine(doc, handle, changeType, op) {
  function deleteNearSelection (line 3901) | function deleteNearSelection(cm, compute) {
  function findPosH (line 3933) | function findPosH(doc, pos, dir, unit, visually) {
  function findPosV (line 3984) | function findPosV(cm, pos, dir, unit) {
  function interpret (line 4409) | function interpret(val) {
  function option (line 4465) | function option(name, deflt, handle, notOnInit) {
  function getKeyMap (line 4895) | function getKeyMap(val) {
  function lookup (line 4905) | function lookup(map) {
  function save (line 4965) | function save() {textarea.value = cm.getValue();}
  function markText (line 5209) | function markText(doc, from, to, options, type) {
  function markTextShared (line 5302) | function markTextShared(doc, from, to, options, type) {
  function findSharedMarkers (line 5317) | function findSharedMarkers(doc) {
  function copySharedMarkers (line 5322) | function copySharedMarkers(doc, markers) {
  function detachSharedMarkers (line 5334) | function detachSharedMarkers(markers) {
  function MarkedSpan (line 5350) | function MarkedSpan(marker, from, to) {
  function getMarkedSpanFor (line 5356) | function getMarkedSpanFor(spans, marker) {
  function removeMarkedSpan (line 5364) | function removeMarkedSpan(spans, span) {
  function addMarkedSpan (line 5370) | function addMarkedSpan(line, span) {
  function markedSpansBefore (line 5379) | function markedSpansBefore(old, startCh, isInsert) {
  function markedSpansAfter (line 5390) | function markedSpansAfter(old, endCh, isInsert) {
  function stretchSpansOverChange (line 5409) | function stretchSpansOverChange(doc, change) {
  function clearEmptySpans (line 5470) | function clearEmptySpans(spans) {
  function mergeOldSpans (line 5484) | function mergeOldSpans(doc, change) {
  function removeReadOnlyRanges (line 5507) | function removeReadOnlyRanges(doc, from, to) {
  function detachMarkedSpans (line 5536) | function detachMarkedSpans(line) {
  function attachMarkedSpans (line 5543) | function attachMarkedSpans(line, spans) {
  function extraLeft (line 5552) | function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; }
  function extraRight (line 5553) | function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; }
  function compareCollapsedMarkers (line 5558) | function compareCollapsedMarkers(a, b) {
  function collapsedSpanAtSide (line 5571) | function collapsedSpanAtSide(line, start) {
  function collapsedSpanAtStart (line 5581) | function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, t...
  function collapsedSpanAtEnd (line 5582) | function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, fal...
  function conflictingCollapsedRange (line 5587) | function conflictingCollapsedRange(doc, lineNo, from, to, marker) {
  function visualLine (line 5607) | function visualLine(line) {
  function visualLineContinued (line 5616) | function visualLineContinued(line) {
  function visualLineNo (line 5627) | function visualLineNo(doc, lineN) {
  function visualLineEndNo (line 5634) | function visualLineEndNo(doc, lineN) {
  function lineIsHidden (line 5646) | function lineIsHidden(doc, line) {
  function lineIsHiddenInner (line 5657) | function lineIsHiddenInner(doc, line, span) {
  function adjustScrollWhenAboveVisible (line 5685) | function adjustScrollWhenAboveVisible(cm, line, diff) {
  function widgetHeight (line 5714) | function widgetHeight(widget) {
  function addLineWidget (line 5725) | function addLineWidget(cm, handle, node, options) {
  function updateLine (line 5759) | function updateLine(line, text, markedSpans, estimateHeight) {
  function cleanUpLine (line 5771) | function cleanUpLine(line) {
  function extractLineClasses (line 5776) | function extractLineClasses(type, output) {
  function callBlankLine (line 5790) | function callBlankLine(mode, state) {
  function readToken (line 5797) | function readToken(mode, stream, state) {
  function runMode (line 5806) | function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) {
  function highlightLine (line 5843) | function highlightLine(cm, line, state, forceToEnd) {
  function getLineStyles (line 5881) | function getLineStyles(cm, line) {
  function processLine (line 5894) | function processLine(cm, text, state, startAt) {
  function interpretTokenStyle (line 5909) | function interpretTokenStyle(style, options) {
  function buildLineContent (line 5921) | function buildLineContent(cm, lineView) {
  function defaultSpecialCharPlaceholder (line 5969) | function defaultSpecialCharPlaceholder(ch) {
  function buildToken (line 5977) | function buildToken(builder, text, style, startStyle, endStyle, title) {
  function buildTokenSplitSpaces (line 6027) | function buildTokenSplitSpaces(inner) {
  function buildTokenBadBidi (line 6041) | function buildTokenBadBidi(inner, order) {
  function buildCollapsedSpan (line 6060) | function buildCollapsedSpan(builder, size, marker, ignoreWidget) {
  function insertLineContent (line 6071) | function insertLineContent(line, builder, styles) {
  function isWholeLineUpdate (line 6135) | function isWholeLineUpdate(doc, change) {
  function updateDoc (line 6141) | function updateDoc(doc, change, markedSpans, estimateHeight) {
  function LeafChunk (line 6199) | function LeafChunk(lines) {
  function BranchChunk (line 6239) | function BranchChunk(children) {
  function linkedDocs (line 6688) | function linkedDocs(doc, f, sharedHistOnly) {
  function attachDoc (line 6703) | function attachDoc(cm, doc) {
  function getLine (line 6717) | function getLine(doc, n) {
  function getBetween (line 6732) | function getBetween(doc, start, end) {
  function getLines (line 6744) | function getLines(doc, from, to) {
  function updateLineHeight (line 6752) | function updateLineHeight(line, height) {
  function lineNo (line 6759) | function lineNo(line) {
  function lineAtHeight (line 6773) | function lineAtHeight(chunk, h) {
  function heightAtLine (line 6794) | function heightAtLine(lineObj) {
  function getOrder (line 6816) | function getOrder(line) {
  function History (line 6824) | function History(startGen) {
  function historyChangeFromChange (line 6841) | function historyChangeFromChange(doc, change) {
  function clearSelectionEvents (line 6850) | function clearSelectionEvents(array) {
  function lastChangeEvent (line 6860) | function lastChangeEvent(hist, force) {
  function addChangeToHistory (line 6875) | function addChangeToHistory(doc, change, selAfter, opId) {
  function selectionEventCanBeMerged (line 6917) | function selectionEventCanBeMerged(doc, origin, prev, sel) {
  function addSelectionToHistory (line 6930) | function addSelectionToHistory(doc, sel, opId, options) {
  function pushSelectionToHistory (line 6952) | function pushSelectionToHistory(sel, dest) {
  function attachLocalSpans (line 6959) | function attachLocalSpans(doc, change, from, to) {
  function removeClearedSpans (line 6970) | function removeClearedSpans(spans) {
  function getOldSpans (line 6980) | function getOldSpans(doc, change) {
  function copyHistoryArray (line 6990) | function copyHistoryArray(events, newGroup, instantiateSel) {
  function rebaseHistSelSingle (line 7015) | function rebaseHistSelSingle(pos, from, to, diff) {
  function rebaseHistArray (line 7031) | function rebaseHistArray(array, from, to, diff) {
  function rebaseHist (line 7059) | function rebaseHist(hist, change) {
  function e_defaultPrevented (line 7078) | function e_defaultPrevented(e) {
  function e_target (line 7083) | function e_target(e) {return e.target || e.srcElement;}
  function e_button (line 7084) | function e_button(e) {
  function signalLater (line 7141) | function signalLater(emitter, type /*, values...*/) {
  function fireOrphanDelayed (line 7158) | function fireOrphanDelayed() {
  function signalDOMEvent (line 7167) | function signalDOMEvent(cm, e, override) {
  function signalCursorActivity (line 7172) | function signalCursorActivity(cm) {
  function hasHandler (line 7180) | function hasHandler(emitter, type) {
  function eventMixin (line 7187) | function eventMixin(ctor) {
  function Delayed (line 7204) | function Delayed() {this.id = null;}
  function findColumn (line 7229) | function findColumn(string, goal, tabSize) {
  function spaceStr (line 7244) | function spaceStr(n) {
  function lst (line 7250) | function lst(arr) { return arr[arr.length-1]; }
  function indexOf (line 7258) | function indexOf(array, elt) {
  function map (line 7264) | function map(array, f) {
  function createObj (line 7271) | function createObj(base, props) {
  function copyObj (line 7284) | function copyObj(obj, target, overwrite) {
  function bind (line 7292) | function bind(f) {
  function isWordChar (line 7302) | function isWordChar(ch, helper) {
  function isEmpty (line 7308) | function isEmpty(obj) {
  function isExtendingChar (line 7319) | function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendi...
  function elt (line 7323) | function elt(tag, content, className, style) {
  function removeChildren (line 7348) | function removeChildren(e) {
  function removeChildrenAndAdd (line 7354) | function removeChildrenAndAdd(parent, e) {
  function contains (line 7358) | function contains(parent, child) {
  function activeElt (line 7365) | function activeElt() { return document.activeElement; }
  function classTest (line 7373) | function classTest(cls) { return new RegExp("\\b" + cls + "\\b\\s*"); }
  function rmClass (line 7374) | function rmClass(node, cls) {
  function addClass (line 7378) | function addClass(node, cls) {
  function joinClasses (line 7381) | function joinClasses(a, b) {
  function forEachCodeMirror (line 7394) | function forEachCodeMirror(f) {
  function ensureGlobalHandlers (line 7404) | function ensureGlobalHandlers() {
  function registerGlobalHandlers (line 7409) | function registerGlobalHandlers() {
  function scrollbarWidth (line 7437) | function scrollbarWidth(measure) {
  function zeroWidthElement (line 7447) | function zeroWidthElement(measure) {
  function hasBadBidiRects (line 7460) | function hasBadBidiRects(measure) {
  function hasBadZoomedRects (line 7507) | function hasBadZoomedRects(measure) {
  function iterateBidiSections (line 7536) | function iterateBidiSections(order, from, to, f) {
  function bidiLeft (line 7549) | function bidiLeft(part) { return part.level % 2 ? part.to : part.from; }
  function bidiRight (line 7550) | function bidiRight(part) { return part.level % 2 ? part.from : part.to; }
  function lineLeft (line 7552) | function lineLeft(line) { var order = getOrder(line); return order ? bid...
  function lineRight (line 7553) | function lineRight(line) {
  function lineStart (line 7559) | function lineStart(cm, lineN) {
  function lineEnd (line 7567) | function lineEnd(cm, lineN) {
  function lineStartSmart (line 7577) | function lineStartSmart(cm, pos) {
  function compareBidiLevel (line 7589) | function compareBidiLevel(order, a, b) {
  function getBidiPartAt (line 7596) | function getBidiPartAt(order, pos) {
  function moveInLine (line 7616) | function moveInLine(line, pos, dir, byUnit) {
  function moveVisually (line 7628) | function moveVisually(line, start, dir, byUnit) {
  function moveLogically (line 7651) | function moveLogically(line, start, dir, byUnit) {
  function charType (line 7685) | function charType(code) {
  function BidiSpan (line 7700) | function BidiSpan(level, from, to) {

FILE: public/admin/js/plugins/codemirror/mode/asterisk/asterisk.js
  function basicToken (line 66) | function basicToken(stream,state){

FILE: public/admin/js/plugins/codemirror/mode/clike/clike.js
  function tokenBase (line 29) | function tokenBase(stream, state) {
  function tokenString (line 75) | function tokenString(quote) {
  function tokenComment (line 88) | function tokenComment(stream, state) {
  function Context (line 100) | function Context(indented, column, type, align, prev) {
  function pushContext (line 107) | function pushContext(state, col, type) {
  function popContext (line 113) | function popContext(state) {
  function words (line 182) | function words(str) {
  function cppHook (line 191) | function cppHook(stream, state) {
  function cpp11StringHook (line 209) | function cpp11StringHook(stream, state) {
  function tokenAtString (line 234) | function tokenAtString(stream, state) {
  function tokenRawString (line 247) | function tokenRawString(stream, state) {
  function def (line 258) | function def(mimes, mode) {
  function tokenTripleString (line 350) | function tokenTripleString(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/clojure/clojure.js
  function makeKeywords (line 25) | function makeKeywords(str) {
  function stateStack (line 65) | function stateStack(indent, type, prev) { // represents a state stack ob...
  function pushStack (line 71) | function pushStack(state, indent, type) {
  function popStack (line 75) | function popStack(state) {
  function isNumber (line 79) | function isNumber(ch, stream){
  function eatCharacter (line 113) | function eatCharacter(stream) {

FILE: public/admin/js/plugins/codemirror/mode/cobol/cobol.js
  function makeKeywords (line 22) | function makeKeywords(str) {
  function isNumber (line 150) | function isNumber(ch, stream){

FILE: public/admin/js/plugins/codemirror/mode/coffeescript/coffeescript.js
  function wordRegexp (line 21) | function wordRegexp(words) {
  function tokenBase (line 50) | function tokenBase(stream, state) {
  function tokenFactory (line 177) | function tokenFactory(delimiter, singleline, outclass) {
  function longComment (line 204) | function longComment(stream, state) {
  function indent (line 216) | function indent(stream, state, type) {
  function dedent (line 240) | function dedent(stream, state) {
  function tokenLexer (line 264) | function tokenLexer(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/commonlisp/commonlisp.js
  function readSym (line 20) | function readSym(stream) {
  function base (line 29) | function base(stream, state) {
  function inString (line 62) | function inString(stream, state) {
  function inComment (line 71) | function inComment(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/css/css.js
  function ret (line 29) | function ret(style, tp) { type = tp; return style; }
  function tokenBase (line 33) | function tokenBase(stream, state) {
  function tokenString (line 81) | function tokenString(quote) {
  function tokenParenthesized (line 96) | function tokenParenthesized(stream, state) {
  function Context (line 107) | function Context(type, indent, prev) {
  function pushContext (line 113) | function pushContext(state, stream, type) {
  function popContext (line 118) | function popContext(state) {
  function pass (line 123) | function pass(type, stream, state) {
  function popAndPass (line 126) | function popAndPass(type, stream, state, n) {
  function wordAsValue (line 134) | function wordAsValue(stream) {
  function keySet (line 348) | function keySet(array) {
  function tokenCComment (line 595) | function tokenCComment(stream, state) {
  function tokenSGMLComment (line 607) | function tokenSGMLComment(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/css/less_test.js
  function MT (line 8) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/css/scss_test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/css/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/d/d.js
  function tokenBase (line 27) | function tokenBase(stream, state) {
  function tokenString (line 77) | function tokenString(quote) {
  function tokenComment (line 90) | function tokenComment(stream, state) {
  function tokenNestedComment (line 102) | function tokenNestedComment(stream, state) {
  function Context (line 114) | function Context(indented, column, type, align, prev) {
  function pushContext (line 121) | function pushContext(state, col, type) {
  function popContext (line 127) | function popContext(state) {
  function words (line 189) | function words(str) {

FILE: public/admin/js/plugins/codemirror/mode/django/django.js
  function tokenBase (line 24) | function tokenBase (stream, state) {
  function inTag (line 34) | function inTag (close) {

FILE: public/admin/js/plugins/codemirror/mode/dtd/dtd.js
  function ret (line 23) | function ret(style, tp) {type = tp; return style;}
  function tokenBase (line 25) | function tokenBase(stream, state) {
  function tokenSGMLComment (line 54) | function tokenSGMLComment(stream, state) {
  function tokenString (line 66) | function tokenString(quote) {
  function inBlock (line 80) | function inBlock(style, terminator) {

FILE: public/admin/js/plugins/codemirror/mode/dylan/dylan.js
  function chain (line 152) | function chain(stream, state, f) {
  function ret (line 159) | function ret(_type, style, _content) {
  function tokenBase (line 165) | function tokenBase(stream, state) {
  function tokenComment (line 250) | function tokenComment(stream, state) {
  function tokenString (line 263) | function tokenString(quote, type, style) {

FILE: public/admin/js/plugins/codemirror/mode/ecl/ecl.js
  function words (line 16) | function words(str) {
  function metaHook (line 22) | function metaHook(stream, state) {
  function tokenBase (line 42) | function tokenBase(stream, state) {
  function tokenString (line 108) | function tokenString(quote) {
  function tokenComment (line 121) | function tokenComment(stream, state) {
  function Context (line 133) | function Context(indented, column, type, align, prev) {
  function pushContext (line 140) | function pushContext(state, col, type) {
  function popContext (line 143) | function popContext(state) {

FILE: public/admin/js/plugins/codemirror/mode/eiffel/eiffel.js
  function wordObj (line 15) | function wordObj(words) {
  function chain (line 89) | function chain(newtok, stream, state) {
  function tokenBase (line 94) | function tokenBase(stream, state) {
  function readQuoted (line 121) | function readQuoted(quote, style,  unescaped) {

FILE: public/admin/js/plugins/codemirror/mode/erlang/erlang.js
  function tokenizer (line 103) | function tokenizer(stream,state) {
  function nongreedy (line 294) | function nongreedy(stream,re,words) {
  function greedy (line 308) | function greedy(stream,re,words) {
  function doubleQuote (line 325) | function doubleQuote(stream) {
  function singleQuote (line 329) | function singleQuote(stream) {
  function quote (line 333) | function quote(stream,quoteChar,escapeChar) {
  function lookahead (line 345) | function lookahead(stream) {
  function is_member (line 350) | function is_member(element,list) {
  function rval (line 354) | function rval(state,stream,type) {
  function aToken (line 388) | function aToken(tok,col,ind,typ) {
  function realToken (line 395) | function realToken(type,stream) {
  function fakeToken (line 402) | function fakeToken(type) {
  function peekToken (line 406) | function peekToken(state,depth) {
  function pushToken (line 417) | function pushToken(state,token) {
  function maybe_drop_pre (line 425) | function maybe_drop_pre(s,token) {
  function maybe_drop_post (line 439) | function maybe_drop_post(s) {
  function d (line 466) | function d(stack,tt) {
  function indenter (line 506) | function indenter(state,textAfter) {
  function wordafter (line 549) | function wordafter(str) {
  function postcommaToken (line 555) | function postcommaToken(state) {
  function defaultToken (line 562) | function defaultToken(state) {
  function getToken (line 576) | function getToken(state,tokens) {
  function getTokenIndex (line 583) | function getTokenIndex(objs,propname,propvals) {
  function truthy (line 593) | function truthy(x) {

FILE: public/admin/js/plugins/codemirror/mode/fortran/fortran.js
  function words (line 15) | function words(array) {
  function tokenBase (line 117) | function tokenBase(stream, state) {
  function tokenString (line 155) | function tokenString(quote) {

FILE: public/admin/js/plugins/codemirror/mode/gas/gas.js
  function x86 (line 144) | function x86(_parserConfig) {
  function armv6 (line 191) | function armv6(_parserConfig) {
  function nextUntilUnescaped (line 234) | function nextUntilUnescaped(stream, end) {
  function clikeComment (line 245) | function clikeComment(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/gfm/gfm.js
  function blankLine (line 16) | function blankLine(state) {

FILE: public/admin/js/plugins/codemirror/mode/gfm/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...
  function FT (line 8) | function FT(name) { test.mode(name, modeHighlightFormatting, Array.proto...

FILE: public/admin/js/plugins/codemirror/mode/go/go.js
  function tokenBase (line 40) | function tokenBase(stream, state) {
  function tokenString (line 84) | function tokenString(quote) {
  function tokenComment (line 97) | function tokenComment(stream, state) {
  function Context (line 109) | function Context(indented, column, type, align, prev) {
  function pushContext (line 116) | function pushContext(state, col, type) {
  function popContext (line 119) | function popContext(state) {

FILE: public/admin/js/plugins/codemirror/mode/groovy/groovy.js
  function words (line 15) | function words(str) {
  function tokenBase (line 30) | function tokenBase(stream, state) {
  function startString (line 79) | function startString(quote, stream, state) {
  function tokenBaseUntilBrace (line 105) | function tokenBaseUntilBrace() {
  function tokenComment (line 123) | function tokenComment(stream, state) {
  function expectExpression (line 135) | function expectExpression(last) {
  function Context (line 140) | function Context(indented, column, type, align, prev) {
  function pushContext (line 147) | function pushContext(state, col, type) {
  function popContext (line 150) | function popContext(state) {

FILE: public/admin/js/plugins/codemirror/mode/haml/haml.js
  function rubyInQuote (line 19) | function rubyInQuote(endQuote) {
  function ruby (line 33) | function ruby(stream, state) {
  function html (line 41) | function html(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/haml/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/haskell/haskell.js
  function switchState (line 16) | function switchState(source, setState, f) {
  function normal (line 32) | function normal(source, setState) {
  function ncomment (line 125) | function ncomment(type, nest) {
  function stringLiteral (line 149) | function stringLiteral(source, setState) {
  function stringGap (line 172) | function stringGap(source, setState) {
  function setType (line 184) | function setType(t) {

FILE: public/admin/js/plugins/codemirror/mode/haxe/haxe.js
  function kw (line 20) | function kw(type) {return {type: type, style: "keyword"};}
  function chain (line 39) | function chain(stream, state, f) {
  function nextUntilUnescaped (line 44) | function nextUntilUnescaped(stream, end) {
  function ret (line 57) | function ret(tp, style, cont) {
  function haxeTokenBase (line 62) | function haxeTokenBase(stream, state) {
  function haxeTokenString (line 125) | function haxeTokenString(quote) {
  function haxeTokenComment (line 133) | function haxeTokenComment(stream, state) {
  function HaxeLexical (line 149) | function HaxeLexical(indented, column, type, align, prev, info) {
  function inScope (line 158) | function inScope(state, varname) {
  function parseHaxe (line 163) | function parseHaxe(state, style, type, content, stream) {
  function imported (line 185) | function imported(state, typename)
  function registerimport (line 195) | function registerimport(importname) {
  function pass (line 204) | function pass() {
  function cont (line 207) | function cont() {
  function register (line 211) | function register(varname) {
  function pushcontext (line 224) | function pushcontext() {
  function popcontext (line 228) | function popcontext() {
  function pushlex (line 232) | function pushlex(type, info) {
  function poplex (line 240) | function poplex() {
  function expect (line 250) | function expect(wanted) {
  function statement (line 259) | function statement(type) {
  function expression (line 281) | function expression(type) {
  function maybeexpression (line 291) | function maybeexpression(type) {
  function maybeoperator (line 296) | function maybeoperator(type, value) {
  function maybeattribute (line 305) | function maybeattribute(type) {
  function metadef (line 311) | function metadef(type) {
  function metaargs (line 316) | function metaargs(type) {
  function importdef (line 320) | function importdef (type, value) {
  function typedef (line 325) | function typedef (type, value)
  function maybelabel (line 331) | function maybelabel(type) {
  function property (line 335) | function property(type) {
  function objprop (line 338) | function objprop(type) {
  function commasep (line 342) | function commasep(what, end) {
  function block (line 353) | function block(type) {
  function vardef1 (line 357) | function vardef1(type, value) {
  function vardef2 (line 361) | function vardef2(type, value) {
  function forspec1 (line 365) | function forspec1(type, value) {
  function forin (line 371) | function forin(_type, value) {
  function functiondef (line 374) | function functiondef(type, value) {
  function typeuse (line 379) | function typeuse(type) {
  function typestring (line 382) | function typestring(type) {
  function typeprop (line 387) | function typeprop(type) {
  function funarg (line 390) | function funarg(type, value) {

FILE: public/admin/js/plugins/codemirror/mode/htmlembedded/htmlembedded.js
  function htmlDispatch (line 24) | function htmlDispatch(stream, state) {
  function scriptingDispatch (line 34) | function scriptingDispatch(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/htmlmixed/htmlmixed.js
  function html (line 31) | function html(stream, state) {
  function maybeBackup (line 58) | function maybeBackup(stream, pat, style) {
  function script (line 68) | function script(stream, state) {
  function css (line 77) | function css(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/http/http.js
  function failFirstLine (line 15) | function failFirstLine(stream, state) {
  function start (line 21) | function start(stream, state) {
  function responseStatusCode (line 33) | function responseStatusCode(stream, state) {
  function responseStatusText (line 54) | function responseStatusText(stream, state) {
  function requestPath (line 60) | function requestPath(stream, state) {
  function requestProtocol (line 66) | function requestProtocol(stream, state) {
  function header (line 75) | function header(stream) {
  function body (line 89) | function body(stream) {

FILE: public/admin/js/plugins/codemirror/mode/jade/jade.js
  function State (line 29) | function State() {
  function javaScript (line 105) | function javaScript(stream, state) {
  function javaScriptArguments (line 122) | function javaScriptArguments(stream, state) {
  function yieldStatement (line 143) | function yieldStatement(stream) {
  function doctype (line 149) | function doctype(stream) {
  function interpolation (line 155) | function interpolation(stream, state) {
  function interpolationContinued (line 163) | function interpolationContinued(stream, state) {
  function caseStatement (line 179) | function caseStatement(stream, state) {
  function when (line 186) | function when(stream, state) {
  function defaultStatement (line 194) | function defaultStatement(stream) {
  function extendsStatement (line 200) | function extendsStatement(stream, state) {
  function append (line 207) | function append(stream, state) {
  function prepend (line 213) | function prepend(stream, state) {
  function block (line 219) | function block(stream, state) {
  function include (line 226) | function include(stream, state) {
  function includeFiltered (line 233) | function includeFiltered(stream, state) {
  function includeFilteredContinued (line 240) | function includeFilteredContinued(stream, state) {
  function mixin (line 249) | function mixin(stream, state) {
  function call (line 256) | function call(stream, state) {
  function callArguments (line 270) | function callArguments(stream, state) {
  function conditional (line 281) | function conditional(stream, state) {
  function each (line 288) | function each(stream, state) {
  function eachContinued (line 294) | function eachContinued(stream, state) {
  function whileStatement (line 309) | function whileStatement(stream, state) {
  function tag (line 316) | function tag(stream, state) {
  function filter (line 327) | function filter(stream, state) {
  function code (line 344) | function code(stream, state) {
  function id (line 351) | function id(stream) {
  function className (line 357) | function className(stream) {
  function attrs (line 363) | function attrs(stream, state) {
  function attrsContinued (line 375) | function attrsContinued(stream, state) {
  function attributesBlock (line 419) | function attributesBlock(stream, state) {
  function indent (line 427) | function indent(stream) {
  function comment (line 433) | function comment(stream, state) {
  function colon (line 441) | function colon(stream) {
  function text (line 447) | function text(stream, state) {
  function dot (line 459) | function dot(stream, state) {
  function fail (line 472) | function fail(stream) {
  function setInnerMode (line 478) | function setInnerMode(stream, state, mode) {
  function innerMode (line 491) | function innerMode(stream, state, force) {
  function restOfLine (line 511) | function restOfLine(stream, state) {
  function startState (line 525) | function startState() {
  function copyState (line 528) | function copyState(state) {
  function nextToken (line 537) | function nextToken(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/javascript/javascript.js
  function kw (line 27) | function kw(type) {return {type: type, style: "keyword"};}
  function readRegexp (line 73) | function readRegexp(stream) {
  function ret (line 88) | function ret(tp, style, cont) {
  function tokenBase (line 92) | function tokenBase(stream, state) {
  function tokenString (line 144) | function tokenString(quote) {
  function tokenComment (line 160) | function tokenComment(stream, state) {
  function tokenQuasi (line 172) | function tokenQuasi(stream, state) {
  function findFatArrow (line 192) | function findFatArrow(stream, state) {
  function JSLexical (line 220) | function JSLexical(indented, column, type, align, prev, info) {
  function inScope (line 229) | function inScope(state, varname) {
  function parseJS (line 238) | function parseJS(state, style, type, content, stream) {
  function pass (line 262) | function pass() {
  function cont (line 265) | function cont() {
  function register (line 269) | function register(varname) {
  function pushcontext (line 290) | function pushcontext() {
  function popcontext (line 294) | function popcontext() {
  function pushlex (line 298) | function pushlex(type, info) {
  function poplex (line 309) | function poplex() {
  function expect (line 319) | function expect(wanted) {
  function statement (line 328) | function statement(type, value) {
  function expression (line 354) | function expression(type) {
  function expressionNoComma (line 357) | function expressionNoComma(type) {
  function expressionInner (line 360) | function expressionInner(type, noComma) {
  function maybeexpression (line 378) | function maybeexpression(type) {
  function maybeexpressionNoComma (line 382) | function maybeexpressionNoComma(type) {
  function maybeoperatorComma (line 387) | function maybeoperatorComma(type, value) {
  function maybeoperatorNoComma (line 391) | function maybeoperatorNoComma(type, value, noComma) {
  function quasi (line 406) | function quasi(type, value) {
  function continueQuasi (line 411) | function continueQuasi(type) {
  function arrowBody (line 418) | function arrowBody(type) {
  function arrowBodyNoComma (line 422) | function arrowBodyNoComma(type) {
  function maybelabel (line 426) | function maybelabel(type) {
  function property (line 430) | function property(type) {
  function objprop (line 433) | function objprop(type, value) {
  function getterSetter (line 447) | function getterSetter(type) {
  function afterprop (line 452) | function afterprop(type) {
  function commasep (line 456) | function commasep(what, end) {
  function contCommasep (line 471) | function contCommasep(what, end, info) {
  function block (line 476) | function block(type) {
  function maybetype (line 480) | function maybetype(type) {
  function typedef (line 483) | function typedef(type) {
  function vardef (line 486) | function vardef() {
  function pattern (line 489) | function pattern(type, value) {
  function proppattern (line 494) | function proppattern(type, value) {
  function maybeAssign (line 502) | function maybeAssign(_type, value) {
  function vardefCont (line 505) | function vardefCont(type) {
  function maybeelse (line 508) | function maybeelse(type, value) {
  function forspec (line 511) | function forspec(type) {
  function forspec1 (line 514) | function forspec1(type) {
  function formaybeinof (line 520) | function formaybeinof(_type, value) {
  function forspec2 (line 524) | function forspec2(type, value) {
  function forspec3 (line 529) | function forspec3(type) {
  function functiondef (line 532) | function functiondef(type, value) {
  function funarg (line 537) | function funarg(type) {
  function className (line 541) | function className(type, value) {
  function classNameAfter (line 544) | function classNameAfter(type, value) {
  function classBody (line 548) | function classBody(type, value) {
  function classGetterSetter (line 561) | function classGetterSetter(type) {
  function afterModule (line 566) | function afterModule(type, value) {
  function afterExport (line 570) | function afterExport(_type, value) {
  function afterImport (line 575) | function afterImport(type) {
  function importSpec (line 579) | function importSpec(type, value) {
  function maybeFrom (line 584) | function maybeFrom(_type, value) {
  function arrayLiteral (line 587) | function arrayLiteral(type) {
  function maybeArrayComprehension (line 591) | function maybeArrayComprehension(type) {
  function comprehension (line 596) | function comprehension(type) {

FILE: public/admin/js/plugins/codemirror/mode/javascript/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...
  function LD (line 161) | function LD(name) {

FILE: public/admin/js/plugins/codemirror/mode/jinja2/jinja2.js
  function tokenBase (line 36) | function tokenBase (stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/julia/julia.js
  function wordRegexp (line 17) | function wordRegexp(words) {
  function in_array (line 39) | function in_array(state) {
  function cur_scope (line 49) | function cur_scope(state) {
  function tokenBase (line 57) | function tokenBase(stream, state) {
  function tokenStringFactory (line 214) | function tokenStringFactory(delimiter) {
  function tokenLexer (line 249) | function tokenLexer(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/kotlin/kotlin.js
  function words (line 15) | function words(str) {
  function tokenBase (line 34) | function tokenBase(stream, state) {
  function startString (line 96) | function startString(quote, stream, state) {
  function tokenBaseUntilBrace (line 137) | function tokenBaseUntilBrace() {
  function tokenBaseUntilSpace (line 157) | function tokenBaseUntilSpace() {
  function tokenComment (line 174) | function tokenComment(stream, state) {
  function expectExpression (line 186) | function expectExpression(last) {
  function Context (line 191) | function Context(indented, column, type, align, prev) {
  function pushContext (line 199) | function pushContext(state, col, type) {
  function popContext (line 203) | function popContext(state) {

FILE: public/admin/js/plugins/codemirror/mode/lua/lua.js
  function prefixRE (line 21) | function prefixRE(words) {
  function wordRE (line 24) | function wordRE(words) {
  function readBracket (line 70) | function readBracket(stream) {
  function normal (line 77) | function normal(stream, state) {
  function bracketed (line 100) | function bracketed(level, style) {
  function string (line 113) | function string(quote) {

FILE: public/admin/js/plugins/codemirror/mode/markdown/markdown.js
  function switchInline (line 104) | function switchInline(stream, state, f) {
  function switchBlock (line 109) | function switchBlock(stream, state, f) {
  function blankLine (line 117) | function blankLine(state) {
  function blockNormal (line 138) | function blockNormal(stream, state) {
  function htmlBlock (line 213) | function htmlBlock(stream, state) {
  function local (line 224) | function local(stream, state) {
  function getType (line 243) | function getType(state) {
  function handleText (line 324) | function handleText(stream, state) {
  function inlineNormal (line 331) | function inlineNormal(stream, state) {
  function linkInline (line 525) | function linkInline(stream, state) {
  function linkHref (line 545) | function linkHref(stream, state) {
  function getLinkHrefInside (line 560) | function getLinkHrefInside(endChar) {
  function footnoteLink (line 581) | function footnoteLink(stream, state) {
  function footnoteLinkInside (line 592) | function footnoteLinkInside(stream, state) {
  function footnoteUrl (line 606) | function footnoteUrl(stream, state) {
  function inlineRE (line 624) | function inlineRE(endChar) {

FILE: public/admin/js/plugins/codemirror/mode/markdown/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...
  function FT (line 8) | function FT(name) { test.mode(name, modeHighlightFormatting, Array.proto...

FILE: public/admin/js/plugins/codemirror/mode/mirc/mirc.js
  function parseWords (line 18) | function parseWords(str) {
  function chain (line 86) | function chain(stream, state, f) {
  function tokenBase (line 90) | function tokenBase(stream, state) {
  function tokenComment (line 153) | function tokenComment(stream, state) {
  function tokenUnparsed (line 164) | function tokenUnparsed(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/mllike/mllike.js
  function tokenBase (line 50) | function tokenBase(stream, state) {
  function tokenString (line 91) | function tokenString(stream, state) {
  function tokenComment (line 106) | function tokenComment(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/modelica/modelica.js
  function tokenLineComment (line 30) | function tokenLineComment(stream, state) {
  function tokenBlockComment (line 36) | function tokenBlockComment(stream, state) {
  function tokenString (line 48) | function tokenString(stream, state) {
  function tokenIdent (line 62) | function tokenIdent(stream, state) {
  function tokenQIdent (line 81) | function tokenQIdent(stream, state) {
  function tokenUnsignedNuber (line 93) | function tokenUnsignedNuber(stream, state) {
  function words (line 202) | function words(str) {
  function def (line 213) | function def(mimes, mode) {

FILE: public/admin/js/plugins/codemirror/mode/nginx/nginx.js
  function words (line 16) | function words(str) {
  function ret (line 36) | function ret(style, tp) {type = tp; return style;}
  function tokenBase (line 38) | function tokenBase(stream, state) {
  function tokenCComment (line 97) | function tokenCComment(stream, state) {
  function tokenSGMLComment (line 109) | function tokenSGMLComment(stream, state) {
  function tokenString (line 121) | function tokenString(quote) {

FILE: public/admin/js/plugins/codemirror/mode/ntriples/ntriples.js
  function transitState (line 59) | function transitState(currState, c) {

FILE: public/admin/js/plugins/codemirror/mode/octave/octave.js
  function wordRegexp (line 15) | function wordRegexp(words) {
  function tokenTranspose (line 46) | function tokenTranspose(stream, state) {
  function tokenComment (line 57) | function tokenComment(stream, state) {
  function tokenBase (line 66) | function tokenBase(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/pascal/pascal.js
  function words (line 15) | function words(str) {
  function tokenBase (line 27) | function tokenBase(stream, state) {
  function tokenString (line 65) | function tokenString(quote) {
  function tokenComment (line 77) | function tokenComment(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/pegjs/pegjs.js
  function identifier (line 17) | function identifier(stream) {

FILE: public/admin/js/plugins/codemirror/mode/perl/perl.js
  function tokenChain (line 483) | function tokenChain(stream,state,chain,style,tail){     // NOTE: chain.l...
  function tokenSOMETHING (line 503) | function tokenSOMETHING(stream,state,string){
  function tokenPerl (line 511) | function tokenPerl(stream,state){
  function look (line 799) | function look(stream, c){
  function prefix (line 804) | function prefix(stream, c){
  function suffix (line 814) | function suffix(stream, c){
  function eatSuffix (line 821) | function eatSuffix(stream, c){

FILE: public/admin/js/plugins/codemirror/mode/php/php.js
  function keywords (line 14) | function keywords(str) {
  function matchSequence (line 21) | function matchSequence(list, end) {
  function stringWithEscapes (line 33) | function stringWithEscapes(closing) {
  function stringWithEscapes_ (line 36) | function stringWithEscapes_(stream, state, closing) {
  function dispatch (line 152) | function dispatch(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/php/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...
  function build_recursive_monsters (line 78) | function build_recursive_monsters(nt, t, n){
  function build_recursive_monsters_2 (line 124) | function build_recursive_monsters_2(mf1, mf2, nt, t, n){

FILE: public/admin/js/plugins/codemirror/mode/pig/pig.js
  function chain (line 28) | function chain(stream, state, f) {
  function ret (line 34) | function ret(tp, style) {
  function tokenComment (line 39) | function tokenComment(stream, state) {
  function tokenString (line 52) | function tokenString(quote) {
  function tokenBase (line 67) | function tokenBase(stream, state) {
  function keywords (line 150) | function keywords(str) {

FILE: public/admin/js/plugins/codemirror/mode/puppet/puppet.js
  function define (line 22) | function define(style, string) {
  function tokenString (line 47) | function tokenString(stream, state) {
  function tokenize (line 68) | function tokenize(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/python/python.js
  function wordRegexp (line 14) | function wordRegexp(words) {
  function top (line 44) | function top(state) {
  function tokenBase (line 87) | function tokenBase(stream, state) {
  function tokenBaseInner (line 108) | function tokenBaseInner(stream, state) {
  function tokenStringFactory (line 193) | function tokenStringFactory(delimiter) {
  function pushScope (line 226) | function pushScope(stream, state, type) {
  function dedent (line 238) | function dedent(stream, state) {
  function tokenLexer (line 247) | function tokenLexer(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/q/q.js
  function buildRE (line 19) | function buildRE(w){return new RegExp("^("+w.join("|")+")$");}
  function tokenBase (line 20) | function tokenBase(stream,state){
  function tokenLineComment (line 62) | function tokenLineComment(stream,state){
  function tokenBlockComment (line 65) | function tokenBlockComment(stream,state){
  function tokenCommentToEOF (line 72) | function tokenCommentToEOF(stream){return stream.skipToEnd(),"comment";}
  function tokenString (line 73) | function tokenString(stream,state){
  function pushContext (line 82) | function pushContext(state,type,col){state.context={prev:state.context,i...
  function popContext (line 83) | function popContext(state){state.indent=state.context.indent;state.conte...

FILE: public/admin/js/plugins/codemirror/mode/r/r.js
  function wordObj (line 15) | function wordObj(str) {
  function tokenBase (line 27) | function tokenBase(stream, state) {
  function tokenString (line 81) | function tokenString(quote) {
  function push (line 102) | function push(state, type, stream) {
  function pop (line 109) | function pop(state) {

FILE: public/admin/js/plugins/codemirror/mode/rst/rst.js
  function format (line 76) | function format(string) {
  function to_normal (line 156) | function to_normal(stream, state) {
  function to_explicit (line 356) | function to_explicit(stream, state) {
  function to_comment (line 463) | function to_comment(stream, state) {
  function to_verbatim (line 467) | function to_verbatim(stream, state) {
  function as_block (line 471) | function as_block(stream, state, token) {
  function to_mode (line 484) | function to_mode(stream, state) {
  function context (line 503) | function context(phase, stage, mode, local) {
  function change (line 507) | function change(state, tok, ctx) {
  function stage (line 512) | function stage(state) {
  function phase (line 516) | function phase(state) {

FILE: public/admin/js/plugins/codemirror/mode/ruby/ruby.js
  function wordObj (line 15) | function wordObj(words) {
  function chain (line 34) | function chain(newtok, stream, state) {
  function tokenBase (line 39) | function tokenBase(stream, state) {
  function tokenBaseUntilBrace (line 152) | function tokenBaseUntilBrace(depth) {
  function tokenBaseOnce (line 168) | function tokenBaseOnce() {
  function readQuoted (line 179) | function readQuoted(quote, style, embed, unescaped) {
  function readHereDoc (line 210) | function readHereDoc(phrase) {
  function readBlockComment (line 217) | function readBlockComment(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/ruby/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/rust/rust.js
  function r (line 40) | function r(tc, style) {
  function tokenBase (line 45) | function tokenBase(stream, state) {
  function tokenString (line 104) | function tokenString(stream, state) {
  function tokenComment (line 118) | function tokenComment(depth) {
  function pass (line 144) | function pass() {
  function cont (line 147) | function cont() {
  function pushlex (line 152) | function pushlex(type, info) {
  function poplex (line 161) | function poplex() {
  function typecx (line 169) | function typecx() { cx.state.keywords = typeKeywords; }
  function valcx (line 170) | function valcx() { cx.state.keywords = valKeywords; }
  function commasep (line 173) | function commasep(comb, end) {
  function stat_of (line 185) | function stat_of(comb, tag) {
  function block (line 188) | function block(type) {
  function endstatement (line 201) | function endstatement(type) {
  function expression (line 205) | function expression(type) {
  function maybeop (line 218) | function maybeop(type) {
  function maybeprop (line 225) | function maybeprop() {
  function exprbrace (line 229) | function exprbrace(type) {
  function record_of (line 239) | function record_of(comb) {
  function blockvars (line 249) | function blockvars(type) {
  function letdef1 (line 255) | function letdef1(type) {
  function letdef2 (line 261) | function letdef2(type) {
  function maybetype (line 265) | function maybetype(type) {
  function inop (line 269) | function inop(type) {
  function fndef (line 273) | function fndef(type) {
  function tydef (line 283) | function tydef(type) {
  function enumdef (line 289) | function enumdef(type) {
  function enumblock (line 296) | function enumblock(type) {
  function mod (line 302) | function mod(type) {
  function iface (line 307) | function iface(type) {
  function impl (line 313) | function impl(type) {
  function typarams (line 320) | function typarams() {
  function argdef (line 326) | function argdef(type) {
  function rtype (line 331) | function rtype(type) {
  function rtypemaybeparam (line 340) | function rtypemaybeparam() {
  function fntype (line 344) | function fntype(type) {
  function pattern (line 349) | function pattern(type) {
  function patternmaybeop (line 356) | function patternmaybeop(type) {
  function altbody (line 361) | function altbody(type) {
  function altblock1 (line 365) | function altblock1(type) {
  function altblock2 (line 372) | function altblock2(type) {
  function macro (line 377) | function macro(type) {
  function matchBrackets (line 381) | function matchBrackets(type, comb) {
  function parse (line 388) | function parse(state, stream, style) {

FILE: public/admin/js/plugins/codemirror/mode/sass/sass.js
  function tokenRegexp (line 15) | function tokenRegexp(words) {
  function urlTokens (line 27) | function urlTokens(stream, state) {
  function comment (line 47) | function comment(indentation, multiLine) {
  function buildStringTokenizer (line 66) | function buildStringTokenizer(quote, greedy) {
  function buildInterpolationTokenizer (line 92) | function buildInterpolationTokenizer(currentTokenizer) {
  function indent (line 104) | function indent(state) {
  function dedent (line 113) | function dedent(state) {
  function tokenBase (line 119) | function tokenBase(stream, state) {
  function tokenLexer (line 270) | function tokenLexer(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/scheme/scheme.js
  function makeKeywords (line 23) | function makeKeywords(str) {
  function stateStack (line 32) | function stateStack(indent, type, prev) { // represents a state stack ob...
  function pushStack (line 38) | function pushStack(state, indent, type) {
  function popStack (line 42) | function popStack(state) {
  function isBinaryNumber (line 51) | function isBinaryNumber (stream) {
  function isOctalNumber (line 55) | function isOctalNumber (stream) {
  function isDecimalNumber (line 59) | function isDecimalNumber (stream, backup) {
  function isHexNumber (line 66) | function isHexNumber (stream) {

FILE: public/admin/js/plugins/codemirror/mode/shell/shell.js
  function define (line 17) | function define(style, string) {
  function tokenBase (line 38) | function tokenBase(stream, state) {
  function tokenString (line 84) | function tokenString(quote) {
  function tokenize (line 123) | function tokenize(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/shell/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/sieve/sieve.js
  function words (line 15) | function words(str) {
  function tokenBase (line 25) | function tokenBase(stream, state) {
  function tokenMultiLineString (line 112) | function tokenMultiLineString(stream, state)
  function tokenCComment (line 137) | function tokenCComment(stream, state) {
  function tokenString (line 149) | function tokenString(quote) {

FILE: public/admin/js/plugins/codemirror/mode/slim/slim.js
  function backup (line 72) | function backup(pos, tokenize, style) {
  function maybeBackup (line 87) | function maybeBackup(stream, state, pat, offset, style) {
  function continueLine (line 97) | function continueLine(state, column) {
  function finishContinue (line 106) | function finishContinue(state) {
  function lineContinuable (line 113) | function lineContinuable(column, tokenize) {
  function commaContinuable (line 127) | function commaContinuable(column, tokenize) {
  function rubyInQuote (line 138) | function rubyInQuote(endQuote, tokenize) {
  function startRubySplat (line 152) | function startRubySplat(tokenize) {
  function ruby (line 174) | function ruby(stream, state) {
  function htmlLine (line 178) | function htmlLine(stream, state) {
  function html (line 184) | function html(stream, state) {
  function startHtmlLine (line 192) | function startHtmlLine(lastTokenize) {
  function startHtmlMode (line 200) | function startHtmlMode(stream, state, offset) {
  function comment (line 211) | function comment(stream, state) {
  function commentMode (line 216) | function commentMode(stream, state) {
  function attributeWrapper (line 227) | function attributeWrapper(stream, state) {
  function attributeWrapperAssign (line 241) | function attributeWrapperAssign(stream, state) {
  function attributeWrapperValue (line 248) | function attributeWrapperValue(stream, state) {
  function startAttributeWrapperMode (line 265) | function startAttributeWrapperMode(state, endQuote, tokenize) {
  function sub (line 278) | function sub(stream, state) {
  function firstSub (line 292) | function firstSub(stream, state) {
  function createMode (line 298) | function createMode(mode) {
  function getMode (line 311) | function getMode(mode) {
  function startSubMode (line 318) | function startSubMode(mode, state) {
  function doctypeLine (line 335) | function doctypeLine(stream, _state) {
  function startLine (line 340) | function startLine(stream, state) {
  function slim (line 368) | function slim(stream, state) {
  function slimTag (line 375) | function slimTag(stream, state) {
  function slimTagExtras (line 386) | function slimTagExtras(stream, state) {
  function slimClass (line 393) | function slimClass(stream, state) {
  function slimAttribute (line 404) | function slimAttribute(stream, state) {
  function slimAttributeAssign (line 419) | function slimAttributeAssign(stream, state) {
  function slimAttributeValue (line 428) | function slimAttributeValue(stream, state) {
  function slimAttributeSymbols (line 447) | function slimAttributeSymbols(stream, state) {
  function readQuoted (line 456) | function readQuoted(quote, style, embed, unescaped, nextTokenize) {
  function slimContent (line 490) | function slimContent(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/slim/test.js
  function MT (line 8) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/smartymixed/smartymixed.js
  function reEsc (line 41) | function reEsc(str) { return str.replace(/[^\s\w]/g, "\\$&"); }

FILE: public/admin/js/plugins/codemirror/mode/solr/solr.js
  function isNumber (line 21) | function isNumber(word) {
  function tokenString (line 25) | function tokenString(quote) {
  function tokenOperator (line 38) | function tokenOperator(operator) {
  function tokenWord (line 57) | function tokenWord(ch) {
  function tokenBase (line 76) | function tokenBase(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/sparql/sparql.js
  function wordRegexp (line 18) | function wordRegexp(words) {
  function tokenBase (line 30) | function tokenBase(stream, state) {
  function tokenLiteral (line 77) | function tokenLiteral(quote) {
  function pushContext (line 91) | function pushContext(state, type, col) {
  function popContext (line 94) | function popContext(state) {

FILE: public/admin/js/plugins/codemirror/mode/sql/sql.js
  function tokenBase (line 26) | function tokenBase(stream, state) {
  function tokenLiteral (line 120) | function tokenLiteral(quote) {
  function tokenComment (line 133) | function tokenComment(stream, state) {
  function pushContext (line 149) | function pushContext(stream, state, type) {
  function popContext (line 158) | function popContext(state) {
  function hookIdentifier (line 209) | function hookIdentifier(stream) {
  function hookVar (line 221) | function hookVar(stream) {
  function hookClient (line 248) | function hookClient(stream) {
  function set (line 263) | function set(str) {

FILE: public/admin/js/plugins/codemirror/mode/stex/stex.js
  function pushCommand (line 22) | function pushCommand(state, command) {
  function peekCommand (line 26) | function peekCommand(state) {
  function popCommand (line 34) | function popCommand(state) {
  function getMostPowerful (line 42) | function getMostPowerful(state) {
  function addPluginPattern (line 54) | function addPluginPattern(pluginName, cmdStyle, styles) {
  function setState (line 88) | function setState(state, f) {
  function normal (line 93) | function normal(source, state) {
  function inCComment (line 166) | function inCComment(source, state) {
  function inMathMode (line 172) | function inMathMode(source, state, endModeSeq) {
  function beginParams (line 220) | function beginParams(source, state) {

FILE: public/admin/js/plugins/codemirror/mode/stex/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/tcl/tcl.js
  function parseWords (line 17) | function parseWords(str) {
  function chain (line 37) | function chain(stream, state, f) {
  function tokenBase (line 41) | function tokenBase(stream, state) {
  function tokenString (line 92) | function tokenString(quote) {
  function tokenComment (line 106) | function tokenComment(stream, state) {
  function tokenUnparsed (line 117) | function tokenUnparsed(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/textile/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/textile/textile.js
  function Parser (line 49) | function Parser(regExpFactory, state, stream) {
  function RegExpFactory (line 260) | function RegExpFactory() {

FILE: public/admin/js/plugins/codemirror/mode/tiddlywiki/tiddlywiki.js
  function kw (line 36) | function kw(type) {
  function chain (line 69) | function chain(stream, state, f) {
  function ret (line 78) | function ret(tp, style, cont) {
  function jsTokenBase (line 84) | function jsTokenBase(stream, state) {
  function twTokenComment (line 221) | function twTokenComment(stream, state) {
  function twTokenStrong (line 235) | function twTokenStrong(stream, state) {
  function twTokenCode (line 249) | function twTokenCode(stream, state) {
  function twTokenEm (line 271) | function twTokenEm(stream, state) {
  function twTokenUnderline (line 285) | function twTokenUnderline(stream, state) {
  function twTokenStrike (line 300) | function twTokenStrike(stream, state) {
  function twTokenMacro (line 314) | function twTokenMacro(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/tiki/tiki.js
  function inBlock (line 15) | function inBlock(style, terminator, returnTokenizer) {
  function inLine (line 31) | function inLine(style) {
  function inText (line 41) | function inText(stream, state) {
  function inPlugin (line 144) | function inPlugin(stream, state) {
  function inAttribute (line 178) | function inAttribute(quote) {
  function inAttributeNoQuote (line 190) | function inAttributeNoQuote() {
  function pass (line 205) | function pass() {
  function cont (line 209) | function cont() {
  function pushContext (line 214) | function pushContext(pluginName, startOfLine) {
  function popContext (line 225) | function popContext() {
  function element (line 229) | function element(type) {
  function endplugin (line 250) | function endplugin(startOfLine) {
  function endcloseplugin (line 262) | function endcloseplugin(err) {
  function attributes (line 270) | function attributes(type) {
  function attvalue (line 275) | function attvalue(type) {
  function attvaluemaybe (line 280) | function attvaluemaybe(type) {

FILE: public/admin/js/plugins/codemirror/mode/tornado/tornado.js
  function tokenBase (line 25) | function tokenBase (stream, state) {
  function inTag (line 35) | function inTag (close) {

FILE: public/admin/js/plugins/codemirror/mode/turtle/turtle.js
  function wordRegexp (line 18) | function wordRegexp(words) {
  function tokenBase (line 25) | function tokenBase(stream, state) {
  function tokenLiteral (line 77) | function tokenLiteral(quote) {
  function pushContext (line 91) | function pushContext(state, type, col) {
  function popContext (line 94) | function popContext(state) {

FILE: public/admin/js/plugins/codemirror/mode/vb/vb.js
  function wordRegexp (line 17) | function wordRegexp(words) {
  function indent (line 53) | function indent(_stream, state) {
  function dedent (line 57) | function dedent(_stream, state) {
  function tokenBase (line 61) | function tokenBase(stream, state) {
  function tokenStringFactory (line 171) | function tokenStringFactory(delimiter) {
  function tokenLexer (line 197) | function tokenLexer(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/vbscript/vbscript.js
  function wordRegexp (line 28) | function wordRegexp(words) {
  function indent (line 108) | function indent(_stream, state) {
  function dedent (line 112) | function dedent(_stream, state) {
  function tokenBase (line 116) | function tokenBase(stream, state) {
  function tokenStringFactory (line 259) | function tokenStringFactory(delimiter) {
  function tokenLexer (line 285) | function tokenLexer(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/velocity/velocity.js
  function parseWords (line 15) | function parseWords(str) {
  function chain (line 28) | function chain(stream, state, f) {
  function tokenBase (line 32) | function tokenBase(stream, state) {
  function tokenString (line 129) | function tokenString(quote) {
  function tokenComment (line 149) | function tokenComment(stream, state) {
  function tokenUnparsed (line 161) | function tokenUnparsed(stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/verilog/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/verilog/verilog.js
  function words (line 22) | function words(str) {
  function tokenBase (line 109) | function tokenBase(stream, state) {
  function tokenString (line 199) | function tokenString(quote) {
  function tokenComment (line 212) | function tokenComment(stream, state) {
  function Context (line 224) | function Context(indented, column, type, align, prev) {
  function pushContext (line 231) | function pushContext(state, col, type) {
  function popContext (line 236) | function popContext(state) {
  function isClosing (line 244) | function isClosing(text, contextClosing) {
  function buildElectricInputRegEx (line 259) | function buildElectricInputRegEx() {

FILE: public/admin/js/plugins/codemirror/mode/xml/test.js
  function MT (line 6) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/xml/xml.js
  function inText (line 66) | function inText(stream, state) {
  function inTag (line 113) | function inTag(stream, state) {
  function inAttribute (line 138) | function inAttribute(quote) {
  function inBlock (line 152) | function inBlock(style, terminator) {
  function doctype (line 164) | function doctype(depth) {
  function Context (line 185) | function Context(state, tagName, startOfLine) {
  function popContext (line 193) | function popContext(state) {
  function maybePopContext (line 196) | function maybePopContext(state, nextTagName) {
  function baseState (line 211) | function baseState(type, stream, state) {
  function tagNameState (line 221) | function tagNameState(type, stream, state) {
  function closeTagNameState (line 231) | function closeTagNameState(type, stream, state) {
  function closeState (line 250) | function closeState(type, _stream, state) {
  function closeStateErr (line 258) | function closeStateErr(type, stream, state) {
  function attrState (line 263) | function attrState(type, _stream, state) {
  function attrEqState (line 282) | function attrEqState(type, stream, state) {
  function attrValueState (line 287) | function attrValueState(type, stream, state) {
  function attrContinuedState (line 293) | function attrContinuedState(type, stream, state) {

FILE: public/admin/js/plugins/codemirror/mode/xquery/test.js
  function MT (line 11) | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arg...

FILE: public/admin/js/plugins/codemirror/mode/xquery/xquery.js
  function kw (line 21) | function kw(type) {return {type: type, style: "keyword"};}
  function ret (line 75) | function ret(tp, style, cont) {
  function chain (line 80) | function chain(stream, state, f) {
  function tokenBase (line 86) | function tokenBase(stream, state) {
  function tokenComment (line 220) | function tokenComment(stream, state) {
  function tokenString (line 243) | function tokenString(quote, f) {
  function tokenVariable (line 283) | function tokenVariable(stream, state) {
  function tokenTag (line 300) | function tokenTag(name, isclose) {
  function tokenAttribute (line 323) | function tokenAttribute(stream, state) {
  function tokenXMLComment (line 358) | function tokenXMLComment(stream, state) {
  function tokenCDATA (line 370) | function tokenCDATA(stream, state) {
  function tokenPreProcessing (line 381) | function tokenPreProcessing(stream, state) {
  function isInXmlBlock (line 393) | function isInXmlBlock(state) { return isIn(state, "tag"); }
  function isInXmlAttributeBlock (line 394) | function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); }
  function isInXmlConstructor (line 395) | function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"...
  function isInString (line 396) | function isInString(state) { return isIn(state, "string"); }
  function isEQNameAhead (line 398) | function isEQNameAhead(stream) {
  function isIn (line 408) | function isIn(state, type) {
  function pushStateStack (line 412) | function pushStateStack(state, newState) {
  function popStateStack (line 416) | function popStateStack(state) {

FILE: public/admin/js/plugins/dataTables/jquery.dataTables.js
  function _fnHungarianMap (line 313) | function _fnHungarianMap ( o )
  function _fnCamelToHungarian (line 351) | function _fnCamelToHungarian ( src, user, force )
  function _fnLanguageCompat (line 390) | function _fnLanguageCompat( lang )
  function _fnCompatOpts (line 442) | function _fnCompatOpts ( init )
  function _fnCompatCols (line 475) | function _fnCompatCols ( init )
  function _fnBrowserDetect (line 489) | function _fnBrowserDetect( settings )
  function _fnReduce (line 543) | function _fnReduce ( that, fn, init, start, end, inc )
  function _fnAddColumn (line 577) | function _fnAddColumn( oSettings, nTh )
  function _fnColumnOptions (line 609) | function _fnColumnOptions( oSettings, iCol, oOptions )
  function _fnAdjustColumnSizing (line 736) | function _fnAdjustColumnSizing ( settings )
  function _fnVisibleToColumnIndex (line 768) | function _fnVisibleToColumnIndex( oSettings, iMatch )
  function _fnColumnIndexToVisible (line 786) | function _fnColumnIndexToVisible( oSettings, iMatch )
  function _fnVisbleColumns (line 801) | function _fnVisbleColumns( oSettings )
  function _fnGetColumns (line 815) | function _fnGetColumns( oSettings, sParam )
  function _fnColumnTypes (line 834) | function _fnColumnTypes ( settings )
  function _fnApplyColumnDefs (line 905) | function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
  function _fnAddData (line 985) | function _fnAddData ( oSettings, aDataIn, nTr, anTds )
  function _fnAddTr (line 1033) | function _fnAddTr( settings, trs )
  function _fnNodeToDataIndex (line 1056) | function _fnNodeToDataIndex( oSettings, n )
  function _fnNodeToColumnIndex (line 1070) | function _fnNodeToColumnIndex( oSettings, iRow, n )
  function _fnGetCellData (line 1085) | function _fnGetCellData( settings, rowIdx, colIdx, type )
  function _fnSetCellData (line 1132) | function _fnSetCellData( settings, rowIdx, colIdx, val )
  function _fnSplitObjNotation (line 1154) | function _fnSplitObjNotation( str )
  function _fnGetObjectDataFn (line 1169) | function _fnGetObjectDataFn( mSource )
  function _fnSetObjectDataFn (line 1292) | function _fnSetObjectDataFn( mSource )
  function _fnGetDataMaster (line 1401) | function _fnGetDataMaster ( settings )
  function _fnClearTable (line 1412) | function _fnClearTable( settings )
  function _fnDeleteIndex (line 1427) | function _fnDeleteIndex( a, iTarget, splice )
  function _fnInvalidate (line 1466) | function _fnInvalidate( settings, rowIdx, src, colIdx )
  function _fnGetRowElements (line 1544) | function _fnGetRowElements( settings, row, colIdx, d )
  function _fnCreateTr (line 1638) | function _fnCreateTr ( oSettings, iRow, nTrIn, anTds )
  function _fnRowAttributes (line 1715) | function _fnRowAttributes( row )
  function _fnBuildHead (line 1749) | function _fnBuildHead( oSettings )
  function _fnDrawHead (line 1835) | function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
  function _fnDraw (line 1933) | function _fnDraw( oSettings )
  function _fnReDraw (line 2074) | function _fnReDraw( settings, holdPosition )
  function _fnAddOptionsHtml (line 2112) | function _fnAddOptionsHtml ( oSettings )
  function _fnDetectHeader (line 2267) | function _fnDetectHeader ( aLayout, nThead )
  function _fnGetUniqueThs (line 2342) | function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
  function _fnBuildAjax (line 2381) | function _fnBuildAjax( oSettings, data, fn )
  function _fnAjaxUpdate (line 2509) | function _fnAjaxUpdate( settings )
  function _fnAjaxParameters (line 2540) | function _fnAjaxParameters( settings )
  function _fnAjaxUpdateDraw (line 2648) | function _fnAjaxUpdateDraw ( settings, json )
  function _fnAjaxDataSrc (line 2698) | function _fnAjaxDataSrc ( oSettings, json )
  function _fnFeatureHtmlFilter (line 2722) | function _fnFeatureHtmlFilter ( settings )
  function _fnFilterComplete (line 2810) | function _fnFilterComplete ( oSettings, oInput, iForce )
  function _fnFilterCustom (line 2863) | function _fnFilterCustom( settings )
  function _fnFilterColumn (line 2900) | function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, ca...
  function _fnFilter (line 2930) | function _fnFilter( settings, input, force, regex, smart, caseInsensitive )
  function _fnFilterCreateSearch (line 2982) | function _fnFilterCreateSearch( search, regex, smart, caseInsensitive )
  function _fnEscapeRegex (line 3018) | function _fnEscapeRegex ( sVal )
  function _fnFilterData (line 3029) | function _fnFilterData ( settings )
  function _fnSearchToCamel (line 3102) | function _fnSearchToCamel ( obj )
  function _fnSearchToHung (line 3121) | function _fnSearchToHung ( obj )
  function _fnFeatureHtmlInfo (line 3137) | function _fnFeatureHtmlInfo ( settings )
  function _fnUpdateInfo (line 3171) | function _fnUpdateInfo ( settings )
  function _fnInfoMacros (line 3209) | function _fnInfoMacros ( settings, str )
  function _fnInitialise (line 3236) | function _fnInitialise ( settings )
  function _fnInitComplete (line 3317) | function _fnInitComplete ( settings, json )
  function _fnLengthChange (line 3331) | function _fnLengthChange ( settings, val )
  function _fnFeatureHtmlLength (line 3349) | function _fnFeatureHtmlLength ( settings )
  function _fnFeatureHtmlPaginate (line 3410) | function _fnFeatureHtmlPaginate ( settings )
  function _fnPageChange (line 3471) | function _fnPageChange ( settings, action, redraw )
  function _fnFeatureHtmlProcessing (line 3544) | function _fnFeatureHtmlProcessing ( settings )
  function _fnProcessingDisplay (line 3561) | function _fnProcessingDisplay ( settings, show )
  function _fnFeatureHtmlTable (line 3576) | function _fnFeatureHtmlTable ( settings )
  function _fnScrollDraw (line 3740) | function _fnScrollDraw ( settings )
  function _fnApplyToChildren (line 4030) | function _fnApplyToChildren( fn, an1, an2 )
  function _fnCalculateColumnWidths (line 4069) | function _fnCalculateColumnWidths ( oSettings )
  function _fnThrottle (line 4242) | function _fnThrottle( fn, freq ) {
  function _fnConvertToWidth (line 4280) | function _fnConvertToWidth ( width, parent )
  function _fnScrollingWidthAdjust (line 4304) | function _fnScrollingWidthAdjust ( settings, n )
  function _fnGetWidestNode (line 4325) | function _fnGetWidestNode( settings, colIdx )
  function _fnGetMaxLenString (line 4346) | function _fnGetMaxLenString( settings, colIdx )
  function _fnStringToCss (line 4370) | function _fnStringToCss( s )
  function _fnScrollBarWidth (line 4394) | function _fnScrollBarWidth ()
  function _fnSortFlatten (line 4437) | function _fnSortFlatten ( settings )
  function _fnSort (line 4509) | function _fnSort ( oSettings )
  function _fnSortAria (line 4635) | function _fnSortAria ( settings )
  function _fnSortListener (line 4690) | function _fnSortListener ( settings, colIdx, append, callback )
  function _fnSortAttachListener (line 4770) | function _fnSortAttachListener ( settings, attachTo, colIdx, callback )
  function _fnSortingClasses (line 4808) | function _fnSortingClasses( settings )
  function _fnSortData (line 4841) | function _fnSortData( settings, idx )
  function _fnSaveState (line 4884) | function _fnSaveState ( settings )
  function _fnLoadState (line 4919) | function _fnLoadState ( settings, oInit )
  function _fnSettingsFromNode (line 4994) | function _fnSettingsFromNode ( table )
  function _fnLog (line 5013) | function _fnLog( settings, level, msg, tn )
  function _fnMap (line 5049) | function _fnMap( ret, src, name, mappedName )
  function _fnExtend (line 5091) | function _fnExtend( out, extender, breakRefs )
  function _fnBindAction (line 5127) | function _fnBindAction( n, oData, fn )
  function _fnCallbackReg (line 5156) | function _fnCallbackReg( oSettings, sStore, fn, sName )
  function _fnCallbackFire (line 5182) | function _fnCallbackFire( settings, callbackArr, e, args )
  function _fnLengthOverflow (line 5200) | function _fnLengthOverflow ( settings )
  function _fnRenderer (line 5225) | function _fnRenderer( settings, type )
  function _fnDataSource (line 5254) | function _fnDataSource ( settings )
  function _numbers (line 14043) | function _numbers ( page, pages ) {
  function _addNumericSort (line 14320) | function _addNumericSort ( decimalPlace ) {
  function _fnExternApiFunc (line 14539) | function _fnExternApiFunc (fn)

FILE: public/admin/js/plugins/datapicker/bootstrap-datepicker.js
  function UTCDate (line 27) | function UTCDate(){
  function UTCToday (line 30) | function UTCToday(){
  function alias (line 34) | function alias(method){
  function opts_from_el (line 1318) | function opts_from_el(el, prefix){
  function opts_from_locale (line 1335) | function opts_from_locale(lang){
  function match_part (line 1536) | function match_part(){

FILE: public/admin/js/plugins/dropzone/dropzone.js
  function require (line 12) | function require(name) {
  function Emitter (line 72) | function Emitter(obj) {
  function mixin (line 84) | function mixin(obj) {
  function on (line 122) | function on() {
  function ctor (line 267) | function ctor() { this.constructor = child; }
  function Dropzone (line 543) | function Dropzone(element, options) {

FILE: public/admin/js/plugins/flot/curvedLines.js
  function init (line 101) | function init(plot) {

FILE: public/admin/js/plugins/flot/jquery.flot.js
  function clamp (line 32) | function clamp(min,value,max){return value<min?min:value>max?max:value}
  function Canvas (line 67) | function Canvas(cls, container) {
  function Plot (line 508) | function Plot(placeholder, data_, options_, plugins) {
  function floorInBase (line 3164) | function floorInBase(n, base) {

FILE: public/admin/js/plugins/flot/jquery.flot.pie.js
  function init (line 68) | function init(plot) {

FILE: public/admin/js/plugins/flot/jquery.flot.resize.js
  function a (line 22) | function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s....
  function h (line 22) | function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$...
  function init (line 27) | function init(plot) {

FILE: public/admin/js/plugins/flot/jquery.flot.spline.js
  function getControlPoints (line 53) | function getControlPoints(x0, y0, x1, y1, x2, y2, tension) {
  function drawLine (line 77) | function drawLine(points, ctx, height, fill, seriesColor) {
  function queue (line 115) | function queue(ctx, type, points, cpoints) {
  function drawSpline (line 138) | function drawSpline(plot, ctx, series) {

FILE: public/admin/js/plugins/flot/jquery.flot.symbol.js
  function processRawData (line 17) | function processRawData(plot, series, datapoints) {
  function init (line 62) | function init(plot) {

FILE: public/admin/js/plugins/flot/jquery.flot.time.js
  function floorInBase (line 24) | function floorInBase(n, base) {
  function formatDate (line 31) | function formatDate(d, fmt, monthNames, dayNames) {
  function makeUtcWrapper (line 111) | function makeUtcWrapper(d) {
  function dateGenerator (line 145) | function dateGenerator(ts, opts) {
  function init (line 197) | function init(plot) {

FILE: public/admin/js/plugins/jquery-ui/jquery-ui.js
  function focusable (line 122) | function focusable( element, isTabIndexNotNaN ) {
  function visible (line 143) | function visible( element ) {
  function reduce (line 185) | function reduce( elem, size, border, margin ) {
  function handlerProxy (line 692) | function handlerProxy() {
  function handlerProxy (line 728) | function handlerProxy() {
  function isOverAxis (line 1931) | function isOverAxis( x, reference, size ) {
  function num (line 2305) | function num(v) {
  function isNumber (line 2309) | function isNumber(value) {
  function isOverAxis (line 3532) | function isOverAxis( x, reference, size ) {
  function isFloating (line 3536) | function isFloating(item) {
  function addItems (line 4155) | function addItems() {
  function delayEvent (line 4717) | function delayEvent( type, instance, container ) {
  function clamp (line 4961) | function clamp( value, prop, allowEmpty ) {
  function stringParse (line 4987) | function stringParse( string ) {
  function hue2rgb (line 5237) | function hue2rgb( p, q, h ) {
  function getElementStyles (line 5505) | function getElementStyles( elem ) {
  function styleDifference (line 5533) | function styleDifference( oldStyle, newStyle ) {
  function _normalizeArguments (line 5854) | function _normalizeArguments( effect, options, speed, callback ) {
  function standardAnimationOption (line 5906) | function standardAnimationOption( option ) {
  function run (line 5951) | function run( next ) {
  function Datepicker (line 7627) | function Datepicker() {
  function bindHover (line 9559) | function bindHover(dpDiv) {
  function extendRemove (line 9585) | function extendRemove(target, props) {
  function checkFocus (line 9891) | function checkFocus() {
  function filteredUi (line 10071) | function filteredUi( ui ) {
  function filteredUi (line 10113) | function filteredUi( ui ) {
  function childComplete (line 10747) | function childComplete() {
  function animComplete (line 10796) | function animComplete() {
  function escape (line 11605) | function escape( value ) {
  function getOffsets (line 12064) | function getOffsets( offsets, width, height ) {
  function parseCss (line 12071) | function parseCss( element, property ) {
  function getDimensions (line 12075) | function getDimensions( elem ) {
  function modifier (line 13337) | function modifier( fn ) {
  function checkFocus (line 13461) | function checkFocus() {
  function getNextTabId (line 13823) | function getNextTabId() {
  function isLocal (line 13827) | function isLocal( anchor ) {
  function constrain (line 14047) | function constrain() {
  function complete (line 14393) | function complete() {
  function show (line 14398) | function show() {
  function addDescribedBy (line 14658) | function addDescribedBy( elem, id ) {
  function removeDescribedBy (line 14666) | function removeDescribedBy( elem ) {
  function position (line 14887) | function position( event ) {

FILE: public/admin/js/plugins/justified-gallery/jquery.justifiedgallery.js
  function getErrorHtml (line 37) | function getErrorHtml(message, classOfError){
  function startProcess (line 97) | function startProcess(cont, images, settings){
  function buildImage (line 106) | function buildImage(image, suffix, nw, nh, l, minRowHeight, settings){
  function buildContRow (line 125) | function buildContRow(row, images, extraW, settings){
  function getSuffix (line 160) | function getSuffix(nw, nh, settings){
  function processesImages (line 178) | function processesImages($, cont, images, lastRowWidth, settings){
  function checkWidth (line 243) | function checkWidth($, cont, images, lastRowWidth, settings){

FILE: public/admin/js/plugins/metisMenu/jquery.metisMenu.js
  function Plugin (line 17) | function Plugin(element, options) {

FILE: public/admin/js/plugins/morris/morris.js
  function ctor (line 6) | function ctor() { this.constructor = child; }
  function EventEmitter (line 14) | function EventEmitter() {}
  function Grid (line 69) | function Grid(options) {
  function Hover (line 648) | function Hover(options) {
  function Line (line 707) | function Line(options) {
  function Area (line 1292) | function Area(options) {
  function Bar (line 1385) | function Bar(options) {
  function Donut (line 1637) | function Donut(options) {
  function DonutSegment (line 1796) | function DonutSegment(cx, cy, inner, outer, p0, p1, color, backgroundCol...

FILE: public/admin/js/plugins/nestable/jquery.nestable.js
  function Plugin (line 48) | function Plugin(element, options)

FILE: public/admin/js/plugins/rickshaw/vendor/d3.v3.js
  function n (line 1) | function n(n){return null!=n&&!isNaN(n)}
  function t (line 1) | function t(n){return n.length}
  function e (line 1) | function e(n){for(var t=1;n*t%1;)t*=10;return t}
  function r (line 1) | function r(n,t){try{for(var e in t)Object.defineProperty(n.prototype,e,{...
  function u (line 1) | function u(){}
  function i (line 1) | function i(){}
  function o (line 1) | function o(n,t,e){return function(){var r=e.apply(t,arguments);return r=...
  function a (line 1) | function a(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.substri...
  function c (line 1) | function c(){}
  function l (line 1) | function l(){}
  function s (line 1) | function s(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u]....
  function f (line 1) | function f(){mo.event.preventDefault()}
  function h (line 1) | function h(){for(var n,t=mo.event;n=t.sourceEvent;)t=n;return t}
  function g (line 1) | function g(n){for(var t=new l,e=0,r=arguments.length;++e<r;)t[arguments[...
  function p (line 1) | function p(n){return Lo(n,Ro),n}
  function d (line 1) | function d(n){return"function"==typeof n?n:function(){return Ho(n,this)}}
  function v (line 1) | function v(n){return"function"==typeof n?n:function(){return Fo(n,this)}}
  function m (line 1) | function m(n,t){function e(){this.removeAttribute(n)}function r(){this.r...
  function y (line 1) | function y(n){return n.trim().replace(/\s+/g," ")}
  function M (line 1) | function M(n){return new RegExp("(?:^|\\s+)"+mo.requote(n)+"(?:\\s+|$)",...
  function x (line 1) | function x(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r...
  function b (line 1) | function b(n){var t=M(n);return function(e,r){if(u=e.classList)return r?...
  function _ (line 1) | function _(n,t,e){function r(){this.style.removeProperty(n)}function u()...
  function w (line 1) | function w(n,t){function e(){delete this[n]}function r(){this[n]=t}funct...
  function S (line 1) | function S(n){return"function"==typeof n?n:(n=mo.ns.qualify(n)).local?fu...
  function E (line 1) | function E(n){return{__data__:n}}
  function k (line 1) | function k(n){return function(){return Oo(this,n)}}
  function A (line 1) | function A(n){return arguments.length||(n=mo.ascending),function(t,e){re...
  function N (line 1) | function N(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i....
  function T (line 1) | function T(n){return Lo(n,Io),n}
  function q (line 1) | function q(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.len...
  function z (line 1) | function z(){var n=this.__transition__;n&&++n.active}
  function C (line 1) | function C(n,t,e){function r(){var t=this[o];t&&(this.removeEventListene...
  function D (line 1) | function D(n,t){return function(e){var r=mo.event;mo.event=e,t[0]=this._...
  function j (line 1) | function j(n,t){var e=D(n,t);return function(n){var t=this,r=n.relatedTa...
  function L (line 1) | function L(){var n=".dragsuppress-"+ ++Xo,t="touchmove"+n,e="selectstart...
  function H (line 1) | function H(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerS...
  function F (line 1) | function F(n){return n>0?1:0>n?-1:0}
  function P (line 1) | function P(n){return n>1?0:-1>n?Bo:Math.acos(n)}
  function O (line 1) | function O(n){return n>1?Jo:-1>n?-Jo:Math.asin(n)}
  function R (line 1) | function R(n){return((n=Math.exp(n))-1/n)/2}
  function Y (line 1) | function Y(n){return((n=Math.exp(n))+1/n)/2}
  function I (line 1) | function I(n){return((n=Math.exp(2*n))-1)/(n+1)}
  function U (line 1) | function U(n){return(n=Math.sin(n/2))*n}
  function Z (line 1) | function Z(){}
  function V (line 1) | function V(n,t,e){return new X(n,t,e)}
  function X (line 1) | function X(n,t,e){this.h=n,this.s=t,this.l=e}
  function $ (line 1) | function $(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i...
  function B (line 1) | function B(n,t,e){return new W(n,t,e)}
  function W (line 1) | function W(n,t,e){this.h=n,this.c=t,this.l=e}
  function J (line 1) | function J(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),G(e,Math.cos(n*...
  function G (line 1) | function G(n,t,e){return new K(n,t,e)}
  function K (line 1) | function K(n,t,e){this.l=n,this.a=t,this.b=e}
  function Q (line 1) | function Q(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=tt(u)*sa...
  function nt (line 1) | function nt(n,t,e){return n>0?B(Math.atan2(e,t)*na,Math.sqrt(t*t+e*e),n)...
  function tt (line 1) | function tt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}
  function et (line 1) | function et(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}
  function rt (line 1) | function rt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n...
  function ut (line 1) | function ut(n){return ot(n>>16,255&n>>8,255&n)}
  function it (line 1) | function it(n){return ut(n)+""}
  function ot (line 1) | function ot(n,t,e){return new at(n,t,e)}
  function at (line 1) | function at(n,t,e){this.r=n,this.g=t,this.b=e}
  function ct (line 1) | function ct(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n...
  function lt (line 1) | function lt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n...
  function st (line 1) | function st(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n...
  function ft (line 1) | function ft(n,t,e){n=ht(n),t=ht(t),e=ht(e);var r=et((.4124564*n+.3575761...
  function ht (line 1) | function ht(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}
  function gt (line 1) | function gt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math...
  function pt (line 1) | function pt(n){return"function"==typeof n?n:function(){return n}}
  function dt (line 1) | function dt(n){return n}
  function vt (line 1) | function vt(n){return function(t,e,r){return 2===arguments.length&&"func...
  function mt (line 1) | function mt(n,t,e,r){function u(){var n,t=c.status;if(!t&&c.responseText...
  function yt (line 1) | function yt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}
  function Mt (line 1) | function Mt(){var n=bt(),t=_t()-n;t>24?(isFinite(t)&&(clearTimeout(Ma),M...
  function xt (line 1) | function xt(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now())...
  function bt (line 1) | function bt(){var n=Date.now();for(xa=va;xa;)n>=xa.time&&(xa.flush=xa.ca...
  function _t (line 1) | function _t(){for(var n,t=va,e=1/0;t;)t.flush?t=n?n.next=t.next:va=t.nex...
  function wt (line 1) | function wt(n,t){var e=Math.pow(10,3*Math.abs(8-t));return{scale:t>8?fun...
  function St (line 1) | function St(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}
  function Et (line 1) | function Et(n){return n+""}
  function kt (line 1) | function kt(){}
  function At (line 1) | function At(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}
  function Nt (line 1) | function Nt(n,t){n&&Da.hasOwnProperty(n.type)&&Da[n.type](n,t)}
  function Tt (line 1) | function Tt(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[...
  function qt (line 1) | function qt(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)Tt(n[e]...
  function zt (line 1) | function zt(){function n(n,t){n*=Qo,t=t*Qo/2+Bo/4;var e=n-r,o=Math.cos(t...
  function Ct (line 1) | function Ct(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Ma...
  function Dt (line 1) | function Dt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}
  function jt (line 1) | function jt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1...
  function Lt (line 1) | function Lt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}
  function Ht (line 1) | function Ht(n,t){return[n[0]*t,n[1]*t,n[2]*t]}
  function Ft (line 1) | function Ft(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[...
  function Pt (line 1) | function Pt(n){return[Math.atan2(n[1],n[0]),O(n[2])]}
  function Ot (line 1) | function Ot(n,t){return Math.abs(n[0]-t[0])<Go&&Math.abs(n[1]-t[1])<Go}
  function Rt (line 1) | function Rt(n,t){n*=Qo;var e=Math.cos(t*=Qo);Yt(e*Math.cos(n),e*Math.sin...
  function Yt (line 1) | function Yt(n,t,e){++Fa,Oa+=(n-Oa)/Fa,Ra+=(t-Ra)/Fa,Ya+=(e-Ya)/Fa}
  function It (line 1) | function It(){function n(n,u){n*=Qo;var i=Math.cos(u*=Qo),o=i*Math.cos(n...
  function Ut (line 1) | function Ut(){Ba.point=Rt}
  function Zt (line 1) | function Zt(){function n(n,t){n*=Qo;var e=Math.cos(t*=Qo),o=e*Math.cos(n...
  function Vt (line 1) | function Vt(){return!0}
  function Xt (line 1) | function Xt(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n....
  function $t (line 1) | function $t(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.next=e=n[r...
  function Bt (line 1) | function Bt(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n...
  function Wt (line 1) | function Wt(n){return n.length>1}
  function Jt (line 1) | function Jt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point...
  function Gt (line 1) | function Gt(n,t){return((n=n.point)[0]<0?n[1]-Jo-Go:Jo-n[1])-((t=t.point...
  function Kt (line 1) | function Kt(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=...
  function Qt (line 1) | function Qt(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lin...
  function ne (line 1) | function ne(n,t,e,r){var u,i,o=Math.sin(n-e);return Math.abs(o)>Go?Math....
  function te (line 1) | function te(n,t,e,r){var u;if(null==n)u=e*Jo,r.point(-Bo,u),r.point(0,u)...
  function ee (line 1) | function ee(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function...
  function re (line 1) | function re(n,t,e,r){function u(r,u){return Math.abs(r[0]-n)<Go?u>0?0:3:...
  function ue (line 1) | function ue(n,t,e){if(Math.abs(t)<Go)return 0>=n;var r=n/t;if(t>0){if(r>...
  function ie (line 1) | function ie(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.i...
  function oe (line 1) | function oe(n){var t=0,e=Bo/3,r=be(n),u=r(t,e);return u.parallels=functi...
  function ae (line 1) | function ae(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;re...
  function ce (line 1) | function ce(){function n(n,t){Ka+=u*n-r*t,r=n,u=t}var t,e,r,u;rc.point=f...
  function le (line 1) | function le(n,t){Qa>n&&(Qa=n),n>tc&&(tc=n),nc>t&&(nc=t),t>ec&&(ec=t)}
  function se (line 1) | function se(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.pu...
  function fe (line 1) | function fe(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" ...
  function he (line 1) | function he(n,t){Oa+=n,Ra+=t,++Ya}
  function ge (line 1) | function ge(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);Ia+=o...
  function pe (line 1) | function pe(){ic.point=he}
  function de (line 1) | function de(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);Ia+=o...
  function ve (line 1) | function ve(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,o,0,Wo)}function ...
  function me (line 1) | function me(n){function t(t){function r(e,r){e=n(e,r),t.point(e[0],e[1])...
  function ye (line 1) | function ye(n){this.stream=n}
  function Me (line 1) | function Me(n){var t=me(function(t,e){return n([t*na,e*na])});return fun...
  function xe (line 1) | function xe(n){return be(function(){return n})()}
  function be (line 1) | function be(n){function t(n){return n=a(n[0]*Qo,n[1]*Qo),[n[0]*h+c,l-n[1...
  function _e (line 1) | function _e(n){var t=new ye(n);return t.point=function(t,e){n.point(t*Qo...
  function we (line 1) | function we(n,t){return[n,t]}
  function Se (line 1) | function Se(n,t){return[n>Bo?n-Wo:-Bo>n?n+Wo:n,t]}
  function Ee (line 1) | function Ee(n,t,e){return n?t||e?ie(Ae(n),Ne(t,e)):Ae(n):t||e?Ne(t,e):Se}
  function ke (line 1) | function ke(n){return function(t,e){return t+=n,[t>Bo?t-Wo:-Bo>t?t+Wo:t,...
  function Ae (line 1) | function Ae(n){var t=ke(n);return t.invert=ke(-n),t}
  function Ne (line 1) | function Ne(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Mat...
  function Te (line 1) | function Te(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a...
  function qe (line 1) | function qe(n,t){var e=Ct(t);e[0]-=n,Ft(e);var r=P(-e[1]);return((-e[2]<...
  function ze (line 1) | function ze(n,t,e){var r=mo.range(n,t-Go,e).concat(t);return function(n)...
  function Ce (line 1) | function Ce(n,t,e){var r=mo.range(n,t-Go,e).concat(t);return function(n)...
  function De (line 1) | function De(n){return n.source}
  function je (line 1) | function je(n){return n.target}
  function Le (line 1) | function Le(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Mat...
  function He (line 1) | function He(){function n(n,u){var i=Math.sin(u*=Qo),o=Math.cos(u),a=Math...
  function Fe (line 1) | function Fe(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u...
  function Pe (line 1) | function Pe(n,t){function e(n,t){var e=Math.abs(Math.abs(t)-Jo)<Go?0:o/M...
  function Oe (line 1) | function Oe(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Ma...
  function Re (line 1) | function Re(n,t){return[n,Math.log(Math.tan(Bo/4+t/2))]}
  function Ye (line 1) | function Ye(n){var t,e=xe(n),r=e.scale,u=e.translate,i=e.clipExtent;retu...
  function Ie (line 1) | function Ie(n,t){var e=Math.cos(t)*Math.sin(n);return[Math.log((1+e)/(1-...
  function Ue (line 1) | function Ue(n){function t(t){function o(){l.push("M",i(n(s),a))}for(var ...
  function Ze (line 1) | function Ze(n){return n[0]}
  function Ve (line 1) | function Ve(n){return n[1]}
  function Xe (line 1) | function Xe(n){return n.join("L")}
  function $e (line 1) | function $e(n){return Xe(n)+"Z"}
  function Be (line 1) | function Be(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u....
  function We (line 1) | function We(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u....
  function Je (line 1) | function Je(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u....
  function Ge (line 1) | function Ge(n,t){return n.length<4?Xe(n):n[1]+nr(n.slice(1,n.length-1),t...
  function Ke (line 1) | function Ke(n,t){return n.length<3?Xe(n):n[0]+nr((n.push(n[0]),n),tr([n[...
  function Qe (line 1) | function Qe(n,t){return n.length<3?Xe(n):n[0]+nr(n,tr(n,t))}
  function nr (line 1) | function nr(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2...
  function tr (line 1) | function tr(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;+...
  function er (line 1) | function er(n){if(n.length<3)return Xe(n);var t=1,e=n.length,r=n[0],u=r[...
  function rr (line 1) | function rr(n){if(n.length<4)return Xe(n);for(var t,e=[],r=-1,u=n.length...
  function ur (line 1) | function ur(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%...
  function ir (line 1) | function ir(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a...
  function or (line 1) | function or(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}
  function ar (line 1) | function ar(n,t,e){n.push("C",or(pc,t),",",or(pc,e),",",or(dc,t),",",or(...
  function cr (line 1) | function cr(n,t){return(t[1]-n[1])/(t[0]-n[0])}
  function lr (line 1) | function lr(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=cr(u,i...
  function sr (line 2) | function sr(n){for(var t,e,r,u,i=[],o=lr(n),a=-1,c=n.length-1;++a<c;)t=c...
  function fr (line 2) | function fr(n){return n.length<3?Xe(n):n[0]+nr(n,sr(n))}
  function hr (line 2) | function hr(n,t,e,r){var u,i,o,a,c,l,s;return u=r[n],i=u[0],o=u[1],u=r[t...
  function gr (line 2) | function gr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}
  function pr (line 2) | function pr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s...
  function dr (line 2) | function dr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}
  function vr (line 2) | function vr(n,t){var e={list:n.map(function(n,t){return{index:t,x:n[0],y...
  function mr (line 2) | function mr(n){return n.x}
  function yr (line 2) | function yr(n){return n.y}
  function Mr (line 2) | function Mr(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}
  function xr (line 2) | function xr(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t...
  function br (line 2) | function br(n,t){n=mo.rgb(n),t=mo.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o...
  function _r (line 2) | function _r(n,t){var e,r={},u={};for(e in n)e in t?r[e]=Er(n[e],t[e]):u[...
  function wr (line 2) | function wr(n,t){return t-=n=+n,function(e){return n+t*e}}
  function Sr (line 2) | function Sr(n,t){var e,r,u,i,o,a=0,c=0,l=[],s=[];for(n+="",t+="",Mc.last...
  function Er (line 2) | function Er(n,t){for(var e,r=mo.interpolators.length;--r>=0&&!(e=mo.inte...
  function kr (line 2) | function kr(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.leng...
  function Ar (line 2) | function Ar(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}
  function Nr (line 2) | function Nr(n){return function(t){return 1-n(1-t)}}
  function Tr (line 2) | function Tr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}
  function qr (line 2) | function qr(n){return n*n}
  function zr (line 2) | function zr(n){return n*n*n}
  function Cr (line 2) | function Cr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return ...
  function Dr (line 2) | function Dr(n){return function(t){return Math.pow(t,n)}}
  function jr (line 2) | function jr(n){return 1-Math.cos(n*Jo)}
  function Lr (line 2) | function Lr(n){return Math.pow(2,10*(n-1))}
  function Hr (line 2) | function Hr(n){return 1-Math.sqrt(1-n*n)}
  function Fr (line 2) | function Fr(n,t){var e;return arguments.length<2&&(t=.45),arguments.leng...
  function Pr (line 2) | function Pr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}
  function Or (line 2) | function Or(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*...
  function Rr (line 2) | function Rr(n,t){n=mo.hcl(n),t=mo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o...
  function Yr (line 2) | function Yr(n,t){n=mo.hsl(n),t=mo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o...
  function Ir (line 2) | function Ir(n,t){n=mo.lab(n),t=mo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o...
  function Ur (line 2) | function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}
  function Zr (line 2) | function Zr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Xr(t),u=Vr(t,e),i=Xr($r(e,t...
  function Vr (line 2) | function Vr(n,t){return n[0]*t[0]+n[1]*t[1]}
  function Xr (line 2) | function Xr(n){var t=Math.sqrt(Vr(n,n));return t&&(n[0]/=t,n[1]/=t),t}
  function $r (line 2) | function $r(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}
  function Br (line 2) | function Br(n,t){var e,r=[],u=[],i=mo.transform(n),o=mo.transform(t),a=i...
  function Wr (line 2) | function Wr(n,t){return t=t-(n=+n)?1/(t-n):0,function(e){return(e-n)*t}}
  function Jr (line 2) | function Jr(n,t){return t=t-(n=+n)?1/(t-n):0,function(e){return Math.max...
  function Gr (line 2) | function Gr(n){for(var t=n.source,e=n.target,r=Qr(t,e),u=[t];t!==r;)t=t....
  function Kr (line 2) | function Kr(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent...
  function Qr (line 2) | function Qr(n,t){if(n===t)return n;for(var e=Kr(n),r=Kr(t),u=e.pop(),i=r...
  function nu (line 2) | function nu(n){n.fixed|=2}
  function tu (line 2) | function tu(n){n.fixed&=-7}
  function eu (line 2) | function eu(n){n.fixed|=4,n.px=n.x,n.py=n.y}
  function ru (line 2) | function ru(n){n.fixed&=-5}
  function uu (line 2) | function uu(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes...
  function iu (line 2) | function iu(n,t){return mo.rebind(n,t,"sort","children","value"),n.nodes...
  function ou (line 2) | function ou(n){return n.children}
  function au (line 2) | function au(n){return n.value}
  function cu (line 2) | function cu(n,t){return t.value-n.value}
  function lu (line 2) | function lu(n){return mo.merge(n.map(function(n){return(n.children||[])....
  function su (line 2) | function su(n){return n.x}
  function fu (line 2) | function fu(n){return n.y}
  function hu (line 2) | function hu(n,t,e){n.y0=t,n.y=e}
  function gu (line 2) | function gu(n){return mo.range(n.length)}
  function pu (line 2) | function pu(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}
  function du (line 2) | function du(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1]...
  function vu (line 2) | function vu(n){return n.reduce(mu,0)}
  function mu (line 2) | function mu(n,t){return n+t[1]}
  function yu (line 2) | function yu(n,t){return Mu(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}
  function Mu (line 2) | function Mu(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e...
  function xu (line 2) | function xu(n){return[mo.min(n),mo.max(n)]}
  function bu (line 2) | function bu(n,t){return n.parent==t.parent?1:2}
  function _u (line 2) | function _u(n){var t=n.children;return t&&t.length?t[0]:n._tree.thread}
  function wu (line 2) | function wu(n){var t,e=n.children;return e&&(t=e.length)?e[t-1]:n._tree....
  function Su (line 2) | function Su(n,t){var e=n.children;if(e&&(u=e.length))for(var r,u,i=-1;++...
  function Eu (line 2) | function Eu(n,t){return n.x-t.x}
  function ku (line 2) | function ku(n,t){return t.x-n.x}
  function Au (line 2) | function Au(n,t){return n.depth-t.depth}
  function Nu (line 2) | function Nu(n,t){function e(n,r){var u=n.children;if(u&&(o=u.length))for...
  function Tu (line 2) | function Tu(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i]....
  function qu (line 2) | function qu(n,t,e){n=n._tree,t=t._tree;var r=e/(t.number-n.number);n.cha...
  function zu (line 2) | function zu(n,t,e){return n._tree.ancestor.parent==t.parent?n._tree.ance...
  function Cu (line 2) | function Cu(n,t){return n.value-t.value}
  function Du (line 2) | function Du(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pac...
  function ju (line 2) | function ju(n,t){n._pack_next=t,t._pack_prev=n}
  function Lu (line 2) | function Lu(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}
  function Hu (line 2) | function Hu(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f)...
  function Fu (line 2) | function Fu(n){n._pack_next=n._pack_prev=n}
  function Pu (line 2) | function Pu(n){delete n._pack_next,delete n._pack_prev}
  function Ou (line 2) | function Ou(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=...
  function Ru (line 2) | function Ru(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o...
  function Yu (line 2) | function Yu(n){return 1+mo.max(n,function(n){return n.y})}
  function Iu (line 2) | function Iu(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}
  function Uu (line 2) | function Uu(n){var t=n.children;return t&&t.length?Uu(t[0]):n}
  function Zu (line 2) | function Zu(n){var t,e=n.children;return e&&(t=e.length)?Zu(e[t-1]):n}
  function Vu (line 2) | function Vu(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}
  function Xu (line 2) | function Xu(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-...
  function $u (line 2) | function $u(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}
  function Bu (line 2) | function Bu(n){return n.rangeExtent?n.rangeExtent():$u(n.range())}
  function Wu (line 2) | function Wu(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n...
  function Ju (line 2) | function Ju(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r...
  function Gu (line 2) | function Gu(n){return n?{floor:function(t){return Math.floor(t/n)*n},cei...
  function Ku (line 2) | function Ku(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;f...
  function Qu (line 2) | function Qu(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?Ku...
  function ni (line 2) | function ni(n,t){return mo.rebind(n,t,"range","rangeRound","interpolate"...
  function ti (line 2) | function ti(n,t){return Ju(n,Gu(ei(n,t)[2]))}
  function ei (line 2) | function ei(n,t){null==t&&(t=10);var e=$u(n),r=e[1]-e[0],u=Math.pow(10,M...
  function ri (line 2) | function ri(n,t){return mo.range.apply(mo,ei(n,t))}
  function ui (line 2) | function ui(n,t,e){var r=-Math.floor(Math.log(ei(n,t)[2])/Math.LN10+.01)...
  function ii (line 2) | function ii(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(...
  function oi (line 2) | function oi(n,t,e){function r(t){return n(u(t))}var u=ai(t),i=ai(1/t);re...
  function ai (line 2) | function ai(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,...
  function ci (line 2) | function ci(n,t){function e(e){return o[((i.get(e)||"range"===t.t&&i.set...
  function li (line 2) | function li(n,t){function e(){var e=0,i=t.length;for(u=[];++e<i;)u[e-1]=...
  function si (line 2) | function si(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.flo...
  function fi (line 2) | function fi(n,t){function e(e){return e>=e?t[mo.bisect(n,e)]:void 0}retu...
  function hi (line 2) | function hi(n){function t(n){return+n}return t.invert=t,t.domain=t.range...
  function gi (line 2) | function gi(n){return n.innerRadius}
  function pi (line 2) | function pi(n){return n.outerRadius}
  function di (line 2) | function di(n){return n.startAngle}
  function vi (line 2) | function vi(n){return n.endAngle}
  function mi (line 2) | function mi(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]...
  function yi (line 2) | function yi(n){function t(t){function c(){d.push("M",a(n(m),f),s,l(n(v.r...
  function Mi (line 2) | function Mi(n){return n.radius}
  function xi (line 2) | function xi(n){return[n.x,n.y]}
  function bi (line 2) | function bi(n){return function(){var t=n.apply(this,arguments),e=t[0],r=...
  function _i (line 2) | function _i(){return 64}
  function wi (line 2) | function wi(){return"circle"}
  function Si (line 2) | function Si(n){var t=Math.sqrt(n/Bo);return"M0,"+t+"A"+t+","+t+" 0 1,1 0...
  function Ei (line 2) | function Ei(n,t){return Lo(n,Uc),n.id=t,n}
  function ki (line 2) | function ki(n,t,e,r){var u=n.id;return N(n,"function"==typeof e?function...
  function Ai (line 2) | function Ai(n){return null==n&&(n=""),function(){this.textContent=n}}
  function Ni (line 2) | function Ni(n,t,e,r){var i=n.__transition__||(n.__transition__={active:0...
  function Ti (line 2) | function Ti(n,t){n.attr("transform",function(n){return"translate("+t(n)+...
  function qi (line 2) | function qi(n,t){n.attr("transform",function(n){return"translate(0,"+t(n...
  function zi (line 2) | function zi(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arg...
  function Ci (line 2) | function Ci(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}...
  function Di (line 2) | function Di(n){return function(t,e){try{Jc=zi;var r=new zi;return r._=t,...
  function ji (line 2) | function ji(n){function t(t){for(var r,u,i,o=[],a=-1,c=0;++a<e;)37===n.c...
  function Li (line 2) | function Li(n,t,e,r){for(var u,i,o,a=0,c=t.length,l=e.length;c>a;){if(r>...
  function Hi (line 2) | function Hi(n){return new RegExp("^(?:"+n.map(mo.requote).join("|")+")",...
  function Fi (line 2) | function Fi(n){for(var t=new u,e=-1,r=n.length;++e<r;)t.set(n[e].toLower...
  function Pi (line 2) | function Pi(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e...
  function Oi (line 2) | function Oi(n,t,e){cl.lastIndex=0;var r=cl.exec(t.substring(e));return r...
  function Ri (line 2) | function Ri(n,t,e){ol.lastIndex=0;var r=ol.exec(t.substring(e));return r...
  function Yi (line 2) | function Yi(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+1));retu...
  function Ii (line 2) | function Ii(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e));return r...
  function Ui (line 2) | function Ui(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e));return r...
  function Zi (line 2) | function Zi(n,t,e){hl.lastIndex=0;var r=hl.exec(t.substring(e));return r...
  function Vi (line 2) | function Vi(n,t,e){sl.lastIndex=0;var r=sl.exec(t.substring(e));return r...
  function Xi (line 2) | function Xi(n,t,e){return Li(n,vl.c.toString(),t,e)}
  function $i (line 2) | function $i(n,t,e){return Li(n,vl.x.toString(),t,e)}
  function Bi (line 2) | function Bi(n,t,e){return Li(n,vl.X.toString(),t,e)}
  function Wi (line 2) | function Wi(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+4));retu...
  function Ji (line 2) | function Ji(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));retu...
  function Gi (line 2) | function Gi(n,t,e){return/^[+-]\d{4}$/.test(t=t.substring(e,e+5))?(n.Z=+...
  function Ki (line 2) | function Ki(n){return n+(n>68?1900:2e3)}
  function Qi (line 2) | function Qi(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));retu...
  function no (line 2) | function no(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));retu...
  function to (line 2) | function to(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+3));retu...
  function eo (line 2) | function eo(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));retu...
  function ro (line 2) | function ro(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));retu...
  function uo (line 2) | function uo(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+2));retu...
  function io (line 2) | function io(n,t,e){yl.lastIndex=0;var r=yl.exec(t.substring(e,e+3));retu...
  function oo (line 2) | function oo(n,t,e){var r=Ml.get(t.substring(e,e+=2).toLowerCase());retur...
  function ao (line 2) | function ao(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=~~(Math.abs(t...
  function co (line 2) | function co(n,t,e){pl.lastIndex=0;var r=pl.exec(t.substring(e,e+1));retu...
  function lo (line 2) | function lo(n){function t(n){try{Jc=zi;var t=new Jc;return t._=n,e(t)}fi...
  function so (line 2) | function so(n){return n.toISOString()}
  function fo (line 2) | function fo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-...
  function ho (line 2) | function ho(n){return new Date(n)}
  function go (line 2) | function go(n){return function(t){for(var e=n.length-1,r=n[e];!r[1](t);)...
  function po (line 2) | function po(n){return JSON.parse(n.responseText)}
  function vo (line 2) | function vo(n){var t=xo.createRange();return t.selectNode(xo.body),t.cre...
  function n (line 3) | function n(t,a,c){if(c>=o.length)return r?r.call(i,a):e?a.sort(e):a;for(...
  function t (line 3) | function t(n,e){if(e>=o.length)return n;var r=[],u=a[e++];return n.forEa...
  function e (line 3) | function e(n,e){var r,i,o,a=n.length,f=e.length,h=Math.min(a,f),g=new Ar...
  function n (line 3) | function n(){this.on("mousedown.drag",o).on("touchstart.drag",a)}
  function t (line 3) | function t(){return mo.event.changedTouches[0].identifier}
  function e (line 3) | function e(n,t){return mo.touches(n).filter(function(n){return n.identif...
  function r (line 3) | function r(n,t,e,r){return function(){function o(){var n=t(s,g),e=n[0]-d...
  function e (line 3) | function e(n){var t=n*y;if(m){var e=Y(d),o=i/(ea*h)*(e*I(ta*t+d)-R(d));r...
  function n (line 3) | function n(n){n.on(A,l).on(oa+".zoom",h).on(N,p).on("dblclick.zoom",d).o...
  function t (line 3) | function t(n){return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}
  function e (line 3) | function e(n){return[n[0]*S.k+S.x,n[1]*S.k+S.y]}
  function r (line 3) | function r(n){S.k=Math.max(k[0],Math.min(k[1],n))}
  function u (line 3) | function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}
  function i (line 3) | function i(){b&&b.domain(x.range().map(function(n){return(n-S.x)/S.k}).m...
  function o (line 3) | function o(n){n({type:"zoomstart"})}
  function a (line 3) | function a(n){i(),n({type:"zoom",scale:S.k,translate:[S.x,S.y]})}
  function c (line 3) | function c(n){n({type:"zoomend"})}
  function l (line 3) | function l(){function n(){s=1,u(mo.mouse(r),h),a(i)}function e(){f.on(N,...
  function s (line 3) | function s(){function n(){var n=mo.touches(p);return g=S.k,n.forEach(fun...
  function h (line 3) | function h(){var n=C.of(this,arguments);y?clearTimeout(y):(z.call(this),...
  function p (line 3) | function p(){v=null}
  function d (line 3) | function d(){var n=C.of(this,arguments),e=mo.mouse(this),i=t(e),l=Math.l...
  function e (line 3) | function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=mo.xhr(n,t,i);r...
  function r (line 3) | function r(n){return e.parse(n.responseText)}
  function u (line 3) | function u(n){return function(t){return e.parse(t.responseText,n)}}
  function o (line 3) | function o(t){return t.map(a).join(n)}
  function a (line 3) | function a(n){return c.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}
  function e (line 3) | function e(){if(s>=c)return o;if(u)return u=!1,i;var t=s;if(34===n.charC...
  function n (line 3) | function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}
  function t (line 3) | function t(t,e){var r=Ct([t*Qo,e*Qo]);if(m){var u=jt(m,r),i=[u[1],-u[0],...
  function e (line 3) | function e(){b.point=t}
  function r (line 3) | function r(){x[0]=s,x[1]=h,b.point=n,m=null}
  function u (line 3) | function u(n,e){if(m){var r=n-p;y+=Math.abs(r)>180?r+(r>0?360:-360):r}el...
  function i (line 3) | function i(){Ha.lineStart()}
  function o (line 3) | function o(){u(d,v),Ha.lineEnd(),Math.abs(y)>Go&&(s=-(h=180)),x[0]=s,x[1...
  function a (line 3) | function a(n,t){return(t-=n)<0?t+360:t}
  function c (line 3) | function c(n,t){return n[0]-t[0]}
  function l (line 3) | function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}
  function n (line 3) | function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,...
  function n (line 3) | function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(th...
  function t (line 3) | function t(){return o=null,n}
  function t (line 3) | function t(t){return t=n(t[0]*Qo,t[1]*Qo),t[0]*=na,t[1]*=na,t}
  function n (line 3) | function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=Ee(-...
  function n (line 3) | function n(){return{type:"MultiLineString",coordinates:t()}}
  function t (line 3) | function t(){return mo.range(Math.ceil(i/v)*v,u,v).map(h).concat(mo.rang...
  function n (line 4) | function n(){return{type:"LineString",coordinates:[t||r.apply(this,argum...
  function t (line 4) | function t(n){if(n.length<3)return[];var t,u,i,o,a,c,l,s,f,h,g,p,d=pt(e)...
  function t (line 4) | function t(n){var t,i,o,a=n.map(function(){return[]}),c=pt(e),l=pt(r),s=...
  function i (line 4) | function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.l...
  function n (line 4) | function n(){var n,l,f,h,g,p={},d=[],v=mo.range(i),m=[];for(e=[],r=[],n=...
  function t (line 4) | function t(){e.sort(function(n,t){return c((n.source.value+n.target.valu...
  function n (line 4) | function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=...
  function t (line 4) | function t(n){n.px=mo.event.x,n.py=mo.event.y,a.resume()}
  function n (line 4) | function n(n,r){for(var u,i=t(e),o=-1,a=i.length;++o<a;)if(!isNaN(u=i[o]...
  function t (line 4) | function t(){if(!c){for(c=[],r=0;p>r;++r)c[r]=[];for(r=0;d>r;++r){var n=...
  function n (line 4) | function n(t,o,a){var c=u.call(e,t,o);if(t.depth=o,a.push(t),c&&(l=c.len...
  function t (line 4) | function t(n,r){var u=n.children,o=0;if(u&&(a=u.length))for(var a,c=-1,l...
  function e (line 4) | function e(t){var e=[];return n(t,0,e),e}
  function n (line 4) | function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=...
  function t (line 4) | function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i...
  function e (line 4) | function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])...
  function n (line 4) | function n(i){var o=i.map(function(e,r){return+t.call(n,e,r)}),a=+("func...
  function n (line 4) | function n(a,c){var l=a.map(function(e,r){return t.call(n,e,r)}),s=l.map...
  function n (line 4) | function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u....
  function n (line 4) | function n(n,i){function o(n,t){var r=n.children,u=n._tree;if(r&&(i=r.le...
  function n (line 4) | function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Ma...
  function n (line 4) | function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;Nu(c,function(n){var...
  function n (line 4) | function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t...
  function t (line 4) | function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i...
  function e (line 4) | function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),...
  function r (line 4) | function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n...
  function u (line 4) | function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;...
  function i (line 4) | function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=l[0],i.dy=l[1...
  function t (line 4) | function t(t){var e=n.call(i,t,t.depth);return null==e?Vu(t):Xu(t,"numbe...
  function e (line 4) | function e(t){return Xu(t,n)}
  function n (line 4) | function n(){var n=t.apply(this,arguments),i=e.apply(this,arguments),o=r...
  function n (line 4) | function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r...
  function t (line 4) | function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)+...
  function e (line 4) | function e(n,t){return n.a0==t.a0&&n.a1==t.a1}
  function r (line 4) | function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Bo)+",1 "+t}
  function u (line 4) | function u(n,t,e,r){return"Q 0,0 "+r}
  function n (line 4) | function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,...
  function n (line 4) | function n(n,r){return(Pc.get(t.call(this,n,r))||Si)(e.call(this,n,r))}
  function e (line 4) | function e(){this.removeAttribute(a)}
  function r (line 4) | function r(){this.removeAttributeNS(a.space,a.local)}
  function u (line 4) | function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribu...
  function i (line 4) | function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttribu...
  function e (line 5) | function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&fu...
  function r (line 5) | function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.loca...
  function r (line 5) | function r(){this.style.removeProperty(n)}
  function u (line 5) | function u(t){return null==t?r:(t+="",function(){var r,u=_o.getComputedS...
  function r (line 5) | function r(r,u){var i=t.call(this,r,u,_o.getComputedStyle(this,null).get...
  function n (line 5) | function n(n){n.each(function(){var n,l=mo.select(this),s=this.__chart__...
  function n (line 5) | function n(i){i.each(function(){var i=mo.select(this).style("pointer-eve...
  function t (line 5) | function t(n){n.selectAll(".resize").attr("transform",function(n){return...
  function e (line 5) | function e(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n...
  function r (line 5) | function r(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e...
  function u (line 5) | function u(){function u(){32==mo.event.keyCode&&(N||(M=null,q[0]-=s[1],q...

FILE: public/admin/js/plugins/slimscroll/jquery.slimscroll.js
  function _onWheel (line 307) | function _onWheel(e)
  function scrollContent (line 329) | function scrollContent(y, isWheel, isJump)
  function attachWheel (line 378) | function attachWheel()
  function getBarHeight (line 392) | function getBarHeight()
  function showBar (line 403) | function showBar()
  function hideBar (line 438) | function hideBar()

FILE: public/admin/js/plugins/switchery/switchery.js
  function require (line 1) | function require(path,parent,orig){var resolved=require.resolve(path);if...
  function lastIndexOf (line 1) | function lastIndexOf(arr,obj){var i=arr.length;while(i--){if(arr[i]===ob...
  function localRequire (line 1) | function localRequire(path){var resolved=localRequire.resolve(path);retu...
  function Transitionize (line 1) | function Transitionize(element,props){if(!(this instanceof Transitionize...
  function FastClick (line 1) | function FastClick(layer){"use strict";var oldOnClick,self=this;this.tra...
  function Switchery (line 1) | function Switchery(element,options){if(!(this instanceof Switchery))retu...

FILE: public/landing/fonts/icomoon/demo-files/demo.js
  function updateTest (line 17) | function updateTest() {
  function updateSize (line 23) | function updateSize() {

FILE: public/landing/js/aos.js
  function t (line 1) | function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,lo...
  function o (line 1) | function o(e){return e&&e.__esModule?e:{default:e}}
  function n (line 1) | function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.ap...
  function o (line 1) | function o(e,t,o){var r=!0,a=!0;if("function"!=typeof e)throw new TypeEr...
  function i (line 1) | function i(e){var t="undefined"==typeof e?"undefined":c(e);return!!e&&("...
  function r (line 1) | function r(e){return!!e&&"object"==("undefined"==typeof e?"undefined":c(...
  function a (line 1) | function a(e){return"symbol"==("undefined"==typeof e?"undefined":c(e))||...
  function u (line 1) | function u(e){if("number"==typeof e)return e;if(a(e))return s;if(i(e)){v...
  function n (line 1) | function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.ap...
  function o (line 1) | function o(e){var t="undefined"==typeof e?"undefined":u(e);return!!e&&("...
  function i (line 1) | function i(e){return!!e&&"object"==("undefined"==typeof e?"undefined":u(...
  function r (line 1) | function r(e){return"symbol"==("undefined"==typeof e?"undefined":u(e))||...
  function a (line 1) | function a(e){if("number"==typeof e)return e;if(r(e))return f;if(o(e)){v...
  function n (line 1) | function n(e,t){a.push({selector:e,fn:t}),!u&&r&&(u=new r(o),u.observe(i...
  function o (line 1) | function o(){for(var e,t,n=0,o=a.length;n<o;n++){e=a[n],t=i.querySelecto...
  function n (line 1) | function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
  function o (line 1) | function o(){return navigator.userAgent||navigator.vendor||window.opera|...
  function e (line 1) | function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.en...
  function e (line 1) | function e(){n(this,e)}
  function o (line 1) | function o(e){return e&&e.__esModule?e:{default:e}}
  function o (line 1) | function o(e){return e&&e.__esModule?e:{default:e}}

FILE: public/landing/js/jquery-ui.js
  function _super (line 128) | function _super() {
  function _superApply (line 132) | function _superApply( args ) {
  function processClassString (line 512) | function processClassString( classes, checkOption ) {
  function handlerProxy (line 595) | function handlerProxy() {
  function handlerProxy (line 639) | function handlerProxy() {

FILE: public/landing/js/typed.js
  function e (line 10) | function e(n){if(s[n])return s[n].exports;var i=s[n]={exports:{},id:n,lo...
  function n (line 10) | function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 10) | function t(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.en...
  function t (line 10) | function t(e,s){n(this,t),r.initializer.load(this,s,e),this.begin()}
  function n (line 10) | function n(t){return t&&t.__esModule?t:{"default":t}}
  function i (line 10) | function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 10) | function t(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.en...
  function t (line 10) | function t(){i(this,t)}
  function s (line 10) | function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a ...
  function t (line 10) | function t(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.en...
  function t (line 10) | function t(){s(this,t)}

FILE: storage/backups/2020-07-02.sql
  type `accounting` (line 3) | CREATE TABLE `accounting` (

FILE: storage/backups/2020-07-07.sql
  type `accounting` (line 3) | CREATE TABLE `accounting` (

FILE: storage/backups/2020-07-15.sql
  type `accounting` (line 3) | CREATE TABLE `accounting` (

FILE: storage/backups/2020-07-22.sql
  type `accounting` (line 3) | CREATE TABLE `accounting` (

FILE: storage/backups/2020-07-28.sql
  type `accounting` (line 3) | CREATE TABLE `accounting` (

FILE: storage/backups/2020-08-16.sql
  type `accounting` (line 3) | CREATE TABLE `accounting` (

FILE: storage/backups/2020-08-20.sql
  type `accounting` (line 3) | CREATE TABLE `accounting` (

FILE: tests/CreatesApplication.php
  type CreatesApplication (line 7) | trait CreatesApplication
    method createApplication (line 14) | public function createApplication()

FILE: tests/Feature/ExampleTest.php
  class ExampleTest (line 8) | class ExampleTest extends TestCase
    method test_example (line 15) | public function test_example()

FILE: tests/TestCase.php
  class TestCase (line 7) | abstract class TestCase extends BaseTestCase

FILE: tests/Unit/ExampleTest.php
  class ExampleTest (line 7) | class ExampleTest extends TestCase
    method test_example (line 14) | public function test_example()
Copy disabled (too large) Download .json
Condensed preview — 611 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (32,020K chars).
[
  {
    "path": ".editorconfig",
    "chars": 220,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\nindent_style = space\nindent_size = 4\ntrim_"
  },
  {
    "path": ".gitattributes",
    "chars": 111,
    "preview": "* text=auto\n*.css linguist-vendored\n*.scss linguist-vendored\n*.js linguist-vendored\nCHANGELOG.md export-ignore\n"
  },
  {
    "path": ".gitignore",
    "chars": 207,
    "preview": "/node_modules\n/public/hot\n/public/storage\n/storage/*.key\n/vendor\n.env\n.env.backup\n.phpunit.result.cache\ndocker-compose.o"
  },
  {
    "path": ".styleci.yml",
    "chars": 181,
    "preview": "php:\n  preset: laravel\n  disabled:\n    - no_unused_imports\n  finder:\n    not-name:\n      - index.php\n      - server.php\n"
  },
  {
    "path": "README1.md",
    "chars": 3810,
    "preview": "<p align=\"center\"><a href=\"https://laravel.com\" target=\"_blank\"><img src=\"https://raw.githubusercontent.com/laravel/art/"
  },
  {
    "path": "app/Console/Kernel.php",
    "chars": 827,
    "preview": "<?php\n\nnamespace App\\Console;\n\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as C"
  },
  {
    "path": "app/Exceptions/Handler.php",
    "chars": 781,
    "preview": "<?php\n\nnamespace App\\Exceptions;\n\nuse Illuminate\\Foundation\\Exceptions\\Handler as ExceptionHandler;\nuse Throwable;\n\nclas"
  },
  {
    "path": "app/Http/Controllers/Admin/AccessTokenController.php",
    "chars": 840,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers\\Admin;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Models\\AccessToken;\nuse Illum"
  },
  {
    "path": "app/Http/Controllers/Admin/Auth/AuthController.php",
    "chars": 3774,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers\\Admin\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Models\\AccessToken;\nuse "
  },
  {
    "path": "app/Http/Controllers/Admin/Auth/ForgotPasswordController.php",
    "chars": 2310,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers\\Admin\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Models\\PasswordReset;\nus"
  },
  {
    "path": "app/Http/Controllers/Admin/BillingController.php",
    "chars": 4253,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers\\Admin;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Models\\Payment;\nuse App\\Model"
  },
  {
    "path": "app/Http/Controllers/Admin/DashboardController.php",
    "chars": 1916,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers\\Admin;\n\nuse App\\Http\\Controllers\\Controller;\nuse App\\Models\\AccessToken;\nuse App\\M"
  },
  {
    "path": "app/Http/Controllers/Api/v1/MetricsController.php",
    "chars": 6262,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers\\Api\\v1;\n\nuse App\\Models\\QLoader;\nuse Illuminate\\Http\\Request;\nuse App\\Http\\Control"
  },
  {
    "path": "app/Http/Controllers/Api/v1/QuestionController.php",
    "chars": 16726,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers\\Api\\v1;\n\nuse App\\Models\\ApiCallIpAddress;\nuse App\\Models\\QLoader;\nuse App\\Models\\R"
  },
  {
    "path": "app/Http/Controllers/Api/v2/MetricsController.php",
    "chars": 6262,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers\\Api\\v2;\n\nuse App\\Models\\QLoader;\nuse Illuminate\\Http\\Request;\nuse App\\Http\\Control"
  },
  {
    "path": "app/Http/Controllers/Api/v2/QuestionController.php",
    "chars": 39639,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers\\Api\\v2;\n\nuse App\\Models\\QLoader;\nuse App\\Models\\QBoardLog;\nuse App\\Models\\AccessTo"
  },
  {
    "path": "app/Http/Controllers/Controller.php",
    "chars": 361,
    "preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Foundation\\Auth\\Access\\AuthorizesRequests;\nuse Illuminate\\Foundat"
  },
  {
    "path": "app/Http/Kernel.php",
    "chars": 2394,
    "preview": "<?php\n\nnamespace App\\Http;\n\nuse Illuminate\\Foundation\\Http\\Kernel as HttpKernel;\n\nclass Kernel extends HttpKernel\n{\n    "
  },
  {
    "path": "app/Http/Middleware/Authenticate.php",
    "chars": 469,
    "preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Auth\\Middleware\\Authenticate as Middleware;\n\nclass Authenticate ex"
  },
  {
    "path": "app/Http/Middleware/EncryptCookies.php",
    "chars": 294,
    "preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Cookie\\Middleware\\EncryptCookies as Middleware;\n\nclass EncryptCook"
  },
  {
    "path": "app/Http/Middleware/PreventRequestsDuringMaintenance.php",
    "chars": 353,
    "preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance as Mid"
  },
  {
    "path": "app/Http/Middleware/RedirectIfAuthenticated.php",
    "chars": 734,
    "preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse App\\Providers\\RouteServiceProvider;\nuse Closure;\nuse Illuminate\\Http\\Request;"
  },
  {
    "path": "app/Http/Middleware/TrimStrings.php",
    "chars": 368,
    "preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\TrimStrings as Middleware;\n\nclass TrimS"
  },
  {
    "path": "app/Http/Middleware/TrustHosts.php",
    "chars": 354,
    "preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Http\\Middleware\\TrustHosts as Middleware;\n\nclass TrustHosts extend"
  },
  {
    "path": "app/Http/Middleware/TrustProxies.php",
    "chars": 585,
    "preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Fideloper\\Proxy\\TrustProxies as Middleware;\nuse Illuminate\\Http\\Request;\n\ncla"
  },
  {
    "path": "app/Http/Middleware/VerifyCsrfToken.php",
    "chars": 307,
    "preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken as Middleware;\n\nclass V"
  },
  {
    "path": "app/Models/AccessToken.php",
    "chars": 281,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Mo"
  },
  {
    "path": "app/Models/AccessTokenCall.php",
    "chars": 308,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Mo"
  },
  {
    "path": "app/Models/ApiCallIpAddress.php",
    "chars": 355,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass ApiCallIpAddress extends Model\n{\n    protec"
  },
  {
    "path": "app/Models/PasswordReset.php",
    "chars": 305,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Mo"
  },
  {
    "path": "app/Models/Payment.php",
    "chars": 331,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Mo"
  },
  {
    "path": "app/Models/PricePlan.php",
    "chars": 221,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Mo"
  },
  {
    "path": "app/Models/QBoardLog.php",
    "chars": 308,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Mo"
  },
  {
    "path": "app/Models/QLoader.php",
    "chars": 4836,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass QLoader extends Model\n{\n    protected  $fil"
  },
  {
    "path": "app/Models/ReportQuestion.php",
    "chars": 247,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass ReportQuestion extends Model\n{\n    protecte"
  },
  {
    "path": "app/Models/Subscription.php",
    "chars": 304,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Mo"
  },
  {
    "path": "app/Models/User.php",
    "chars": 1052,
    "preview": "<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Contracts\\Auth\\MustVerifyEmail;\nuse Illuminate\\Database\\Eloquent\\Factories\\"
  },
  {
    "path": "app/Providers/AppServiceProvider.php",
    "chars": 403,
    "preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvid"
  },
  {
    "path": "app/Providers/AuthServiceProvider.php",
    "chars": 585,
    "preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Foundation\\Support\\Providers\\AuthServiceProvider as ServiceProvider;\nuse"
  },
  {
    "path": "app/Providers/BroadcastServiceProvider.php",
    "chars": 380,
    "preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Broadcast;\nuse Illuminate\\Support\\ServiceProvider;\n\nclas"
  },
  {
    "path": "app/Providers/EventServiceProvider.php",
    "chars": 685,
    "preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Auth\\Events\\Registered;\nuse Illuminate\\Auth\\Listeners\\SendEmailVerificat"
  },
  {
    "path": "app/Providers/RouteServiceProvider.php",
    "chars": 1677,
    "preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Cache\\RateLimiting\\Limit;\nuse Illuminate\\Foundation\\Support\\Providers\\Ro"
  },
  {
    "path": "app/functions.php",
    "chars": 3329,
    "preview": "<?php\n\nuse App\\Models\\ApiCallIpAddress;\nuse Illuminate\\Support\\Arr;\n\nfunction subjectArray (){\n    return ['english', 'm"
  },
  {
    "path": "artisan",
    "chars": 1686,
    "preview": "#!/usr/bin/env php\n<?php\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|-----------------------------------------------"
  },
  {
    "path": "bootstrap/app.php",
    "chars": 1620,
    "preview": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Create The Application\n|--------"
  },
  {
    "path": "bootstrap/cache/.gitignore",
    "chars": 14,
    "preview": "*\n!.gitignore\n"
  },
  {
    "path": "composer.json",
    "chars": 1782,
    "preview": "{\n    \"name\": \"laravel/laravel\",\n    \"type\": \"project\",\n    \"description\": \"The Laravel Framework.\",\n    \"keywords\": [\"f"
  },
  {
    "path": "config/app.php",
    "chars": 9300,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Applicatio"
  },
  {
    "path": "config/auth.php",
    "chars": 3803,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentica"
  },
  {
    "path": "config/broadcasting.php",
    "chars": 1711,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Br"
  },
  {
    "path": "config/cache.php",
    "chars": 3274,
    "preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------"
  },
  {
    "path": "config/cors.php",
    "chars": 846,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Cross-Orig"
  },
  {
    "path": "config/database.php",
    "chars": 5054,
    "preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------"
  },
  {
    "path": "config/filesystems.php",
    "chars": 2282,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Fi"
  },
  {
    "path": "config/hashing.php",
    "chars": 1571,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Ha"
  },
  {
    "path": "config/location.php",
    "chars": 3429,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Driver\n   "
  },
  {
    "path": "config/logging.php",
    "chars": 3054,
    "preview": "<?php\n\nuse Monolog\\Handler\\NullHandler;\nuse Monolog\\Handler\\StreamHandler;\nuse Monolog\\Handler\\SyslogUdpHandler;\n\nreturn"
  },
  {
    "path": "config/mail.php",
    "chars": 3372,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Ma"
  },
  {
    "path": "config/queue.php",
    "chars": 2906,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Default Qu"
  },
  {
    "path": "config/services.php",
    "chars": 950,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Third Part"
  },
  {
    "path": "config/session.php",
    "chars": 7041,
    "preview": "<?php\n\nuse Illuminate\\Support\\Str;\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------"
  },
  {
    "path": "config/view.php",
    "chars": 1053,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | View Stora"
  },
  {
    "path": "database/.gitignore",
    "chars": 10,
    "preview": "*.sqlite*\n"
  },
  {
    "path": "database/factories/UserFactory.php",
    "chars": 1119,
    "preview": "<?php\n\nnamespace Database\\Factories;\n\nuse App\\Models\\User;\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nuse Illum"
  },
  {
    "path": "database/migrations/2014_10_12_000000_create_users_table.php",
    "chars": 865,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2014_10_12_100000_create_password_resets_table.php",
    "chars": 687,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2018_08_13_124632_create_questions_tables.php",
    "chars": 6278,
    "preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migratio"
  },
  {
    "path": "database/migrations/2018_08_28_195542_create_report_question_tables.php",
    "chars": 1407,
    "preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migratio"
  },
  {
    "path": "database/migrations/2018_11_10_105744_create_table_ipaddres_2_question.php",
    "chars": 1222,
    "preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migratio"
  },
  {
    "path": "database/migrations/2019_08_19_000000_create_failed_jobs_table.php",
    "chars": 840,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2021_07_10_192953_create_access_token_table.php",
    "chars": 755,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2021_07_13_194154_create_table_access_token_calls.php",
    "chars": 805,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2021_07_17_152326_create_table_price_plans.php",
    "chars": 849,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2021_08_03_124437_create_payment_table.php",
    "chars": 1417,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/migrations/2022_10_22_110248_create_qboard_log_table.php",
    "chars": 821,
    "preview": "<?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Fa"
  },
  {
    "path": "database/seeders/DatabaseSeeder.php",
    "chars": 282,
    "preview": "<?php\n\nnamespace Database\\Seeders;\n\nuse Illuminate\\Database\\Seeder;\n\nclass DatabaseSeeder extends Seeder\n{\n    /**\n     "
  },
  {
    "path": "database/seeders/LoadDummyQuestions.php",
    "chars": 11494,
    "preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass LoadDummyQuestions extends Seeder\n{\n    /**\n     * Run the database seeds."
  },
  {
    "path": "database/seeders/ReportQuestionType.php",
    "chars": 1083,
    "preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass ReportQuestionType extends Seeder\n{\n    /**\n     * Run the database seeds."
  },
  {
    "path": "package.json",
    "chars": 473,
    "preview": "{\n    \"private\": true,\n    \"scripts\": {\n        \"dev\": \"npm run development\",\n        \"development\": \"mix\",\n        \"wat"
  },
  {
    "path": "phpunit.xml",
    "chars": 1202,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:noNam"
  },
  {
    "path": "public/.htaccess",
    "chars": 603,
    "preview": "<IfModule mod_rewrite.c>\n    <IfModule mod_negotiation.c>\n        Options -MultiViews -Indexes\n    </IfModule>\n\n    Rewr"
  },
  {
    "path": "public/admin/css/animate.css",
    "chars": 65564,
    "preview": "@charset \"UTF-8\";\n\n/*!\nAnimate.css - http://daneden.me/animate\nLicensed under the MIT license\n\nCopyright (c) 2013 Daniel"
  },
  {
    "path": "public/admin/css/bootstrap.css",
    "chars": 137590,
    "preview": "/*!\n * Bootstrap v3.3.0 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://gi"
  },
  {
    "path": "public/admin/css/plugins/blueimp/css/blueimp-gallery-indicator.css",
    "chars": 1669,
    "preview": "@charset \"UTF-8\";\n/*\n * blueimp Gallery Indicator CSS 1.1.0\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, "
  },
  {
    "path": "public/admin/css/plugins/blueimp/css/blueimp-gallery-video.css",
    "chars": 2135,
    "preview": "@charset \"UTF-8\";\n/*\n * blueimp Gallery Video Factory CSS 1.3.0\n * https://github.com/blueimp/Gallery\n *\n * Copyright 20"
  },
  {
    "path": "public/admin/css/plugins/blueimp/css/blueimp-gallery.css",
    "chars": 5720,
    "preview": "@charset \"UTF-8\";\n/*\n * blueimp Gallery CSS 2.11.1\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian"
  },
  {
    "path": "public/admin/css/plugins/blueimp/css/demo.css",
    "chars": 867,
    "preview": "/*\n * blueimp Gallery Demo CSS 2.0.0\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian Tschan\n * htt"
  },
  {
    "path": "public/admin/css/plugins/bootstrap-rtl/bootstrap-rtl.css",
    "chars": 31300,
    "preview": "/*******************************************************************************\n *              bootstrap-rtl (version "
  },
  {
    "path": "public/admin/css/plugins/chosen/chosen.css",
    "chars": 13061,
    "preview": "/*!\nChosen, a Select Box Enhancer for jQuery and Prototype\nby Patrick Filler for Harvest, http://getharvest.com\n\nVersion"
  },
  {
    "path": "public/admin/css/plugins/codemirror/ambiance.css",
    "chars": 26076,
    "preview": "/* ambiance theme for codemirror */\n\n/* Color scheme */\n\n.cm-s-ambiance .cm-keyword { color: #cda869; }\n.cm-s-ambiance ."
  },
  {
    "path": "public/admin/css/plugins/codemirror/codemirror.css",
    "chars": 7350,
    "preview": "/* BASICS */\n\n.CodeMirror {\n  /* Set height, width, borders, and global font properties here */\n  font-family: monospace"
  },
  {
    "path": "public/admin/css/plugins/dataTables/dataTables.bootstrap.css",
    "chars": 4946,
    "preview": "div.dataTables_length label {\n    float: left;\n    text-align: left;\n    font-weight: normal;\n}\n\ndiv.dataTables_length s"
  },
  {
    "path": "public/admin/css/plugins/dataTables/dataTables.responsive.css",
    "chars": 2533,
    "preview": "table.dataTable.dtr-inline.collapsed tbody td:first-child,\ntable.dataTable.dtr-inline.collapsed tbody th:first-child {\n "
  },
  {
    "path": "public/admin/css/plugins/datapicker/datepicker3.css",
    "chars": 33679,
    "preview": "/*!\n * Datepicker for Bootstrap\n *\n * Copyright 2012 Stefan Petre\n * Improvements by Andrew Rowls\n * Licensed under the "
  },
  {
    "path": "public/admin/css/plugins/dropzone/basic.css",
    "chars": 3699,
    "preview": "/* The MIT License */\n.dropzone,\n.dropzone *,\n.dropzone-previews,\n.dropzone-previews * {\n  -webkit-box-sizing: border-bo"
  },
  {
    "path": "public/admin/css/plugins/dropzone/dropzone.css",
    "chars": 11543,
    "preview": "/* The MIT License */\n.dropzone,\n.dropzone *,\n.dropzone-previews,\n.dropzone-previews * {\n  -webkit-box-sizing: border-bo"
  },
  {
    "path": "public/admin/css/plugins/fullcalendar/fullcalendar.css",
    "chars": 23461,
    "preview": "/*!\n * FullCalendar v2.2.0 Stylesheet\n * Docs & License: http://arshaw.com/fullcalendar/\n * (c) 2013 Adam Shaw\n */\n\n\n.fc"
  },
  {
    "path": "public/admin/css/plugins/fullcalendar/fullcalendar.print.css",
    "chars": 5391,
    "preview": "/*!\n * FullCalendar v2.2.0 Print Stylesheet\n * Docs & License: http://arshaw.com/fullcalendar/\n * (c) 2013 Adam Shaw\n */"
  },
  {
    "path": "public/admin/css/plugins/iCheck/custom.css",
    "chars": 1398,
    "preview": "/* iCheck plugin Square skin, green\n----------------------------------- */\n.icheckbox_square-green,\n.iradio_square-green"
  },
  {
    "path": "public/admin/css/plugins/ionRangeSlider/ion.rangeSlider.css",
    "chars": 3186,
    "preview": "/* Ion.RangeSlider\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// ============================================"
  },
  {
    "path": "public/admin/css/plugins/ionRangeSlider/ion.rangeSlider.skinFlat.css",
    "chars": 1859,
    "preview": "/* Ion.RangeSlider, Flat UI Skin\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// =============================="
  },
  {
    "path": "public/admin/css/plugins/ionRangeSlider/ion.rangeSlider.skinNice.css",
    "chars": 1737,
    "preview": "/* Ion.RangeSlider, Nice Skin\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// ================================="
  },
  {
    "path": "public/admin/css/plugins/ionRangeSlider/ion.rangeSlider.skinSimple.css",
    "chars": 1752,
    "preview": "/* Ion.RangeSlider, Simple Skin\n// css version 1.8.5\n// by Denis Ineshin | ionden.com\n// ==============================="
  },
  {
    "path": "public/admin/css/plugins/jqGrid/ui.jqgrid.css",
    "chars": 12894,
    "preview": "/*Grid*/\n.ui-jqgrid {position: relative;}\n.ui-jqgrid .ui-jqgrid-view {position: relative;left:0; top: 0; padding: 0; fon"
  },
  {
    "path": "public/admin/css/plugins/jsTree/style.css",
    "chars": 30089,
    "preview": "/* jsTree default theme */\n.jstree-node,\n.jstree-children,\n.jstree-container-ul {\n  display: block;\n  margin: 0;\n  paddi"
  },
  {
    "path": "public/admin/css/plugins/nouslider/jquery.nouislider.css",
    "chars": 2984,
    "preview": "\n/* Functional styling;\n * These styles are required for noUiSlider to function.\n * You don't need to change these rules"
  },
  {
    "path": "public/admin/css/plugins/social-buttons/social-buttons.css",
    "chars": 12941,
    "preview": "@import url(//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css);\n/*\n * Social Buttons for Bootstrap\n "
  },
  {
    "path": "public/admin/css/plugins/steps/jquery.steps.css",
    "chars": 5649,
    "preview": "/*\n    Common\n*/\n\n.wizard,\n.tabcontrol\n{\n    display: block;\n    width: 100%;\n    overflow: hidden;\n}\n\n.wizard a,\n.tabco"
  },
  {
    "path": "public/admin/css/plugins/summernote/summernote-bs3.css",
    "chars": 146393,
    "preview": ".note-editor {\n  /*! normalize.css v2.1.3 | MIT License | git.io/normalize */\n\n}\n.note-editor article,\n.note-editor asid"
  },
  {
    "path": "public/admin/css/plugins/summernote/summernote.css",
    "chars": 10245,
    "preview": ".note-editor {\n    height: 300px;\n}\n\n.note-editor .note-dropzone {\n    position: absolute;\n    z-index: 1;\n    display: "
  },
  {
    "path": "public/admin/css/plugins/switchery/switchery.css",
    "chars": 610,
    "preview": "/*\n *\n * Main stylesheet for Switchery.\n * http://abpetkov.github.io/switchery/\n *\n */\n\n.switchery {\n    background-colo"
  },
  {
    "path": "public/admin/css/style.css",
    "chars": 97684,
    "preview": "@import url(\"//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&amp;lang=en\");\n/*\n *\n *   INSPINIA - Responsive"
  },
  {
    "path": "public/admin/email_templates/action.html",
    "chars": 2958,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
  },
  {
    "path": "public/admin/email_templates/alert.html",
    "chars": 2860,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
  },
  {
    "path": "public/admin/email_templates/billing.html",
    "chars": 4224,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
  },
  {
    "path": "public/admin/email_templates/styles.css",
    "chars": 4583,
    "preview": "/* -------------------------------------\n    GLOBAL\n    A very basic CSS reset\n------------------------------------- */\n"
  },
  {
    "path": "public/admin/font-awesome/css/font-awesome.css",
    "chars": 28747,
    "preview": "/*!\n *  Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/lice"
  },
  {
    "path": "public/admin/font-awesome/less/animated.less",
    "chars": 713,
    "preview": "// Animated Icons\n// --------------------------\n\n.@{fa-css-prefix}-spin {\n  -webkit-animation: fa-spin 2s infinite linea"
  },
  {
    "path": "public/admin/font-awesome/less/bordered-pulled.less",
    "chars": 330,
    "preview": "// Bordered & Pulled\n// -------------------------\n\n.@{fa-css-prefix}-border {\n  padding: .2em .25em .15em;\n  border: sol"
  },
  {
    "path": "public/admin/font-awesome/less/core.less",
    "chars": 509,
    "preview": "// Base Class Definition\n// -------------------------\n\n.@{fa-css-prefix} {\n  display: inline-block;\n  font: normal norma"
  },
  {
    "path": "public/admin/font-awesome/less/fixed-width.less",
    "chars": 119,
    "preview": "// Fixed Width Icons\n// -------------------------\n.@{fa-css-prefix}-fw {\n  width: (18em / 14);\n  text-align: center;\n}\n"
  },
  {
    "path": "public/admin/font-awesome/less/font-awesome.less",
    "chars": 465,
    "preview": "/*!\n *  Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/lice"
  },
  {
    "path": "public/admin/font-awesome/less/icons.less",
    "chars": 37290,
    "preview": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters th"
  },
  {
    "path": "public/admin/font-awesome/less/larger.less",
    "chars": 370,
    "preview": "// Icon Sizes\n// -------------------------\n\n/* makes the font 33% larger relative to the icon container */\n.@{fa-css-pre"
  },
  {
    "path": "public/admin/font-awesome/less/list.less",
    "chars": 377,
    "preview": "// List Icons\n// -------------------------\n\n.@{fa-css-prefix}-ul {\n  padding-left: 0;\n  margin-left: @fa-li-width;\n  lis"
  },
  {
    "path": "public/admin/font-awesome/less/mixins.less",
    "chars": 983,
    "preview": "// Mixins\n// --------------------------\n\n.fa-icon() {\n  display: inline-block;\n  font: normal normal normal @fa-font-siz"
  },
  {
    "path": "public/admin/font-awesome/less/path.less",
    "chars": 770,
    "preview": "/* FONT PATH\n * -------------------------- */\n\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('@{fa-font-path}/fo"
  },
  {
    "path": "public/admin/font-awesome/less/rotated-flipped.less",
    "chars": 622,
    "preview": "// Rotated & Flipped Icons\n// -------------------------\n\n.@{fa-css-prefix}-rotate-90  { .fa-icon-rotate(90deg, 1);  }\n.@"
  },
  {
    "path": "public/admin/font-awesome/less/stacked.less",
    "chars": 476,
    "preview": "// Stacked Icons\n// -------------------------\n\n.@{fa-css-prefix}-stack {\n  position: relative;\n  display: inline-block;\n"
  },
  {
    "path": "public/admin/font-awesome/less/variables.less",
    "chars": 16792,
    "preview": "// Variables\n// --------------------------\n\n@fa-font-path:        \"../fonts\";\n@fa-font-size-base:   14px;\n//@fa-font-pat"
  },
  {
    "path": "public/admin/font-awesome/scss/_animated.scss",
    "chars": 715,
    "preview": "// Spinning Icons\n// --------------------------\n\n.#{$fa-css-prefix}-spin {\n  -webkit-animation: fa-spin 2s infinite line"
  },
  {
    "path": "public/admin/font-awesome/scss/_bordered-pulled.scss",
    "chars": 332,
    "preview": "// Bordered & Pulled\n// -------------------------\n\n.#{$fa-css-prefix}-border {\n  padding: .2em .25em .15em;\n  border: so"
  },
  {
    "path": "public/admin/font-awesome/scss/_core.scss",
    "chars": 513,
    "preview": "// Base Class Definition\n// -------------------------\n\n.#{$fa-css-prefix} {\n  display: inline-block;\n  font: normal norm"
  },
  {
    "path": "public/admin/font-awesome/scss/_fixed-width.scss",
    "chars": 120,
    "preview": "// Fixed Width Icons\n// -------------------------\n.#{$fa-css-prefix}-fw {\n  width: (18em / 14);\n  text-align: center;\n}\n"
  },
  {
    "path": "public/admin/font-awesome/scss/_icons.scss",
    "chars": 37883,
    "preview": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters th"
  },
  {
    "path": "public/admin/font-awesome/scss/_larger.scss",
    "chars": 375,
    "preview": "// Icon Sizes\n// -------------------------\n\n/* makes the font 33% larger relative to the icon container */\n.#{$fa-css-pr"
  },
  {
    "path": "public/admin/font-awesome/scss/_list.scss",
    "chars": 378,
    "preview": "// List Icons\n// -------------------------\n\n.#{$fa-css-prefix}-ul {\n  padding-left: 0;\n  margin-left: $fa-li-width;\n  li"
  },
  {
    "path": "public/admin/font-awesome/scss/_mixins.scss",
    "chars": 1000,
    "preview": "// Mixins\n// --------------------------\n\n@mixin fa-icon() {\n  display: inline-block;\n  font: normal normal normal #{$fa-"
  },
  {
    "path": "public/admin/font-awesome/scss/_path.scss",
    "chars": 783,
    "preview": "/* FONT PATH\n * -------------------------- */\n\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('#{$fa-font-path}/f"
  },
  {
    "path": "public/admin/font-awesome/scss/_rotated-flipped.scss",
    "chars": 672,
    "preview": "// Rotated & Flipped Icons\n// -------------------------\n\n.#{$fa-css-prefix}-rotate-90  { @include fa-icon-rotate(90deg, "
  },
  {
    "path": "public/admin/font-awesome/scss/_stacked.scss",
    "chars": 482,
    "preview": "// Stacked Icons\n// -------------------------\n\n.#{$fa-css-prefix}-stack {\n  position: relative;\n  display: inline-block;"
  },
  {
    "path": "public/admin/font-awesome/scss/_variables.scss",
    "chars": 16864,
    "preview": "// Variables\n// --------------------------\n\n$fa-font-path:        \"../fonts\" !default;\n$fa-font-size-base:   14px !defau"
  },
  {
    "path": "public/admin/font-awesome/scss/font-awesome.scss",
    "chars": 405,
    "preview": "/*!\n *  Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/lice"
  },
  {
    "path": "public/admin/js/bootstrap.js",
    "chars": 65813,
    "preview": "/*!\n * Bootstrap v3.3.0 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://gi"
  },
  {
    "path": "public/admin/js/demo/chartjs-demo.js",
    "chars": 6637,
    "preview": "$(function () {\n\n    var lineData = {\n        labels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n"
  },
  {
    "path": "public/admin/js/demo/dashboard-demo.js",
    "chars": 2532,
    "preview": "$(function() {\n\n    Morris.Area({\n        element: 'morris-area-chart',\n        data: [{\n            period: '2010 Q1',\n"
  },
  {
    "path": "public/admin/js/demo/flot-demo.js",
    "chars": 31149,
    "preview": "//Flot Bar Chart\n$(function() {\n    var barOptions = {\n        series: {\n            bars: {\n                show: true,"
  },
  {
    "path": "public/admin/js/demo/flot-demo2.js",
    "chars": 7410,
    "preview": "//Flot Pie Chart Devices\n$(function() {\n\n    var data = [{\n        label: \"iPhone\",\n        data: 21,\n        color: \"#d"
  },
  {
    "path": "public/admin/js/demo/morris-demo.js",
    "chars": 3091,
    "preview": "$(function() {\n\n    Morris.Line({\n        element: 'morris-one-line-chart',\n            data: [\n                { year: "
  },
  {
    "path": "public/admin/js/demo/peity-demo.js",
    "chars": 764,
    "preview": "$(function() {\n    $(\"span.pie\").peity(\"pie\", {\n        fill: ['#1ab394', '#d7d7d7', '#ffffff']\n    })\n\n    $(\".line\").p"
  },
  {
    "path": "public/admin/js/demo/rickshaw-demo.js",
    "chars": 3299,
    "preview": "$(function() {\n    var graph = new Rickshaw.Graph( {\n        element: document.querySelector(\"#chart\"),\n        series: "
  },
  {
    "path": "public/admin/js/demo/sparkline-demo.js",
    "chars": 1708,
    "preview": "$(function () {\n    $(\"#sparkline1\").sparkline([34, 43, 43, 35, 44, 32, 44, 52, 25], {\n        type: 'line',\n        lin"
  },
  {
    "path": "public/admin/js/inspinia.js",
    "chars": 4459,
    "preview": "// Custom scripts\n$(document).ready(function () {\n\n    // MetsiMenu\n    $('#side-menu').metisMenu();\n \n    // Collapse i"
  },
  {
    "path": "public/admin/js/jquery-2.1.1.js",
    "chars": 84244,
    "preview": "/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */\n!function(a,b){\"object\"==typeof modul"
  },
  {
    "path": "public/admin/js/plugins/chosen/chosen.jquery.js",
    "chars": 50165,
    "preview": "/*!\n Chosen, a Select Box Enhancer for jQuery and Prototype\n by Patrick Filler for Harvest, http://getharvest.com\n\n Vers"
  },
  {
    "path": "public/admin/js/plugins/codemirror/codemirror.js",
    "chars": 313575,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/apl/apl.js",
    "chars": 4582,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/apl/index.html",
    "chars": 2094,
    "preview": "<!doctype html>\n\n<title>CodeMirror: APL mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.c"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/asterisk/asterisk.js",
    "chars": 7476,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/asterisk/index.html",
    "chars": 4591,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Asterisk dialplan mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\".."
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/clike/clike.js",
    "chars": 18439,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/clike/index.html",
    "chars": 5995,
    "preview": "<!doctype html>\n\n<title>CodeMirror: C-like mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/doc"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/clike/scala.html",
    "chars": 28518,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Scala mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/clojure/clojure.js",
    "chars": 14815,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/clojure/index.html",
    "chars": 2495,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Clojure mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/do"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/cobol/cobol.js",
    "chars": 10288,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/cobol/index.html",
    "chars": 8084,
    "preview": "<!doctype html>\n\n<title>CodeMirror: COBOL mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/coffeescript/coffeescript.js",
    "chars": 10175,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/coffeescript/index.html",
    "chars": 22390,
    "preview": "<!doctype html>\n\n<title>CodeMirror: CoffeeScript mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../d"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/commonlisp/commonlisp.js",
    "chars": 4075,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/commonlisp/index.html",
    "chars": 6691,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Common Lisp mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../do"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/css/css.js",
    "chars": 31656,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/css/index.html",
    "chars": 1685,
    "preview": "<!doctype html>\n\n<title>CodeMirror: CSS mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.c"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/css/less.html",
    "chars": 4059,
    "preview": "<!doctype html>\n\n<title>CodeMirror: LESS mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs."
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/css/less_test.js",
    "chars": 1791,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/css/scss.html",
    "chars": 2741,
    "preview": "<!doctype html>\n\n<title>CodeMirror: SCSS mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs."
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/css/scss_test.js",
    "chars": 3125,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/css/test.js",
    "chars": 4227,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/cypher/cypher.js",
    "chars": 6174,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/cypher/index.html",
    "chars": 1908,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Cypher Mode for CodeMirror</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/d/d.js",
    "chars": 7566,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/d/index.html",
    "chars": 6332,
    "preview": "<!doctype html>\n\n<title>CodeMirror: D mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.css"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/diff/diff.js",
    "chars": 1138,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/diff/index.html",
    "chars": 4409,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Diff mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs."
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/django/django.js",
    "chars": 2316,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/django/index.html",
    "chars": 1806,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Django template mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../."
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/dtd/dtd.js",
    "chars": 4808,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/dtd/index.html",
    "chars": 3337,
    "preview": "<!doctype html>\n\n<title>CodeMirror: DTD mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.c"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/dylan/dylan.js",
    "chars": 8778,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/dylan/index.html",
    "chars": 13032,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Dylan mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/ecl/ecl.js",
    "chars": 8889,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/ecl/index.html",
    "chars": 1409,
    "preview": "<!doctype html>\n\n<title>CodeMirror: ECL mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.c"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/eiffel/eiffel.js",
    "chars": 3779,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/eiffel/index.html",
    "chars": 13198,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Eiffel mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/doc"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/erlang/erlang.js",
    "chars": 19007,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/erlang/index.html",
    "chars": 2168,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Erlang mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/doc"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/fortran/fortran.js",
    "chars": 8686,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/fortran/index.html",
    "chars": 2492,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Fortran mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/do"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/gas/gas.js",
    "chars": 8886,
    "preview": "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/L"
  },
  {
    "path": "public/admin/js/plugins/codemirror/mode/gas/index.html",
    "chars": 1840,
    "preview": "<!doctype html>\n\n<title>CodeMirror: Gas mode</title>\n<meta charset=\"utf-8\"/>\n<link rel=stylesheet href=\"../../doc/docs.c"
  }
]

// ... and 411 more files (download for full content)

About this extraction

This page contains the full source code of the Seunope/aloc-endpoints GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 611 files (29.9 MB), approximately 7.9M tokens, and a symbol index with 1956 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!