Showing preview only (9,617K chars total). Download the full file or copy to clipboard to get everything.
Repository: jordansamuel/PASTE
Branch: master
Commit: 4ffe64359115
Files: 869
Total size: 8.9 MB
Directory structure:
gitextract_ya1peyay/
├── .editorconfig
├── .gitignore
├── .htaccess
├── README.md
├── accountdeleted.php
├── admin/
│ ├── admin.php
│ ├── ads.php
│ ├── configuration.php
│ ├── css/
│ │ ├── bootstrap.css
│ │ ├── fonts/
│ │ │ └── FontAwesome.otf
│ │ ├── index.php
│ │ ├── paste.css
│ │ ├── responsive.css
│ │ └── style.css
│ ├── dashboard.php
│ ├── index.php
│ ├── interface.php
│ ├── ipbans.php
│ ├── js/
│ │ ├── bootstrap-select.js
│ │ ├── bootstrap3-wysihtml5.js
│ │ ├── index.php
│ │ ├── jquery.dataTables.js
│ │ └── plugins/
│ │ ├── ckeditor/
│ │ │ ├── CHANGES.md
│ │ │ ├── LICENSE.md
│ │ │ ├── README.md
│ │ │ ├── adapters/
│ │ │ │ ├── index.php
│ │ │ │ └── jquery.js
│ │ │ ├── build-config.js
│ │ │ ├── ckeditor.js
│ │ │ ├── config.js
│ │ │ ├── contents.css
│ │ │ ├── index.php
│ │ │ ├── lang/
│ │ │ │ ├── en.js
│ │ │ │ └── index.php
│ │ │ ├── plugins/
│ │ │ │ ├── a11yhelp/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ ├── a11yhelp.js
│ │ │ │ │ └── lang/
│ │ │ │ │ ├── _translationstatus.txt
│ │ │ │ │ ├── ar.js
│ │ │ │ │ ├── bg.js
│ │ │ │ │ ├── ca.js
│ │ │ │ │ ├── cs.js
│ │ │ │ │ ├── cy.js
│ │ │ │ │ ├── da.js
│ │ │ │ │ ├── de.js
│ │ │ │ │ ├── el.js
│ │ │ │ │ ├── en-gb.js
│ │ │ │ │ ├── en.js
│ │ │ │ │ ├── eo.js
│ │ │ │ │ ├── es.js
│ │ │ │ │ ├── et.js
│ │ │ │ │ ├── fa.js
│ │ │ │ │ ├── fi.js
│ │ │ │ │ ├── fr-ca.js
│ │ │ │ │ ├── fr.js
│ │ │ │ │ ├── gl.js
│ │ │ │ │ ├── gu.js
│ │ │ │ │ ├── he.js
│ │ │ │ │ ├── hi.js
│ │ │ │ │ ├── hr.js
│ │ │ │ │ ├── hu.js
│ │ │ │ │ ├── id.js
│ │ │ │ │ ├── it.js
│ │ │ │ │ ├── ja.js
│ │ │ │ │ ├── km.js
│ │ │ │ │ ├── ko.js
│ │ │ │ │ ├── ku.js
│ │ │ │ │ ├── lt.js
│ │ │ │ │ ├── lv.js
│ │ │ │ │ ├── mk.js
│ │ │ │ │ ├── mn.js
│ │ │ │ │ ├── nb.js
│ │ │ │ │ ├── nl.js
│ │ │ │ │ ├── no.js
│ │ │ │ │ ├── pl.js
│ │ │ │ │ ├── pt-br.js
│ │ │ │ │ ├── pt.js
│ │ │ │ │ ├── ro.js
│ │ │ │ │ ├── ru.js
│ │ │ │ │ ├── si.js
│ │ │ │ │ ├── sk.js
│ │ │ │ │ ├── sl.js
│ │ │ │ │ ├── sq.js
│ │ │ │ │ ├── sr-latn.js
│ │ │ │ │ ├── sr.js
│ │ │ │ │ ├── sv.js
│ │ │ │ │ ├── th.js
│ │ │ │ │ ├── tr.js
│ │ │ │ │ ├── tt.js
│ │ │ │ │ ├── ug.js
│ │ │ │ │ ├── uk.js
│ │ │ │ │ ├── vi.js
│ │ │ │ │ ├── zh-cn.js
│ │ │ │ │ └── zh.js
│ │ │ │ ├── about/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── about.js
│ │ │ │ ├── clipboard/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── paste.js
│ │ │ │ ├── colordialog/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── colordialog.js
│ │ │ │ ├── dialog/
│ │ │ │ │ └── dialogDefinition.js
│ │ │ │ ├── div/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── div.js
│ │ │ │ ├── find/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── find.js
│ │ │ │ ├── flash/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── flash.js
│ │ │ │ ├── forms/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ ├── button.js
│ │ │ │ │ ├── checkbox.js
│ │ │ │ │ ├── form.js
│ │ │ │ │ ├── hiddenfield.js
│ │ │ │ │ ├── radio.js
│ │ │ │ │ ├── select.js
│ │ │ │ │ ├── textarea.js
│ │ │ │ │ └── textfield.js
│ │ │ │ ├── iframe/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── iframe.js
│ │ │ │ ├── image/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── image.js
│ │ │ │ ├── index.php
│ │ │ │ ├── link/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ ├── anchor.js
│ │ │ │ │ └── link.js
│ │ │ │ ├── liststyle/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── liststyle.js
│ │ │ │ ├── pastefromword/
│ │ │ │ │ └── filter/
│ │ │ │ │ └── default.js
│ │ │ │ ├── preview/
│ │ │ │ │ └── preview.html
│ │ │ │ ├── scayt/
│ │ │ │ │ ├── LICENSE.md
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── dialogs/
│ │ │ │ │ ├── options.js
│ │ │ │ │ └── toolbar.css
│ │ │ │ ├── smiley/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── smiley.js
│ │ │ │ ├── specialchar/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ ├── lang/
│ │ │ │ │ │ ├── _translationstatus.txt
│ │ │ │ │ │ ├── ar.js
│ │ │ │ │ │ ├── bg.js
│ │ │ │ │ │ ├── ca.js
│ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ ├── cy.js
│ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ ├── el.js
│ │ │ │ │ │ ├── en-gb.js
│ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ ├── eo.js
│ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ ├── et.js
│ │ │ │ │ │ ├── fa.js
│ │ │ │ │ │ ├── fi.js
│ │ │ │ │ │ ├── fr-ca.js
│ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ ├── gl.js
│ │ │ │ │ │ ├── he.js
│ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ ├── hu.js
│ │ │ │ │ │ ├── id.js
│ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ ├── ja.js
│ │ │ │ │ │ ├── km.js
│ │ │ │ │ │ ├── ku.js
│ │ │ │ │ │ ├── lv.js
│ │ │ │ │ │ ├── nb.js
│ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ ├── no.js
│ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ ├── pt-br.js
│ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ ├── si.js
│ │ │ │ │ │ ├── sk.js
│ │ │ │ │ │ ├── sl.js
│ │ │ │ │ │ ├── sq.js
│ │ │ │ │ │ ├── sv.js
│ │ │ │ │ │ ├── th.js
│ │ │ │ │ │ ├── tr.js
│ │ │ │ │ │ ├── tt.js
│ │ │ │ │ │ ├── ug.js
│ │ │ │ │ │ ├── uk.js
│ │ │ │ │ │ ├── vi.js
│ │ │ │ │ │ ├── zh-cn.js
│ │ │ │ │ │ └── zh.js
│ │ │ │ │ └── specialchar.js
│ │ │ │ ├── table/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── table.js
│ │ │ │ ├── tabletools/
│ │ │ │ │ └── dialogs/
│ │ │ │ │ └── tableCell.js
│ │ │ │ ├── templates/
│ │ │ │ │ ├── dialogs/
│ │ │ │ │ │ ├── templates.css
│ │ │ │ │ │ └── templates.js
│ │ │ │ │ └── templates/
│ │ │ │ │ └── default.js
│ │ │ │ └── wsc/
│ │ │ │ ├── LICENSE.md
│ │ │ │ ├── README.md
│ │ │ │ └── dialogs/
│ │ │ │ ├── ciframe.html
│ │ │ │ ├── tmpFrameset.html
│ │ │ │ ├── wsc.css
│ │ │ │ ├── wsc.js
│ │ │ │ └── wsc_ie.js
│ │ │ ├── samples/
│ │ │ │ ├── ajax.html
│ │ │ │ ├── api.html
│ │ │ │ ├── appendto.html
│ │ │ │ ├── assets/
│ │ │ │ │ ├── outputxhtml/
│ │ │ │ │ │ └── outputxhtml.css
│ │ │ │ │ ├── posteddata.php
│ │ │ │ │ └── uilanguages/
│ │ │ │ │ └── languages.js
│ │ │ │ ├── datafiltering.html
│ │ │ │ ├── divreplace.html
│ │ │ │ ├── index.html
│ │ │ │ ├── index.php
│ │ │ │ ├── inlineall.html
│ │ │ │ ├── inlinebycode.html
│ │ │ │ ├── inlinetextarea.html
│ │ │ │ ├── jquery.html
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── dialog/
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ └── my_dialog.js
│ │ │ │ │ │ └── dialog.html
│ │ │ │ │ ├── enterkey/
│ │ │ │ │ │ └── enterkey.html
│ │ │ │ │ ├── htmlwriter/
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ └── outputforflash/
│ │ │ │ │ │ │ ├── outputforflash.fla
│ │ │ │ │ │ │ ├── outputforflash.swf
│ │ │ │ │ │ │ └── swfobject.js
│ │ │ │ │ │ ├── outputforflash.html
│ │ │ │ │ │ └── outputhtml.html
│ │ │ │ │ ├── magicline/
│ │ │ │ │ │ └── magicline.html
│ │ │ │ │ ├── toolbar/
│ │ │ │ │ │ └── toolbar.html
│ │ │ │ │ └── wysiwygarea/
│ │ │ │ │ └── fullpage.html
│ │ │ │ ├── readonly.html
│ │ │ │ ├── replacebyclass.html
│ │ │ │ ├── replacebycode.html
│ │ │ │ ├── sample.css
│ │ │ │ ├── sample.js
│ │ │ │ ├── sample_posteddata.php
│ │ │ │ ├── tabindex.html
│ │ │ │ ├── uicolor.html
│ │ │ │ ├── uilanguages.html
│ │ │ │ └── xhtmlstyle.html
│ │ │ ├── skins/
│ │ │ │ ├── index.php
│ │ │ │ └── moono/
│ │ │ │ ├── dialog.css
│ │ │ │ ├── dialog_ie.css
│ │ │ │ ├── dialog_ie7.css
│ │ │ │ ├── dialog_ie8.css
│ │ │ │ ├── dialog_iequirks.css
│ │ │ │ ├── editor.css
│ │ │ │ ├── editor_gecko.css
│ │ │ │ ├── editor_ie.css
│ │ │ │ ├── editor_ie7.css
│ │ │ │ ├── editor_ie8.css
│ │ │ │ ├── editor_iequirks.css
│ │ │ │ └── readme.md
│ │ │ └── styles.js
│ │ └── index.php
│ ├── pages.php
│ ├── pastes.php
│ ├── sitemap.php
│ ├── stats.php
│ ├── tasks.php
│ ├── test_mail.php
│ └── users.php
├── archive.php
├── config.php
├── docs/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── OAUTH
│ ├── config.example.php
│ ├── nginx.example.conf
│ ├── old-paste.mysqlschema.sql
│ └── paste.mysqlschema.sql
├── includes/
│ ├── Highlight/
│ │ ├── HighlightResult.php
│ │ ├── Highlighter.php
│ │ ├── JsonRef.php
│ │ ├── Language.php
│ │ ├── Mode.php
│ │ ├── README
│ │ ├── RegEx.php
│ │ ├── RegExMatch.php
│ │ ├── RegExUtils.php
│ │ ├── Terminators.php
│ │ ├── bootstrap.php
│ │ ├── languages/
│ │ │ ├── 1c.json
│ │ │ ├── abnf.json
│ │ │ ├── accesslog.json
│ │ │ ├── actionscript.json
│ │ │ ├── ada.json
│ │ │ ├── angelscript.json
│ │ │ ├── apache.json
│ │ │ ├── applescript.json
│ │ │ ├── arcade.json
│ │ │ ├── arduino.json
│ │ │ ├── armasm.json
│ │ │ ├── asciidoc.json
│ │ │ ├── aspectj.json
│ │ │ ├── autohotkey.json
│ │ │ ├── autoit.json
│ │ │ ├── avrasm.json
│ │ │ ├── awk.json
│ │ │ ├── axapta.json
│ │ │ ├── bash.json
│ │ │ ├── basic.json
│ │ │ ├── bnf.json
│ │ │ ├── brainfuck.json
│ │ │ ├── cal.json
│ │ │ ├── capnproto.json
│ │ │ ├── ceylon.json
│ │ │ ├── clean.json
│ │ │ ├── clojure-repl.json
│ │ │ ├── clojure.json
│ │ │ ├── cmake.json
│ │ │ ├── coffeescript.json
│ │ │ ├── coq.json
│ │ │ ├── cos.json
│ │ │ ├── cpp.json
│ │ │ ├── crmsh.json
│ │ │ ├── crystal.json
│ │ │ ├── cs.json
│ │ │ ├── csp.json
│ │ │ ├── css.json
│ │ │ ├── d.json
│ │ │ ├── dart.json
│ │ │ ├── delphi.json
│ │ │ ├── diff.json
│ │ │ ├── django.json
│ │ │ ├── dns.json
│ │ │ ├── dockerfile.json
│ │ │ ├── dos.json
│ │ │ ├── dsconfig.json
│ │ │ ├── dts.json
│ │ │ ├── dust.json
│ │ │ ├── ebnf.json
│ │ │ ├── elixir.json
│ │ │ ├── elm.json
│ │ │ ├── erb.json
│ │ │ ├── erlang-repl.json
│ │ │ ├── erlang.json
│ │ │ ├── excel.json
│ │ │ ├── fix.json
│ │ │ ├── flix.json
│ │ │ ├── fortran.json
│ │ │ ├── fsharp.json
│ │ │ ├── gams.json
│ │ │ ├── gauss.json
│ │ │ ├── gcode.json
│ │ │ ├── gherkin.json
│ │ │ ├── glsl.json
│ │ │ ├── gml.json
│ │ │ ├── go.json
│ │ │ ├── golo.json
│ │ │ ├── gradle.json
│ │ │ ├── groovy.json
│ │ │ ├── haml.json
│ │ │ ├── handlebars.json
│ │ │ ├── haskell.json
│ │ │ ├── haxe.json
│ │ │ ├── hsp.json
│ │ │ ├── htmlbars.json
│ │ │ ├── http.json
│ │ │ ├── hy.json
│ │ │ ├── inform7.json
│ │ │ ├── ini.json
│ │ │ ├── irpf90.json
│ │ │ ├── isbl.json
│ │ │ ├── java.json
│ │ │ ├── javascript.json
│ │ │ ├── jboss-cli.json
│ │ │ ├── json.json
│ │ │ ├── julia-repl.json
│ │ │ ├── julia.json
│ │ │ ├── kotlin.json
│ │ │ ├── lasso.json
│ │ │ ├── ldif.json
│ │ │ ├── leaf.json
│ │ │ ├── less.json
│ │ │ ├── lisp.json
│ │ │ ├── livecodeserver.json
│ │ │ ├── livescript.json
│ │ │ ├── llvm.json
│ │ │ ├── lsl.json
│ │ │ ├── lua.json
│ │ │ ├── makefile.json
│ │ │ ├── markdown.json
│ │ │ ├── mathematica.json
│ │ │ ├── matlab.json
│ │ │ ├── maxima.json
│ │ │ ├── mel.json
│ │ │ ├── mercury.json
│ │ │ ├── mipsasm.json
│ │ │ ├── mizar.json
│ │ │ ├── mojolicious.json
│ │ │ ├── monkey.json
│ │ │ ├── moonscript.json
│ │ │ ├── n1ql.json
│ │ │ ├── nginx.json
│ │ │ ├── nimrod.json
│ │ │ ├── nix.json
│ │ │ ├── nsis.json
│ │ │ ├── objectivec.json
│ │ │ ├── ocaml.json
│ │ │ ├── openscad.json
│ │ │ ├── oxygene.json
│ │ │ ├── parser3.json
│ │ │ ├── perl.json
│ │ │ ├── pf.json
│ │ │ ├── pgsql.json
│ │ │ ├── php.json
│ │ │ ├── plaintext.json
│ │ │ ├── pony.json
│ │ │ ├── powershell.json
│ │ │ ├── processing.json
│ │ │ ├── profile.json
│ │ │ ├── prolog.json
│ │ │ ├── properties.json
│ │ │ ├── protobuf.json
│ │ │ ├── puppet.json
│ │ │ ├── purebasic.json
│ │ │ ├── python.json
│ │ │ ├── q.json
│ │ │ ├── qml.json
│ │ │ ├── r.json
│ │ │ ├── reasonml.json
│ │ │ ├── rib.json
│ │ │ ├── roboconf.json
│ │ │ ├── routeros.json
│ │ │ ├── rsl.json
│ │ │ ├── ruby.json
│ │ │ ├── ruleslanguage.json
│ │ │ ├── rust.json
│ │ │ ├── sas.json
│ │ │ ├── scala.json
│ │ │ ├── scheme.json
│ │ │ ├── scilab.json
│ │ │ ├── scss.json
│ │ │ ├── shell.json
│ │ │ ├── smali.json
│ │ │ ├── smalltalk.json
│ │ │ ├── sml.json
│ │ │ ├── sqf.json
│ │ │ ├── sql.json
│ │ │ ├── stan.json
│ │ │ ├── stata.json
│ │ │ ├── step21.json
│ │ │ ├── stylus.json
│ │ │ ├── subunit.json
│ │ │ ├── swift.json
│ │ │ ├── taggerscript.json
│ │ │ ├── tap.json
│ │ │ ├── tcl.json
│ │ │ ├── tex.json
│ │ │ ├── thrift.json
│ │ │ ├── tp.json
│ │ │ ├── twig.json
│ │ │ ├── typescript.json
│ │ │ ├── vala.json
│ │ │ ├── vbnet.json
│ │ │ ├── vbscript-html.json
│ │ │ ├── vbscript.json
│ │ │ ├── verilog.json
│ │ │ ├── vhdl.json
│ │ │ ├── vim.json
│ │ │ ├── x86asm.json
│ │ │ ├── xl.json
│ │ │ ├── xml.json
│ │ │ ├── xquery.json
│ │ │ ├── yaml.json
│ │ │ └── zephir.json
│ │ ├── list_languages.php
│ │ ├── render.php
│ │ └── styles/
│ │ ├── a11y-dark.css
│ │ ├── a11y-light.css
│ │ ├── agate.css
│ │ ├── an-old-hope.css
│ │ ├── androidstudio.css
│ │ ├── arduino-light.css
│ │ ├── arta.css
│ │ ├── ascetic.css
│ │ ├── atelier-cave-dark.css
│ │ ├── atelier-cave-light.css
│ │ ├── atelier-dune-dark.css
│ │ ├── atelier-dune-light.css
│ │ ├── atelier-estuary-dark.css
│ │ ├── atelier-estuary-light.css
│ │ ├── atelier-forest-dark.css
│ │ ├── atelier-forest-light.css
│ │ ├── atelier-heath-dark.css
│ │ ├── atelier-heath-light.css
│ │ ├── atelier-lakeside-dark.css
│ │ ├── atelier-lakeside-light.css
│ │ ├── atelier-plateau-dark.css
│ │ ├── atelier-plateau-light.css
│ │ ├── atelier-savanna-dark.css
│ │ ├── atelier-savanna-light.css
│ │ ├── atelier-seaside-dark.css
│ │ ├── atelier-seaside-light.css
│ │ ├── atelier-sulphurpool-dark.css
│ │ ├── atelier-sulphurpool-light.css
│ │ ├── atom-one-dark-reasonable.css
│ │ ├── atom-one-dark.css
│ │ ├── atom-one-light.css
│ │ ├── brown-paper.css
│ │ ├── codepen-embed.css
│ │ ├── color-brewer.css
│ │ ├── darcula.css
│ │ ├── dark.css
│ │ ├── darkula.css
│ │ ├── default.css
│ │ ├── docco.css
│ │ ├── dracula.css
│ │ ├── far.css
│ │ ├── foundation.css
│ │ ├── github-gist.css
│ │ ├── github.css
│ │ ├── gml.css
│ │ ├── googlecode.css
│ │ ├── gradient-dark.css
│ │ ├── gradient-light.css
│ │ ├── grayscale.css
│ │ ├── gruvbox-dark.css
│ │ ├── gruvbox-light.css
│ │ ├── hopscotch.css
│ │ ├── hybrid.css
│ │ ├── idea.css
│ │ ├── ir-black.css
│ │ ├── isbl-editor-dark.css
│ │ ├── isbl-editor-light.css
│ │ ├── kimbie.dark.css
│ │ ├── kimbie.light.css
│ │ ├── lightfair.css
│ │ ├── lioshi.css
│ │ ├── magula.css
│ │ ├── mono-blue.css
│ │ ├── monokai-sublime.css
│ │ ├── monokai.css
│ │ ├── night-owl.css
│ │ ├── nnfx-dark.css
│ │ ├── nnfx.css
│ │ ├── nord.css
│ │ ├── obsidian.css
│ │ ├── ocean.css
│ │ ├── paraiso-dark.css
│ │ ├── paraiso-light.css
│ │ ├── pojoaque.css
│ │ ├── purebasic.css
│ │ ├── qtcreator_dark.css
│ │ ├── qtcreator_light.css
│ │ ├── railscasts.css
│ │ ├── rainbow.css
│ │ ├── routeros.css
│ │ ├── school-book.css
│ │ ├── shades-of-purple.css
│ │ ├── solarized-dark.css
│ │ ├── solarized-light.css
│ │ ├── srcery.css
│ │ ├── stackoverflow-dark.css
│ │ ├── stackoverflow-light.css
│ │ ├── sunburst.css
│ │ ├── tomorrow-night-blue.css
│ │ ├── tomorrow-night-bright.css
│ │ ├── tomorrow-night-eighties.css
│ │ ├── tomorrow-night.css
│ │ ├── tomorrow.css
│ │ ├── vs.css
│ │ ├── vs2015.css
│ │ ├── xcode.css
│ │ ├── xt256.css
│ │ └── zenburn.css
│ ├── Parsedown/
│ │ ├── LICENSE.txt
│ │ ├── Parsedown.php
│ │ └── index.php
│ ├── captcha.php
│ ├── captchabg/
│ │ └── index.php
│ ├── fonts/
│ │ ├── captcha_code.otf
│ │ └── index.php
│ ├── functions.php
│ ├── geshi/
│ │ ├── 4cs.php
│ │ ├── 6502acme.php
│ │ ├── 6502kickass.php
│ │ ├── 6502tasm.php
│ │ ├── 68000devpac.php
│ │ ├── abap.php
│ │ ├── actionscript.php
│ │ ├── actionscript3.php
│ │ ├── ada.php
│ │ ├── aimms.php
│ │ ├── algol68.php
│ │ ├── apache.php
│ │ ├── applescript.php
│ │ ├── apt_sources.php
│ │ ├── arm.php
│ │ ├── asm.php
│ │ ├── asp.php
│ │ ├── asymptote.php
│ │ ├── autoconf.php
│ │ ├── autohotkey.php
│ │ ├── autoit.php
│ │ ├── avisynth.php
│ │ ├── awk.php
│ │ ├── bascomavr.php
│ │ ├── bash.php
│ │ ├── basic4gl.php
│ │ ├── batch.php
│ │ ├── bf.php
│ │ ├── biblatex.php
│ │ ├── bibtex.php
│ │ ├── blitzbasic.php
│ │ ├── bnf.php
│ │ ├── boo.php
│ │ ├── c.php
│ │ ├── c_loadrunner.php
│ │ ├── c_mac.php
│ │ ├── c_winapi.php
│ │ ├── caddcl.php
│ │ ├── cadlisp.php
│ │ ├── ceylon.php
│ │ ├── cfdg.php
│ │ ├── cfm.php
│ │ ├── chaiscript.php
│ │ ├── chapel.php
│ │ ├── cil.php
│ │ ├── clojure.php
│ │ ├── cmake.php
│ │ ├── cobol.php
│ │ ├── coffeescript.php
│ │ ├── cpp-qt.php
│ │ ├── cpp-winapi.php
│ │ ├── cpp.php
│ │ ├── csharp.php
│ │ ├── css.php
│ │ ├── cuesheet.php
│ │ ├── d.php
│ │ ├── dart.php
│ │ ├── dcl.php
│ │ ├── dcpu16.php
│ │ ├── dcs.php
│ │ ├── delphi.php
│ │ ├── diff.php
│ │ ├── div.php
│ │ ├── dos.php
│ │ ├── dot.php
│ │ ├── e.php
│ │ ├── ecmascript.php
│ │ ├── eiffel.php
│ │ ├── email.php
│ │ ├── epc.php
│ │ ├── erlang.php
│ │ ├── euphoria.php
│ │ ├── ezt.php
│ │ ├── f1.php
│ │ ├── falcon.php
│ │ ├── fo.php
│ │ ├── fortran.php
│ │ ├── freebasic.php
│ │ ├── freeswitch.php
│ │ ├── fsharp.php
│ │ ├── gambas.php
│ │ ├── gdb.php
│ │ ├── genero.php
│ │ ├── genie.php
│ │ ├── gettext.php
│ │ ├── glsl.php
│ │ ├── gml.php
│ │ ├── gnuplot.php
│ │ ├── go.php
│ │ ├── groovy.php
│ │ ├── gwbasic.php
│ │ ├── haskell.php
│ │ ├── haxe.php
│ │ ├── hicest.php
│ │ ├── hq9plus.php
│ │ ├── html4strict.php
│ │ ├── html5.php
│ │ ├── icon.php
│ │ ├── idl.php
│ │ ├── ini.php
│ │ ├── inno.php
│ │ ├── intercal.php
│ │ ├── io.php
│ │ ├── ispfpanel.php
│ │ ├── j.php
│ │ ├── java.php
│ │ ├── java5.php
│ │ ├── javascript.php
│ │ ├── jcl.php
│ │ ├── jquery.php
│ │ ├── julia.php
│ │ ├── kixtart.php
│ │ ├── klonec.php
│ │ ├── klonecpp.php
│ │ ├── kotlin.php
│ │ ├── latex.php
│ │ ├── lb.php
│ │ ├── ldif.php
│ │ ├── lisp.php
│ │ ├── llvm.php
│ │ ├── locobasic.php
│ │ ├── logtalk.php
│ │ ├── lolcode.php
│ │ ├── lotusformulas.php
│ │ ├── lotusscript.php
│ │ ├── lscript.php
│ │ ├── lsl2.php
│ │ ├── lua.php
│ │ ├── m68k.php
│ │ ├── magiksf.php
│ │ ├── make.php
│ │ ├── mapbasic.php
│ │ ├── mathematica.php
│ │ ├── matlab.php
│ │ ├── mercury.php
│ │ ├── metapost.php
│ │ ├── mirc.php
│ │ ├── mk-61.php
│ │ ├── mmix.php
│ │ ├── modula2.php
│ │ ├── modula3.php
│ │ ├── mpasm.php
│ │ ├── mxml.php
│ │ ├── mysql.php
│ │ ├── nagios.php
│ │ ├── netrexx.php
│ │ ├── newlisp.php
│ │ ├── nginx.php
│ │ ├── nimrod.php
│ │ ├── nsis.php
│ │ ├── oberon2.php
│ │ ├── objc.php
│ │ ├── objeck.php
│ │ ├── ocaml-brief.php
│ │ ├── ocaml.php
│ │ ├── octave.php
│ │ ├── oobas.php
│ │ ├── oorexx.php
│ │ ├── oracle11.php
│ │ ├── oracle8.php
│ │ ├── oxygene.php
│ │ ├── oz.php
│ │ ├── parasail.php
│ │ ├── parigp.php
│ │ ├── pascal.php
│ │ ├── pcre.php
│ │ ├── per.php
│ │ ├── perl.php
│ │ ├── perl6.php
│ │ ├── pf.php
│ │ ├── phix.php
│ │ ├── php-brief.php
│ │ ├── php.php
│ │ ├── pic16.php
│ │ ├── pike.php
│ │ ├── pixelbender.php
│ │ ├── pli.php
│ │ ├── plsql.php
│ │ ├── postgresql.php
│ │ ├── postscript.php
│ │ ├── povray.php
│ │ ├── powerbuilder.php
│ │ ├── powershell.php
│ │ ├── proftpd.php
│ │ ├── progress.php
│ │ ├── prolog.php
│ │ ├── properties.php
│ │ ├── providex.php
│ │ ├── purebasic.php
│ │ ├── pycon.php
│ │ ├── pys60.php
│ │ ├── python.php
│ │ ├── q.php
│ │ ├── qbasic.php
│ │ ├── qml.php
│ │ ├── racket.php
│ │ ├── rails.php
│ │ ├── rbs.php
│ │ ├── rebol.php
│ │ ├── reg.php
│ │ ├── rexx.php
│ │ ├── robots.php
│ │ ├── roff.php
│ │ ├── rpmspec.php
│ │ ├── rsplus.php
│ │ ├── ruby.php
│ │ ├── rust.php
│ │ ├── sas.php
│ │ ├── sass.php
│ │ ├── scala.php
│ │ ├── scheme.php
│ │ ├── scilab.php
│ │ ├── scl.php
│ │ ├── sdlbasic.php
│ │ ├── smalltalk.php
│ │ ├── smarty.php
│ │ ├── spark.php
│ │ ├── sparql.php
│ │ ├── sql.php
│ │ ├── sshconfig.php
│ │ ├── standardml.php
│ │ ├── stonescript.php
│ │ ├── swift.php
│ │ ├── systemverilog.php
│ │ ├── tcl.php
│ │ ├── tclegg.php
│ │ ├── teraterm.php
│ │ ├── texgraph.php
│ │ ├── text.php
│ │ ├── thinbasic.php
│ │ ├── tsql.php
│ │ ├── twig.php
│ │ ├── typoscript.php
│ │ ├── unicon.php
│ │ ├── upc.php
│ │ ├── urbi.php
│ │ ├── uscript.php
│ │ ├── vala.php
│ │ ├── vb.php
│ │ ├── vbnet.php
│ │ ├── vbscript.php
│ │ ├── vedit.php
│ │ ├── verilog.php
│ │ ├── vhdl.php
│ │ ├── vim.php
│ │ ├── visualfoxpro.php
│ │ ├── visualprolog.php
│ │ ├── whitespace.php
│ │ ├── whois.php
│ │ ├── winbatch.php
│ │ ├── wolfram.php
│ │ ├── xbasic.php
│ │ ├── xml.php
│ │ ├── xojo.php
│ │ ├── xorg_conf.php
│ │ ├── xpp.php
│ │ ├── yaml.php
│ │ ├── z80.php
│ │ └── zxbasic.php
│ ├── geshi.php
│ ├── index.php
│ ├── password.php
│ ├── recaptcha.php
│ └── session.php
├── index.php
├── install/
│ ├── configure.php
│ ├── index.php
│ ├── install.css
│ ├── install.js
│ ├── install.php
│ ├── test.php
│ └── test_configure.php
├── langs/
│ ├── bg.php
│ ├── br.php
│ ├── de.php
│ ├── en.php
│ ├── es.php
│ ├── fr.php
│ ├── index.php
│ ├── pl.php
│ ├── ru.php
│ ├── zh_SC.php
│ └── zh_TC.php
├── login.php
├── mail/
│ ├── composer.json
│ ├── index.php
│ └── mail.php
├── oauth/
│ ├── composer.json
│ ├── facebook.php
│ ├── google.php
│ ├── google_smtp.php
│ └── index.php
├── pages.php
├── paste.php
├── profile.php
├── robots.txt
├── sitemap.xml
├── theme/
│ ├── default/
│ │ ├── archive.php
│ │ ├── css/
│ │ │ ├── index.php
│ │ │ └── paste.css
│ │ ├── errors.php
│ │ ├── footer.php
│ │ ├── header.php
│ │ ├── img/
│ │ │ └── index.php
│ │ ├── index.php
│ │ ├── js/
│ │ │ ├── highlightTheme.js
│ │ │ └── paste.js
│ │ ├── login.php
│ │ ├── main.php
│ │ ├── pages.php
│ │ ├── profile.php
│ │ ├── sidebar.php
│ │ ├── user_profile.php
│ │ └── view.php
│ └── index.php
├── upgrade/
│ ├── 1.9-to.2.0.php
│ ├── 2.0-to.2.1.sql
│ └── index.php
└── user.php
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
; This file is for unifying the coding style for different editors and IDEs.
; More information at https://editorconfig.org
root = true
[*]
charset = utf-8
indent_size = 4
indent_style = space
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
================================================
FILE: .gitignore
================================================
================================================
FILE: .htaccess
================================================
Options +FollowSymLinks
RewriteEngine on
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page/([a-zA-Z0-9]+)/? pages.php?page=$1 [L]
RewriteRule ^archive archive.php [L]
RewriteRule ^profile profile.php [L]
RewriteRule ^user/([^/]+)/?$ user.php?user=$1 [L]
RewriteRule ^contact contact.php [L]
RewriteRule ^download/(.*)$ paste.php?download&id=$1 [L]
RewriteRule ^raw/(.*)$ paste.php?raw&id=$1 [L]
RewriteRule ^embed/(.*)$ paste.php?embed&id=$1 [L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ paste.php?id=$1 [L]
</IfModule>
================================================
FILE: README.md
================================================
Paste 3.1
=======
In progress: 3.2
* improvements
* integration of https://github.com/scrivo/highlight.php
* (geshi or highlight in config.php)
* theme picker if highlight.php enabled
* improved the layout for paste views, fixed some line number css bugs
* added a "we has cookies" footer/just comment it out in /theme/default/footer.php if not required
* live demo: https://paste.boxlabs.uk
New version 3.1
* Account deletion
* reCAPTCHA v3 with server side integration and token handling (and v2 support)
* Select reCAPTCHA in admin/configuration.php
* Select v2 or v3 depending on your keys
* Default score can be set in /includes/recaptcha.php but 0.8 will catch 99% of bots, balancing false negatives.
* Pastes and user account login/register are gated, with v3 users are no longer required to enter a captcha.
* If signed up with OAuth2, ability to change username once in /profile.php - Support more platforms in future.
* Search feature, archive/pagination
* Improved admin panel with Bootstrap 5
* Ability to add/remove admins
* Fixed SMTP for user account emails/verification - Plain SMTP server or use OAuth2 for Google Mail
* CSRF session tokens, improve security, stay logged in for 30 days with "Remember Me"
* PHP version must be 8.1 or above - time to drag Paste into the future.
* Clean up the codebase, remove obsolete functions and added more comments
* /tmp folder has gone bye bye - improved admin panel statistics, daily unique paste views
Previous version - 3.0
* PHP 8.4> compatibility
* Replace mysqli with pdo
* New default theme, upgrade paste2 theme from bootstrap 3 to 5
* Dark mode
* Admin panel changes
* Google OAuth2 SMTP/User accounts
* Security and bug fixes
* Improved installer, checks for existing database and updates schema as appropriate.
* Improved database schema
* Update Parsedown for Markdown
* All pastes encrypted in the database with AES-256 by default
[](https://sourceforge.net/projects/phpaste/files/latest/download)
[](https://sourceforge.net/projects/phpaste/files/latest/download)
[](https://sourceforge.net/projects/phpaste/files/latest/download)
Paste is forked from the original source pastebin.com used before it was bought.
The original source is available from the previous owner's **[GitHub repository](https://github.com/lordelph/pastebin)**
A public version can be found **[here](https://paste.boxlabs.uk/)**
<table style="padding:10px">
<tr>
<td><img src="https://i.imgur.com/Yrjl8w1.png" align="left" alt="1" width = 279px height = 496px></td>
<td><img src="https://i.imgur.com/VleCHjh.png" alt="2" width = 288px height = 512px></td>
</tr>
</table>
IRC: If you would like support or want to contribute to Paste connect to irc.collectiveirc.net in channel #PASTE
Any bugs can be reported at:
https://github.com/boxlabss/PASTE/issues/new
Requirements
===
- PHP 8.1 or higher with `pdo_mysql`, `openssl`, and `curl` extensions
- MySQL or MariaDB
- Composer for dependency management
- Web server (e.g., Apache/Nginx) with HTTPS enabled (if OAuth enabled as below)
See docs/CHANGELOG
---
Install
===
* Create a database for PASTE.
* Upload all files to a webfolder
* Point your browser to http(s)://example.com/install
* Input some settings, DELETE the install folder and you're ready to go.
* To configure OAuth, first you need to use composer to install phpmailer and google api/oauth2 client
- Install Composer dependencies:
```bash
cd /oauth
composer require google/apiclient:^2.12 league/oauth2-client:^2.7
cd /mail
composer require phpmailer/phpmailer:^6.9
```
- Enter database details (host, name, user, password) and OAuth settings (enable or disable Google/Facebook).
- This generates `config.php` with dynamic `G_REDIRECT_URI` based on your domain.
**Set Up Google OAuth for User Logins**:
- Go to [Google Cloud Console](https://console.developers.google.com).
- Create a project and enable the Google+ API.
- Create OAuth 2.0 credentials (Web application).
- Set the Authorized Redirect URI to: `<baseurl>oauth/google.php` (e.g., `https://yourdomain.com/oauth/google.php`), where `<baseurl>` is from `site_info.baseurl`.
- Update `config.php` with:
```php
define('G_CLIENT_ID', 'your_client_id');
define('G_CLIENT_SECRET', 'your_client_secret');
```
- Ensure `enablegoog` is set to `yes` in `config.php`.
**Set Up Gmail SMTP with OAuth2**:
- In [Google Cloud Console](https://console.developers.google.com), enable the Gmail API.
- Create or reuse OAuth 2.0 credentials.
- Set the Authorized Redirect URI to: `<baseurl>oauth/google_smtp.php` (e.g., `https://yourdomain.com/oauth/google_smtp.php`), where `<baseurl>` is from `site_info.baseurl`.
- Log in to `/admin/configuration.php` as an admin.
- Enter the Client ID and Client Secret under "Google OAuth 2.0 Setup for Gmail SMTP".
- Click "Authorize Gmail SMTP" to authenticate and save the refresh token in the `mail` table.
- Configure SMTP settings (host: `smtp.gmail.com`, port: `587`, socket: `tls`, auth: `true`, protocol: `2`).
Development setup
===
* Set up git
* Fork this repository
* Create a database for PASTE.
* Check out the current master branch of your fork
* Point your browser to http(s)://example.com/install and follow the instructions on screen or import docs/paste.mysqlschema.sql into your database and copy docs/config.example.php to config.php and edit
Now you can start coding and send in pull requests.
---
Upgrading
===
3.0/3.1 schema changes
run the installer to update database
(backup first)
* 2.1 to 2.2
no changes to database
* 2.0 to 2.1
Insert the schema changes to your database using the CLI:
```
mysql -uuser -ppassword databasename < upgrade/2.0-to-2.1.sql
```
or upload & import upgrade/2.0-to-2.1.sql using phpMyAdmin
* 1.9 to 2.0
Run upgrade/1.9-to.2.0.php
---
Clean URLs
===
Set mod_rewrite in config.php to 1
For Apache, just use .htaccess
For Nginx, use the example config in **[docs/nginx.example.conf](https://github.com/boxlabss/PASTE/blob/HEAD/docs/nginx.example.conf)**
---
Changelog
===
See **[docs/CHANGELOG.md](https://github.com/boxlabss/PASTE/blob/HEAD/docs/CHANGELOG.md)**
---
Paste now supports pastes of upto 4GB in size, and this is configurable in config.php
However, this relies on the value of post_max_size in your PHP configuration file.
```php
// Max paste size in MB. This value should always be below the value of
// post_max_size in your PHP configuration settings (php.ini) or empty errors will occur.
// The value we got on installation of Paste was: post_max_size = 1G
// Otherwise, the maximum value that can be set is 4000 (4GB)
$pastelimit = "1"; // 0.5 = 512 kilobytes, 1 = 1MB
```
Everything else can be configured using the admin panel.
---
Credits
===
* Paul Dixon for developing **[the original pastebin.com](https://github.com/lordelph/pastebin)**
* **[Pat O'Brien](https://github.com/poblabs)** for numerous contributions to the project.
* **[Viktoria Rei Bauer](https://github.com/ToeiRei)** for her contributions to the project.
* Roberto Rodriguez (roberto.rodriguez.pino[AT]gmail.com) for PostgreSQL support on v1.9.
The Paste theme was built using Bootstrap 5
================================================
FILE: accountdeleted.php
================================================
<?php
/*
* Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE
* demo: https://paste.boxlabs.uk/
*
* https://phpaste.sourceforge.io/
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License in LICENCE for more details.
*/
declare(strict_types=1);
require_once 'includes/session.php';
require_once 'config.php';
require_once 'includes/functions.php';
// DB + site info
try {
$stmt = $pdo->query("SELECT * FROM site_info WHERE id = 1");
$site = $stmt->fetch() ?: [];
} catch (Throwable $e) { $site = []; }
$baseurl = trim($site['baseurl'] ?? '');
$site_name = trim($site['site_name'] ?? 'Paste');
// Theme + language
try {
$iface = $pdo->query("SELECT * FROM interface WHERE id = 1")->fetch() ?: [];
} catch (Throwable $e) { $iface = []; }
$default_lang = trim($iface['lang'] ?? 'en.php');
$default_theme = trim($iface['theme'] ?? 'default');
require_once("langs/$default_lang");
// Page title + message (use errors.php to render)
$p_title = $lang['accountdeleted'] ?? 'Account Deleted';
$error = $lang['goodbyemsg'] ?? 'Your account and all data have been permanently removed.';
// Render with error theme
require_once("theme/$default_theme/header.php");
require_once("theme/$default_theme/errors.php");
require_once("theme/$default_theme/footer.php");
================================================
FILE: admin/admin.php
================================================
<?php
/*
* Paste Admin https://github.com/boxlabss/PASTE
* demo: https://paste.boxlabs.uk/
*
* https://phpaste.sourceforge.io/
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License in LICENCE for more details.
*/
require_once('../includes/password.php');
session_start();
$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
$date = date('Y-m-d H:i:s');
require_once('../config.php');
// Guard: admin session
if (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {
header("Location: index.php");
exit();
}
try {
$pdo = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4", $dbuser, $dbpassword, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]);
// baseurl for sidebar links
$row = $pdo->query("SELECT baseurl FROM site_info WHERE id=1")->fetch();
$baseurl = rtrim((string)($row['baseurl'] ?? ''), '/');
// Validate current admin
$st = $pdo->prepare("SELECT id,user,pass FROM admin WHERE id=?");
$st->execute([$_SESSION['admin_id']]);
$me = $st->fetch();
if (!$me || $me['user'] !== $_SESSION['admin_login']) {
unset($_SESSION['admin_login'], $_SESSION['admin_id']);
header("Location: " . htmlspecialchars($baseurl . '/admin/index.php', ENT_QUOTES, 'UTF-8'));
exit();
}
$current_admin_id = (int)$me['id'];
$adminid = (string)$me['user'];
$password_hash = (string)$me['pass'];
// Logout
if (isset($_GET['logout'])) {
$_SESSION = [];
session_destroy();
header("Location: " . htmlspecialchars($baseurl . '/admin/index.php', ENT_QUOTES, 'UTF-8'));
exit();
}
// Log admin activity
$st = $pdo->query("SELECT MAX(id) last_id FROM admin_history");
$last_id = $st->fetch()['last_id'] ?? null;
$last_ip = $last_date = null;
if ($last_id) {
$st = $pdo->prepare("SELECT ip,last_date FROM admin_history WHERE id=?");
$st->execute([$last_id]);
$h = $st->fetch();
$last_ip = $h['ip'] ?? null;
$last_date = $h['last_date'] ?? null;
}
if ($last_ip !== $ip || $last_date !== $date) {
$st = $pdo->prepare("INSERT INTO admin_history(last_date,ip) VALUES(?,?)");
$st->execute([$date,$ip]);
}
// Messages
$msg = '';
$msg_type = 'info';
// Update my account
if ($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['update_admin'])) {
$new_user = trim((string)($_POST['adminid'] ?? ''));
$new_pass = (string)($_POST['password'] ?? '');
if ($new_user === '' || strlen($new_user) < 3 || strlen($new_user) > 50 || !preg_match('/^[a-zA-Z0-9]+$/', $new_user)) {
$msg = 'Error: Username must be 3–50 alphanumeric characters.'; $msg_type = 'danger';
} elseif ($new_pass !== '' && strlen($new_pass) < 8) {
$msg = 'Error: Password must be at least 8 characters.'; $msg_type = 'danger';
} else {
// unique username (except me)
$st = $pdo->prepare("SELECT COUNT(*) c FROM admin WHERE user=? AND id<>?");
$st->execute([$new_user, $current_admin_id]);
if ((int)$st->fetch()['c'] > 0) {
$msg = 'Error: Username already exists.'; $msg_type = 'danger';
} else {
$password_hash_to_store = $password_hash;
if ($new_pass !== '') $password_hash_to_store = password_hash($new_pass, PASSWORD_DEFAULT);
$st = $pdo->prepare("UPDATE admin SET user=?, pass=? WHERE id=?");
$st->execute([$new_user, $password_hash_to_store, $current_admin_id]);
$_SESSION['admin_login'] = $new_user;
$adminid = $new_user;
$password_hash = $password_hash_to_store;
$msg = 'Account details updated.'; $msg_type = 'success';
}
}
}
// Add admin
if ($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['add_admin'])) {
$new_username = trim((string)($_POST['new_username'] ?? ''));
$new_password = (string)($_POST['new_password'] ?? '');
if ($new_username === '' || $new_password === '') {
$msg = 'Error: Username and password are required.'; $msg_type = 'danger';
} elseif (strlen($new_username) < 3 || strlen($new_username) > 50 || !preg_match('/^[a-zA-Z0-9]+$/', $new_username)) {
$msg = 'Error: Username must be 3–50 alphanumeric characters.'; $msg_type = 'danger';
} elseif (strlen($new_password) < 8) {
$msg = 'Error: Password must be at least 8 characters.'; $msg_type = 'danger';
} else {
$st = $pdo->prepare("SELECT COUNT(*) c FROM admin WHERE user=?");
$st->execute([$new_username]);
if ((int)$st->fetch()['c'] > 0) {
$msg = 'Error: Username already exists.'; $msg_type = 'danger';
} else {
$hash = password_hash($new_password, PASSWORD_DEFAULT);
$st = $pdo->prepare("INSERT INTO admin (user, pass) VALUES (?, ?)");
$st->execute([$new_username, $hash]);
$msg = 'New admin added successfully.'; $msg_type = 'success';
}
}
}
// Delete admin (server-side guards: cannot delete id=1; cannot delete current admin)
if (isset($_GET['delete_admin']) && ctype_digit($_GET['delete_admin'])) {
$del_id = (int)$_GET['delete_admin'];
if ($del_id === 1) {
$msg = 'Error: You cannot delete the primary admin (ID 1).'; $msg_type = 'danger';
} elseif ($del_id === $current_admin_id) {
$msg = 'Error: You cannot delete your own account while logged in.'; $msg_type = 'danger';
} else {
$st = $pdo->prepare("DELETE FROM admin WHERE id=?");
$st->execute([$del_id]);
$msg = 'Admin deleted successfully.'; $msg_type = 'success';
}
}
// Fetch admins
$admins = $pdo->query("SELECT id,user FROM admin ORDER BY id")->fetchAll();
// History pagination
$rec_limit = 10;
$page = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;
$offset = ($page - 1) * $rec_limit;
$rec_count = (int)$pdo->query("SELECT COUNT(*) FROM admin_history")->fetchColumn();
$total_pages = max(1, (int)ceil($rec_count / $rec_limit));
$st = $pdo->prepare("SELECT last_date,ip FROM admin_history ORDER BY id DESC LIMIT :lim OFFSET :off");
$st->bindValue(':lim', $rec_limit, PDO::PARAM_INT);
$st->bindValue(':off', $offset, PDO::PARAM_INT);
$st->execute();
$history_rows = $st->fetchAll();
} catch (PDOException $e) {
die("Unable to connect to database: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));
}
?>
<!DOCTYPE html>
<html lang="en" data-bs-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Paste - Admin Account</title>
<link rel="shortcut icon" href="favicon.ico">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
<style>
:root{
--bg:#0f1115; --card:#141821; --muted:#7f8da3; --border:#1f2633; --accent:#0d6efd;
}
body{background:var(--bg);color:#fff;}
.navbar{background:#121826!important;position:sticky;top:0;z-index:1030}
.btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}
.btn-soft:hover{background:#0e1422;color:#fff}
.sidebar-desktop{position:sticky; top:1rem;background:#121826;border:1px solid var(--border);border-radius:12px;padding:12px}
.sidebar-desktop .list-group-item{background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem}
.sidebar-desktop .list-group-item:hover{background:#0e1422}
.sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}
.card{background:var(--card);border:1px solid var(--border);border-radius:12px}
.form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}
.form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.table{color:#e6edf3}
.table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}
.table td,.table th{border-color:var(--border)}
.pagination .page-link{color:#c6d4f0;background:#101521;border-color:var(--border)}
.pagination .page-item.active .page-link{background:#0d6efd;border-color:#0d6efd}
.offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}
.offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}
.offcanvas-nav .list-group-item:hover{background:#0e1422}
</style>
<script>
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('.delete-admin').forEach(a => {
a.addEventListener('click', e => {
e.preventDefault();
const id = a.getAttribute('data-id');
if (confirm(`Delete admin ID ${id}? This cannot be undone.`)) {
window.location.href = a.href;
}
});
});
});
</script>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark">
<div class="container-fluid">
<div class="d-flex align-items-center gap-2">
<button class="btn btn-soft d-lg-none" data-bs-toggle="offcanvas" data-bs-target="#navOffcanvas" aria-controls="navOffcanvas">
<i class="bi bi-list"></i>
</button>
<a class="navbar-brand" href="../">Paste</a>
</div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">
<?php echo htmlspecialchars($_SESSION['admin_login']); ?>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="admin.php">Settings</a></li>
<li><a class="dropdown-item" href="?logout">Logout</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<!-- Mobile offcanvas nav -->
<div class="offcanvas offcanvas-start offcanvas-nav" tabindex="-1" id="navOffcanvas">
<div class="offcanvas-header">
<h5 class="offcanvas-title">Admin Menu</h5>
<button class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<div class="list-group">
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php'); ?>"><i class="bi bi-house me-2"></i>Dashboard</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/configuration.php'); ?>"><i class="bi bi-gear me-2"></i>Configuration</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/interface.php'); ?>"><i class="bi bi-eye me-2"></i>Interface</a>
<a class="list-group-item active" href="<?php echo htmlspecialchars($baseurl.'/admin/admin.php'); ?>"><i class="bi bi-person me-2"></i>Admin Account</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/pastes.php'); ?>"><i class="bi bi-clipboard me-2"></i>Pastes</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/users.php'); ?>"><i class="bi bi-people me-2"></i>Users</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php'); ?>"><i class="bi bi-ban me-2"></i>IP Bans</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/stats.php'); ?>"><i class="bi bi-graph-up me-2"></i>Statistics</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/ads.php'); ?>"><i class="bi bi-currency-pound me-2"></i>Ads</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/pages.php'); ?>"><i class="bi bi-file-earmark me-2"></i>Pages</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php'); ?>"><i class="bi bi-map me-2"></i>Sitemap</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/tasks.php'); ?>"><i class="bi bi-list-task me-2"></i>Tasks</a>
</div>
</div>
</div>
<div class="container-fluid my-2">
<div class="row g-2">
<!-- Desktop sidebar -->
<div class="col-lg-2 d-none d-lg-block">
<div class="sidebar-desktop">
<div class="list-group">
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php'); ?>"><i class="bi bi-house me-2"></i>Dashboard</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/configuration.php'); ?>"><i class="bi bi-gear me-2"></i>Configuration</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/interface.php'); ?>"><i class="bi bi-eye me-2"></i>Interface</a>
<a class="list-group-item active" href="<?php echo htmlspecialchars($baseurl.'/admin/admin.php'); ?>"><i class="bi bi-person me-2"></i>Admin Account</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/pastes.php'); ?>"><i class="bi bi-clipboard me-2"></i>Pastes</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/users.php'); ?>"><i class="bi bi-people me-2"></i>Users</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php'); ?>"><i class="bi bi-ban me-2"></i>IP Bans</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/stats.php'); ?>"><i class="bi bi-graph-up me-2"></i>Statistics</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/ads.php'); ?>"><i class="bi bi-currency-pound me-2"></i>Ads</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/pages.php'); ?>"><i class="bi bi-file-earmark me-2"></i>Pages</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php'); ?>"><i class="bi bi-map me-2"></i>Sitemap</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/tasks.php'); ?>"><i class="bi bi-list-task me-2"></i>Tasks</a>
</div>
</div>
</div>
<div class="col-lg-10">
<?php if (!empty($msg)): ?>
<div class="alert alert-<?php echo htmlspecialchars($msg_type); ?> alert-dismissible fade show" role="alert">
<?php echo $msg; ?>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<?php endif; ?>
<div class="card">
<div class="card-body">
<ul class="nav nav-tabs mb-3" id="adminTabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="settings-tab" data-bs-toggle="tab" data-bs-target="#settings" type="button" role="tab" aria-controls="settings" aria-selected="true">Settings</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="manage_admins-tab" data-bs-toggle="tab" data-bs-target="#manage_admins" type="button" role="tab" aria-controls="manage_admins" aria-selected="false">Manage Admins</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="logs-tab" data-bs-toggle="tab" data-bs-target="#logs" type="button" role="tab" aria-controls="logs" aria-selected="false">Login History</button>
</li>
</ul>
<div class="tab-content">
<!-- My Settings -->
<div class="tab-pane fade show active" id="settings" role="tabpanel" aria-labelledby="settings-tab">
<h4 class="card-title">My Settings</h4>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST" id="admin-form" class="row g-2">
<input type="hidden" name="update_admin" value="1">
<div class="col-md-6">
<label for="adminid" class="form-label">Username</label>
<input type="text" class="form-control" id="adminid" name="adminid"
value="<?php echo htmlspecialchars($adminid); ?>"
placeholder="3–50 alphanumeric" required>
</div>
<div class="col-md-6">
<label for="password" class="form-label">Password</label>
<input type="password" class="form-control" id="password" name="password"
placeholder="Leave blank to keep current">
</div>
<div class="col-12">
<button type="submit" class="btn btn-primary"><i class="bi bi-save"></i> Save</button>
</div>
</form>
</div>
<!-- Manage Admins -->
<div class="tab-pane fade" id="manage_admins" role="tabpanel" aria-labelledby="manage_admins-tab">
<h4 class="card-title">Manage Admins</h4>
<h5 class="mt-2">Add New Admin</h5>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST" id="add-admin-form" class="row g-2">
<input type="hidden" name="add_admin" value="1">
<div class="col-md-6">
<label for="new_username" class="form-label">Username</label>
<input type="text" class="form-control" id="new_username" name="new_username" placeholder="3–50 alphanumeric" required>
</div>
<div class="col-md-6">
<label for="new_password" class="form-label">Password</label>
<input type="password" class="form-control" id="new_password" name="new_password" placeholder="Min 8 characters" required>
</div>
<div class="col-12">
<button type="submit" class="btn btn-primary"><i class="bi bi-plus-circle"></i> Add Admin</button>
</div>
</form>
<h5 class="mt-4">Existing Admins</h5>
<div class="table-responsive">
<table class="table table-hover table-bordered align-middle">
<thead>
<tr>
<th>ID</th>
<th>Username</th>
<th style="width:160px;">Action</th>
</tr>
</thead>
<tbody>
<?php if (empty($admins)): ?>
<tr><td colspan="3" class="text-center">No admins found</td></tr>
<?php else: ?>
<?php foreach ($admins as $a): ?>
<tr>
<td><?php echo (int)$a['id']; ?></td>
<td><?php echo htmlspecialchars($a['user']); ?></td>
<td>
<?php
$aid = (int)$a['id'];
if ($aid === 1) {
echo '<span class="badge bg-secondary">Primary Admin</span>';
} elseif ($aid === $current_admin_id) {
echo '<span class="badge bg-info text-dark">Current Admin</span>';
} else {
$href = '?delete_admin='.(int)$aid;
echo '<a href="'.htmlspecialchars($href).'" class="btn btn-danger btn-sm delete-admin" data-id="'.(int)$aid.'"><i class="bi bi-trash"></i> Delete</a>';
}
?>
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
<!-- Login History -->
<div class="tab-pane fade" id="logs" role="tabpanel" aria-labelledby="logs-tab">
<h4 class="card-title">Login History</h4>
<?php if ($rec_count === 0): ?>
<p class="text-muted">No login history available.</p>
<?php else: ?>
<div class="table-responsive">
<table class="table table-hover table-bordered align-middle">
<thead><tr><th>Login Date</th><th>IP</th></tr></thead>
<tbody>
<?php foreach ($history_rows as $r): ?>
<tr>
<td><?php echo htmlspecialchars($r['last_date']); ?></td>
<td><?php echo htmlspecialchars($r['ip']); ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php if ($total_pages > 1): ?>
<nav aria-label="Login history">
<ul class="pagination justify-content-center">
<?php if ($page > 1): ?>
<li class="page-item"><a class="page-link" href="?page=<?php echo $page-1; ?>">«</a></li>
<?php else: ?>
<li class="page-item disabled"><span class="page-link">«</span></li>
<?php endif; ?>
<?php
$start=max(1,$page-3); $end=min($total_pages,$page+3);
for($i=$start;$i<=$end;$i++){
$active=$i===$page?' active':'';
echo "<li class='page-item$active'><a class='page-link' href='?page=$i'>$i</a></li>";
}
?>
<?php if ($page < $total_pages): ?>
<li class="page-item"><a class="page-link" href="?page=<?php echo $page+1; ?>">»</a></li>
<?php else: ?>
<li class="page-item disabled"><span class="page-link">»</span></li>
<?php endif; ?>
</ul>
</nav>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
</div>
</div>
<div class="text-muted small mt-3">
Powered by <a class="text-decoration-none" href="https://phpaste.sourceforge.io" target="_blank">Paste</a>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
<?php
$pdo = null;
?>
</body>
</html>
================================================
FILE: admin/ads.php
================================================
<?php
/*
* Paste Admin https://github.com/boxlabss/PASTE
* demo: https://paste.boxlabs.uk/
*
* https://phpaste.sourceforge.io/
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License in LICENCE for more details.
*/
session_start();
// Guard: admin session
if (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {
header("Location: ../index.php");
exit();
}
$date = date('Y-m-d H:i:s');
$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
require_once('../config.php'); // expects $dbhost,$dbuser,$dbpassword,$dbname
require_once('../includes/functions.php');
$msg = '';
$msg_type = 'info';
try {
// PDO
$pdo = new PDO(
"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4",
$dbuser,
$dbpassword,
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]
);
// Fetch baseurl for sidebar links
$row = $pdo->query("SELECT baseurl FROM site_info WHERE id = 1")->fetch();
$baseurl = rtrim((string)($row['baseurl'] ?? ''), '/');
// Validate admin id ↔ username
$st = $pdo->prepare("SELECT id, user FROM admin WHERE id = ?");
$st->execute([$_SESSION['admin_id']]);
$adm = $st->fetch();
if (!$adm || $adm['user'] !== $_SESSION['admin_login']) {
unset($_SESSION['admin_login'], $_SESSION['admin_id']);
header("Location: " . htmlspecialchars($baseurl . '/admin/index.php', ENT_QUOTES, 'UTF-8'));
exit();
}
// Log admin activity
$st = $pdo->query("SELECT MAX(id) AS last_id FROM admin_history");
$last_id = $st->fetch()['last_id'] ?? null;
$last_ip = $last_date = null;
if ($last_id) {
$st = $pdo->prepare("SELECT ip, last_date FROM admin_history WHERE id = ?");
$st->execute([$last_id]);
$h = $st->fetch();
$last_ip = $h['ip'] ?? null;
$last_date = $h['last_date'] ?? null;
}
if ($last_ip !== $ip || $last_date !== $date) {
$st = $pdo->prepare("INSERT INTO admin_history (last_date, ip) VALUES (?, ?)");
$st->execute([$date, $ip]);
}
// Fetch current ad settings (ensure row exists)
$st = $pdo->query("SELECT text_ads, ads_1, ads_2 FROM ads WHERE id = 1");
$adsRow = $st->fetch();
if (!$adsRow) {
$pdo->prepare("INSERT INTO ads (id, text_ads, ads_1, ads_2) VALUES (1, '', '', '')")->execute();
$adsRow = ['text_ads' => '', 'ads_1' => '', 'ads_2' => ''];
}
$text_ads = (string)$adsRow['text_ads'];
$ads_1 = (string)$adsRow['ads_1'];
$ads_2 = (string)$adsRow['ads_2'];
// Save
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Text Ads from WYSIWYG (hidden field)
$text_ads = isset($_POST['text_ads_html']) ? (string)$_POST['text_ads_html'] : '';
// Raw HTML/JS for ad slots (from CodeMirror’ed textareas)
$ads_1 = isset($_POST['ads_1']) ? (string)$_POST['ads_1'] : '';
$ads_2 = isset($_POST['ads_2']) ? (string)$_POST['ads_2'] : '';
$st = $pdo->prepare("UPDATE ads SET text_ads = ?, ads_1 = ?, ads_2 = ? WHERE id = 1");
$st->execute([$text_ads, $ads_1, $ads_2]);
$msg = 'Ads saved successfully.';
$msg_type = 'success';
}
} catch (PDOException $e) {
die("Unable to connect to database: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));
}
?>
<!DOCTYPE html>
<html lang="en" data-bs-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Paste - Ads</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
<!-- Quill 2 (BSD-3) -->
<link href="https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js"></script>
<!-- CodeMirror 5 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/codemirror@5.65.16/lib/codemirror.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/codemirror@5.65.16/theme/material-darker.css">
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.65.16/lib/codemirror.js"></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.65.16/mode/xml/xml.js"></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.65.16/mode/javascript/javascript.js"></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.65.16/mode/css/css.js"></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.65.16/mode/htmlmixed/htmlmixed.js"></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.65.16/addon/edit/closetag.js"></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.65.16/addon/edit/closebrackets.js"></script>
<script src="https://cdn.jsdelivr.net/npm/codemirror@5.65.16/addon/edit/matchbrackets.js"></script>
<style>
:root{
--bg: #0f1115;
--card:#141821;
--muted:#7f8da3;
--border:#1f2633;
--accent:#0d6efd;
--content:#0f1115;
--content-text:#e6edf3;
--toolbar:#101521;
}
body{background:var(--bg);color:#fff;}
.navbar{background:#121826!important;position:sticky;top:0;z-index:1030}
.navbar .navbar-brand{font-weight:600}
/* Desktop sidebar */
.sidebar-desktop{
position:sticky; top:1rem;
background:#121826;border:1px solid var(--border);
border-radius:12px;padding:12px;
}
.sidebar-desktop .list-group-item{
background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem;
}
.sidebar-desktop .list-group-item:hover{background:#0e1422}
.sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}
.card{background:var(--card);border:1px solid var(--border);border-radius:12px}
.form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}
.form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}
.btn-soft:hover{background:#0e1422;color:#fff}
.footer { margin-top:24px; padding:12px; color:#9fb1d1 }
/* Quill adjustments */
.ql-container.ql-snow{
border:1px solid var(--border);
border-radius:8px;
background:var(--content);
color:var(--content-text);
min-height:200px;
}
.ql-toolbar.ql-snow{background:var(--toolbar);border:1px solid var(--border);border-radius:8px}
/* CodeMirror dark fit */
.CodeMirror {
height: 260px;
border: 1px solid var(--border);
border-radius: 8px;
background: #0e1422;
color: #e6edf3;
font-size: 14px;
}
.cm-s-material-darker .CodeMirror-gutters {
background: #0b101a;
border-right: 1px solid #1c2535;
}
.offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}
.offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}
.offcanvas-nav .list-group-item:hover{background:#0e1422}
</style>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark">
<div class="container-fluid">
<div class="d-flex align-items-center gap-2">
<!-- Mobile: open offcanvas -->
<button class="btn btn-soft d-lg-none" data-bs-toggle="offcanvas" data-bs-target="#navOffcanvas" aria-controls="navOffcanvas">
<i class="bi bi-list"></i>
</button>
<a class="navbar-brand" href="../">Paste</a>
</div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">
<?php echo htmlspecialchars($_SESSION['admin_login']); ?>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="admin.php">Settings</a></li>
<li><a class="dropdown-item" href="?logout">Logout</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<!-- Mobile offcanvas nav -->
<div class="offcanvas offcanvas-start offcanvas-nav" tabindex="-1" id="navOffcanvas">
<div class="offcanvas-header">
<h5 class="offcanvas-title">Admin Menu</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<div class="list-group">
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php'); ?>"><i class="bi bi-house me-2"></i>Dashboard</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/configuration.php'); ?>"><i class="bi bi-gear me-2"></i>Configuration</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/interface.php'); ?>"><i class="bi bi-eye me-2"></i>Interface</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/admin.php'); ?>"><i class="bi bi-person me-2"></i>Admin Account</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/pastes.php'); ?>"><i class="bi bi-clipboard me-2"></i>Pastes</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/users.php'); ?>"><i class="bi bi-people me-2"></i>Users</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php'); ?>"><i class="bi bi-ban me-2"></i>IP Bans</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/stats.php'); ?>"><i class="bi bi-graph-up me-2"></i>Statistics</a>
<a class="list-group-item active" href="<?php echo htmlspecialchars($baseurl.'/admin/ads.php'); ?>"><i class="bi bi-currency-pound me-2"></i>Ads</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/pages.php'); ?>"><i class="bi bi-file-earmark me-2"></i>Pages</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php'); ?>"><i class="bi bi-map me-2"></i>Sitemap</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/tasks.php'); ?>"><i class="bi bi-list-task me-2"></i>Tasks</a>
</div>
</div>
</div>
<div class="container-fluid my-2">
<div class="row g-2">
<!-- Desktop sidebar -->
<div class="col-lg-2 d-none d-lg-block">
<div class="sidebar-desktop">
<div class="list-group">
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php'); ?>"><i class="bi bi-house me-2"></i>Dashboard</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/configuration.php'); ?>"><i class="bi bi-gear me-2"></i>Configuration</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/interface.php'); ?>"><i class="bi bi-eye me-2"></i>Interface</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/admin.php'); ?>"><i class="bi bi-person me-2"></i>Admin Account</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/pastes.php'); ?>"><i class="bi bi-clipboard me-2"></i>Pastes</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/users.php'); ?>"><i class="bi bi-people me-2"></i>Users</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php'); ?>"><i class="bi bi-ban me-2"></i>IP Bans</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/stats.php'); ?>"><i class="bi bi-graph-up me-2"></i>Statistics</a>
<a class="list-group-item active" href="<?php echo htmlspecialchars($baseurl.'/admin/ads.php'); ?>"><i class="bi bi-currency-pound me-2"></i>Ads</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/pages.php'); ?>"><i class="bi bi-file-earmark me-2"></i>Pages</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php'); ?>"><i class="bi bi-map me-2"></i>Sitemap</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'/admin/tasks.php'); ?>"><i class="bi bi-list-task me-2"></i>Tasks</a>
</div>
</div>
</div>
<div class="col-lg-10">
<?php if (!empty($msg)): ?>
<div class="alert alert-<?php echo htmlspecialchars($msg_type); ?> alert-dismissible fade show" role="alert">
<?php echo htmlspecialchars($msg); ?>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<?php endif; ?>
<div class="card mb-3">
<div class="card-body">
<div class="d-flex align-items-center justify-content-between mb-2">
<h4 class="card-title mb-0">Manage Ads</h4>
<div class="d-flex gap-2">
<button type="button" class="btn btn-soft" id="preview-textads"><i class="bi bi-eye"></i> Preview Text Ads</button>
<button type="button" class="btn btn-soft" id="preview-ads1"><i class="bi bi-eye"></i> Preview Sidebar Ad</button>
<button type="button" class="btn btn-soft" id="preview-ads2"><i class="bi bi-eye"></i> Preview Footer Ad</button>
</div>
</div>
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" id="ads-form">
<!-- Text Ads (WYSIWYG) -->
<div class="mb-3">
<label class="form-label">Text Ads (WYSIWYG)</label>
<div id="toolbar">
<span class="ql-formats">
<select class="ql-header">
<option selected></option>
<option value="2">Heading</option>
<option value="3">Subheading</option>
</select>
<select class="ql-font"></select>
<select class="ql-size"></select>
</span>
<span class="ql-formats">
<button class="ql-bold"></button>
<button class="ql-italic"></button>
<button class="ql-underline"></button>
<button class="ql-strike"></button>
</span>
<span class="ql-formats">
<button class="ql-blockquote"></button>
<button class="ql-code-block"></button>
</span>
<span class="ql-formats">
<button class="ql-list" value="ordered"></button>
<button class="ql-list" value="bullet"></button>
<button class="ql-indent" value="-1"></button>
<button class="ql-indent" value="1"></button>
</span>
<span class="ql-formats">
<select class="ql-align"></select>
</span>
<span class="ql-formats">
<button class="ql-link"></button>
<button class="ql-image"></button>
</span>
</div>
<div id="textAdsEditor"><?php echo $text_ads; ?></div>
<div class="text-muted small mt-1">For third-party ad tags that use <code><script></code>, use the raw fields below.</div>
<textarea class="d-none" name="text_ads_html" id="text_ads_html"></textarea>
</div>
<!-- Raw ad slots (CodeMirror) -->
<div class="mb-3">
<label for="ads_1" class="form-label">Image/HTML Ad (Sidebar)</label>
<textarea class="form-control d-none" id="ads_1" name="ads_1"><?php echo htmlspecialchars($ads_1); ?></textarea>
<div id="ads_1_cm"></div>
<div class="text-muted small mt-1">Appears in the sidebar (e.g., 300×250 / 300×600). Scripts allowed.</div>
</div>
<div class="mb-3">
<label for="ads_2" class="form-label">Image/HTML Ad (Footer)</label>
<textarea class="form-control d-none" id="ads_2" name="ads_2"><?php echo htmlspecialchars($ads_2); ?></textarea>
<div id="ads_2_cm"></div>
<div class="text-muted small mt-1">Appears in the footer. Scripts allowed.</div>
</div>
<div class="d-flex gap-2">
<button type="submit" class="btn btn-primary"><i class="bi bi-save"></i> Save</button>
<a href="../" target="_blank" class="btn btn-outline-secondary"><i class="bi bi-box-arrow-up-right"></i> View Site</a>
</div>
</form>
</div>
</div>
<div class="text-muted small mt-3">
Powered by <a class="text-decoration-none" href="https://phpaste.sourceforge.io" target="_blank">Paste</a>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
<script>
(function(){
// --- Quill (Text Ads)
const q = new Quill('#textAdsEditor', {
theme: 'snow',
modules: {
toolbar: '#toolbar',
history: { delay: 800, maxStack: 200 },
clipboard: true
},
placeholder: 'Write your text ad content here...'
});
// --- CodeMirror (raw ad slots)
function cmFromTextArea(textareaId, mountId){
const ta = document.getElementById(textareaId);
const mount = document.getElementById(mountId);
const cm = CodeMirror(mount, {
value: ta.value,
mode: 'htmlmixed',
theme: 'material-darker',
lineNumbers: true,
lineWrapping: true,
tabSize: 2,
autoCloseTags: true,
autoCloseBrackets: true,
matchBrackets: true,
});
// Keep textarea in sync so PHP receives latest content
cm.on('change', () => { ta.value = cm.getValue(); });
// Initial sync in case the value is unchanged
ta.value = cm.getValue();
return cm;
}
const cmAds1 = cmFromTextArea('ads_1', 'ads_1_cm');
const cmAds2 = cmFromTextArea('ads_2', 'ads_2_cm');
// Submit: ensure Quill HTML is posted
document.getElementById('ads-form').addEventListener('submit', function(){
document.getElementById('text_ads_html').value = q.root.innerHTML;
// CodeMirror textareas are already synced by 'change' handler
});
// Simple preview windows
function previewHtml(html){
const w = window.open('', '_blank', 'width=900,height=700');
if (!w) return;
const doc =
'<!doctype html><html><head><meta charset="utf-8"><title>Preview</title>' +
'<meta name="viewport" content="width=device-width,initial-scale=1">' +
'<style>body{background:#0f1115;color:#e6edf3;font:15px/1.6 system-ui,Segoe UI,Roboto,sans-serif;padding:24px}</style>' +
'</head><body>' + html + '</body></html>';
w.document.open(); w.document.write(doc); w.document.close();
}
document.getElementById('preview-textads')?.addEventListener('click', () => {
previewHtml(q.root.innerHTML);
});
document.getElementById('preview-ads1')?.addEventListener('click', () => {
previewHtml(cmAds1.getValue());
});
document.getElementById('preview-ads2')?.addEventListener('click', () => {
previewHtml(cmAds2.getValue());
});
})();
</script>
</body>
</html>
<?php
// Optional: logout
if (isset($_GET['logout'])) {
$_SESSION = [];
session_destroy();
header('Location: index.php');
exit();
}
$pdo = null;
?>
================================================
FILE: admin/configuration.php
================================================
<?php
/*
* Paste Admin https://github.com/boxlabss/PASTE
* demo: https://paste.boxlabs.uk/
*
* https://phpaste.sourceforge.io/
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License in LICENCE for more details.
*/
declare(strict_types=1);
ob_start();
if (session_status() === PHP_SESSION_NONE) {
session_start([
'cookie_secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',
'cookie_httponly' => true,
'use_strict_mode' => true,
'cookie_samesite' => 'Strict',
]);
}
if (!isset($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
error_log("configuration.php: Session started, ID: " . session_id() . ", CSRF token: {$_SESSION['csrf_token']}, HTTPS: " . (isset($_SERVER['HTTPS']) ? 'on' : 'off'));
if (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {
error_log("configuration.php: Session validation failed - admin_login or admin_id not set. Session: " . json_encode($_SESSION));
ob_end_clean();
header("Location: index.php");
exit();
}
ini_set('display_errors', '0');
ini_set('log_errors', '1');
$date = date('Y-m-d H:i:s');
$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
require_once '../config.php';
require_once '../mail/mail.php';
$oauth_autoloader = __DIR__ . '/../oauth/vendor/autoload.php';
if (!file_exists($oauth_autoloader)) {
error_log("configuration.php: OAuth autoloader not found");
ob_end_clean();
die("OAuth autoloader not found. Run: <code>cd oauth && composer require google/apiclient:^2.17 league/oauth2-client:^2.7 league/oauth2-google:^4.0</code>");
}
require_once $oauth_autoloader;
use Google\Client as Google_Client;
$required_classes = [
'Google\Client' => 'google/apiclient:^2.17',
'PHPMailer\PHPMailer\PHPMailer' => 'phpmailer/phpmailer:^6.9',
'League\OAuth2\Client\Provider\Google' => 'league/oauth2-client:^2.7 league/oauth2-google:^4.0'
];
foreach ($required_classes as $class => $packages) {
if (!class_exists($class)) {
error_log("configuration.php: $class not found. Run: cd oauth && composer require $packages");
ob_end_clean();
die('<div class="alert alert-danger text-center">OAuth configuration error: ' . htmlspecialchars($class, ENT_QUOTES, 'UTF-8') . ' not found. Run: composer require ' . htmlspecialchars($packages, ENT_QUOTES, 'UTF-8') . '</div>');
}
}
try {
$pdo = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4", $dbuser, $dbpassword, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]);
$stmt = $pdo->prepare("SELECT id FROM admin WHERE user = ?");
$stmt->execute([$_SESSION['admin_login']]);
$admin = $stmt->fetch();
if (!$admin || $admin['id'] != $_SESSION['admin_id']) {
error_log("configuration.php: Invalid admin session for admin_login: {$_SESSION['admin_login']}, admin_id: {$_SESSION['admin_id']}");
$_SESSION = [];
session_destroy();
ob_end_clean();
header('Location: index.php');
exit;
}
$stmt = $pdo->query("SELECT MAX(id) AS last_id FROM admin_history");
$last_id = $stmt->fetch()['last_id'] ?? null;
if ($last_id) {
$stmt = $pdo->prepare("SELECT last_date, ip FROM admin_history WHERE id = ?");
$stmt->execute([$last_id]);
$row = $stmt->fetch();
$last_date = $row['last_date'] ?? null;
$last_ip = $row['ip'] ?? null;
}
if (($last_ip ?? '') !== $ip || ($last_date ?? '') !== $date) {
$stmt = $pdo->prepare("INSERT INTO admin_history (last_date, ip) VALUES (?, ?)");
$stmt->execute([$date, $ip]);
}
$stmt = $pdo->query("SELECT * FROM site_info WHERE id = 1");
$row = $stmt->fetch() ?: [];
$title = trim($row['title'] ?? '');
$des = trim($row['des'] ?? '');
$baseurl = trim($row['baseurl'] ?? '');
$keyword = trim($row['keyword'] ?? '');
$site_name = trim($row['site_name'] ?? '');
$email = trim($row['email'] ?? '');
$twit = trim($row['twit'] ?? '');
$face = trim($row['face'] ?? '');
$gplus = trim($row['gplus'] ?? '');
$ga = trim($row['ga'] ?? '');
$additional_scripts = trim($row['additional_scripts'] ?? '');
$stmt = $pdo->query("SELECT * FROM captcha WHERE id = 1");
$row = $stmt->fetch() ?: [];
$cap_e = $row['cap_e'] ?? '';
$mode = $row['mode'] ?? '';
$recaptcha_version = $row['recaptcha_version'] ?? 'v2';
$mul = $row['mul'] ?? '';
$allowed = $row['allowed'] ?? '';
$color = $row['color'] ?? '';
$recaptcha_sitekey = $row['recaptcha_sitekey'] ?? '';
$recaptcha_secretkey = $row['recaptcha_secretkey'] ?? '';
$stmt = $pdo->query("SELECT * FROM site_permissions WHERE id = 1");
$row = $stmt->fetch() ?: [];
$disableguest = trim($row['disableguest'] ?? '');
$siteprivate = trim($row['siteprivate'] ?? '');
$stmt = $pdo->query("SELECT * FROM mail WHERE id = 1");
$row = $stmt->fetch() ?: [];
$required_fields = ['verification', 'smtp_host', 'smtp_username', 'smtp_password', 'smtp_port', 'protocol', 'auth', 'socket', 'oauth_client_id', 'oauth_client_secret', 'oauth_refresh_token'];
foreach ($required_fields as $field) {
if (!array_key_exists($field, $row)) {
$row[$field] = '';
}
}
$verification = trim($row['verification'] ?? '');
$smtp_host = trim($row['smtp_host'] ?? '');
$smtp_username = trim($row['smtp_username'] ?? '');
$smtp_password = trim($row['smtp_password'] ?? '');
$smtp_port = trim($row['smtp_port'] ?? '');
$protocol = trim($row['protocol'] ?? '');
$auth = trim($row['auth'] ?? '');
$socket = trim($row['socket'] ?? '');
$oauth_client_id = trim($row['oauth_client_id'] ?? '');
$oauth_client_secret = trim($row['oauth_client_secret'] ?? '');
$oauth_refresh_token = trim($row['oauth_refresh_token'] ?? '');
$oauth_status = $oauth_refresh_token ? 'OAuth refresh token is set.' : 'OAuth refresh token not set. Configure Gmail OAuth if using smtp.gmail.com.';
$redirect_uri = $baseurl ? rtrim($baseurl, '/') . '/oauth/google_smtp.php' : '';
$msg = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
error_log("configuration.php: POST request received with CSRF token: " . ($_POST['csrf_token'] ?? 'none') . ", Session CSRF: {$_SESSION['csrf_token']}, Session ID: " . session_id());
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
error_log("configuration.php: CSRF validation failed. Received: " . ($_POST['csrf_token'] ?? 'none') . ", Expected: {$_SESSION['csrf_token']}, Session: " . json_encode($_SESSION));
$msg = '<div class="alert alert-danger text-center">CSRF validation failed. Please try again.</div>';
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {
ob_end_clean();
header('Content-Type: application/json; charset=utf-8');
echo json_encode(['status' => 'error', 'message' => $msg]);
exit;
}
} else {
error_log("configuration.php: CSRF validation passed");
if (isset($_POST['test_recaptcha'])) {
error_log("configuration.php: Test reCAPTCHA requested");
$recaptcha_sitekey = trim($_POST['recaptcha_sitekey'] ?? '');
$recaptcha_secretkey = trim($_POST['recaptcha_secretkey'] ?? '');
$recaptcha_version = trim($_POST['recaptcha_version'] ?? 'v2');
if (empty($recaptcha_sitekey) || empty($recaptcha_secretkey)) {
$msg = '<div class="alert alert-danger text-center">reCAPTCHA Site Key and Secret Key are required for testing.</div>';
error_log("configuration.php: Missing reCAPTCHA keys for test");
} else {
$verify_url = "https://www.google.com/recaptcha/api/siteverify?secret=" . urlencode($recaptcha_secretkey) . "&response=test";
$ch = curl_init($verify_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_error($ch);
curl_close($ch);
if ($response === false || $http_code != 200) {
$msg = '<div class="alert alert-danger text-center">Failed to verify reCAPTCHA keys: ' . htmlspecialchars($curl_error ?: 'No response', ENT_QUOTES, 'UTF-8') . '</div>';
error_log("configuration.php: reCAPTCHA test failed: HTTP Code: $http_code, Error: " . ($curl_error ?: 'No response'));
} else {
$response = json_decode($response, true);
if (($response['success'] ?? null) === false && isset($response['error-codes']) && in_array('invalid-input-secret', $response['error-codes'])) {
$msg = '<div class="alert alert-danger text-center">Invalid reCAPTCHA Secret Key. Please verify your keys.</div>';
error_log("configuration.php: reCAPTCHA test failed: Invalid secret key");
} else {
if ($recaptcha_version === 'v3' && isset($response['score']) && $response['score'] < 0.5) {
$msg = '<div class="alert alert-danger text-center">reCAPTCHA v3 test failed: Score ' . htmlspecialchars((string)$response['score'], ENT_QUOTES, 'UTF-8') . ' is below threshold (0.5).</div>';
error_log("configuration.php: reCAPTCHA v3 test failed: Score " . $response['score']);
} else {
$msg = '<div class="alert alert-success text-center">reCAPTCHA keys are valid' . ($recaptcha_version === 'v3' ? ' (Score: ' . htmlspecialchars((string)($response['score'] ?? 'N/A'), ENT_QUOTES, 'UTF-8') . ')' : '') . '.</div>';
error_log("configuration.php: reCAPTCHA test successful" . ($recaptcha_version === 'v3' ? ", Score: " . $response['score'] : ""));
}
}
}
}
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {
ob_end_clean();
header('Content-Type: application/json; charset=utf-8');
echo json_encode(['message' => $msg]);
exit;
}
} elseif (isset($_POST['test_smtp'])) {
error_log("configuration.php: Test SMTP requested");
header('Content-Type: application/json; charset=utf-8');
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
error_log("configuration.php: Invalid or missing admin email: $email");
ob_end_clean();
echo json_encode(['status' => 'error', 'message' => '<div class="alert alert-danger text-center">Invalid or missing Admin Email in Site Info. Please set a valid email address.</div>']);
exit;
} elseif ($protocol === '2' && $smtp_host === 'smtp.gmail.com' && (empty($oauth_client_id) || empty($oauth_client_secret) || empty($oauth_refresh_token))) {
error_log("configuration.php: Missing OAuth credentials for Gmail SMTP");
ob_end_clean();
echo json_encode(['status' => 'error', 'message' => '<div class="alert alert-danger text-center">OAuth credentials missing for Gmail SMTP. Please configure Client ID, Client Secret, and authorize Gmail SMTP.</div>']);
exit;
} elseif ($protocol === '2' && $smtp_host !== 'smtp.gmail.com' && $auth === 'true' && (empty($smtp_username) || empty($smtp_password))) {
error_log("configuration.php: Missing SMTP username or password for $smtp_host");
ob_end_clean();
echo json_encode(['status' => 'error', 'message' => '<div class="alert alert-danger text-center">SMTP Username and Password are required for non-Gmail SMTP servers with authentication.</div>']);
exit;
} elseif ($protocol === '1' && !ini_get('sendmail_path')) {
error_log("configuration.php: sendmail_path not configured in php.ini");
ob_end_clean();
echo json_encode(['status' => 'error', 'message' => '<div class="alert alert-danger text-center">PHP Mail selected, but sendmail_path is not configured in php.ini.</div>']);
exit;
} else {
$test_message = "
<html>
<head><style>body { font-family: Arial, sans-serif; color: #333; }</style></head>
<body>
<div style='text-align: center;'>
<img src='$baseurl/images/logo.png' alt='$site_name Logo'>
<h2>Test Email from $site_name</h2>
</div>
<p>This is a test email sent from your Pastebin installation to verify mail settings.</p>
</body>
</html>";
$mail_result = send_mail($email, "Test Email from $site_name", $test_message, $site_name, $_SESSION['csrf_token']);
error_log("configuration.php: Test SMTP result: " . json_encode($mail_result));
ob_end_clean();
if (($mail_result['status'] ?? 'error') === 'success') {
echo json_encode(['status' => 'success', 'message' => '<div class="alert alert-success text-center">Test email sent successfully to ' . htmlspecialchars($email, ENT_QUOTES, 'UTF-8') . '.</div>']);
} else {
echo json_encode(['status' => 'error', 'message' => '<div class="alert alert-danger text-center">Failed to send test email: ' . htmlspecialchars($mail_result['message'] ?? 'Unknown error', ENT_QUOTES, 'UTF-8') . '</div>']);
}
exit;
}
} elseif (isset($_POST['save_oauth_credentials'])) {
$client_id = trim($_POST['client_id'] ?? '');
$client_secret = trim($_POST['client_secret'] ?? '');
if (empty($client_id) || empty($client_secret)) {
$msg = '<div class="alert alert-danger text-center">Please fill in both Client ID and Client Secret.</div>';
error_log("configuration.php: Missing OAuth Client ID or Secret");
} elseif (!preg_match('/^[0-9a-zA-Z\-]+\.apps\.googleusercontent\.com$/', $client_id)) {
$msg = '<div class="alert alert-danger text-center">Invalid Client ID format. It should look like \'1234567890-abcdef.apps.googleusercontent.com\'.</div>';
error_log("configuration.php: Invalid OAuth Client ID format: $client_id");
} elseif (!preg_match('/^[0-9a-zA-Z\-_]+$/', $client_secret)) {
$msg = '<div class="alert alert-danger text-center">Invalid Client Secret format. It should contain only letters, numbers, hyphens, and underscores.</div>';
error_log("configuration.php: Invalid OAuth Client Secret format: $client_secret");
} else {
try {
$stmt = $pdo->prepare("UPDATE mail SET oauth_client_id = ?, oauth_client_secret = ? WHERE id = 1");
$rows_affected = $stmt->execute([$client_id, $client_secret]);
error_log("configuration.php: OAuth credentials update attempted. Rows affected: $rows_affected, client_id: $client_id");
if ($rows_affected === 0) {
$msg = '<div class="alert alert-danger text-center">Failed to update OAuth credentials in database. No rows affected.</div>';
} else {
$oauth_client_id = $client_id;
$oauth_client_secret = $client_secret;
$msg = '<div class="alert alert-success text-center">OAuth credentials saved successfully.</div>';
}
} catch (PDOException $e) {
error_log("configuration.php: OAuth credentials update error: " . $e->getMessage());
$msg = '<div class="alert alert-danger text-center">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';
}
}
} elseif (isset($_POST['cap'])) {
$cap_e = trim($_POST['cap_e'] ?? '');
$mode = trim($_POST['mode'] ?? '');
$recaptcha_version = trim($_POST['recaptcha_version'] ?? 'v2');
$mul = trim($_POST['mul'] ?? '');
$allowed = trim($_POST['allowed'] ?? '');
$color = trim($_POST['color'] ?? '');
$recaptcha_sitekey = trim($_POST['recaptcha_sitekey'] ?? '');
$recaptcha_secretkey = trim($_POST['recaptcha_secretkey'] ?? '');
if ($cap_e == 'on' && $mode == 'reCAPTCHA' && (empty($recaptcha_sitekey) || empty($recaptcha_secretkey))) {
$msg = '<div class="alert alert-danger text-center">reCAPTCHA Site Key and Secret Key are required when reCAPTCHA is enabled.</div>';
error_log("configuration.php: Missing reCAPTCHA keys for mode: $mode");
} else {
try {
$stmt = $pdo->prepare("UPDATE captcha SET cap_e = ?, mode = ?, recaptcha_version = ?, mul = ?, allowed = ?, color = ?, recaptcha_sitekey = ?, recaptcha_secretkey = ? WHERE id = 1");
$stmt->execute([$cap_e, $mode, $recaptcha_version, $mul, $allowed, $color, $recaptcha_sitekey, $recaptcha_secretkey]);
$msg = '<div class="alert alert-success text-center">Captcha settings saved</div>';
error_log("configuration.php: Captcha settings updated successfully");
} catch (PDOException $e) {
error_log("configuration.php: Captcha update error: " . $e->getMessage());
$msg = '<div class="alert alert-danger text-center">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';
}
}
} elseif (isset($_POST['manage'])) {
$site_name = filter_var(trim($_POST['site_name'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);
$title = filter_var(trim($_POST['title'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);
$baseurl = filter_var(trim($_POST['baseurl'] ?? ''), FILTER_SANITIZE_URL);
$des = filter_var(trim($_POST['des'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);
$keyword = htmlspecialchars(trim($_POST['keyword'] ?? ''), ENT_QUOTES, 'UTF-8');
$email = filter_var(trim($_POST['email'] ?? ''), FILTER_SANITIZE_EMAIL);
$twit = htmlspecialchars(trim($_POST['twit'] ?? ''), ENT_QUOTES, 'UTF-8');
$face = htmlspecialchars(trim($_POST['face'] ?? ''), ENT_QUOTES, 'UTF-8');
$gplus = htmlspecialchars(trim($_POST['gplus'] ?? ''), ENT_QUOTES, 'UTF-8');
$ga = htmlspecialchars(trim($_POST['ga'] ?? ''), ENT_QUOTES, 'UTF-8');
$additional_scripts = filter_var(trim($_POST['additional_scripts'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);
try {
$stmt = $pdo->prepare("UPDATE site_info SET title = ?, des = ?, baseurl = ?, keyword = ?, site_name = ?, email = ?, twit = ?, face = ?, gplus = ?, ga = ?, additional_scripts = ? WHERE id = 1");
$stmt->execute([$title, $des, $baseurl, $keyword, $site_name, $email, $twit, $face, $gplus, $ga, $additional_scripts]);
$msg = '<div class="alert alert-success text-center">Configuration saved</div>';
error_log("configuration.php: Site info updated successfully");
} catch (PDOException $e) {
error_log("configuration.php: Site info update error: " . $e->getMessage());
$msg = '<div class="alert alert-danger text-center">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';
}
} elseif (isset($_POST['permissions'])) {
$disableguest = trim($_POST['disableguest'] ?? '');
$siteprivate = trim($_POST['siteprivate'] ?? '');
try {
$stmt = $pdo->prepare("UPDATE site_permissions SET disableguest = ?, siteprivate = ? WHERE id = 1");
$stmt->execute([$disableguest, $siteprivate]);
$msg = '<div class="alert alert-success text-center">Site permissions saved</div>';
error_log("configuration.php: Site permissions updated successfully");
} catch (PDOException $e) {
error_log("configuration.php: Permissions update error: " . $e->getMessage());
$msg = '<div class="alert alert-danger text-center">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';
}
} elseif (isset($_POST['smtp_code'])) {
$verification = trim($_POST['verification'] ?? '');
$smtp_host = trim($_POST['smtp_host'] ?? '');
$smtp_port = trim($_POST['smtp_port'] ?? '');
$smtp_username = trim($_POST['smtp_user'] ?? '');
$smtp_password = trim($_POST['smtp_pass'] ?? '');
$socket = trim($_POST['socket'] ?? '');
$auth = trim($_POST['auth'] ?? '');
$protocol = trim($_POST['protocol'] ?? '');
if ($protocol === '2' && $smtp_host !== 'smtp.gmail.com' && $auth === 'true' && (empty($smtp_username) || empty($smtp_password))) {
$msg = '<div class="alert alert-danger text-center">SMTP Username and Password are required for non-Gmail SMTP servers with authentication.</div>';
error_log("configuration.php: Missing SMTP username or password for $smtp_host");
} elseif ($protocol === '1' && !ini_get('sendmail_path')) {
$msg = '<div class="alert alert-danger text-center">PHP Mail selected, but sendmail_path is not configured in php.ini.</div>';
error_log("configuration.php: sendmail_path not configured in php.ini");
} elseif ($protocol === '2' && empty($smtp_host)) {
$msg = '<div class="alert alert-danger text-center">SMTP Host is required for SMTP protocol.</div>';
error_log("configuration.php: Missing SMTP host");
} elseif ($protocol === '2' && empty($smtp_port)) {
$msg = '<div class="alert alert-danger text-center">SMTP Port is required for SMTP protocol.</div>';
error_log("configuration.php: Missing SMTP port");
} else {
try {
$stmt = $pdo->prepare("UPDATE mail SET verification = ?, smtp_host = ?, smtp_port = ?, smtp_username = ?, smtp_password = ?, socket = ?, protocol = ?, auth = ? WHERE id = 1");
$stmt->execute([$verification, $smtp_host, $smtp_port, $smtp_username, $smtp_password, $socket, $protocol, $auth]);
$msg = '<div class="alert alert-success text-center">Mail settings updated</div>';
error_log("configuration.php: Mail settings updated successfully");
} catch (PDOException $e) {
error_log("configuration.php: Mail settings update error: " . $e->getMessage());
$msg = '<div class="alert alert-danger text-center">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';
}
}
}
if (strpos($msg, 'alert-success') !== false) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
error_log("configuration.php: CSRF token regenerated: {$_SESSION['csrf_token']}, Session ID: " . session_id());
}
}
// For non-AJAX requests, fall through to render
}
if (isset($_GET['msg'])) {
$msg = '<div class="alert alert-success text-center">' . htmlspecialchars(urldecode($_GET['msg'] ?? ''), ENT_QUOTES, 'UTF-8') . '</div>';
} elseif (isset($_GET['error'])) {
$msg = '<div class="alert alert-danger text-center">' . htmlspecialchars(urldecode($_GET['error'] ?? ''), ENT_QUOTES, 'UTF-8') . '</div>';
}
} catch (PDOException $e) {
error_log("configuration.php: Database error: " . $e->getMessage());
ob_end_clean();
die("Unable to connect to database: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));
} finally {
// Keep variables like $baseurl/$site_name in scope for HTML; we only close PDO connection here.
$pdo = null;
}
// --- Active tab persistence (server-side default) ---
$activeTab = $_POST['active_tab'] ?? $_GET['tab'] ?? '';
$validTabs = ['siteinfo','permissions','captcha','mail'];
if (!in_array($activeTab, $validTabs, true)) {
// Also allow hash from URL if present (e.g. #mail) on first paint:
if (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '#') !== false) {
$hash = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '#') + 1);
if (in_array($hash, $validTabs, true)) {
$activeTab = $hash;
}
}
if (!$activeTab) $activeTab = 'siteinfo';
}
?>
<!DOCTYPE html>
<html lang="en" data-bs-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Paste - Configuration</title>
<link rel="shortcut icon" href="favicon.ico">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
<style>
:root{
--bg:#0f1115; --card:#141821; --muted:#7f8da3; --border:#1f2633; --accent:#0d6efd;
}
body{background:var(--bg);color:#e6edf3;}
.navbar{background:#121826!important;position:sticky;top:0;z-index:1030}
.navbar .navbar-brand{font-weight:600}
.offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}
.offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}
.offcanvas-nav .list-group-item:hover{background:#0e1422}
.sidebar-desktop{position:sticky; top:1rem; background:#121826;border:1px solid var(--border);border-radius:12px;padding:12px}
.sidebar-desktop .list-group-item{background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem}
.sidebar-desktop .list-group-item:hover{background:#0e1422}
.sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}
.main-content{padding:16px}
.card{background:var(--card);border:1px solid var(--border);border-radius:12px}
.form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}
.form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.btn-outline-primary{border-color:#0d6efd;color:#0d6efd}
.btn-outline-primary:hover{background:#0d6efd;color:#fff}
.nav-tabs .nav-link{color:#c6d4f0}
.nav-tabs .nav-link.active{color:#fff;background:#101521;border-color:var(--border) var(--border) transparent}
.table{color:#e6edf3}
.table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}
.table td,.table th{border-color:var(--border)}
</style>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark">
<div class="container-fluid">
<div class="d-flex align-items-center gap-2">
<button class="btn btn-outline-primary d-lg-none" data-bs-toggle="offcanvas" data-bs-target="#navOffcanvas" aria-controls="navOffcanvas">
<i class="bi bi-list"></i>
</button>
<a class="navbar-brand" href="../">Paste</a>
</div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">
<?php echo htmlspecialchars($_SESSION['admin_login'] ?? '', ENT_QUOTES, 'UTF-8'); ?>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="admin.php">Settings</a></li>
<li><a class="dropdown-item" href="?logout">Logout</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<!-- Mobile offcanvas nav -->
<div class="offcanvas offcanvas-start offcanvas-nav" tabindex="-1" id="navOffcanvas">
<div class="offcanvas-header">
<h5 class="offcanvas-title">Admin Menu</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<div class="list-group">
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>"><i class="bi bi-house me-2"></i>Dashboard</a>
<a class="list-group-item active" href="<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>"><i class="bi bi-gear me-2"></i>Configuration</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>"><i class="bi bi-eye me-2"></i>Interface</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>"><i class="bi bi-person me-2"></i>Admin Account</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>"><i class="bi bi-clipboard me-2"></i>Pastes</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>"><i class="bi bi-people me-2"></i>Users</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>"><i class="bi bi-ban me-2"></i>IP Bans</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>"><i class="bi bi-graph-up me-2"></i>Statistics</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>"><i class="bi bi-currency-pound me-2"></i>Ads</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>"><i class="bi bi-file-earmark me-2"></i>Pages</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>"><i class="bi bi-map me-2"></i>Sitemap</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>"><i class="bi bi-list-task me-2"></i>Tasks</a>
</div>
</div>
</div>
<div class="container-fluid my-2">
<div class="row g-2">
<!-- Desktop sidebar -->
<div class="col-lg-2 d-none d-lg-block">
<div class="sidebar-desktop">
<div class="list-group">
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>"><i class="bi bi-house me-2"></i>Dashboard</a>
<a class="list-group-item active" href="<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>"><i class="bi bi-gear me-2"></i>Configuration</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>"><i class="bi bi-eye me-2"></i>Interface</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>"><i class="bi bi-person me-2"></i>Admin Account</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>"><i class="bi bi-clipboard me-2"></i>Pastes</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>"><i class="bi bi-people me-2"></i>Users</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>"><i class="bi bi-ban me-2"></i>IP Bans</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>"><i class="bi bi-graph-up me-2"></i>Statistics</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>"><i class="bi bi-currency-pound me-2"></i>Ads</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>"><i class="bi bi-file-earmark me-2"></i>Pages</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>"><i class="bi bi-map me-2"></i>Sitemap</a>
<a class="list-group-item" href="<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>"><i class="bi bi-list-task me-2"></i>Tasks</a>
</div>
</div>
</div>
<div class="col-lg-10">
<div class="card">
<div class="card-body">
<div id="message-container"><?php if (isset($msg)) echo $msg; ?></div>
<ul class="nav nav-tabs mb-3" id="configTabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link <?php echo $activeTab==='siteinfo'?'active':''; ?>" id="siteinfo-tab" data-bs-toggle="tab" data-bs-target="#siteinfo" type="button" role="tab" aria-controls="siteinfo" aria-selected="<?php echo $activeTab==='siteinfo'?'true':'false'; ?>">Site Info</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link <?php echo $activeTab==='permissions'?'active':''; ?>" id="permissions-tab" data-bs-toggle="tab" data-bs-target="#permissions" type="button" role="tab" aria-controls="permissions" aria-selected="<?php echo $activeTab==='permissions'?'true':'false'; ?>">Permissions</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link <?php echo $activeTab==='captcha'?'active':''; ?>" id="captcha-tab" data-bs-toggle="tab" data-bs-target="#captcha" type="button" role="tab" aria-controls="captcha" aria-selected="<?php echo $activeTab==='captcha'?'true':'false'; ?>">Captcha Settings</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link <?php echo $activeTab==='mail'?'active':''; ?>" id="mail-tab" data-bs-toggle="tab" data-bs-target="#mail" type="button" role="tab" aria-controls="mail" aria-selected="<?php echo $activeTab==='mail'?'true':'false'; ?>">Mail Settings</button>
</li>
</ul>
<div class="tab-content">
<!-- Site Info -->
<div class="tab-pane fade <?php echo $activeTab==='siteinfo'?'show active':''; ?>" id="siteinfo" role="tabpanel" aria-labelledby="siteinfo-tab">
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>" novalidate>
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<input type="hidden" name="active_tab" value="<?php echo htmlspecialchars($activeTab, ENT_QUOTES, 'UTF-8'); ?>">
<div class="mb-3">
<label for="site_name" class="form-label">Site Name</label>
<input type="text" class="form-control" id="site_name" name="site_name" placeholder="The name of your site" value="<?php echo htmlspecialchars(isset($_POST['site_name']) ? $_POST['site_name'] : $site_name, ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="title" class="form-label">Site Title</label>
<input type="text" class="form-control" id="title" name="title" placeholder="Site title tag" value="<?php echo htmlspecialchars(isset($_POST['title']) ? $_POST['title'] : $title, ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="baseurl" class="form-label">Domain name</label>
<input type="text" class="form-control" id="baseurl" name="baseurl" placeholder="eg: pastethis.in (no trailing slash)" value="<?php echo htmlspecialchars(isset($_POST['baseurl']) ? $_POST['baseurl'] : $baseurl, ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="des" class="form-label">Site Description</label>
<input type="text" class="form-control" id="des" name="des" placeholder="Site description" value="<?php echo htmlspecialchars(isset($_POST['des']) ? $_POST['des'] : $des, ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="keyword" class="form-label">Site Keywords</label>
<input type="text" class="form-control" id="keyword" name="keyword" placeholder="Keywords (separated by a comma)" value="<?php echo htmlspecialchars($keyword ?? '', ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="ga" class="form-label">Google Analytics</label>
<input type="text" class="form-control" id="ga" name="ga" placeholder="Google Analytics ID" value="<?php echo htmlspecialchars($ga ?? '', ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="email" class="form-label">Admin Email</label>
<input type="text" class="form-control" id="email" name="email" placeholder="Email" value="<?php echo htmlspecialchars(isset($_POST['email']) ? $_POST['email'] : $email, ENT_QUOTES, 'UTF-8'); ?>">
<div class="form-text">Used as the From address for emails and for receiving test emails.</div>
</div>
<div class="mb-3">
<label for="face" class="form-label">Facebook URL</label>
<input type="text" class="form-control" id="face" name="face" placeholder="Facebook URL" value="<?php echo htmlspecialchars($face ?? '', ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="twit" class="form-label">Twitter URL</label>
<input type="text" class="form-control" id="twit" name="twit" placeholder="Twitter URL" value="<?php echo htmlspecialchars($twit ?? '', ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="gplus" class="form-label">Google+ URL</label>
<input type="text" class="form-control" id="gplus" name="gplus" placeholder="Google+ URL" value="<?php echo htmlspecialchars($gplus ?? '', ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="additional_scripts" class="form-label">Additional Site Scripts</label>
<textarea class="form-control" id="additional_scripts" name="additional_scripts" rows="8"><?php echo htmlspecialchars(isset($_POST['additional_scripts']) ? $_POST['additional_scripts'] : $additional_scripts, ENT_QUOTES, 'UTF-8'); ?></textarea>
</div>
<input type="hidden" name="manage" value="manage" />
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
<!-- Permissions -->
<div class="tab-pane fade <?php echo $activeTab==='permissions'?'show active':''; ?>" id="permissions" role="tabpanel" aria-labelledby="permissions-tab">
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<input type="hidden" name="active_tab" value="<?php echo htmlspecialchars($activeTab, ENT_QUOTES, 'UTF-8'); ?>">
<div class="form-check mb-3">
<input class="form-check-input" type="checkbox" name="disableguest" id="disableguest" <?php if ($disableguest == 'on') echo 'checked'; ?>>
<label class="form-check-label" for="disableguest">Only allow registered users to paste</label>
</div>
<div class="form-check mb-3">
<input class="form-check-input" type="checkbox" name="siteprivate" id="siteprivate" <?php if ($siteprivate == 'on') echo 'checked'; ?>>
<label class="form-check-label" for="siteprivate">Make site private (no Recent Pastes for non-members)</label>
</div>
<input type="hidden" name="permissions" value="permissions" />
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
<!-- Captcha -->
<div class="tab-pane fade <?php echo $activeTab==='captcha'?'show active':''; ?>" id="captcha" role="tabpanel" aria-labelledby="captcha-tab">
<form id="captcha-form" method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<input type="hidden" name="active_tab" value="<?php echo htmlspecialchars($activeTab, ENT_QUOTES, 'UTF-8'); ?>">
<div class="form-check mb-3">
<input class="form-check-input" type="checkbox" name="cap_e" id="cap_e" <?php if ($cap_e == 'on') echo 'checked'; ?>>
<label class="form-check-label" for="cap_e">Enable Captcha</label>
</div>
<div class="mb-3">
<label for="mode" class="form-label">Captcha Type</label>
<select class="form-select" id="mode" name="mode">
<option value="Easy" <?php if ($mode == 'Easy') echo 'selected'; ?>>Easy</option>
<option value="Normal" <?php if ($mode == 'Normal') echo 'selected'; ?>>Normal</option>
<option value="Tough" <?php if ($mode == 'Tough') echo 'selected'; ?>>Tough</option>
<option value="reCAPTCHA" <?php if ($mode == 'reCAPTCHA') echo 'selected'; ?>>reCAPTCHA</option>
</select>
</div>
<div class="mb-3">
<label for="recaptcha_version" class="form-label">reCAPTCHA Version</label>
<select class="form-select" id="recaptcha_version" name="recaptcha_version">
<option value="v2" <?php if ($recaptcha_version == 'v2') echo 'selected'; ?>>reCAPTCHA v2</option>
<option value="v3" <?php if ($recaptcha_version == 'v3') echo 'selected'; ?>>reCAPTCHA v3</option>
</select>
</div>
<div class="form-check mb-3">
<input class="form-check-input" type="checkbox" name="mul" id="mul" <?php if ($mul == 'on') echo 'checked'; ?>>
<label class="form-check-label" for="mul">Multiplication Captcha</label>
</div>
<div class="mb-3">
<label for="allowed" class="form-label">Allowed Characters</label>
<input type="text" class="form-control" id="allowed" name="allowed" value="<?php echo htmlspecialchars($allowed ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<div class="form-text">Characters to use for non-reCAPTCHA captchas</div>
</div>
<div class="mb-3">
<label for="color" class="form-label">Captcha Color</label>
<input type="color" class="form-control form-control-color" id="color" name="color" value="<?php echo htmlspecialchars($color ?? '#000000', ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="recaptcha_sitekey" class="form-label">reCAPTCHA Site Key</label>
<input type="text" class="form-control" id="recaptcha_sitekey" name="recaptcha_sitekey" value="<?php echo htmlspecialchars($recaptcha_sitekey ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<div class="form-text">Obtain from <a href="https://www.google.com/recaptcha/admin" target="_blank" rel="noopener">Google reCAPTCHA Admin</a></div>
</div>
<div class="mb-3">
<label for="recaptcha_secretkey" class="form-label">reCAPTCHA Secret Key</label>
<input type="text" class="form-control" id="recaptcha_secretkey" name="recaptcha_secretkey" value="<?php echo htmlspecialchars($recaptcha_secretkey ?? '', ENT_QUOTES, 'UTF-8'); ?>">
</div>
<input type="hidden" name="cap" value="cap" />
<button type="submit" class="btn btn-primary">Save</button>
<button type="button" id="test-recaptcha" class="btn btn-outline-primary ms-2">Test reCAPTCHA</button>
</form>
</div>
<!-- Mail -->
<div class="tab-pane fade <?php echo $activeTab==='mail'?'show active':''; ?>" id="mail" role="tabpanel" aria-labelledby="mail-tab">
<form id="mail-form" method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<input type="hidden" name="active_tab" value="<?php echo htmlspecialchars($activeTab, ENT_QUOTES, 'UTF-8'); ?>">
<div class="mb-3">
<label for="verification" class="form-label">Email Verification</label>
<select class="form-select" id="verification" name="verification">
<option value="enabled" <?php if ($verification == 'enabled') echo 'selected'; ?>>Enabled</option>
<option value="disabled" <?php if ($verification == 'disabled') echo 'selected'; ?>>Disabled</option>
</select>
<div class="form-text">Send verification email when users register</div>
</div>
<div class="mb-3">
<label for="protocol" class="form-label">Mail Protocol</label>
<select class="form-select" id="protocol" name="protocol">
<option value="1" <?php if ($protocol == '1') echo 'selected'; ?>>PHP Mail</option>
<option value="2" <?php if ($protocol == '2') echo 'selected'; ?>>SMTP</option>
</select>
</div>
<div class="mb-3">
<label for="smtp_host" class="form-label">SMTP Host</label>
<input type="text" class="form-control" id="smtp_host" name="smtp_host" placeholder="smtp.gmail.com" value="<?php echo htmlspecialchars($smtp_host ?? '', ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="smtp_port" class="form-label">SMTP Port</label>
<input type="text" class="form-control" id="smtp_port" name="smtp_port" placeholder="587" value="<?php echo htmlspecialchars($smtp_port ?? '', ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="smtp_user" class="form-label">SMTP Username</label>
<input type="text" class="form-control" id="smtp_user" name="smtp_user" placeholder="username@domain.com" value="<?php echo htmlspecialchars($smtp_username ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<div class="form-text">Leave blank if using Gmail SMTP with OAuth</div>
</div>
<div class="mb-3">
<label for="smtp_pass" class="form-label">SMTP Password</label>
<input type="password" class="form-control" id="smtp_pass" name="smtp_pass" placeholder="SMTP Password" value="<?php echo htmlspecialchars($smtp_password ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<div class="form-text">Leave blank if using Gmail SMTP with OAuth</div>
</div>
<div class="mb-3">
<label for="socket" class="form-label">SMTP Security</label>
<select class="form-select" id="socket" name="socket">
<option value="tls" <?php if ($socket == 'tls') echo 'selected'; ?>>TLS</option>
<option value="ssl" <?php if ($socket == 'ssl') echo 'selected'; ?>>SSL</option>
</select>
</div>
<div class="mb-3">
<label for="auth" class="form-label">SMTP Auth</label>
<select class="form-select" id="auth" name="auth">
<option value="true" <?php if ($auth == 'true') echo 'selected'; ?>>True</option>
<option value="false" <?php if ($auth == 'false') echo 'selected'; ?>>False</option>
</select>
</div>
<input type="hidden" name="smtp_code" value="smtp_code" />
<button type="submit" class="btn btn-primary">Save</button>
<button type="button" id="test-smtp" class="btn btn-outline-primary ms-2">Test SMTP</button>
</form>
<form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>" class="mt-4">
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<input type="hidden" name="active_tab" value="<?php echo htmlspecialchars($activeTab, ENT_QUOTES, 'UTF-8'); ?>">
<div class="mb-3">
<label for="client_id" class="form-label">Client ID</label>
<input type="text" class="form-control" id="client_id" name="client_id" placeholder="Client ID" value="<?php echo htmlspecialchars($oauth_client_id ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<div class="form-text">Obtain from <a href="https://console.developers.google.com" target="_blank" rel="noopener">Google Cloud Console</a></div>
</div>
<div class="mb-3">
<label for="client_secret" class="form-label">Client Secret</label>
<input type="text" class="form-control" id="client_secret" name="client_secret" placeholder="Client Secret" value="<?php echo htmlspecialchars($oauth_client_secret ?? '', ENT_QUOTES, 'UTF-8'); ?>">
</div>
<div class="mb-3">
<label for="redirect_uri" class="form-label">Redirect URI</label>
<input type="text" class="form-control" id="redirect_uri" readonly value="<?php echo htmlspecialchars($redirect_uri ?? '', ENT_QUOTES, 'UTF-8'); ?>">
<div class="form-text">Use this URI in Google Cloud Console for OAuth configuration</div>
</div>
<div class="mb-3">
<label class="form-label">OAuth Status</label>
<div class="form-text"><?php echo htmlspecialchars($oauth_status ?? '', ENT_QUOTES, 'UTF-8'); ?></div>
<?php if (empty($oauth_refresh_token)): ?>
<p class="mt-2"><a href="../oauth/google_smtp.php" class="btn btn-primary">Authorize Gmail SMTP</a></p>
<?php endif; ?>
</div>
<input type="hidden" name="save_oauth_credentials" value="save_oauth_credentials" />
<button type="submit" class="btn btn-primary">Save OAuth Credentials</button>
</form>
</div>
</div><!-- /.tab-content -->
</div>
</div>
<div class="text-muted small mt-3">
Powered by <a class="text-decoration-none" href="https://phpaste.sourceforge.io" target="_blank">Paste</a>
</div>
</div><!-- /.col-lg-10 -->
</div><!-- /.row -->
</div><!-- /.container -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
<script>
// reCAPTCHA TEST
$('#test-recaptcha').on('click', function(e) {
e.preventDefault();
var $button = $(this);
$button.prop('disabled', true).text('Testing...');
var formData = $('#captcha-form').serialize() + '&test_recaptcha=1&csrf_token=' + encodeURIComponent($('input[name="csrf_token"]').val());
$.ajax({
url: '<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>',
type: 'POST',
data: formData,
dataType: 'json',
success: function(response) {
$('#message-container').html(response.message);
setTimeout(function() { $('#message-container').empty(); }, 6000);
},
error: function(xhr, status, error) {
$('#message-container').html('<div class="alert alert-danger text-center">Failed to test reCAPTCHA: ' + error + '</div>');
setTimeout(function() { $('#message-container').empty(); }, 6000);
},
complete: function() {
$button.prop('disabled', false).text('Test reCAPTCHA');
}
});
});
// SMTP TEST
$('#test-smtp').on('click', function(e) {
e.preventDefault();
var $button = $(this);
$button.prop('disabled', true).text('Testing...');
var formData = $('#mail-form').serialize() + '&test_smtp=1&csrf_token=' + encodeURIComponent($('input[name="csrf_token"]').val());
$.ajax({
url: '<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>',
type: 'POST',
data: formData,
dataType: 'json',
success: function(response) {
$('#message-container').html(response.message);
setTimeout(function() { $('#message-container').empty(); }, 6000);
},
error: function(xhr, status, error) {
$('#message-container').html('<div class="alert alert-danger text-center">Failed to test SMTP: ' + error + '</div>');
setTimeout(function() { $('#message-container').empty(); }, 6000);
},
complete: function() {
$button.prop('disabled', false).text('Test SMTP');
}
});
});
// Keep active tab after Save + support URL hashes
document.addEventListener('DOMContentLoaded', () => {
const tabs = document.getElementById('configTabs');
const setHiddenInputs = (tabId) => {
document.querySelectorAll('form input[name="active_tab"]').forEach(i => i.value = tabId);
};
const initial = '<?php echo htmlspecialchars($activeTab, ENT_QUOTES, "UTF-8"); ?>';
setHiddenInputs(initial);
tabs?.addEventListener('shown.bs.tab', (e) => {
const id = e.target?.getAttribute('data-bs-target')?.replace('#','') || 'siteinfo';
setHiddenInputs(id);
history.replaceState(null, '', '#' + id);
try { localStorage.setItem('config.activeTab', id); } catch(e){}
});
// If URL has hash on load, Bootstrap will handle via markup; localStorage fallback not required here.
});
</script>
</body>
</html>
<?php
if (isset($_GET['logout'])) {
error_log("configuration.php: Admin logout requested for admin_login: {$_SESSION['admin_login']}, Session ID: " . session_id());
$_SESSION = [];
session_destroy();
ob_end_clean();
header('Location: index.php');
exit();
}
ob_end_flush();
================================================
FILE: admin/css/bootstrap.css
================================================
/*!
* Bootstrap v3.3.2 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
margin: .67em 0;
font-size: 2em;
}
mark {
color: #000;
background: #ff0;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -.5em;
}
sub {
bottom: -.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
height: 0;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
margin: 0;
font: inherit;
color: inherit;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
-webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
fieldset {
padding: .35em .625em .75em;
margin: 0 2px;
border: 1px solid #c0c0c0;
}
legend {
padding: 0;
border: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
td,
th {
padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
*,
*:before,
*:after {
color: #000 !important;
text-shadow: none !important;
background: transparent !important;
-webkit-box-shadow: none !important;
box-shadow: none !important;
}
a,
a:visited {
text-decoration: underline;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
select {
background: #fff !important;
}
.navbar {
display: none;
}
.btn > .caret,
.dropup > .btn > .caret {
border-top-color: #000 !important;
}
.label {
border: 1px solid #000;
}
.table {
border-collapse: collapse !important;
}
.table td,
.table th {
background-color: #fff !important;
}
.table-bordered th,
.table-bordered td {
border: 1px solid #ddd !important;
}
}
@font-face {
font-family: 'Glyphicons Halflings';
src: url('../fonts/glyphicons-halflings-regular.eot');
src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
position: relative;
top: 1px;
display: inline-block;
font-family: 'Glyphicons Halflings';
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
content: "\2a";
}
.glyphicon-plus:before {
content: "\2b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
content: "\20ac";
}
.glyphicon-minus:before {
content: "\2212";
}
.glyphicon-cloud:before {
content: "\2601";
}
.glyphicon-envelope:before {
content: "\2709";
}
.glyphicon-pencil:before {
content: "\270f";
}
.glyphicon-glass:before {
content: "\e001";
}
.glyphicon-music:before {
content: "\e002";
}
.glyphicon-search:before {
content: "\e003";
}
.glyphicon-heart:before {
content: "\e005";
}
.glyphicon-star:before {
content: "\e006";
}
.glyphicon-star-empty:before {
content: "\e007";
}
.glyphicon-user:before {
content: "\e008";
}
.glyphicon-film:before {
content: "\e009";
}
.glyphicon-th-large:before {
content: "\e010";
}
.glyphicon-th:before {
content: "\e011";
}
.glyphicon-th-list:before {
content: "\e012";
}
.glyphicon-ok:before {
content: "\e013";
}
.glyphicon-remove:before {
content: "\e014";
}
.glyphicon-zoom-in:before {
content: "\e015";
}
.glyphicon-zoom-out:before {
content: "\e016";
}
.glyphicon-off:before {
content: "\e017";
}
.glyphicon-signal:before {
content: "\e018";
}
.glyphicon-cog:before {
content: "\e019";
}
.glyphicon-trash:before {
content: "\e020";
}
.glyphicon-home:before {
content: "\e021";
}
.glyphicon-file:before {
content: "\e022";
}
.glyphicon-time:before {
content: "\e023";
}
.glyphicon-road:before {
content: "\e024";
}
.glyphicon-download-alt:before {
content: "\e025";
}
.glyphicon-download:before {
content: "\e026";
}
.glyphicon-upload:before {
content: "\e027";
}
.glyphicon-inbox:before {
content: "\e028";
}
.glyphicon-play-circle:before {
content: "\e029";
}
.glyphicon-repeat:before {
content: "\e030";
}
.glyphicon-refresh:before {
content: "\e031";
}
.glyphicon-list-alt:before {
content: "\e032";
}
.glyphicon-lock:before {
content: "\e033";
}
.glyphicon-flag:before {
content: "\e034";
}
.glyphicon-headphones:before {
content: "\e035";
}
.glyphicon-volume-off:before {
content: "\e036";
}
.glyphicon-volume-down:before {
content: "\e037";
}
.glyphicon-volume-up:before {
content: "\e038";
}
.glyphicon-qrcode:before {
content: "\e039";
}
.glyphicon-barcode:before {
content: "\e040";
}
.glyphicon-tag:before {
content: "\e041";
}
.glyphicon-tags:before {
content: "\e042";
}
.glyphicon-book:before {
content: "\e043";
}
.glyphicon-bookmark:before {
content: "\e044";
}
.glyphicon-print:before {
content: "\e045";
}
.glyphicon-camera:before {
content: "\e046";
}
.glyphicon-font:before {
content: "\e047";
}
.glyphicon-bold:before {
content: "\e048";
}
.glyphicon-italic:before {
content: "\e049";
}
.glyphicon-text-height:before {
content: "\e050";
}
.glyphicon-text-width:before {
content: "\e051";
}
.glyphicon-align-left:before {
content: "\e052";
}
.glyphicon-align-center:before {
content: "\e053";
}
.glyphicon-align-right:before {
content: "\e054";
}
.glyphicon-align-justify:before {
content: "\e055";
}
.glyphicon-list:before {
content: "\e056";
}
.glyphicon-indent-left:before {
content: "\e057";
}
.glyphicon-indent-right:before {
content: "\e058";
}
.glyphicon-facetime-video:before {
content: "\e059";
}
.glyphicon-picture:before {
content: "\e060";
}
.glyphicon-map-marker:before {
content: "\e062";
}
.glyphicon-adjust:before {
content: "\e063";
}
.glyphicon-tint:before {
content: "\e064";
}
.glyphicon-edit:before {
content: "\e065";
}
.glyphicon-share:before {
content: "\e066";
}
.glyphicon-check:before {
content: "\e067";
}
.glyphicon-move:before {
content: "\e068";
}
.glyphicon-step-backward:before {
content: "\e069";
}
.glyphicon-fast-backward:before {
content: "\e070";
}
.glyphicon-backward:before {
content: "\e071";
}
.glyphicon-play:before {
content: "\e072";
}
.glyphicon-pause:before {
content: "\e073";
}
.glyphicon-stop:before {
content: "\e074";
}
.glyphicon-forward:before {
content: "\e075";
}
.glyphicon-fast-forward:before {
content: "\e076";
}
.glyphicon-step-forward:before {
content: "\e077";
}
.glyphicon-eject:before {
content: "\e078";
}
.glyphicon-chevron-left:before {
content: "\e079";
}
.glyphicon-chevron-right:before {
content: "\e080";
}
.glyphicon-plus-sign:before {
content: "\e081";
}
.glyphicon-minus-sign:before {
content: "\e082";
}
.glyphicon-remove-sign:before {
content: "\e083";
}
.glyphicon-ok-sign:before {
content: "\e084";
}
.glyphicon-question-sign:before {
content: "\e085";
}
.glyphicon-info-sign:before {
content: "\e086";
}
.glyphicon-screenshot:before {
content: "\e087";
}
.glyphicon-remove-circle:before {
content: "\e088";
}
.glyphicon-ok-circle:before {
content: "\e089";
}
.glyphicon-ban-circle:before {
content: "\e090";
}
.glyphicon-arrow-left:before {
content: "\e091";
}
.glyphicon-arrow-right:before {
content: "\e092";
}
.glyphicon-arrow-up:before {
content: "\e093";
}
.glyphicon-arrow-down:before {
content: "\e094";
}
.glyphicon-share-alt:before {
content: "\e095";
}
.glyphicon-resize-full:before {
content: "\e096";
}
.glyphicon-resize-small:before {
content: "\e097";
}
.glyphicon-exclamation-sign:before {
content: "\e101";
}
.glyphicon-gift:before {
content: "\e102";
}
.glyphicon-leaf:before {
content: "\e103";
}
.glyphicon-fire:before {
content: "\e104";
}
.glyphicon-eye-open:before {
content: "\e105";
}
.glyphicon-eye-close:before {
content: "\e106";
}
.glyphicon-warning-sign:before {
content: "\e107";
}
.glyphicon-plane:before {
content: "\e108";
}
.glyphicon-calendar:before {
content: "\e109";
}
.glyphicon-random:before {
content: "\e110";
}
.glyphicon-comment:before {
content: "\e111";
}
.glyphicon-magnet:before {
content: "\e112";
}
.glyphicon-chevron-up:before {
content: "\e113";
}
.glyphicon-chevron-down:before {
content: "\e114";
}
.glyphicon-retweet:before {
content: "\e115";
}
.glyphicon-shopping-cart:before {
content: "\e116";
}
.glyphicon-folder-close:before {
content: "\e117";
}
.glyphicon-folder-open:before {
content: "\e118";
}
.glyphicon-resize-vertical:before {
content: "\e119";
}
.glyphicon-resize-horizontal:before {
content: "\e120";
}
.glyphicon-hdd:before {
content: "\e121";
}
.glyphicon-bullhorn:before {
content: "\e122";
}
.glyphicon-bell:before {
content: "\e123";
}
.glyphicon-certificate:before {
content: "\e124";
}
.glyphicon-thumbs-up:before {
content: "\e125";
}
.glyphicon-thumbs-down:before {
content: "\e126";
}
.glyphicon-hand-right:before {
content: "\e127";
}
.glyphicon-hand-left:before {
content: "\e128";
}
.glyphicon-hand-up:before {
content: "\e129";
}
.glyphicon-hand-down:before {
content: "\e130";
}
.glyphicon-circle-arrow-right:before {
content: "\e131";
}
.glyphicon-circle-arrow-left:before {
content: "\e132";
}
.glyphicon-circle-arrow-up:before {
content: "\e133";
}
.glyphicon-circle-arrow-down:before {
content: "\e134";
}
.glyphicon-globe:before {
content: "\e135";
}
.glyphicon-wrench:before {
content: "\e136";
}
.glyphicon-tasks:before {
content: "\e137";
}
.glyphicon-filter:before {
content: "\e138";
}
.glyphicon-briefcase:before {
content: "\e139";
}
.glyphicon-fullscreen:before {
content: "\e140";
}
.glyphicon-dashboard:before {
content: "\e141";
}
.glyphicon-paperclip:before {
content: "\e142";
}
.glyphicon-heart-empty:before {
content: "\e143";
}
.glyphicon-link:before {
content: "\e144";
}
.glyphicon-phone:before {
content: "\e145";
}
.glyphicon-pushpin:before {
content: "\e146";
}
.glyphicon-usd:before {
content: "\e148";
}
.glyphicon-gbp:before {
content: "\e149";
}
.glyphicon-sort:before {
content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
content: "\e152";
}
.glyphicon-sort-by-order:before {
content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
content: "\e154";
}
.glyphicon-sort-by-attributes:before {
content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
content: "\e156";
}
.glyphicon-unchecked:before {
content: "\e157";
}
.glyphicon-expand:before {
content: "\e158";
}
.glyphicon-collapse-down:before {
content: "\e159";
}
.glyphicon-collapse-up:before {
content: "\e160";
}
.glyphicon-log-in:before {
content: "\e161";
}
.glyphicon-flash:before {
content: "\e162";
}
.glyphicon-log-out:before {
content: "\e163";
}
.glyphicon-new-window:before {
content: "\e164";
}
.glyphicon-record:before {
content: "\e165";
}
.glyphicon-save:before {
content: "\e166";
}
.glyphicon-open:before {
content: "\e167";
}
.glyphicon-saved:before {
content: "\e168";
}
.glyphicon-import:before {
content: "\e169";
}
.glyphicon-export:before {
content: "\e170";
}
.glyphicon-send:before {
content: "\e171";
}
.glyphicon-floppy-disk:before {
content: "\e172";
}
.glyphicon-floppy-saved:before {
content: "\e173";
}
.glyphicon-floppy-remove:before {
content: "\e174";
}
.glyphicon-floppy-save:before {
content: "\e175";
}
.glyphicon-floppy-open:before {
content: "\e176";
}
.glyphicon-credit-card:before {
content: "\e177";
}
.glyphicon-transfer:before {
content: "\e178";
}
.glyphicon-cutlery:before {
content: "\e179";
}
.glyphicon-header:before {
content: "\e180";
}
.glyphicon-compressed:before {
content: "\e181";
}
.glyphicon-earphone:before {
content: "\e182";
}
.glyphicon-phone-alt:before {
content: "\e183";
}
.glyphicon-tower:before {
content: "\e184";
}
.glyphicon-stats:before {
content: "\e185";
}
.glyphicon-sd-video:before {
content: "\e186";
}
.glyphicon-hd-video:before {
content: "\e187";
}
.glyphicon-subtitles:before {
content: "\e188";
}
.glyphicon-sound-stereo:before {
content: "\e189";
}
.glyphicon-sound-dolby:before {
content: "\e190";
}
.glyphicon-sound-5-1:before {
content: "\e191";
}
.glyphicon-sound-6-1:before {
content: "\e192";
}
.glyphicon-sound-7-1:before {
content: "\e193";
}
.glyphicon-copyright-mark:before {
content: "\e194";
}
.glyphicon-registration-mark:before {
content: "\e195";
}
.glyphicon-cloud-download:before {
content: "\e197";
}
.glyphicon-cloud-upload:before {
content: "\e198";
}
.glyphicon-tree-conifer:before {
content: "\e199";
}
.glyphicon-tree-deciduous:before {
content: "\e200";
}
.glyphicon-cd:before {
content: "\e201";
}
.glyphicon-save-file:before {
content: "\e202";
}
.glyphicon-open-file:before {
content: "\e203";
}
.glyphicon-level-up:before {
content: "\e204";
}
.glyphicon-copy:before {
content: "\e205";
}
.glyphicon-paste:before {
content: "\e206";
}
.glyphicon-alert:before {
content: "\e209";
}
.glyphicon-equalizer:before {
content: "\e210";
}
.glyphicon-king:before {
content: "\e211";
}
.glyphicon-queen:before {
content: "\e212";
}
.glyphicon-pawn:before {
content: "\e213";
}
.glyphicon-bishop:before {
content: "\e214";
}
.glyphicon-knight:before {
content: "\e215";
}
.glyphicon-baby-formula:before {
content: "\e216";
}
.glyphicon-tent:before {
content: "\26fa";
}
.glyphicon-blackboard:before {
content: "\e218";
}
.glyphicon-bed:before {
content: "\e219";
}
.glyphicon-apple:before {
content: "\f8ff";
}
.glyphicon-erase:before {
content: "\e221";
}
.glyphicon-hourglass:before {
content: "\231b";
}
.glyphicon-lamp:before {
content: "\e223";
}
.glyphicon-duplicate:before {
content: "\e224";
}
.glyphicon-piggy-bank:before {
content: "\e225";
}
.glyphicon-scissors:before {
content: "\e226";
}
.glyphicon-bitcoin:before {
content: "\e227";
}
.glyphicon-yen:before {
content: "\00a5";
}
.glyphicon-ruble:before {
content: "\20bd";
}
.glyphicon-scale:before {
content: "\e230";
}
.glyphicon-ice-lolly:before {
content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
content: "\e232";
}
.glyphicon-education:before {
content: "\e233";
}
.glyphicon-option-horizontal:before {
content: "\e234";
}
.glyphicon-option-vertical:before {
content: "\e235";
}
.glyphicon-menu-hamburger:before {
content: "\e236";
}
.glyphicon-modal-window:before {
content: "\e237";
}
.glyphicon-oil:before {
content: "\e238";
}
.glyphicon-grain:before {
content: "\e239";
}
.glyphicon-sunglasses:before {
content: "\e240";
}
.glyphicon-text-size:before {
content: "\e241";
}
.glyphicon-text-color:before {
content: "\e242";
}
.glyphicon-text-background:before {
content: "\e243";
}
.glyphicon-object-align-top:before {
content: "\e244";
}
.glyphicon-object-align-bottom:before {
content: "\e245";
}
.glyphicon-object-align-horizontal:before {
content: "\e246";
}
.glyphicon-object-align-left:before {
content: "\e247";
}
.glyphicon-object-align-vertical:before {
content: "\e248";
}
.glyphicon-object-align-right:before {
content: "\e249";
}
.glyphicon-triangle-right:before {
content: "\e250";
}
.glyphicon-triangle-left:before {
content: "\e251";
}
.glyphicon-triangle-bottom:before {
content: "\e252";
}
.glyphicon-triangle-top:before {
content: "\e253";
}
.glyphicon-console:before {
content: "\e254";
}
.glyphicon-superscript:before {
content: "\e255";
}
.glyphicon-subscript:before {
content: "\e256";
}
.glyphicon-menu-left:before {
content: "\e257";
}
.glyphicon-menu-right:before {
content: "\e258";
}
.glyphicon-menu-down:before {
content: "\e259";
}
.glyphicon-menu-up:before {
content: "\e260";
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html {
font-size: 10px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 1.42857143;
color: #333;
background-color: #fff;
}
input,
button,
select,
textarea {
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
a {
color: #337ab7;
text-decoration: none;
}
a:hover,
a:focus {
color: #23527c;
text-decoration: underline;
}
a:focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
figure {
margin: 0;
}
img {
vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
display: block;
max-width: 100%;
height: auto;
}
.img-rounded {
border-radius: 6px;
}
.img-thumbnail {
display: inline-block;
max-width: 100%;
height: auto;
padding: 4px;
line-height: 1.42857143;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 4px;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
.img-circle {
border-radius: 50%;
}
hr {
margin-top: 20px;
margin-bottom: 20px;
border: 0;
border-top: 1px solid #eee;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
position: static;
width: auto;
height: auto;
margin: 0;
overflow: visible;
clip: auto;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
font-family: inherit;
font-weight: 500;
line-height: 1.1;
color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
font-weight: normal;
line-height: 1;
color: #777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
margin-top: 20px;
margin-bottom: 10px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
margin-top: 10px;
margin-bottom: 10px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
font-size: 75%;
}
h1,
.h1 {
font-size: 36px;
}
h2,
.h2 {
font-size: 30px;
}
h3,
.h3 {
font-size: 24px;
}
h4,
.h4 {
font-size: 18px;
}
h5,
.h5 {
font-size: 14px;
}
h6,
.h6 {
font-size: 12px;
}
p {
margin: 0 0 10px;
}
.lead {
margin-bottom: 20px;
font-size: 16px;
font-weight: 300;
line-height: 1.4;
}
@media (min-width: 768px) {
.lead {
font-size: 21px;
}
}
small,
.small {
font-size: 85%;
}
mark,
.mark {
padding: .2em;
background-color: #fcf8e3;
}
.text-left {
text-align: left;
}
.text-right {
text-align: right;
}
.text-center {
text-align: center;
}
.text-justify {
text-align: justify;
}
.text-nowrap {
white-space: nowrap;
}
.text-lowercase {
text-transform: lowercase;
}
.text-uppercase {
text-transform: uppercase;
}
.text-capitalize {
text-transform: capitalize;
}
.text-muted {
color: #777;
}
.text-primary {
color: #337ab7;
}
a.text-primary:hover {
color: #286090;
}
.text-success {
color: #3c763d;
}
a.text-success:hover {
color: #2b542c;
}
.text-info {
color: #31708f;
}
a.text-info:hover {
color: #245269;
}
.text-warning {
color: #8a6d3b;
}
a.text-warning:hover {
color: #66512c;
}
.text-danger {
color: #a94442;
}
a.text-danger:hover {
color: #843534;
}
.bg-primary {
color: #fff;
background-color: #337ab7;
}
a.bg-primary:hover {
background-color: #286090;
}
.bg-success {
background-color: #dff0d8;
}
a.bg-success:hover {
background-color: #c1e2b3;
}
.bg-info {
background-color: #d9edf7;
}
a.bg-info:hover {
background-color: #afd9ee;
}
.bg-warning {
background-color: #fcf8e3;
}
a.bg-warning:hover {
background-color: #f7ecb5;
}
.bg-danger {
background-color: #f2dede;
}
a.bg-danger:hover {
background-color: #e4b9b9;
}
.page-header {
padding-bottom: 9px;
margin: 40px 0 20px;
border-bottom: 1px solid #eee;
}
ul,
ol {
margin-top: 0;
margin-bottom: 10px;
}
ul ul,
ol ul,
ul ol,
ol ol {
margin-bottom: 0;
}
.list-unstyled {
padding-left: 0;
list-style: none;
}
.list-inline {
padding-left: 0;
margin-left: -5px;
list-style: none;
}
.list-inline > li {
display: inline-block;
padding-right: 5px;
padding-left: 5px;
}
dl {
margin-top: 0;
margin-bottom: 20px;
}
dt,
dd {
line-height: 1.42857143;
}
dt {
font-weight: bold;
}
dd {
margin-left: 0;
}
@media (min-width: 768px) {
.dl-horizontal dt {
float: left;
width: 160px;
overflow: hidden;
clear: left;
text-align: right;
text-overflow: ellipsis;
white-space: nowrap;
}
.dl-horizontal dd {
margin-left: 180px;
}
}
abbr[title],
abbr[data-original-title] {
cursor: help;
border-bottom: 1px dotted #777;
}
.initialism {
font-size: 90%;
text-transform: uppercase;
}
blockquote {
padding: 10px 20px;
margin: 0 0 20px;
font-size: 17.5px;
border-left: 5px solid #eee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
display: block;
font-size: 80%;
line-height: 1.42857143;
color: #777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
padding-right: 15px;
padding-left: 0;
text-align: right;
border-right: 5px solid #eee;
border-left: 0;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
content: '\00A0 \2014';
}
address {
margin-bottom: 20px;
font-style: normal;
line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
}
code {
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
background-color: #f9f2f4;
border-radius: 4px;
}
kbd {
padding: 2px 4px;
font-size: 90%;
color: #fff;
background-color: #333;
border-radius: 3px;
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
}
kbd kbd {
padding: 0;
font-size: 100%;
font-weight: bold;
-webkit-box-shadow: none;
box-shadow: none;
}
pre {
display: block;
padding: 9.5px;
margin: 0 0 10px;
font-size: 13px;
line-height: 1.42857143;
color: #333;
word-break: break-all;
word-wrap: break-word;
background-color: #f5f5f5;
border: 1px solid #ccc;
border-radius: 4px;
}
pre code {
padding: 0;
font-size: inherit;
color: inherit;
white-space: pre-wrap;
background-color: transparent;
border-radius: 0;
}
.pre-scrollable {
max-height: 340px;
overflow-y: scroll;
}
.container {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 768px) {
.container {
width: 750px;
}
}
@media (min-width: 992px) {
.container {
width: 970px;
}
}
@media (min-width: 1200px) {
.container {
width: 1170px;
}
}
.container-fluid {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
.row {
margin-right: -15px;
margin-left: -15px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
position: relative;
min-height: 1px;
padding-right: 15px;
padding-left: 15px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
float: left;
}
.col-xs-12 {
width: 100%;
}
.col-xs-11 {
width: 91.66666667%;
}
.col-xs-10 {
width: 83.33333333%;
}
.col-xs-9 {
width: 75%;
}
.col-xs-8 {
width: 66.66666667%;
}
.col-xs-7 {
width: 58.33333333%;
}
.col-xs-6 {
width: 50%;
}
.col-xs-5 {
width: 41.66666667%;
}
.col-xs-4 {
width: 33.33333333%;
}
.col-xs-3 {
width: 25%;
}
.col-xs-2 {
width: 16.66666667%;
}
.col-xs-1 {
width: 8.33333333%;
}
.col-xs-pull-12 {
right: 100%;
}
.col-xs-pull-11 {
right: 91.66666667%;
}
.col-xs-pull-10 {
right: 83.33333333%;
}
.col-xs-pull-9 {
right: 75%;
}
.col-xs-pull-8 {
right: 66.66666667%;
}
.col-xs-pull-7 {
right: 58.33333333%;
}
.col-xs-pull-6 {
right: 50%;
}
.col-xs-pull-5 {
right: 41.66666667%;
}
.col-xs-pull-4 {
right: 33.33333333%;
}
.col-xs-pull-3 {
right: 25%;
}
.col-xs-pull-2 {
right: 16.66666667%;
}
.col-xs-pull-1 {
right: 8.33333333%;
}
.col-xs-pull-0 {
right: auto;
}
.col-xs-push-12 {
left: 100%;
}
.col-xs-push-11 {
left: 91.66666667%;
}
.col-xs-push-10 {
left: 83.33333333%;
}
.col-xs-push-9 {
left: 75%;
}
.col-xs-push-8 {
left: 66.66666667%;
}
.col-xs-push-7 {
left: 58.33333333%;
}
.col-xs-push-6 {
left: 50%;
}
.col-xs-push-5 {
left: 41.66666667%;
}
.col-xs-push-4 {
left: 33.33333333%;
}
.col-xs-push-3 {
left: 25%;
}
.col-xs-push-2 {
left: 16.66666667%;
}
.col-xs-push-1 {
left: 8.33333333%;
}
.col-xs-push-0 {
left: auto;
}
.col-xs-offset-12 {
margin-left: 100%;
}
.col-xs-offset-11 {
margin-left: 91.66666667%;
}
.col-xs-offset-10 {
margin-left: 83.33333333%;
}
.col-xs-offset-9 {
margin-left: 75%;
}
.col-xs-offset-8 {
margin-left: 66.66666667%;
}
.col-xs-offset-7 {
margin-left: 58.33333333%;
}
.col-xs-offset-6 {
margin-left: 50%;
}
.col-xs-offset-5 {
margin-left: 41.66666667%;
}
.col-xs-offset-4 {
margin-left: 33.33333333%;
}
.col-xs-offset-3 {
margin-left: 25%;
}
.col-xs-offset-2 {
margin-left: 16.66666667%;
}
.col-xs-offset-1 {
margin-left: 8.33333333%;
}
.col-xs-offset-0 {
margin-left: 0;
}
@media (min-width: 768px) {
.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
float: left;
}
.col-sm-12 {
width: 100%;
}
.col-sm-11 {
width: 91.66666667%;
}
.col-sm-10 {
width: 83.33333333%;
}
.col-sm-9 {
width: 75%;
}
.col-sm-8 {
width: 66.66666667%;
}
.col-sm-7 {
width: 58.33333333%;
}
.col-sm-6 {
width: 50%;
}
.col-sm-5 {
width: 41.66666667%;
}
.col-sm-4 {
width: 33.33333333%;
}
.col-sm-3 {
width: 25%;
}
.col-sm-2 {
width: 16.66666667%;
}
.col-sm-1 {
width: 8.33333333%;
}
.col-sm-pull-12 {
right: 100%;
}
.col-sm-pull-11 {
right: 91.66666667%;
}
.col-sm-pull-10 {
right: 83.33333333%;
}
.col-sm-pull-9 {
right: 75%;
}
.col-sm-pull-8 {
right: 66.66666667%;
}
.col-sm-pull-7 {
right: 58.33333333%;
}
.col-sm-pull-6 {
right: 50%;
}
.col-sm-pull-5 {
right: 41.66666667%;
}
.col-sm-pull-4 {
right: 33.33333333%;
}
.col-sm-pull-3 {
right: 25%;
}
.col-sm-pull-2 {
right: 16.66666667%;
}
.col-sm-pull-1 {
right: 8.33333333%;
}
.col-sm-pull-0 {
right: auto;
}
.col-sm-push-12 {
left: 100%;
}
.col-sm-push-11 {
left: 91.66666667%;
}
.col-sm-push-10 {
left: 83.33333333%;
}
.col-sm-push-9 {
left: 75%;
}
.col-sm-push-8 {
left: 66.66666667%;
}
.col-sm-push-7 {
left: 58.33333333%;
}
.col-sm-push-6 {
left: 50%;
}
.col-sm-push-5 {
left: 41.66666667%;
}
.col-sm-push-4 {
left: 33.33333333%;
}
.col-sm-push-3 {
left: 25%;
}
.col-sm-push-2 {
left: 16.66666667%;
}
.col-sm-push-1 {
left: 8.33333333%;
}
.col-sm-push-0 {
left: auto;
}
.col-sm-offset-12 {
margin-left: 100%;
}
.col-sm-offset-11 {
margin-left: 91.66666667%;
}
.col-sm-offset-10 {
margin-left: 83.33333333%;
}
.col-sm-offset-9 {
margin-left: 75%;
}
.col-sm-offset-8 {
margin-left: 66.66666667%;
}
.col-sm-offset-7 {
margin-left: 58.33333333%;
}
.col-sm-offset-6 {
margin-left: 50%;
}
.col-sm-offset-5 {
margin-left: 41.66666667%;
}
.col-sm-offset-4 {
margin-left: 33.33333333%;
}
.col-sm-offset-3 {
margin-left: 25%;
}
.col-sm-offset-2 {
margin-left: 16.66666667%;
}
.col-sm-offset-1 {
margin-left: 8.33333333%;
}
.col-sm-offset-0 {
margin-left: 0;
}
}
@media (min-width: 992px) {
.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
float: left;
}
.col-md-12 {
width: 100%;
}
.col-md-11 {
width: 91.66666667%;
}
.col-md-10 {
width: 83.33333333%;
}
.col-md-9 {
width: 75%;
}
.col-md-8 {
width: 66.66666667%;
}
.col-md-7 {
width: 58.33333333%;
}
.col-md-6 {
width: 50%;
}
.col-md-5 {
width: 41.66666667%;
}
.col-md-4 {
width: 33.33333333%;
}
.col-md-3 {
width: 25%;
}
.col-md-2 {
width: 16.66666667%;
}
.col-md-1 {
width: 8.33333333%;
}
.col-md-pull-12 {
right: 100%;
}
.col-md-pull-11 {
right: 91.66666667%;
}
.col-md-pull-10 {
right: 83.33333333%;
}
.col-md-pull-9 {
right: 75%;
}
.col-md-pull-8 {
right: 66.66666667%;
}
.col-md-pull-7 {
right: 58.33333333%;
}
.col-md-pull-6 {
right: 50%;
}
.col-md-pull-5 {
right: 41.66666667%;
}
.col-md-pull-4 {
right: 33.33333333%;
}
.col-md-pull-3 {
right: 25%;
}
.col-md-pull-2 {
right: 16.66666667%;
}
.col-md-pull-1 {
right: 8.33333333%;
}
.col-md-pull-0 {
right: auto;
}
.col-md-push-12 {
left: 100%;
}
.col-md-push-11 {
left: 91.66666667%;
}
.col-md-push-10 {
left: 83.33333333%;
}
.col-md-push-9 {
left: 75%;
}
.col-md-push-8 {
left: 66.66666667%;
}
.col-md-push-7 {
left: 58.33333333%;
}
.col-md-push-6 {
left: 50%;
}
.col-md-push-5 {
left: 41.66666667%;
}
.col-md-push-4 {
left: 33.33333333%;
}
.col-md-push-3 {
left: 25%;
}
.col-md-push-2 {
left: 16.66666667%;
}
.col-md-push-1 {
left: 8.33333333%;
}
.col-md-push-0 {
left: auto;
}
.col-md-offset-12 {
margin-left: 100%;
}
.col-md-offset-11 {
margin-left: 91.66666667%;
}
.col-md-offset-10 {
margin-left: 83.33333333%;
}
.col-md-offset-9 {
margin-left: 75%;
}
.col-md-offset-8 {
margin-left: 66.66666667%;
}
.col-md-offset-7 {
margin-left: 58.33333333%;
}
.col-md-offset-6 {
margin-left: 50%;
}
.col-md-offset-5 {
margin-left: 41.66666667%;
}
.col-md-offset-4 {
margin-left: 33.33333333%;
}
.col-md-offset-3 {
margin-left: 25%;
}
.col-md-offset-2 {
margin-left: 16.66666667%;
}
.col-md-offset-1 {
margin-left: 8.33333333%;
}
.col-md-offset-0 {
margin-left: 0;
}
}
@media (min-width: 1200px) {
.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
float: left;
}
.col-lg-12 {
width: 100%;
}
.col-lg-11 {
width: 91.66666667%;
}
.col-lg-10 {
width: 83.33333333%;
}
.col-lg-9 {
width: 75%;
}
.col-lg-8 {
width: 66.66666667%;
}
.col-lg-7 {
width: 58.33333333%;
}
.col-lg-6 {
width: 50%;
}
.col-lg-5 {
width: 41.66666667%;
}
.col-lg-4 {
width: 33.33333333%;
}
.col-lg-3 {
width: 25%;
}
.col-lg-2 {
width: 16.66666667%;
}
.col-lg-1 {
width: 8.33333333%;
}
.col-lg-pull-12 {
right: 100%;
}
.col-lg-pull-11 {
right: 91.66666667%;
}
.col-lg-pull-10 {
right: 83.33333333%;
}
.col-lg-pull-9 {
right: 75%;
}
.col-lg-pull-8 {
right: 66.66666667%;
}
.col-lg-pull-7 {
right: 58.33333333%;
}
.col-lg-pull-6 {
right: 50%;
}
.col-lg-pull-5 {
right: 41.66666667%;
}
.col-lg-pull-4 {
right: 33.33333333%;
}
.col-lg-pull-3 {
right: 25%;
}
.col-lg-pull-2 {
right: 16.66666667%;
}
.col-lg-pull-1 {
right: 8.33333333%;
}
.col-lg-pull-0 {
right: auto;
}
.col-lg-push-12 {
left: 100%;
}
.col-lg-push-11 {
left: 91.66666667%;
}
.col-lg-push-10 {
left: 83.33333333%;
}
.col-lg-push-9 {
left: 75%;
}
.col-lg-push-8 {
left: 66.66666667%;
}
.col-lg-push-7 {
left: 58.33333333%;
}
.col-lg-push-6 {
left: 50%;
}
.col-lg-push-5 {
left: 41.66666667%;
}
.col-lg-push-4 {
left: 33.33333333%;
}
.col-lg-push-3 {
left: 25%;
}
.col-lg-push-2 {
left: 16.66666667%;
}
.col-lg-push-1 {
left: 8.33333333%;
}
.col-lg-push-0 {
left: auto;
}
.col-lg-offset-12 {
margin-left: 100%;
}
.col-lg-offset-11 {
margin-left: 91.66666667%;
}
.col-lg-offset-10 {
margin-left: 83.33333333%;
}
.col-lg-offset-9 {
margin-left: 75%;
}
.col-lg-offset-8 {
margin-left: 66.66666667%;
}
.col-lg-offset-7 {
margin-left: 58.33333333%;
}
.col-lg-offset-6 {
margin-left: 50%;
}
.col-lg-offset-5 {
margin-left: 41.66666667%;
}
.col-lg-offset-4 {
margin-left: 33.33333333%;
}
.col-lg-offset-3 {
margin-left: 25%;
}
.col-lg-offset-2 {
margin-left: 16.66666667%;
}
.col-lg-offset-1 {
margin-left: 8.33333333%;
}
.col-lg-offset-0 {
margin-left: 0;
}
}
table {
background-color: transparent;
}
caption {
padding-top: 8px;
padding-bottom: 8px;
color: #777;
text-align: left;
}
th {
text-align: left;
}
.table {
width: 100%;
max-width: 100%;
margin-bottom: 20px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
padding: 22px;
line-height: 1.42857143;
vertical-align: top;
border-top: 1px solid #ddd;
}
.table > thead > tr > th {
vertical-align: bottom;
border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
border-top: 0;
}
.table > tbody + tbody {
border-top: 2px solid #ddd;
}
.table .table {
background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
padding: 5px;
}
.table-bordered {
border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
background-color: #f5f5f5;
}
table col[class*="col-"] {
position: static;
display: table-column;
float: none;
}
table td[class*="col-"],
table th[class*="col-"] {
position: static;
display: table-cell;
float: none;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
background-color: #ebcccc;
}
.table-responsive {
min-height: .01%;
overflow-x: auto;
}
@media screen and (max-width: 767px) {
.table-responsive {
width: 100%;
margin-bottom: 15px;
overflow-y: hidden;
-ms-overflow-style: -ms-autohiding-scrollbar;
border: 1px solid #ddd;
}
.table-responsive > .table {
margin-bottom: 0;
}
.table-responsive > .table > thead > tr > th,
.table-responsive > .table > tbody > tr > th,
.table-responsive > .table > tfoot > tr > th,
.table-responsive > .table > thead > tr > td,
.table-responsive > .table > tbody > tr > td,
.table-responsive > .table > tfoot > tr > td {
white-space: nowrap;
}
.table-responsive > .table-bordered {
border: 0;
}
.table-responsive > .table-bordered > thead > tr > th:first-child,
.table-responsive > .table-bordered > tbody > tr > th:first-child,
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
.table-responsive > .table-bordered > thead > tr > td:first-child,
.table-responsive > .table-bordered > tbody > tr > td:first-child,
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.table-responsive > .table-bordered > thead > tr > th:last-child,
.table-responsive > .table-bordered > tbody > tr > th:last-child,
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
.table-responsive > .table-bordered > thead > tr > td:last-child,
.table-responsive > .table-bordered > tbody > tr > td:last-child,
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.table-responsive > .table-bordered > tbody > tr:last-child > th,
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
.table-responsive > .table-bordered > tbody > tr:last-child > td,
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
border-bottom: 0;
}
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
padding: 0;
margin-bottom: 20px;
font-size: 21px;
line-height: inherit;
color: #333;
border: 0;
border-bottom: 1px solid #e5e5e5;
}
label {
display: inline-block;
max-width: 100%;
margin-bottom: 5px;
font-weight: bold;
}
input[type="search"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
margin: 4px 0 0;
margin-top: 1px \9;
line-height: normal;
}
input[type="file"] {
display: block;
}
input[type="range"] {
display: block;
width: 100%;
}
select[multiple],
select[size] {
height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
output {
display: block;
padding-top: 7px;
font-size: 14px;
line-height: 1.42857143;
color: #555;
}
.form-control {
display: block;
width: 100%;
height: 34px;
padding: 6px 12px;
font-size: 14px;
line-height: 1.42857143;
color: #555;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
}
.form-control::-moz-placeholder {
color: #999;
opacity: 1;
}
.form-control:-ms-input-placeholder {
color: #999;
}
.form-control::-webkit-input-placeholder {
color: #999;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
cursor: not-allowed;
background-color: #eee;
opacity: 1;
}
textarea.form-control {
height: auto;
}
input[type="search"] {
-webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
line-height: 34px;
}
input[type="date"].input-sm,
input[type="time"].input-sm,
input[type="datetime-local"].input-sm,
input[type="month"].input-sm,
.input-group-sm input[type="date"],
.input-group-sm input[type="time"],
.input-group-sm input[type="datetime-local"],
.input-group-sm input[type="month"] {
line-height: 30px;
}
input[type="date"].input-lg,
input[type="time"].input-lg,
input[type="datetime-local"].input-lg,
input[type="month"].input-lg,
.input-group-lg input[type="date"],
.input-group-lg input[type="time"],
.input-group-lg input[type="datetime-local"],
.input-group-lg input[type="month"] {
line-height: 46px;
}
}
.form-group {
margin-bottom: 15px;
}
.radio,
.checkbox {
position: relative;
display: block;
margin-top: 10px;
margin-bottom: 10px;
}
.radio label,
.checkbox label {
min-height: 20px;
padding-left: 20px;
margin-bottom: 0;
font-weight: normal;
cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
position: absolute;
margin-top: 4px \9;
margin-left: -20px;
}
.radio + .radio,
.checkbox + .checkbox {
margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
display: inline-block;
padding-left: 20px;
margin-bottom: 0;
font-weight: normal;
vertical-align: middle;
cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
margin-top: 0;
margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
cursor: not-allowed;
}
.form-control-static {
padding-top: 7px;
padding-bottom: 7px;
margin-bottom: 0;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
padding-right: 0;
padding-left: 0;
}
.input-sm {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
select.input-sm {
height: 30px;
line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
height: auto;
}
.form-group-sm .form-control {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
select.form-group-sm .form-control {
height: 30px;
line-height: 30px;
}
textarea.form-group-sm .form-control,
select[multiple].form-group-sm .form-control {
height: auto;
}
.form-group-sm .form-control-static {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
}
.input-lg {
height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
select.input-lg {
height: 46px;
line-height: 46px;
}
textarea.input-lg,
select[multiple].input-lg {
height: auto;
}
.form-group-lg .form-control {
height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
select.form-group-lg .form-control {
height: 46px;
line-height: 46px;
}
textarea.form-group-lg .form-control,
select[multiple].form-group-lg .form-control {
height: auto;
}
.form-group-lg .form-control-static {
height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
}
.has-feedback {
position: relative;
}
.has-feedback .form-control {
padding-right: 42.5px;
}
.form-control-feedback {
position: absolute;
top: 0;
right: 0;
z-index: 2;
display: block;
width: 34px;
height: 34px;
line-height: 34px;
text-align: center;
pointer-events: none;
}
.input-lg + .form-control-feedback {
width: 46px;
height: 46px;
line-height: 46px;
}
.input-sm + .form-control-feedback {
width: 30px;
height: 30px;
line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
color: #3c763d;
}
.has-success .form-control {
border-color: #3c763d;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
}
.has-success .form-control:focus {
border-color: #2b542c;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
color: #3c763d;
background-color: #dff0d8;
border-color: #3c763d;
}
.has-success .form-control-feedback {
color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
color: #8a6d3b;
}
.has-warning .form-control {
border-color: #8a6d3b;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
}
.has-warning .form-control:focus {
border-color: #66512c;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #8a6d3b;
}
.has-warning .form-control-feedback {
color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
color: #a94442;
}
.has-error .form-control {
border-color: #a94442;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
}
.has-error .form-control:focus {
border-color: #843534;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
color: #a94442;
background-color: #f2dede;
border-color: #a94442;
}
.has-error .form-control-feedback {
color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
top: 25px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
top: 0;
}
.help-block {
display: block;
margin-top: 5px;
margin-bottom: 10px;
color: #737373;
}
@media (min-width: 768px) {
.form-inline .form-group {
display: inline-block;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.form-inline .form-control-static {
display: inline-block;
}
.form-inline .input-group {
display: inline-table;
vertical-align: middle;
}
.form-inline .input-group .input-group-addon,
.form-inline .input-group .input-group-btn,
.form-inline .input-group .form-control {
width: auto;
}
.form-inline .input-group > .form-control {
width: 100%;
}
.form-inline .control-label {
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio,
.form-inline .checkbox {
display: inline-block;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio label,
.form-inline .checkbox label {
padding-left: 0;
}
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
position: relative;
margin-left: 0;
}
.form-inline .has-feedback .form-control-feedback {
top: 0;
}
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
padding-top: 7px;
margin-top: 0;
margin-bottom: 0;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
min-height: 27px;
}
.form-horizontal .form-group {
margin-right: -15px;
margin-left: -15px;
}
@media (min-width: 768px) {
.form-horizontal .control-label {
padding-top: 7px;
margin-bottom: 0;
text-align: right;
}
}
.form-horizontal .has-feedback .form-control-feedback {
right: 15px;
}
@media (min-width: 768px) {
.form-horizontal .form-group-lg .control-label {
padding-top: 14.333333px;
}
}
@media (min-width: 768px) {
.form-horizontal .form-group-sm .control-label {
padding-top: 6px;
}
}
.btn {
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
font-size: 14px;
font-weight: normal;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-image: none;
border: 1px solid transparent;
border-radius: 4px;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
color: #333;
text-decoration: none;
}
.btn:active,
.btn.active {
background-image: none;
outline: 0;
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
pointer-events: none;
cursor: not-allowed;
filter: alpha(opacity=65);
-webkit-box-shadow: none;
box-shadow: none;
opacity: .65;
}
.btn-default {
color: #333;
background-color: #fff;
border-color: #ccc;
}
.btn-default:hover,
.btn-default:focus,
.btn-default.focus,
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
background-image: none;
}
.btn-default.disabled,
.btn-default[disabled],
fieldset[disabled] .btn-default,
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active {
background-color: #fff;
border-color: #ccc;
}
.btn-default .badge {
color: #fff;
background-color: #333;
}
.btn-primary {
color: #fff;
background-color: #337ab7;
border-color: #2e6da4;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary.focus,
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
background-image: none;
}
.btn-primary.disabled,
.btn-primary[disabled],
fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus,
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
background-color: #337ab7;
border-color: #2e6da4;
}
.btn-primary .badge {
color: #337ab7;
background-color: #fff;
}
.btn-success {
color: #fff;
background-color: #5cb85c;
border-color: #4cae4c;
}
.btn-success:hover,
.btn-success:focus,
.btn-success.focus,
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
background-image: none;
}
.btn-success.disabled,
.btn-success[disabled],
fieldset[disabled] .btn-success,
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus,
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
.btn-success.disabled.active,
.btn-success[disabled].active,
fieldset[disabled] .btn-success.active {
background-color: #5cb85c;
border-color: #4cae4c;
}
.btn-success .badge {
color: #5cb85c;
background-color: #fff;
}
.btn-info {
color: #fff;
background-color: #5bc0de;
border-color: #46b8da;
}
.btn-info:hover,
.btn-info:focus,
.btn-info.focus,
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
background-image: none;
}
.btn-info.disabled,
.btn-info[disabled],
fieldset[disabled] .btn-info,
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus,
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
.btn-info.disabled.active,
.btn-info[disabled].active,
fieldset[disabled] .btn-info.active {
background-color: #5bc0de;
border-color: #46b8da;
}
.btn-info .badge {
color: #5bc0de;
background-color: #fff;
}
.btn-warning {
color: #fff;
background-color: #f0ad4e;
border-color: #eea236;
}
.btn-warning:hover,
.btn-warning:focus,
.btn-warning.focus,
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
background-image: none;
}
.btn-warning.disabled,
.btn-warning[disabled],
fieldset[disabled] .btn-warning,
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus,
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
.btn-warning.disabled.active,
.btn-warning[disabled].active,
fieldset[disabled] .btn-warning.active {
background-color: #f0ad4e;
border-color: #eea236;
}
.btn-warning .badge {
color: #f0ad4e;
background-color: #fff;
}
.btn-danger {
color: #fff;
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-danger:hover,
.btn-danger:focus,
.btn-danger.focus,
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
background-image: none;
}
.btn-danger.disabled,
.btn-danger[disabled],
fieldset[disabled] .btn-danger,
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus,
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
.btn-danger.disabled.active,
.btn-danger[disabled].active,
fieldset[disabled] .btn-danger.active {
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-danger .badge {
color: #d9534f;
background-color: #fff;
}
.btn-link {
font-weight: normal;
color: #337ab7;
border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
background-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
color: #23527c;
text-decoration: underline;
background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
color: #777;
text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
.btn-sm,
.btn-group-sm > .btn {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
.btn-xs,
.btn-group-xs > .btn {
padding: 1px 5px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
.btn-block {
display: block;
width: 100%;
}
.btn-block + .btn-block {
margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
width: 100%;
}
.fade {
opacity: 0;
-webkit-transition: opacity .15s linear;
-o-transition: opacity .15s linear;
transition: opacity .15s linear;
}
.fade.in {
opacity: 1;
}
.collapse {
display: none;
visibility: hidden;
}
.collapse.in {
display: block;
visibility: visible;
}
tr.collapse.in {
display: table-row;
}
tbody.collapse.in {
display: table-row-group;
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
-webkit-transition-timing-function: ease;
-o-transition-timing-function: ease;
transition-timing-function: ease;
-webkit-transition-duration: .35s;
-o-transition-duration: .35s;
transition-duration: .35s;
-webkit-transition-property: height, visibility;
-o-transition-property: height, visibility;
transition-property: height, visibility;
}
.caret {
display: inline-block;
width: 0;
height: 0;
margin-left: 2px;
vertical-align: middle;
border-top: 4px solid;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
}
.dropup,
.dropdown {
position: relative;
}
.dropdown-toggle:focus {
outline: 0;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
float: left;
min-width: 160px;
padding: 5px 0;
margin: 2px 0 0;
font-size: 14px;
text-align: left;
list-style: none;
background-color: #fff;
-webkit-background-clip: padding-box;
background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, .15);
border-radius: 4px;
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
}
.dropdown-menu.pull-right {
right: 0;
left: auto;
}
.dropdown-menu .divider {
height: 1px;
margin: 9px 0;
overflow: hidden;
background-color: #e5e5e5;
}
.dropdown-menu > li > a {
display: block;
padding: 3px 20px;
clear: both;
font-weight: normal;
line-height: 1.42857143;
color: #333;
white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
color: #262626;
text-decoration: none;
background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
color: #fff;
text-decoration: none;
background-color: #337ab7;
outline: 0;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
color: #777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
text-decoration: none;
cursor: not-allowed;
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.open > .dropdown-menu {
display: block;
}
.open > a {
outline: 0;
}
.dropdown-menu-right {
right: 0;
left: auto;
}
.dropdown-menu-left {
right: auto;
left: 0;
}
.dropdown-header {
display: block;
padding: 3px 20px;
font-size: 12px;
line-height: 1.42857143;
color: #777;
white-space: nowrap;
}
.dropdown-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 990;
}
.pull-right > .dropdown-menu {
right: 0;
left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
content: "";
border-top: 0;
border-bottom: 4px solid;
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
top: auto;
bottom: 100%;
margin-bottom: 2px;
}
@media (min-width: 768px) {
.navbar-right .dropdown-menu {
right: 0;
left: auto;
}
.navbar-right .dropdown-menu-left {
right: auto;
left: 0;
}
}
.btn-group,
.btn-group-vertical {
position: relative;
display: inline-block;
vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
position: relative;
float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
margin-left: -1px;
}
.btn-toolbar {
margin-left: -5px;
}
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
border-radius: 0;
}
.btn-group > .btn:first-child {
margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group > .btn-group {
float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
padding-right: 8px;
padding-left: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
padding-right: 12px;
padding-left: 12px;
}
.btn-group.open .dropdown-toggle {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn-group.open .dropdown-toggle.btn-link {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn .caret {
margin-left: 0;
}
.btn-lg .caret {
border-width: 5px 5px 0;
border-bottom-width: 0;
}
.dropup .btn-lg .caret {
border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
display: block;
float: none;
width: 100%;
max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
margin-top: -1px;
margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
border-top-right-radius: 4px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
border-top-left-radius: 0;
border-top-right-radius: 0;
border-bottom-left-radius: 4px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.btn-group-justified {
display: table;
width: 100%;
table-layout: fixed;
border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
display: table-cell;
float: none;
width: 1%;
}
.btn-group-justified > .btn-group .btn {
width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
position: absolute;
clip: rect(0, 0, 0, 0);
pointer-events: none;
}
.input-group {
position: relative;
display: table;
border-collapse: separate;
}
.input-group[class*="col-"] {
float: none;
padding-right: 0;
padding-left: 0;
}
.input-group .form-control {
position: relative;
z-index: 2;
float: left;
width: 100%;
margin-bottom: 0;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
height: 46px;
line-height: 46px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
height: 30px;
line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
border-radius: 0;
}
.input-group-addon,
.input-group-btn {
width: 1%;
white-space: nowrap;
vertical-align: middle;
}
.input-group-addon {
padding: 6px 12px;
font-size: 14px;
font-weight: normal;
line-height: 1;
color: #555;
text-align: center;
background-color: #eee;
border: 1px solid #ccc;
border-radius: 4px;
}
.input-group-addon.input-sm {
padding: 5px 10px;
font-size: 12px;
border-radius: 3px;
}
.input-group-addon.input-lg {
padding: 10px 16px;
font-size: 18px;
border-radius: 6px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group-addon:first-child {
border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.input-group-addon:last-child {
border-left: 0;
}
.input-group-btn {
position: relative;
font-size: 0;
white-space: nowrap;
}
.input-group-btn > .btn {
position: relative;
}
.input-group-btn > .btn + .btn {
margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
margin-left: -1px;
}
.nav {
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav > li {
position: relative;
display: block;
}
.nav > li > a {
position: relative;
display: block;
padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
text-decoration: none;
}
.nav > li.disabled > a {
color: #777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
color: #777;
text-decoration: none;
cursor: not-allowed;
background-color: transparent;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
background-color: #eee;
border-color: #337ab7;
}
.nav .nav-divider {
height: 1px;
margin: 9px 0;
overflow: hidden;
background-color: #e5e5e5;
}
.nav > li > a > img {
max-width: none;
}
.nav-tabs {
border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
float: left;
margin-bottom: -1px;
}
.nav-tabs > li > a {
margin-right: 2px;
line-height: 1.42857143;
border: 1px solid transparent;
border-radius: 4px 4px 0 0;
}
.nav-tabs > li > a:hover {
border-color: #eee #eee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
color: #555;
cursor: default;
background-color: #fff;
border: 1px solid #ddd;
border-bottom-color: transparent;
}
.nav-tabs.nav-justified {
width: 100%;
border-bottom: 0;
}
.nav-tabs.nav-justified > li {
float: none;
}
.nav-tabs.nav-justified > li > a {
margin-bottom: 5px;
text-align: center;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
top: auto;
left: auto;
}
@media (min-width: 768px) {
.nav-tabs.nav-justified > li {
display: table-cell;
width: 1%;
}
.nav-tabs.nav-justified > li > a {
margin-bottom: 0;
}
}
.nav-tabs.nav-justified > li > a {
margin-right: 0;
border-radius: 4px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
border: 1px solid #ddd;
}
@media (min-width: 768px) {
.nav-tabs.nav-justified > li > a {
border-bottom: 1px solid #ddd;
border-radius: 4px 4px 0 0;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
border-bottom-color: #fff;
}
}
.nav-pills > li {
float: left;
}
.nav-pills > li > a {
border-radius: 4px;
}
.nav-pills > li + li {
margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
color: #fff;
background-color: #337ab7;
}
.nav-stacked > li {
float: none;
}
.nav-stacked > li + li {
margin-top: 2px;
margin-left: 0;
}
.nav-justified {
width: 100%;
}
.nav-justified > li {
float: none;
}
.nav-justified > li > a {
margin-bottom: 5px;
text-align: center;
}
.nav-justified > .dropdown .dropdown-menu {
top: auto;
left: auto;
}
@media (min-width: 768px) {
.nav-justified > li {
display: table-cell;
width: 1%;
}
.nav-justified > li > a {
margin-bottom: 0;
}
}
.nav-tabs-justified {
border-bottom: 0;
}
.nav-tabs-justified > li > a {
margin-right: 0;
border-radius: 4px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
border: 1px solid #ddd;
}
@media (min-width: 768px) {
.nav-tabs-justified > li > a {
border-bottom: 1px solid #ddd;
border-radius: 4px 4px 0 0;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
border-bottom-color: #fff;
}
}
.tab-content > .tab-pane {
display: none;
visibility: hidden;
}
.tab-content > .active {
display: block;
visibility: visible;
}
.nav-tabs .dropdown-menu {
margin-top: -1px;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.navbar {
position: relative;
min-height: 50px;
margin-bottom: 20px;
border: 1px solid transparent;
}
@media (min-width: 768px) {
.navbar {
border-radius: 4px;
}
}
@media (min-width: 768px) {
.navbar-header {
float: left;
}
}
.navbar-collapse {
padding-right: 15px;
padding-left: 15px;
overflow-x: visible;
-webkit-overflow-scrolling: touch;
border-top: 1px solid transparent;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
}
.navbar-collapse.in {
overflow-y: auto;
}
@media (min-width: 768px) {
.navbar-collapse {
width: auto;
border-top: 0;
-webkit-box-shadow: none;
box-shadow: none;
}
.navbar-collapse.collapse {
display: block !important;
height: auto !important;
padding-bottom: 0;
overflow: visible !important;
visibility: visible !important;
}
.navbar-collapse.in {
overflow-y: visible;
}
.navbar-fixed-top .navbar-collapse,
.navbar-static-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
padding-right: 0;
padding-left: 0;
}
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
max-height: 340px;
}
@media (max-device-width: 480px) and (orientation: landscape) {
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
max-height: 200px;
}
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
margin-right: -15px;
margin-left: -15px;
}
@media (min-width: 768px) {
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
margin-right: 0;
margin-left: 0;
}
}
.navbar-static-top {
z-index: 1000;
border-width: 0 0 1px;
}
@media (min-width: 768px) {
.navbar-static-top {
border-radius: 0;
}
}
.navbar-fixed-top,
.navbar-fixed-bottom {
position: fixed;
right: 0;
left: 0;
z-index: 1030;
}
@media (min-width: 768px) {
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
}
.navbar-fixed-top {
top: 0;
border-width: 0 0 1px;
}
.navbar-fixed-bottom {
bottom: 0;
margin-bottom: 0;
border-width: 1px 0 0;
}
.navbar-brand {
float: left;
height: 50px;
padding: 15px 15px;
font-size: 18px;
line-height: 20px;
}
.navbar-brand:hover,
.navbar-brand:focus {
text-decoration: none;
}
.navbar-brand > img {
display: block;
}
@media (min-width: 768px) {
.navbar > .container .navbar-brand,
.navbar > .container-fluid .navbar-brand {
margin-left: -15px;
}
}
.navbar-toggle {
position: relative;
float: right;
padding: 9px 10px;
margin-top: 8px;
margin-right: 15px;
margin-bottom: 8px;
background-color: transparent;
background-image: none;
border: 1px solid transparent;
border-radius: 4px;
}
.navbar-toggle:focus {
outline: 0;
}
.navbar-toggle .icon-bar {
display: block;
width: 22px;
height: 2px;
border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
margin-top: 4px;
}
@media (min-width: 768px) {
.navbar-toggle {
display: none;
}
}
.navbar-nav {
margin: 7.5px -15px;
}
.navbar-nav > li > a {
padding-top: 10px;
padding-bottom: 10px;
line-height: 20px;
}
@media (max-width: 767px) {
.navbar-nav .open .dropdown-menu {
position: static;
float: none;
width: auto;
margin-top: 0;
background-color: transparent;
border: 0;
-webkit-box-shadow: none;
box-shadow: none;
}
.navbar-nav .open .dropdown-menu > li > a,
.navbar-nav .open .dropdown-menu .dropdown-header {
padding: 5px 15px 5px 25px;
}
.navbar-nav .open .dropdown-menu > li > a {
line-height: 20px;
}
.navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-nav .open .dropdown-menu > li > a:focus {
background-image: none;
}
}
@media (min-width: 768px) {
.navbar-nav {
float: left;
margin: 0;
}
.navbar-nav > li {
float: left;
}
.navbar-nav > li > a {
padding-top: 15px;
padding-bottom: 15px;
}
}
.navbar-form {
padding: 10px 15px;
margin-top: 8px;
margin-right: -15px;
margin-bottom: 8px;
margin-left: -15px;
border-top: 1px solid transparent;
border-bottom: 1px solid transparent;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
}
@media (min-width: 768px) {
.navbar-form .form-group {
display: inline-block;
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.navbar-form .form-control-static {
display: inline-block;
}
.navbar-form .input-group {
display: inline-table;
vertical-align: middle;
}
.navbar-form .input-group .input-group-addon,
.navbar-form .input-group .input-group-btn,
.navbar-form .input-group .form-control {
width: auto;
}
.navbar-form .input-group > .form-control {
width: 100%;
}
.navbar-form .control-label {
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .radio,
.navbar-form .checkbox {
display: inline-block;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .radio label,
.navbar-form .checkbox label {
padding-left: 0;
}
.navbar-form .radio input[type="radio"],
.navbar-form .checkbox input[type="checkbox"] {
position: relative;
margin-left: 0;
}
.navbar-form .has-feedback .form-control-feedback {
top: 0;
}
}
@media (max-width: 767px) {
.navbar-form .form-group {
margin-bottom: 5px;
}
.navbar-form .form-group:last-child {
margin-bottom: 0;
}
}
@media (min-width: 768px) {
.navbar-form {
width: auto;
padding-top: 0;
padding-bottom: 0;
margin-right: 0;
margin-left: 0;
border: 0;
-webkit-box-shadow: none;
box-shadow: none;
}
}
.navbar-nav > li > .dropdown-menu {
margin-top: 0;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
margin-bottom: 0;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.navbar-btn {
margin-top: 8px;
margin-bottom: 8px;
}
.navbar-btn.btn-sm {
margin-top: 10px;
margin-bottom: 10px;
}
.navbar-btn.btn-xs {
margin-top: 14px;
margin-bottom: 14px;
}
.navbar-text {
margin-top: 15px;
margin-bottom: 15px;
}
@media (min-width: 768px) {
.navbar-text {
float: left;
margin-right: 15px;
margin-left: 15px;
}
}
@media (min-width: 768px) {
.navbar-left {
float: left !important;
}
.navbar-right {
float: right !important;
margin-right: -15px;
}
.navbar-right ~ .navbar-right {
margin-right: 0;
}
}
.navbar-default {
background-color: #f8f8f8;
border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
color: #5e5e5e;
background-color: transparent;
}
.navbar-default .navbar-text {
color: #777;
}
.navbar-default .navbar-nav > li > a {
color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
color: #333;
background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
color: #555;
background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
color: #ccc;
background-color: transparent;
}
.navbar-default .navbar-toggle {
border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: #88
gitextract_ya1peyay/ ├── .editorconfig ├── .gitignore ├── .htaccess ├── README.md ├── accountdeleted.php ├── admin/ │ ├── admin.php │ ├── ads.php │ ├── configuration.php │ ├── css/ │ │ ├── bootstrap.css │ │ ├── fonts/ │ │ │ └── FontAwesome.otf │ │ ├── index.php │ │ ├── paste.css │ │ ├── responsive.css │ │ └── style.css │ ├── dashboard.php │ ├── index.php │ ├── interface.php │ ├── ipbans.php │ ├── js/ │ │ ├── bootstrap-select.js │ │ ├── bootstrap3-wysihtml5.js │ │ ├── index.php │ │ ├── jquery.dataTables.js │ │ └── plugins/ │ │ ├── ckeditor/ │ │ │ ├── CHANGES.md │ │ │ ├── LICENSE.md │ │ │ ├── README.md │ │ │ ├── adapters/ │ │ │ │ ├── index.php │ │ │ │ └── jquery.js │ │ │ ├── build-config.js │ │ │ ├── ckeditor.js │ │ │ ├── config.js │ │ │ ├── contents.css │ │ │ ├── index.php │ │ │ ├── lang/ │ │ │ │ ├── en.js │ │ │ │ └── index.php │ │ │ ├── plugins/ │ │ │ │ ├── a11yhelp/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ ├── a11yhelp.js │ │ │ │ │ └── lang/ │ │ │ │ │ ├── _translationstatus.txt │ │ │ │ │ ├── ar.js │ │ │ │ │ ├── bg.js │ │ │ │ │ ├── ca.js │ │ │ │ │ ├── cs.js │ │ │ │ │ ├── cy.js │ │ │ │ │ ├── da.js │ │ │ │ │ ├── de.js │ │ │ │ │ ├── el.js │ │ │ │ │ ├── en-gb.js │ │ │ │ │ ├── en.js │ │ │ │ │ ├── eo.js │ │ │ │ │ ├── es.js │ │ │ │ │ ├── et.js │ │ │ │ │ ├── fa.js │ │ │ │ │ ├── fi.js │ │ │ │ │ ├── fr-ca.js │ │ │ │ │ ├── fr.js │ │ │ │ │ ├── gl.js │ │ │ │ │ ├── gu.js │ │ │ │ │ ├── he.js │ │ │ │ │ ├── hi.js │ │ │ │ │ ├── hr.js │ │ │ │ │ ├── hu.js │ │ │ │ │ ├── id.js │ │ │ │ │ ├── it.js │ │ │ │ │ ├── ja.js │ │ │ │ │ ├── km.js │ │ │ │ │ ├── ko.js │ │ │ │ │ ├── ku.js │ │ │ │ │ ├── lt.js │ │ │ │ │ ├── lv.js │ │ │ │ │ ├── mk.js │ │ │ │ │ ├── mn.js │ │ │ │ │ ├── nb.js │ │ │ │ │ ├── nl.js │ │ │ │ │ ├── no.js │ │ │ │ │ ├── pl.js │ │ │ │ │ ├── pt-br.js │ │ │ │ │ ├── pt.js │ │ │ │ │ ├── ro.js │ │ │ │ │ ├── ru.js │ │ │ │ │ ├── si.js │ │ │ │ │ ├── sk.js │ │ │ │ │ ├── sl.js │ │ │ │ │ ├── sq.js │ │ │ │ │ ├── sr-latn.js │ │ │ │ │ ├── sr.js │ │ │ │ │ ├── sv.js │ │ │ │ │ ├── th.js │ │ │ │ │ ├── tr.js │ │ │ │ │ ├── tt.js │ │ │ │ │ ├── ug.js │ │ │ │ │ ├── uk.js │ │ │ │ │ ├── vi.js │ │ │ │ │ ├── zh-cn.js │ │ │ │ │ └── zh.js │ │ │ │ ├── about/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── about.js │ │ │ │ ├── clipboard/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── paste.js │ │ │ │ ├── colordialog/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── colordialog.js │ │ │ │ ├── dialog/ │ │ │ │ │ └── dialogDefinition.js │ │ │ │ ├── div/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── div.js │ │ │ │ ├── find/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── find.js │ │ │ │ ├── flash/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── flash.js │ │ │ │ ├── forms/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ ├── button.js │ │ │ │ │ ├── checkbox.js │ │ │ │ │ ├── form.js │ │ │ │ │ ├── hiddenfield.js │ │ │ │ │ ├── radio.js │ │ │ │ │ ├── select.js │ │ │ │ │ ├── textarea.js │ │ │ │ │ └── textfield.js │ │ │ │ ├── iframe/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── iframe.js │ │ │ │ ├── image/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── image.js │ │ │ │ ├── index.php │ │ │ │ ├── link/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ ├── anchor.js │ │ │ │ │ └── link.js │ │ │ │ ├── liststyle/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── liststyle.js │ │ │ │ ├── pastefromword/ │ │ │ │ │ └── filter/ │ │ │ │ │ └── default.js │ │ │ │ ├── preview/ │ │ │ │ │ └── preview.html │ │ │ │ ├── scayt/ │ │ │ │ │ ├── LICENSE.md │ │ │ │ │ ├── README.md │ │ │ │ │ └── dialogs/ │ │ │ │ │ ├── options.js │ │ │ │ │ └── toolbar.css │ │ │ │ ├── smiley/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── smiley.js │ │ │ │ ├── specialchar/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ ├── lang/ │ │ │ │ │ │ ├── _translationstatus.txt │ │ │ │ │ │ ├── ar.js │ │ │ │ │ │ ├── bg.js │ │ │ │ │ │ ├── ca.js │ │ │ │ │ │ ├── cs.js │ │ │ │ │ │ ├── cy.js │ │ │ │ │ │ ├── de.js │ │ │ │ │ │ ├── el.js │ │ │ │ │ │ ├── en-gb.js │ │ │ │ │ │ ├── en.js │ │ │ │ │ │ ├── eo.js │ │ │ │ │ │ ├── es.js │ │ │ │ │ │ ├── et.js │ │ │ │ │ │ ├── fa.js │ │ │ │ │ │ ├── fi.js │ │ │ │ │ │ ├── fr-ca.js │ │ │ │ │ │ ├── fr.js │ │ │ │ │ │ ├── gl.js │ │ │ │ │ │ ├── he.js │ │ │ │ │ │ ├── hr.js │ │ │ │ │ │ ├── hu.js │ │ │ │ │ │ ├── id.js │ │ │ │ │ │ ├── it.js │ │ │ │ │ │ ├── ja.js │ │ │ │ │ │ ├── km.js │ │ │ │ │ │ ├── ku.js │ │ │ │ │ │ ├── lv.js │ │ │ │ │ │ ├── nb.js │ │ │ │ │ │ ├── nl.js │ │ │ │ │ │ ├── no.js │ │ │ │ │ │ ├── pl.js │ │ │ │ │ │ ├── pt-br.js │ │ │ │ │ │ ├── pt.js │ │ │ │ │ │ ├── ru.js │ │ │ │ │ │ ├── si.js │ │ │ │ │ │ ├── sk.js │ │ │ │ │ │ ├── sl.js │ │ │ │ │ │ ├── sq.js │ │ │ │ │ │ ├── sv.js │ │ │ │ │ │ ├── th.js │ │ │ │ │ │ ├── tr.js │ │ │ │ │ │ ├── tt.js │ │ │ │ │ │ ├── ug.js │ │ │ │ │ │ ├── uk.js │ │ │ │ │ │ ├── vi.js │ │ │ │ │ │ ├── zh-cn.js │ │ │ │ │ │ └── zh.js │ │ │ │ │ └── specialchar.js │ │ │ │ ├── table/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── table.js │ │ │ │ ├── tabletools/ │ │ │ │ │ └── dialogs/ │ │ │ │ │ └── tableCell.js │ │ │ │ ├── templates/ │ │ │ │ │ ├── dialogs/ │ │ │ │ │ │ ├── templates.css │ │ │ │ │ │ └── templates.js │ │ │ │ │ └── templates/ │ │ │ │ │ └── default.js │ │ │ │ └── wsc/ │ │ │ │ ├── LICENSE.md │ │ │ │ ├── README.md │ │ │ │ └── dialogs/ │ │ │ │ ├── ciframe.html │ │ │ │ ├── tmpFrameset.html │ │ │ │ ├── wsc.css │ │ │ │ ├── wsc.js │ │ │ │ └── wsc_ie.js │ │ │ ├── samples/ │ │ │ │ ├── ajax.html │ │ │ │ ├── api.html │ │ │ │ ├── appendto.html │ │ │ │ ├── assets/ │ │ │ │ │ ├── outputxhtml/ │ │ │ │ │ │ └── outputxhtml.css │ │ │ │ │ ├── posteddata.php │ │ │ │ │ └── uilanguages/ │ │ │ │ │ └── languages.js │ │ │ │ ├── datafiltering.html │ │ │ │ ├── divreplace.html │ │ │ │ ├── index.html │ │ │ │ ├── index.php │ │ │ │ ├── inlineall.html │ │ │ │ ├── inlinebycode.html │ │ │ │ ├── inlinetextarea.html │ │ │ │ ├── jquery.html │ │ │ │ ├── plugins/ │ │ │ │ │ ├── dialog/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ └── my_dialog.js │ │ │ │ │ │ └── dialog.html │ │ │ │ │ ├── enterkey/ │ │ │ │ │ │ └── enterkey.html │ │ │ │ │ ├── htmlwriter/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ └── outputforflash/ │ │ │ │ │ │ │ ├── outputforflash.fla │ │ │ │ │ │ │ ├── outputforflash.swf │ │ │ │ │ │ │ └── swfobject.js │ │ │ │ │ │ ├── outputforflash.html │ │ │ │ │ │ └── outputhtml.html │ │ │ │ │ ├── magicline/ │ │ │ │ │ │ └── magicline.html │ │ │ │ │ ├── toolbar/ │ │ │ │ │ │ └── toolbar.html │ │ │ │ │ └── wysiwygarea/ │ │ │ │ │ └── fullpage.html │ │ │ │ ├── readonly.html │ │ │ │ ├── replacebyclass.html │ │ │ │ ├── replacebycode.html │ │ │ │ ├── sample.css │ │ │ │ ├── sample.js │ │ │ │ ├── sample_posteddata.php │ │ │ │ ├── tabindex.html │ │ │ │ ├── uicolor.html │ │ │ │ ├── uilanguages.html │ │ │ │ └── xhtmlstyle.html │ │ │ ├── skins/ │ │ │ │ ├── index.php │ │ │ │ └── moono/ │ │ │ │ ├── dialog.css │ │ │ │ ├── dialog_ie.css │ │ │ │ ├── dialog_ie7.css │ │ │ │ ├── dialog_ie8.css │ │ │ │ ├── dialog_iequirks.css │ │ │ │ ├── editor.css │ │ │ │ ├── editor_gecko.css │ │ │ │ ├── editor_ie.css │ │ │ │ ├── editor_ie7.css │ │ │ │ ├── editor_ie8.css │ │ │ │ ├── editor_iequirks.css │ │ │ │ └── readme.md │ │ │ └── styles.js │ │ └── index.php │ ├── pages.php │ ├── pastes.php │ ├── sitemap.php │ ├── stats.php │ ├── tasks.php │ ├── test_mail.php │ └── users.php ├── archive.php ├── config.php ├── docs/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── OAUTH │ ├── config.example.php │ ├── nginx.example.conf │ ├── old-paste.mysqlschema.sql │ └── paste.mysqlschema.sql ├── includes/ │ ├── Highlight/ │ │ ├── HighlightResult.php │ │ ├── Highlighter.php │ │ ├── JsonRef.php │ │ ├── Language.php │ │ ├── Mode.php │ │ ├── README │ │ ├── RegEx.php │ │ ├── RegExMatch.php │ │ ├── RegExUtils.php │ │ ├── Terminators.php │ │ ├── bootstrap.php │ │ ├── languages/ │ │ │ ├── 1c.json │ │ │ ├── abnf.json │ │ │ ├── accesslog.json │ │ │ ├── actionscript.json │ │ │ ├── ada.json │ │ │ ├── angelscript.json │ │ │ ├── apache.json │ │ │ ├── applescript.json │ │ │ ├── arcade.json │ │ │ ├── arduino.json │ │ │ ├── armasm.json │ │ │ ├── asciidoc.json │ │ │ ├── aspectj.json │ │ │ ├── autohotkey.json │ │ │ ├── autoit.json │ │ │ ├── avrasm.json │ │ │ ├── awk.json │ │ │ ├── axapta.json │ │ │ ├── bash.json │ │ │ ├── basic.json │ │ │ ├── bnf.json │ │ │ ├── brainfuck.json │ │ │ ├── cal.json │ │ │ ├── capnproto.json │ │ │ ├── ceylon.json │ │ │ ├── clean.json │ │ │ ├── clojure-repl.json │ │ │ ├── clojure.json │ │ │ ├── cmake.json │ │ │ ├── coffeescript.json │ │ │ ├── coq.json │ │ │ ├── cos.json │ │ │ ├── cpp.json │ │ │ ├── crmsh.json │ │ │ ├── crystal.json │ │ │ ├── cs.json │ │ │ ├── csp.json │ │ │ ├── css.json │ │ │ ├── d.json │ │ │ ├── dart.json │ │ │ ├── delphi.json │ │ │ ├── diff.json │ │ │ ├── django.json │ │ │ ├── dns.json │ │ │ ├── dockerfile.json │ │ │ ├── dos.json │ │ │ ├── dsconfig.json │ │ │ ├── dts.json │ │ │ ├── dust.json │ │ │ ├── ebnf.json │ │ │ ├── elixir.json │ │ │ ├── elm.json │ │ │ ├── erb.json │ │ │ ├── erlang-repl.json │ │ │ ├── erlang.json │ │ │ ├── excel.json │ │ │ ├── fix.json │ │ │ ├── flix.json │ │ │ ├── fortran.json │ │ │ ├── fsharp.json │ │ │ ├── gams.json │ │ │ ├── gauss.json │ │ │ ├── gcode.json │ │ │ ├── gherkin.json │ │ │ ├── glsl.json │ │ │ ├── gml.json │ │ │ ├── go.json │ │ │ ├── golo.json │ │ │ ├── gradle.json │ │ │ ├── groovy.json │ │ │ ├── haml.json │ │ │ ├── handlebars.json │ │ │ ├── haskell.json │ │ │ ├── haxe.json │ │ │ ├── hsp.json │ │ │ ├── htmlbars.json │ │ │ ├── http.json │ │ │ ├── hy.json │ │ │ ├── inform7.json │ │ │ ├── ini.json │ │ │ ├── irpf90.json │ │ │ ├── isbl.json │ │ │ ├── java.json │ │ │ ├── javascript.json │ │ │ ├── jboss-cli.json │ │ │ ├── json.json │ │ │ ├── julia-repl.json │ │ │ ├── julia.json │ │ │ ├── kotlin.json │ │ │ ├── lasso.json │ │ │ ├── ldif.json │ │ │ ├── leaf.json │ │ │ ├── less.json │ │ │ ├── lisp.json │ │ │ ├── livecodeserver.json │ │ │ ├── livescript.json │ │ │ ├── llvm.json │ │ │ ├── lsl.json │ │ │ ├── lua.json │ │ │ ├── makefile.json │ │ │ ├── markdown.json │ │ │ ├── mathematica.json │ │ │ ├── matlab.json │ │ │ ├── maxima.json │ │ │ ├── mel.json │ │ │ ├── mercury.json │ │ │ ├── mipsasm.json │ │ │ ├── mizar.json │ │ │ ├── mojolicious.json │ │ │ ├── monkey.json │ │ │ ├── moonscript.json │ │ │ ├── n1ql.json │ │ │ ├── nginx.json │ │ │ ├── nimrod.json │ │ │ ├── nix.json │ │ │ ├── nsis.json │ │ │ ├── objectivec.json │ │ │ ├── ocaml.json │ │ │ ├── openscad.json │ │ │ ├── oxygene.json │ │ │ ├── parser3.json │ │ │ ├── perl.json │ │ │ ├── pf.json │ │ │ ├── pgsql.json │ │ │ ├── php.json │ │ │ ├── plaintext.json │ │ │ ├── pony.json │ │ │ ├── powershell.json │ │ │ ├── processing.json │ │ │ ├── profile.json │ │ │ ├── prolog.json │ │ │ ├── properties.json │ │ │ ├── protobuf.json │ │ │ ├── puppet.json │ │ │ ├── purebasic.json │ │ │ ├── python.json │ │ │ ├── q.json │ │ │ ├── qml.json │ │ │ ├── r.json │ │ │ ├── reasonml.json │ │ │ ├── rib.json │ │ │ ├── roboconf.json │ │ │ ├── routeros.json │ │ │ ├── rsl.json │ │ │ ├── ruby.json │ │ │ ├── ruleslanguage.json │ │ │ ├── rust.json │ │ │ ├── sas.json │ │ │ ├── scala.json │ │ │ ├── scheme.json │ │ │ ├── scilab.json │ │ │ ├── scss.json │ │ │ ├── shell.json │ │ │ ├── smali.json │ │ │ ├── smalltalk.json │ │ │ ├── sml.json │ │ │ ├── sqf.json │ │ │ ├── sql.json │ │ │ ├── stan.json │ │ │ ├── stata.json │ │ │ ├── step21.json │ │ │ ├── stylus.json │ │ │ ├── subunit.json │ │ │ ├── swift.json │ │ │ ├── taggerscript.json │ │ │ ├── tap.json │ │ │ ├── tcl.json │ │ │ ├── tex.json │ │ │ ├── thrift.json │ │ │ ├── tp.json │ │ │ ├── twig.json │ │ │ ├── typescript.json │ │ │ ├── vala.json │ │ │ ├── vbnet.json │ │ │ ├── vbscript-html.json │ │ │ ├── vbscript.json │ │ │ ├── verilog.json │ │ │ ├── vhdl.json │ │ │ ├── vim.json │ │ │ ├── x86asm.json │ │ │ ├── xl.json │ │ │ ├── xml.json │ │ │ ├── xquery.json │ │ │ ├── yaml.json │ │ │ └── zephir.json │ │ ├── list_languages.php │ │ ├── render.php │ │ └── styles/ │ │ ├── a11y-dark.css │ │ ├── a11y-light.css │ │ ├── agate.css │ │ ├── an-old-hope.css │ │ ├── androidstudio.css │ │ ├── arduino-light.css │ │ ├── arta.css │ │ ├── ascetic.css │ │ ├── atelier-cave-dark.css │ │ ├── atelier-cave-light.css │ │ ├── atelier-dune-dark.css │ │ ├── atelier-dune-light.css │ │ ├── atelier-estuary-dark.css │ │ ├── atelier-estuary-light.css │ │ ├── atelier-forest-dark.css │ │ ├── atelier-forest-light.css │ │ ├── atelier-heath-dark.css │ │ ├── atelier-heath-light.css │ │ ├── atelier-lakeside-dark.css │ │ ├── atelier-lakeside-light.css │ │ ├── atelier-plateau-dark.css │ │ ├── atelier-plateau-light.css │ │ ├── atelier-savanna-dark.css │ │ ├── atelier-savanna-light.css │ │ ├── atelier-seaside-dark.css │ │ ├── atelier-seaside-light.css │ │ ├── atelier-sulphurpool-dark.css │ │ ├── atelier-sulphurpool-light.css │ │ ├── atom-one-dark-reasonable.css │ │ ├── atom-one-dark.css │ │ ├── atom-one-light.css │ │ ├── brown-paper.css │ │ ├── codepen-embed.css │ │ ├── color-brewer.css │ │ ├── darcula.css │ │ ├── dark.css │ │ ├── darkula.css │ │ ├── default.css │ │ ├── docco.css │ │ ├── dracula.css │ │ ├── far.css │ │ ├── foundation.css │ │ ├── github-gist.css │ │ ├── github.css │ │ ├── gml.css │ │ ├── googlecode.css │ │ ├── gradient-dark.css │ │ ├── gradient-light.css │ │ ├── grayscale.css │ │ ├── gruvbox-dark.css │ │ ├── gruvbox-light.css │ │ ├── hopscotch.css │ │ ├── hybrid.css │ │ ├── idea.css │ │ ├── ir-black.css │ │ ├── isbl-editor-dark.css │ │ ├── isbl-editor-light.css │ │ ├── kimbie.dark.css │ │ ├── kimbie.light.css │ │ ├── lightfair.css │ │ ├── lioshi.css │ │ ├── magula.css │ │ ├── mono-blue.css │ │ ├── monokai-sublime.css │ │ ├── monokai.css │ │ ├── night-owl.css │ │ ├── nnfx-dark.css │ │ ├── nnfx.css │ │ ├── nord.css │ │ ├── obsidian.css │ │ ├── ocean.css │ │ ├── paraiso-dark.css │ │ ├── paraiso-light.css │ │ ├── pojoaque.css │ │ ├── purebasic.css │ │ ├── qtcreator_dark.css │ │ ├── qtcreator_light.css │ │ ├── railscasts.css │ │ ├── rainbow.css │ │ ├── routeros.css │ │ ├── school-book.css │ │ ├── shades-of-purple.css │ │ ├── solarized-dark.css │ │ ├── solarized-light.css │ │ ├── srcery.css │ │ ├── stackoverflow-dark.css │ │ ├── stackoverflow-light.css │ │ ├── sunburst.css │ │ ├── tomorrow-night-blue.css │ │ ├── tomorrow-night-bright.css │ │ ├── tomorrow-night-eighties.css │ │ ├── tomorrow-night.css │ │ ├── tomorrow.css │ │ ├── vs.css │ │ ├── vs2015.css │ │ ├── xcode.css │ │ ├── xt256.css │ │ └── zenburn.css │ ├── Parsedown/ │ │ ├── LICENSE.txt │ │ ├── Parsedown.php │ │ └── index.php │ ├── captcha.php │ ├── captchabg/ │ │ └── index.php │ ├── fonts/ │ │ ├── captcha_code.otf │ │ └── index.php │ ├── functions.php │ ├── geshi/ │ │ ├── 4cs.php │ │ ├── 6502acme.php │ │ ├── 6502kickass.php │ │ ├── 6502tasm.php │ │ ├── 68000devpac.php │ │ ├── abap.php │ │ ├── actionscript.php │ │ ├── actionscript3.php │ │ ├── ada.php │ │ ├── aimms.php │ │ ├── algol68.php │ │ ├── apache.php │ │ ├── applescript.php │ │ ├── apt_sources.php │ │ ├── arm.php │ │ ├── asm.php │ │ ├── asp.php │ │ ├── asymptote.php │ │ ├── autoconf.php │ │ ├── autohotkey.php │ │ ├── autoit.php │ │ ├── avisynth.php │ │ ├── awk.php │ │ ├── bascomavr.php │ │ ├── bash.php │ │ ├── basic4gl.php │ │ ├── batch.php │ │ ├── bf.php │ │ ├── biblatex.php │ │ ├── bibtex.php │ │ ├── blitzbasic.php │ │ ├── bnf.php │ │ ├── boo.php │ │ ├── c.php │ │ ├── c_loadrunner.php │ │ ├── c_mac.php │ │ ├── c_winapi.php │ │ ├── caddcl.php │ │ ├── cadlisp.php │ │ ├── ceylon.php │ │ ├── cfdg.php │ │ ├── cfm.php │ │ ├── chaiscript.php │ │ ├── chapel.php │ │ ├── cil.php │ │ ├── clojure.php │ │ ├── cmake.php │ │ ├── cobol.php │ │ ├── coffeescript.php │ │ ├── cpp-qt.php │ │ ├── cpp-winapi.php │ │ ├── cpp.php │ │ ├── csharp.php │ │ ├── css.php │ │ ├── cuesheet.php │ │ ├── d.php │ │ ├── dart.php │ │ ├── dcl.php │ │ ├── dcpu16.php │ │ ├── dcs.php │ │ ├── delphi.php │ │ ├── diff.php │ │ ├── div.php │ │ ├── dos.php │ │ ├── dot.php │ │ ├── e.php │ │ ├── ecmascript.php │ │ ├── eiffel.php │ │ ├── email.php │ │ ├── epc.php │ │ ├── erlang.php │ │ ├── euphoria.php │ │ ├── ezt.php │ │ ├── f1.php │ │ ├── falcon.php │ │ ├── fo.php │ │ ├── fortran.php │ │ ├── freebasic.php │ │ ├── freeswitch.php │ │ ├── fsharp.php │ │ ├── gambas.php │ │ ├── gdb.php │ │ ├── genero.php │ │ ├── genie.php │ │ ├── gettext.php │ │ ├── glsl.php │ │ ├── gml.php │ │ ├── gnuplot.php │ │ ├── go.php │ │ ├── groovy.php │ │ ├── gwbasic.php │ │ ├── haskell.php │ │ ├── haxe.php │ │ ├── hicest.php │ │ ├── hq9plus.php │ │ ├── html4strict.php │ │ ├── html5.php │ │ ├── icon.php │ │ ├── idl.php │ │ ├── ini.php │ │ ├── inno.php │ │ ├── intercal.php │ │ ├── io.php │ │ ├── ispfpanel.php │ │ ├── j.php │ │ ├── java.php │ │ ├── java5.php │ │ ├── javascript.php │ │ ├── jcl.php │ │ ├── jquery.php │ │ ├── julia.php │ │ ├── kixtart.php │ │ ├── klonec.php │ │ ├── klonecpp.php │ │ ├── kotlin.php │ │ ├── latex.php │ │ ├── lb.php │ │ ├── ldif.php │ │ ├── lisp.php │ │ ├── llvm.php │ │ ├── locobasic.php │ │ ├── logtalk.php │ │ ├── lolcode.php │ │ ├── lotusformulas.php │ │ ├── lotusscript.php │ │ ├── lscript.php │ │ ├── lsl2.php │ │ ├── lua.php │ │ ├── m68k.php │ │ ├── magiksf.php │ │ ├── make.php │ │ ├── mapbasic.php │ │ ├── mathematica.php │ │ ├── matlab.php │ │ ├── mercury.php │ │ ├── metapost.php │ │ ├── mirc.php │ │ ├── mk-61.php │ │ ├── mmix.php │ │ ├── modula2.php │ │ ├── modula3.php │ │ ├── mpasm.php │ │ ├── mxml.php │ │ ├── mysql.php │ │ ├── nagios.php │ │ ├── netrexx.php │ │ ├── newlisp.php │ │ ├── nginx.php │ │ ├── nimrod.php │ │ ├── nsis.php │ │ ├── oberon2.php │ │ ├── objc.php │ │ ├── objeck.php │ │ ├── ocaml-brief.php │ │ ├── ocaml.php │ │ ├── octave.php │ │ ├── oobas.php │ │ ├── oorexx.php │ │ ├── oracle11.php │ │ ├── oracle8.php │ │ ├── oxygene.php │ │ ├── oz.php │ │ ├── parasail.php │ │ ├── parigp.php │ │ ├── pascal.php │ │ ├── pcre.php │ │ ├── per.php │ │ ├── perl.php │ │ ├── perl6.php │ │ ├── pf.php │ │ ├── phix.php │ │ ├── php-brief.php │ │ ├── php.php │ │ ├── pic16.php │ │ ├── pike.php │ │ ├── pixelbender.php │ │ ├── pli.php │ │ ├── plsql.php │ │ ├── postgresql.php │ │ ├── postscript.php │ │ ├── povray.php │ │ ├── powerbuilder.php │ │ ├── powershell.php │ │ ├── proftpd.php │ │ ├── progress.php │ │ ├── prolog.php │ │ ├── properties.php │ │ ├── providex.php │ │ ├── purebasic.php │ │ ├── pycon.php │ │ ├── pys60.php │ │ ├── python.php │ │ ├── q.php │ │ ├── qbasic.php │ │ ├── qml.php │ │ ├── racket.php │ │ ├── rails.php │ │ ├── rbs.php │ │ ├── rebol.php │ │ ├── reg.php │ │ ├── rexx.php │ │ ├── robots.php │ │ ├── roff.php │ │ ├── rpmspec.php │ │ ├── rsplus.php │ │ ├── ruby.php │ │ ├── rust.php │ │ ├── sas.php │ │ ├── sass.php │ │ ├── scala.php │ │ ├── scheme.php │ │ ├── scilab.php │ │ ├── scl.php │ │ ├── sdlbasic.php │ │ ├── smalltalk.php │ │ ├── smarty.php │ │ ├── spark.php │ │ ├── sparql.php │ │ ├── sql.php │ │ ├── sshconfig.php │ │ ├── standardml.php │ │ ├── stonescript.php │ │ ├── swift.php │ │ ├── systemverilog.php │ │ ├── tcl.php │ │ ├── tclegg.php │ │ ├── teraterm.php │ │ ├── texgraph.php │ │ ├── text.php │ │ ├── thinbasic.php │ │ ├── tsql.php │ │ ├── twig.php │ │ ├── typoscript.php │ │ ├── unicon.php │ │ ├── upc.php │ │ ├── urbi.php │ │ ├── uscript.php │ │ ├── vala.php │ │ ├── vb.php │ │ ├── vbnet.php │ │ ├── vbscript.php │ │ ├── vedit.php │ │ ├── verilog.php │ │ ├── vhdl.php │ │ ├── vim.php │ │ ├── visualfoxpro.php │ │ ├── visualprolog.php │ │ ├── whitespace.php │ │ ├── whois.php │ │ ├── winbatch.php │ │ ├── wolfram.php │ │ ├── xbasic.php │ │ ├── xml.php │ │ ├── xojo.php │ │ ├── xorg_conf.php │ │ ├── xpp.php │ │ ├── yaml.php │ │ ├── z80.php │ │ └── zxbasic.php │ ├── geshi.php │ ├── index.php │ ├── password.php │ ├── recaptcha.php │ └── session.php ├── index.php ├── install/ │ ├── configure.php │ ├── index.php │ ├── install.css │ ├── install.js │ ├── install.php │ ├── test.php │ └── test_configure.php ├── langs/ │ ├── bg.php │ ├── br.php │ ├── de.php │ ├── en.php │ ├── es.php │ ├── fr.php │ ├── index.php │ ├── pl.php │ ├── ru.php │ ├── zh_SC.php │ └── zh_TC.php ├── login.php ├── mail/ │ ├── composer.json │ ├── index.php │ └── mail.php ├── oauth/ │ ├── composer.json │ ├── facebook.php │ ├── google.php │ ├── google_smtp.php │ └── index.php ├── pages.php ├── paste.php ├── profile.php ├── robots.txt ├── sitemap.xml ├── theme/ │ ├── default/ │ │ ├── archive.php │ │ ├── css/ │ │ │ ├── index.php │ │ │ └── paste.css │ │ ├── errors.php │ │ ├── footer.php │ │ ├── header.php │ │ ├── img/ │ │ │ └── index.php │ │ ├── index.php │ │ ├── js/ │ │ │ ├── highlightTheme.js │ │ │ └── paste.js │ │ ├── login.php │ │ ├── main.php │ │ ├── pages.php │ │ ├── profile.php │ │ ├── sidebar.php │ │ ├── user_profile.php │ │ └── view.php │ └── index.php ├── upgrade/ │ ├── 1.9-to.2.0.php │ ├── 2.0-to.2.1.sql │ └── index.php └── user.php
SYMBOL INDEX (836 symbols across 53 files)
FILE: admin/interface.php
function str_starts_with (line 42) | function str_starts_with($haystack, $needle) {
FILE: admin/js/bootstrap-select.js
function icontains (line 27) | function icontains(haystack, needle) {
function normalizeToBase (line 37) | function normalizeToBase(text) {
function htmlEscape (line 60) | function htmlEscape(html) {
function Plugin (line 1137) | function Plugin(option, event) {
FILE: admin/js/jquery.dataTables.js
function _fnHungarianMap (line 297) | function _fnHungarianMap ( o )
function _fnCamelToHungarian (line 336) | function _fnCamelToHungarian ( src, user, force )
function _fnLanguageCompat (line 375) | function _fnLanguageCompat( lang )
function _fnCompatOpts (line 427) | function _fnCompatOpts ( init )
function _fnCompatCols (line 460) | function _fnCompatCols ( init )
function _fnBrowserDetect (line 474) | function _fnBrowserDetect( settings )
function _fnReduce (line 528) | function _fnReduce ( that, fn, init, start, end, inc )
function _fnAddColumn (line 562) | function _fnAddColumn( oSettings, nTh )
function _fnColumnOptions (line 594) | function _fnColumnOptions( oSettings, iCol, oOptions )
function _fnAdjustColumnSizing (line 715) | function _fnAdjustColumnSizing ( settings )
function _fnVisibleToColumnIndex (line 747) | function _fnVisibleToColumnIndex( oSettings, iMatch )
function _fnColumnIndexToVisible (line 765) | function _fnColumnIndexToVisible( oSettings, iMatch )
function _fnVisbleColumns (line 780) | function _fnVisbleColumns( oSettings )
function _fnGetColumns (line 794) | function _fnGetColumns( oSettings, sParam )
function _fnColumnTypes (line 813) | function _fnColumnTypes ( settings )
function _fnApplyColumnDefs (line 877) | function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
function _fnAddData (line 957) | function _fnAddData ( oSettings, aDataIn, nTr, anTds )
function _fnAddTr (line 1005) | function _fnAddTr( settings, trs )
function _fnNodeToDataIndex (line 1028) | function _fnNodeToDataIndex( oSettings, n )
function _fnNodeToColumnIndex (line 1042) | function _fnNodeToColumnIndex( oSettings, iRow, n )
function _fnGetCellData (line 1057) | function _fnGetCellData( settings, rowIdx, colIdx, type )
function _fnSetCellData (line 1104) | function _fnSetCellData( settings, rowIdx, colIdx, val )
function _fnSplitObjNotation (line 1126) | function _fnSplitObjNotation( str )
function _fnGetObjectDataFn (line 1141) | function _fnGetObjectDataFn( mSource )
function _fnSetObjectDataFn (line 1264) | function _fnSetObjectDataFn( mSource )
function _fnGetDataMaster (line 1373) | function _fnGetDataMaster ( settings )
function _fnClearTable (line 1384) | function _fnClearTable( settings )
function _fnDeleteIndex (line 1399) | function _fnDeleteIndex( a, iTarget, splice )
function _fnInvalidateRow (line 1434) | function _fnInvalidateRow( settings, rowIdx, src, column )
function _fnGetRowElements (line 1498) | function _fnGetRowElements( settings, row )
function _fnCreateTr (line 1577) | function _fnCreateTr ( oSettings, iRow, nTrIn, anTds )
function _fnRowAttributes (line 1654) | function _fnRowAttributes( row )
function _fnBuildHead (line 1688) | function _fnBuildHead( oSettings )
function _fnDrawHead (line 1774) | function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
function _fnDraw (line 1872) | function _fnDraw( oSettings )
function _fnReDraw (line 2011) | function _fnReDraw( settings, holdPosition )
function _fnAddOptionsHtml (line 2049) | function _fnAddOptionsHtml ( oSettings )
function _fnDetectHeader (line 2204) | function _fnDetectHeader ( aLayout, nThead )
function _fnGetUniqueThs (line 2279) | function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
function _fnBuildAjax (line 2318) | function _fnBuildAjax( oSettings, data, fn )
function _fnAjaxUpdate (line 2446) | function _fnAjaxUpdate( settings )
function _fnAjaxParameters (line 2477) | function _fnAjaxParameters( settings )
function _fnAjaxUpdateDraw (line 2585) | function _fnAjaxUpdateDraw ( settings, json )
function _fnAjaxDataSrc (line 2635) | function _fnAjaxDataSrc ( oSettings, json )
function _fnFeatureHtmlFilter (line 2659) | function _fnFeatureHtmlFilter ( settings )
function _fnFilterComplete (line 2740) | function _fnFilterComplete ( oSettings, oInput, iForce )
function _fnFilterCustom (line 2793) | function _fnFilterCustom( settings )
function _fnFilterColumn (line 2830) | function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, ca...
function _fnFilter (line 2860) | function _fnFilter( settings, input, force, regex, smart, caseInsensitive )
function _fnFilterCreateSearch (line 2912) | function _fnFilterCreateSearch( search, regex, smart, caseInsensitive )
function _fnEscapeRegex (line 2945) | function _fnEscapeRegex ( sVal )
function _fnFilterData (line 2956) | function _fnFilterData ( settings )
function _fnSearchToCamel (line 3029) | function _fnSearchToCamel ( obj )
function _fnSearchToHung (line 3048) | function _fnSearchToHung ( obj )
function _fnFeatureHtmlInfo (line 3064) | function _fnFeatureHtmlInfo ( settings )
function _fnUpdateInfo (line 3098) | function _fnUpdateInfo ( settings )
function _fnInfoMacros (line 3136) | function _fnInfoMacros ( settings, str )
function _fnInitialise (line 3163) | function _fnInitialise ( settings )
function _fnInitComplete (line 3244) | function _fnInitComplete ( settings, json )
function _fnLengthChange (line 3258) | function _fnLengthChange ( settings, val )
function _fnFeatureHtmlLength (line 3276) | function _fnFeatureHtmlLength ( settings )
function _fnFeatureHtmlPaginate (line 3337) | function _fnFeatureHtmlPaginate ( settings )
function _fnPageChange (line 3398) | function _fnPageChange ( settings, action, redraw )
function _fnFeatureHtmlProcessing (line 3471) | function _fnFeatureHtmlProcessing ( settings )
function _fnProcessingDisplay (line 3488) | function _fnProcessingDisplay ( settings, show )
function _fnFeatureHtmlTable (line 3503) | function _fnFeatureHtmlTable ( settings )
function _fnScrollDraw (line 3667) | function _fnScrollDraw ( settings )
function _fnApplyToChildren (line 3957) | function _fnApplyToChildren( fn, an1, an2 )
function _fnCalculateColumnWidths (line 3996) | function _fnCalculateColumnWidths ( oSettings )
function _fnThrottle (line 4169) | function _fnThrottle( fn, freq ) {
function _fnConvertToWidth (line 4207) | function _fnConvertToWidth ( width, parent )
function _fnScrollingWidthAdjust (line 4231) | function _fnScrollingWidthAdjust ( settings, n )
function _fnGetWidestNode (line 4252) | function _fnGetWidestNode( settings, colIdx )
function _fnGetMaxLenString (line 4273) | function _fnGetMaxLenString( settings, colIdx )
function _fnStringToCss (line 4297) | function _fnStringToCss( s )
function _fnScrollBarWidth (line 4321) | function _fnScrollBarWidth ()
function _fnSortFlatten (line 4364) | function _fnSortFlatten ( settings )
function _fnSort (line 4432) | function _fnSort ( oSettings )
function _fnSortAria (line 4558) | function _fnSortAria ( settings )
function _fnSortListener (line 4613) | function _fnSortListener ( settings, colIdx, append, callback )
function _fnSortAttachListener (line 4684) | function _fnSortAttachListener ( settings, attachTo, colIdx, callback )
function _fnSortingClasses (line 4722) | function _fnSortingClasses( settings )
function _fnSortData (line 4755) | function _fnSortData( settings, idx )
function _fnSaveState (line 4798) | function _fnSaveState ( settings )
function _fnLoadState (line 4833) | function _fnLoadState ( settings, oInit )
function _fnSettingsFromNode (line 4908) | function _fnSettingsFromNode ( table )
function _fnLog (line 4927) | function _fnLog( settings, level, msg, tn )
function _fnMap (line 4963) | function _fnMap( ret, src, name, mappedName )
function _fnExtend (line 5005) | function _fnExtend( out, extender, breakRefs )
function _fnBindAction (line 5041) | function _fnBindAction( n, oData, fn )
function _fnCallbackReg (line 5070) | function _fnCallbackReg( oSettings, sStore, fn, sName )
function _fnCallbackFire (line 5096) | function _fnCallbackFire( settings, callbackArr, e, args )
function _fnLengthOverflow (line 5114) | function _fnLengthOverflow ( settings )
function _fnRenderer (line 5136) | function _fnRenderer( settings, type )
function _fnDataSource (line 5165) | function _fnDataSource ( settings )
function _numbers (line 13835) | function _numbers ( page, pages ) {
function _addNumericSort (line 14027) | function _addNumericSort ( decimalPlace ) {
function _fnExternApiFunc (line 14321) | function _fnExternApiFunc (fn)
FILE: admin/js/plugins/ckeditor/ckeditor.js
function a (line 6) | function a(){try{document.addEventListener?(document.removeEventListener...
function d (line 7) | function d(){for(var a;a=e.shift();)a()}
function a (line 9) | function a(a){var d=c(this);return d[a]||(d[a]=new b(a))}
function h (line 10) | function h(a,m,o,p){a={name:b,sender:this,editor:a,data:m,listenerData:c...
function i (line 10) | function i(){p.removeListener(b,d)}
function e (line 32) | function e(){c=(new Date).getTime();b=false;d()}
function a (line 75) | function a(a){var e=true;if(!a.$.id){a.$.id="cke_tmp_"+CKEDITOR.tools.ge...
function c (line 75) | function c(a,e){return"#"+a.$.id+" "+e.split(/,\s*/).join(", #"+a.$.id+"...
function b (line 75) | function b(a){for(var e=0,b=0,c=f[a].length;b<c;b++)e=e+(parseInt(this.g...
function a (line 78) | function a(){try{this.$.focus()}catch(d){}}
function a (line 90) | function a(d){var b=this.$.attributes.getNamedItem(d);if(this.getName()=...
function a (line 91) | function a(d,b,c){if(b&&b.type==CKEDITOR.NODE_ELEMENT){for(var f=[];b.da...
function p (line 100) | function p(b,e){if(/body|html/.test(a.getName()))a.getWindow().$.scrollB...
function s (line 101) | function s(a,b){var d={x:0,y:0};if(!a.is(q?"body":"html")){var e=a.$.get...
function x (line 101) | function x(a,b){return parseInt(a.getComputedStyle("margin-"+b)||0,10)||0}
function a (line 105) | function a(b,d){var c=b.childNodes;if(d>=0&&d<c.length)return c[d]}
function a (line 111) | function a(a,b){var c=this.range;if(this._.end)return null;if(!this._.st...
function c (line 113) | function c(b){for(var d,c=null;d=a.call(this,b);)c=d;return c}
function b (line 114) | function b(a){if(i(a))return false;if(a.type==CKEDITOR.NODE_TEXT)return ...
function d (line 117) | function d(a){return a&&a.getName&&a.getName()=="span"&&a.data("cke-book...
function b (line 118) | function b(a){return!g(a)&&!n(a)}
function a (line 122) | function a(){var a=false,b=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR....
function c (line 122) | function c(a){var b=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.wal...
function b (line 123) | function b(a){return function(){var b;return this[a?"getPreviousNode":"g...
function a (line 130) | function a(b){var d=b.container,c=b.offset,e;e=d;var f=c;e=e.type!=CKEDI...
function d (line 137) | function d(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("c...
function a (line 154) | function a(c){return function(a){return b(a)||(d(a)||a.type==CKEDITOR.NO...
function a (line 158) | function a(b,d){for(;b;){if(b.type==CKEDITOR.NODE_ELEMENT){if(b.getAttri...
function a (line 166) | function a(a){if(!(arguments.length<1)){this.range=a;this.forceBrBreak=0...
function c (line 166) | function c(a,b,d){for(a=a.getNextSourceNode(b,null,d);!e(a);)a=a.getNext...
function b (line 166) | function b(a){var b=[];a.forEach(function(a){if(a.getAttribute("contente...
function f (line 166) | function f(a,d,c,e){a:{e==void 0&&(e=b(c));for(var g;g=e.shift();)if(g.g...
function a (line 181) | function a(a,b,d,c,e){var f,o,a=[];for(f in b){o=b[f];o=typeof o=="boole...
function c (line 183) | function c(a,d,c,e){if(!a.match||a.match(d))if(e||n(a,d)){if(!a.properti...
function b (line 184) | function b(a,b,d){if(!a)return false;if(a===true)return true;for(var c i...
function f (line 184) | function f(a,b,c){if(!a.match||a.match(b)){if(a.noProperties)return fals...
function d (line 185) | function d(a,b){if(!a)return false;var d=false,c=a===true,e;for(e in b)i...
function e (line 185) | function e(a,b,d){if(a.disabled||a.customConfig&&!d||!b)return false;a._...
function g (line 185) | function g(a,b){if(!a)return false;if(a===true)return a;if(typeof a=="st...
function n (line 186) | function n(a,b){if(a.nothingRequired)return true;var d,c,e,f;if(e=a.requ...
function h (line 186) | function h(a,b){if(!b)return true;for(var d=0,c;d<b.length;++d){c=b[d];i...
function i (line 187) | function i(a){if(!a)return{};for(var a=a.split(/\s*,\s*/).sort(),b={};a....
function m (line 187) | function m(a){for(var b,d,c,e,f={},o=1,a=J(a);b=a.match(y);){if(d=b[2]){...
function p (line 187) | function p(a,b){var d=a.match(C[b]);return d?J(d[1]):null}
function s (line 187) | function s(a){var b=
function x (line 188) | function x(a,b,d,e){var j=0,k;if(e.toHtml)b.name=b.name.replace(ba,"$1")...
function q (line 191) | function q(a){var b=
function o (line 192) | function o(a){var b=a.attributes,d;delete b.style;delete b["class"];if(d...
function u (line 192) | function u(a){switch(a.name){case "a":if(!a.children.length&&!a.attribut...
function A (line 192) | function A(a){if(!a)return false;if(a===true)return true;
function k (line 193) | function k(){return new CKEDITOR.htmlParser.element("br")}
function l (line 193) | function l(a){return a.type==CKEDITOR.NODE_ELEMENT&&(a.name=="br"||F.$bl...
function j (line 193) | function j(a,b,d){var c=a.name;if(F.$empty[c]||!a.children.length)if(c==...
function v (line 195) | function v(a,b,d){var c,e;for(c=0;c<d.length;++c){e=d[c];if((!e.check||a...
function I (line 195) | function I(a,b){var d=b.getDefinition(),c=d.attributes,e=d.styles,f,o,j,...
function r (line 196) | function r(a,b){var d,c;if(typeof a=="string")d=a;else if(a instanceof C...
function O (line 196) | function O(a){return function(b){return I(b,a)}}
function S (line 196) | function S(a){return function(b,d){d[a](b)}}
function c (line 213) | function c(){if(this.hasFocus){this.hasFocus=false;var a=this._.editor.c...
function a (line 221) | function a(){var b;(b=c[0])&&this.load(b.scriptUrl,b.callback,CKEDITOR,0)}
function a (line 229) | function a(a,e,f){CKEDITOR.event.call(this);a=a&&CKEDITOR.tools.clone(a)...
function c (line 231) | function c(){do var a="editor"+
function b (line 232) | function b(){var a=this.commands,b;for(b in a)f(this,a[b])}
function f (line 232) | function f(a,b){b[b.startDisabled?"disable":a.readOnly&&!b.readOnly?"dis...
function d (line 232) | function d(a,b,d){if(b){var c,e,f=a.commands;for(e in f){c=f[e];(d||c.co...
function e (line 232) | function e(a){var b=a.config.customConfig;if(!b)return false;var b=CKEDI...
function g (line 233) | function g(a,b){a.on("customConfigLoaded",function(){if(b){if(b.on)for(v...
function n (line 235) | function n(a){CKEDITOR.skin.loadPart("editor",function(){h(a)})}
function h (line 235) | function h(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLangu...
function i (line 236) | function i(a){a.getStylesSet(function(b){a.once("loaded",function(){a.fi...
function m (line 236) | function m(a){var b=a.config,d=b.plugins,c=b.extraPlugins,e=b.removePlug...
function p (line 239) | function p(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT...
function a (line 260) | function a(a){return a.attributes["data-cke-survive"]?false:a.name=="a"&...
function h (line 261) | function h(a){var b;if(u.length>0)for(var d=0;d<u.length;d++){var c=u[d]...
function i (line 261) | function i(){for(;A.length;)p(A.shift(),k)}
function m (line 261) | function m(a){if(a._.isBlockLike&&a.name!="pre"&&a.name!="textarea"){var...
function p (line 262) | function p(b,d,c){var d=d||k||o,e=k;if(b.previous===void 0){if(s(d,b)){k...
function s (line 262) | function s(a,b){if((a==o||a.name=="body")&&n&&(!a.name||CKEDITOR.dtd[a.n...
function x (line 263) | function x(a,b){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$t...
function a (line 271) | function a(){this.rules=[]}
function c (line 271) | function c(b,c,d,e){var g,n;for(g in c){(n=b[g])||(n=b[g]=new a);n.add(c...
function a (line 277) | function a(a,c){function l(a){return a||CKEDITOR.env.needsNbspFiller?new...
function c (line 280) | function c(a,b){return a!=CKEDITOR.ENTER_BR&&b!==false?a==CKEDITOR.ENTER...
function b (line 280) | function b(a){for(a=a.children[a.children.length-1];a&&d(a);)a=a.previou...
function f (line 280) | function f(a){for(a=a.previous;a&&d(a);)a=a.previous;return a}
function d (line 280) | function d(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a....
function e (line 281) | function e(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in j||a.t...
function g (line 281) | function g(a,b){var d=a.children[a.children.length-1];a.children.push(b)...
function n (line 281) | function n(a){a=a.attributes;a.contenteditable!="false"&&(a["data-cke-ed...
function h (line 281) | function h(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":...
function i (line 282) | function i(a){return a.replace(S,function(a,b,d){return"<"+b+d.replace(F...
function m (line 282) | function m(a,b){return a.replace(b,function(a,b,d){a.indexOf("<textarea"...
function p (line 282) | function p(a){return a.replace(w,function(a,b){return decodeURIComponent...
function s (line 282) | function s(a){return a.replace(/<\!--(?!{cke_protected})[\s\S]+?--\>/g,
function x (line 283) | function x(a){return a.replace(/<\!--\{cke_protected\}\{C\}([\s\S]+?)--\...
function q (line 283) | function q(a,b){var d=b._.dataStore;return a.replace(/<\!--\{cke_protect...
function o (line 283) | function o(a,b){for(var d=[],c=b.config.protectedSource,e=b._.dataStore|...
function a (line 299) | function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&(...
function a (line 313) | function a(a,e,f,n){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR...
function c (line 314) | function c(){var a=this.container,b=this.element;if(a){a.clearCustomData...
function b (line 314) | function b(a){var b=a.name,c=a.element,n=a.elementMode,
function a (line 322) | function a(a){var b=a.editor,d=a.data.path,e=d.blockLimit,l=a.data.selec...
function c (line 323) | function c(a,b){if(a.isFake)return 0;var c=b.block||b.blockLimit,d=c&&c....
function b (line 324) | function b(a){var b=a.data.getTarget();if(b.is("input")){b=b.getAttribut...
function f (line 324) | function f(a){return p(a)&&s(a)}
function d (line 324) | function d(a,b){return function(c){var d=CKEDITOR.dom.element.get(c.data...
function e (line 324) | function e(a){var b,c=a.getRanges()[0],d=a.root,e={table:1,ul:1,ol:1,dl:...
function g (line 325) | function g(a){a.editor.focus();a.editor.fire("saveSnapshot")}
function n (line 325) | function n(a){var b=
function h (line 326) | function h(a,b,c){for(var d=a.getCommonAncestor(b),b=a=c?b:a;(a=a.getPar...
function a (line 350) | function a(b){return b.type==CKEDITOR.NODE_ELEMENT}
function b (line 350) | function b(c,d){var e,f,j,k,l=[],r=d.range.startContainer;e=d.range.star...
function c (line 351) | function c(b,d){var e=[],f=b.getChildren(),j=f.count(),k,l=0,r=g[d],h=!b...
function d (line 351) | function d(b){return b&&a(b)&&(b.is(g.$removeEmpty)||
function e (line 352) | function e(b,c,d,f){var j=b.clone(),k,g;j.setEndAt(c,CKEDITOR.POSITION_B...
function j (line 352) | function j(b,c){function d(b,c){if(c.isBlock&&c.isElement&&!c.node.is("b...
function a (line 363) | function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)re...
function b (line 363) | function b(a,c,d){c=a.getDocument().createElement(c);a.append(c,d);retur...
function c (line 363) | function c(a){var b=a.count(),d;for(b;b-- >0;){d=a.getItem(b);
function a (line 366) | function a(){var a=this._.fakeSelection,b;if(a){b=this.getSelection(1);i...
function c (line 366) | function c(){s=true;if(!p){b.call(this);p=CKEDITOR.tools.setTimeout(b,
function b (line 367) | function b(){p=null;if(s){CKEDITOR.tools.setTimeout(a,0,this);s=false}}
function f (line 367) | function f(a){function b(c,d){return!c||c.type==CKEDITOR.NODE_TEXT?false...
function d (line 367) | function d(a){return a.getCustomData("cke-fillingChar")}
function e (line 368) | function e(a,b){var c=a&&a.removeCustomData("cke-fillingChar");if(c){if(...
function g (line 369) | function g(a){return a.replace(/\u200B( )?/g,function(a){return a[1]?" "...
function n (line 369) | function n(a,b,c){var d=a.on("focus",function(a){a.cancel()},null,null,-...
function h (line 370) | function h(a){var b=CKEDITOR.dom.element.createFromHtml('<div data-cke-h...
function i (line 371) | function i(a){var b={37:1,39:1,8:1,46:1};return function(c){var d=c.data...
function m (line 372) | function m(a){for(var b=0;b<a.length;b++){var c=a[b];c.getCommonAncestor...
function a (line 373) | function a(b){return function(a){var c=a.editor.createRange();
function b (line 374) | function b(a){return function(b){var c=b.editor,d=c.createRange(),e;if(!...
function d (line 375) | function d(){var a=f.getSelection();a&&a.removeAllRanges()}
function b (line 378) | function b(a){a=a.data.$;if(e){var c=k.$.createTextRange();try{c.moveToP...
function c (line 378) | function c(){l.removeListener("mousemove",b);d.removeListener("mouseup",...
function a (line 391) | function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}
function a (line 410) | function a(a,b){for(var c,d;a=a.getParent();){if(a.equals(b))break;if(a....
function c (line 410) | function c(b){var d=b.document;if(b.collapsed){d=u(this,d);b.insertNode(...
function b (line 415) | function b(a){function b(){for(var a=new CKEDITOR.dom.elementPath(d.getP...
function f (line 417) | function f(a){var b=[];a.forEach(function(a){if(a.getAttribute("contente...
function d (line 418) | function d(a){var b=a.getEnclosedNode()||a.getCommonAncestor(false,true)...
function e (line 418) | function e(a){var b=a.getCommonAncestor(true,true);if(a=(new CKEDITOR.do...
function g (line 419) | function g(a){var b=a.createBookmark(true),c=a.createIterator();c.enforc...
function n (line 419) | function n(a){var b=a.createBookmark(1),c=a.createIterator();c.enforceRe...
function h (line 420) | function h(a,b){var c=!b;if(c){b=a.getDocument().createElement("div");a....
function i (line 422) | function i(a){a.getName();var b=[];m(a.getOuterHtml(),/(\S\s*)\n(?:\s|(<...
function m (line 422) | function m(a,b,c){var d="",e="",a=a.replace(/(^<span[^>]+data-cke-bookma...
function p (line 422) | function p(a,b){var c;a.length>1&&(c=new CKEDITOR.dom.documentFragment(b...
function s (line 423) | function s(a,b){var c=this._.definition,
function x (line 425) | function x(a){for(var b=l(this),c=a.getElementsByTag(this.element),d,e=c...
function q (line 425) | function q(a,b,c){if(b=b&&b.attributes)for(var d=0;d<b.length;d++){var e...
function o (line 426) | function o(a,b){if(!a.hasAttributes()||b)if(CKEDITOR.dtd.$block[a.getNam...
function u (line 427) | function u(a,b,c){var d;d=a.element;d=="*"&&(d="span");d=new CKEDITOR.do...
function A (line 427) | function A(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.get...
function k (line 427) | function k(a,b){for(var c in a)a[c]=a[c].replace(S,function(a,
function l (line 428) | function l(a){if(a._.overrides)return a._.overrides;var b=a._.overrides=...
function j (line 428) | function j(a,b,c){var d=new CKEDITOR.dom.element("span");d[c?"setStyle":...
function v (line 429) | function v(a,b,c){for(var d=a.document,e=a.getRanges(),b=b?this.removeFr...
function a (line 451) | function a(a,c,d){var e=a.serializable,g=c[d?"endContainer":"startContai...
function a (line 455) | function a(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1]||"sk...
function c (line 455) | function c(b){var c=CKEDITOR.skin["ua_"+b],d=CKEDITOR.env;if(c)for(var c...
function b (line 455) | function b(a,b){if(!e[a]){CKEDITOR.document.appendStyleSheet(c(a));e[a]=...
function f (line 456) | function f(a){var b=a.getById(g);if(!b){b=a.getHead().append("style");b....
function d (line 456) | function d(a,b,c){var d,e,f;if(CKEDITOR.env.webkit){b=b.split("}").slice...
function b (line 498) | function b(){d.$.open();var b="";f.size&&(b=f.size-(CKEDITOR.env.ie?7:0)...
function t (line 505) | function t(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(...
function u (line 505) | function u(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(...
function G (line 505) | function G(a,b){for(var c=a.$.getElementsByTagName("input"),
function P (line 506) | function P(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute("ar...
function Q (line 507) | function Q(){var a=this.getInputElement();a&&a.removeAttribute("aria-inv...
function R (line 507) | function R(a){var a=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemp...
function H (line 508) | function H(a,b,c){this.element=b;this.focusIndex=c;this.tabIndex=
function T (line 509) | function T(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow(...
function I (line 509) | function I(a,b){this._=
function U (line 510) | function U(a){function b(b){var c=a.getSize(),i=CKEDITOR.document.getWin...
function V (line 512) | function V(a){var b,c;function e(d){var e="rtl"==h.lang.dir,j=o.width,C=...
function E (line 516) | function E(a){a.data.preventDefault(1)}
function J (line 516) | function J(a){var b=CKEDITOR.document.getWindow(),c=a.config,e=c.dialog_...
function K (line 519) | function K(a){q&&(a.focusManager.remove(q),a=CKEDITOR.document.getWindow...
function c (line 521) | function c(){var a=l._.focusList;a.sort(function(a,b){return a.tabIndex!...
function e (line 521) | function e(a){var b=l._.focusList,a=a||0;if(!(1>b.length)){var c=l._.cur...
function d (line 521) | function d(b){if(l==
function g (line 523) | function g(a){o?a.data.preventDefault(1):j&&a.data.stopPropagation()}
function f (line 573) | function f(c){var a=this.att,c=c&&c.hasAttribute(a)&&c.getAttribute(a)||...
function g (line 573) | function g(){for(var c,a=0;a<arguments.length;a++)if(arguments[a]instanc...
function n (line 580) | function n(a,f,d,b){if(!a.isReadOnly()&&!a.equals(d.editable())){CKEDITO...
function r (line 581) | function r(a,f,d){var b=a.getCommonAncestor(!1,!0),a=a.clone();a.enlarge...
function m (line 581) | function m(a){return{context:"p",
function s (line 585) | function s(a){var f=a==j.setAttribute,d=a==j.removeAttribute,b=/\bdirect...
function f (line 586) | function f(b,c,d,
function v (line 594) | function v(b){function a(){var e=b.editable();e.on(p,function(b){(!CKEDI...
function w (line 605) | function w(b){if(CKEDITOR.env.webkit){if(!b.match(/^[^<]*$/g)&&!b.match(...
function x (line 606) | function x(b,a){function c(a){return CKEDITOR.tools.repeat("</p><p>",~~(...
function y (line 607) | function y(){var b=new CKEDITOR.htmlParser.filter,a={blockquote:1,dl:1,f...
function z (line 610) | function z(b,a,c){var a=new CKEDITOR.htmlParser.fragment.fromHtml(a),d=n...
function o (line 611) | function o(b,a){b.enterMode==CKEDITOR.ENTER_BR?a=a.replace(/(<\/p><p>)+/...
function e (line 623) | function e(c){var a=this._;a.state!=CKEDITOR.TRISTATE_DISABLED&&(this.cr...
function r (line 635) | function r(a,b,c,i,f){var f=CKEDITOR.tools.genKey(b.getUniqueId(),c.getU...
function f (line 635) | function f(){d.hide()}
function q (line 638) | function q(){delete this._.returnFocus;this.hide()}
function m (line 646) | function m(l,g,e,h){var j=new CKEDITOR.style(i["colorButton_"+g+"Style"]...
function o (line 648) | function o(l,g,e){var h=[],j=i.colorButton_colors.split(","),k=CKEDITOR....
function n (line 652) | function n(c){return"false"==c.getAttribute("contentEditable")||c.getAtt...
function g (line 656) | function g(a){a.sort(function(a,c){return a.group<c.group?-1:a.group>c.g...
function c (line 671) | function c(b){if((b=CKEDITOR.plugins.div.getSurroundDiv(a,b))&&!b.data("...
function w (line 676) | function w(a){function d(){for(var b=g(),e=CKEDITOR.tools.clone(a.config...
function n (line 678) | function n(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:"docum...
function n (line 690) | function n(a,c){function j(d){d=i.list[d];if(d.equals(a.editable())||"tr...
function l (line 695) | function l(c,e,b){b=c.config.forceEnterMode||b;"wysiwyg"==c.mode&&(e||(e...
function q (line 695) | function q(c){for(var c=c.getSelection().getRanges(!0),e=c.length-1;0<e;...
function j (line 703) | function j(a,b){var d={},e=[],f={nbsp:" ",shy:"",gt:">",lt:"<",amp:"&",...
function g (line 709) | function g(a,c){var d=[];if(c)for(var b in c)d.push(b+"="+encodeURICompo...
function i (line 709) | function i(a){a+="";return a.charAt(0).toUpperCase()+a.substr(1)}
function k (line 709) | function k(){var a=this.getDialog(),c=a.getParentEditor();c._.filebrowse...
function l (line 710) | function l(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=...
function m (line 710) | function m(a,c,d){var b=d.params||{};
function j (line 711) | function j(a,c,d,b){if(b&&b.length)for(var e,g=b.length;g--;)if(e=b[g],(...
function h (line 712) | function h(a,
function n (line 713) | function n(a,c){var d=this._.filebrowserSe.getDialog(),b=this._.filebrow...
function g (line 716) | function g(a,b){var c=j.exec(a),d=j.exec(b);if(c){if(!c[2]&&"px"==d[2])r...
function d (line 720) | function d(a){a=a.attributes;return"application/x-shockwave-flash"==a.ty...
function e (line 720) | function e(a,b){return a.createFakeParserElement(b,"cke_flash","flash",!0)}
function q (line 723) | function q(a){var i=a.config,l=a.fire("uiSpace",{space:"top",html:""}).h...
function g (line 739) | function g(){if(this.getState()!=CKEDITOR.TRISTATE_ON){var c=this.modes[...
function e (line 746) | function e(b,a,e,h,j,n,l,o){for(var p=b.config,k=new CKEDITOR.style(l),c...
function k (line 767) | function k(a){var d=this.editor,b=a.document,c=b.body,e=b.getElementById...
function l (line 772) | function l(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("ht...
function b (line 773) | function b(b){b&&b.removeListener();a.editable(new j(a,
function e (line 783) | function e(b,a){a||(a=b.getSelection().getSelectedElement());if(a&&a.is(...
function f (line 783) | function f(b){var a=b.getStyle("float");if("inherit"==a||"none"==a)a=0;a...
function a (line 785) | function a(a){var d=b.getCommand("justify"+a);if(d){if("left"==a||"right...
function k (line 786) | function k(a,b){var e,f;b.on("refresh",function(a){var b=[i],c;for(c in ...
function h (line 791) | function h(b,c,a){if(!b.getCustomData("indent_processed")){var d=this.ed...
function i (line 792) | function i(b,c){return"ltr"==(c||b.getComputedStyle("direction"))?"margi...
function c (line 792) | function c(b,c){a.specificDefinition.apply(this,
function s (line 795) | function s(e){function g(b){for(var f=d.startContainer,a=d.endContainer;...
function p (line 799) | function p(e,g){g||(g=e.contains(this.context));return g&&e.block&&e.blo...
function i (line 799) | function i(e){return e.type==CKEDITOR.NODE_ELEMENT&&e.is("li")}
function t (line 799) | function t(e){return u(e)&&v(e)}
function g (line 799) | function g(e,
function l (line 802) | function l(a,c){var c=void 0===c||c,b;if(c)b=a.getComputedStyle("text-al...
function g (line 802) | function g(a,c,b){this.editor=a;this.name=c;this.value=b;this.context="p...
function j (line 804) | function j(a){var c=a.editor,b=c.createRange();b.setStartBefore(a.data.n...
function m (line 813) | function m(c){return c.replace(/'/g,"\\$&")}
function n (line 813) | function n(c){for(var b,a=c.length,f=[],e=0;e<a;e++)b=c.charCodeAt(e),f....
function o (line 813) | function o(c,b){var a=c.plugins.link,f=a.compiledProtectionFunction.para...
function l (line 813) | function l(c){var c=c.config.emailProtection||"",
function c (line 814) | function c(b){return a.replace(/%1/g,"rtl"==b?"right":"left").replace(/%...
function E (line 831) | function E(c,j,e){function b(b){if((d=a[b?"getFirst":"getLast"]())&&(!d....
function x (line 832) | function x(c,j){this.name=c;this.context=this.type=j;this.allowedContent=
function A (line 833) | function A(c,j,e,b){for(var k,g;k=c[b?"getLast":"getFirst"](F);)(g=k.get...
function B (line 833) | function B(c){var j;(j=function(e){var b=c[e?"getPrevious":"getNext"](q)...
function C (line 833) | function C(c){return c.type==CKEDITOR.NODE_ELEMENT&&(c.getName()in CKEDI...
function y (line 834) | function y(c,j,e){c.fire("saveSnapshot");e.enlarge(CKEDITOR.ENLARGE_LIST...
function w (line 836) | function w(c){return(c=c.getLast(q))&&c.type==CKEDITOR.NODE_ELEMENT&&c.g...
function Q (line 857) | function Q(a,c,d){return m(c)&&m(d)&&d.equals(c.getNext(function(a){retu...
function u (line 857) | function u(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slic...
function J (line 857) | function J(a){var c=a.element;if(c&&m(c)&&(c=c.getAscendant(a.triggers,!...
function ga (line 857) | function ga(a,c,d){o(a,c);o(a,d);a=c.size.bottom;d=d.size.top;return a&&...
function r (line 857) | function r(a,c,d){return c=
function K (line 858) | function K(a,c){if(a.data("cke-editable"))return null;for(c||(a=a.getPar...
function ha (line 858) | function ha(a){var c=a.doc,d=B('<span contenteditable="false" style="'+L...
function N (line 865) | function N(a,c,d){var b=new CKEDITOR.dom.range(a.doc),e=a.editor,f;n.ie&...
function U (line 865) | function U(a,c){return{canUndo:!0,
function v (line 867) | function v(a,c){if(!c||!(c.type==CKEDITOR.NODE_ELEMENT&&c.$))return!1;va...
function m (line 867) | function m(a){return a&&
function p (line 868) | function p(a){if(!m(a))return!1;var c;if(!(c=X(a)))m(a)?(c={left:1,right...
function X (line 868) | function X(a){return!!{absolute:1,fixed:1}[a.getComputedStyle("position")]}
function G (line 868) | function G(a,c){return m(c)?c.is(a.triggers):null}
function W (line 868) | function W(a,c){if(!c)return!1;for(var d=c.getParents(1),b=d.length;b--;...
function ja (line 868) | function ja(a,c,
function Y (line 869) | function Y(a){var c=a.editable,d=a.mouse,b=a.view,e=a.triggerOffset;C(a)...
function $ (line 870) | function $(a){var c=a.mouse,d=a.view,b=a.triggerOffset,e=J(a);if(!e)retu...
function P (line 872) | function P(a,c,d,b){for(var e=function(){var b=n.ie?c.$.currentStyle:a.w...
function o (line 874) | function o(a,c,d){if(!m(c))return c.size=null;if(c.size){if(c.size.ignor...
function C (line 874) | function C(a,c){a.view.editable=P(a,a.editable,c,!0)}
function I (line 874) | function I(a,c){a.view||(a.view={});var d=a.view;if(c||!(d&&d.date>new D...
function la (line 875) | function la(a,c,d,b){for(var e=b,f=b,i=0,h=!1,g=!1,j=a.view.pane.height,...
function a (line 884) | function a(a){var b=a.element,e,f,i;if(!m(b)||b.contains(a.editable)||b....
function c (line 885) | function c(a,b){return!(b&&b.type==CKEDITOR.NODE_TEXT||A(b)||p(b)||v(a,b...
function l (line 886) | function l(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName())...
function o (line 886) | function o(a,e){if(a&&!(a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName...
function n (line 886) | function n(a,e){var f=l(a),b={},d=a.$;e||(b["class"]=d.className||
function p (line 887) | function p(a,e){var f=l(a),b=a.$;"class"in e&&(b.className=e["class"]);"...
function q (line 887) | function q(a){if(!a.editable().isInline()){var e=CKEDITOR.instances,f;fo...
function e (line 888) | function e(){var b=d.getViewPaneSize();a.resize(b.width,b.height,null,!0)}
function e (line 893) | function e(a){return{"aria-label":a,"class":"cke_pagebreak",contentedita...
function b (line 894) | function b(f){CKEDITOR.tools.extend(f.attributes,
function h (line 898) | function h(a,d,f){var b=CKEDITOR.cleanWord;b?f():(a=CKEDITOR.getUrl(a.co...
function i (line 898) | function i(a){a.data.type="html"}
function c (line 909) | function c(){b.refresh(a)}
function d (line 914) | function d(){var a=e&&this.equals(CKEDITOR.document.getActive());this.hi...
function i (line 952) | function i(c){return{editorFocus:!1,canUndo:!1,modes:{wysiwyg:1},exec:fu...
function d (line 958) | function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,ref...
function p (line 961) | function p(e){function d(a){!(0<b.length)&&(a.type==CKEDITOR.NODE_ELEMEN...
function o (line 962) | function o(e,d){for(var b=p(e),c=b[0],a=c.getAscendant("table"),c=c.getD...
function q (line 963) | function q(e){if(e instanceof CKEDITOR.dom.selection){for(var d=p(e),b=d...
function r (line 965) | function r(e,d){for(var b=d?Infinity:0,c=0;c<e.length;c++){var a;a=e[c];...
function k (line 965) | function k(e,d){for(var b=p(e),c=b[0].getAscendant("table"),a=r(b,1),b=r...
function u (line 966) | function u(e,d){var b=e.getStartElement();if(b=b.getAscendant("td",1)||b...
function t (line 966) | function t(e){if(e instanceof CKEDITOR.dom.selection){var e=p(e),d=e[0]&...
function m (line 968) | function m(e,d){var b=e.getDocument(),c=CKEDITOR.document;CKEDITOR.env.i...
function v (line 968) | function v(e,d,b){e=e[d];if("undefined"==typeof b)return e;for(d=0;e&&d<...
function s (line 968) | function s(e,
function w (line 971) | function w(e,d){var b=p(e);if(1<b.length)return!1;if(d)return!0;var b=b[...
function x (line 973) | function x(e,d){var b=p(e);if(1<b.length)return!1;if(d)return!0;var b=b[...
function d (line 974) | function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,ref...
function b (line 974) | function b(a,b){var c=e.addCommand(a,b);e.addFeature(c)}
function g (line 985) | function g(a){this.editor=a;this.reset()}
function c (line 985) | function c(a){b.enabled&&!1!==a.data.command.canUndo&&b.save()}
function d (line 985) | function d(){b.enabled=a.readOnly?!1:"wysiwyg"==a.mode;b.onChange()}
FILE: admin/js/plugins/ckeditor/plugins/clipboard/dialogs/paste.js
function h (line 5) | function h(a){var b=new CKEDITOR.dom.document(a.document),f=b.getBody(),...
FILE: admin/js/plugins/ckeditor/plugins/colordialog/dialogs/colordialog.js
function n (line 5) | function n(){f.getById(o).removeStyle("background-color");p.getContentEl...
function u (line 5) | function u(a){var a=a.data.getTarget(),b;if("td"==a.getName()&&(b=a.getC...
function y (line 5) | function y(a){for(var a=a.replace(/^#/,""),b=0,c=[];2>=b;b++)c[b]=parseI...
function v (line 6) | function v(a){!a.name&&(a=new CKEDITOR.event(a));var b=!/mouse/.test(a.n...
function q (line 6) | function q(a){if(a=!/mouse/.test(a.name)&&g){var b=a.getChild(0).getHtml...
function z (line 7) | function z(a){var b=a.data,c=b.getTarget(),e=b.getKeystroke(),d="rtl"==t...
function a (line 8) | function a(a,d){for(var s=
function b (line 9) | function b(a,c){var b=new r(a.insertCell(-1));b.setAttribute("class","Co...
FILE: admin/js/plugins/ckeditor/plugins/div/dialogs/div.js
function p (line 1) | function p(a,k,o){if(!k.is||!k.getCustomData("block_processed"))k.is&&CK...
function n (line 1) | function n(a,k){function o(){this.foreach(function(a){if(/^(?!vbox|hbox)...
FILE: admin/js/plugins/ckeditor/plugins/find/dialogs/find.js
function y (line 5) | function y(c){return c.type==CKEDITOR.NODE_TEXT&&0<c.getLength()&&(!o||!...
function s (line 5) | function s(c){return!(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary(C...
function n (line 6) | function n(a,b){var d=c.createRange();d.setStart(a.textNode,b?a.offset:a...
function q (line 6) | function q(a){var b=c.getSelection(),d=c.editable();b&&!a?(a=b.getRanges...
FILE: admin/js/plugins/ckeditor/plugins/flash/dialogs/flash.js
function b (line 5) | function b(a,b,c){var k=n[this.id];if(k)for(var f=this instanceof CKEDIT...
function c (line 6) | function c(a,b,c){var k=n[this.id];if(k)for(var f=""===this.getValue(),e...
FILE: admin/js/plugins/ckeditor/plugins/forms/dialogs/button.js
function d (line 5) | function d(a){var b=this.getValue();b?(a.attributes[this.id]=b,"name"==t...
FILE: admin/js/plugins/ckeditor/plugins/forms/dialogs/form.js
function a (line 5) | function a(b){this.setValue(b.getAttribute(this.id)||
function e (line 6) | function e(a){this.getValue()?a.setAttribute(this.id,this.getValue()):a....
FILE: admin/js/plugins/ckeditor/plugins/forms/dialogs/select.js
function h (line 5) | function h(a,b,e,d,c){a=f(a);d=d?d.createElement("OPTION"):document.crea...
function m (line 5) | function m(a){for(var a=f(a),b=g(a),e=a.getChildren().count()-1;0<=
function n (line 6) | function n(a,b,e,d){a=f(a);if(0>b)return!1;a=a.getChild(b);a.setText(e);...
function k (line 6) | function k(a){for(a=f(a);a.getChild(0)&&a.getChild(0).remove(););}
function j (line 6) | function j(a,b,e){var a=f(a),d=g(a);if(0>d)return!1;b=d+b;b=0>b?0:b;b=b>...
function g (line 6) | function g(a){return(a=f(a))?a.$.selectedIndex:-1}
function i (line 7) | function i(a,b){a=f(a);if(0>b)return null;var e=a.getChildren().count();...
function l (line 7) | function l(a){return(a=f(a))?a.getChildren():!1}
function f (line 7) | function f(a){return a&&a.domId&&a.getInputElement().$?a.getInputElement...
FILE: admin/js/plugins/ckeditor/plugins/forms/dialogs/textfield.js
function e (line 5) | function e(a){var a=a.element,c=this.getValue();c?a.setAttribute(this.id...
function f (line 5) | function f(a){this.setValue(a.hasAttribute(this.id)&&a.getAttribute(this...
FILE: admin/js/plugins/ckeditor/plugins/iframe/dialogs/iframe.js
function c (line 5) | function c(b){var c=this instanceof CKEDITOR.ui.dialog.checkbox;b.hasAtt...
function d (line 5) | function d(b){var c=""===this.getValue(),a=this instanceof CKEDITOR.ui.d...
FILE: admin/js/plugins/ckeditor/plugins/image/dialogs/image.js
function r (line 5) | function r(){var a=arguments,b=this.getContentElement("advanced","txtdlg...
function i (line 5) | function i(a){if(!s){s=1;var b=this.getDialog(),d=b.imageElement;if(d){t...
function d (line 8) | function d(a,b){var d=a.match(k);return d?
FILE: admin/js/plugins/ckeditor/plugins/link/dialogs/anchor.js
function d (line 5) | function d(a,b){return a.createFakeElement(a.document.createElement("a",...
FILE: admin/js/plugins/ckeditor/plugins/liststyle/dialogs/liststyle.js
function d (line 5) | function d(c,d){var b;try{b=c.getSelection().getRanges()[0]}catch(f){ret...
function e (line 5) | function e(c,e){var b=c.lang.liststyle;if("bulletedListStyle"==e)return{...
FILE: admin/js/plugins/ckeditor/plugins/pastefromword/filter/default.js
function y (line 5) | function y(a){for(var a=a.toUpperCase(),c=z.length,b=0,f=0;f<c;++f)for(v...
function A (line 5) | function A(a){for(var a=a.toUpperCase(),c=B.length,b=1,f=1;0<a.length;f*...
FILE: admin/js/plugins/ckeditor/plugins/table/dialogs/table.js
function r (line 5) | function r(a){for(var e=0,l=0,k=0,m,g=a.$.rows.length;k<g;k++){m=a.$.row...
function o (line 5) | function o(a){return function(){var e=this.getValue(),e=!!(CKEDITOR.dial...
function n (line 5) | function n(a,e){var l=function(g){return new CKEDITOR.dom.element(g,a.do...
FILE: admin/js/plugins/ckeditor/plugins/tabletools/dialogs/tableCell.js
function d (line 5) | function d(a){return function(b){for(var c=a(b[0]),d=1;d<b.length;d++)if...
function j (line 5) | function j(a){if(a=l.exec(a.getStyle("width")||a.getAttribute("width")))...
FILE: admin/js/plugins/ckeditor/plugins/templates/dialogs/templates.js
function o (line 5) | function o(a,b){var k=CKEDITOR.dom.element.createFromHtml('<a href="java...
function p (line 6) | function p(a){var b=CKEDITOR.dialog.getCurrent();b.getValueOf("selectTpl...
function i (line 6) | function i(a){var b=a.data.getTarget(),
FILE: admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.js
function y (line 5) | function y(a){if(!a)throw"Languages-by-groups list are required for cons...
FILE: admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc_ie.js
function c (line 5) | function c(a,c){var d=0;return function(){"function"==typeof window.doSp...
function j (line 5) | function j(c){var f=new window._SP_FCK_LangCompare,b=CKEDITOR.getUrl(a.p...
FILE: admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js
function u (line 1) | function u(){if(!s){try{var a=d.getElementsByTagName("body")[0].appendCh...
function L (line 1) | function L(a){s?a():x[x.length]=a}
function M (line 1) | function M(a){if(typeof m.addEventListener!=i)m.addEventListener("load",...
function V (line 2) | function V(){var a=d.getElementsByTagName("body")[0],b=d.createElement(r...
function D (line 2) | function D(){var a=p.length;if(0<a)for(var b=0;b<a;b++){var c=p[b].id,
function E (line 4) | function E(a){var b=null;if((a=n(a))&&"OBJECT"==a.nodeName)typeof a.SetV...
function F (line 4) | function F(){return!A&&z("6.0.65")&&(e.win||e.mac)&&!(e.wk&&312>e.wk)}
function G (line 4) | function G(a,b,c,f){A=!0;H=f||null;N={success:!1,id:c};var g=n(c);if(g){...
function W (line 6) | function W(a){if(e.ie&&e.win&&4!=a.readyState){var b=d.createElement("di...
function I (line 6) | function I(a){var b=d.createElement("div");if(e.win&&
function J (line 7) | function J(a,b,c){var f,g=n(c);if(e.wk&&312>e.wk)return f;if(g)if(typeof...
function P (line 9) | function P(a){var b=n(a);b&&"OBJECT"==b.nodeName&&(e.ie&&e.win?(b.style....
function n (line 9) | function n(a){var b=null;try{b=d.getElementById(a)}catch(c){}return b}
function U (line 10) | function U(a,b,c){a.attachEvent(b,c);v[v.length]=[a,b,c]}
function z (line 10) | function z(a){var b=e.pv,a=a.split(".");a[0]=parseInt(a[0],10);a[1]=pars...
function Q (line 10) | function Q(a,b,c,f){if(!e.ie||!e.mac){var g=d.getElementsByTagName("head...
function t (line 11) | function t(a,b){if(R){var c=b?"visible":"hidden";s&&n(a)?n(a).style.visi...
function S (line 11) | function S(a){return null!=/[\\\"<>\.;]/.exec(a)&&typeof encodeURICompon...
FILE: admin/pastes.php
function banIpAndDeletePaste (line 64) | function banIpAndDeletePaste(PDO $pdo, int $pasteId, string $nowDate): v...
function getPasteDetails (line 90) | function getPasteDetails(PDO $pdo, int $id): ?array {
FILE: admin/stats.php
function fmt_n (line 211) | function fmt_n($n){ if ($n>=1000000) return number_format($n/1000000,1)....
FILE: docs/old-paste.mysqlschema.sql
type `admin` (line 8) | CREATE TABLE `admin` (
type `admin_history` (line 20) | CREATE TABLE `admin_history` (
type `ads` (line 28) | CREATE TABLE `ads` (
type `ban_user` (line 40) | CREATE TABLE `ban_user` (
type `captcha` (line 49) | CREATE TABLE `captcha` (
type `interface` (line 65) | CREATE TABLE `interface` (
type `mail` (line 76) | CREATE TABLE `mail` (
type `pages` (line 93) | CREATE TABLE `pages` (
type `page_view` (line 104) | CREATE TABLE `page_view` (
type `pastes` (line 114) | CREATE TABLE `pastes` (
type `sitemap_options` (line 134) | CREATE TABLE `sitemap_options` (
type `site_info` (line 146) | CREATE TABLE `site_info` (
type `site_permissions` (line 167) | CREATE TABLE `site_permissions` (
type `users` (line 180) | CREATE TABLE `users` (
FILE: docs/paste.mysqlschema.sql
type `admin` (line 24) | CREATE TABLE `admin` (
type `admin_history` (line 36) | CREATE TABLE `admin_history` (
type `ads` (line 48) | CREATE TABLE `ads` (
type `ban_user` (line 61) | CREATE TABLE `ban_user` (
type `captcha` (line 73) | CREATE TABLE `captcha` (
type `interface` (line 91) | CREATE TABLE `interface` (
type `mail` (line 103) | CREATE TABLE `mail` (
type `mail_log` (line 124) | CREATE TABLE `mail_log` (
type `pages` (line 137) | CREATE TABLE `pages` (
type `page_view` (line 155) | CREATE TABLE `page_view` (
type `pastes` (line 168) | CREATE TABLE `pastes` (
type `paste_views` (line 191) | CREATE TABLE `paste_views` (
type `sitemap_options` (line 204) | CREATE TABLE `sitemap_options` (
type `site_info` (line 216) | CREATE TABLE `site_info` (
type `site_permissions` (line 237) | CREATE TABLE `site_permissions` (
type `users` (line 249) | CREATE TABLE `users` (
type `visitor_ips` (line 277) | CREATE TABLE `visitor_ips` (
FILE: includes/Highlight/HighlightResult.php
class HighlightResult (line 37) | abstract class HighlightResult
FILE: includes/Highlight/Highlighter.php
class Highlighter (line 41) | class Highlighter
method __construct (line 101) | public function __construct($loadAllLanguages = true)
method listBundledLanguages (line 129) | public static function listBundledLanguages()
method listRegisteredLanguages (line 180) | public static function listRegisteredLanguages($includeAliases = false)
method registerAllLanguages (line 200) | public static function registerAllLanguages()
method registerLanguage (line 238) | public static function registerLanguage($languageId, $filePath, $overw...
method clearAllLanguages (line 264) | public static function clearAllLanguages()
method testRe (line 277) | private function testRe($re, $lexeme)
method escapeRe (line 295) | private function escapeRe($value)
method endOfMode (line 306) | private function endOfMode($mode, $lexeme)
method keywordMatch (line 329) | private function keywordMatch($mode, $match)
method buildSpan (line 344) | private function buildSpan($className, $insideSpan, $leaveOpen = false...
method escape (line 368) | private function escape($value)
method processKeywords (line 376) | private function processKeywords()
method processSubLanguage (line 408) | private function processSubLanguage()
method processBuffer (line 461) | private function processBuffer()
method startNewMode (line 477) | private function startNewMode($mode)
method doBeginMatch (line 491) | private function doBeginMatch($match)
method doEndMatch (line 521) | private function doEndMatch($match)
method processLexeme (line 571) | private function processLexeme($textBeforeMatch, $match = null)
method replaceTabs (line 633) | private function replaceTabs($code)
method setAutodetectLanguages (line 654) | public function setAutodetectLanguages(array $set)
method getTabReplace (line 664) | public function getTabReplace()
method setTabReplace (line 677) | public function setTabReplace($tabReplace)
method getClassPrefix (line 687) | public function getClassPrefix()
method setClassPrefix (line 699) | public function setClassPrefix($classPrefix)
method enableSafeMode (line 709) | public function enableSafeMode()
method disableSafeMode (line 719) | public function disableSafeMode()
method getLanguage (line 729) | private function getLanguage($name)
method autoDetection (line 747) | private function autoDetection($name)
method highlight (line 774) | public function highlight($languageName, $code, $ignoreIllegals = true...
method highlightAuto (line 873) | public function highlightAuto($code, $languageSubset = null)
method getAliasesForLanguage (line 930) | public function getAliasesForLanguage($name)
FILE: includes/Highlight/JsonRef.php
class JsonRef (line 77) | class JsonRef
method getPaths (line 95) | private function getPaths(&$s, $r = "#")
method resolvePathReferences (line 117) | private function resolvePathReferences(&$s, $limit = 20, $depth = 1)
method decodeRef (line 143) | public function decodeRef(&$json)
FILE: includes/Highlight/Language.php
class Language (line 48) | class Language extends Mode
method __construct (line 65) | public function __construct($lang, $filePath)
method __get (line 86) | public function __get($name)
method langRe (line 101) | private function langRe($value, $global = false)
method inherit (line 114) | private function inherit($params, $_ = array())
method dependencyOnParent (line 139) | private function dependencyOnParent($mode)
method expandOrCloneMode (line 157) | private function expandOrCloneMode($mode)
method compileMode (line 196) | private function compileMode($mode, $parent = null)
method compileKeywords (line 287) | private function compileKeywords($rawKeywords, $caseSensitive)
method splitAndCompile (line 311) | private function splitAndCompile($className, $str, array &$compiledKey...
method scoreForKeyword (line 332) | private function scoreForKeyword($keyword, $providedScore)
method commonKeyword (line 346) | private function commonKeyword($word)
method compile (line 360) | public function compile($safeMode)
FILE: includes/Highlight/Mode.php
class Mode (line 79) | abstract class Mode extends \stdClass
method _normalize (line 92) | public static function _normalize(&$obj)
FILE: includes/Highlight/RegEx.php
class RegEx (line 41) | final class RegEx
method __construct (line 56) | public function __construct($regex)
method __toString (line 61) | public function __toString()
method exec (line 75) | public function exec($str)
FILE: includes/Highlight/RegExMatch.php
class RegExMatch (line 40) | class RegExMatch implements \ArrayAccess, \Countable, \IteratorAggregate
method __construct (line 60) | public function __construct(array $results)
method getIterator (line 68) | #[\ReturnTypeWillChange]
method offsetExists (line 77) | #[\ReturnTypeWillChange]
method offsetGet (line 86) | #[\ReturnTypeWillChange]
method offsetSet (line 95) | #[\ReturnTypeWillChange]
method offsetUnset (line 104) | #[\ReturnTypeWillChange]
method count (line 115) | #[\ReturnTypeWillChange]
FILE: includes/Highlight/RegExUtils.php
class RegExUtils (line 37) | abstract class RegExUtils
method langRe (line 46) | public static function langRe($value, $global, $case_insensitive)
FILE: includes/Highlight/Terminators.php
class Terminators (line 10) | final class Terminators
method __construct (line 36) | public function __construct($caseInsensitive)
method _buildModeRegex (line 48) | public function _buildModeRegex($mode)
method exec (line 91) | public function exec($s)
method langRe (line 128) | private function langRe($value, $global = false)
method addRule (line 139) | private function addRule($rule, $regex)
method joinRe (line 159) | private function joinRe($regexps, $separator)
method reStr (line 222) | private function reStr($re)
method reCountMatchGroups (line 236) | private function reCountMatchGroups($re)
FILE: includes/Highlight/bootstrap.php
function make_highlighter (line 85) | function make_highlighter(): ?\Highlight\Highlighter {
FILE: includes/Highlight/list_languages.php
function highlight_lang_dir (line 28) | function highlight_lang_dir(): string {
function highlight_supported_languages (line 36) | function highlight_supported_languages(?string $dir = null): array {
FILE: includes/Highlight/render.php
function highlight_render (line 32) | function highlight_render(string $code, string $languageId = '', bool $w...
function highlight_line_css (line 69) | function highlight_line_css(): string {
FILE: includes/Parsedown/Parsedown.php
class Parsedown (line 16) | class Parsedown
method text (line 24) | function text($text)
method textElements (line 37) | protected function textElements($text)
method setBreaksEnabled (line 59) | function setBreaksEnabled($breaksEnabled)
method setMarkupEscaped (line 68) | function setMarkupEscaped($markupEscaped)
method setUrlsLinked (line 77) | function setUrlsLinked($urlsLinked)
method setSafeMode (line 86) | function setSafeMode($safeMode)
method setStrictMode (line 95) | function setStrictMode($strictMode)
method lines (line 162) | protected function lines(array $lines)
method linesElements (line 167) | protected function linesElements(array $lines)
method extractElement (line 319) | protected function extractElement(array $Component)
method isBlockContinuable (line 336) | protected function isBlockContinuable($Type)
method isBlockCompletable (line 341) | protected function isBlockCompletable($Type)
method blockCode (line 349) | protected function blockCode($Line, $Block = null)
method blockCodeContinue (line 374) | protected function blockCodeContinue($Line, $Block)
method blockCodeComplete (line 395) | protected function blockCodeComplete($Block)
method blockComment (line 403) | protected function blockComment($Line)
method blockCommentContinue (line 428) | protected function blockCommentContinue($Line, array $Block)
method blockFencedCode (line 448) | protected function blockFencedCode($Line)
method blockFencedCodeContinue (line 502) | protected function blockFencedCodeContinue($Line, $Block)
method blockFencedCodeComplete (line 531) | protected function blockFencedCodeComplete($Block)
method blockHeader (line 539) | protected function blockHeader($Line)
method blockList (line 574) | protected function blockList($Line, ?array $CurrentBlock = null)
method blockListContinue (line 643) | protected function blockListContinue($Line, array $Block)
method blockListComplete (line 729) | protected function blockListComplete(array $Block)
method blockQuote (line 748) | protected function blockQuote($Line)
method blockQuoteContinue (line 767) | protected function blockQuoteContinue($Line, array $Block)
method blockRule (line 792) | protected function blockRule($Line)
method blockSetextHeader (line 811) | protected function blockSetextHeader($Line, ?array $Block = null)
method blockMarkup (line 829) | protected function blockMarkup($Line)
method blockMarkupContinue (line 857) | protected function blockMarkupContinue($Line, array $Block)
method blockReference (line 872) | protected function blockReference($Line)
method blockTable (line 897) | protected function blockTable($Line, ?array $Block = null)
method blockTableContinue (line 1020) | protected function blockTableContinue($Line, array $Block)
method paragraph (line 1078) | protected function paragraph($Line)
method paragraphContinue (line 1093) | protected function paragraphContinue($Line, array $Block)
method line (line 1130) | public function line($text, $nonNestables = array())
method lineElements (line 1135) | protected function lineElements($text, $nonNestables = array())
method inlineText (line 1239) | protected function inlineText($text)
method inlineCode (line 1258) | protected function inlineCode($Excerpt)
method inlineEmailTag (line 1277) | protected function inlineEmailTag($Excerpt)
method inlineEmphasis (line 1307) | protected function inlineEmphasis($Excerpt)
method inlineEscapeSequence (line 1342) | protected function inlineEscapeSequence($Excerpt)
method inlineImage (line 1353) | protected function inlineImage($Excerpt)
method inlineLink (line 1388) | protected function inlineLink($Excerpt)
method inlineMarkup (line 1463) | protected function inlineMarkup($Excerpt)
method inlineSpecialCharacter (line 1495) | protected function inlineSpecialCharacter($Excerpt)
method inlineStrikethrough (line 1509) | protected function inlineStrikethrough($Excerpt)
method inlineUrl (line 1532) | protected function inlineUrl($Excerpt)
method inlineUrlTag (line 1560) | protected function inlineUrlTag($Excerpt)
method unmarkedText (line 1581) | protected function unmarkedText($text)
method handle (line 1591) | protected function handle(array $Element)
method handleElementRecursive (line 1627) | protected function handleElementRecursive(array $Element)
method handleElementsRecursive (line 1632) | protected function handleElementsRecursive(array $Elements)
method elementApplyRecursive (line 1637) | protected function elementApplyRecursive($closure, array $Element)
method elementApplyRecursiveDepthFirst (line 1653) | protected function elementApplyRecursiveDepthFirst($closure, array $El...
method elementsApplyRecursive (line 1669) | protected function elementsApplyRecursive($closure, array $Elements)
method elementsApplyRecursiveDepthFirst (line 1679) | protected function elementsApplyRecursiveDepthFirst($closure, array $E...
method element (line 1689) | protected function element(array $Element)
method elements (line 1773) | protected function elements(array $Elements)
method li (line 1803) | protected function li($lines)
method pregReplaceElements (line 1825) | protected static function pregReplaceElements($regexp, $Elements, $text)
method parse (line 1854) | function parse($text)
method sanitiseElement (line 1861) | protected function sanitiseElement(array $Element)
method filterUnsafeUrlInAttribute (line 1900) | protected function filterUnsafeUrlInAttribute(array $Element, $attribute)
method escape (line 1919) | protected static function escape($text, $allowQuotes = false)
method striAtStart (line 1924) | protected static function striAtStart($string, $needle)
method instance (line 1938) | static function instance($name = 'default')
FILE: includes/functions.php
function str_contains_polyfill (line 35) | function str_contains_polyfill(string $haystack, string $needle, bool $i...
function encrypt (line 48) | function encrypt(string $value, string $sec_key): string
function decrypt (line 61) | function decrypt(string $value, string $sec_key): ?string
function deleteMyPaste (line 84) | function deleteMyPaste(PDO $pdo, int $paste_id): bool
function getRecent (line 117) | function getRecent(PDO $pdo, int $count = 5, int $offset = 0, string $so...
function getUserRecent (line 143) | function getUserRecent(PDO $pdo, string $username, int $count = 5): array
function getUserPastes (line 167) | function getUserPastes(PDO $pdo, string $username): array
function getTotalPastes (line 198) | function getTotalPastes(PDO $pdo, string $username): int
function isValidUsername (line 211) | function isValidUsername(string $str): bool
function existingUser (line 216) | function existingUser(PDO $pdo, string $username): bool
function getPasteViewCount (line 230) | function getPasteViewCount(PDO $pdo, int $paste_id): int
function pageViewTrack (line 242) | function pageViewTrack(PDO $pdo, string $ip): void {
function updateMyView (line 276) | function updateMyView(PDO $pdo, int $paste_id): bool
function formatSize (line 302) | function formatSize($bytes) {
function conTime (line 312) | function conTime(int $timestamp): string
function getRelativeTime (line 341) | function getRelativeTime(int $seconds): string
function formatRealTime (line 369) | function formatRealTime(string $dateStr): string
function truncate (line 383) | function truncate(string $input, int $maxWords, int $maxChars): string
function doDownload (line 400) | function doDownload(int $paste_id, string $p_title, string $p_content, s...
function rawView (line 428) | function rawView(int $paste_id, string $p_title, string $p_content, stri...
function embedView (line 440) | function embedView( $paste_id, $p_title, $p_content, $p_code, $title, $b...
function getEmbedUrl (line 519) | function getEmbedUrl($paste_id, $mod_rewrite, $baseurl) {
function addToSitemap (line 527) | function addToSitemap(PDO $pdo, int $paste_id, string $priority, string ...
function is_banned (line 546) | function is_banned(PDO $pdo, string $ip): bool
function getPageByName (line 560) | function getPageByName(PDO $pdo, string $page_name): ?array
function getPageUrl (line 583) | function getPageUrl(string $page_name): string
function getNavLinks (line 598) | function getNavLinks(PDO $pdo, string $location): array
function renderNavListSimple (line 662) | function renderNavListSimple(array $links, string $separator = ''): string
function getPageContentByName (line 696) | function getPageContentByName(PDO $pdo, string $page_name): ?array
function renderBootstrapNav (line 718) | function renderBootstrapNav(array $links): string
function sanitize_allowlist_html (line 748) | function sanitize_allowlist_html(string $html): string {
FILE: includes/geshi.php
class GeSHi (line 226) | class GeSHi {
method __construct (line 560) | public function __construct($source = '', $language = '', $path = '') {
method get_version (line 576) | public function get_version()
method error (line 588) | public function error() {
method get_language_name (line 612) | public function get_language_name() {
method set_source (line 625) | public function set_source($source) {
method strip_language_name (line 636) | public function strip_language_name($language) {
method set_language (line 653) | public function set_language($language, $force_reset = false) {
method set_language_path (line 695) | public function set_language_path($path) {
method get_supported_languages (line 729) | public function get_supported_languages($full_names=false)
method get_language_fullname (line 780) | public function get_language_fullname($language)
method set_header_type (line 820) | public function set_header_type($type) {
method set_overall_style (line 841) | public function set_overall_style($style, $preserve_defaults = false) {
method set_overall_class (line 857) | public function set_overall_class($class) {
method set_overall_id (line 868) | public function set_overall_id($id) {
method enable_classes (line 879) | public function enable_classes($flag = true) {
method set_code_style (line 898) | public function set_code_style($style, $preserve_defaults = false) {
method set_line_style (line 918) | public function set_line_style($style1, $style2 = '', $preserve_defaul...
method enable_line_numbers (line 952) | public function enable_line_numbers($flag, $nth_row = 5) {
method enable_multiline_span (line 970) | public function enable_multiline_span($flag) {
method get_multiline_span (line 980) | public function get_multiline_span() {
method set_keyword_group_style (line 995) | public function set_keyword_group_style($key, $style, $preserve_defaul...
method set_keyword_group_highlighting (line 1026) | public function set_keyword_group_highlighting($key, $flag = true) {
method set_comments_style (line 1041) | public function set_comments_style($key, $style, $preserve_defaults = ...
method set_comments_highlighting (line 1066) | public function set_comments_highlighting($key, $flag = true) {
method set_escape_characters_style (line 1081) | public function set_escape_characters_style($style, $preserve_defaults...
method set_escape_characters_highlighting (line 1095) | public function set_escape_characters_highlighting($flag = true) {
method set_brackets_style (line 1113) | public function set_brackets_style($style, $preserve_defaults = false) {
method set_brackets_highlighting (line 1131) | public function set_brackets_highlighting($flag) {
method set_symbols_style (line 1146) | public function set_symbols_style($style, $preserve_defaults = false, ...
method set_symbols_highlighting (line 1166) | public function set_symbols_highlighting($flag) {
method set_strings_style (line 1185) | public function set_strings_style($style, $preserve_defaults = false, ...
method set_strings_highlighting (line 1199) | public function set_strings_highlighting($flag) {
method set_script_style (line 1214) | public function set_script_style($style, $preserve_defaults = false, $...
method set_numbers_style (line 1234) | public function set_numbers_style($style, $preserve_defaults = false, ...
method set_numbers_highlighting (line 1248) | public function set_numbers_highlighting($flag) {
method set_methods_style (line 1265) | public function set_methods_style($key, $style, $preserve_defaults = f...
method set_methods_highlighting (line 1279) | public function set_methods_highlighting($flag) {
method set_regexps_style (line 1295) | public function set_regexps_style($key, $style, $preserve_defaults = f...
method set_regexps_highlighting (line 1310) | public function set_regexps_highlighting($key, $flag) {
method set_case_sensitivity (line 1321) | public function set_case_sensitivity($key, $case) {
method set_case_keywords (line 1335) | public function set_case_keywords($case) {
method set_tab_width (line 1350) | public function set_tab_width($width) {
method set_use_language_tab_width (line 1366) | public function set_use_language_tab_width($use) {
method get_real_tab_width (line 1377) | public function get_real_tab_width() {
method enable_strict_mode (line 1394) | public function enable_strict_mode($mode = true) {
method disable_highlighting (line 1407) | public function disable_highlighting() {
method enable_highlighting (line 1421) | public function enable_highlighting($flag = true) {
method get_language_name_from_extension (line 1448) | public static function get_language_name_from_extension( $extension, $...
method load_from_file (line 1555) | public function load_from_file($file_name, $lookup = array()) {
method add_keyword (line 1571) | public function add_keyword($key, $word) {
method remove_keyword (line 1599) | public function remove_keyword($key, $word, $recompile = true) {
method add_keyword_group (line 1621) | public function add_keyword_group($key, $styles, $case_sensitive = tru...
method remove_keyword_group (line 1647) | public function remove_keyword_group ($key) {
method optimize_keyword_group (line 1664) | public function optimize_keyword_group($key) {
method set_header_content (line 1694) | public function set_header_content($content) {
method set_footer_content (line 1704) | public function set_footer_content($content) {
method set_header_content_style (line 1714) | public function set_header_content_style($style) {
method set_footer_content_style (line 1724) | public function set_footer_content_style($style) {
method enable_inner_code_block (line 1735) | public function enable_inner_code_block($flag) {
method set_url_for_keyword_group (line 1748) | public function set_url_for_keyword_group($group, $url) {
method set_link_styles (line 1760) | public function set_link_styles($type, $styles) {
method set_link_target (line 1770) | public function set_link_target($target) {
method set_important_styles (line 1784) | public function set_important_styles($styles) {
method enable_important_blocks (line 1796) | public function enable_important_blocks($flag) {
method enable_ids (line 1806) | public function enable_ids($flag = true) {
method highlight_lines_extra (line 1824) | public function highlight_lines_extra($lines, $style = null) {
method set_highlight_lines_extra_style (line 1853) | public function set_highlight_lines_extra_style($styles) {
method set_line_ending (line 1863) | public function set_line_ending($line_ending) {
method start_line_numbers_at (line 1882) | public function start_line_numbers_at($number) {
method set_encoding (line 1898) | public function set_encoding($encoding) {
method enable_keyword_links (line 1910) | public function enable_keyword_links($enable = true) {
method build_style_cache (line 1922) | protected function build_style_cache() {
method build_parse_cache (line 1972) | protected function build_parse_cache() {
method parse_code (line 2159) | public function parse_code() {
method indent (line 3121) | protected function indent(&$result) {
method change_case (line 3220) | protected function change_case($instr) {
method handle_keyword_replace (line 3240) | protected function handle_keyword_replace($match) {
method handle_regexps_callback (line 3301) | protected function handle_regexps_callback($matches) {
method handle_multiline_regexps (line 3315) | protected function handle_multiline_regexps($matches) {
method parse_non_string_part (line 3348) | protected function parse_non_string_part($stuff_to_parse) {
method set_time (line 3668) | protected function set_time($start_time, $end_time) {
method get_time (line 3680) | public function get_time() {
method merge_arrays (line 3689) | protected function merge_arrays() {
method load_language (line 3729) | protected function load_language($file_name) {
method finalise (line 3827) | protected function finalise(&$parsed_code) {
method header (line 4071) | protected function header() {
method footer (line 4150) | protected function footer() {
method replace_keywords (line 4205) | protected function replace_keywords($instr) {
method hsc (line 4289) | protected function hsc($string, $quote_style = ENT_COMPAT) {
method _genCSSName (line 4328) | protected function _genCSSName($name) {
method get_stylesheet (line 4341) | public function get_stylesheet($economy_mode = true) {
method get_line_style (line 4544) | protected function get_line_style($line) {
method optimize_regexp_list (line 4569) | protected function optimize_regexp_list($list, $regexp_delimiter = '/') {
method _optimize_regexp_list_tokens_to_string (line 4692) | protected function _optimize_regexp_list_tokens_to_string(&$tokens, $r...
function geshi_highlight (line 4743) | function geshi_highlight($string, $language, $path = null, $return = fal...
FILE: includes/geshi/algol68.php
function geshi_langfile_algol68_vars (line 64) | function geshi_langfile_algol68_vars(){
FILE: includes/password.php
function password_hash (line 35) | function password_hash($password, $algo, array $options = array()) {
function password_get_info (line 183) | function password_get_info($hash) {
function password_needs_rehash (line 209) | function password_needs_rehash($hash, $algo, array $options = array()) {
function password_verify (line 233) | function password_verify($password, $hash) {
function _strlen (line 270) | function _strlen($binary_string) {
function _substr (line 289) | function _substr($binary_string, $start, $length) {
function check (line 301) | function check() {
FILE: includes/recaptcha.php
function _recaptcha_fail (line 34) | function _recaptcha_fail(string $reasonKey = 'recaptcha_failed'): void {
function recaptcha_siteverify (line 40) | function recaptcha_siteverify(array $payload): ?array {
function verify_recaptcha_v3 (line 56) | function verify_recaptcha_v3(string $token, string $expectedAction): arr...
function verify_recaptcha_v2 (line 85) | function verify_recaptcha_v2(string $token): array {
function require_human (line 105) | function require_human(string $expectedAction): void {
FILE: install/install.php
function tableExists (line 122) | function tableExists($pdo, $table) {
function getColumnDefinition (line 131) | function getColumnDefinition($pdo, $table, $column) {
function ensureColumn (line 145) | function ensureColumn($pdo, $table, $column, $expected_def, &$output, &$...
function indexExists (line 166) | function indexExists(PDO $pdo, string $table, string $index): bool {
function fkExists (line 176) | function fkExists(PDO $pdo, string $table, string $fk): bool {
FILE: mail/mail.php
function send_mail (line 52) | function send_mail(string $to, string $subject, string $message, string ...
FILE: paste.php
function map_to_hl_lang (line 67) | function map_to_hl_lang(string $code): string {
function hl_wrap_with_lines (line 83) | function hl_wrap_with_lines(string $value, string $hlLang, array $highli...
function geshi_add_line_highlight_class (line 102) | function geshi_add_line_highlight_class(string $html, array $highlight_l...
function themed_error_render (line 121) | function themed_error_render(string $msg, int $http_code = 404, bool $sh...
function render_error_and_exit (line 144) | function render_error_and_exit(string $msg, string $http = '404'): void {
function render_password_required_and_exit (line 149) | function render_password_required_and_exit(string $msg): void {
FILE: theme/default/js/highlightTheme.js
function normId (line 10) | function normId(s) {
function findHeaderLink (line 20) | function findHeaderLink() {
function ensureLink (line 29) | function ensureLink() {
function applyTheme (line 39) | function applyTheme(obj) {
function choose (line 46) | function choose(initialId) {
function updateThemeQueryParam (line 77) | function updateThemeQueryParam(id) {
function getSelects (line 108) | function getSelects() { return Array.from(document.querySelectorAll('#hl...
function onChange (line 119) | function onChange(e) {
FILE: theme/default/js/paste.js
function lineStart (line 7) | function lineStart(value, i){ while (i > 0 && value.charCodeAt(i - 1) !=...
function lineEnd (line 9) | function lineEnd(value, i){ while (i < value.length && value.charCodeAt(...
function triggerInput (line 11) | function triggerInput(el){ try { el.dispatchEvent(new Event('input', { b...
function countLinesFast (line 13) | function countLinesFast(str){ let n = 1; for (let i=0; i<str.length; i++...
function digitsOf (line 15) | function digitsOf(n){ return Math.max(1, (n|0).toString().length) }
function initLiteEditor (line 19) | function initLiteEditor(ta, opts){
function showNotification (line 233) | function showNotification(message, isError = false, fadeOut = true) {
FILE: upgrade/2.0-to.2.1.sql
type site_permissions (line 8) | CREATE TABLE site_permissions(
FILE: user.php
function send_json (line 23) | function send_json($ok, $msg = '', $extra = []) {
Condensed preview — 869 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,884K chars).
[
{
"path": ".editorconfig",
"chars": 313,
"preview": "; This file is for unifying the coding style for different editors and IDEs.\n; More information at https://editorconfig."
},
{
"path": ".gitignore",
"chars": 1,
"preview": "\n"
},
{
"path": ".htaccess",
"chars": 693,
"preview": "Options +FollowSymLinks\nRewriteEngine on\n\n<IfModule mod_rewrite.c>\n RewriteCond %{REQUEST_FILENAME} !-f\n RewriteCond %{R"
},
{
"path": "README.md",
"chars": 7430,
"preview": "Paste 3.1\n=======\nIn progress: 3.2\n* improvements\n* integration of https://github.com/scrivo/highlight.php\n* (geshi or h"
},
{
"path": "accountdeleted.php",
"chars": 1765,
"preview": "<?php\r\n/*\r\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\r\n * demo: https://paste.boxlabs.uk/\r\n *\r\n * https"
},
{
"path": "admin/admin.php",
"chars": 23549,
"preview": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourc"
},
{
"path": "admin/ads.php",
"chars": 20196,
"preview": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourc"
},
{
"path": "admin/configuration.php",
"chars": 57142,
"preview": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourc"
},
{
"path": "admin/css/bootstrap.css",
"chars": 141389,
"preview": "/*!\n * Bootstrap v3.3.2 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://gi"
},
{
"path": "admin/css/index.php",
"chars": 0,
"preview": ""
},
{
"path": "admin/css/paste.css",
"chars": 528,
"preview": "/* Fonts */\n\t/* Open Sans */\n\t@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700i"
},
{
"path": "admin/css/responsive.css",
"chars": 626,
"preview": "@media screen and (min-width: 1024px) {\n\t.searchform{display: none;}\n\t.sidebar{display: block !important;}\n\t.captcha inp"
},
{
"path": "admin/css/style.css",
"chars": 49372,
"preview": "/* Paste admin style.css unminified */\n\nbody {\n background: #f5f5f5;\n color: #58666e;\n margin: 0;\n line-heig"
},
{
"path": "admin/dashboard.php",
"chars": 24624,
"preview": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourc"
},
{
"path": "admin/index.php",
"chars": 6513,
"preview": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourc"
},
{
"path": "admin/interface.php",
"chars": 20572,
"preview": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://ph"
},
{
"path": "admin/ipbans.php",
"chars": 16028,
"preview": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourc"
},
{
"path": "admin/js/bootstrap-select.js",
"chars": 43930,
"preview": "/*!\n * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/)\n *\n * Copyright 2013-2014 bootstrap-sel"
},
{
"path": "admin/js/bootstrap3-wysihtml5.js",
"chars": 10258,
"preview": "/* jshint expr: true */\n!(function($, wysi) {\n 'use strict';\n\n var templates = function(key, locale, options) {\n re"
},
{
"path": "admin/js/index.php",
"chars": 0,
"preview": ""
},
{
"path": "admin/js/jquery.dataTables.js",
"chars": 428560,
"preview": "/*! DataTables 1.10.2\n * ©2008-2014 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * @summary DataTables\n * @descr"
},
{
"path": "admin/js/plugins/ckeditor/CHANGES.md",
"chars": 73902,
"preview": "CKEditor 4 Changelog\r\n====================\r\n\r\n## CKEditor 4.4.2\r\n\r\nImportant Notes:\r\n\r\n* The CKEditor testing environmen"
},
{
"path": "admin/js/plugins/ckeditor/LICENSE.md",
"chars": 68193,
"preview": "Software License Agreement\r\n==========================\r\n\r\nCKEditor - The text editor for Internet - http://ckeditor.com\r"
},
{
"path": "admin/js/plugins/ckeditor/README.md",
"chars": 1344,
"preview": "CKEditor 4\n==========\n\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. \nhttp://ckeditor.com"
},
{
"path": "admin/js/plugins/ckeditor/adapters/index.php",
"chars": 0,
"preview": ""
},
{
"path": "admin/js/plugins/ckeditor/adapters/jquery.js",
"chars": 3000,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/build-config.js",
"chars": 2429,
"preview": "/**\r\n * @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n * For licensing, see LIC"
},
{
"path": "admin/js/plugins/ckeditor/ckeditor.js",
"chars": 522374,
"preview": "/*\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\nFor licensing, see LICENSE.html or http:"
},
{
"path": "admin/js/plugins/ckeditor/config.js",
"chars": 334,
"preview": "/**\n * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENS"
},
{
"path": "admin/js/plugins/ckeditor/contents.css",
"chars": 2008,
"preview": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http:/"
},
{
"path": "admin/js/plugins/ckeditor/index.php",
"chars": 0,
"preview": ""
},
{
"path": "admin/js/plugins/ckeditor/lang/en.js",
"chars": 16836,
"preview": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.html or htt"
},
{
"path": "admin/js/plugins/ckeditor/lang/index.php",
"chars": 0,
"preview": ""
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js",
"chars": 2769,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt",
"chars": 869,
"preview": "Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://cke"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js",
"chars": 3942,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js",
"chars": 3944,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js",
"chars": 4622,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js",
"chars": 4546,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js",
"chars": 4262,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/da.js",
"chars": 3958,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/de.js",
"chars": 4485,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/el.js",
"chars": 4887,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js",
"chars": 3950,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en.js",
"chars": 3947,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js",
"chars": 4801,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/es.js",
"chars": 4490,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/et.js",
"chars": 3955,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js",
"chars": 4154,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js",
"chars": 4553,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js",
"chars": 4932,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js",
"chars": 5329,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js",
"chars": 4511,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js",
"chars": 3919,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/he.js",
"chars": 3782,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js",
"chars": 3947,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js",
"chars": 4100,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js",
"chars": 4565,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/id.js",
"chars": 3942,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/it.js",
"chars": 4885,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js",
"chars": 2909,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/km.js",
"chars": 3983,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js",
"chars": 3530,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js",
"chars": 4386,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js",
"chars": 3955,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js",
"chars": 4673,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js",
"chars": 3981,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js",
"chars": 3947,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js",
"chars": 4393,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js",
"chars": 4496,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/no.js",
"chars": 4237,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js",
"chars": 4817,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js",
"chars": 4526,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js",
"chars": 4523,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js",
"chars": 4260,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js",
"chars": 4320,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/si.js",
"chars": 3735,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js",
"chars": 4471,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js",
"chars": 4426,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js",
"chars": 3991,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js",
"chars": 3950,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js",
"chars": 3945,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js",
"chars": 4281,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/th.js",
"chars": 3977,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js",
"chars": 4230,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js",
"chars": 3936,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js",
"chars": 4387,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js",
"chars": 4336,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js",
"chars": 4463,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js",
"chars": 2541,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js",
"chars": 2774,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/about/dialogs/about.js",
"chars": 1573,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/clipboard/dialogs/paste.js",
"chars": 3497,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/colordialog/dialogs/colordialog.js",
"chars": 4580,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/dialog/dialogDefinition.js",
"chars": 146,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/div/dialogs/div.js",
"chars": 4544,
"preview": "(function(){function p(a,k,o){if(!k.is||!k.getCustomData(\"block_processed\"))k.is&&CKEDITOR.dom.element.setMarker(o,k,\"b"
},
{
"path": "admin/js/plugins/ckeditor/plugins/find/dialogs/find.js",
"chars": 10403,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/flash/dialogs/flash.js",
"chars": 10018,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/button.js",
"chars": 1765,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/checkbox.js",
"chars": 2197,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/form.js",
"chars": 2081,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/hiddenfield.js",
"chars": 1737,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/radio.js",
"chars": 1979,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/select.js",
"chars": 8114,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/textarea.js",
"chars": 1972,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/textfield.js",
"chars": 3055,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/iframe/dialogs/iframe.js",
"chars": 3169,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/image/dialogs/image.js",
"chars": 20551,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/index.php",
"chars": 0,
"preview": ""
},
{
"path": "admin/js/plugins/ckeditor/plugins/link/dialogs/anchor.js",
"chars": 1618,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/link/dialogs/link.js",
"chars": 11081,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/liststyle/dialogs/liststyle.js",
"chars": 2937,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/pastefromword/filter/default.js",
"chars": 13928,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/preview/preview.html",
"chars": 159,
"preview": "<script>\r\n\r\nvar doc = document;\r\ndoc.open();\r\ndoc.write( window.opener._cke_htmlToLoad );\r\ndoc.close();\r\n\r\ndelete window"
},
{
"path": "admin/js/plugins/ckeditor/plugins/scayt/LICENSE.md",
"chars": 1476,
"preview": "Software License Agreement\r\n==========================\r\n\r\n**CKEditor SCAYT Plugin**\r\nCopyright © 2012, [CKSource](h"
},
{
"path": "admin/js/plugins/ckeditor/plugins/scayt/README.md",
"chars": 979,
"preview": "CKEditor SCAYT Plugin\r\n=====================\r\n\r\nThis plugin brings Spell Check As You Type (SCAYT) into up to CKEditor 4"
},
{
"path": "admin/js/plugins/ckeditor/plugins/scayt/dialogs/options.js",
"chars": 8661,
"preview": "CKEDITOR.dialog.add(\"scaytDialog\",function(f){var g=f.scayt,k='<p><img src=\"'+g.getLogo()+'\" /></p><p>'+g.getLocal(\"ver"
},
{
"path": "admin/js/plugins/ckeditor/plugins/scayt/dialogs/toolbar.css",
"chars": 1302,
"preview": "a\r\n{\r\n\ttext-decoration:none;\r\n\tpadding: 2px 4px 4px 6px;\r\n\tdisplay : block;\r\n\tborder-width: 1px;\r\n\tborder-style: solid;\r"
},
{
"path": "admin/js/plugins/ckeditor/plugins/smiley/dialogs/smiley.js",
"chars": 3236,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt",
"chars": 720,
"preview": "Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://cke"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ar.js",
"chars": 4542,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/bg.js",
"chars": 4541,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ca.js",
"chars": 4892,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/cs.js",
"chars": 4625,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/cy.js",
"chars": 4883,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/de.js",
"chars": 4701,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/el.js",
"chars": 4731,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js",
"chars": 4542,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/en.js",
"chars": 4539,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/eo.js",
"chars": 4007,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/es.js",
"chars": 4837,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/et.js",
"chars": 4443,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fa.js",
"chars": 3791,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fi.js",
"chars": 4570,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js",
"chars": 3158,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr.js",
"chars": 3792,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/gl.js",
"chars": 4879,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/he.js",
"chars": 4176,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/hr.js",
"chars": 4511,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/hu.js",
"chars": 3945,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/id.js",
"chars": 4548,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/it.js",
"chars": 5014,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ja.js",
"chars": 2226,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/km.js",
"chars": 4551,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ku.js",
"chars": 4704,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/lv.js",
"chars": 4695,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/nb.js",
"chars": 3387,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/nl.js",
"chars": 4716,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/no.js",
"chars": 3387,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/pl.js",
"chars": 4158,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js",
"chars": 3727,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt.js",
"chars": 4673,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ru.js",
"chars": 4623,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/si.js",
"chars": 4496,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sk.js",
"chars": 4410,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sl.js",
"chars": 4214,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sq.js",
"chars": 4843,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sv.js",
"chars": 3442,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/th.js",
"chars": 4564,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/tr.js",
"chars": 4074,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/tt.js",
"chars": 4344,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ug.js",
"chars": 4441,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/uk.js",
"chars": 4007,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/vi.js",
"chars": 4855,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js",
"chars": 2401,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh.js",
"chars": 4040,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/specialchar.js",
"chars": 4822,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/table/dialogs/table.js",
"chars": 8786,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/tabletools/dialogs/tableCell.js",
"chars": 6681,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/templates/dialogs/templates.css",
"chars": 1570,
"preview": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http:/"
},
{
"path": "admin/js/plugins/ckeditor/plugins/templates/dialogs/templates.js",
"chars": 2932,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/templates/templates/default.js",
"chars": 1468,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/plugins/wsc/LICENSE.md",
"chars": 1474,
"preview": "Software License Agreement\r\n==========================\r\n\r\n**CKEditor WSC Plugin**\r\nCopyright © 2012, [CKSource](htt"
},
{
"path": "admin/js/plugins/ckeditor/plugins/wsc/README.md",
"chars": 970,
"preview": "CKEditor WebSpellChecker Plugin\r\n===============================\r\n\r\nThis plugin brings Web Spell Checker (WSC) into CKEd"
},
{
"path": "admin/js/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html",
"chars": 1690,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\r\n<!--\r\nCopyright (c) 2003-201"
},
{
"path": "admin/js/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html",
"chars": 1935,
"preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">\r\n<!--\r\nCopyright ("
},
{
"path": "admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.css",
"chars": 1232,
"preview": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.html or http"
},
{
"path": "admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.js",
"chars": 38557,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.html or htt"
},
{
"path": "admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc_ie.js",
"chars": 3322,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.html or htt"
},
{
"path": "admin/js/plugins/ckeditor/samples/ajax.html",
"chars": 2508,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/api.html",
"chars": 6986,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/appendto.html",
"chars": 1820,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/assets/outputxhtml/outputxhtml.css",
"chars": 2143,
"preview": "/*\r\n * Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n * For licensing, see LICENSE.md or "
},
{
"path": "admin/js/plugins/ckeditor/samples/assets/posteddata.php",
"chars": 1443,
"preview": "<!DOCTYPE html>\r\n<?php\r\n/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, "
},
{
"path": "admin/js/plugins/ckeditor/samples/assets/uilanguages/languages.js",
"chars": 1353,
"preview": "/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http:"
},
{
"path": "admin/js/plugins/ckeditor/samples/datafiltering.html",
"chars": 34725,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/divreplace.html",
"chars": 4493,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/index.html",
"chars": 5637,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/index.php",
"chars": 0,
"preview": ""
},
{
"path": "admin/js/plugins/ckeditor/samples/inlineall.html",
"chars": 9999,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/inlinebycode.html",
"chars": 5994,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/inlinetextarea.html",
"chars": 4747,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/jquery.html",
"chars": 7328,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/plugins/dialog/assets/my_dialog.js",
"chars": 883,
"preview": "/**\r\n * Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n * For licensing, see LICENSE.md o"
},
{
"path": "admin/js/plugins/ckeditor/samples/plugins/dialog/dialog.html",
"chars": 7163,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/plugins/enterkey/enterkey.html",
"chars": 4149,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js",
"chars": 9166,
"preview": "var swfobject=function(){function u(){if(!s){try{var a=d.getElementsByTagName(\"body\")[0].appendChild(d.createElement(\"s"
},
{
"path": "admin/js/plugins/ckeditor/samples/plugins/htmlwriter/outputforflash.html",
"chars": 9922,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/plugins/htmlwriter/outputhtml.html",
"chars": 7135,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
},
{
"path": "admin/js/plugins/ckeditor/samples/plugins/magicline/magicline.html",
"chars": 8176,
"preview": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see L"
}
]
// ... and 669 more files (download for full content)
About this extraction
This page contains the full source code of the jordansamuel/PASTE GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 869 files (8.9 MB), approximately 2.4M tokens, and a symbol index with 836 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.