Full Code of rhymix/rhymix for AI

master a92016cf4f52 cached
4732 files
21.4 MB
5.9M tokens
11620 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (24,116K chars total). Download the full file to get everything.
Repository: rhymix/rhymix
Branch: master
Commit: a92016cf4f52
Files: 4732
Total size: 21.4 MB

Directory structure:
gitextract_2yj37nij/

├── .editorconfig
├── .gitattributes
├── .github/
│   └── workflows/
│       ├── ci.yml
│       ├── setup-mysql.sh
│       └── setup-php.sh
├── .gitignore
├── .htaccess
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── addons/
│   ├── adminlogging/
│   │   ├── adminlogging.addon.php
│   │   └── conf/
│   │       └── info.xml
│   ├── autolink/
│   │   ├── autolink.addon.php
│   │   ├── autolink.js
│   │   ├── autolink.spec.html
│   │   └── conf/
│   │       └── info.xml
│   ├── counter/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   └── counter.addon.php
│   ├── member_extra_info/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── member_extra_info.addon.php
│   │   └── member_extra_info.lib.php
│   ├── photoswipe/
│   │   ├── PhotoSwipe/
│   │   │   ├── LICENSE
│   │   │   ├── default-skin/
│   │   │   │   └── default-skin.css
│   │   │   ├── photoswipe-ui-default.js
│   │   │   ├── photoswipe.css
│   │   │   ├── photoswipe.js
│   │   │   └── pswp.html
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── photoswipe.addon.php
│   │   └── rx_photoswipe.js
│   └── point_level_icon/
│       ├── conf/
│       │   └── info.xml
│       ├── point_level_icon.addon.php
│       └── point_level_icon.lib.php
├── classes/
│   ├── cache/
│   │   └── CacheHandler.class.php
│   ├── context/
│   │   └── Context.class.php
│   ├── db/
│   │   └── DB.class.php
│   ├── display/
│   │   ├── DisplayHandler.class.php
│   │   ├── HTMLDisplayHandler.php
│   │   ├── JSCallbackDisplayHandler.php
│   │   ├── JSONDisplayHandler.php
│   │   ├── RawDisplayHandler.php
│   │   ├── VirtualXMLDisplayHandler.php
│   │   └── XMLDisplayHandler.php
│   ├── editor/
│   │   └── EditorHandler.class.php
│   ├── extravar/
│   │   └── Extravar.class.php
│   ├── file/
│   │   ├── FileHandler.class.php
│   │   └── FileObject.class.php
│   ├── frontendfile/
│   │   └── FrontEndFileHandler.class.php
│   ├── handler/
│   │   └── Handler.class.php
│   ├── httprequest/
│   │   └── XEHttpRequest.class.php
│   ├── mail/
│   │   └── Mail.class.php
│   ├── mobile/
│   │   └── Mobile.class.php
│   ├── module/
│   │   ├── ModuleHandler.class.php
│   │   └── ModuleObject.class.php
│   ├── object/
│   │   └── Object.class.php
│   ├── page/
│   │   └── PageHandler.class.php
│   ├── security/
│   │   ├── EmbedFilter.class.php
│   │   ├── IpFilter.class.php
│   │   ├── Password.class.php
│   │   ├── Purifier.class.php
│   │   ├── Security.class.php
│   │   └── UploadFileFilter.class.php
│   ├── template/
│   │   └── TemplateHandler.class.php
│   ├── validator/
│   │   └── Validator.class.php
│   ├── widget/
│   │   └── WidgetHandler.class.php
│   └── xml/
│       ├── GeneralXmlParser.class.php
│       ├── XmlGenerator.class.php
│       ├── XmlJsFilter.class.php
│       ├── XmlLangParser.class.php
│       └── XmlParser.class.php
├── codeception.dist.yml
├── common/
│   ├── autoload.php
│   ├── composer.json
│   ├── constants.php
│   ├── css/
│   │   ├── bootstrap-responsive.css
│   │   ├── bootstrap.css
│   │   ├── rhymix.scss
│   │   └── xeicon/
│   │       ├── README.md
│   │       └── xeicon.css
│   ├── defaults/
│   │   ├── blacklist.php
│   │   ├── cloudflare.php
│   │   ├── config.php
│   │   ├── countries.php
│   │   ├── korea.ipv4.php
│   │   ├── korea.ipv6.php
│   │   ├── korea_ip_ranges/
│   │   │   ├── korea.ipv4.parser.php
│   │   │   └── korea.ipv6.parser.php
│   │   ├── locales.php
│   │   ├── plugins.php
│   │   ├── reserved.php
│   │   └── whitelist.php
│   ├── framework/
│   │   ├── Cache.php
│   │   ├── Calendar.php
│   │   ├── Config.php
│   │   ├── Cookie.php
│   │   ├── DB.php
│   │   ├── DateTime.php
│   │   ├── Debug.php
│   │   ├── Exception.php
│   │   ├── Formatter.php
│   │   ├── HTTP.php
│   │   ├── Image.php
│   │   ├── Korea.php
│   │   ├── Lang.php
│   │   ├── MIME.php
│   │   ├── Mail.php
│   │   ├── Pagination.php
│   │   ├── Password.php
│   │   ├── Push.php
│   │   ├── Queue.php
│   │   ├── Request.php
│   │   ├── Router.php
│   │   ├── SMS.php
│   │   ├── Security.php
│   │   ├── Session.php
│   │   ├── Storage.php
│   │   ├── Template.php
│   │   ├── Timer.php
│   │   ├── UA.php
│   │   ├── URL.php
│   │   ├── drivers/
│   │   │   ├── CacheInterface.php
│   │   │   ├── MailInterface.php
│   │   │   ├── PushInterface.php
│   │   │   ├── QueueInterface.php
│   │   │   ├── SMSInterface.php
│   │   │   ├── cache/
│   │   │   │   ├── apc.php
│   │   │   │   ├── dummy.php
│   │   │   │   ├── file.php
│   │   │   │   ├── memcached.php
│   │   │   │   ├── redis.php
│   │   │   │   └── sqlite.php
│   │   │   ├── mail/
│   │   │   │   ├── base.php
│   │   │   │   ├── brevo.php
│   │   │   │   ├── dummy.php
│   │   │   │   ├── mailfunction.php
│   │   │   │   ├── mailgun.php
│   │   │   │   ├── mandrill.php
│   │   │   │   ├── ncloud_mailer.php
│   │   │   │   ├── postmark.php
│   │   │   │   ├── sendgrid.php
│   │   │   │   ├── ses.php
│   │   │   │   ├── smtp.php
│   │   │   │   ├── sparkpost.php
│   │   │   │   └── woorimail.php
│   │   │   ├── push/
│   │   │   │   ├── apns.php
│   │   │   │   ├── base.php
│   │   │   │   ├── fcm.php
│   │   │   │   └── fcmv1.php
│   │   │   ├── queue/
│   │   │   │   ├── db.php
│   │   │   │   ├── dummy.php
│   │   │   │   └── redis.php
│   │   │   └── sms/
│   │   │       ├── base.php
│   │   │       ├── coolsms.php
│   │   │       ├── dummy.php
│   │   │       ├── iwinv.php
│   │   │       ├── ncloud_sens.php
│   │   │       ├── ppurio.php
│   │   │       ├── solapi.php
│   │   │       └── twilio.php
│   │   ├── exceptions/
│   │   │   ├── DBError.php
│   │   │   ├── FeatureDisabled.php
│   │   │   ├── InvalidRequest.php
│   │   │   ├── MustLogin.php
│   │   │   ├── NotPermitted.php
│   │   │   ├── QueryError.php
│   │   │   ├── SecurityViolation.php
│   │   │   └── TargetNotFound.php
│   │   ├── filters/
│   │   │   ├── FileContentFilter.php
│   │   │   ├── FilenameFilter.php
│   │   │   ├── HTMLFilter.php
│   │   │   ├── IpFilter.php
│   │   │   └── MediaFilter.php
│   │   ├── helpers/
│   │   │   ├── CacheItemHelper.php
│   │   │   ├── CacheItemPoolHelper.php
│   │   │   ├── ConfigHelper.php
│   │   │   ├── DBHelper.php
│   │   │   ├── DBResultHelper.php
│   │   │   ├── DBStmtHelper.php
│   │   │   ├── HTTPHelper.php
│   │   │   └── SessionHelper.php
│   │   ├── i18n.php
│   │   └── parsers/
│   │       ├── AddonInfoParser.php
│   │       ├── BaseParser.php
│   │       ├── ConfigParser.php
│   │       ├── DBQueryParser.php
│   │       ├── DBTableParser.php
│   │       ├── EditorComponentParser.php
│   │       ├── LangParser.php
│   │       ├── LayoutInfoParser.php
│   │       ├── ModuleActionParser.php
│   │       ├── ModuleInfoParser.php
│   │       ├── RulesetParser.php
│   │       ├── SkinInfoParser.php
│   │       ├── WidgetInfoParser.php
│   │       ├── WidgetStyleInfoParser.php
│   │       ├── XEXMLParser.php
│   │       ├── XMLRPCParser.php
│   │       ├── dbquery/
│   │       │   ├── ColumnRead.php
│   │       │   ├── ColumnWrite.php
│   │       │   ├── Condition.php
│   │       │   ├── ConditionGroup.php
│   │       │   ├── EmptyString.php
│   │       │   ├── GroupBy.php
│   │       │   ├── IndexHint.php
│   │       │   ├── Navigation.php
│   │       │   ├── NullValue.php
│   │       │   ├── OrderBy.php
│   │       │   ├── Query.php
│   │       │   ├── Table.php
│   │       │   └── VariableBase.php
│   │       ├── dbtable/
│   │       │   ├── Column.php
│   │       │   ├── Constraint.php
│   │       │   ├── GeneratedColumn.php
│   │       │   ├── Index.php
│   │       │   └── Table.php
│   │       └── template/
│   │           ├── TemplateParser_v1.php
│   │           └── TemplateParser_v2.php
│   ├── functions.php
│   ├── js/
│   │   ├── common.js
│   │   ├── debug.js
│   │   ├── jquery-2.2.4.js
│   │   ├── jquery-3.7.1.js
│   │   ├── js_app.js
│   │   ├── modernizr.js
│   │   ├── plugins/
│   │   │   ├── blankshield/
│   │   │   │   └── plugin.load
│   │   │   ├── ckeditor/
│   │   │   │   ├── ckeditor/
│   │   │   │   │   ├── CHANGES.md
│   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── SECURITY.md
│   │   │   │   │   ├── adapters/
│   │   │   │   │   │   └── jquery.js
│   │   │   │   │   ├── bender-runner.config.json
│   │   │   │   │   ├── build-config.js
│   │   │   │   │   ├── ckeditor.js
│   │   │   │   │   ├── contents.css
│   │   │   │   │   ├── lang/
│   │   │   │   │   │   ├── af.js
│   │   │   │   │   │   ├── ar.js
│   │   │   │   │   │   ├── az.js
│   │   │   │   │   │   ├── bg.js
│   │   │   │   │   │   ├── bn.js
│   │   │   │   │   │   ├── bs.js
│   │   │   │   │   │   ├── ca.js
│   │   │   │   │   │   ├── cs.js
│   │   │   │   │   │   ├── cy.js
│   │   │   │   │   │   ├── da.js
│   │   │   │   │   │   ├── de-ch.js
│   │   │   │   │   │   ├── de.js
│   │   │   │   │   │   ├── el.js
│   │   │   │   │   │   ├── en-au.js
│   │   │   │   │   │   ├── en-ca.js
│   │   │   │   │   │   ├── en-gb.js
│   │   │   │   │   │   ├── en.js
│   │   │   │   │   │   ├── eo.js
│   │   │   │   │   │   ├── es-mx.js
│   │   │   │   │   │   ├── es.js
│   │   │   │   │   │   ├── et.js
│   │   │   │   │   │   ├── eu.js
│   │   │   │   │   │   ├── fa.js
│   │   │   │   │   │   ├── fi.js
│   │   │   │   │   │   ├── fo.js
│   │   │   │   │   │   ├── fr-ca.js
│   │   │   │   │   │   ├── fr.js
│   │   │   │   │   │   ├── gl.js
│   │   │   │   │   │   ├── gu.js
│   │   │   │   │   │   ├── he.js
│   │   │   │   │   │   ├── hi.js
│   │   │   │   │   │   ├── hr.js
│   │   │   │   │   │   ├── hu.js
│   │   │   │   │   │   ├── id.js
│   │   │   │   │   │   ├── is.js
│   │   │   │   │   │   ├── it.js
│   │   │   │   │   │   ├── ja.js
│   │   │   │   │   │   ├── ka.js
│   │   │   │   │   │   ├── km.js
│   │   │   │   │   │   ├── ko.js
│   │   │   │   │   │   ├── ku.js
│   │   │   │   │   │   ├── lt.js
│   │   │   │   │   │   ├── lv.js
│   │   │   │   │   │   ├── mk.js
│   │   │   │   │   │   ├── mn.js
│   │   │   │   │   │   ├── ms.js
│   │   │   │   │   │   ├── nb.js
│   │   │   │   │   │   ├── nl.js
│   │   │   │   │   │   ├── no.js
│   │   │   │   │   │   ├── oc.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
│   │   │   │   │   ├── plugins/
│   │   │   │   │   │   ├── a11yhelp/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       ├── a11yhelp.js
│   │   │   │   │   │   │       └── lang/
│   │   │   │   │   │   │           ├── _translationstatus.txt
│   │   │   │   │   │   │           ├── af.js
│   │   │   │   │   │   │           ├── ar.js
│   │   │   │   │   │   │           ├── az.js
│   │   │   │   │   │   │           ├── bg.js
│   │   │   │   │   │   │           ├── ca.js
│   │   │   │   │   │   │           ├── cs.js
│   │   │   │   │   │   │           ├── cy.js
│   │   │   │   │   │   │           ├── da.js
│   │   │   │   │   │   │           ├── de-ch.js
│   │   │   │   │   │   │           ├── de.js
│   │   │   │   │   │   │           ├── el.js
│   │   │   │   │   │   │           ├── en-au.js
│   │   │   │   │   │   │           ├── en-gb.js
│   │   │   │   │   │   │           ├── en.js
│   │   │   │   │   │   │           ├── eo.js
│   │   │   │   │   │   │           ├── es-mx.js
│   │   │   │   │   │   │           ├── es.js
│   │   │   │   │   │   │           ├── et.js
│   │   │   │   │   │   │           ├── eu.js
│   │   │   │   │   │   │           ├── fa.js
│   │   │   │   │   │   │           ├── fi.js
│   │   │   │   │   │   │           ├── fo.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
│   │   │   │   │   │   │           ├── oc.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.css
│   │   │   │   │   │   │       └── colordialog.js
│   │   │   │   │   │   ├── copyformatting/
│   │   │   │   │   │   │   └── styles/
│   │   │   │   │   │   │       └── copyformatting.css
│   │   │   │   │   │   ├── dialog/
│   │   │   │   │   │   │   ├── dialogDefinition.js
│   │   │   │   │   │   │   └── styles/
│   │   │   │   │   │   │       └── dialog.css
│   │   │   │   │   │   ├── div/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       └── div.js
│   │   │   │   │   │   ├── divarea/
│   │   │   │   │   │   │   └── plugin.js
│   │   │   │   │   │   ├── exportpdf/
│   │   │   │   │   │   │   ├── CHANGELOG.md
│   │   │   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── plugindefinition.js
│   │   │   │   │   │   │   └── tests/
│   │   │   │   │   │   │       ├── _helpers/
│   │   │   │   │   │   │       │   └── tools.js
│   │   │   │   │   │   │       ├── authentication.js
│   │   │   │   │   │   │       ├── exportpdf.js
│   │   │   │   │   │   │       ├── manual/
│   │   │   │   │   │   │       │   ├── configfilename.html
│   │   │   │   │   │   │       │   ├── configfilename.md
│   │   │   │   │   │   │       │   ├── emptyeditor.html
│   │   │   │   │   │   │       │   ├── emptyeditor.md
│   │   │   │   │   │   │       │   ├── integration.html
│   │   │   │   │   │   │       │   ├── integration.md
│   │   │   │   │   │   │       │   ├── integrations/
│   │   │   │   │   │   │       │   │   ├── easyimage.html
│   │   │   │   │   │   │       │   │   └── easyimage.md
│   │   │   │   │   │   │       │   ├── notifications.html
│   │   │   │   │   │   │       │   ├── notifications.md
│   │   │   │   │   │   │       │   ├── notificationsasync.html
│   │   │   │   │   │   │       │   ├── notificationsasync.md
│   │   │   │   │   │   │       │   ├── paperformat.html
│   │   │   │   │   │   │       │   ├── paperformat.md
│   │   │   │   │   │   │       │   ├── readonly.html
│   │   │   │   │   │   │       │   ├── readonly.md
│   │   │   │   │   │   │       │   ├── stylesheets.html
│   │   │   │   │   │   │       │   ├── stylesheets.md
│   │   │   │   │   │   │       │   ├── tokenfetching.html
│   │   │   │   │   │   │       │   ├── tokenfetching.md
│   │   │   │   │   │   │       │   ├── tokentwoeditorscorrect.html
│   │   │   │   │   │   │       │   ├── tokentwoeditorscorrect.md
│   │   │   │   │   │   │       │   ├── tokentwoeditorswrong.html
│   │   │   │   │   │   │       │   ├── tokentwoeditorswrong.md
│   │   │   │   │   │   │       │   ├── tokenwithouturl.html
│   │   │   │   │   │   │       │   ├── tokenwithouturl.md
│   │   │   │   │   │   │       │   ├── wrongendpoint.html
│   │   │   │   │   │   │       │   └── wrongendpoint.md
│   │   │   │   │   │   │       ├── notification.js
│   │   │   │   │   │   │       ├── resourcespaths.js
│   │   │   │   │   │   │       ├── statistics.js
│   │   │   │   │   │   │       └── stylesheets.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
│   │   │   │   │   │   ├── imageresize/
│   │   │   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   │   │   └── README.md
│   │   │   │   │   │   ├── ios_enterkey/
│   │   │   │   │   │   │   └── plugin.js
│   │   │   │   │   │   ├── link/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       ├── anchor.js
│   │   │   │   │   │   │       └── link.js
│   │   │   │   │   │   ├── liststyle/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       └── liststyle.js
│   │   │   │   │   │   ├── onchange/
│   │   │   │   │   │   │   └── docs/
│   │   │   │   │   │   │       ├── install.html
│   │   │   │   │   │   │       └── styles.css
│   │   │   │   │   │   ├── pastefromgdocs/
│   │   │   │   │   │   │   └── filter/
│   │   │   │   │   │   │       └── default.js
│   │   │   │   │   │   ├── pastefromlibreoffice/
│   │   │   │   │   │   │   └── filter/
│   │   │   │   │   │   │       └── default.js
│   │   │   │   │   │   ├── pastefromword/
│   │   │   │   │   │   │   └── filter/
│   │   │   │   │   │   │       └── default.js
│   │   │   │   │   │   ├── pastetools/
│   │   │   │   │   │   │   └── filter/
│   │   │   │   │   │   │       ├── common.js
│   │   │   │   │   │   │       └── image.js
│   │   │   │   │   │   ├── preview/
│   │   │   │   │   │   │   ├── preview.html
│   │   │   │   │   │   │   └── styles/
│   │   │   │   │   │   │       └── screen.css
│   │   │   │   │   │   ├── rx_paste/
│   │   │   │   │   │   │   └── plugin.js
│   │   │   │   │   │   ├── scayt/
│   │   │   │   │   │   │   ├── CHANGELOG.md
│   │   │   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── dialogs/
│   │   │   │   │   │   │   │   ├── dialog.css
│   │   │   │   │   │   │   │   ├── options.js
│   │   │   │   │   │   │   │   └── toolbar.css
│   │   │   │   │   │   │   └── skins/
│   │   │   │   │   │   │       └── moono-lisa/
│   │   │   │   │   │   │           └── scayt.css
│   │   │   │   │   │   ├── smiley/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       └── smiley.js
│   │   │   │   │   │   ├── specialchar/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       ├── lang/
│   │   │   │   │   │   │       │   ├── _translationstatus.txt
│   │   │   │   │   │   │       │   ├── af.js
│   │   │   │   │   │   │       │   ├── ar.js
│   │   │   │   │   │   │       │   ├── az.js
│   │   │   │   │   │   │       │   ├── bg.js
│   │   │   │   │   │   │       │   ├── ca.js
│   │   │   │   │   │   │       │   ├── cs.js
│   │   │   │   │   │   │       │   ├── cy.js
│   │   │   │   │   │   │       │   ├── da.js
│   │   │   │   │   │   │       │   ├── de-ch.js
│   │   │   │   │   │   │       │   ├── de.js
│   │   │   │   │   │   │       │   ├── el.js
│   │   │   │   │   │   │       │   ├── en-au.js
│   │   │   │   │   │   │       │   ├── en-ca.js
│   │   │   │   │   │   │       │   ├── en-gb.js
│   │   │   │   │   │   │       │   ├── en.js
│   │   │   │   │   │   │       │   ├── eo.js
│   │   │   │   │   │   │       │   ├── es-mx.js
│   │   │   │   │   │   │       │   ├── es.js
│   │   │   │   │   │   │       │   ├── et.js
│   │   │   │   │   │   │       │   ├── eu.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
│   │   │   │   │   │   │       │   ├── ko.js
│   │   │   │   │   │   │       │   ├── ku.js
│   │   │   │   │   │   │       │   ├── lt.js
│   │   │   │   │   │   │       │   ├── lv.js
│   │   │   │   │   │   │       │   ├── nb.js
│   │   │   │   │   │   │       │   ├── nl.js
│   │   │   │   │   │   │       │   ├── no.js
│   │   │   │   │   │   │       │   ├── oc.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
│   │   │   │   │   │   │       └── specialchar.js
│   │   │   │   │   │   ├── table/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       └── table.js
│   │   │   │   │   │   ├── tableselection/
│   │   │   │   │   │   │   └── styles/
│   │   │   │   │   │   │       └── tableselection.css
│   │   │   │   │   │   ├── tabletools/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       └── tableCell.js
│   │   │   │   │   │   ├── templates/
│   │   │   │   │   │   │   ├── dialogs/
│   │   │   │   │   │   │   │   ├── templates.css
│   │   │   │   │   │   │   │   └── templates.js
│   │   │   │   │   │   │   ├── templatedefinition.js
│   │   │   │   │   │   │   └── templates/
│   │   │   │   │   │   │       └── default.js
│   │   │   │   │   │   ├── wsc/
│   │   │   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── dialogs/
│   │   │   │   │   │   │   │   ├── ciframe.html
│   │   │   │   │   │   │   │   ├── tmpFrameset.html
│   │   │   │   │   │   │   │   ├── wsc.css
│   │   │   │   │   │   │   │   ├── wsc.js
│   │   │   │   │   │   │   │   └── wsc_ie.js
│   │   │   │   │   │   │   └── skins/
│   │   │   │   │   │   │       └── moono-lisa/
│   │   │   │   │   │   │           └── wsc.css
│   │   │   │   │   │   └── xe_component/
│   │   │   │   │   │       └── plugin.js
│   │   │   │   │   ├── skins/
│   │   │   │   │   │   ├── 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
│   │   │   │   │   │   │   └── skin.js
│   │   │   │   │   │   ├── moono-dark/
│   │   │   │   │   │   │   ├── 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
│   │   │   │   │   │   │   └── skin.js
│   │   │   │   │   │   └── moono-lisa/
│   │   │   │   │   │       ├── dialog.css
│   │   │   │   │   │       ├── dialog_ie.css
│   │   │   │   │   │       ├── dialog_ie8.css
│   │   │   │   │   │       ├── dialog_iequirks.css
│   │   │   │   │   │       ├── editor.css
│   │   │   │   │   │       ├── editor_gecko.css
│   │   │   │   │   │       ├── editor_ie.css
│   │   │   │   │   │       ├── editor_ie8.css
│   │   │   │   │   │       ├── editor_iequirks.css
│   │   │   │   │   │       └── readme.md
│   │   │   │   │   ├── styles.js
│   │   │   │   │   └── vendor/
│   │   │   │   │       └── promise.js
│   │   │   │   └── plugin.load
│   │   │   ├── cookie/
│   │   │   │   ├── js.cookie.js
│   │   │   │   └── plugin.load
│   │   │   ├── filebox/
│   │   │   │   ├── filebox.js
│   │   │   │   └── plugin.load
│   │   │   ├── foggyLayer/
│   │   │   │   ├── foggyLayer.js
│   │   │   │   └── plugin.load
│   │   │   ├── handlebars/
│   │   │   │   ├── handlebars.js
│   │   │   │   └── plugin.load
│   │   │   ├── handlebars.runtime/
│   │   │   │   ├── handlebars.runtime.js
│   │   │   │   └── plugin.load
│   │   │   ├── hotkeys/
│   │   │   │   ├── jquery.hotkeys-packed.js
│   │   │   │   └── plugin.load
│   │   │   ├── jquery.fileupload/
│   │   │   │   ├── LICENSE.txt
│   │   │   │   ├── css/
│   │   │   │   │   ├── demo-ie8.css
│   │   │   │   │   ├── demo.css
│   │   │   │   │   ├── jquery.fileupload-noscript.css
│   │   │   │   │   ├── jquery.fileupload-ui-noscript.css
│   │   │   │   │   ├── jquery.fileupload-ui.css
│   │   │   │   │   ├── jquery.fileupload.css
│   │   │   │   │   └── style.css
│   │   │   │   ├── js/
│   │   │   │   │   ├── app.js
│   │   │   │   │   ├── cors/
│   │   │   │   │   │   ├── jquery.postmessage-transport.js
│   │   │   │   │   │   └── jquery.xdr-transport.js
│   │   │   │   │   ├── jquery.fileupload-angular.js
│   │   │   │   │   ├── jquery.fileupload-audio.js
│   │   │   │   │   ├── jquery.fileupload-image.js
│   │   │   │   │   ├── jquery.fileupload-jquery-ui.js
│   │   │   │   │   ├── jquery.fileupload-process.js
│   │   │   │   │   ├── jquery.fileupload-ui.js
│   │   │   │   │   ├── jquery.fileupload-validate.js
│   │   │   │   │   ├── jquery.fileupload-video.js
│   │   │   │   │   ├── jquery.fileupload.js
│   │   │   │   │   ├── jquery.iframe-transport.js
│   │   │   │   │   ├── main.js
│   │   │   │   │   └── vendor/
│   │   │   │   │       └── jquery.ui.widget.js
│   │   │   │   └── plugin.load
│   │   │   ├── jquery.finderSelect/
│   │   │   │   ├── LICENSE.txt
│   │   │   │   ├── README.md
│   │   │   │   └── plugin.load
│   │   │   ├── qtip/
│   │   │   │   ├── jquery.qtip.js
│   │   │   │   └── plugin.load
│   │   │   ├── spectrum/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── .travis.yml
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── i18n/
│   │   │   │   │   ├── jquery.spectrum-ar.js
│   │   │   │   │   ├── jquery.spectrum-de.js
│   │   │   │   │   ├── jquery.spectrum-dk.js
│   │   │   │   │   ├── jquery.spectrum-en.js
│   │   │   │   │   ├── jquery.spectrum-es.js
│   │   │   │   │   ├── jquery.spectrum-fa.js
│   │   │   │   │   ├── jquery.spectrum-fi.js
│   │   │   │   │   ├── jquery.spectrum-fr.js
│   │   │   │   │   ├── jquery.spectrum-gr.js
│   │   │   │   │   ├── jquery.spectrum-he.js
│   │   │   │   │   ├── jquery.spectrum-hr.js
│   │   │   │   │   ├── jquery.spectrum-id.js
│   │   │   │   │   ├── jquery.spectrum-it.js
│   │   │   │   │   ├── jquery.spectrum-ja.js
│   │   │   │   │   ├── jquery.spectrum-ko.js
│   │   │   │   │   ├── jquery.spectrum-lt.js
│   │   │   │   │   ├── jquery.spectrum-nl.js
│   │   │   │   │   ├── jquery.spectrum-pl.js
│   │   │   │   │   ├── jquery.spectrum-pt-br.js
│   │   │   │   │   ├── jquery.spectrum-ru.js
│   │   │   │   │   ├── jquery.spectrum-sv.js
│   │   │   │   │   ├── jquery.spectrum-tr.js
│   │   │   │   │   ├── jquery.spectrum-zh-cn.js
│   │   │   │   │   └── jquery.spectrum-zh-tw.js
│   │   │   │   ├── plugin.load
│   │   │   │   ├── rx_spectrum.js
│   │   │   │   ├── spectrum.css
│   │   │   │   ├── spectrum.js
│   │   │   │   └── themes/
│   │   │   │       ├── index.html
│   │   │   │       └── sp-dark.css
│   │   │   ├── ui/
│   │   │   │   ├── i18n/
│   │   │   │   │   ├── datepicker-af.js
│   │   │   │   │   ├── datepicker-ar-DZ.js
│   │   │   │   │   ├── datepicker-ar.js
│   │   │   │   │   ├── datepicker-az.js
│   │   │   │   │   ├── datepicker-be.js
│   │   │   │   │   ├── datepicker-bg.js
│   │   │   │   │   ├── datepicker-bs.js
│   │   │   │   │   ├── datepicker-ca.js
│   │   │   │   │   ├── datepicker-cs.js
│   │   │   │   │   ├── datepicker-cy-GB.js
│   │   │   │   │   ├── datepicker-da.js
│   │   │   │   │   ├── datepicker-de.js
│   │   │   │   │   ├── datepicker-el.js
│   │   │   │   │   ├── datepicker-en-AU.js
│   │   │   │   │   ├── datepicker-en-GB.js
│   │   │   │   │   ├── datepicker-en-NZ.js
│   │   │   │   │   ├── datepicker-en.js
│   │   │   │   │   ├── datepicker-eo.js
│   │   │   │   │   ├── datepicker-es.js
│   │   │   │   │   ├── datepicker-et.js
│   │   │   │   │   ├── datepicker-eu.js
│   │   │   │   │   ├── datepicker-fa.js
│   │   │   │   │   ├── datepicker-fi.js
│   │   │   │   │   ├── datepicker-fo.js
│   │   │   │   │   ├── datepicker-fr-CA.js
│   │   │   │   │   ├── datepicker-fr-CH.js
│   │   │   │   │   ├── datepicker-fr.js
│   │   │   │   │   ├── datepicker-gl.js
│   │   │   │   │   ├── datepicker-he.js
│   │   │   │   │   ├── datepicker-hi.js
│   │   │   │   │   ├── datepicker-hr.js
│   │   │   │   │   ├── datepicker-hu.js
│   │   │   │   │   ├── datepicker-hy.js
│   │   │   │   │   ├── datepicker-id.js
│   │   │   │   │   ├── datepicker-is.js
│   │   │   │   │   ├── datepicker-it-CH.js
│   │   │   │   │   ├── datepicker-it.js
│   │   │   │   │   ├── datepicker-ja.js
│   │   │   │   │   ├── datepicker-ka.js
│   │   │   │   │   ├── datepicker-kk.js
│   │   │   │   │   ├── datepicker-km.js
│   │   │   │   │   ├── datepicker-ko.js
│   │   │   │   │   ├── datepicker-ky.js
│   │   │   │   │   ├── datepicker-lb.js
│   │   │   │   │   ├── datepicker-lt.js
│   │   │   │   │   ├── datepicker-lv.js
│   │   │   │   │   ├── datepicker-mk.js
│   │   │   │   │   ├── datepicker-ml.js
│   │   │   │   │   ├── datepicker-ms.js
│   │   │   │   │   ├── datepicker-nb.js
│   │   │   │   │   ├── datepicker-nl-BE.js
│   │   │   │   │   ├── datepicker-nl.js
│   │   │   │   │   ├── datepicker-nn.js
│   │   │   │   │   ├── datepicker-no.js
│   │   │   │   │   ├── datepicker-pl.js
│   │   │   │   │   ├── datepicker-pt-BR.js
│   │   │   │   │   ├── datepicker-pt.js
│   │   │   │   │   ├── datepicker-rm.js
│   │   │   │   │   ├── datepicker-ro.js
│   │   │   │   │   ├── datepicker-ru.js
│   │   │   │   │   ├── datepicker-sk.js
│   │   │   │   │   ├── datepicker-sl.js
│   │   │   │   │   ├── datepicker-sq.js
│   │   │   │   │   ├── datepicker-sr-SR.js
│   │   │   │   │   ├── datepicker-sr.js
│   │   │   │   │   ├── datepicker-sv.js
│   │   │   │   │   ├── datepicker-ta.js
│   │   │   │   │   ├── datepicker-th.js
│   │   │   │   │   ├── datepicker-tj.js
│   │   │   │   │   ├── datepicker-tr.js
│   │   │   │   │   ├── datepicker-uk.js
│   │   │   │   │   ├── datepicker-vi.js
│   │   │   │   │   ├── datepicker-zh-CN.js
│   │   │   │   │   ├── datepicker-zh-HK.js
│   │   │   │   │   └── datepicker-zh-TW.js
│   │   │   │   ├── jquery-ui.css
│   │   │   │   ├── jquery-ui.js
│   │   │   │   ├── jquery-ui.structure.css
│   │   │   │   ├── jquery-ui.theme.css
│   │   │   │   ├── jquery.ui.datepicker-ko.js
│   │   │   │   ├── plugin.load
│   │   │   │   └── rx_datepicker.js
│   │   │   ├── ui.calendar/
│   │   │   │   ├── plugin.load
│   │   │   │   ├── ui.calendar.css
│   │   │   │   └── ui.calendar.js
│   │   │   ├── ui.colorpicker/
│   │   │   │   ├── ChangeLog.txt
│   │   │   │   ├── ReadMe.txt
│   │   │   │   ├── css/
│   │   │   │   │   └── jPicker-1.1.6.css
│   │   │   │   ├── jpicker-1.1.6.js
│   │   │   │   ├── minify.ini
│   │   │   │   ├── plugin.load
│   │   │   │   └── xe_colorpicker.js
│   │   │   ├── ui.krzip/
│   │   │   │   ├── krzip_search.js
│   │   │   │   └── plugin.load
│   │   │   ├── ui.tree/
│   │   │   │   ├── jquery.simple.tree.css
│   │   │   │   ├── jquery.simple.tree.js
│   │   │   │   └── plugin.load
│   │   │   ├── uri/
│   │   │   │   └── plugin.load
│   │   │   └── watchinput/
│   │   │       ├── jquery.watchinput.js
│   │   │       └── plugin.load
│   │   ├── x.js
│   │   ├── xml2json.js
│   │   ├── xml_handler.js
│   │   └── xml_js_filter.js
│   ├── lang/
│   │   ├── de.php
│   │   ├── en.php
│   │   ├── es.php
│   │   ├── fr.php
│   │   ├── ja.php
│   │   ├── ko.php
│   │   ├── mn.php
│   │   ├── ru.php
│   │   ├── tr.php
│   │   ├── vi.php
│   │   ├── zh-CN.php
│   │   └── zh-TW.php
│   ├── legacy.php
│   ├── libraries/
│   │   ├── cryptocompat.php
│   │   ├── ftp.php
│   │   ├── swift_mail.php
│   │   ├── tar.php
│   │   └── vendorpass.php
│   ├── manual/
│   │   └── server_config/
│   │       ├── rhymix-nginx-subdir.conf
│   │       └── rhymix-nginx.conf
│   ├── scripts/
│   │   ├── clean_empty_dirs.php
│   │   ├── clean_garbage_files.php
│   │   ├── clean_message_files.php
│   │   ├── clean_old_logs.php
│   │   ├── clean_old_notifications.php
│   │   ├── clean_old_thumbnails.php
│   │   ├── common.php
│   │   ├── cron.php
│   │   └── update_all_modules.php
│   ├── tpl/
│   │   ├── common_layout.html
│   │   ├── debug_comment.html
│   │   ├── default_layout.html
│   │   ├── popup_layout.html
│   │   └── refresh.html
│   └── vendor/
│       ├── autoload.php
│       ├── bin/
│       │   ├── html-to-markdown
│       │   ├── lessify
│       │   ├── minifycss
│       │   ├── minifyjs
│       │   ├── plessc
│       │   └── pscss
│       ├── composer/
│       │   ├── ClassLoader.php
│       │   ├── InstalledVersions.php
│       │   ├── LICENSE
│       │   ├── autoload_classmap.php
│       │   ├── autoload_files.php
│       │   ├── autoload_namespaces.php
│       │   ├── autoload_psr4.php
│       │   ├── autoload_real.php
│       │   ├── autoload_static.php
│       │   ├── ca-bundle/
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   ├── res/
│       │   │   │   └── cacert.pem
│       │   │   └── src/
│       │   │       └── CaBundle.php
│       │   ├── installed.json
│       │   └── installed.php
│       ├── coolsms/
│       │   └── php-sdk/
│       │       ├── .gitignore
│       │       ├── README.md
│       │       ├── app/
│       │       │   └── Nurigo/
│       │       │       ├── Api/
│       │       │       │   ├── GroupMessage.php
│       │       │       │   ├── Image.php
│       │       │       │   ├── Message.php
│       │       │       │   └── SenderID.php
│       │       │       ├── Coolsms.php
│       │       │       └── Exceptions/
│       │       │           ├── CoolsmsException.php
│       │       │           ├── CoolsmsSDKException.php
│       │       │           ├── CoolsmsServerException.php
│       │       │           └── CoolsmsSystemException.php
│       │       ├── bootstrap.php
│       │       ├── composer.json
│       │       └── examples/
│       │           ├── GroupMessage/
│       │           │   ├── example_add_messages.php
│       │           │   ├── example_add_messages_json.php
│       │           │   ├── example_create_group.php
│       │           │   ├── example_delete_groups.php
│       │           │   ├── example_delete_messages.php
│       │           │   ├── example_get_group_info.php
│       │           │   ├── example_get_group_list.php
│       │           │   ├── example_get_message_list.php
│       │           │   ├── example_send.php
│       │           │   └── example_send_process.php
│       │           ├── Message/
│       │           │   ├── example_cancel.php
│       │           │   ├── example_get_balance.php
│       │           │   ├── example_get_status.php
│       │           │   ├── example_send.php
│       │           │   └── example_sent.php
│       │           ├── image/
│       │           │   ├── example_delete_images.php
│       │           │   ├── example_get_image_info.php
│       │           │   ├── example_get_image_list.php
│       │           │   └── example_upload_image.php
│       │           └── senderid/
│       │               ├── example_delete.php
│       │               ├── example_get_default.php
│       │               ├── example_get_sender_id_list.php
│       │               ├── example_register.php
│       │               ├── example_set_default.php
│       │               └── example_verify.php
│       ├── doctrine/
│       │   └── lexer/
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       ├── lib/
│       │       │   └── Doctrine/
│       │       │       └── Common/
│       │       │           └── Lexer/
│       │       │               └── AbstractLexer.php
│       │       └── psalm.xml
│       ├── egulias/
│       │   └── email-validator/
│       │       ├── CHANGELOG.md
│       │       ├── CONTRIBUTING.md
│       │       ├── LICENSE
│       │       ├── composer.json
│       │       └── src/
│       │           ├── EmailLexer.php
│       │           ├── EmailParser.php
│       │           ├── EmailValidator.php
│       │           ├── MessageIDParser.php
│       │           ├── Parser/
│       │           │   ├── Comment.php
│       │           │   ├── CommentStrategy/
│       │           │   │   ├── CommentStrategy.php
│       │           │   │   ├── DomainComment.php
│       │           │   │   └── LocalComment.php
│       │           │   ├── DomainLiteral.php
│       │           │   ├── DomainPart.php
│       │           │   ├── DoubleQuote.php
│       │           │   ├── FoldingWhiteSpace.php
│       │           │   ├── IDLeftPart.php
│       │           │   ├── IDRightPart.php
│       │           │   ├── LocalPart.php
│       │           │   └── PartParser.php
│       │           ├── Parser.php
│       │           ├── Result/
│       │           │   ├── InvalidEmail.php
│       │           │   ├── MultipleErrors.php
│       │           │   ├── Reason/
│       │           │   │   ├── AtextAfterCFWS.php
│       │           │   │   ├── CRLFAtTheEnd.php
│       │           │   │   ├── CRLFX2.php
│       │           │   │   ├── CRNoLF.php
│       │           │   │   ├── CharNotAllowed.php
│       │           │   │   ├── CommaInDomain.php
│       │           │   │   ├── CommentsInIDRight.php
│       │           │   │   ├── ConsecutiveAt.php
│       │           │   │   ├── ConsecutiveDot.php
│       │           │   │   ├── DetailedReason.php
│       │           │   │   ├── DomainAcceptsNoMail.php
│       │           │   │   ├── DomainHyphened.php
│       │           │   │   ├── DomainTooLong.php
│       │           │   │   ├── DotAtEnd.php
│       │           │   │   ├── DotAtStart.php
│       │           │   │   ├── EmptyReason.php
│       │           │   │   ├── ExceptionFound.php
│       │           │   │   ├── ExpectingATEXT.php
│       │           │   │   ├── ExpectingCTEXT.php
│       │           │   │   ├── ExpectingDTEXT.php
│       │           │   │   ├── ExpectingDomainLiteralClose.php
│       │           │   │   ├── LabelTooLong.php
│       │           │   │   ├── LocalOrReservedDomain.php
│       │           │   │   ├── NoDNSRecord.php
│       │           │   │   ├── NoDomainPart.php
│       │           │   │   ├── NoLocalPart.php
│       │           │   │   ├── RFCWarnings.php
│       │           │   │   ├── Reason.php
│       │           │   │   ├── SpoofEmail.php
│       │           │   │   ├── UnOpenedComment.php
│       │           │   │   ├── UnableToGetDNSRecord.php
│       │           │   │   ├── UnclosedComment.php
│       │           │   │   ├── UnclosedQuotedString.php
│       │           │   │   └── UnusualElements.php
│       │           │   ├── Result.php
│       │           │   ├── SpoofEmail.php
│       │           │   └── ValidEmail.php
│       │           ├── Validation/
│       │           │   ├── DNSCheckValidation.php
│       │           │   ├── DNSGetRecordWrapper.php
│       │           │   ├── DNSRecords.php
│       │           │   ├── EmailValidation.php
│       │           │   ├── Exception/
│       │           │   │   └── EmptyValidationList.php
│       │           │   ├── Extra/
│       │           │   │   └── SpoofCheckValidation.php
│       │           │   ├── MessageIDValidation.php
│       │           │   ├── MultipleValidationWithAnd.php
│       │           │   ├── NoRFCWarningsValidation.php
│       │           │   └── RFCValidation.php
│       │           └── Warning/
│       │               ├── AddressLiteral.php
│       │               ├── CFWSNearAt.php
│       │               ├── CFWSWithFWS.php
│       │               ├── Comment.php
│       │               ├── DeprecatedComment.php
│       │               ├── DomainLiteral.php
│       │               ├── EmailTooLong.php
│       │               ├── IPV6BadChar.php
│       │               ├── IPV6ColonEnd.php
│       │               ├── IPV6ColonStart.php
│       │               ├── IPV6Deprecated.php
│       │               ├── IPV6DoubleColon.php
│       │               ├── IPV6GroupCount.php
│       │               ├── IPV6MaxGroups.php
│       │               ├── LocalTooLong.php
│       │               ├── NoDNSMXRecord.php
│       │               ├── ObsoleteDTEXT.php
│       │               ├── QuotedPart.php
│       │               ├── QuotedString.php
│       │               ├── TLD.php
│       │               └── Warning.php
│       ├── enshrined/
│       │   └── svg-sanitize/
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       └── src/
│       │           ├── ElementReference/
│       │           │   ├── Resolver.php
│       │           │   ├── Subject.php
│       │           │   └── Usage.php
│       │           ├── Exceptions/
│       │           │   └── NestingException.php
│       │           ├── Helper.php
│       │           ├── Sanitizer.php
│       │           ├── data/
│       │           │   ├── AllowedAttributes.php
│       │           │   ├── AllowedTags.php
│       │           │   ├── AttributeInterface.php
│       │           │   ├── TagInterface.php
│       │           │   └── XPath.php
│       │           └── svg-scanner.php
│       ├── ezyang/
│       │   └── htmlpurifier/
│       │       ├── CREDITS
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── VERSION
│       │       ├── composer.json
│       │       └── library/
│       │           ├── HTMLPurifier/
│       │           │   ├── Arborize.php
│       │           │   ├── AttrCollections.php
│       │           │   ├── AttrDef/
│       │           │   │   ├── CSS/
│       │           │   │   │   ├── AlphaValue.php
│       │           │   │   │   ├── Background.php
│       │           │   │   │   ├── BackgroundPosition.php
│       │           │   │   │   ├── Border.php
│       │           │   │   │   ├── Color.php
│       │           │   │   │   ├── Composite.php
│       │           │   │   │   ├── DenyElementDecorator.php
│       │           │   │   │   ├── Filter.php
│       │           │   │   │   ├── Font.php
│       │           │   │   │   ├── FontFamily.php
│       │           │   │   │   ├── Ident.php
│       │           │   │   │   ├── ImportantDecorator.php
│       │           │   │   │   ├── Length.php
│       │           │   │   │   ├── ListStyle.php
│       │           │   │   │   ├── Multiple.php
│       │           │   │   │   ├── Number.php
│       │           │   │   │   ├── Percentage.php
│       │           │   │   │   ├── Ratio.php
│       │           │   │   │   ├── TextDecoration.php
│       │           │   │   │   └── URI.php
│       │           │   │   ├── CSS.php
│       │           │   │   ├── Clone.php
│       │           │   │   ├── Enum.php
│       │           │   │   ├── HTML/
│       │           │   │   │   ├── Bool.php
│       │           │   │   │   ├── Class.php
│       │           │   │   │   ├── Color.php
│       │           │   │   │   ├── ContentEditable.php
│       │           │   │   │   ├── FrameTarget.php
│       │           │   │   │   ├── ID.php
│       │           │   │   │   ├── Length.php
│       │           │   │   │   ├── LinkTypes.php
│       │           │   │   │   ├── MultiLength.php
│       │           │   │   │   ├── Nmtokens.php
│       │           │   │   │   └── Pixels.php
│       │           │   │   ├── Integer.php
│       │           │   │   ├── Lang.php
│       │           │   │   ├── Switch.php
│       │           │   │   ├── Text.php
│       │           │   │   ├── URI/
│       │           │   │   │   ├── Email/
│       │           │   │   │   │   └── SimpleCheck.php
│       │           │   │   │   ├── Email.php
│       │           │   │   │   ├── Host.php
│       │           │   │   │   ├── IPv4.php
│       │           │   │   │   └── IPv6.php
│       │           │   │   └── URI.php
│       │           │   ├── AttrDef.php
│       │           │   ├── AttrTransform/
│       │           │   │   ├── Background.php
│       │           │   │   ├── BdoDir.php
│       │           │   │   ├── BgColor.php
│       │           │   │   ├── BoolToCSS.php
│       │           │   │   ├── Border.php
│       │           │   │   ├── EnumToCSS.php
│       │           │   │   ├── ImgRequired.php
│       │           │   │   ├── ImgSpace.php
│       │           │   │   ├── Input.php
│       │           │   │   ├── Lang.php
│       │           │   │   ├── Length.php
│       │           │   │   ├── Name.php
│       │           │   │   ├── NameSync.php
│       │           │   │   ├── Nofollow.php
│       │           │   │   ├── SafeEmbed.php
│       │           │   │   ├── SafeObject.php
│       │           │   │   ├── SafeParam.php
│       │           │   │   ├── ScriptRequired.php
│       │           │   │   ├── TargetBlank.php
│       │           │   │   ├── TargetNoopener.php
│       │           │   │   ├── TargetNoreferrer.php
│       │           │   │   └── Textarea.php
│       │           │   ├── AttrTransform.php
│       │           │   ├── AttrTypes.php
│       │           │   ├── AttrValidator.php
│       │           │   ├── Bootstrap.php
│       │           │   ├── CSSDefinition.php
│       │           │   ├── ChildDef/
│       │           │   │   ├── Chameleon.php
│       │           │   │   ├── Custom.php
│       │           │   │   ├── Empty.php
│       │           │   │   ├── List.php
│       │           │   │   ├── Optional.php
│       │           │   │   ├── Required.php
│       │           │   │   ├── StrictBlockquote.php
│       │           │   │   └── Table.php
│       │           │   ├── ChildDef.php
│       │           │   ├── Config.php
│       │           │   ├── ConfigSchema/
│       │           │   │   ├── Builder/
│       │           │   │   │   ├── ConfigSchema.php
│       │           │   │   │   └── Xml.php
│       │           │   │   ├── Exception.php
│       │           │   │   ├── Interchange/
│       │           │   │   │   ├── Directive.php
│       │           │   │   │   └── Id.php
│       │           │   │   ├── Interchange.php
│       │           │   │   ├── InterchangeBuilder.php
│       │           │   │   ├── Validator.php
│       │           │   │   ├── ValidatorAtom.php
│       │           │   │   ├── schema/
│       │           │   │   │   ├── Attr.AllowedClasses.txt
│       │           │   │   │   ├── Attr.AllowedFrameTargets.txt
│       │           │   │   │   ├── Attr.AllowedRel.txt
│       │           │   │   │   ├── Attr.AllowedRev.txt
│       │           │   │   │   ├── Attr.ClassUseCDATA.txt
│       │           │   │   │   ├── Attr.DefaultImageAlt.txt
│       │           │   │   │   ├── Attr.DefaultInvalidImage.txt
│       │           │   │   │   ├── Attr.DefaultInvalidImageAlt.txt
│       │           │   │   │   ├── Attr.DefaultTextDir.txt
│       │           │   │   │   ├── Attr.EnableID.txt
│       │           │   │   │   ├── Attr.ForbiddenClasses.txt
│       │           │   │   │   ├── Attr.ID.HTML5.txt
│       │           │   │   │   ├── Attr.IDBlacklist.txt
│       │           │   │   │   ├── Attr.IDBlacklistRegexp.txt
│       │           │   │   │   ├── Attr.IDPrefix.txt
│       │           │   │   │   ├── Attr.IDPrefixLocal.txt
│       │           │   │   │   ├── AutoFormat.AutoParagraph.txt
│       │           │   │   │   ├── AutoFormat.Custom.txt
│       │           │   │   │   ├── AutoFormat.DisplayLinkURI.txt
│       │           │   │   │   ├── AutoFormat.Linkify.txt
│       │           │   │   │   ├── AutoFormat.PurifierLinkify.DocURL.txt
│       │           │   │   │   ├── AutoFormat.PurifierLinkify.txt
│       │           │   │   │   ├── AutoFormat.RemoveEmpty.Predicate.txt
│       │           │   │   │   ├── AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.txt
│       │           │   │   │   ├── AutoFormat.RemoveEmpty.RemoveNbsp.txt
│       │           │   │   │   ├── AutoFormat.RemoveEmpty.txt
│       │           │   │   │   ├── AutoFormat.RemoveSpansWithoutAttributes.txt
│       │           │   │   │   ├── CSS.AllowDuplicates.txt
│       │           │   │   │   ├── CSS.AllowImportant.txt
│       │           │   │   │   ├── CSS.AllowTricky.txt
│       │           │   │   │   ├── CSS.AllowedFonts.txt
│       │           │   │   │   ├── CSS.AllowedProperties.txt
│       │           │   │   │   ├── CSS.DefinitionRev.txt
│       │           │   │   │   ├── CSS.ForbiddenProperties.txt
│       │           │   │   │   ├── CSS.MaxImgLength.txt
│       │           │   │   │   ├── CSS.Proprietary.txt
│       │           │   │   │   ├── CSS.Trusted.txt
│       │           │   │   │   ├── Cache.DefinitionImpl.txt
│       │           │   │   │   ├── Cache.SerializerPath.txt
│       │           │   │   │   ├── Cache.SerializerPermissions.txt
│       │           │   │   │   ├── Core.AggressivelyFixLt.txt
│       │           │   │   │   ├── Core.AggressivelyRemoveScript.txt
│       │           │   │   │   ├── Core.AllowHostnameUnderscore.txt
│       │           │   │   │   ├── Core.AllowParseManyTags.txt
│       │           │   │   │   ├── Core.CollectErrors.txt
│       │           │   │   │   ├── Core.ColorKeywords.txt
│       │           │   │   │   ├── Core.ConvertDocumentToFragment.txt
│       │           │   │   │   ├── Core.DirectLexLineNumberSyncInterval.txt
│       │           │   │   │   ├── Core.DisableExcludes.txt
│       │           │   │   │   ├── Core.EnableIDNA.txt
│       │           │   │   │   ├── Core.Encoding.txt
│       │           │   │   │   ├── Core.EscapeInvalidChildren.txt
│       │           │   │   │   ├── Core.EscapeInvalidTags.txt
│       │           │   │   │   ├── Core.EscapeNonASCIICharacters.txt
│       │           │   │   │   ├── Core.HiddenElements.txt
│       │           │   │   │   ├── Core.Language.txt
│       │           │   │   │   ├── Core.LegacyEntityDecoder.txt
│       │           │   │   │   ├── Core.LexerImpl.txt
│       │           │   │   │   ├── Core.MaintainLineNumbers.txt
│       │           │   │   │   ├── Core.NormalizeNewlines.txt
│       │           │   │   │   ├── Core.RemoveBlanks.txt
│       │           │   │   │   ├── Core.RemoveInvalidImg.txt
│       │           │   │   │   ├── Core.RemoveProcessingInstructions.txt
│       │           │   │   │   ├── Core.RemoveScriptContents.txt
│       │           │   │   │   ├── Filter.Custom.txt
│       │           │   │   │   ├── Filter.ExtractStyleBlocks.Escaping.txt
│       │           │   │   │   ├── Filter.ExtractStyleBlocks.Scope.txt
│       │           │   │   │   ├── Filter.ExtractStyleBlocks.TidyImpl.txt
│       │           │   │   │   ├── Filter.ExtractStyleBlocks.txt
│       │           │   │   │   ├── Filter.YouTube.txt
│       │           │   │   │   ├── HTML.Allowed.txt
│       │           │   │   │   ├── HTML.AllowedAttributes.txt
│       │           │   │   │   ├── HTML.AllowedComments.txt
│       │           │   │   │   ├── HTML.AllowedCommentsRegexp.txt
│       │           │   │   │   ├── HTML.AllowedElements.txt
│       │           │   │   │   ├── HTML.AllowedModules.txt
│       │           │   │   │   ├── HTML.Attr.Name.UseCDATA.txt
│       │           │   │   │   ├── HTML.BlockWrapper.txt
│       │           │   │   │   ├── HTML.CoreModules.txt
│       │           │   │   │   ├── HTML.CustomDoctype.txt
│       │           │   │   │   ├── HTML.DefinitionID.txt
│       │           │   │   │   ├── HTML.DefinitionRev.txt
│       │           │   │   │   ├── HTML.Doctype.txt
│       │           │   │   │   ├── HTML.FlashAllowFullScreen.txt
│       │           │   │   │   ├── HTML.ForbiddenAttributes.txt
│       │           │   │   │   ├── HTML.ForbiddenElements.txt
│       │           │   │   │   ├── HTML.Forms.txt
│       │           │   │   │   ├── HTML.MaxImgLength.txt
│       │           │   │   │   ├── HTML.Nofollow.txt
│       │           │   │   │   ├── HTML.Parent.txt
│       │           │   │   │   ├── HTML.Proprietary.txt
│       │           │   │   │   ├── HTML.SafeEmbed.txt
│       │           │   │   │   ├── HTML.SafeIframe.txt
│       │           │   │   │   ├── HTML.SafeObject.txt
│       │           │   │   │   ├── HTML.SafeScripting.txt
│       │           │   │   │   ├── HTML.Strict.txt
│       │           │   │   │   ├── HTML.TargetBlank.txt
│       │           │   │   │   ├── HTML.TargetNoopener.txt
│       │           │   │   │   ├── HTML.TargetNoreferrer.txt
│       │           │   │   │   ├── HTML.TidyAdd.txt
│       │           │   │   │   ├── HTML.TidyLevel.txt
│       │           │   │   │   ├── HTML.TidyRemove.txt
│       │           │   │   │   ├── HTML.Trusted.txt
│       │           │   │   │   ├── HTML.XHTML.txt
│       │           │   │   │   ├── Output.CommentScriptContents.txt
│       │           │   │   │   ├── Output.FixInnerHTML.txt
│       │           │   │   │   ├── Output.FlashCompat.txt
│       │           │   │   │   ├── Output.Newline.txt
│       │           │   │   │   ├── Output.SortAttr.txt
│       │           │   │   │   ├── Output.TidyFormat.txt
│       │           │   │   │   ├── Test.ForceNoIconv.txt
│       │           │   │   │   ├── URI.AllowedSchemes.txt
│       │           │   │   │   ├── URI.Base.txt
│       │           │   │   │   ├── URI.DefaultScheme.txt
│       │           │   │   │   ├── URI.DefinitionID.txt
│       │           │   │   │   ├── URI.DefinitionRev.txt
│       │           │   │   │   ├── URI.Disable.txt
│       │           │   │   │   ├── URI.DisableExternal.txt
│       │           │   │   │   ├── URI.DisableExternalResources.txt
│       │           │   │   │   ├── URI.DisableResources.txt
│       │           │   │   │   ├── URI.Host.txt
│       │           │   │   │   ├── URI.HostBlacklist.txt
│       │           │   │   │   ├── URI.MakeAbsolute.txt
│       │           │   │   │   ├── URI.Munge.txt
│       │           │   │   │   ├── URI.MungeResources.txt
│       │           │   │   │   ├── URI.MungeSecretKey.txt
│       │           │   │   │   ├── URI.OverrideAllowedSchemes.txt
│       │           │   │   │   ├── URI.SafeIframeRegexp.txt
│       │           │   │   │   └── info.ini
│       │           │   │   └── schema.ser
│       │           │   ├── ConfigSchema.php
│       │           │   ├── ContentSets.php
│       │           │   ├── Context.php
│       │           │   ├── Definition.php
│       │           │   ├── DefinitionCache/
│       │           │   │   ├── Decorator/
│       │           │   │   │   ├── Cleanup.php
│       │           │   │   │   ├── Memory.php
│       │           │   │   │   └── Template.php.in
│       │           │   │   ├── Decorator.php
│       │           │   │   ├── Null.php
│       │           │   │   ├── Serializer/
│       │           │   │   │   └── README
│       │           │   │   └── Serializer.php
│       │           │   ├── DefinitionCache.php
│       │           │   ├── DefinitionCacheFactory.php
│       │           │   ├── Doctype.php
│       │           │   ├── DoctypeRegistry.php
│       │           │   ├── ElementDef.php
│       │           │   ├── Encoder.php
│       │           │   ├── EntityLookup/
│       │           │   │   └── entities.ser
│       │           │   ├── EntityLookup.php
│       │           │   ├── EntityParser.php
│       │           │   ├── ErrorCollector.php
│       │           │   ├── ErrorStruct.php
│       │           │   ├── Exception.php
│       │           │   ├── Filter/
│       │           │   │   ├── ExtractStyleBlocks.php
│       │           │   │   └── YouTube.php
│       │           │   ├── Filter.php
│       │           │   ├── Generator.php
│       │           │   ├── HTMLDefinition.php
│       │           │   ├── HTMLModule/
│       │           │   │   ├── Bdo.php
│       │           │   │   ├── CommonAttributes.php
│       │           │   │   ├── Edit.php
│       │           │   │   ├── Forms.php
│       │           │   │   ├── Hypertext.php
│       │           │   │   ├── Iframe.php
│       │           │   │   ├── Image.php
│       │           │   │   ├── Legacy.php
│       │           │   │   ├── List.php
│       │           │   │   ├── Name.php
│       │           │   │   ├── Nofollow.php
│       │           │   │   ├── NonXMLCommonAttributes.php
│       │           │   │   ├── Object.php
│       │           │   │   ├── Presentation.php
│       │           │   │   ├── Proprietary.php
│       │           │   │   ├── Ruby.php
│       │           │   │   ├── SafeEmbed.php
│       │           │   │   ├── SafeObject.php
│       │           │   │   ├── SafeScripting.php
│       │           │   │   ├── Scripting.php
│       │           │   │   ├── StyleAttribute.php
│       │           │   │   ├── Tables.php
│       │           │   │   ├── Target.php
│       │           │   │   ├── TargetBlank.php
│       │           │   │   ├── TargetNoopener.php
│       │           │   │   ├── TargetNoreferrer.php
│       │           │   │   ├── Text.php
│       │           │   │   ├── Tidy/
│       │           │   │   │   ├── Name.php
│       │           │   │   │   ├── Proprietary.php
│       │           │   │   │   ├── Strict.php
│       │           │   │   │   ├── Transitional.php
│       │           │   │   │   ├── XHTML.php
│       │           │   │   │   └── XHTMLAndHTML4.php
│       │           │   │   ├── Tidy.php
│       │           │   │   └── XMLCommonAttributes.php
│       │           │   ├── HTMLModule.php
│       │           │   ├── HTMLModuleManager.php
│       │           │   ├── IDAccumulator.php
│       │           │   ├── Injector/
│       │           │   │   ├── AutoParagraph.php
│       │           │   │   ├── DisplayLinkURI.php
│       │           │   │   ├── Linkify.php
│       │           │   │   ├── PurifierLinkify.php
│       │           │   │   ├── RemoveEmpty.php
│       │           │   │   ├── RemoveSpansWithoutAttributes.php
│       │           │   │   └── SafeObject.php
│       │           │   ├── Injector.php
│       │           │   ├── Language/
│       │           │   │   └── messages/
│       │           │   │       └── en.php
│       │           │   ├── Language.php
│       │           │   ├── LanguageFactory.php
│       │           │   ├── Length.php
│       │           │   ├── Lexer/
│       │           │   │   ├── DOMLex.php
│       │           │   │   ├── DirectLex.php
│       │           │   │   └── PH5P.php
│       │           │   ├── Lexer.php
│       │           │   ├── Node/
│       │           │   │   ├── Comment.php
│       │           │   │   ├── Element.php
│       │           │   │   └── Text.php
│       │           │   ├── Node.php
│       │           │   ├── PercentEncoder.php
│       │           │   ├── Printer/
│       │           │   │   ├── CSSDefinition.php
│       │           │   │   ├── ConfigForm.css
│       │           │   │   ├── ConfigForm.js
│       │           │   │   ├── ConfigForm.php
│       │           │   │   └── HTMLDefinition.php
│       │           │   ├── Printer.php
│       │           │   ├── PropertyList.php
│       │           │   ├── PropertyListIterator.php
│       │           │   ├── Queue.php
│       │           │   ├── Strategy/
│       │           │   │   ├── Composite.php
│       │           │   │   ├── Core.php
│       │           │   │   ├── FixNesting.php
│       │           │   │   ├── MakeWellFormed.php
│       │           │   │   ├── RemoveForeignElements.php
│       │           │   │   └── ValidateAttributes.php
│       │           │   ├── Strategy.php
│       │           │   ├── StringHash.php
│       │           │   ├── StringHashParser.php
│       │           │   ├── TagTransform/
│       │           │   │   ├── Font.php
│       │           │   │   └── Simple.php
│       │           │   ├── TagTransform.php
│       │           │   ├── Token/
│       │           │   │   ├── Comment.php
│       │           │   │   ├── Empty.php
│       │           │   │   ├── End.php
│       │           │   │   ├── Start.php
│       │           │   │   ├── Tag.php
│       │           │   │   └── Text.php
│       │           │   ├── Token.php
│       │           │   ├── TokenFactory.php
│       │           │   ├── URI.php
│       │           │   ├── URIDefinition.php
│       │           │   ├── URIFilter/
│       │           │   │   ├── DisableExternal.php
│       │           │   │   ├── DisableExternalResources.php
│       │           │   │   ├── DisableResources.php
│       │           │   │   ├── HostBlacklist.php
│       │           │   │   ├── MakeAbsolute.php
│       │           │   │   ├── Munge.php
│       │           │   │   └── SafeIframe.php
│       │           │   ├── URIFilter.php
│       │           │   ├── URIParser.php
│       │           │   ├── URIScheme/
│       │           │   │   ├── data.php
│       │           │   │   ├── file.php
│       │           │   │   ├── ftp.php
│       │           │   │   ├── http.php
│       │           │   │   ├── https.php
│       │           │   │   ├── mailto.php
│       │           │   │   ├── news.php
│       │           │   │   ├── nntp.php
│       │           │   │   └── tel.php
│       │           │   ├── URIScheme.php
│       │           │   ├── URISchemeRegistry.php
│       │           │   ├── UnitConverter.php
│       │           │   ├── VarParser/
│       │           │   │   ├── Flexible.php
│       │           │   │   └── Native.php
│       │           │   ├── VarParser.php
│       │           │   ├── VarParserException.php
│       │           │   └── Zipper.php
│       │           ├── HTMLPurifier.auto.php
│       │           ├── HTMLPurifier.autoload-legacy.php
│       │           ├── HTMLPurifier.autoload.php
│       │           ├── HTMLPurifier.composer.php
│       │           ├── HTMLPurifier.func.php
│       │           ├── HTMLPurifier.includes.php
│       │           ├── HTMLPurifier.kses.php
│       │           ├── HTMLPurifier.path.php
│       │           ├── HTMLPurifier.php
│       │           └── HTMLPurifier.safe-includes.php
│       ├── firebase/
│       │   └── php-jwt/
│       │       ├── CHANGELOG.md
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       └── src/
│       │           ├── BeforeValidException.php
│       │           ├── CachedKeySet.php
│       │           ├── ExpiredException.php
│       │           ├── JWK.php
│       │           ├── JWT.php
│       │           ├── Key.php
│       │           └── SignatureInvalidException.php
│       ├── google/
│       │   └── auth/
│       │       ├── COPYING
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── SECURITY.md
│       │       ├── autoload.php
│       │       ├── composer.json
│       │       └── src/
│       │           ├── AccessToken.php
│       │           ├── ApplicationDefaultCredentials.php
│       │           ├── Cache/
│       │           │   ├── InvalidArgumentException.php
│       │           │   ├── Item.php
│       │           │   ├── MemoryCacheItemPool.php
│       │           │   ├── SysVCacheItemPool.php
│       │           │   └── TypedItem.php
│       │           ├── CacheTrait.php
│       │           ├── Credentials/
│       │           │   ├── AppIdentityCredentials.php
│       │           │   ├── GCECredentials.php
│       │           │   ├── IAMCredentials.php
│       │           │   ├── ImpersonatedServiceAccountCredentials.php
│       │           │   ├── InsecureCredentials.php
│       │           │   ├── ServiceAccountCredentials.php
│       │           │   ├── ServiceAccountJwtAccessCredentials.php
│       │           │   └── UserRefreshCredentials.php
│       │           ├── CredentialsLoader.php
│       │           ├── FetchAuthTokenCache.php
│       │           ├── FetchAuthTokenInterface.php
│       │           ├── GCECache.php
│       │           ├── GetQuotaProjectInterface.php
│       │           ├── HttpHandler/
│       │           │   ├── Guzzle5HttpHandler.php
│       │           │   ├── Guzzle6HttpHandler.php
│       │           │   ├── Guzzle7HttpHandler.php
│       │           │   ├── HttpClientCache.php
│       │           │   └── HttpHandlerFactory.php
│       │           ├── Iam.php
│       │           ├── IamSignerTrait.php
│       │           ├── Middleware/
│       │           │   ├── AuthTokenMiddleware.php
│       │           │   ├── ProxyAuthTokenMiddleware.php
│       │           │   ├── ScopedAccessTokenMiddleware.php
│       │           │   └── SimpleMiddleware.php
│       │           ├── OAuth2.php
│       │           ├── ProjectIdProviderInterface.php
│       │           ├── ServiceAccountSignerTrait.php
│       │           ├── SignBlobInterface.php
│       │           └── UpdateMetadataInterface.php
│       ├── guzzlehttp/
│       │   ├── guzzle/
│       │   │   ├── CHANGELOG.md
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── UPGRADING.md
│       │   │   ├── composer.json
│       │   │   └── src/
│       │   │       ├── BodySummarizer.php
│       │   │       ├── BodySummarizerInterface.php
│       │   │       ├── Client.php
│       │   │       ├── ClientInterface.php
│       │   │       ├── ClientTrait.php
│       │   │       ├── Cookie/
│       │   │       │   ├── CookieJar.php
│       │   │       │   ├── CookieJarInterface.php
│       │   │       │   ├── FileCookieJar.php
│       │   │       │   ├── SessionCookieJar.php
│       │   │       │   └── SetCookie.php
│       │   │       ├── Exception/
│       │   │       │   ├── BadResponseException.php
│       │   │       │   ├── ClientException.php
│       │   │       │   ├── ConnectException.php
│       │   │       │   ├── GuzzleException.php
│       │   │       │   ├── InvalidArgumentException.php
│       │   │       │   ├── RequestException.php
│       │   │       │   ├── ServerException.php
│       │   │       │   ├── TooManyRedirectsException.php
│       │   │       │   └── TransferException.php
│       │   │       ├── Handler/
│       │   │       │   ├── CurlFactory.php
│       │   │       │   ├── CurlFactoryInterface.php
│       │   │       │   ├── CurlHandler.php
│       │   │       │   ├── CurlMultiHandler.php
│       │   │       │   ├── EasyHandle.php
│       │   │       │   ├── HeaderProcessor.php
│       │   │       │   ├── MockHandler.php
│       │   │       │   ├── Proxy.php
│       │   │       │   └── StreamHandler.php
│       │   │       ├── HandlerStack.php
│       │   │       ├── MessageFormatter.php
│       │   │       ├── MessageFormatterInterface.php
│       │   │       ├── Middleware.php
│       │   │       ├── Pool.php
│       │   │       ├── PrepareBodyMiddleware.php
│       │   │       ├── RedirectMiddleware.php
│       │   │       ├── RequestOptions.php
│       │   │       ├── RetryMiddleware.php
│       │   │       ├── TransferStats.php
│       │   │       ├── Utils.php
│       │   │       ├── functions.php
│       │   │       └── functions_include.php
│       │   ├── promises/
│       │   │   ├── CHANGELOG.md
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   └── src/
│       │   │       ├── AggregateException.php
│       │   │       ├── CancellationException.php
│       │   │       ├── Coroutine.php
│       │   │       ├── Create.php
│       │   │       ├── Each.php
│       │   │       ├── EachPromise.php
│       │   │       ├── FulfilledPromise.php
│       │   │       ├── Is.php
│       │   │       ├── Promise.php
│       │   │       ├── PromiseInterface.php
│       │   │       ├── PromisorInterface.php
│       │   │       ├── RejectedPromise.php
│       │   │       ├── RejectionException.php
│       │   │       ├── TaskQueue.php
│       │   │       ├── TaskQueueInterface.php
│       │   │       └── Utils.php
│       │   └── psr7/
│       │       ├── CHANGELOG.md
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       └── src/
│       │           ├── AppendStream.php
│       │           ├── BufferStream.php
│       │           ├── CachingStream.php
│       │           ├── DroppingStream.php
│       │           ├── Exception/
│       │           │   └── MalformedUriException.php
│       │           ├── FnStream.php
│       │           ├── Header.php
│       │           ├── HttpFactory.php
│       │           ├── InflateStream.php
│       │           ├── LazyOpenStream.php
│       │           ├── LimitStream.php
│       │           ├── Message.php
│       │           ├── MessageTrait.php
│       │           ├── MimeType.php
│       │           ├── MultipartStream.php
│       │           ├── NoSeekStream.php
│       │           ├── PumpStream.php
│       │           ├── Query.php
│       │           ├── Request.php
│       │           ├── Response.php
│       │           ├── Rfc7230.php
│       │           ├── ServerRequest.php
│       │           ├── Stream.php
│       │           ├── StreamDecoratorTrait.php
│       │           ├── StreamWrapper.php
│       │           ├── UploadedFile.php
│       │           ├── Uri.php
│       │           ├── UriComparator.php
│       │           ├── UriNormalizer.php
│       │           ├── UriResolver.php
│       │           └── Utils.php
│       ├── league/
│       │   └── html-to-markdown/
│       │       ├── .github/
│       │       │   ├── FUNDING.yml
│       │       │   ├── ISSUE_TEMPLATE/
│       │       │   │   ├── 1_Conversion_error.yaml
│       │       │   │   ├── 2_Bug_report.yaml
│       │       │   │   └── 3_Feature_request.yaml
│       │       │   ├── SECURITY.md
│       │       │   ├── renovate.json
│       │       │   ├── stale.yml
│       │       │   └── workflows/
│       │       │       └── tests.yml
│       │       ├── CHANGELOG.md
│       │       ├── CONDUCT.md
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── bin/
│       │       │   └── html-to-markdown
│       │       ├── composer.json
│       │       ├── phpcs.xml.dist
│       │       ├── phpstan.neon.dist
│       │       ├── psalm.xml
│       │       └── src/
│       │           ├── Coerce.php
│       │           ├── Configuration.php
│       │           ├── ConfigurationAwareInterface.php
│       │           ├── Converter/
│       │           │   ├── BlockquoteConverter.php
│       │           │   ├── CodeConverter.php
│       │           │   ├── CommentConverter.php
│       │           │   ├── ConverterInterface.php
│       │           │   ├── DefaultConverter.php
│       │           │   ├── DivConverter.php
│       │           │   ├── EmphasisConverter.php
│       │           │   ├── HardBreakConverter.php
│       │           │   ├── HeaderConverter.php
│       │           │   ├── HorizontalRuleConverter.php
│       │           │   ├── ImageConverter.php
│       │           │   ├── LinkConverter.php
│       │           │   ├── ListBlockConverter.php
│       │           │   ├── ListItemConverter.php
│       │           │   ├── ParagraphConverter.php
│       │           │   ├── PreformattedConverter.php
│       │           │   ├── TableConverter.php
│       │           │   └── TextConverter.php
│       │           ├── Element.php
│       │           ├── ElementInterface.php
│       │           ├── Environment.php
│       │           ├── HtmlConverter.php
│       │           ├── HtmlConverterInterface.php
│       │           └── PreConverterInterface.php
│       ├── matthiasmullie/
│       │   ├── minify/
│       │   │   ├── LICENSE
│       │   │   ├── bin/
│       │   │   │   ├── minifycss
│       │   │   │   └── minifyjs
│       │   │   ├── composer.json
│       │   │   ├── data/
│       │   │   │   └── js/
│       │   │   │       ├── keywords_after.txt
│       │   │   │       ├── keywords_before.txt
│       │   │   │       ├── keywords_reserved.txt
│       │   │   │       ├── operators.txt
│       │   │   │       ├── operators_after.txt
│       │   │   │       └── operators_before.txt
│       │   │   └── src/
│       │   │       ├── CSS.php
│       │   │       ├── Exception.php
│       │   │       ├── Exceptions/
│       │   │       │   ├── BasicException.php
│       │   │       │   ├── FileImportException.php
│       │   │       │   ├── IOException.php
│       │   │       │   └── PatternMatchException.php
│       │   │       ├── JS.php
│       │   │       └── Minify.php
│       │   └── path-converter/
│       │       ├── LICENSE
│       │       ├── composer.json
│       │       └── src/
│       │           ├── Converter.php
│       │           ├── ConverterInterface.php
│       │           └── NoConverter.php
│       ├── michelf/
│       │   ├── php-markdown/
│       │   │   ├── .editorconfig
│       │   │   ├── .gitignore
│       │   │   ├── .scrutinizer.yml
│       │   │   ├── .travis.yml
│       │   │   ├── License.md
│       │   │   ├── Michelf/
│       │   │   │   ├── Markdown.inc.php
│       │   │   │   ├── Markdown.php
│       │   │   │   ├── MarkdownExtra.inc.php
│       │   │   │   ├── MarkdownExtra.php
│       │   │   │   ├── MarkdownInterface.inc.php
│       │   │   │   └── MarkdownInterface.php
│       │   │   ├── Readme.md
│       │   │   ├── Readme.php
│       │   │   ├── composer.json
│       │   │   ├── phpunit.xml.dist
│       │   │   └── test/
│       │   │       ├── bootstrap.php
│       │   │       ├── helpers/
│       │   │       │   └── MarkdownTestHelper.php
│       │   │       ├── integration/
│       │   │       │   └── PhpMarkdownTest.php
│       │   │       ├── resources/
│       │   │       │   ├── markdown.mdtest/
│       │   │       │   │   ├── Amps and angle encoding.text
│       │   │       │   │   ├── Amps and angle encoding.xhtml
│       │   │       │   │   ├── Auto links.text
│       │   │       │   │   ├── Auto links.xhtml
│       │   │       │   │   ├── Backslash escapes.text
│       │   │       │   │   ├── Backslash escapes.xhtml
│       │   │       │   │   ├── Blockquotes with code blocks.text
│       │   │       │   │   ├── Blockquotes with code blocks.xhtml
│       │   │       │   │   ├── Code Blocks.text
│       │   │       │   │   ├── Code Blocks.xhtml
│       │   │       │   │   ├── Code Spans.text
│       │   │       │   │   ├── Code Spans.xhtml
│       │   │       │   │   ├── Hard-wrapped paragraphs with list-like lines.text
│       │   │       │   │   ├── Hard-wrapped paragraphs with list-like lines.xhtml
│       │   │       │   │   ├── Horizontal rules.text
│       │   │       │   │   ├── Horizontal rules.xhtml
│       │   │       │   │   ├── Images.text
│       │   │       │   │   ├── Images.xhtml
│       │   │       │   │   ├── Inline HTML (Advanced).text
│       │   │       │   │   ├── Inline HTML (Advanced).xhtml
│       │   │       │   │   ├── Inline HTML (Simple).html
│       │   │       │   │   ├── Inline HTML (Simple).text
│       │   │       │   │   ├── Inline HTML comments.html
│       │   │       │   │   ├── Inline HTML comments.text
│       │   │       │   │   ├── Links, inline style.text
│       │   │       │   │   ├── Links, inline style.xhtml
│       │   │       │   │   ├── Links, reference style.text
│       │   │       │   │   ├── Links, reference style.xhtml
│       │   │       │   │   ├── Links, shortcut references.text
│       │   │       │   │   ├── Links, shortcut references.xhtml
│       │   │       │   │   ├── Literal quotes in titles.text
│       │   │       │   │   ├── Literal quotes in titles.xhtml
│       │   │       │   │   ├── Markdown Documentation - Basics.text
│       │   │       │   │   ├── Markdown Documentation - Basics.xhtml
│       │   │       │   │   ├── Markdown Documentation - Syntax.text
│       │   │       │   │   ├── Markdown Documentation - Syntax.xhtml
│       │   │       │   │   ├── Nested blockquotes.text
│       │   │       │   │   ├── Nested blockquotes.xhtml
│       │   │       │   │   ├── Ordered and unordered lists.text
│       │   │       │   │   ├── Ordered and unordered lists.xhtml
│       │   │       │   │   ├── Strong and em together.text
│       │   │       │   │   ├── Strong and em together.xhtml
│       │   │       │   │   ├── Tabs.text
│       │   │       │   │   ├── Tabs.xhtml
│       │   │       │   │   ├── Tidyness.text
│       │   │       │   │   └── Tidyness.xhtml
│       │   │       │   ├── php-markdown-extra.mdtest/
│       │   │       │   │   ├── Abbr.text
│       │   │       │   │   ├── Abbr.xhtml
│       │   │       │   │   ├── Backtick Fenced Code Blocks Special Cases.text
│       │   │       │   │   ├── Backtick Fenced Code Blocks Special Cases.xhtml
│       │   │       │   │   ├── Backtick Fenced Code Blocks.text
│       │   │       │   │   ├── Backtick Fenced Code Blocks.xhtml
│       │   │       │   │   ├── Definition Lists.text
│       │   │       │   │   ├── Definition Lists.xhtml
│       │   │       │   │   ├── Emphasis.text
│       │   │       │   │   ├── Emphasis.xhtml
│       │   │       │   │   ├── Footnotes.text
│       │   │       │   │   ├── Footnotes.xhtml
│       │   │       │   │   ├── Headers with attributes.text
│       │   │       │   │   ├── Headers with attributes.xhtml
│       │   │       │   │   ├── Inline HTML with Markdown content.text
│       │   │       │   │   ├── Inline HTML with Markdown content.xhtml
│       │   │       │   │   ├── Link & Image Attributes.text
│       │   │       │   │   ├── Link & Image Attributes.xhtml
│       │   │       │   │   ├── Tables.text
│       │   │       │   │   ├── Tables.xhtml
│       │   │       │   │   ├── Tilde Fenced Code Blocks Special Cases.text
│       │   │       │   │   ├── Tilde Fenced Code Blocks Special Cases.xhtml
│       │   │       │   │   ├── Tilde Fenced Code Blocks.text
│       │   │       │   │   └── Tilde Fenced Code Blocks.xhtml
│       │   │       │   └── php-markdown.mdtest/
│       │   │       │       ├── Adjacent Lists.text
│       │   │       │       ├── Adjacent Lists.xhtml
│       │   │       │       ├── Auto Links.text
│       │   │       │       ├── Auto Links.xhtml
│       │   │       │       ├── Backslash escapes.text
│       │   │       │       ├── Backslash escapes.xhtml
│       │   │       │       ├── Code Spans.text
│       │   │       │       ├── Code Spans.xhtml
│       │   │       │       ├── Code block in a list item.text
│       │   │       │       ├── Code block in a list item.xhtml
│       │   │       │       ├── Code block on second line.text
│       │   │       │       ├── Code block on second line.xhtml
│       │   │       │       ├── Code block regressions.text
│       │   │       │       ├── Code block regressions.xhtml
│       │   │       │       ├── Email auto links.text
│       │   │       │       ├── Email auto links.xhtml
│       │   │       │       ├── Emphasis.text
│       │   │       │       ├── Emphasis.xhtml
│       │   │       │       ├── Empty List Item.text
│       │   │       │       ├── Empty List Item.xhtml
│       │   │       │       ├── Headers.text
│       │   │       │       ├── Headers.xhtml
│       │   │       │       ├── Horizontal Rules.text
│       │   │       │       ├── Horizontal Rules.xhtml
│       │   │       │       ├── Inline HTML (Simple).html
│       │   │       │       ├── Inline HTML (Simple).text
│       │   │       │       ├── Inline HTML (Span).text
│       │   │       │       ├── Inline HTML (Span).xhtml
│       │   │       │       ├── Inline HTML comments.html
│       │   │       │       ├── Inline HTML comments.text
│       │   │       │       ├── Ins & del.text
│       │   │       │       ├── Ins & del.xhtml
│       │   │       │       ├── Links, inline style.text
│       │   │       │       ├── Links, inline style.xhtml
│       │   │       │       ├── MD5 Hashes.text
│       │   │       │       ├── MD5 Hashes.xhtml
│       │   │       │       ├── Mixed OLs and ULs.text
│       │   │       │       ├── Mixed OLs and ULs.xhtml
│       │   │       │       ├── Nesting.text
│       │   │       │       ├── Nesting.xhtml
│       │   │       │       ├── PHP-Specific Bugs.text
│       │   │       │       ├── PHP-Specific Bugs.xhtml
│       │   │       │       ├── Parens in URL.text
│       │   │       │       ├── Parens in URL.xhtml
│       │   │       │       ├── Quotes in attributes.text
│       │   │       │       ├── Quotes in attributes.xhtml
│       │   │       │       ├── Tight blocks.text
│       │   │       │       ├── Tight blocks.xhtml
│       │   │       │       ├── XML empty tag.text
│       │   │       │       └── XML empty tag.xhtml
│       │   │       └── unit/
│       │   │           └── MarkdownExtraTest.php
│       │   └── php-smartypants/
│       │       ├── License.md
│       │       ├── Michelf/
│       │       │   ├── SmartyPants.inc.php
│       │       │   ├── SmartyPants.php
│       │       │   ├── SmartyPantsTypographer.inc.php
│       │       │   └── SmartyPantsTypographer.php
│       │       ├── Readme.md
│       │       ├── Readme.php
│       │       └── composer.json
│       ├── psr/
│       │   ├── cache/
│       │   │   ├── CHANGELOG.md
│       │   │   ├── LICENSE.txt
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   └── src/
│       │   │       ├── CacheException.php
│       │   │       ├── CacheItemInterface.php
│       │   │       ├── CacheItemPoolInterface.php
│       │   │       └── InvalidArgumentException.php
│       │   ├── http-client/
│       │   │   ├── CHANGELOG.md
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   └── src/
│       │   │       ├── ClientExceptionInterface.php
│       │   │       ├── ClientInterface.php
│       │   │       ├── NetworkExceptionInterface.php
│       │   │       └── RequestExceptionInterface.php
│       │   ├── http-factory/
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   └── src/
│       │   │       ├── RequestFactoryInterface.php
│       │   │       ├── ResponseFactoryInterface.php
│       │   │       ├── ServerRequestFactoryInterface.php
│       │   │       ├── StreamFactoryInterface.php
│       │   │       ├── UploadedFileFactoryInterface.php
│       │   │       └── UriFactoryInterface.php
│       │   └── http-message/
│       │       ├── CHANGELOG.md
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       ├── docs/
│       │       │   ├── PSR7-Interfaces.md
│       │       │   └── PSR7-Usage.md
│       │       └── src/
│       │           ├── MessageInterface.php
│       │           ├── RequestInterface.php
│       │           ├── ResponseInterface.php
│       │           ├── ServerRequestInterface.php
│       │           ├── StreamInterface.php
│       │           ├── UploadedFileInterface.php
│       │           └── UriInterface.php
│       ├── ralouphie/
│       │   └── getallheaders/
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       └── src/
│       │           └── getallheaders.php
│       ├── rmccue/
│       │   └── requests/
│       │       ├── CHANGELOG.md
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       └── library/
│       │           ├── Requests/
│       │           │   ├── Auth/
│       │           │   │   └── Basic.php
│       │           │   ├── Auth.php
│       │           │   ├── Cookie/
│       │           │   │   └── Jar.php
│       │           │   ├── Cookie.php
│       │           │   ├── Exception/
│       │           │   │   ├── HTTP/
│       │           │   │   │   ├── 304.php
│       │           │   │   │   ├── 305.php
│       │           │   │   │   ├── 306.php
│       │           │   │   │   ├── 400.php
│       │           │   │   │   ├── 401.php
│       │           │   │   │   ├── 402.php
│       │           │   │   │   ├── 403.php
│       │           │   │   │   ├── 404.php
│       │           │   │   │   ├── 405.php
│       │           │   │   │   ├── 406.php
│       │           │   │   │   ├── 407.php
│       │           │   │   │   ├── 408.php
│       │           │   │   │   ├── 409.php
│       │           │   │   │   ├── 410.php
│       │           │   │   │   ├── 411.php
│       │           │   │   │   ├── 412.php
│       │           │   │   │   ├── 413.php
│       │           │   │   │   ├── 414.php
│       │           │   │   │   ├── 415.php
│       │           │   │   │   ├── 416.php
│       │           │   │   │   ├── 417.php
│       │           │   │   │   ├── 418.php
│       │           │   │   │   ├── 428.php
│       │           │   │   │   ├── 429.php
│       │           │   │   │   ├── 431.php
│       │           │   │   │   ├── 500.php
│       │           │   │   │   ├── 501.php
│       │           │   │   │   ├── 502.php
│       │           │   │   │   ├── 503.php
│       │           │   │   │   ├── 504.php
│       │           │   │   │   ├── 505.php
│       │           │   │   │   ├── 511.php
│       │           │   │   │   └── Unknown.php
│       │           │   │   ├── HTTP.php
│       │           │   │   ├── Transport/
│       │           │   │   │   └── cURL.php
│       │           │   │   └── Transport.php
│       │           │   ├── Exception.php
│       │           │   ├── Hooker.php
│       │           │   ├── Hooks.php
│       │           │   ├── IDNAEncoder.php
│       │           │   ├── IPv6.php
│       │           │   ├── IRI.php
│       │           │   ├── Proxy/
│       │           │   │   └── HTTP.php
│       │           │   ├── Proxy.php
│       │           │   ├── Response/
│       │           │   │   └── Headers.php
│       │           │   ├── Response.php
│       │           │   ├── SSL.php
│       │           │   ├── Session.php
│       │           │   ├── Transport/
│       │           │   │   ├── cURL.php
│       │           │   │   ├── cacert.pem
│       │           │   │   └── fsockopen.php
│       │           │   ├── Transport.php
│       │           │   └── Utility/
│       │           │       ├── CaseInsensitiveDictionary.php
│       │           │       └── FilteredIterator.php
│       │           └── Requests.php
│       ├── scssphp/
│       │   └── scssphp/
│       │       ├── LICENSE.md
│       │       ├── README.md
│       │       ├── bin/
│       │       │   └── pscss
│       │       ├── composer.json
│       │       ├── scss.inc.php
│       │       └── src/
│       │           ├── Base/
│       │           │   └── Range.php
│       │           ├── Block/
│       │           │   ├── AtRootBlock.php
│       │           │   ├── CallableBlock.php
│       │           │   ├── ContentBlock.php
│       │           │   ├── DirectiveBlock.php
│       │           │   ├── EachBlock.php
│       │           │   ├── ElseBlock.php
│       │           │   ├── ElseifBlock.php
│       │           │   ├── ForBlock.php
│       │           │   ├── IfBlock.php
│       │           │   ├── MediaBlock.php
│       │           │   ├── NestedPropertyBlock.php
│       │           │   └── WhileBlock.php
│       │           ├── Block.php
│       │           ├── Cache.php
│       │           ├── Colors.php
│       │           ├── CompilationResult.php
│       │           ├── Compiler/
│       │           │   ├── CachedResult.php
│       │           │   └── Environment.php
│       │           ├── Compiler.php
│       │           ├── Exception/
│       │           │   ├── CompilerException.php
│       │           │   ├── ParserException.php
│       │           │   ├── RangeException.php
│       │           │   ├── SassException.php
│       │           │   ├── SassScriptException.php
│       │           │   └── ServerException.php
│       │           ├── Formatter/
│       │           │   ├── Compact.php
│       │           │   ├── Compressed.php
│       │           │   ├── Crunched.php
│       │           │   ├── Debug.php
│       │           │   ├── Expanded.php
│       │           │   ├── Nested.php
│       │           │   └── OutputBlock.php
│       │           ├── Formatter.php
│       │           ├── Logger/
│       │           │   ├── LoggerInterface.php
│       │           │   ├── QuietLogger.php
│       │           │   └── StreamLogger.php
│       │           ├── Node/
│       │           │   └── Number.php
│       │           ├── Node.php
│       │           ├── OutputStyle.php
│       │           ├── Parser.php
│       │           ├── SourceMap/
│       │           │   ├── Base64.php
│       │           │   ├── Base64VLQ.php
│       │           │   └── SourceMapGenerator.php
│       │           ├── Type.php
│       │           ├── Util/
│       │           │   └── Path.php
│       │           ├── Util.php
│       │           ├── ValueConverter.php
│       │           ├── Version.php
│       │           └── Warn.php
│       ├── swiftmailer/
│       │   └── swiftmailer/
│       │       ├── .gitattributes
│       │       ├── .github/
│       │       │   ├── ISSUE_TEMPLATE.md
│       │       │   ├── PULL_REQUEST_TEMPLATE.md
│       │       │   └── workflows/
│       │       │       └── tests.yml
│       │       ├── .gitignore
│       │       ├── .php_cs.dist
│       │       ├── CHANGES
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       ├── doc/
│       │       │   ├── headers.rst
│       │       │   ├── index.rst
│       │       │   ├── introduction.rst
│       │       │   ├── japanese.rst
│       │       │   ├── messages.rst
│       │       │   ├── plugins.rst
│       │       │   └── sending.rst
│       │       └── lib/
│       │           ├── classes/
│       │           │   ├── Swift/
│       │           │   │   ├── AddressEncoder/
│       │           │   │   │   ├── IdnAddressEncoder.php
│       │           │   │   │   └── Utf8AddressEncoder.php
│       │           │   │   ├── AddressEncoder.php
│       │           │   │   ├── AddressEncoderException.php
│       │           │   │   ├── Attachment.php
│       │           │   │   ├── ByteStream/
│       │           │   │   │   ├── AbstractFilterableInputStream.php
│       │           │   │   │   ├── ArrayByteStream.php
│       │           │   │   │   ├── FileByteStream.php
│       │           │   │   │   └── TemporaryFileByteStream.php
│       │           │   │   ├── CharacterReader/
│       │           │   │   │   ├── GenericFixedWidthReader.php
│       │           │   │   │   ├── UsAsciiReader.php
│       │           │   │   │   └── Utf8Reader.php
│       │           │   │   ├── CharacterReader.php
│       │           │   │   ├── CharacterReaderFactory/
│       │           │   │   │   └── SimpleCharacterReaderFactory.php
│       │           │   │   ├── CharacterReaderFactory.php
│       │           │   │   ├── CharacterStream/
│       │           │   │   │   ├── ArrayCharacterStream.php
│       │           │   │   │   └── NgCharacterStream.php
│       │           │   │   ├── CharacterStream.php
│       │           │   │   ├── ConfigurableSpool.php
│       │           │   │   ├── DependencyContainer.php
│       │           │   │   ├── DependencyException.php
│       │           │   │   ├── EmbeddedFile.php
│       │           │   │   ├── Encoder/
│       │           │   │   │   ├── Base64Encoder.php
│       │           │   │   │   ├── QpEncoder.php
│       │           │   │   │   └── Rfc2231Encoder.php
│       │           │   │   ├── Encoder.php
│       │           │   │   ├── Events/
│       │           │   │   │   ├── CommandEvent.php
│       │           │   │   │   ├── CommandListener.php
│       │           │   │   │   ├── Event.php
│       │           │   │   │   ├── EventDispatcher.php
│       │           │   │   │   ├── EventListener.php
│       │           │   │   │   ├── EventObject.php
│       │           │   │   │   ├── ResponseEvent.php
│       │           │   │   │   ├── ResponseListener.php
│       │           │   │   │   ├── SendEvent.php
│       │           │   │   │   ├── SendListener.php
│       │           │   │   │   ├── SimpleEventDispatcher.php
│       │           │   │   │   ├── TransportChangeEvent.php
│       │           │   │   │   ├── TransportChangeListener.php
│       │           │   │   │   ├── TransportExceptionEvent.php
│       │           │   │   │   └── TransportExceptionListener.php
│       │           │   │   ├── FailoverTransport.php
│       │           │   │   ├── FileSpool.php
│       │           │   │   ├── FileStream.php
│       │           │   │   ├── Filterable.php
│       │           │   │   ├── IdGenerator.php
│       │           │   │   ├── Image.php
│       │           │   │   ├── InputByteStream.php
│       │           │   │   ├── IoException.php
│       │           │   │   ├── KeyCache/
│       │           │   │   │   ├── ArrayKeyCache.php
│       │           │   │   │   ├── DiskKeyCache.php
│       │           │   │   │   ├── KeyCacheInputStream.php
│       │           │   │   │   ├── NullKeyCache.php
│       │           │   │   │   └── SimpleKeyCacheInputStream.php
│       │           │   │   ├── KeyCache.php
│       │           │   │   ├── LoadBalancedTransport.php
│       │           │   │   ├── Mailer/
│       │           │   │   │   ├── ArrayRecipientIterator.php
│       │           │   │   │   └── RecipientIterator.php
│       │           │   │   ├── Mailer.php
│       │           │   │   ├── MemorySpool.php
│       │           │   │   ├── Message.php
│       │           │   │   ├── Mime/
│       │           │   │   │   ├── Attachment.php
│       │           │   │   │   ├── CharsetObserver.php
│       │           │   │   │   ├── ContentEncoder/
│       │           │   │   │   │   ├── Base64ContentEncoder.php
│       │           │   │   │   │   ├── NativeQpContentEncoder.php
│       │           │   │   │   │   ├── NullContentEncoder.php
│       │           │   │   │   │   ├── PlainContentEncoder.php
│       │           │   │   │   │   ├── QpContentEncoder.php
│       │           │   │   │   │   ├── QpContentEncoderProxy.php
│       │           │   │   │   │   └── RawContentEncoder.php
│       │           │   │   │   ├── ContentEncoder.php
│       │           │   │   │   ├── EmbeddedFile.php
│       │           │   │   │   ├── EncodingObserver.php
│       │           │   │   │   ├── Header.php
│       │           │   │   │   ├── HeaderEncoder/
│       │           │   │   │   │   ├── Base64HeaderEncoder.php
│       │           │   │   │   │   └── QpHeaderEncoder.php
│       │           │   │   │   ├── HeaderEncoder.php
│       │           │   │   │   ├── Headers/
│       │           │   │   │   │   ├── AbstractHeader.php
│       │           │   │   │   │   ├── DateHeader.php
│       │           │   │   │   │   ├── IdentificationHeader.php
│       │           │   │   │   │   ├── MailboxHeader.php
│       │           │   │   │   │   ├── OpenDKIMHeader.php
│       │           │   │   │   │   ├── ParameterizedHeader.php
│       │           │   │   │   │   ├── PathHeader.php
│       │           │   │   │   │   └── UnstructuredHeader.php
│       │           │   │   │   ├── IdGenerator.php
│       │           │   │   │   ├── MimePart.php
│       │           │   │   │   ├── SimpleHeaderFactory.php
│       │           │   │   │   ├── SimpleHeaderSet.php
│       │           │   │   │   ├── SimpleMessage.php
│       │           │   │   │   └── SimpleMimeEntity.php
│       │           │   │   ├── MimePart.php
│       │           │   │   ├── NullTransport.php
│       │           │   │   ├── OutputByteStream.php
│       │           │   │   ├── Plugins/
│       │           │   │   │   ├── AntiFloodPlugin.php
│       │           │   │   │   ├── BandwidthMonitorPlugin.php
│       │           │   │   │   ├── Decorator/
│       │           │   │   │   │   └── Replacements.php
│       │           │   │   │   ├── DecoratorPlugin.php
│       │           │   │   │   ├── ImpersonatePlugin.php
│       │           │   │   │   ├── Logger.php
│       │           │   │   │   ├── LoggerPlugin.php
│       │           │   │   │   ├── Loggers/
│       │           │   │   │   │   ├── ArrayLogger.php
│       │           │   │   │   │   └── EchoLogger.php
│       │           │   │   │   ├── MessageLogger.php
│       │           │   │   │   ├── Pop/
│       │           │   │   │   │   ├── Pop3Connection.php
│       │           │   │   │   │   └── Pop3Exception.php
│       │           │   │   │   ├── PopBeforeSmtpPlugin.php
│       │           │   │   │   ├── RedirectingPlugin.php
│       │           │   │   │   ├── Reporter.php
│       │           │   │   │   ├── ReporterPlugin.php
│       │           │   │   │   ├── Reporters/
│       │           │   │   │   │   ├── HitReporter.php
│       │           │   │   │   │   └── HtmlReporter.php
│       │           │   │   │   ├── Sleeper.php
│       │           │   │   │   ├── ThrottlerPlugin.php
│       │           │   │   │   └── Timer.php
│       │           │   │   ├── Preferences.php
│       │           │   │   ├── ReplacementFilterFactory.php
│       │           │   │   ├── RfcComplianceException.php
│       │           │   │   ├── SendmailTransport.php
│       │           │   │   ├── Signer.php
│       │           │   │   ├── Signers/
│       │           │   │   │   ├── BodySigner.php
│       │           │   │   │   ├── DKIMSigner.php
│       │           │   │   │   ├── DomainKeySigner.php
│       │           │   │   │   ├── HeaderSigner.php
│       │           │   │   │   ├── OpenDKIMSigner.php
│       │           │   │   │   └── SMimeSigner.php
│       │           │   │   ├── SmtpTransport.php
│       │           │   │   ├── Spool.php
│       │           │   │   ├── SpoolTransport.php
│       │           │   │   ├── StreamFilter.php
│       │           │   │   ├── StreamFilters/
│       │           │   │   │   ├── ByteArrayReplacementFilter.php
│       │           │   │   │   ├── StringReplacementFilter.php
│       │           │   │   │   └── StringReplacementFilterFactory.php
│       │           │   │   ├── SwiftException.php
│       │           │   │   ├── Transport/
│       │           │   │   │   ├── AbstractSmtpTransport.php
│       │           │   │   │   ├── Esmtp/
│       │           │   │   │   │   ├── Auth/
│       │           │   │   │   │   │   ├── CramMd5Authenticator.php
│       │           │   │   │   │   │   ├── LoginAuthenticator.php
│       │           │   │   │   │   │   ├── NTLMAuthenticator.php
│       │           │   │   │   │   │   ├── PlainAuthenticator.php
│       │           │   │   │   │   │   └── XOAuth2Authenticator.php
│       │           │   │   │   │   ├── AuthHandler.php
│       │           │   │   │   │   ├── Authenticator.php
│       │           │   │   │   │   ├── EightBitMimeHandler.php
│       │           │   │   │   │   └── SmtpUtf8Handler.php
│       │           │   │   │   ├── EsmtpHandler.php
│       │           │   │   │   ├── EsmtpTransport.php
│       │           │   │   │   ├── FailoverTransport.php
│       │           │   │   │   ├── IoBuffer.php
│       │           │   │   │   ├── LoadBalancedTransport.php
│       │           │   │   │   ├── NullTransport.php
│       │           │   │   │   ├── SendmailTransport.php
│       │           │   │   │   ├── SmtpAgent.php
│       │           │   │   │   ├── SpoolTransport.php
│       │           │   │   │   └── StreamBuffer.php
│       │           │   │   ├── Transport.php
│       │           │   │   └── TransportException.php
│       │           │   └── Swift.php
│       │           ├── dependency_maps/
│       │           │   ├── cache_deps.php
│       │           │   ├── message_deps.php
│       │           │   ├── mime_deps.php
│       │           │   └── transport_deps.php
│       │           ├── mime_types.php
│       │           ├── preferences.php
│       │           ├── swift_required.php
│       │           └── swiftmailer_generate_mimes_config.php
│       ├── symfony/
│       │   ├── deprecation-contracts/
│       │   │   ├── CHANGELOG.md
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   └── function.php
│       │   ├── polyfill-iconv/
│       │   │   ├── Iconv.php
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── Resources/
│       │   │   │   └── charset/
│       │   │   │       ├── from.big5.php
│       │   │   │       ├── from.cp037.php
│       │   │   │       ├── from.cp1006.php
│       │   │   │       ├── from.cp1026.php
│       │   │   │       ├── from.cp424.php
│       │   │   │       ├── from.cp437.php
│       │   │   │       ├── from.cp500.php
│       │   │   │       ├── from.cp737.php
│       │   │   │       ├── from.cp775.php
│       │   │   │       ├── from.cp850.php
│       │   │   │       ├── from.cp852.php
│       │   │   │       ├── from.cp855.php
│       │   │   │       ├── from.cp856.php
│       │   │   │       ├── from.cp857.php
│       │   │   │       ├── from.cp860.php
│       │   │   │       ├── from.cp861.php
│       │   │   │       ├── from.cp862.php
│       │   │   │       ├── from.cp863.php
│       │   │   │       ├── from.cp864.php
│       │   │   │       ├── from.cp865.php
│       │   │   │       ├── from.cp866.php
│       │   │   │       ├── from.cp869.php
│       │   │   │       ├── from.cp874.php
│       │   │   │       ├── from.cp875.php
│       │   │   │       ├── from.cp932.php
│       │   │   │       ├── from.cp936.php
│       │   │   │       ├── from.cp949.php
│       │   │   │       ├── from.cp950.php
│       │   │   │       ├── from.iso-8859-1.php
│       │   │   │       ├── from.iso-8859-10.php
│       │   │   │       ├── from.iso-8859-11.php
│       │   │   │       ├── from.iso-8859-13.php
│       │   │   │       ├── from.iso-8859-14.php
│       │   │   │       ├── from.iso-8859-15.php
│       │   │   │       ├── from.iso-8859-16.php
│       │   │   │       ├── from.iso-8859-2.php
│       │   │   │       ├── from.iso-8859-3.php
│       │   │   │       ├── from.iso-8859-4.php
│       │   │   │       ├── from.iso-8859-5.php
│       │   │   │       ├── from.iso-8859-6.php
│       │   │   │       ├── from.iso-8859-7.php
│       │   │   │       ├── from.iso-8859-8.php
│       │   │   │       ├── from.iso-8859-9.php
│       │   │   │       ├── from.koi8-r.php
│       │   │   │       ├── from.koi8-u.php
│       │   │   │       ├── from.us-ascii.php
│       │   │   │       ├── from.windows-1250.php
│       │   │   │       ├── from.windows-1251.php
│       │   │   │       ├── from.windows-1252.php
│       │   │   │       ├── from.windows-1253.php
│       │   │   │       ├── from.windows-1254.php
│       │   │   │       ├── from.windows-1255.php
│       │   │   │       ├── from.windows-1256.php
│       │   │   │       ├── from.windows-1257.php
│       │   │   │       ├── from.windows-1258.php
│       │   │   │       └── translit.php
│       │   │   ├── bootstrap.php
│       │   │   ├── bootstrap80.php
│       │   │   └── composer.json
│       │   ├── polyfill-intl-idn/
│       │   │   ├── Idn.php
│       │   │   ├── Info.php
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── Resources/
│       │   │   │   └── unidata/
│       │   │   │       ├── DisallowedRanges.php
│       │   │   │       ├── Regex.php
│       │   │   │       ├── deviation.php
│       │   │   │       ├── disallowed.php
│       │   │   │       ├── disallowed_STD3_mapped.php
│       │   │   │       ├── disallowed_STD3_valid.php
│       │   │   │       ├── ignored.php
│       │   │   │       ├── mapped.php
│       │   │   │       └── virama.php
│       │   │   ├── bootstrap.php
│       │   │   ├── bootstrap80.php
│       │   │   └── composer.json
│       │   ├── polyfill-intl-normalizer/
│       │   │   ├── LICENSE
│       │   │   ├── Normalizer.php
│       │   │   ├── README.md
│       │   │   ├── Resources/
│       │   │   │   ├── stubs/
│       │   │   │   │   └── Normalizer.php
│       │   │   │   └── unidata/
│       │   │   │       ├── canonicalComposition.php
│       │   │   │       ├── canonicalDecomposition.php
│       │   │   │       ├── combiningClass.php
│       │   │   │       └── compatibilityDecomposition.php
│       │   │   ├── bootstrap.php
│       │   │   ├── bootstrap80.php
│       │   │   └── composer.json
│       │   └── polyfill-mbstring/
│       │       ├── LICENSE
│       │       ├── Mbstring.php
│       │       ├── README.md
│       │       ├── Resources/
│       │       │   └── unidata/
│       │       │       ├── caseFolding.php
│       │       │       ├── lowerCase.php
│       │       │       ├── titleCaseRegexp.php
│       │       │       └── upperCase.php
│       │       ├── bootstrap.php
│       │       ├── bootstrap80.php
│       │       └── composer.json
│       └── true/
│           └── punycode/
│               ├── CHANGELOG.md
│               ├── LICENSE
│               ├── README.md
│               ├── composer.json
│               └── src/
│                   ├── Exception/
│                   │   ├── DomainOutOfBoundsException.php
│                   │   ├── LabelOutOfBoundsException.php
│                   │   └── OutOfBoundsException.php
│                   └── Punycode.php
├── config/
│   └── config.inc.php
├── index.php
├── layouts/
│   ├── default/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── default.layout.css
│   │   ├── default.layout.js
│   │   ├── default.layout.webfont.css
│   │   └── layout.html
│   ├── user_layout/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── layout.html
│   │   ├── user_layout.css
│   │   └── user_layout.js
│   └── xedition/
│       ├── conf/
│       │   └── info.xml
│       ├── css/
│       │   ├── idangerous.swiper.css
│       │   ├── layout.css
│       │   ├── webfont.css
│       │   ├── welcome.css
│       │   ├── widget.login.css
│       │   └── xeicon.css
│       ├── demo/
│       │   ├── copyright.html
│       │   ├── footer.html
│       │   ├── slide.html
│       │   ├── welcome_main.html
│       │   ├── welcome_sub1.html
│       │   ├── welcome_sub2.html
│       │   └── welcome_sub3.html
│       ├── js/
│       │   ├── idangerous.swiper.js
│       │   ├── jquery.parallax-scroll.js
│       │   ├── layout.js
│       │   └── welcome.js
│       ├── lang/
│       │   └── ko.php
│       └── layout.html
├── m.layouts/
│   ├── colorCode/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── css/
│   │   │   ├── Blue/
│   │   │   │   └── layout.css
│   │   │   ├── Gray/
│   │   │   │   └── layout.css
│   │   │   ├── Orange/
│   │   │   │   └── layout.css
│   │   │   ├── Red/
│   │   │   │   └── layout.css
│   │   │   ├── nGreenA/
│   │   │   │   └── layout.css
│   │   │   └── nGreenB/
│   │   │       └── layout.css
│   │   ├── js/
│   │   │   └── layout.js
│   │   └── layout.html
│   ├── default/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── layout.html
│   │   └── mx.css
│   └── simpleGray/
│       ├── conf/
│       │   └── info.xml
│       ├── layout.html
│       └── mx.css
├── modules/
│   ├── addon/
│   │   ├── addon.admin.controller.php
│   │   ├── addon.admin.model.php
│   │   ├── addon.admin.view.php
│   │   ├── addon.class.php
│   │   ├── addon.controller.php
│   │   ├── addon.model.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteAddon.xml
│   │   │   ├── deleteSiteAddon.xml
│   │   │   ├── deleteSiteAddons.xml
│   │   │   ├── getAddonInfo.xml
│   │   │   ├── getAddonIsActivated.xml
│   │   │   ├── getAddons.xml
│   │   │   ├── getMAddonIsActivated.xml
│   │   │   ├── getSiteAddonInfo.xml
│   │   │   ├── getSiteAddonIsActivated.xml
│   │   │   ├── getSiteAddons.xml
│   │   │   ├── getSiteMAddonIsActivated.xml
│   │   │   ├── insertAddon.xml
│   │   │   ├── insertSiteAddon.xml
│   │   │   ├── updateAddon.xml
│   │   │   └── updateSiteAddon.xml
│   │   ├── ruleset/
│   │   │   └── updateAddonSetup.xml
│   │   ├── schemas/
│   │   │   ├── addons.xml
│   │   │   └── addons_site.xml
│   │   └── tpl/
│   │       ├── addon_info.html
│   │       ├── addon_list.html
│   │       ├── css/
│   │       │   └── addon.css
│   │       ├── filter/
│   │       │   ├── setup_addon.xml
│   │       │   └── toggle_activate_addon.xml
│   │       ├── js/
│   │       │   └── addon.js
│   │       └── setup_addon.html
│   ├── admin/
│   │   ├── admin.admin.controller.php
│   │   ├── admin.admin.model.php
│   │   ├── admin.admin.view.php
│   │   ├── admin.class.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── controllers/
│   │   │   ├── AdminMenu.php
│   │   │   ├── Base.php
│   │   │   ├── Dashboard.php
│   │   │   ├── Design.php
│   │   │   ├── Install.php
│   │   │   ├── ServerEnv.php
│   │   │   ├── maintenance/
│   │   │   │   ├── CacheReset.php
│   │   │   │   └── Cleanup.php
│   │   │   └── systemconfig/
│   │   │       ├── Advanced.php
│   │   │       ├── Debug.php
│   │   │       ├── Domains.php
│   │   │       ├── Notification.php
│   │   │       ├── Queue.php
│   │   │       ├── SEO.php
│   │   │       ├── Security.php
│   │   │       └── SiteLock.php
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── models/
│   │   │   ├── AdminMenu.php
│   │   │   ├── Favorite.php
│   │   │   ├── Icon.php
│   │   │   └── Utility.php
│   │   ├── queries/
│   │   │   ├── deleteAllFavorite.xml
│   │   │   ├── deleteFavorite.xml
│   │   │   ├── deleteFavorites.xml
│   │   │   ├── getCommentCount.xml
│   │   │   ├── getCommentDeclaredCount.xml
│   │   │   ├── getCommentDeclaredStatus.xml
│   │   │   ├── getCommentStatus.xml
│   │   │   ├── getDocumentCount.xml
│   │   │   ├── getDocumentDeclaredCount.xml
│   │   │   ├── getDocumentDeclaredStatus.xml
│   │   │   ├── getDocumentStatus.xml
│   │   │   ├── getFavorite.xml
│   │   │   ├── getFavoriteList.xml
│   │   │   ├── getFileCount.xml
│   │   │   ├── getFileStatus.xml
│   │   │   ├── getMemberCount.xml
│   │   │   ├── getMemberStatus.xml
│   │   │   ├── getSiteAllList.xml
│   │   │   ├── getSiteCountByDate.xml
│   │   │   ├── getSiteVisitors.xml
│   │   │   ├── getTodayCommentCount.xml
│   │   │   ├── getTodayTrackbackCount.xml
│   │   │   ├── getTotalSiteVisitors.xml
│   │   │   ├── getTotalVisitors.xml
│   │   │   ├── getTrackbackCount.xml
│   │   │   ├── getTrackbackStatus.xml
│   │   │   ├── getVisitors.xml
│   │   │   └── insertFavorite.xml
│   │   ├── ruleset/
│   │   │   ├── insertThemeInfo.xml
│   │   │   └── sitelock.xml
│   │   ├── schemas/
│   │   │   └── admin_favorite.xml
│   │   └── tpl/
│   │       ├── _admin_common.html
│   │       ├── _dashboard_counter.html
│   │       ├── _dashboard_default.html
│   │       ├── _footer.html
│   │       ├── _header.html
│   │       ├── admin_setup.html
│   │       ├── cleanup.html
│   │       ├── config_advanced.html
│   │       ├── config_debug.html
│   │       ├── config_domains.html
│   │       ├── config_domains_edit.html
│   │       ├── config_header.html
│   │       ├── config_notification.html
│   │       ├── config_queue.html
│   │       ├── config_security.html
│   │       ├── config_seo.html
│   │       ├── config_sitelock.html
│   │       ├── css/
│   │       │   ├── admin.bootstrap.css
│   │       │   ├── admin.css
│   │       │   ├── admin.iefix.css
│   │       │   └── queue_config.scss
│   │       ├── favicon_upload.html
│   │       ├── index.html
│   │       ├── js/
│   │       │   ├── admin.js
│   │       │   ├── cleanup.js
│   │       │   ├── config.js
│   │       │   ├── dashboard_counter.js
│   │       │   ├── dashboard_default.js
│   │       │   ├── jquery.jstree.js
│   │       │   ├── jquery.tmpl.js
│   │       │   ├── menu_setup.js
│   │       │   ├── notification_config.js
│   │       │   ├── queue_config.js
│   │       │   └── themes/
│   │       │       ├── apple/
│   │       │       │   └── style.css
│   │       │       ├── classic/
│   │       │       │   └── style.css
│   │       │       ├── default/
│   │       │       │   └── style.css
│   │       │       └── default-rtl/
│   │       │           └── style.css
│   │       ├── layout.html
│   │       ├── popup_layout.html
│   │       └── server_env.html
│   ├── adminlogging/
│   │   ├── adminlogging.class.php
│   │   ├── adminlogging.controller.php
│   │   ├── adminlogging.model.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── queries/
│   │   │   └── insertLog.xml
│   │   └── schemas/
│   │       └── admin_log.xml
│   ├── advanced_mailer/
│   │   ├── advanced_mailer.admin.controller.php
│   │   ├── advanced_mailer.admin.view.php
│   │   ├── advanced_mailer.class.php
│   │   ├── advanced_mailer.controller.php
│   │   ├── advanced_mailer.model.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   └── ko.php
│   │   ├── queries/
│   │   │   ├── countMailLogByType.xml
│   │   │   ├── countPushLogByType.xml
│   │   │   ├── countSMSLogByType.xml
│   │   │   ├── deleteMailLogs.xml
│   │   │   ├── deletePushLogs.xml
│   │   │   ├── deleteSMSLogs.xml
│   │   │   ├── getMailLogByType.xml
│   │   │   ├── getPushLogByType.xml
│   │   │   ├── getSMSLogByType.xml
│   │   │   ├── insertMailLog.xml
│   │   │   ├── insertPushLog.xml
│   │   │   └── insertSMSLog.xml
│   │   ├── schemas/
│   │   │   ├── advanced_mailer_log.xml
│   │   │   ├── advanced_mailer_push_log.xml
│   │   │   └── advanced_mailer_sms_log.xml
│   │   └── tpl/
│   │       ├── common.html
│   │       ├── config.html
│   │       ├── css/
│   │       │   ├── config.css
│   │       │   ├── spf_dkim.css
│   │       │   └── view_log.css
│   │       ├── exceptions.html
│   │       ├── js/
│   │       │   ├── config.js
│   │       │   ├── spf_dkim.js
│   │       │   └── view_log.js
│   │       ├── mail_log.html
│   │       ├── mail_test.html
│   │       ├── push_log.html
│   │       ├── push_test.html
│   │       ├── sms_log.html
│   │       ├── sms_test.html
│   │       ├── spf_dkim.html
│   │       └── test_email.html
│   ├── autoinstall/
│   │   ├── autoinstall.admin.controller.php
│   │   ├── autoinstall.admin.model.php
│   │   ├── autoinstall.admin.view.php
│   │   ├── autoinstall.class.php
│   │   ├── autoinstall.lib.php
│   │   ├── autoinstall.model.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteCategory.xml
│   │   │   ├── deleteInstalledPackage.xml
│   │   │   ├── deletePackage.xml
│   │   │   ├── deletePackages.xml
│   │   │   ├── getCategories.xml
│   │   │   ├── getCategory.xml
│   │   │   ├── getHaveInstance.xml
│   │   │   ├── getInstalledPackage.xml
│   │   │   ├── getInstalledPackageCount.xml
│   │   │   ├── getInstalledPackageList.xml
│   │   │   ├── getInstalledPackages.xml
│   │   │   ├── getLatestPackage.xml
│   │   │   ├── getNeedUpdate.xml
│   │   │   ├── getPackage.xml
│   │   │   ├── getPackageCount.xml
│   │   │   ├── getPackageSrlByPath.xml
│   │   │   ├── getPackages.xml
│   │   │   ├── insertCategory.xml
│   │   │   ├── insertInstalledPackage.xml
│   │   │   ├── insertPackage.xml
│   │   │   ├── updateCategory.xml
│   │   │   ├── updateInstalledPackage.xml
│   │   │   └── updatePackage.xml
│   │   ├── schemas/
│   │   │   ├── ai_installed_packages.xml
│   │   │   ├── ai_remote_categories.xml
│   │   │   └── autoinstall_packages.xml
│   │   └── tpl/
│   │       ├── category.html
│   │       ├── config.html
│   │       ├── css/
│   │       │   └── autoinstall.css
│   │       ├── filter/
│   │       │   └── insert_config.xml
│   │       ├── header.html
│   │       ├── index.html
│   │       ├── install.html
│   │       ├── js/
│   │       │   ├── autoinstall.js
│   │       │   └── waiting.js
│   │       ├── list.html
│   │       └── uninstall.html
│   ├── board/
│   │   ├── board.admin.controller.php
│   │   ├── board.admin.model.php
│   │   ├── board.admin.view.php
│   │   ├── board.api.php
│   │   ├── board.class.php
│   │   ├── board.controller.php
│   │   ├── board.mobile.php
│   │   ├── board.model.php
│   │   ├── board.view.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── m.skins/
│   │   │   ├── default/
│   │   │   │   ├── _list.html
│   │   │   │   ├── category.html
│   │   │   │   ├── comment.html
│   │   │   │   ├── comment_form.html
│   │   │   │   ├── css/
│   │   │   │   │   └── mboard.css
│   │   │   │   ├── delete_comment_form.html
│   │   │   │   ├── delete_form.html
│   │   │   │   ├── input_password_form.html
│   │   │   │   ├── js/
│   │   │   │   │   └── mboard.js
│   │   │   │   ├── list.html
│   │   │   │   ├── read.html
│   │   │   │   ├── skin.xml
│   │   │   │   └── write_form.html
│   │   │   └── simpleGray/
│   │   │       ├── _list.html
│   │   │       ├── category.html
│   │   │       ├── comment.html
│   │   │       ├── comment_form.html
│   │   │       ├── css/
│   │   │       │   └── mboard.css
│   │   │       ├── delete_comment_form.html
│   │   │       ├── delete_form.html
│   │   │       ├── input_password_form.html
│   │   │       ├── js/
│   │   │       │   └── mboard.js
│   │   │       ├── list.html
│   │   │       ├── read.html
│   │   │       ├── skin.xml
│   │   │       └── write_form.html
│   │   ├── models/
│   │   │   └── Features.php
│   │   ├── queries/
│   │   │   ├── getAllBoard.xml
│   │   │   └── getBoardList.xml
│   │   ├── ruleset/
│   │   │   ├── insertBoard.xml
│   │   │   └── insertBoardForBasic.xml
│   │   ├── skins/
│   │   │   ├── default/
│   │   │   │   ├── _comment.html
│   │   │   │   ├── _footer.html
│   │   │   │   ├── _header.html
│   │   │   │   ├── _read.html
│   │   │   │   ├── _trackback.html
│   │   │   │   ├── board.default.css
│   │   │   │   ├── board.default.js
│   │   │   │   ├── comment.html
│   │   │   │   ├── comment_form.html
│   │   │   │   ├── delete_comment_form.html
│   │   │   │   ├── delete_form.html
│   │   │   │   ├── delete_trackback_form.html
│   │   │   │   ├── input_password_form.html
│   │   │   │   ├── list.html
│   │   │   │   ├── message.html
│   │   │   │   ├── skin.xml
│   │   │   │   ├── tag_list.html
│   │   │   │   └── write_form.html
│   │   │   └── xedition/
│   │   │       ├── _comment.html
│   │   │       ├── _footer.html
│   │   │       ├── _header.html
│   │   │       ├── _read.html
│   │   │       ├── _trackback.html
│   │   │       ├── board.default.css
│   │   │       ├── board.default.js
│   │   │       ├── comment.html
│   │   │       ├── comment_form.html
│   │   │       ├── delete_comment_form.html
│   │   │       ├── delete_form.html
│   │   │       ├── delete_trackback_form.html
│   │   │       ├── input_password_form.html
│   │   │       ├── list.html
│   │   │       ├── message.html
│   │   │       ├── skin.xml
│   │   │       ├── tag_list.html
│   │   │       ├── update_list.html
│   │   │       ├── update_view.html
│   │   │       ├── vote_log.html
│   │   │       └── write_form.html
│   │   └── tpl/
│   │       ├── addition_setup.html
│   │       ├── board_delete.html
│   │       ├── board_insert.html
│   │       ├── board_setup_basic.html
│   │       ├── category_list.html
│   │       ├── extra_vars.html
│   │       ├── filter/
│   │       │   ├── delete_board.xml
│   │       │   ├── delete_comment.xml
│   │       │   ├── delete_document.xml
│   │       │   ├── delete_trackback.xml
│   │       │   ├── input_password.xml
│   │       │   ├── insert.xml
│   │       │   ├── insert_admin.xml
│   │       │   ├── insert_board.xml
│   │       │   ├── insert_comment.xml
│   │       │   ├── search.xml
│   │       │   ├── update.xml
│   │       │   ├── update_category.xml
│   │       │   └── vote.xml
│   │       ├── grant_list.html
│   │       ├── header.html
│   │       ├── index.html
│   │       ├── js/
│   │       │   ├── board.js
│   │       │   ├── board_admin.js
│   │       │   └── rewrite.js
│   │       ├── skin_info.html
│   │       └── smartphone/
│   │           ├── comment_list.html
│   │           ├── list.html
│   │           └── view_document.html
│   ├── comment/
│   │   ├── comment.admin.controller.php
│   │   ├── comment.admin.view.php
│   │   ├── comment.class.php
│   │   ├── comment.controller.php
│   │   ├── comment.item.php
│   │   ├── comment.model.php
│   │   ├── comment.view.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteComment.xml
│   │   │   ├── deleteCommentList.xml
│   │   │   ├── deleteCommentVotedLog.xml
│   │   │   ├── deleteComments.xml
│   │   │   ├── deleteCommentsList.xml
│   │   │   ├── deleteDeclaredCommentLog.xml
│   │   │   ├── deleteDeclaredComments.xml
│   │   │   ├── deleteModuleComments.xml
│   │   │   ├── deleteModuleCommentsList.xml
│   │   │   ├── getAllComments.xml
│   │   │   ├── getChildCommentCount.xml
│   │   │   ├── getChildComments.xml
│   │   │   ├── getComment.xml
│   │   │   ├── getCommentCount.xml
│   │   │   ├── getCommentCountByMemberSrl.xml
│   │   │   ├── getCommentDeclaredLogInfo.xml
│   │   │   ├── getCommentDepth.xml
│   │   │   ├── getCommentList.xml
│   │   │   ├── getCommentListByMemberSrl.xml
│   │   │   ├── getCommentListItem.xml
│   │   │   ├── getCommentPage.xml
│   │   │   ├── getCommentPageItem.xml
│   │   │   ├── getCommentPageList.xml
│   │   │   ├── getCommentParentNextSibling.xml
│   │   │   ├── getCommentVotedLog.xml
│   │   │   ├── getCommentVotedLogInfo.xml
│   │   │   ├── getCommentVotedLogMulti.xml
│   │   │   ├── getComments.xml
│   │   │   ├── getCommentsByDocumentSrls.xml
│   │   │   ├── getDeclaredComment.xml
│   │   │   ├── getDeclaredLatest.xml
│   │   │   ├── getDeclaredList.xml
│   │   │   ├── getDeclaredLogByCommentSrl.xml
│   │   │   ├── getDistinctModules.xml
│   │   │   ├── getModuleList.xml
│   │   │   ├── getNewestCommentList.xml
│   │   │   ├── getTotalCommentCountByGroupStatus.xml
│   │   │   ├── getTotalCommentCountWithinMemberByGroupStatus.xml
│   │   │   ├── getTotalCommentList.xml
│   │   │   ├── getTotalCommentListWithinMember.xml
│   │   │   ├── getTotalCommentListWithoutJoin.xml
│   │   │   ├── getVotedMemberList.xml
│   │   │   ├── insertComment.xml
│   │   │   ├── insertCommentDeclaredLog.xml
│   │   │   ├── insertCommentList.xml
│   │   │   ├── insertCommentVotedLog.xml
│   │   │   ├── insertDeclaredComment.xml
│   │   │   ├── updateBlamedCount.xml
│   │   │   ├── updateComment.xml
│   │   │   ├── updateCommentByDelete.xml
│   │   │   ├── updateCommentByRestore.xml
│   │   │   ├── updateCommentListArrange.xml
│   │   │   ├── updateCommentListModule.xml
│   │   │   ├── updateCommentModule.xml
│   │   │   ├── updateDeclaredComment.xml
│   │   │   ├── updateDeclaredCommentCancel.xml
│   │   │   ├── updatePublishedStatus.xml
│   │   │   ├── updateUploadedCount.xml
│   │   │   └── updateVotedCount.xml
│   │   ├── ruleset/
│   │   │   ├── deleteChecked.xml
│   │   │   ├── insertCommentModuleConfig.xml
│   │   │   └── insertDeclare.xml
│   │   ├── schemas/
│   │   │   ├── comment_declared.xml
│   │   │   ├── comment_declared_log.xml
│   │   │   ├── comment_voted_log.xml
│   │   │   ├── comments.xml
│   │   │   └── comments_list.xml
│   │   └── tpl/
│   │       ├── comment_list.html
│   │       ├── comment_module_config.html
│   │       ├── css/
│   │       │   └── declare_comment.css
│   │       ├── declare_comment.html
│   │       ├── declared_list.html
│   │       ├── declared_log.html
│   │       ├── filter/
│   │       │   ├── delete_checked.xml
│   │       │   └── insert_comment_module_config.xml
│   │       ├── header.html
│   │       └── js/
│   │           └── comment_admin.js
│   ├── communication/
│   │   ├── communication.admin.controller.php
│   │   ├── communication.admin.model.php
│   │   ├── communication.admin.view.php
│   │   ├── communication.class.php
│   │   ├── communication.controller.php
│   │   ├── communication.mobile.php
│   │   ├── communication.model.php
│   │   ├── communication.view.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── m.skins/
│   │   │   └── default/
│   │   │       ├── css/
│   │   │       │   └── mcommunication.css
│   │   │       ├── friends.html
│   │   │       ├── js/
│   │   │       │   └── communication.js
│   │   │       ├── message_box.html
│   │   │       ├── messages.html
│   │   │       ├── read_message.html
│   │   │       ├── send_message.html
│   │   │       └── skin.xml
│   │   ├── queries/
│   │   │   ├── addFriend.xml
│   │   │   ├── addFriendGroup.xml
│   │   │   ├── deleteFriend.xml
│   │   │   ├── deleteFriendGroup.xml
│   │   │   ├── deleteMessage.xml
│   │   │   ├── deleteMessages.xml
│   │   │   ├── deleteMessagesMember.xml
│   │   │   ├── getFriendGroup.xml
│   │   │   ├── getFriendGroups.xml
│   │   │   ├── getFriends.xml
│   │   │   ├── getMessage.xml
│   │   │   ├── getMessages.xml
│   │   │   ├── getNewMessage.xml
│   │   │   ├── getNewMessageCount.xml
│   │   │   ├── getReadedMessages.xml
│   │   │   ├── getReceivedMessages.xml
│   │   │   ├── getRelatedMessages.xml
│   │   │   ├── getSendedMessages.xml
│   │   │   ├── getStoredMessages.xml
│   │   │   ├── isAddedFriend.xml
│   │   │   ├── moveFriend.xml
│   │   │   ├── renameFriendGroup.xml
│   │   │   ├── sendMessage.xml
│   │   │   ├── setMessageReaded.xml
│   │   │   ├── setMessageStored.xml
│   │   │   └── updateAllowMessage.xml
│   │   ├── ruleset/
│   │   │   ├── addFriend.xml
│   │   │   ├── addFriendGroup.xml
│   │   │   ├── deleteCheckedFriend.xml
│   │   │   ├── insertConfig.xml
│   │   │   ├── moveCheckedFriend.xml
│   │   │   └── sendMessage.xml
│   │   ├── schemas/
│   │   │   ├── member_friend.xml
│   │   │   ├── member_friend_group.xml
│   │   │   └── member_message.xml
│   │   ├── scripts/
│   │   │   └── cleanMessageFiles.php
│   │   ├── skins/
│   │   │   └── default/
│   │   │       ├── add_friend.html
│   │   │       ├── add_friend_group.html
│   │   │       ├── common_footer.html
│   │   │       ├── common_header.html
│   │   │       ├── css/
│   │   │       │   └── communication.css
│   │   │       ├── filter/
│   │   │       │   ├── add_friend.xml
│   │   │       │   ├── add_friend_group.xml
│   │   │       │   ├── delete_checked_friend.xml
│   │   │       │   ├── delete_checked_message.xml
│   │   │       │   ├── delete_friend_group.xml
│   │   │       │   ├── move_friend.xml
│   │   │       │   ├── send_message.xml
│   │   │       │   └── update_allow_message.xml
│   │   │       ├── friends.html
│   │   │       ├── js/
│   │   │       │   └── communication.js
│   │   │       ├── messages.html
│   │   │       ├── new_message.html
│   │   │       ├── send_message.html
│   │   │       └── skin.xml
│   │   └── tpl/
│   │       ├── colorset_list.html
│   │       ├── filter/
│   │       │   └── insert_config.xml
│   │       ├── index.html
│   │       └── js/
│   │           ├── communication_admin.js
│   │           ├── member_communication.js
│   │           └── window_type.js
│   ├── counter/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── counter.admin.view.php
│   │   ├── counter.class.php
│   │   ├── counter.controller.php
│   │   ├── counter.model.php
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── getCounterLog.xml
│   │   │   ├── getCounterLogStatus.xml
│   │   │   ├── getCounterStatus.xml
│   │   │   ├── getCounterStatusDays.xml
│   │   │   ├── getSiteCounterLogStatus.xml
│   │   │   ├── getSiteLogDate.xml
│   │   │   ├── getStartLogDate.xml
│   │   │   ├── getTodayStatus.xml
│   │   │   ├── insertCounterLog.xml
│   │   │   ├── insertTodayStatus.xml
│   │   │   ├── updateCounterPageview.xml
│   │   │   ├── updateCounterUnique.xml
│   │   │   ├── updateTotalCounterPageview.xml
│   │   │   └── updateTotalCounterUnique.xml
│   │   ├── schemas/
│   │   │   ├── counter_log.xml
│   │   │   ├── counter_site_status.xml
│   │   │   └── counter_status.xml
│   │   └── tpl/
│   │       ├── counter.css
│   │       ├── index.html
│   │       └── js/
│   │           └── counter_admin.js
│   ├── document/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── document.admin.controller.php
│   │   ├── document.admin.model.php
│   │   ├── document.admin.view.php
│   │   ├── document.class.php
│   │   ├── document.controller.php
│   │   ├── document.item.php
│   │   ├── document.model.php
│   │   ├── document.view.php
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteAlias.xml
│   │   │   ├── deleteCategory.xml
│   │   │   ├── deleteDeclared.xml
│   │   │   ├── deleteDeclaredDocument.xml
│   │   │   ├── deleteDeclaredDocumentLog.xml
│   │   │   ├── deleteDeclaredDocuments.xml
│   │   │   ├── deleteDocument.xml
│   │   │   ├── deleteDocumentDeclaredLog.xml
│   │   │   ├── deleteDocumentExtraKeys.xml
│   │   │   ├── deleteDocumentExtraVars.xml
│   │   │   ├── deleteDocumentReadedLog.xml
│   │   │   ├── deleteDocumentUpdateLog.xml
│   │   │   ├── deleteDocumentVotedLog.xml
│   │   │   ├── deleteHistory.xml
│   │   │   ├── deleteModuleCategory.xml
│   │   │   ├── deleteModuleDocument.xml
│   │   │   ├── deleteTrash.xml
│   │   │   ├── getAliases.xml
│   │   │   ├── getAllModules.xml
│   │   │   ├── getCategory.xml
│   │   │   ├── getCategoryDocumentCount.xml
│   │   │   ├── getCategoryDocumentCounts.xml
│   │   │   ├── getCategoryList.xml
│   │   │   ├── getChildCategoryCount.xml
│   │   │   ├── getChildCategoryMinListOrder.xml
│   │   │   ├── getDailyArchivedList.xml
│   │   │   ├── getDeclaredDocument.xml
│   │   │   ├── getDeclaredLatest.xml
│   │   │   ├── getDeclaredList.xml
│   │   │   ├── getDeclaredLogByDocumentSrl.xml
│   │   │   ├── getDocument.xml
│   │   │   ├── getDocumentCount.xml
│   │   │   ├── getDocumentCountByDate.xml
│   │   │   ├── getDocumentCountByGroupStatus.xml
│   │   │   ├── getDocumentCountByMemberSrl.xml
│   │   │   ├── getDocumentDeclaredLogInfo.xml
│   │   │   ├── getDocumentDivision.xml
│   │   │   ├── getDocumentDivisionCount.xml
│   │   │   ├── getDocumentDivisionUseIndex.xml
│   │   │   ├── getDocumentExtraKeys.xml
│   │   │   ├── getDocumentExtraVars.xml
│   │   │   ├── getDocumentExtraVarsCount.xml
│   │   │   ├── getDocumentList.xml
│   │   │   ├── getDocumentListByMemberSrl.xml
│   │   │   ├── getDocumentListExtraSort.xml
│   │   │   ├── getDocumentListPage.xml
│   │   │   ├── getDocumentListUseIndex.xml
│   │   │   ├── getDocumentListWithExtraVars.xml
│   │   │   ├── getDocumentListWithExtraVarsPage.xml
│   │   │   ├── getDocumentListWithinComment.xml
│   │   │   ├── getDocumentListWithinCommentPage.xml
│   │   │   ├── getDocumentListWithinExtraVars.xml
│   │   │   ├── getDocumentListWithinExtraVarsExtraSort.xml
│   │   │   ├── getDocumentListWithinMember.xml
│   │   │   ├── getDocumentListWithinTag.xml
│   │   │   ├── getDocumentListWithinTagPage.xml
│   │   │   ├── getDocumentMaxExtraKeyIdx.xml
│   │   │   ├── getDocumentNumericExtraKeys.xml
│   │   │   ├── getDocumentReadedLogInfo.xml
│   │   │   ├── getDocumentSrlByAlias.xml
│   │   │   ├── getDocumentSrlByTitle.xml
│   │   │   ├── getDocumentTags.xml
│   │   │   ├── getDocumentTranslationLangCodes.xml
│   │   │   ├── getDocumentUpdateLog.xml
│   │   │   ├── getDocumentVotedLog.xml
│   │   │   ├── getDocumentVotedLogInfo.xml
│   │   │   ├── getDocuments.xml
│   │   │   ├── getDocumentsExtraVars.xml
│   │   │   ├── getGroupsExtraKeys.xml
│   │   │   ├── getGroupsExtraVars.xml
│   │   │   ├── getHistories.xml
│   │   │   ├── getHistory.xml
│   │   │   ├── getModuleList.xml
│   │   │   ├── getMonthlyArchivedList.xml
│   │   │   ├── getNoticeList.xml
│   │   │   ├── getTrash.xml
│   │   │   ├── getTrashByDocumentSrl.xml
│   │   │   ├── getTrashList.xml
│   │   │   ├── getUpdateLog.xml
│   │   │   ├── getUpdateLogAdminisExists.xml
│   │   │   ├── getVotedMemberList.xml
│   │   │   ├── insertAlias.xml
│   │   │   ├── insertCategory.xml
│   │   │   ├── insertDeclaredDocument.xml
│   │   │   ├── insertDocument.xml
│   │   │   ├── insertDocumentDeclaredLog.xml
│   │   │   ├── insertDocumentExtraKey.xml
│   │   │   ├── insertDocumentExtraVar.xml
│   │   │   ├── insertDocumentReadedLog.xml
│   │   │   ├── insertDocumentUpdateLog.xml
│   │   │   ├── insertDocumentVotedLog.xml
│   │   │   ├── insertHistory.xml
│   │   │   ├── insertTrash.xml
│   │   │   ├── isExistsExtraKey.xml
│   │   │   ├── moveDocumentExtraVars.xml
│   │   │   ├── updateBlamedCount.xml
│   │   │   ├── updateCategory.xml
│   │   │   ├── updateCategoryCount.xml
│   │   │   ├── updateCategoryIsDefault.xml
│   │   │   ├── updateCategoryOrder.xml
│   │   │   ├── updateCommentCount.xml
│   │   │   ├── updateDeclaredDocument.xml
│   │   │   ├── updateDeclaredDocumentCancel.xml
│   │   │   ├── updateDocument.xml
│   │   │   ├── updateDocumentCategory.xml
│   │   │   ├── updateDocumentCommentStatus.xml
│   │   │   ├── updateDocumentExtraKey.xml
│   │   │   ├── updateDocumentExtraKeyEid.xml
│   │   │   ├── updateDocumentExtraKeyIdx.xml
│   │   │   ├── updateDocumentExtraKeyIdxOrder.xml
│   │   │   ├── updateDocumentExtraVar.xml
│   │   │   ├── updateDocumentExtraVarEid.xml
│   │   │   ├── updateDocumentExtraVarIdx.xml
│   │   │   ├── updateDocumentExtraVarIdxOrder.xml
│   │   │   ├── updateDocumentExtraVarSortValue.xml
│   │   │   ├── updateDocumentExtraVarsModule.xml
│   │   │   ├── updateDocumentModule.xml
│   │   │   ├── updateDocumentOrder.xml
│   │   │   ├── updateDocumentStatus.xml
│   │   │   ├── updateDocumentTags.xml
│   │   │   ├── updateDocumentsAllowCommentTrackback.xml
│   │   │   ├── updateDocumentsLangCode.xml
│   │   │   ├── updateDocumentsModule.xml
│   │   │   ├── updateDocumentsSecret.xml
│   │   │   ├── updateReadedCount.xml
│   │   │   ├── updateTrackbackCount.xml
│   │   │   ├── updateUploadedCount.xml
│   │   │   └── updateVotedCount.xml
│   │   ├── ruleset/
│   │   │   ├── deleteAlias.xml
│   │   │   ├── insertAlias.xml
│   │   │   ├── insertCategory.xml
│   │   │   ├── insertDeclare.xml
│   │   │   └── insertExtraVar.xml
│   │   ├── schemas/
│   │   │   ├── document_aliases.xml
│   │   │   ├── document_categories.xml
│   │   │   ├── document_declared.xml
│   │   │   ├── document_declared_log.xml
│   │   │   ├── document_extra_keys.xml
│   │   │   ├── document_extra_vars.xml
│   │   │   ├── document_histories.xml
│   │   │   ├── document_readed_log.xml
│   │   │   ├── document_trash.xml
│   │   │   ├── document_update_log.xml
│   │   │   ├── document_voted_log.xml
│   │   │   └── documents.xml
│   │   └── tpl/
│   │       ├── category_list.html
│   │       ├── checked_list.html
│   │       ├── css/
│   │       │   ├── declare_document.css
│   │       │   └── document_admin.css
│   │       ├── declare_document.html
│   │       ├── declared_list.html
│   │       ├── declared_log.html
│   │       ├── document_alias.html
│   │       ├── document_config.html
│   │       ├── document_list.html
│   │       ├── document_module_config.html
│   │       ├── document_trash_list.html
│   │       ├── extra_keys.html
│   │       ├── filter/
│   │       │   ├── delete_alias.xml
│   │       │   ├── delete_category.xml
│   │       │   ├── delete_checked.xml
│   │       │   ├── delete_extra_var.xml
│   │       │   ├── insert_alias.xml
│   │       │   ├── insert_category.xml
│   │       │   ├── insert_config.xml
│   │       │   ├── insert_document_module_config.xml
│   │       │   ├── insert_extra_var.xml
│   │       │   ├── manage_checked_document.xml
│   │       │   ├── move_category.xml
│   │       │   └── restore_trash.xml
│   │       ├── header.html
│   │       ├── js/
│   │       │   ├── document_admin.js
│   │       │   ├── document_category.js
│   │       │   └── document_extra_keys.js
│   │       ├── preview_page.html
│   │       ├── print_page.html
│   │       └── saved_list_popup.html
│   ├── editor/
│   │   ├── components/
│   │   │   ├── emoticon/
│   │   │   │   ├── emoticon.class.php
│   │   │   │   ├── info.xml
│   │   │   │   └── tpl/
│   │   │   │       ├── images/
│   │   │   │       │   └── Twemoji/
│   │   │   │       │       ├── LICENSE
│   │   │   │       │       ├── LICENSE-GRAPHICS
│   │   │   │       │       ├── README.md
│   │   │   │       │       └── skin.xml
│   │   │   │       ├── popup.html
│   │   │   │       ├── popup.js
│   │   │   │       └── popup.scss
│   │   │   ├── image_gallery/
│   │   │   │   ├── image_gallery.class.php
│   │   │   │   ├── info.xml
│   │   │   │   ├── lang/
│   │   │   │   │   └── lang.xml
│   │   │   │   └── tpl/
│   │   │   │       ├── gallery.js
│   │   │   │       ├── list_gallery.html
│   │   │   │       ├── list_gallery.js
│   │   │   │       ├── popup.css
│   │   │   │       ├── popup.html
│   │   │   │       ├── popup.js
│   │   │   │       ├── slide_gallery.css
│   │   │   │       ├── slide_gallery.html
│   │   │   │       └── slide_gallery.js
│   │   │   ├── image_link/
│   │   │   │   ├── image_link.class.php
│   │   │   │   ├── info.xml
│   │   │   │   ├── lang/
│   │   │   │   │   └── lang.xml
│   │   │   │   └── tpl/
│   │   │   │       ├── popup.css
│   │   │   │       ├── popup.html
│   │   │   │       └── popup.js
│   │   │   └── poll_maker/
│   │   │       ├── info.xml
│   │   │       ├── lang/
│   │   │       │   └── lang.xml
│   │   │       ├── poll_maker.class.php
│   │   │       └── tpl/
│   │   │           ├── filter/
│   │   │           │   └── insert_poll.xml
│   │   │           ├── popup.css
│   │   │           ├── popup.html
│   │   │           └── popup.js
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── editor.admin.controller.php
│   │   ├── editor.admin.view.php
│   │   ├── editor.api.php
│   │   ├── editor.class.php
│   │   ├── editor.controller.php
│   │   ├── editor.model.php
│   │   ├── editor.view.php
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteSavedDoc.xml
│   │   │   ├── deleteSiteComponent.xml
│   │   │   ├── getComponent.xml
│   │   │   ├── getComponentList.xml
│   │   │   ├── getSavedDocument.xml
│   │   │   ├── getSiteComponent.xml
│   │   │   ├── getSiteComponentList.xml
│   │   │   ├── insertComponent.xml
│   │   │   ├── insertSavedDoc.xml
│   │   │   ├── insertSiteComponent.xml
│   │   │   ├── isComponentInserted.xml
│   │   │   ├── isSiteComponentInserted.xml
│   │   │   ├── updateComponent.xml
│   │   │   └── updateSiteComponent.xml
│   │   ├── ruleset/
│   │   │   ├── componentOrderAndUse.xml
│   │   │   ├── generalConfig.xml
│   │   │   └── setupComponent.xml
│   │   ├── schemas/
│   │   │   ├── editor_autosave.xml
│   │   │   ├── editor_components.xml
│   │   │   └── editor_components_site.xml
│   │   ├── skins/
│   │   │   ├── ckeditor/
│   │   │   │   ├── config.blade.php
│   │   │   │   ├── css/
│   │   │   │   │   └── ckeditor.scss
│   │   │   │   ├── editor.html
│   │   │   │   ├── file_upload.html
│   │   │   │   ├── js/
│   │   │   │   │   ├── editor.js
│   │   │   │   │   ├── file_upload.js
│   │   │   │   │   └── xe_textarea.js
│   │   │   │   ├── lang/
│   │   │   │   │   ├── en.php
│   │   │   │   │   └── ko.php
│   │   │   │   └── skin.xml
│   │   │   ├── simpleeditor/
│   │   │   │   ├── css/
│   │   │   │   │   └── simpleeditor.scss
│   │   │   │   ├── editor.html
│   │   │   │   ├── js/
│   │   │   │   │   ├── interface.js
│   │   │   │   │   └── simpleeditor.js
│   │   │   │   └── skin.xml
│   │   │   └── textarea/
│   │   │       ├── css/
│   │   │       │   └── textarea.css
│   │   │       ├── editor.html
│   │   │       ├── js/
│   │   │       │   ├── interface.js
│   │   │       │   └── textarea.js
│   │   │       └── skin.xml
│   │   └── tpl/
│   │       ├── admin_index.html
│   │       ├── component_not_founded.html
│   │       ├── config_preview.html
│   │       ├── css/
│   │       │   ├── editor.css
│   │       │   ├── editor_admin.css
│   │       │   ├── editor_module_config.css
│   │       │   └── view_component.css
│   │       ├── editor_frame.html
│   │       ├── editor_module_config.html
│   │       ├── filter/
│   │       │   ├── insert_editor_module_config.xml
│   │       │   └── setup_component.xml
│   │       ├── images/
│   │       │   └── SWFUpload.swf
│   │       ├── js/
│   │       │   ├── editor.app.js
│   │       │   ├── editor_admin.js
│   │       │   ├── editor_common.js
│   │       │   └── editor_module_config.js
│   │       ├── popup.html
│   │       ├── setup_component.html
│   │       └── view_component.html
│   ├── extravar/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── controllers/
│   │   │   ├── Base.php
│   │   │   ├── Config.php
│   │   │   └── Install.php
│   │   ├── models/
│   │   │   ├── Value.php
│   │   │   └── ValueCollection.php
│   │   ├── skins/
│   │   │   └── default/
│   │   │       ├── assets/
│   │   │       │   ├── file_upload.js
│   │   │       │   └── number.js
│   │   │       ├── form.blade.php
│   │   │       ├── form_types/
│   │   │       │   ├── checkbox.blade.php
│   │   │       │   ├── datetime.blade.php
│   │   │       │   ├── file_upload.blade.php
│   │   │       │   ├── kr_zip.blade.php
│   │   │       │   ├── locale.blade.php
│   │   │       │   ├── password.blade.php
│   │   │       │   ├── select.blade.php
│   │   │       │   ├── tel.blade.php
│   │   │       │   ├── text.blade.php
│   │   │       │   └── textarea.blade.php
│   │   │       └── skin.xml
│   │   └── views/
│   │       ├── config.blade.php
│   │       └── header.blade.php
│   ├── file/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── file.admin.controller.php
│   │   ├── file.admin.model.php
│   │   ├── file.admin.view.php
│   │   ├── file.class.php
│   │   ├── file.controller.php
│   │   ├── file.model.php
│   │   ├── file.view.php
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteFile.xml
│   │   │   ├── deleteFiles.xml
│   │   │   ├── deleteModuleFiles.xml
│   │   │   ├── getAttachedFileSize.xml
│   │   │   ├── getCoverImage.xml
│   │   │   ├── getFile.xml
│   │   │   ├── getFileList.xml
│   │   │   ├── getFileListByTargetStatus.xml
│   │   │   ├── getFiles.xml
│   │   │   ├── getFilesCount.xml
│   │   │   ├── getFilesCountByGroupValid.xml
│   │   │   ├── getModuleFiles.xml
│   │   │   ├── getModuleFilesProper.xml
│   │   │   ├── getModuleList.xml
│   │   │   ├── getOneFileInDocument.xml
│   │   │   ├── insertFile.xml
│   │   │   ├── insertFileChangelog.xml
│   │   │   ├── updateClearCoverImage.xml
│   │   │   ├── updateCoverImage.xml
│   │   │   ├── updateFile.xml
│   │   │   ├── updateFileDownloadCount.xml
│   │   │   ├── updateFileModule.xml
│   │   │   ├── updateFileModuleComment.xml
│   │   │   ├── updateFileName.xml
│   │   │   ├── updateFileTargetType.xml
│   │   │   └── updateFileValid.xml
│   │   ├── ruleset/
│   │   │   ├── deleteChecked.xml
│   │   │   ├── fileModuleConfig.xml
│   │   │   └── insertConfig.xml
│   │   ├── schemas/
│   │   │   ├── files.xml
│   │   │   └── files_changelog.xml
│   │   ├── scripts/
│   │   │   ├── cleanEmptyDirs.php
│   │   │   ├── cleanGarbageFiles.php
│   │   │   └── cleanThumbnails.php
│   │   └── tpl/
│   │       ├── css/
│   │       │   ├── config.css
│   │       │   └── file_list.css
│   │       ├── download_config.html
│   │       ├── file_edit.html
│   │       ├── file_list.html
│   │       ├── file_module_config.html
│   │       ├── filter/
│   │       │   ├── delete_checked.xml
│   │       │   ├── insert_config.xml
│   │       │   └── insert_file_module_config.xml
│   │       ├── header.html
│   │       ├── iframe.html
│   │       ├── js/
│   │       │   ├── config.js
│   │       │   ├── file_admin.js
│   │       │   └── fileupload.app.js
│   │       ├── other_config.html
│   │       ├── print_uploaded_file_list.html
│   │       └── upload_config.html
│   ├── importer/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── extract.class.php
│   │   ├── importer.admin.controller.php
│   │   ├── importer.admin.view.php
│   │   ├── importer.class.php
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── getCommentMemberSrlWithUserID.xml
│   │   │   ├── getCommentMemberSrlWithUserIDByEmail.xml
│   │   │   ├── getDocumentMemberSrlWithUserID.xml
│   │   │   ├── getDocumentMemberSrlWithUserIDByEmail.xml
│   │   │   ├── updateCommentSync.xml
│   │   │   ├── updateCommentSyncByEmail.xml
│   │   │   ├── updateCommentSyncForCUBRID.xml
│   │   │   ├── updateCommentSyncForCUBRIDByEmail.xml
│   │   │   ├── updateDocumentSync.xml
│   │   │   ├── updateDocumentSyncByEmail.xml
│   │   │   ├── updateDocumentSyncForCUBRID.xml
│   │   │   └── updateDocumentSyncForCUBRIDByEmail.xml
│   │   ├── tpl/
│   │   │   ├── filter/
│   │   │   │   └── step1.xml
│   │   │   ├── header.html
│   │   │   ├── index.html
│   │   │   ├── js/
│   │   │   │   └── importer_admin.js
│   │   │   └── process.html
│   │   └── ttimport.class.php
│   ├── install/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── install.admin.controller.php
│   │   ├── install.class.php
│   │   ├── install.controller.php
│   │   ├── install.model.php
│   │   ├── install.view.php
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── ruleset/
│   │   │   └── install.xml
│   │   ├── schemas/
│   │   │   └── sequence.xml
│   │   ├── script/
│   │   │   ├── ko.install.php
│   │   │   ├── welcome_content/
│   │   │   │   ├── welcome.css
│   │   │   │   └── welcome_content.html
│   │   │   └── xeicon_content/
│   │   │       ├── xeicon_content_ko_1.html
│   │   │       ├── xeicon_content_ko_2.html
│   │   │       ├── xeicon_content_ko_3.html
│   │   │       └── xeicon_content_ko_4.html
│   │   └── tpl/
│   │       ├── check_env.html
│   │       ├── css/
│   │       │   └── install.css
│   │       ├── db_config.html
│   │       ├── filter/
│   │       │   ├── admin.xml
│   │       │   ├── config.xml
│   │       │   ├── cubrid.xml
│   │       │   ├── firebird.xml
│   │       │   ├── mssql.xml
│   │       │   ├── mysql.xml
│   │       │   ├── postgresql.xml
│   │       │   └── sqlite2.xml
│   │       ├── footer.html
│   │       ├── header.html
│   │       ├── introduce.html
│   │       ├── js/
│   │       │   └── install.js
│   │       ├── license_agreement.html
│   │       ├── license_text.en.html
│   │       ├── license_text.ko.html
│   │       ├── other_config.html
│   │       └── progress_menu.html
│   ├── integration_search/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── integration_search.admin.controller.php
│   │   ├── integration_search.admin.view.php
│   │   ├── integration_search.class.php
│   │   ├── integration_search.mobile.php
│   │   ├── integration_search.model.php
│   │   ├── integration_search.view.php
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── models/
│   │   │   └── FileSearchResult.php
│   │   ├── ruleset/
│   │   │   └── insertConfig.xml
│   │   ├── skins/
│   │   │   ├── default/
│   │   │   │   ├── comment.html
│   │   │   │   ├── document.html
│   │   │   │   ├── file.html
│   │   │   │   ├── header.html
│   │   │   │   ├── index.html
│   │   │   │   ├── multimedia.html
│   │   │   │   ├── no_keywords.html
│   │   │   │   ├── skin.xml
│   │   │   │   └── white.css
│   │   │   └── misol_town/
│   │   │       ├── LICENSE
│   │   │       ├── _page.html
│   │   │       ├── comment.html
│   │   │       ├── css/
│   │   │       │   ├── blue.css
│   │   │       │   └── crimson.css
│   │   │       ├── document.html
│   │   │       ├── file.html
│   │   │       ├── footer.html
│   │   │       ├── header.html
│   │   │       ├── index.html
│   │   │       ├── multimedia.html
│   │   │       ├── no_keywords.html
│   │   │       ├── skin.xml
│   │   │       └── trackback.html
│   │   └── tpl/
│   │       ├── filter/
│   │       │   └── insert_config.xml
│   │       ├── header.html
│   │       ├── index.html
│   │       ├── js/
│   │       │   └── integration_search_admin.js
│   │       └── skin_info.html
│   ├── krzip/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── krzip.admin.controller.php
│   │   ├── krzip.admin.view.php
│   │   ├── krzip.class.php
│   │   ├── krzip.controller.php
│   │   ├── krzip.model.php
│   │   ├── krzip.view.php
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   └── ko.php
│   │   ├── ruleset/
│   │   │   └── krzipConfig.xml
│   │   └── tpl/
│   │       ├── config.html
│   │       ├── css/
│   │       │   ├── default.css
│   │       │   └── popup.css
│   │       ├── js/
│   │       │   ├── admin.js
│   │       │   ├── daumapi.js
│   │       │   ├── epostapi.js
│   │       │   ├── epostapi.search.js
│   │       │   └── postcodify.js
│   │       ├── searchForm.epostapi.html
│   │       ├── template.daumapi.html
│   │       ├── template.epostapi.html
│   │       └── template.postcodify.html
│   ├── layout/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── faceoff/
│   │   │   ├── conf/
│   │   │   │   └── info.xml
│   │   │   ├── css/
│   │   │   │   └── layout.css
│   │   │   ├── js/
│   │   │   │   └── layout.js
│   │   │   ├── layout.html
│   │   │   └── layout.ini
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── layout.admin.controller.php
│   │   ├── layout.admin.model.php
│   │   ├── layout.admin.view.php
│   │   ├── layout.class.php
│   │   ├── layout.model.php
│   │   ├── layout.view.php
│   │   ├── queries/
│   │   │   ├── deleteLayout.xml
│   │   │   ├── getLayout.xml
│   │   │   ├── getLayoutDotList.xml
│   │   │   ├── getLayoutList.xml
│   │   │   ├── getLayoutModules.xml
│   │   │   ├── getOneModuleInstanceByModuleName.xml
│   │   │   ├── insertLayout.xml
│   │   │   ├── updateAllLayoutInSiteWithTheme.xml
│   │   │   ├── updateLayout.xml
│   │   │   ├── updateModuleLayout.xml
│   │   │   └── updateModuleMLayout.xml
│   │   ├── ruleset/
│   │   │   ├── codeUpdate.xml
│   │   │   ├── deleteLayout.xml
│   │   │   ├── imageUpload.xml
│   │   │   ├── insertLayout.xml
│   │   │   ├── updateLayout.xml
│   │   │   └── userLayoutImport.xml
│   │   ├── schemas/
│   │   │   └── layouts.xml
│   │   └── tpl/
│   │       ├── after_upload_config_image.html
│   │       ├── copy_layout.html
│   │       ├── css/
│   │       │   ├── faceoff_menu.css
│   │       │   └── widget.css
│   │       ├── faceoff_layout_edit.html
│   │       ├── faceoff_layout_menu.html
│   │       ├── filter/
│   │       │   ├── delete_layout.xml
│   │       │   ├── insert_layout.xml
│   │       │   ├── reset_layout_code.xml
│   │       │   ├── update_layout_code.xml
│   │       │   └── update_layout_info.xml
│   │       ├── header.html
│   │       ├── installed_layout_list.html
│   │       ├── js/
│   │       │   ├── adminEdit.js
│   │       │   ├── adminList.js
│   │       │   ├── faceoff.js
│   │       │   ├── layout_admin.js
│   │       │   ├── layout_admin_set_html.js
│   │       │   ├── layout_image_list.js
│   │       │   ├── layout_modify.js
│   │       │   ├── ui.hotkey.js
│   │       │   └── ui.toolbar.js
│   │       ├── layout_all_instance_list.html
│   │       ├── layout_edit.html
│   │       ├── layout_html_css_view.html
│   │       ├── layout_info_view.html
│   │       ├── layout_instance_list.html
│   │       ├── layout_modify.html
│   │       ├── layout_preview.html
│   │       ├── sub_tab.html
│   │       └── top_refresh.html
│   ├── member/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── controllers/
│   │   │   └── Device.php
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── m.skins/
│   │   │   └── default/
│   │   │       ├── active_logins.html
│   │   │       ├── comment_list.html
│   │   │       ├── common_footer.html
│   │   │       ├── common_header.html
│   │   │       ├── css/
│   │   │       │   ├── member.css
│   │   │       │   ├── mlogin.css
│   │   │       │   └── msignup.css
│   │   │       ├── document_list.html
│   │   │       ├── find_member_account.html
│   │   │       ├── find_temp_password.html
│   │   │       ├── leave_form.html
│   │   │       ├── login_form.html
│   │   │       ├── member_info.html
│   │   │       ├── member_nick.html
│   │   │       ├── modify_email_address.html
│   │   │       ├── modify_info.html
│   │   │       ├── modify_password.html
│   │   │       ├── rechecked_password.html
│   │   │       ├── saved_list.html
│   │   │       ├── scrapped_list.html
│   │   │       ├── signup_form.html
│   │   │       └── skin.xml
│   │   ├── member.admin.controller.php
│   │   ├── member.admin.model.php
│   │   ├── member.admin.view.php
│   │   ├── member.api.php
│   │   ├── member.class.php
│   │   ├── member.controller.php
│   │   ├── member.mobile.php
│   │   ├── member.model.php
│   │   ├── member.view.php
│   │   ├── queries/
│   │   │   ├── addMemberToGroup.xml
│   │   │   ├── addScrapDocument.xml
│   │   │   ├── changeGroup.xml
│   │   │   ├── chkAuthMail.xml
│   │   │   ├── chkAuthSms.xml
│   │   │   ├── chkDeniedID.xml
│   │   │   ├── chkDeniedNickName.xml
│   │   │   ├── deleteAgreed.xml
│   │   │   ├── deleteAuthChangeEmailAddress.xml
│   │   │   ├── deleteAuthMail.xml
│   │   │   ├── deleteAutologin.xml
│   │   │   ├── deleteDeniedID.xml
│   │   │   ├── deleteDeniedNickName.xml
│   │   │   ├── deleteGroup.xml
│   │   │   ├── deleteJoinForm.xml
│   │   │   ├── deleteLoginCountByIp.xml
│   │   │   ├── deleteLoginCountHistoryByMemberSrl.xml
│   │   │   ├── deleteManagedEmailHost.xml
│   │   │   ├── deleteMember.xml
│   │   │   ├── deleteMemberDevice.xml
│   │   │   ├── deleteMemberGroup.xml
│   │   │   ├── deleteMemberGroupMember.xml
│   │   │   ├── deleteMemberModifyNickNameLog.xml
│   │   │   ├── deleteMembersGroup.xml
│   │   │   ├── deleteScrapDocument.xml
│   │   │   ├── deleteScrapDocumentByDocumentSrl.xml
│   │   │   ├── deleteScrapFolder.xml
│   │   │   ├── deleteSiteGroup.xml
│   │   │   ├── getAdminGroup.xml
│   │   │   ├── getAdmins.xml
│   │   │   ├── getAuthMail.xml
│   │   │   ├── getAuthMailInfo.xml
│   │   │   ├── getAuthMailType.xml
│   │   │   ├── getAutologin.xml
│   │   │   ├── getDefaultGroup.xml
│   │   │   ├── getDeniedAndStatus.xml
│   │   │   ├── getDeniedIDList.xml
│   │   │   ├── getDeniedIDs.xml
│   │   │   ├── getDeniedNickNames.xml
│   │   │   ├── getGroup.xml
│   │   │   ├── getGroups.xml
│   │   │   ├── getJoinForm.xml
│   │   │   ├── getJoinFormList.xml
│   │   │   ├── getLoginCountByIp.xml
│   │   │   ├── getLoginCountHistoryByMemberSrl.xml
│   │   │   ├── getManagedEmailHosts.xml
│   │   │   ├── getMemberCountByDate.xml
│   │   │   ├── getMemberCountByPhoneCountry.xml
│   │   │   ├── getMemberDevice.xml
│   │   │   ├── getMemberDeviceTokensByMemberSrl.xml
│   │   │   ├── getMemberGroupMember.xml
│   │   │   ├── getMemberGroupMemberCountByDate.xml
│   │   │   ├── getMemberGroups.xml
│   │   │   ├── getMemberInfo.xml
│   │   │   ├── getMemberInfoByEmailAddress.xml
│   │   │   ├── getMemberInfoByMemberSrl.xml
│   │   │   ├── getMemberInfoByPhoneNumber.xml
│   │   │   ├── getMemberList.xml
│   │   │   ├── getMemberListWithinGroup.xml
│   │   │   ├── getMemberModifyNickName.xml
│   │   │   ├── getMemberSrl.xml
│   │   │   ├── getMembers.xml
│   │   │   ├── getMembersGroup.xml
│   │   │   ├── getMembersGroups.xml
│   │   │   ├── getScrapDocument.xml
│   │   │   ├── getScrapDocumentList.xml
│   │   │   ├── getScrapFolderList.xml
│   │   │   ├── getSiteAdminMemberSrls.xml
│   │   │   ├── getSiteMemberList.xml
│   │   │   ├── insertAgreed.xml
│   │   │   ├── insertAuthMail.xml
│   │   │   ├── insertAuthSms.xml
│   │   │   ├── insertAutologin.xml
│   │   │   ├── insertDeniedID.xml
│   │   │   ├── insertDeniedNickName.xml
│   │   │   ├── insertGroup.xml
│   │   │   ├── insertJoinForm.xml
│   │   │   ├── insertLoginCountByIp.xml
│   │   │   ├── insertLoginCountHistoryByMemberSrl.xml
│   │   │   ├── insertManagedEmailHost.xml
│   │   │   ├── insertMember.xml
│   │   │   ├── insertMemberDevice.xml
│   │   │   ├── insertMemberModifyNickName.xml
│   │   │   ├── insertScrapFolder.xml
│   │   │   ├── updateAllChangePasswordDate.xml
│   │   │   ├── updateAllMemberGroupListOrder.xml
│   │   │   ├── updateAuthMail.xml
│   │   │   ├── updateAutologin.xml
│   │   │   ├── updateChangePasswordDate.xml
│   │   │   ├── updateFindAccountAnswer.xml
│   │   │   ├── updateGroup.xml
│   │   │   ├── updateGroupDefaultClear.xml
│   │   │   ├── updateJoinForm.xml
│   │   │   ├── updateLastLogin.xml
│   │   │   ├── updateLoginCountByIp.xml
│   │   │   ├── updateLoginCountHistoryByMemberSrl.xml
│   │   │   ├── updateMember.xml
│   │   │   ├── updateMemberDeniedInfo.xml
│   │   │   ├── updateMemberDevice.xml
│   │   │   ├── updateMemberDeviceLastActiveDate.xml
│   │   │   ├── updateMemberEmailAddress.xml
│   │   │   ├── updateMemberExtraVars.xml
│   │   │   ├── updateMemberFindQuestionAnswer.xml
│   │   │   ├── updateMemberGroupListOrder.xml
│   │   │   ├── updateMemberJoinFormListorder.xml
│   │   │   ├── updateMemberListOrderAll.xml
│   │   │   ├── updateMemberPassword.xml
│   │   │   ├── updateMemberPhoneCountry.xml
│   │   │   ├── updateMemberPhoneNumber.xml
│   │   │   ├── updateMemberStatus.xml
│   │   │   ├── updateScrapDocumentFolder.xml
│   │   │   ├── updateScrapFolder.xml
│   │   │   └── updateScrapFolderFromNull.xml
│   │   ├── ruleset/
│   │   │   ├── deleteGroup.xml
│   │   │   ├── findAccount.xml
│   │   │   ├── insert.xml
│   │   │   ├── insertAdminMember.xml
│   │   │   ├── insertDefaultConfig.xml
│   │   │   ├── insertDeniedId.xml
│   │   │   ├── insertGroup.xml
│   │   │   ├── insertJoinForm.xml
│   │   │   ├── insertLoginConfig.xml
│   │   │   ├── leaveMember.xml
│   │   │   ├── login.xml
│   │   │   ├── manageMemberGroup.xml
│   │   │   ├── modifyEmailAddress.xml
│   │   │   ├── modifyInfo.xml
│   │   │   ├── modifyPassword.xml
│   │   │   ├── recheckedPassword.xml
│   │   │   ├── resendAuthMail.xml
│   │   │   ├── resetAuthMail.xml
│   │   │   ├── resetPassword.xml
│   │   │   ├── signup.xml
│   │   │   ├── updateGroup.xml
│   │   │   └── updateSeletedMemberInfo.xml
│   │   ├── schemas/
│   │   │   ├── member.xml
│   │   │   ├── member_agreed.xml
│   │   │   ├── member_auth_mail.xml
│   │   │   ├── member_auth_sms.xml
│   │   │   ├── member_autologin.xml
│   │   │   ├── member_count_history.xml
│   │   │   ├── member_denied_nick_name.xml
│   │   │   ├── member_denied_user_id.xml
│   │   │   ├── member_devices.xml
│   │   │   ├── member_group.xml
│   │   │   ├── member_group_member.xml
│   │   │   ├── member_join_form.xml
│   │   │   ├── member_login_count.xml
│   │   │   ├── member_managed_email_hosts.xml
│   │   │   ├── member_nickname_log.xml
│   │   │   ├── member_scrap.xml
│   │   │   └── member_scrap_folders.xml
│   │   ├── skins/
│   │   │   └── default/
│   │   │       ├── active_logins.html
│   │   │       ├── comment_list.html
│   │   │       ├── common_footer.html
│   │   │       ├── common_header.html
│   │   │       ├── confirm_member_account_mail.html
│   │   │       ├── confirm_member_new_email.html
│   │   │       ├── css/
│   │   │       │   └── member.css
│   │   │       ├── document_list.html
│   │   │       ├── filter/
│   │   │       │   ├── delete_image_mark.xml
│   │   │       │   ├── delete_image_name.xml
│   │   │       │   ├── delete_profile_image.xml
│   │   │       │   ├── find_member_account.xml
│   │   │       │   ├── leave_member.xml
│   │   │       │   ├── login.xml
│   │   │       │   ├── modify_info.xml
│   │   │       │   ├── modify_password.xml
│   │   │       │   ├── resend_auth_mail.xml
│   │   │       │   ├── signup.xml
│   │   │       │   └── update_allow_message.xml
│   │   │       ├── find_member_account.html
│   │   │       ├── find_member_account_mail.html
│   │   │       ├── js/
│   │   │       │   └── member.js
│   │   │       ├── leave_form.html
│   │   │       ├── login_form.html
│   │   │       ├── member_info.html
│   │   │       ├── member_nick.html
│   │   │       ├── modify_email_address.html
│   │   │       ├── modify_info.html
│   │   │       ├── modify_password.html
│   │   │       ├── rechecked_password.html
│   │   │       ├── resend_auth_mail.html
│   │   │       ├── reset_password.html
│   │   │       ├── saved_list.html
│   │   │       ├── scrapped_list.html
│   │   │       ├── signup_form.html
│   │   │       └── skin.xml
│   │   └── tpl/
│   │       ├── agreements_config.html
│   │       ├── colorset_list.html
│   │       ├── css/
│   │       │   ├── member.css
│   │       │   ├── mlogin.css
│   │       │   └── msignup.css
│   │       ├── default_config.html
│   │       ├── design_config.html
│   │       ├── features_config.html
│   │       ├── filter/
│   │       │   ├── delete_image_mark.xml
│   │       │   ├── delete_image_name.xml
│   │       │   ├── delete_member.xml
│   │       │   ├── delete_members.xml
│   │       │   ├── delete_profile_image.xml
│   │       │   ├── insert.xml
│   │       │   ├── insert_config.xml
│   │       │   ├── insert_denied_id.xml
│   │       │   ├── insert_group.xml
│   │       │   ├── insert_join_form.xml
│   │       │   ├── manage_member_group.xml
│   │       │   ├── update_denied_id.xml
│   │       │   ├── update_group.xml
│   │       │   ├── update_join_form.xml
│   │       │   └── update_member.xml
│   │       ├── group_list.html
│   │       ├── header.html
│   │       ├── insert_join_form.html
│   │       ├── insert_member.html
│   │       ├── js/
│   │       │   ├── config.js
│   │       │   ├── default_config.js
│   │       │   ├── design_config.js
│   │       │   ├── member_admin.js
│   │       │   ├── member_admin_group.js
│   │       │   ├── member_admin_list.js
│   │       │   ├── signup_check.js
│   │       │   └── signup_config.js
│   │       ├── login_config.html
│   │       ├── member_info.html
│   │       ├── member_list.html
│   │       ├── new_colorset_list.html
│   │       ├── nick_name_log.html
│   │       ├── signup_config.html
│   │       └── spammer.html
│   ├── menu/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── menu.admin.controller.php
│   │   ├── menu.admin.model.php
│   │   ├── menu.admin.view.php
│   │   ├── menu.class.php
│   │   ├── menu.mobile.php
│   │   ├── queries/
│   │   │   ├── deleteMenu.xml
│   │   │   ├── deleteMenuItem.xml
│   │   │   ├── deleteMenuItems.xml
│   │   │   ├── deleteMenuLayout.xml
│   │   │   ├── getChildMenuCount.xml
│   │   │   ├── getMaxListorder.xml
│   │   │   ├── getMenu.xml
│   │   │   ├── getMenuByTitle.xml
│   │   │   ├── getMenuItem.xml
│   │   │   ├── getMenuItemByUrl.xml
│   │   │   ├── getMenuItems.xml
│   │   │   ├── getMenuLayout.xml
│   │   │   ├── getMenuList.xml
│   │   │   ├── getMenus.xml
│   │   │   ├── getMinListorder.xml
│   │   │   ├── insertMenu.xml
│   │   │   ├── insertMenuItem.xml
│   │   │   ├── insertMenuLayout.xml
│   │   │   ├── updateMenu.xml
│   │   │   ├── updateMenuItem.xml
│   │   │   ├── updateMenuItemListorder.xml
│   │   │   ├── updateMenuItemNode.xml
│   │   │   ├── updateMenuItemParent.xml
│   │   │   └── updateMenuItems.xml
│   │   ├── ruleset/
│   │   │   ├── insertMenu.xml
│   │   │   ├── insertMenuItem.xml
│   │   │   ├── updateMenuDesign.xml
│   │   │   ├── updateMenuItem.xml
│   │   │   └── updateMenuTitle.xml
│   │   ├── schemas/
│   │   │   ├── menu.xml
│   │   │   ├── menu_item.xml
│   │   │   └── menu_layout.xml
│   │   └── tpl/
│   │       ├── css/
│   │       │   ├── mmenu.css
│   │       │   ├── sitemap.css
│   │       │   └── themes/
│   │       │       ├── apple/
│   │       │       │   └── style.css
│   │       │       ├── classic/
│   │       │       │   └── style.css
│   │       │       ├── default/
│   │       │       │   └── style.css
│   │       │       └── default-rtl/
│   │       │           └── style.css
│   │       ├── js/
│   │       │   ├── _lib/
│   │       │   │   └── jquery.cookie.js
│   │       │   ├── jquery.jstree.js
│   │       │   ├── jquery.scrollTo-1.4.2.js
│   │       │   └── jquery.tmpl.js
│   │       ├── menu.html
│   │       └── sitemap.html
│   ├── message/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── m.skins/
│   │   │   └── default/
│   │   │       ├── filter/
│   │   │       │   ├── login.xml
│   │   │       │   ├── logout.xml
│   │   │       │   └── openid_login.xml
│   │   │       ├── http_status_code.html
│   │   │       ├── message.css
│   │   │       └── system_message.html
│   │   ├── message.admin.controller.php
│   │   ├── message.admin.model.php
│   │   ├── message.admin.view.php
│   │   ├── message.class.php
│   │   ├── message.mobile.php
│   │   ├── message.view.php
│   │   ├── skins/
│   │   │   ├── default/
│   │   │   │   ├── filter/
│   │   │   │   │   ├── login.xml
│   │   │   │   │   ├── logout.xml
│   │   │   │   │   └── openid_login.xml
│   │   │   │   ├── http_status_code.html
│   │   │   │   ├── message.css
│   │   │   │   ├── message.js
│   │   │   │   └── system_message.html
│   │   │   └── xedition/
│   │   │       ├── css/
│   │   │       │   └── message.css
│   │   │       ├── http_status_code.html
│   │   │       └── system_message.html
│   │   └── tpl/
│   │       ├── colorset_list.html
│   │       ├── config.html
│   │       └── js/
│   │           └── config.js
│   ├── module/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── models/
│   │   │   └── Permission.php
│   │   ├── module.admin.controller.php
│   │   ├── module.admin.model.php
│   │   ├── module.admin.view.php
│   │   ├── module.class.php
│   │   ├── module.controller.php
│   │   ├── module.mobile.php
│   │   ├── module.model.php
│   │   ├── module.view.php
│   │   ├── queries/
│   │   │   ├── clearDefaultModule.xml
│   │   │   ├── deleteActionForward.xml
│   │   │   ├── deleteAdminId.xml
│   │   │   ├── deleteAdminIds.xml
│   │   │   ├── deleteDomain.xml
│   │   │   ├── deleteLang.xml
│   │   │   ├── deleteLangs.xml
│   │   │   ├── deleteLock.xml
│   │   │   ├── deleteLocksTimeoutPassed.xml
│   │   │   ├── deleteModule.xml
│   │   │   ├── deleteModuleCategory.xml
│   │   │   ├── deleteModuleConfig.xml
│   │   │   ├── deleteModuleExtend.xml
│   │   │   ├── deleteModuleExtraVars.xml
│   │   │   ├── deleteModuleFileBox.xml
│   │   │   ├── deleteModuleGrants.xml
│   │   │   ├── deleteModuleMobileSkinVars.xml
│   │   │   ├── deleteModulePartConfig.xml
│   │   │   ├── deleteModuleSkinVars.xml
│   │   │   ├── deleteModuleTriggers.xml
│   │   │   ├── deleteSite.xml
│   │   │   ├── deleteTrigger.xml
│   │   │   ├── deleteTriggers.xml
│   │   │   ├── getActionForward.xml
│   │   │   ├── getActionForwardWithModule.xml
│   │   │   ├── getAdminID.xml
│   │   │   ├── getAdminSrls.xml
│   │   │   ├── getAllMobileSkinSetModule.xml
│   │   │   ├── getAllSkinSetModule.xml
│   │   │   ├── getDefaultMidInfo.xml
│   │   │   ├── getDefaultModules.xml
│   │   │   ├── getDomainInfo.xml
│   │   │   ├── getDomains.xml
│   │   │   ├── getLang.xml
│   │   │   ├── getLangCount.xml
│   │   │   ├── getLangList.xml
│   │   │   ├── getLangListByLangcode.xml
│   │   │   ├── getLangListByName.xml
│   │   │   ├── getLangNameByValue.xml
│   │   │   ├── getMidInfo.xml
│   │   │   ├── getMidList.xml
│   │   │   ├── getModuleAdmin.xml
│   │   │   ├── getModuleCategories.xml
│   │   │   ├── getModuleCategory.xml
│   │   │   ├── getModuleConfig.xml
│   │   │   ├── getModuleCount.xml
│   │   │   ├── getModuleExtend.xml
│   │   │   ├── getModuleExtraVars.xml
│   │   │   ├── getModuleFileBox.xml
│   │   │   ├── getModuleFileBoxList.xml
│   │   │   ├── getModuleGrants.xml
│   │   │   ├── getModuleInfoByDocument.xml
│   │   │   ├── getModuleInfoByMenuItemSrl.xml
│   │   │   ├── getModuleInfoByModuleSrl.xml
│   │   │   ├── getModuleInfos.xml
│   │   │   ├── getModuleListByInstance.xml
│   │   │   ├── getModuleMidList.xml
│   │   │   ├── getModuleMobileSkinVars.xml
│   │   │   ├── getModulePartConfig.xml
│   │   │   ├── getModulePartConfigs.xml
│   │   │   ├── getModuleSites.xml
│   │   │   ├── getModuleSkinDotList.xml
│   │   │   ├── getModuleSkinVars.xml
│   │   │   ├── getModuleSrlByMid.xml
│   │   │   ├── getModuleUpdateLog.xml
│   │   │   ├── getModulesByLayout.xml
│   │   │   ├── getModulesInfo.xml
│   │   │   ├── getNonuniqueDomains.xml
│   │   │   ├── getNotLinkedModuleBySiteSrl.xml
│   │   │   ├── getPlanetGrants.xml
│   │   │   ├── getSite.xml
│   │   │   ├── getSiteCount.xml
│   │   │   ├── getSiteInfo.xml
│   │   │   ├── getSiteModules.xml
│   │   │   ├── getSites.xml
│   │   │   ├── getTrigger.xml
│   │   │   ├── getTriggers.xml
│   │   │   ├── insertActionForward.xml
│   │   │   ├── insertAdminId.xml
│   │   │   ├── insertDomain.xml
│   │   │   ├── insertLang.xml
│   │   │   ├── insertLock.xml
│   │   │   ├── insertModule.xml
│   │   │   ├── insertModuleCategory.xml
│   │   │   ├── insertModuleConfig.xml
│   │   │   ├── insertModuleExtend.xml
│   │   │   ├── insertModuleExtraVars.xml
│   │   │   ├── insertModuleFileBox.xml
│   │   │   ├── insertModuleGrant.xml
│   │   │   ├── insertModuleMobileSkinVars.xml
│   │   │   ├── insertModulePartConfig.xml
│   │   │   ├── insertModuleSkinVars.xml
│   │   │   ├── insertModuleUpdateLog.xml
│   │   │   ├── insertSite.xml
│   │   │   ├── insertTrigger.xml
│   │   │   ├── isExistsModuleName.xml
│   │   │   ├── updateAllModuleSkinInSiteWithTheme.xml
│   │   │   ├── updateDefaultDomain.xml
│   │   │   ├── updateDomain.xml
│   │   │   ├── updateLangCode.xml
│   │   │   ├── updateMobileSkinFixModules.xml
│   │   │   ├── updateModule.xml
│   │   │   ├── updateModuleCategory.xml
│   │   │   ├── updateModuleFileBox.xml
│   │   │   ├── updateModuleLayout.xml
│   │   │   ├── updateModuleMenu.xml
│   │   │   ├── updateModuleMenuSrl.xml
│   │   │   ├── updateSite.xml
│   │   │   ├── updateSkinAll.xml
│   │   │   └── updateSkinFixModules.xml
│   │   ├── ruleset/
│   │   │   ├── copyModule.xml
│   │   │   ├── deleteCategory.xml
│   │   │   ├── insertCategory.xml
│   │   │   ├── insertModuleSetup.xml
│   │   │   ├── insertModulesGrant.xml
│   │   │   └── updateCategory.xml
│   │   ├── schemas/
│   │   │   ├── action_forward.xml
│   │   │   ├── domains.xml
│   │   │   ├── lang.xml
│   │   │   ├── module_admins.xml
│   │   │   ├── module_categories.xml
│   │   │   ├── module_config.xml
│   │   │   ├── module_extend.xml
│   │   │   ├── module_extra_vars.xml
│   │   │   ├── module_filebox.xml
│   │   │   ├── module_grants.xml
│   │   │   ├── module_locks.xml
│   │   │   ├── module_mobile_skins.xml
│   │   │   ├── module_part_config.xml
│   │   │   ├── module_skins.xml
│   │   │   ├── module_trigger.xml
│   │   │   ├── module_update.xml
│   │   │   ├── modules.xml
│   │   │   ├── sites.xml
│   │   │   ├── task_queue.xml
│   │   │   └── task_schedule.xml
│   │   ├── scripts/
│   │   │   ├── cleanMiscLogs.php
│   │   │   └── updateAllModules.php
│   │   └── tpl/
│   │       ├── adminFileBox.html
│   │       ├── category_list.html
│   │       ├── category_update_form.html
│   │       ├── copy_module.html
│   │       ├── css/
│   │       │   ├── mlang.css
│   │       │   └── module_admin.scss
│   │       ├── filebox_add.html
│   │       ├── filebox_list.html
│   │       ├── filebox_list_html.html
│   │       ├── filter/
│   │       │   ├── copy_module.xml
│   │       │   ├── insert_category.xml
│   │       │   ├── insert_grant.xml
│   │       │   ├── insert_lang.xml
│   │       │   ├── insert_module_setup.xml
│   │       │   ├── insert_modules_grant.xml
│   │       │   ├── insert_shortcut.xml
│   │       │   └── update_category.xml
│   │       ├── header.html
│   │       ├── include.filebox.html
│   │       ├── include.manage_selected.html
│   │       ├── include.module_addition_setup.html
│   │       ├── include.module_grant_setup.html
│   │       ├── include.module_setup.html
│   │       ├── include.multilang.html
│   │       ├── include.multilang.textarea.html
│   │       ├── js/
│   │       │   ├── filebox.js
│   │       │   ├── manage_selected_module.js
│   │       │   ├── mid.js
│   │       │   ├── module_admin.js
│   │       │   ├── module_list.js
│   │       │   ├── multi_order.js
│   │       │   └── multilingual.js
│   │       ├── lang.html
│   │       ├── module_addition_setup.html
│   │       ├── module_grant_setup.html
│   │       ├── module_grants.html
│   │       ├── module_info.html
│   │       ├── module_langcode.html
│   │       ├── module_list.html
│   │       ├── module_searcher_v17.html
│   │       ├── module_selector.html
│   │       ├── module_setup.html
│   │       ├── move_filebox_list.html
│   │       ├── multilingual_v17.html
│   │       ├── multilingual_v17_list.html
│   │       ├── skin_config.html
│   │       ├── skin_info.html
│   │       └── top_refresh.html
│   ├── ncenterlite/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   └── ko.php
│   │   ├── m.skins/
│   │   │   └── default/
│   │   │       ├── NotifyList.html
│   │   │       ├── ncenter.html
│   │   │       ├── ncenterlite.black.css
│   │   │       ├── ncenterlite.blacknoprofile.css
│   │   │       ├── ncenterlite.css
│   │   │       ├── ncenterlite.gray.css
│   │   │       ├── ncenterlite.graynoprofile.css
│   │   │       ├── ncenterlite.html
│   │   │       ├── ncenterlite.mobile.css
│   │   │       ├── ncenterlite.white.css
│   │   │       ├── ncenterlite.whitenoprofile.css
│   │   │       ├── notify.css
│   │   │       ├── skin.xml
│   │   │       └── userconfig.html
│   │   ├── ncenterlite.admin.controller.php
│   │   ├── ncenterlite.admin.model.php
│   │   ├── ncenterlite.admin.view.php
│   │   ├── ncenterlite.class.php
│   │   ├── ncenterlite.controller.php
│   │   ├── ncenterlite.mobile.php
│   │   ├── ncenterlite.model.php
│   │   ├── ncenterlite.view.php
│   │   ├── queries/
│   │   │   ├── deleteNcenterliteUserSettingData.xml
│   │   │   ├── deleteNotifyAll.xml
│   │   │   ├── deleteNotifyByMemberSrl.xml
│   │   │   ├── deleteNotifyBySrl.xml
│   │   │   ├── deleteNotifyByTargetType.xml
│   │   │   ├── deleteNotifyType.xml
│   │   │   ├── deleteUnsubscribe.xml
│   │   │   ├── getAdminNotifyList.xml
│   │   │   ├── getAllUserConfig.xml
│   │   │   ├── getCountNewMessage.xml
│   │   │   ├── getDispNotifyList.xml
│   │   │   ├── getMemberAdmins.xml
│   │   │   ├── getMemberSrlById.xml
│   │   │   ├── getMemberSrlByNickName.xml
│   │   │   ├── getMemberTotals.xml
│   │   │   ├── getNotify.xml
│   │   │   ├── getNotifyList.xml
│   │   │   ├── getNotifyListByCommentSrl.xml
│   │   │   ├── getNotifyListByDocumentSrl.xml
│   │   │   ├── getNotifyMemberSrlBySrl.xml
│   │   │   ├── getNotifyNewCount.xml
│   │   │   ├── getNotifyType.xml
│   │   │   ├── getNotifyTypeAdminList.xml
│   │   │   ├── getNotifyTypeByID.xml
│   │   │   ├── getOtherCommentByMemberSrl.xml
│   │   │   ├── getUnsubscribeList.xml
│   │   │   ├── getUserConfig.xml
│   │   │   ├── getUserUnsubscribeConfigByTargetSrl.xml
│   │   │   ├── getUserUnsubscribeConfigByUnsubscribeSrl.xml
│   │   │   ├── insertNotify.xml
│   │   │   ├── insertNotifyType.xml
│   │   │   ├── insertUnsubscribe.xml
│   │   │   ├── insertUserConfig.xml
│   │   │   ├── updateNotifyReaded.xml
│   │   │   ├── updateNotifyReadedAll.xml
│   │   │   ├── updateNotifyReadedBySrl.xml
│   │   │   ├── updateNotifyReadedByTargetSrl.xml
│   │   │   ├── updateNotifyReadedByType.xml
│   │   │   └── updateUserConfig.xml
│   │   ├── ruleset/
│   │   │   └── insertConfig.xml
│   │   ├── schemas/
│   │   │   ├── ncenterlite_notify.xml
│   │   │   ├── ncenterlite_notify_type.xml
│   │   │   ├── ncenterlite_unsubscribe.xml
│   │   │   └── ncenterlite_user_set.xml
│   │   ├── scripts/
│   │   │   └── cleanNotifications.php
│   │   ├── skins/
│   │   │   ├── default/
│   │   │   │   ├── NotifyList.html
│   │   │   │   ├── ncenterlite.black.css
│   │   │   │   ├── ncenterlite.blacknoprofile.css
│   │   │   │   ├── ncenterlite.css
│   │   │   │   ├── ncenterlite.gray.css
│   │   │   │   ├── ncenterlite.graynoprofile.css
│   │   │   │   ├── ncenterlite.html
│   │   │   │   ├── ncenterlite.mobile.css
│   │   │   │   ├── ncenterlite.white.css
│   │   │   │   ├── ncenterlite.whitenoprofile.css
│   │   │   │   ├── skin.xml
│   │   │   │   ├── unsubscribe.html
│   │   │   │   ├── unsubscribeList.html
│   │   │   │   └── userconfig.html
│   │   │   └── default_bottom/
│   │   │       ├── NotifyList.html
│   │   │       ├── ncenterlite.black.css
│   │   │       ├── ncenterlite.blacknoprofile.css
│   │   │       ├── ncenterlite.css
│   │   │       ├── ncenterlite.gray.css
│   │   │       ├── ncenterlite.graynoprofile.css
│   │   │       ├── ncenterlite.html
│   │   │       ├── ncenterlite.mobile.css
│   │   │       ├── ncenterlite.white.css
│   │   │       ├── ncenterlite.whitenoprofile.css
│   │   │       ├── skin.xml
│   │   │       ├── unsubscribe.html
│   │   │       ├── unsubscribeList.html
│   │   │       └── userconfig.html
│   │   └── tpl/
│   │       ├── advancedconfig.html
│   │       ├── config.html
│   │       ├── css/
│   │       │   └── ncenter_admin.css
│   │       ├── customlist.html
│   │       ├── header.html
│   │       ├── js/
│   │       │   ├── ncenter_admin.js
│   │       │   └── ncenterlite.js
│   │       ├── list.html
│   │       ├── othercomment.html
│   │       ├── seletedmid.html
│   │       ├── skinsetting.html
│   │       └── test.html
│   ├── page/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── m.skins/
│   │   │   └── default/
│   │   │       ├── mobile.html
│   │   │       └── skin.xml
│   │   ├── page.admin.controller.php
│   │   ├── page.admin.view.php
│   │   ├── page.api.php
│   │   ├── page.class.php
│   │   ├── page.controller.php
│   │   ├── page.mobile.php
│   │   ├── page.view.php
│   │   ├── queries/
│   │   │   ├── getArticlePageSrls.xml
│   │   │   ├── getPageList.xml
│   │   │   ├── insertPageType.xml
│   │   │   ├── pageTypeNullCheck.xml
│   │   │   ├── pageTypeOpageCheck.xml
│   │   │   ├── updateAllOpage.xml
│   │   │   └── updateSkinFix.xml
│   │   ├── ruleset/
│   │   │   ├── deletePage.xml
│   │   │   ├── insertPage.xml
│   │   │   └── updatePage.xml
│   │   ├── skins/
│   │   │   └── default/
│   │   │       ├── content.html
│   │   │       └── skin.xml
│   │   └── tpl/
│   │       ├── addition_setup.html
│   │       ├── article_content_footer.html
│   │       ├── article_content_modify.html
│   │       ├── content.html
│   │       ├── css/
│   │       │   └── page.css
│   │       ├── filter/
│   │       │   ├── delete_page.xml
│   │       │   ├── insert_article.xml
│   │       │   ├── insert_config.xml
│   │       │   ├── insert_mpage_content.xml
│   │       │   ├── insert_outside.xml
│   │       │   ├── insert_page.xml
│   │       │   └── insert_page_content.xml
│   │       ├── grant_list.html
│   │       ├── header.html
│   │       ├── index.html
│   │       ├── js/
│   │       │   └── page_admin.js
│   │       ├── mcontent.html
│   │       ├── mobile.html
│   │       ├── page_content_modify.html
│   │       ├── page_delete.html
│   │       ├── page_info.html
│   │       ├── page_mobile_content_modify.html
│   │       └── skin_info.html
│   ├── point/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── point.admin.controller.php
│   │   ├── point.admin.view.php
│   │   ├── point.class.php
│   │   ├── point.controller.php
│   │   ├── point.model.php
│   │   ├── point.view.php
│   │   ├── queries/
│   │   │   ├── deleteMemberGroup.xml
│   │   │   ├── getCommentPoint.xml
│   │   │   ├── getCommentUsers.xml
│   │   │   ├── getDocumentPoint.xml
│   │   │   ├── getFilePoint.xml
│   │   │   ├── getMemberCount.xml
│   │   │   ├── getMemberGroupMember.xml
│   │   │   ├── getMemberList.xml
│   │   │   ├── getMemberListWithinGroup.xml
│   │   │   ├── getPoint.xml
│   │   │   ├── getPointCount.xml
│   │   │   ├── initMemberPoint.xml
│   │   │   ├── insertPoint.xml
│   │   │   └── updatePoint.xml
│   │   ├── ruleset/
│   │   │   ├── insertConfig.xml
│   │   │   └── updatePoint.xml
│   │   ├── schemas/
│   │   │   └── point.xml
│   │   └── tpl/
│   │       ├── config.html
│   │       ├── filter/
│   │       │   ├── insert_act_config.xml
│   │       │   ├── insert_config.xml
│   │       │   ├── insert_module_config.xml
│   │       │   ├── insert_point_module_config.xml
│   │       │   └── update_point.xml
│   │       ├── header.html
│   │       ├── js/
│   │       │   └── point_admin.js
│   │       ├── member_list.html
│   │       ├── module_config.html
│   │       └── point_module_config.html
│   ├── poll/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── poll.admin.controller.php
│   │   ├── poll.admin.model.php
│   │   ├── poll.admin.view.php
│   │   ├── poll.class.php
│   │   ├── poll.controller.php
│   │   ├── poll.model.php
│   │   ├── queries/
│   │   │   ├── deletePoll.xml
│   │   │   ├── deletePollItem.xml
│   │   │   ├── deletePollLog.xml
│   │   │   ├── deletePollTitle.xml
│   │   │   ├── getMemberbyPollitem.xml
│   │   │   ├── getPoll.xml
│   │   │   ├── getPollByDeletePollTitle.xml
│   │   │   ├── getPollByTargetSrl.xml
│   │   │   ├── getPollItem.xml
│   │   │   ├── getPollList.xml
│   │   │   ├── getPollListWithMember.xml
│   │   │   ├── getPollLog.xml
│   │   │   ├── getPollTitle.xml
│   │   │   ├── insertPoll.xml
│   │   │   ├── insertPollItem.xml
│   │   │   ├── insertPollLog.xml
│   │   │   ├── insertPollTitle.xml
│   │   │   ├── updatePoll.xml
│   │   │   ├── updatePollItemTarget.xml
│   │   │   ├── updatePollItems.xml
│   │   │   ├── updatePollTarget.xml
│   │   │   ├── updatePollTitle.xml
│   │   │   └── updatePollTitleTarget.xml
│   │   ├── ruleset/
│   │   │   ├── deleteChecked.xml
│   │   │   ├── insertConfig.xml
│   │   │   └── poll.xml
│   │   ├── schemas/
│   │   │   ├── poll.xml
│   │   │   ├── poll_item.xml
│   │   │   ├── poll_log.xml
│   │   │   └── poll_title.xml
│   │   ├── skins/
│   │   │   ├── default/
│   │   │   │   ├── css/
│   │   │   │   │   └── poll.css
│   │   │   │   ├── filter/
│   │   │   │   │   └── poll.xml
│   │   │   │   ├── form.html
│   │   │   │   ├── result.html
│   │   │   │   └── skin.xml
│   │   │   └── simple/
│   │   │       ├── css/
│   │   │       │   └── poll.css
│   │   │       ├── filter/
│   │   │       │   └── poll.xml
│   │   │       ├── form.html
│   │   │       ├── result.html
│   │   │       └── skin.xml
│   │   └── tpl/
│   │       ├── config.html
│   │       ├── css/
│   │       │   └── poll.css
│   │       ├── filter/
│   │       │   ├── delete_checked.xml
│   │       │   └── insert_config.xml
│   │       ├── header.html
│   │       ├── js/
│   │       │   ├── poll.js
│   │       │   └── poll_admin.js
│   │       ├── poll_list.html
│   │       └── result.html
│   ├── rss/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── rss.admin.controller.php
│   │   ├── rss.admin.view.php
│   │   ├── rss.class.php
│   │   ├── rss.controller.php
│   │   ├── rss.model.php
│   │   ├── rss.view.php
│   │   ├── ruleset/
│   │   │   ├── insertRssConfig.xml
│   │   │   └── insertRssModuleConfig.xml
│   │   └── tpl/
│   │       ├── format/
│   │       │   ├── atom10.html
│   │       │   ├── rss10.html
│   │       │   ├── rss20.html
│   │       │   └── xe.html
│   │       ├── rss_admin_index.html
│   │       └── rss_module_config.html
│   ├── session/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteSession.xml
│   │   │   ├── gcSession.xml
│   │   │   ├── getExpiredSessions.xml
│   │   │   ├── getLoggedMembers.xml
│   │   │   ├── getSession.xml
│   │   │   ├── insertSession.xml
│   │   │   └── updateSession.xml
│   │   ├── schemas/
│   │   │   └── session.xml
│   │   ├── session.admin.controller.php
│   │   ├── session.admin.view.php
│   │   ├── session.class.php
│   │   ├── session.controller.php
│   │   ├── session.model.php
│   │   └── tpl/
│   │       ├── index.html
│   │       └── js/
│   │           └── session.js
│   ├── spamfilter/
│   │   ├── captcha/
│   │   │   ├── recaptcha.php
│   │   │   └── turnstile.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteDeniedIP.xml
│   │   │   ├── deleteDeniedWord.xml
│   │   │   ├── deleteLog.xml
│   │   │   ├── getDeniedIPList.xml
│   │   │   ├── getDeniedWordList.xml
│   │   │   ├── getLogCount.xml
│   │   │   ├── insertDeniedIP.xml
│   │   │   ├── insertDeniedWord.xml
│   │   │   ├── insertLog.xml
│   │   │   ├── isDeniedIP.xml
│   │   │   ├── updateDeniedIPAttributes.xml
│   │   │   ├── updateDeniedIPHit.xml
│   │   │   ├── updateDeniedWordAttributes.xml
│   │   │   └── updateDeniedWordHit.xml
│   │   ├── schemas/
│   │   │   ├── spamfilter_denied_ip.xml
│   │   │   ├── spamfilter_denied_word.xml
│   │   │   └── spamfilter_log.xml
│   │   ├── spamfilter.admin.controller.php
│   │   ├── spamfilter.admin.view.php
│   │   ├── spamfilter.class.php
│   │   ├── spamfilter.controller.php
│   │   ├── spamfilter.model.php
│   │   └── tpl/
│   │       ├── captcha_test.html
│   │       ├── config_block.html
│   │       ├── config_captcha.html
│   │       ├── css/
│   │       │   └── spamfilter_admin.css
│   │       ├── denied_ip_list.html
│   │       ├── denied_word_list.html
│   │       ├── filter/
│   │       │   ├── delete_denied_ip.xml
│   │       │   ├── delete_denied_word.xml
│   │       │   ├── insert_config.xml
│   │       │   ├── insert_denied_ip.xml
│   │       │   └── insert_denied_word.xml
│   │       ├── footer.html
│   │       ├── header.html
│   │       └── js/
│   │           ├── recaptcha.js
│   │           ├── spamfilter_admin.js
│   │           └── turnstile.js
│   ├── tag/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   └── ko.php
│   │   ├── queries/
│   │   │   ├── deleteModuleTags.xml
│   │   │   ├── deleteTag.xml
│   │   │   ├── deleteTagByTag.xml
│   │   │   ├── getAllTagList.xml
│   │   │   ├── getDocumentSrlByTag.xml
│   │   │   ├── getDocumentsTagList.xml
│   │   │   ├── getTagList.xml
│   │   │   ├── insertTag.xml
│   │   │   └── updateTagModule.xml
│   │   ├── schemas/
│   │   │   └── tags.xml
│   │   ├── tag.admin.controller.php
│   │   ├── tag.admin.view.php
│   │   ├── tag.class.php
│   │   ├── tag.controller.php
│   │   ├── tag.model.php
│   │   └── tpl/
│   │       └── config.html
│   ├── trash/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   └── zh-TW.php
│   │   ├── model/
│   │   │   └── TrashVO.php
│   │   ├── queries/
│   │   │   ├── deleteTrash.xml
│   │   │   ├── getDocumentExtraVars.xml
│   │   │   ├── getTrash.xml
│   │   │   ├── getTrashAllList.xml
│   │   │   ├── getTrashList.xml
│   │   │   └── insertTrash.xml
│   │   ├── ruleset/
│   │   │   └── emptyTrash.xml
│   │   ├── schemas/
│   │   │   └── trash.xml
│   │   ├── tpl/
│   │   │   ├── filter/
│   │   │   │   └── emptyTrash.xml
│   │   │   ├── header.html
│   │   │   ├── js/
│   │   │   │   └── trash_admin.js
│   │   │   ├── trash_list.html
│   │   │   └── trash_view.html
│   │   ├── trash.admin.controller.php
│   │   ├── trash.admin.view.php
│   │   ├── trash.class.php
│   │   ├── trash.controller.php
│   │   ├── trash.model.php
│   │   └── trash.view.php
│   └── widget/
│       ├── conf/
│       │   ├── info.xml
│       │   └── module.xml
│       ├── lang/
│       │   ├── en.php
│       │   ├── es.php
│       │   ├── fr.php
│       │   ├── ja.php
│       │   ├── ko.php
│       │   ├── ru.php
│       │   ├── tr.php
│       │   ├── vi.php
│       │   ├── zh-CN.php
│       │   └── zh-TW.php
│       ├── ruleset/
│       │   └── generateCodeInPage.xml
│       ├── tpl/
│       │   ├── add_content_widget.html
│       │   ├── css/
│       │   │   └── widget.css
│       │   ├── downloaded_widget_list.html
│       │   ├── filter/
│       │   │   ├── add_content.xml
│       │   │   ├── generate_code.xml
│       │   │   ├── generate_code_in_page.xml
│       │   │   └── style_generate_code_in_page.xml
│       │   ├── header.html
│       │   ├── js/
│       │   │   ├── generate_code.js
│       │   │   ├── widget.js
│       │   │   └── widget_admin.js
│       │   ├── skin_info.html
│       │   ├── widget_detail_info.html
│       │   ├── widget_generate_code.html
│       │   ├── widget_generate_code.include.html
│       │   ├── widget_generate_code_in_page.html
│       │   ├── widget_layer.html
│       │   └── widget_style_generate_code_in_page.html
│       ├── widget.admin.view.php
│       ├── widget.class.php
│       ├── widget.controller.php
│       ├── widget.model.php
│       └── widget.view.php
├── tests/
│   ├── _bootstrap.php
│   ├── _data/
│   │   ├── dbquery/
│   │   │   ├── deleteTest.xml
│   │   │   ├── emptyStringTest1.xml
│   │   │   ├── emptyStringTest2.xml
│   │   │   ├── ifVarTest.xml
│   │   │   ├── indexHintTest1.xml
│   │   │   ├── indexHintTest2.xml
│   │   │   ├── insertTest.xml
│   │   │   ├── nullValueTest1.xml
│   │   │   ├── nullValueTest2.xml
│   │   │   ├── selectCountTest1.xml
│   │   │   ├── selectCountTest2.xml
│   │   │   ├── selectJoinTest1.xml
│   │   │   ├── selectJoinTest2.xml
│   │   │   ├── selectSubqueryTest1.xml
│   │   │   ├── selectSubqueryTest2.xml
│   │   │   ├── selectSubqueryTest3.xml
│   │   │   ├── selectTest1.xml
│   │   │   ├── selectTest2.xml
│   │   │   ├── selectTest3.xml
│   │   │   ├── sortIndexTest.xml
│   │   │   └── updateTest.xml
│   │   ├── dbtable/
│   │   │   ├── example.xml
│   │   │   └── generated.xml
│   │   ├── dump.sql
│   │   ├── formatter/
│   │   │   ├── bbcode.source.txt
│   │   │   ├── bbcode.target.html
│   │   │   ├── concat.source1.css
│   │   │   ├── concat.source1.js
│   │   │   ├── concat.source2.css
│   │   │   ├── concat.source2.js
│   │   │   ├── concat.source3.css
│   │   │   ├── concat.target1.css
│   │   │   ├── concat.target1.js
│   │   │   ├── concat.target2.css
│   │   │   ├── concat.target2.js
│   │   │   ├── concat.target3.css
│   │   │   ├── html2markdown.source.html
│   │   │   ├── html2markdown.target.md
│   │   │   ├── html2text.source.html
│   │   │   ├── html2text.target.txt
│   │   │   ├── less.source1.less
│   │   │   ├── less.source2.less
│   │   │   ├── less.target1.css
│   │   │   ├── less.target2.css
│   │   │   ├── markdown2html.source.md
│   │   │   ├── markdown2html.target1.html
│   │   │   ├── markdown2html.target2.html
│   │   │   ├── markdown2html.target3.html
│   │   │   ├── markdown2html.target4.html
│   │   │   ├── markdownextra.source.md
│   │   │   ├── markdownextra.target1.html
│   │   │   ├── markdownextra.target2.html
│   │   │   ├── minify.source.css
│   │   │   ├── minify.source.js
│   │   │   ├── minify.target.css
│   │   │   ├── minify.target.js
│   │   │   ├── scss/
│   │   │   │   ├── _partial1.scss
│   │   │   │   ├── _partial2.scss
│   │   │   │ 

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

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

[*]
charset = utf-8
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = tab

[*.md]
trim_trailing_whitespace = false

[*.py]
indent_style = space
indent_size = 4

[*.{json,yml,md}]
indent_style = space
indent_size = 2

[*.{jsx,tsx,svelte,vue}]
indent_style = space
indent_size = 2


================================================
FILE: .gitattributes
================================================
.gitattributes export-ignore
.github export-ignore
.gitignore export-ignore
codeception.dist.yml export-ignore
/tests/ export-ignore
/common/vendor/bin/ export-ignore


================================================
FILE: .github/workflows/ci.yml
================================================
name: PHP Lint & Codeception
on: [ push, pull_request ]
jobs:
  build:
    runs-on: ubuntu-24.04
    strategy:
      fail-fast: false
      matrix:
        php: [ '7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5' ]

    name: PHP ${{ matrix.php }}
    steps:

    - name: Checkout Repository
      uses: actions/checkout@v5

    - name: Install PHP
      run: chmod +x .github/workflows/setup-php.sh && .github/workflows/setup-php.sh ${{ matrix.php }}

    - name: Create test database
      run: chmod +x .github/workflows/setup-mysql.sh && .github/workflows/setup-mysql.sh

    - name: PHP Lint
      run: if find . -name "*.php" ! -path "./common/vendor/*" -print0 | xargs -0 -n 1 -P 8 php -l | grep -v "No syntax errors detected"; then exit 1; fi

    - name: Download codeception
      run: wget https://res.rhymix.org/ci/php${{ matrix.php }}/codecept.phar

    - name: Run PHP development server
      run: php -S localhost:8000 &

    - name: Build and run codeception
      run: |
        php codecept.phar build
        php codecept.phar run --debug --fail-fast


================================================
FILE: .github/workflows/setup-mysql.sh
================================================
#!/bin/bash

AUTH="-uroot -proot"

# Start MySQL
sudo systemctl start mysql.service

# Create default database
sudo mysql $AUTH -e "CREATE DATABASE rhymix CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci"
sudo mysql $AUTH -e "CREATE USER rhymix@localhost IDENTIFIED WITH mysql_native_password BY 'rhymix'"
sudo mysql $AUTH -e "GRANT ALL ON rhymix.* to rhymix@localhost; FLUSH PRIVILEGES"

# Check MySQL version
sudo mysql $AUTH -e "SELECT VERSION()"


================================================
FILE: .github/workflows/setup-php.sh
================================================
#!/bin/bash

# Based on https://github.com/nanasess/setup-php
sudo add-apt-repository -y ppa:ondrej/php

# Install all required packages
sudo apt -y install \
	php$1-apcu \
	php$1-bcmath \
	php$1-cli \
	php$1-common \
	php$1-curl \
	php$1-gd \
	php$1-intl \
	php$1-mbstring \
	php$1-mysql \
	php$1-readline \
	php$1-sqlite3 \
	php$1-xml \
	php$1-zip

# Adjust php.ini settings
sudo bash -c "echo 'register_argc_argv = On' >> /etc/php/$1/cli/php.ini"
sudo bash -c "echo 'opcache.enable = 1' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
sudo bash -c "echo 'opcache.enable_cli = 1' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
sudo bash -c "echo 'opcache.jit = tracing' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
sudo bash -c "echo 'opcache.jit_buffer_size = 128M' >> /etc/php/$1/cli/conf.d/10-opcache.ini"

# Enable APCu
if [ -f "/etc/php/$1/cli/conf.d/20-apcu.ini" ]; then
  sudo bash -c "echo 'apc.enable_cli = 1' >> /etc/php/$1/cli/conf.d/20-apcu.ini"
fi

# Disable xdebug
sudo phpdismod -v ALL -s ALL xdebug

# Set and check default PHP version
sudo update-alternatives --set php /usr/bin/php$1
php -v


================================================
FILE: .gitignore
================================================
.DS_Store
Thumbs.db

/config/config.user.inc.php
/config/install.config.php
/files/
/build/
/libs/

codeception.yml
/tests/_output/
/tests/*.suite.yml
/tests/_support/InstallTester.php
/tests/_support/UnitTester.php
/tests/_support/_generated/

/node_modules/
/bower_components/
composer.phar
codecept.phar

.idea
*.sublime-workspace
*.sublime-project
.codeintel
.vscode
error_log


================================================
FILE: .htaccess
================================================
RewriteEngine On

# block direct access to templates, XML schema files, config files, dotfiles, environment, etc.
RewriteCond %{REQUEST_URI} !/modules/editor/(skins|styles)/
RewriteRule ^(addons|common/tpl|files/(faceOff|ruleset)|(m\.)?layouts|modules|plugins|themes|widgets|widgetstyles)/.+\.(html|xml|blade\.php)$ - [L,F]
RewriteRule ^files/(attach|config|cache)/.+\.(ph(p|t|ar)?[0-9]?|p?html?|cgi|pl|exe|[aj]spx?|inc|bak)$ - [L,F]
RewriteRule ^files/(env|member_extra_info/(new_message_flags|point))/ - [L,F]
RewriteRule ^(\.git|\.ht|\.travis|codeception\.|composer\.|Gruntfile\.js|package\.json|CONTRIBUTING|COPYRIGHT|LICENSE|README) - [L,F]

# static files
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.+)/(addons|files|layouts|m\.layouts|modules|widgets|widgetstyles)/(.*) ./$2/$3 [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.+)\.min\.(css|js)$ ./$1.$2 [L]

# all other short URLs
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule . index.php [L]


================================================
FILE: CONTRIBUTING.md
================================================
# 개발에 참여하고 싶으신 분들께 드리는 안내문

이 파일의 내용은 공식 매뉴얼로 옮겨졌습니다.

- [이슈 및 PR 작성 방법](https://rhymix.org/manual/contrib/github)
- [코딩 규칙](https://rhymix.org/manual/contrib/coding-standards)
- [GPL: 개발자, 디자이너, 사용자 등의 권리와 의무](https://rhymix.org/manual/contrib/license)


================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    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 2 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 for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


================================================
FILE: README.md
================================================
[![Rhymix](./common/img/logo.png)](https://rhymix.org)

![PHP Lint & Codeception](https://github.com/rhymix/rhymix/workflows/PHP%20Lint%20&%20Codeception/badge.svg)

# 한국어

Rhymix(라이믹스)는 누구든지 쉽고 자유롭게 독립적인 홈페이지를 만들어
자신을 표현하고 커뮤니티를 키워나갈 수 있도록 돕기 위한 CMS(content management system)입니다.

[XpressEngine](https://xe1.xpressengine.com) 1.8 버전을 fork(가지치기)하여 진행하는 프로젝트로,
누구나 무료로 사용할 수 있고 개발에 참여할 수도 있는 자유 소프트웨어(free software)입니다.

Rhymix는 "시를 짓다, 운을 맞추다"라는 의미의 "rhyme"과
"조합하다, 변주하다"라는 의미의 "remix"를 합친 이름입니다.
라이믹스는 인터넷 공간에서 자유롭게 창작 활동을 하고
다양한 소프트웨어와 콘텐츠를 조합하여 새로운 것을 만들어내는 모든 사용자들을 응원합니다.

### 개발 방향

Rhymix는 개발자와 사용자가 서로의 권리와 책임을 존중하는 인터넷 생태계,
중앙집중형 SNS 플랫폼에 의존하지 않고도 누구나 내 목소리를 낼 수 있는 세상,
벤처기업이나 스타트업의 개발자들뿐 아니라 평범한 블로거, 동호회, 학생, 장애인 등도
사이버 공간에 당당하게 집을 짓고 서로 소통할 수 있는 미래를 만들어가길 원합니다.

개발자 위주, 서비스 제공자 위주로 나아가는 현대의 IT 동향을 무차별적으로 받아들이기보다는
사용자의 주권과 열린 인터넷 환경을 보호하는 기술을 집중적으로 발굴하며,
우리나라 인터넷 커뮤니티의 성장을 이끌었던 90년대 제로보드와 2000년대 XE의 정신을 이어받아
2020년대 현재 위기에 처한 오픈 웹을 지키고 회복시키는 일에 앞장서고자 합니다.

그러기 위해서는 다른 어떤 CMS보다도 일반 사용자를 위한 편리성이 가장 뛰어나야 합니다.

- 초보자도 쉽게 클릭 몇 번으로 웹사이트를 완성할 수 있을 만큼 편리한 CMS
- 최신 기술을 적극적으로 사용하고 속도가 빠르며 보안이 우수한 CMS
- 커뮤니티를 통해 사용자와 개발자의 건전한 의사소통을 돕는 CMS
- 애드온, 모듈, 위젯 등 기존 XE 서드파티 자료들과의 호환성을 최대한 보장하려고 노력합니다.

### 설치 환경

Rhymix를 사용하려면 PHP 7.4 이상, MySQL 또는 MariaDB가 필요합니다.
자세한 설치 환경은 [매뉴얼](https://rhymix.org/manual/introduction/requirements)을 참고하십시오.

### 개발 참여

Rhymix는 개발자, 디자이너, 번역가 등의 도움과 일반 사용자들의 버그 신고를 환영합니다.
참여를 원하시는 분은 질서있고 효율적인 프로젝트 운영을 위해
[이슈 및 PR 작성 방법](https://rhymix.org/manual/contrib/github)과
[코딩 규칙](https://rhymix.org/manual/contrib/coding-standards)을 먼저 읽어 주시기 바랍니다.

보안 취약점을 발견하셨다면 해커들에게 알려지기 전에 먼저 패치를 작성할 수 있도록
devops@rhymix.org로 알려 주시면 감사하겠습니다.

### 공식 홈페이지

- Rhymix : https://rhymix.org

### 커뮤니티

- XETOWN : https://xetown.com

### 저작권 및 라이선스

Rhymix는 [GNU GPL v2](http://korea.gnu.org/documents/copyleft/gpl.ko.html)
또는 그 이후 버전 라이선스의 적용을 받는 자유 소프트웨어(free software)입니다.
자유 소프트웨어는 "오픈소스" 또는 "개방형"이라는 명칭으로도 알려져 있으며,
개발자와 사용자의 자유와 권리, 참여와 책임을 강조하는 프로그램으로
누구나 무료로 사용할 수 있고 개발에 참여할 수도 있습니다.

Rhymix는 [NAVER](https://www.navercorp.com/)가 일부 저작권을 가진
[XpressEngine](https://xe1.xpressengine.com)의 소스코드에 바탕을 두고 있습니다.
Rhymix 개발자들이 추가 및 변경한 부분의 저작권은 해당 개발자들에게 있습니다.

XpressEngine은 초창기에 GPL을 사용하다가 버전 1.4.0부터 LGPL로 전환했지만,
Rhymix는 사용자의 권리를 더욱 보호하고 자유 소프트웨어 본연의 정신에 충실하기 위해 라이선스를 GPL로 되돌렸습니다.
(라이선스 전환은 [LGPL v2.1 제3조](http://korea.gnu.org/documents/copyleft/lgpl.ko.html#term3)에서 허용하고 있습니다.)

GPL은 WordPress, Drupal, Joomla 등 세계적인 CMS들이 공통으로 채택하고 있는 라이선스이므로
사용자 및 개발자의 권리와 의무도 이러한 CMS들의 경우와 동일합니다.

홈페이지에 Rhymix를 사용하는 것만으로 소스코드를 공개할 의무가 발생하지는 않으며,
Rhymix의 소스코드를 수정하거나 확장 기능을 직접 개발하여 사용하더라도 마찬가지입니다.
그러나 직접 개발한 확장 기능을 제3자에게 배포 또는 판매할 경우에는 반드시 소스코드를 제공해야 하며,
이러한 소스코드는 모두 GPL 라이선스의 적용을 받습니다.

# English

Rhymix is a content management system (CMS) for everyone who wants to create independent homepages to express themselves and build their communities easily and freely.

Rhymix is a fork of [XpressEngine](https://xe1.xpressengine.com) version 1.8 and is free software that anyone can use for free and participate.

Rhymix is a combination of "rhyme" in the sense of "making a poem, adjusting the sound", and "remix" in the sense of "combining, changing".
Rhymix cheers everyone who freely creates and/or assembles new things in the Internet space by combining various software and contents.

### Development Direction

Rhymix developers want an Internet ecosystem where developers and users respect each other's rights and responsibilities, 
a world where everyone can speak their voice without relying on a centralized SNS platform, 
a future where ordinary bloggers, students, the disabled and others as well as developers of startups can build a home in cyberspace and communicate with each other.

Rather than indiscriminately accepting modern IT trends that are centered on developers and service providers, 
we focused on technologies that protect users' sovereignty and open Internet environment. Taking the spirit of ZeroBoard and XpressEngine, which led the growth of the Korean Internet communities in the 1990s and 2000s respectively, Rhymix wants to take the lead in recovering and restoring the open web in the crisis of the 2020s.

This requires the most convenience for the average user over any other CMS.

- CMS that is convenient enough to create the website easily, even for beginners, with a few clicks
- CMS that is actively using the latest technology, fast and secure
- CMS to help users and developers communicate well through community
- We try to ensure maximum compatibility with existing XpressEngine third-party materials such as add-ons, modules and widgets.

### Installation Environment

Rhymix requires PHP 7.4 or higher, and MySQL or MariaDB.
Please see the [online manual](https://rhymix.org/manual/introduction/requirements) for more information on server requirements.

### Participation in Development

Rhymix welcomes developers, designers, translators, and bugs to the public.
If you would like to participate, please read [Issue and PR Submission Guide](https://rhymix.org/manual/contrib/github)
and [Coding Standards](https://rhymix.org/manual/contrib/coding-standards) first to ensure efficient and orderly project management.

If you have found a security vulnerability, please let us know at devops@rhymix.org so that we can make a patch before it is exploited.

### Official Website

- Rhymix : https://rhymix.org

### Community

- XETOWN (Korean) : https://xetown.com

### Copyright and License

Rhymix is a free software licensed under the [GNU GPL v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) or later.
Free software is a program that emphasizes the rights and responsibilities of developers and users to participate or use in freedom.

Rhymix is based on the source code of [XpressEngine](https://xe1.xpressengine.com) ([Github](https://github.com/xpressengine/xe-core/)), which is free software partly owned by [NAVER](https://www.navercorp.com/).
Rhymix developers have copyrights on the added and modified code.

XpressEngine has been licensed under the GPL in its early days and switched to LGPL from version 1.4.0, but Rhymix has reverted its licenses to the GPL for further protection of the rights and spirit of free software.
(License conversion is allowed in [LGPL v2.1 Section 3](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html).)

The GPL is commonly adopted by global CMSes such as WordPress, Drupal, and Joomla. The rights and obligations of users and developers of Rhymix are the same as those CMSes.

The use of Rhymix on homepage does not impose a duty on you to release the source code, even if you modify the source code or develop the extension yourself.
However, distributing and/or selling the source code or extension according to the GPL license, you have to provide the source code.



================================================
FILE: SECURITY.md
================================================
Security Policy
---------------

### Supported Versions

Only the latest version is actively supported.

## Reporting a Vulnerability

Please report possible vulnerabilities by email to devops@rhymix.org.
Please DO NOT use GitHub issues or pull requests for this purpose.

We do not consider it a vulnerability if the superuser (is_admin=Y) account
can insert scripts or delete information. That's what the superuser account is for!
It will, however, be considered a serious vulnerability if someone else can
trick a superuser to perform such actions inadvertently,
for example through a CSRF attack.


================================================
FILE: addons/adminlogging/adminlogging.addon.php
================================================
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */

if(!defined('__XE__'))
	exit();

/**
 * @file adminlogging.addon.php
 * @author NAVER (developers@xpressengine.com)
 * @brief admin log
 */
$logged_info = Context::get('logged_info');
if ($called_position === 'before_module_proc' && $logged_info->is_admin === 'Y' && stripos(Context::get('act') ?? '', 'admin') !== false)
{
	$oAdminloggingController = adminloggingController::getInstance();
	$oAdminloggingController->insertLog($this->module, $this->act);
}
/* End of file adminlogging.php */
/* Location: ./addons/adminlogging */


================================================
FILE: addons/adminlogging/conf/info.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
    <title xml:lang="ko">어드민 메뉴 접근 로깅</title>
    <title xml:lang="en">Logging Access to the Administrator Menu</title>
	<title xml:lang="zh-CN">后台访问日志</title>
    <title xml:lang="zh-TW">管理選單訪問日誌</title>
    <description xml:lang="ko">
		admin menu에 접근한 기록을 로깅하는 애드온입니다.
    </description>
	<description xml:lang="zh-CN">
		后台访问以及登陆日志。
	</description>
    <description xml:lang="zh-TW">
		管理選單訪問紀錄及登入日誌。
    </description>
    <description xml:lang="en">
		This addon will record Rhymix administrators' access to the menu.
    </description>
    <version>RX_VERSION</version>
    <date>RX_CORE</date>

    <author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
        <name xml:lang="ko">NAVER</name>
        <name xml:lang="jp">NAVER</name>
        <name xml:lang="en">NAVER</name>
        <name xml:lang="vi">NAVER</name>
        <name xml:lang="zh-CN">NAVER</name>
        <name xml:lang="es">NAVER</name>
        <name xml:lang="ru">NAVER</name>
        <name xml:lang="ge">NAVER</name>
        <name xml:lang="zh-TW">NAVER</name>
    </author>
</addon>


================================================
FILE: addons/autolink/autolink.addon.php
================================================
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */

if(!defined('__XE__'))
	exit();

/**
 * @file autolink.addon.php
 * @author NAVER (developers@xpressengine.com)
 * @brief Automatic link add-on
 */
if($called_position == 'after_module_proc' && Context::getResponseMethod() == "HTML")
{
	Context::loadFile(array('./addons/autolink/autolink.js', 'body', '', null), true);
}
/* End of file autolink.addon.php */
/* Location: ./addons/autolink/autolink.addon.php */


================================================
FILE: addons/autolink/autolink.js
================================================
/**
 * @file autolink.js
 * @brief javascript code for autolink addon
 * @author NAVER (developers@xpressengine.com)
 */
(function($){
	var protocol_re = '(?:(?:https?|ftp|news|telnet|irc|mms)://)';
	var domain_re   = '(?:[^\\s./)>]+\\.)+[^\\s./)>]+';
	var max_255_re  = '(?:1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9]?[0-9])';
	var ip_re       = '(?:'+max_255_re+'\\.){3}'+max_255_re;
	var port_re     = '(?::([0-9]+))?';
	var user_re     = '(?:/~\\w+)?';
	var path_re     = '(?:/[^\\s]*)?';
	var hash_re     = '(?:#[^\\s]*)?';

	var url_regex = new RegExp('('+protocol_re+'('+domain_re+'|'+ip_re+'|localhost'+')'+port_re+user_re+path_re+hash_re+')', 'ig');

	var AutoLink = xe.createPlugin("autolink", {
		targets : [],
		init : function() {
			this.targets = [];
		},
		API_ONREADY : function() {
			var thisPlugin = this;

			// extract target text nodes
			this.extractTargets($('.rhymix_content, .xe_content'));

			$(this.targets).each(function(){
				thisPlugin.cast('AUTOLINK', [this]);
			});
		},
		API_AUTOLINK : function(oSender, params) {
			var textNode = params[0];
			if(!$(textNode).parent().length || $(textNode).parent().get(0).nodeName.toLowerCase() == 'a') return;
			var content  = textNode.nodeValue;
			var dummy    = $('<span>');

			content = content.replace(/</g, '&lt;').replace(/>/g, '&gt;');
			content = content.replace(url_regex, function(match, p1, offset, string) {
				var match;
				var suffix = '';
				var attribute = '';
				if (p1.indexOf('(') < 0 && p1.match(/\)$/)) {
					p1 = p1.replace(/\)$/, '');
					suffix = ')';
				} else if (p1.indexOf('[') < 0 && p1.match(/\]$/)) {
					p1 = p1.replace(/\]$/, '');
					suffix = ']';
				} else if (p1.indexOf('&lt;') < 0 && p1.match(/&gt;$/)) {
					p1 = p1.replace(/&gt;$/, '');
					suffix = '&gt;';
				} else if (match = /^([\x21-\x7E]+\.[a-z]+)([가-힣]{1,3})$/.exec(p1)) {
					p1 = match[1];
					suffix = match[2];
				}
				if(!isSameOrigin(location.href, p1)) {
					attribute = ' target="_blank"';
				}
				return '<a href="' + p1 + '"' + attribute + '>' + p1 + '</a>' + suffix;
			});

			$(textNode).before(dummy);
			$(textNode).replaceWith(content);
			params[0] = dummy.next('a');
			dummy.remove();
		},
		extractTargets : function(obj) {
			var thisPlugin = this;
			var wrap = $('.rhymix_content, .xe_content', obj);
			if(wrap.length) {
				this.extractTargets(wrap);
				return;
			}

			$(obj).contents().each(function(){
				var node_name = this.nodeName.toLowerCase();
				if($.inArray(node_name, ['a', 'pre', 'xml', 'textarea', 'input', 'select', 'option', 'code', 'script', 'style', 'iframe', 'button', 'img', 'embed', 'object', 'ins']) != -1) return;

				// FIX ME : When this meanless code wasn't executed, url_regex do not run correctly. why?
				url_regex.exec('');

				if(this.nodeType == 3) { // text node
					var content = this.nodeValue;

					if(content.length < 5) return;

					if(!/(http|https|ftp|news|telnet|irc|mms):\/\//i.test(content)) return;

					thisPlugin.targets.push(this);
				} else {
					thisPlugin.extractTargets(this);
				}
			});
		}
	});

	xe.registerPlugin(new AutoLink());

	$(document).on('click', '.rhymix_content a, .xe_content a', function() {
		var $this = $(this);
		var href = $this.attr('href');
		if(!href || /^(?:javascript|mailto):|#/.test(href)) {
			return;
		}
		if (!$this.attr("target") && !isSameOrigin(location.href, href)) {
			$this.attr("target", "_blank");
		}
	});
	
})(jQuery);


================================================
FILE: addons/autolink/autolink.spec.html
================================================
<!DOCTYPE html> 
<html lang="ko"> 
<head>
<meta charset="utf-8" />
<title>Autolink Addon Unit Test</title>
<link rel="stylesheet" href="../../common/js/unittest/css/JSSpec.css" />
<script src="../../common/js/jquery.js"></script>
<script src="../../common/js/common.js"></script>
<script src="../../common/js/js_app.js"></script>
<script src="autolink.js"></script>
<script src="../../common/js/unittest/JSSpec/diff_match_patch.js"></script>
<script src="../../common/js/unittest/JSSpec/JSSpec.js"></script>
<script>// <![CDATA[

var testParam = null;
var TestSuite = xe.createPlugin("TestSuite", {
	API_BEFORE_AUTOLINK : function(oSender, params) {
		return !jQuery(params[0]).parent().is('#test7');
	},
	API_AFTER_AUTOLINK : function(oSender, params) {
		testParam = params[0];
	}
});

xe.registerPlugin(new TestSuite);

jQuery(function($){
	
describe('AutoLink functionality', {
	"#test1 - plain text don't have any link text" : function() {
		value_of( $('#test1').children().length ).should_be(0);
	},
	"#test2 - simple link text only" : function() {
		value_of( $('#test2 > a').length > 0 ).should_be_true();
		value_of( $('#test2 > a').attr('href') ).should_be($('#test2 > a').text());
		value_of( $('#test2').children().length ).should_be(1);
	},
	"#test3 - simple link text and some text" : function() {
		value_of( $('#test3 > a').length > 0 ).should_be_true();
		value_of( $('#test3 > a').attr('href') ).should_be($('#test3 > a').text());
		value_of( $('#test3').contents().length ).should_be(2);
	},
	"#test4 - complex link text only" : function() {
		value_of( $('#test4 > a').length > 0 ).should_be_true();
		value_of( $('#test4 > a').attr('href') ).should_be($('#test4 > a').text());
		value_of( $('#test4').children().length ).should_be(1);
	},
	"#test5 - complex link text and some text" : function() {
		value_of( $('#test5 > a').length > 0 ).should_be_true();
		value_of( $('#test5 > a').attr('href') ).should_be($('#test5 > a').text());
		value_of( $('#test5').contents().length ).should_be(3);
	},
	"#test6 - complex example" : function() {
		value_of( $('#test6 a').length ).should_be(8);
		value_of( $('#test6 a').eq(0).attr('href') ).should_be($('#test6 a').eq(0).text());
		value_of( $('#test6 a').eq(2).parent().is('b') ).should_be_true();
		value_of( $('#test6 > textarea > a').length ).should_be(0);
		value_of( $('#test6 > div > a').attr("target") ).should_be("_self");
	},
	"#test9 - don't include parenthesis" : function() {
		value_of( $('#test9 a').length ).should_be(1);
		value_of( $('#test9 a').attr('href') ).should_be('http://www.naver.com');
	},
	"#test10 - include tild" : function() {
		value_of( $('#test10 a').length ).should_be(1);
		value_of( $('#test10 a').attr('href') ).should_be('http://www.xpressengine.com:8000/~user/?mid=def');
	}
});


describe('Autolink trigger', {
	"#test7 - ignored" : function() {
		value_of( $('#test7 > a').length ).should_be(0);
	},
	"#test8 - parameter on after trigger" : function() {
		value_of( $(testParam).is('a') ).should_be_true();
	}
});


});
// ]]></script>
</head>
<body>
<div class="xe_content" style="display:none">
	<div id="test1">This is autolink test. This text don't have any link text.</div>
	<div id="test2">http://mygony.com</div>
	<div id="test3">Go to http://mygony.com</div>
	<div id="test4">http://www.abc.com/some_program?hello=world&encoded=%ED%C2%C1</div>
	<div id="test5">Before text. http://www.abc.com/some_program?hello=world&encoded=%ED%C2%C1 After Text</div>
	<div id="test6">
		<p>This is text. http://www.abc.com/some_program?hello=world&encoded=%ED%C2%C1 Text Text.
		Another URL : http://www.decccccf12312.co.uk/path/to/program?mymy=lovelove. XE!
		<b>Bold text and http://mail.abc.com/path/to/one_cgi.cgi?hello=world#hash_text Bold text end</b>
		<textarea rows="8" cols="42">this text should be ignored http://mygony.com ignored?</textarea>
		<div>
			Hello~
			<a href="http://mygony.com" target="_self">http://mygony.com</a>
			Sayonara~
		</div>
		IP Test http://119.205.243.46 and MMS Link mms://xpressengine.com/a.wmv
		http://localhost/some/path/file.ext
		Is it OK?</p>
		<p>mms://xpressengine.com/a.wmv</p>
	</div>
	<div id="test7">http://mygony.com</div>
	<div id="test8">Go to http://mygony.com</div>
	<div id="test9">Naver(http://www.naver.com)</div>
	<div id="test10">User homepage : http://www.xpressengine.com:8000/~user/?mid=def should be a link.</div>
</div>
</body>
</html>

================================================
FILE: addons/autolink/conf/info.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
    <title xml:lang="ko">자동 링크 애드온</title>
    <title xml:lang="jp">自動リンクアドオン</title>
    <title xml:lang="en">Auto Link Addon</title>
    <title xml:lang="vi">Auto Link</title>
    <title xml:lang="zh-CN">自动链接插件</title>
    <title xml:lang="es">auto vínculo addon</title>
    <title xml:lang="ru">Аддон авто-ссылки</title>
    <title xml:lang="ge">Auto-Link Addon</title>
    <title xml:lang="zh-TW">自動連結</title>
    <description xml:lang="ko">
        글과 댓글의 내용 중 URL 문자열에 링크를 걸어주는 애드온입니다.
    </description>
    <description xml:lang="jp">
        書き込み本文とコメントに登録された内容の中、httpで始まる一般文字列に自動にリンクを貼り付け、そのリンクにマウスオーバすると、別ウィンドウ、または同一ウィンドウに開くメニュが現れるアドオンです。
    </description>
    <description xml:lang="en">
        This addon automatically transforms text URLs encountered in posts and comments into linkable URLs.
    </description>
    <description xml:lang="vi">
        Addon này sẽ tự động tạo ra một đường Link khi gặp chuỗi kí tự 'http' có trong bài viết.
    </description>
    <description xml:lang="zh-CN">
        主题及评论中以http开始的字符串,自动转换为链接。并且鼠标移到链接上方时,将出现可选(新窗/本页面)提示框。
    </description>
    <description xml:lang="es">
        Los comentarios que comienzan con http naeyongjung tema común de la cadena para vincular automáticamente a colgar el puntero del ratón sobre cada uno de los vínculos y saechang Ciudad y aparecen en el menú de add-on de decoración.
    </description>
    <description xml:lang="ru">
        Этот аддон-дополнение переводит все неактивные ссылки, которые встречаются в статьях и комментариях, в рабочие ссылки.
    </description>
    <description xml:lang="ge">
        Kommentare beginnen mit http naeyongjung Thema der gemeinsamen String automatisch Link zu hängen Sie mit der Maus über die einzelnen Links und saechang Stadt und auf dem Menü des Add-On Dekoration.
    </description>
    <description xml:lang="zh-TW">
        是種可將文章及回覆內容中的 URL 網址字串自動轉換成連結的附加元件。
    </description>
    <version>RX_VERSION</version>
    <date>RX_CORE</date>

    <author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
        <name xml:lang="ko">NAVER</name>
        <name xml:lang="jp">NAVER</name>
        <name xml:lang="en">NAVER</name>
        <name xml:lang="vi">NAVER</name>
        <name xml:lang="zh-CN">NAVER</name>
        <name xml:lang="es">NAVER</name>
        <name xml:lang="ru">NAVER</name>
        <name xml:lang="ge">NAVER</name>
        <name xml:lang="zh-TW">NAVER</name>
    </author>
</addon>


================================================
FILE: addons/counter/conf/info.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
    <title xml:lang="ko">기본 카운터 애드온</title>
    <title xml:lang="jp">アクセスカウンターアドオン</title>
    <title xml:lang="zh-CN">网站访问统计</title>
    <title xml:lang="en">Counter Addon</title>
    <title xml:lang="vi">Counter Addon</title>
    <title xml:lang="ge">Counter Addon</title>
    <title xml:lang="es">Addon contador básico</title>
    <title xml:lang="ru">Аддон счетчика</title>
    <title xml:lang="zh-TW">網站訪問統計</title>
    <description xml:lang="ko">
        XE의 기본 카운터를 이용하여 접속 정보를 기록합니다.
        이 애드온을 켜야 접속 정보 수집이 됩니다.
    </description>
    <description xml:lang="jp">
        XEのアクセスカウンターモジュールで接続(アクセス)情報を記録します。
        このアドオンを「使用」に設定してから、接続(アクセス)情報が記録されます。
    </description>
    <description xml:lang="zh-CN">
        利用XE的网站访问统计模块记录网站访问信息。
        把状态设置为"使用"时,才会记录网站访问信息.
    </description>
    <description xml:lang="en">
        This addon logs access information based on the basic counter module within XE.
        The access information will be collected only if you enable this addon.
    </description>
    <description xml:lang="vi">
        Addon này sẽ tổng hợp tất cả những lượt truy cập vào Website qua Module Counter có sẵn bên trong XE.
        Thông tin truy nhập chỉ được tập hợp khi bạn bật Addon này..
    </description>
    <description xml:lang="ge">
        Dieses Addon-Logs Zugriff auf Informationen basiert auf den grundlegenden Zähler-Modul innerhalb  XE.
        Der Zugang zu Informationen wird nur erhoben, wenn Sie über dieses Addon.
    </description>
    <description xml:lang="es">
        Este addon contador básico de  XE permite llevar la información de acceso a la página web de los visitantes.
        Es necesario activar este addon para agregar la información de acceso.
    </description>
    <description xml:lang="ru">
        Этот аддон пишет в лог информацию о доступе к сайту, основанную на базовом модуле счетчика в  XE.
        Для сбора информации необходимо включить этот аддон.
    </description>
    <description xml:lang="zh-TW">
        使用XE的網站訪問統計模組記錄網站訪問資料。
        將狀態設置成"使用"時,才會紀錄網站訪問資料。
    </description>
    <version>RX_VERSION</version>
    <date>RX_CORE</date>

    <author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
        <name xml:lang="ko">NAVER</name>
        <name xml:lang="vi">NAVER</name>
        <name xml:lang="jp">NAVER</name>
        <name xml:lang="zh-CN">NAVER</name>
        <name xml:lang="en">NAVER</name>
        <name xml:lang="ge">NAVER</name>
        <name xml:lang="es">NAVER</name>
        <name xml:lang="ru">NAVER</name>
        <name xml:lang="zh-TW">NAVER</name>
    </author>
</addon>


================================================
FILE: addons/counter/counter.addon.php
================================================
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */

if(!defined('__XE__'))
	exit();

/**
 * @file counter.addon.php
 * @author NAVER (developers@xpressengine.com)
 * @brief Counter add-on
 */
// Execute if called_position is before_display_content
if($called_position == 'before_display_content' && Context::get('module') != 'admin' && Context::getResponseMethod() == 'HTML' && Context::isInstalled() && !isCrawler())
{
	$oCounterController = getController('counter');
	$oCounterController->counterExecute();
}
/* End of file counter.addon.php */
/* Location: ./addons/counter/counter.addon.php */


================================================
FILE: addons/member_extra_info/conf/info.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
    <title xml:lang="ko">회원 확장 정보 출력</title>
    <title xml:lang="jp">会員情報拡張表示</title>
    <title xml:lang="zh-CN">用户扩展信息</title>
    <title xml:lang="en">Extra Member Info</title>
    <title xml:lang="vi">Bổ xung thông tin thành viên</title>
    <title xml:lang="ge">회원 확장 정보 출력</title>
    <title xml:lang="es">회원 확장 정보 출력</title>
    <title xml:lang="ru">Экстраинформация о пользователях</title>
    <title xml:lang="zh-TW">用戶延伸資料</title>
    <description xml:lang="ko">
        회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요.
    </description>
    <description xml:lang="jp">
        会員が登録したイメージニックネーム、イメージマークを使うためにはこのアドオンをオンにして下さい。
    </description>
    <description xml:lang="zh-CN">
        此插件将把用户信息中的昵称图片,用户图标,签名等信息显示到页面当中。
    </description>
    <description xml:lang="en">
        This addon displays a member's image name, image mark.
    </description>
    <description xml:lang="vi">
        Addon này sẽ hiển thị hình ảnh thay thế tên và hình đánh dấu của thành viên.
    </description>
    <description xml:lang="ge">
        This addon displays a member's image name, image mark.
    </description>
    <description xml:lang="es">
        This addon displays a member's image name, image mark.
    </description>
    <description xml:lang="ru">
        Аддон изображает имя, марку картинки пользователя.
    </description>
    <description xml:lang="zh-TW">
        可將用戶資料中的暱稱圖片、用戶圖示、簽名檔等資料顯示到頁面當中。
    </description>
    <version>RX_VERSION</version>
    <date>RX_CORE</date>

    <author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
        <name xml:lang="ko">NAVER</name>
        <name xml:lang="vi">NAVER</name>
        <name xml:lang="jp">NAVER</name>
        <name xml:lang="zh-CN">NAVER</name>
        <name xml:lang="en">NAVER</name>
        <name xml:lang="ge">NAVER</name>
        <name xml:lang="es">NAVER</name>
        <name xml:lang="ru">NAVER</name>
        <name xml:lang="zh-TW">NAVER</name>
    </author>
</addon>


================================================
FILE: addons/member_extra_info/member_extra_info.addon.php
================================================
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */

if(!defined('__XE__'))
{
	exit();
}

/**
 * @file image_name.addon.php
 * @author NAVER (developers@xpressengine.com)
 * @brief Display user image name/image mark
 *
 * Find member_srl in the part with <div class="member_MemberSerialNumber"> .... </div>
 * Check if ther is image name and image mark. Then change it.
 */
/**
 * Just before displaying, change image name/ image mark
 */
if($called_position != "before_display_content" || Context::get('act') == 'dispPageAdminContentModify' || Context::getResponseMethod() != 'HTML' || isCrawler())
{
	return;
}
// Include a file having functions to replace member image name/mark
require_once __DIR__ . '/member_extra_info.lib.php';

// 1. Find a part <div class="member_MemberSerialNumber"> content </div> in the output document, change it to image name/mark by using MemberController::transImageName()
$temp_output = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'memberTransImageName', $output);
if($temp_output)
{
	$output = $temp_output;
}
unset($temp_output);

/* End of file member_extra_info.addon.php */
/* Location: ./addons/member_extra_info/member_extra_info.addon.php */


================================================
FILE: addons/member_extra_info/member_extra_info.lib.php
================================================
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */

/**
 * @brief If member_srl exists in the div or span, replace to image name or nick image for each member_srl
 * */
function memberTransImageName($matches)
{
	// If member_srl < 0, then return text only in the body
	$member_srl = $matches[3];
	if($member_srl < 0)
	{
		return $matches[5];
	}
	// If member_srl=o(not a member), return the entire body
	if(!$member_srl)
	{
		return $matches[0];
	}

	$oMemberModel = getModel('member');
	$nick_name = $matches[5];

	// Initialize global variable for cache
	if(!isset($GLOBALS['_transImageNameList'][$member_srl]))
	{
		$GLOBALS['_transImageNameList'][$member_srl] = new stdClass();
	}
	$_tmp = &$GLOBALS['_transImageNameList'][$member_srl];
	
	// If pre-defined data in the global variables, return it
	if(!isset($_tmp->cached) || !$_tmp->cached)
	{
		$_tmp->cached = true;
		$image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl);
		$image_mark_file = sprintf('files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl);

		if(file_exists(RX_BASEDIR . $image_name_file))
		{
			$_tmp->image_name_file = $image_name_file . '?' . date('YmdHis', filemtime(RX_BASEDIR . $image_name_file));
			$image_name_file = $_tmp->image_name_file;
		}
		else
		{
			$_tmp->image_name_file = '';
			$image_name_file = '';
		}

		if(file_exists(RX_BASEDIR . $image_mark_file))
		{
			$_tmp->image_mark_file = $image_mark_file . '?' . date('YmdHis', filemtime(RX_BASEDIR . $image_mark_file));
			$image_mark_file = $_tmp->image_mark_file;
		}
		else
		{
			$_tmp->image_mark_file = '';
			$image_mark_file = '';
		}

		$site_module_info = Context::get('site_module_info');
		$group_image = $oMemberModel->getGroupImageMark($member_srl, $site_module_info->site_srl);
		$_tmp->group_image = $group_image;
	}
	else
	{
		$group_image = $_tmp->group_image;
		$image_name_file = $_tmp->image_name_file;
		$image_mark_file = $_tmp->image_mark_file;
	}

	// If image name and mark doesn't exist, set the original information
	if(!$image_name_file && !$image_mark_file && !$group_image)
	{
		return $matches[0];
	}

	// check member_config

	$config = $oMemberModel->getMemberConfig();

	if($config->image_name == 'Y' && $image_name_file)
	{
		$nick_name = sprintf('<img src="%s%s" alt="id: %s" title="id: %s" style="border:0;vertical-align:middle;margin-right:3px" />', Context::getRequestUri(), $image_name_file, strip_tags($nick_name), strip_tags($nick_name));
	}
	if($config->image_mark == 'Y' && $image_mark_file)
	{
		$nick_name = sprintf('<img src="%s%s" alt="id: %s" title="id : %s" style="border:0;vertical-align:middle;margin-right:3px"/>%s', Context::getRequestUri(), $image_mark_file, strip_tags($nick_name), strip_tags($nick_name), $nick_name);
	}

	if($group_image)
	{
		$nick_name = sprintf('<img src="%s" style="border:0;max-height:16px;vertical-align:middle;margin-right:3px" alt="%s" title="%s" />%s', $group_image->src, $group_image->title, $group_image->description, $nick_name);
	}

	return preg_replace('/' . preg_quote($matches[5], '/') . '<\/' . $matches[6] . '>$/', '', $matches[0]) . $nick_name . '</' . $matches[6] . '>';
}

/* End of file member_extra_info.lib.php */
/* Location: ./addons/member_extra_info/member_extra_info.lib.php */


================================================
FILE: addons/photoswipe/PhotoSwipe/LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2014-2015 Dmitry Semenov, http://dimsemenov.com

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

================================================
FILE: addons/photoswipe/PhotoSwipe/default-skin/default-skin.css
================================================
/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */
/*

	Contents:

	1. Buttons
	2. Share modal and links
	3. Index indicator ("1 of X" counter)
	4. Caption
	5. Loading indicator
	6. Additional styles (root element, top bar, idle state, hidden state, etc.)

*/
/*
	
	1. Buttons

 */
/* <button> css reset */
.pswp__button {
  width: 44px;
  height: 44px;
  position: relative;
  background: none;
  cursor: pointer;
  overflow: visible;
  -webkit-appearance: none;
  display: block;
  border: 0;
  padding: 0;
  margin: 0;
  float: right;
  opacity: 0.75;
  -webkit-transition: opacity 0.2s;
          transition: opacity 0.2s;
  -webkit-box-shadow: none;
          box-shadow: none; }
  .pswp__button:focus,
  .pswp__button:hover {
    opacity: 1; }
  .pswp__button:active {
    outline: none;
    opacity: 0.9; }
  .pswp__button::-moz-focus-inner {
    padding: 0;
    border: 0; }

/* pswp__ui--over-close class it added when mouse is over element that should close gallery */
.pswp__ui--over-close .pswp__button--close {
  opacity: 1; }

.pswp__button,
.pswp__button--arrow--left:before,
.pswp__button--arrow--right:before {
  background: url(default-skin.png) 0 0 no-repeat;
  background-size: 264px 88px;
  width: 44px;
  height: 44px; }

@media (-webkit-min-device-pixel-ratio: 1.1), (-webkit-min-device-pixel-ratio: 1.09375), (min-resolution: 105dpi), (min-resolution: 1.1dppx) {
  /* Serve SVG sprite if browser supports SVG and resolution is more than 105dpi */
  .pswp--svg .pswp__button,
  .pswp--svg .pswp__button--arrow--left:before,
  .pswp--svg .pswp__button--arrow--right:before {
    background-image: url(default-skin.svg); }
  .pswp--svg .pswp__button--arrow--left,
  .pswp--svg .pswp__button--arrow--right {
    background: none; } }

.pswp__button--close {
  background-position: 0 -44px; }

.pswp__button--share {
  background-position: -44px -44px; }

.pswp__button--fs {
  display: none; }

.pswp--supports-fs .pswp__button--fs {
  display: block; }

.pswp--fs .pswp__button--fs {
  background-position: -44px 0; }

.pswp__button--zoom {
  display: none;
  background-position: -88px 0; }

.pswp--zoom-allowed .pswp__button--zoom {
  display: block; }

.pswp--zoomed-in .pswp__button--zoom {
  background-position: -132px 0; }

/* no arrows on touch screens */
.pswp--touch .pswp__button--arrow--left,
.pswp--touch .pswp__button--arrow--right {
  visibility: hidden; }

/*
	Arrow buttons hit area
	(icon is added to :before pseudo-element)
*/
.pswp__button--arrow--left,
.pswp__button--arrow--right {
  background: none;
  top: 50%;
  margin-top: -50px;
  width: 70px;
  height: 100px;
  position: absolute; }

.pswp__button--arrow--left {
  left: 0; }

.pswp__button--arrow--right {
  right: 0; }

.pswp__button--arrow--left:before,
.pswp__button--arrow--right:before {
  content: '';
  top: 35px;
  background-color: rgba(0, 0, 0, 0.3);
  height: 30px;
  width: 32px;
  position: absolute; }

.pswp__button--arrow--left:before {
  left: 6px;
  background-position: -138px -44px; }

.pswp__button--arrow--right:before {
  right: 6px;
  background-position: -94px -44px; }

/*

	2. Share modal/popup and links

 */
.pswp__counter,
.pswp__share-modal {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
      user-select: none; }

.pswp__share-modal {
  display: block;
  background: rgba(0, 0, 0, 0.5);
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  padding: 10px;
  position: absolute;
  z-index: 1600;
  opacity: 0;
  -webkit-transition: opacity 0.25s ease-out;
          transition: opacity 0.25s ease-out;
  -webkit-backface-visibility: hidden;
  will-change: opacity; }

.pswp__share-modal--hidden {
  display: none; }

.pswp__share-tooltip {
  z-index: 1620;
  position: absolute;
  background: #FFF;
  top: 56px;
  border-radius: 2px;
  display: block;
  width: auto;
  right: 44px;
  -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
  -webkit-transform: translateY(6px);
      -ms-transform: translateY(6px);
          transform: translateY(6px);
  -webkit-transition: -webkit-transform 0.25s;
          transition: transform 0.25s;
  -webkit-backface-visibility: hidden;
  will-change: transform; }
  .pswp__share-tooltip a {
    display: block;
    padding: 8px 12px;
    color: #000;
    text-decoration: none;
    font-size: 14px;
    line-height: 18px; }
    .pswp__share-tooltip a:hover {
      text-decoration: none;
      color: #000; }
    .pswp__share-tooltip a:first-child {
      /* round corners on the first/last list item */
      border-radius: 2px 2px 0 0; }
    .pswp__share-tooltip a:last-child {
      border-radius: 0 0 2px 2px; }

.pswp__share-modal--fade-in {
  opacity: 1; }
  .pswp__share-modal--fade-in .pswp__share-tooltip {
    -webkit-transform: translateY(0);
        -ms-transform: translateY(0);
            transform: translateY(0); }

/* increase size of share links on touch devices */
.pswp--touch .pswp__share-tooltip a {
  padding: 16px 12px; }

a.pswp__share--facebook:before {
  content: '';
  display: block;
  width: 0;
  height: 0;
  position: absolute;
  top: -12px;
  right: 15px;
  border: 6px solid transparent;
  border-bottom-color: #FFF;
  -webkit-pointer-events: none;
  -moz-pointer-events: none;
  pointer-events: none; }

a.pswp__share--facebook:hover {
  background: #3E5C9A;
  color: #FFF; }
  a.pswp__share--facebook:hover:before {
    border-bottom-color: #3E5C9A; }

a.pswp__share--twitter:hover {
  background: #55ACEE;
  color: #FFF; }

a.pswp__share--pinterest:hover {
  background: #CCC;
  color: #CE272D; }

a.pswp__share--download:hover {
  background: #DDD; }

/*

	3. Index indicator ("1 of X" counter)

 */
.pswp__counter {
  position: absolute;
  left: 0;
  top: 0;
  height: 44px;
  font-size: 13px;
  line-height: 44px;
  color: #FFF;
  opacity: 0.75;
  padding: 0 10px; }

/*
	
	4. Caption

 */
.pswp__caption {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  min-height: 44px; }
  .pswp__caption small {
    font-size: 11px;
    color: #BBB; }

.pswp__caption__center {
  text-align: left;
  max-width: 420px;
  margin: 0 auto;
  font-size: 13px;
  padding: 10px;
  line-height: 20px;
  color: #CCC; }

.pswp__caption--empty {
  display: none; }

/* Fake caption element, used to calculate height of next/prev image */
.pswp__caption--fake {
  visibility: hidden; }

/*

	5. Loading indicator (preloader)

	You can play with it here - http://codepen.io/dimsemenov/pen/yyBWoR

 */
.pswp__preloader {
  width: 44px;
  height: 44px;
  position: absolute;
  top: 0;
  left: 50%;
  margin-left: -22px;
  opacity: 0;
  -webkit-transition: opacity 0.25s ease-out;
          transition: opacity 0.25s ease-out;
  will-change: opacity;
  direction: ltr; }

.pswp__preloader__icn {
  width: 20px;
  height: 20px;
  margin: 12px; }

.pswp__preloader--active {
  opacity: 1; }
  .pswp__preloader--active .pswp__preloader__icn {
    /* We use .gif in browsers that don't support CSS animation */
    background: url(preloader.gif) 0 0 no-repeat; }

.pswp--css_animation .pswp__preloader--active {
  opacity: 1; }
  .pswp--css_animation .pswp__preloader--active .pswp__preloader__icn {
    -webkit-animation: clockwise 500ms linear infinite;
            animation: clockwise 500ms linear infinite; }
  .pswp--css_animation .pswp__preloader--active .pswp__preloader__donut {
    -webkit-animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite;
            animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite; }

.pswp--css_animation .pswp__preloader__icn {
  background: none;
  opacity: 0.75;
  width: 14px;
  height: 14px;
  position: absolute;
  left: 15px;
  top: 15px;
  margin: 0; }

.pswp--css_animation .pswp__preloader__cut {
  /* 
			The idea of animating inner circle is based on Polymer ("material") loading indicator 
			 by Keanu Lee https://blog.keanulee.com/2014/10/20/the-tale-of-three-spinners.html
		*/
  position: relative;
  width: 7px;
  height: 14px;
  overflow: hidden; }

.pswp--css_animation .pswp__preloader__donut {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  width: 14px;
  height: 14px;
  border: 2px solid #FFF;
  border-radius: 50%;
  border-left-color: transparent;
  border-bottom-color: transparent;
  position: absolute;
  top: 0;
  left: 0;
  background: none;
  margin: 0; }

@media screen and (max-width: 1024px) {
  .pswp__preloader {
    position: relative;
    left: auto;
    top: auto;
    margin: 0;
    float: right; } }

@-webkit-keyframes clockwise {
  0% {
    -webkit-transform: rotate(0deg);
            transform: rotate(0deg); }
  100% {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg); } }

@keyframes clockwise {
  0% {
    -webkit-transform: rotate(0deg);
            transform: rotate(0deg); }
  100% {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg); } }

@-webkit-keyframes donut-rotate {
  0% {
    -webkit-transform: rotate(0);
            transform: rotate(0); }
  50% {
    -webkit-transform: rotate(-140deg);
            transform: rotate(-140deg); }
  100% {
    -webkit-transform: rotate(0);
            transform: rotate(0); } }

@keyframes donut-rotate {
  0% {
    -webkit-transform: rotate(0);
            transform: rotate(0); }
  50% {
    -webkit-transform: rotate(-140deg);
            transform: rotate(-140deg); }
  100% {
    -webkit-transform: rotate(0);
            transform: rotate(0); } }

/*
	
	6. Additional styles

 */
/* root element of UI */
.pswp__ui {
  -webkit-font-smoothing: auto;
  visibility: visible;
  opacity: 1;
  z-index: 1550; }

/* top black bar with buttons and "1 of X" indicator */
.pswp__top-bar {
  position: absolute;
  left: 0;
  top: 0;
  height: 44px;
  width: 100%; }

.pswp__caption,
.pswp__top-bar,
.pswp--has_mouse .pswp__button--arrow--left,
.pswp--has_mouse .pswp__button--arrow--right {
  -webkit-backface-visibility: hidden;
  will-change: opacity;
  -webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
          transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }

/* pswp--has_mouse class is added only when two subsequent mousemove events occur */
.pswp--has_mouse .pswp__button--arrow--left,
.pswp--has_mouse .pswp__button--arrow--right {
  visibility: visible; }

.pswp__top-bar,
.pswp__caption {
  background-color: rgba(0, 0, 0, 0.5); }

/* pswp__ui--fit class is added when main image "fits" between top bar and bottom bar (caption) */
.pswp__ui--fit .pswp__top-bar,
.pswp__ui--fit .pswp__caption {
  background-color: rgba(0, 0, 0, 0.3); }

/* pswp__ui--idle class is added when mouse isn't moving for several seconds (JS option timeToIdle) */
.pswp__ui--idle .pswp__top-bar {
  opacity: 0; }

.pswp__ui--idle .pswp__button--arrow--left,
.pswp__ui--idle .pswp__button--arrow--right {
  opacity: 0; }

/*
	pswp__ui--hidden class is added when controls are hidden
	e.g. when user taps to toggle visibility of controls
*/
.pswp__ui--hidden .pswp__top-bar,
.pswp__ui--hidden .pswp__caption,
.pswp__ui--hidden .pswp__button--arrow--left,
.pswp__ui--hidden .pswp__button--arrow--right {
  /* Force paint & create composition layer for controls. */
  opacity: 0.001; }

/* pswp__ui--one-slide class is added when there is just one item in gallery */
.pswp__ui--one-slide .pswp__button--arrow--left,
.pswp__ui--one-slide .pswp__button--arrow--right,
.pswp__ui--one-slide .pswp__counter {
  display: none; }

.pswp__element--disabled {
  display: none !important; }

.pswp--minimal--dark .pswp__top-bar {
  background: none; }


================================================
FILE: addons/photoswipe/PhotoSwipe/photoswipe-ui-default.js
================================================
/*! PhotoSwipe Default UI - 4.1.1 - 2015-12-24
* http://photoswipe.com
* Copyright (c) 2015 Dmitry Semenov; */
/**
*
* UI on top of main sliding area (caption, arrows, close button, etc.).
* Built just using public methods/properties of PhotoSwipe.
* 
*/
(function (root, factory) { 
	if (typeof define === 'function' && define.amd) {
		define(factory);
	} else if (typeof exports === 'object') {
		module.exports = factory();
	} else {
		root.PhotoSwipeUI_Default = factory();
	}
})(this, function () {

	'use strict';



var PhotoSwipeUI_Default =
 function(pswp, framework) {

	var ui = this;
	var _overlayUIUpdated = false,
		_controlsVisible = true,
		_fullscrenAPI,
		_controls,
		_captionContainer,
		_fakeCaptionContainer,
		_indexIndicator,
		_shareButton,
		_shareModal,
		_shareModalHidden = true,
		_initalCloseOnScrollValue,
		_isIdle,
		_listen,

		_loadingIndicator,
		_loadingIndicatorHidden,
		_loadingIndicatorTimeout,

		_galleryHasOneSlide,

		_options,
		_defaultUIOptions = {
			barsSize: {top:44, bottom:'auto'},
			closeElClasses: ['item', 'caption', 'zoom-wrap', 'ui', 'top-bar'], 
			timeToIdle: 4000, 
			timeToIdleOutside: 1000,
			loadingIndicatorDelay: 1000, // 2s
			
			addCaptionHTMLFn: function(item, captionEl /*, isFake */) {
				if(!item.title) {
					captionEl.children[0].innerHTML = '';
					return false;
				}
				captionEl.children[0].innerHTML = item.title;
				return true;
			},

			closeEl:true,
			captionEl: true,
			fullscreenEl: true,
			zoomEl: true,
			shareEl: true,
			counterEl: true,
			arrowEl: true,
			preloaderEl: true,

			tapToClose: false,
			tapToToggleControls: true,

			clickToCloseNonZoomable: true,

			shareButtons: [
				{id:'facebook', label:'Share on Facebook', url:'https://www.facebook.com/sharer/sharer.php?u={{url}}'},
				{id:'twitter', label:'Tweet', url:'https://twitter.com/intent/tweet?text={{text}}&url={{url}}'},
				{id:'pinterest', label:'Pin it', url:'http://www.pinterest.com/pin/create/button/'+
													'?url={{url}}&media={{image_url}}&description={{text}}'},
				{id:'download', label:'Download image', url:'{{raw_image_url}}', download:true}
			],
			getImageURLForShare: function( /* shareButtonData */ ) {
				return pswp.currItem.src || '';
			},
			getPageURLForShare: function( /* shareButtonData */ ) {
				return window.location.href;
			},
			getTextForShare: function( /* shareButtonData */ ) {
				return pswp.currItem.title || '';
			},
				
			indexIndicatorSep: ' / ',
			fitControlsWidth: 1200

		},
		_blockControlsTap,
		_blockControlsTapTimeout;



	var _onControlsTap = function(e) {
			if(_blockControlsTap) {
				return true;
			}


			e = e || window.event;

			if(_options.timeToIdle && _options.mouseUsed && !_isIdle) {
				// reset idle timer
				_onIdleMouseMove();
			}


			var target = e.target || e.srcElement,
				uiElement,
				clickedClass = target.getAttribute('class') || '',
				found;

			for(var i = 0; i < _uiElements.length; i++) {
				uiElement = _uiElements[i];
				if(uiElement.onTap && clickedClass.indexOf('pswp__' + uiElement.name ) > -1 ) {
					uiElement.onTap();
					found = true;

				}
			}

			if(found) {
				if(e.stopPropagation) {
					e.stopPropagation();
				}
				_blockControlsTap = true;

				// Some versions of Android don't prevent ghost click event 
				// when preventDefault() was called on touchstart and/or touchend.
				// 
				// This happens on v4.3, 4.2, 4.1, 
				// older versions strangely work correctly, 
				// but just in case we add delay on all of them)	
				var tapDelay = framework.features.isOldAndroid ? 600 : 30;
				_blockControlsTapTimeout = setTimeout(function() {
					_blockControlsTap = false;
				}, tapDelay);
			}

		},
		_fitControlsInViewport = function() {
			return !pswp.likelyTouchDevice || _options.mouseUsed || screen.width > _options.fitControlsWidth;
		},
		_togglePswpClass = function(el, cName, add) {
			framework[ (add ? 'add' : 'remove') + 'Class' ](el, 'pswp__' + cName);
		},

		// add class when there is just one item in the gallery
		// (by default it hides left/right arrows and 1ofX counter)
		_countNumItems = function() {
			var hasOneSlide = (_options.getNumItemsFn() === 1);

			if(hasOneSlide !== _galleryHasOneSlide) {
				_togglePswpClass(_controls, 'ui--one-slide', hasOneSlide);
				_galleryHasOneSlide = hasOneSlide;
			}
		},
		_toggleShareModalClass = function() {
			_togglePswpClass(_shareModal, 'share-modal--hidden', _shareModalHidden);
		},
		_toggleShareModal = function() {

			_shareModalHidden = !_shareModalHidden;
			
			
			if(!_shareModalHidden) {
				_toggleShareModalClass();
				setTimeout(function() {
					if(!_shareModalHidden) {
						framework.addClass(_shareModal, 'pswp__share-modal--fade-in');
					}
				}, 30);
			} else {
				framework.removeClass(_shareModal, 'pswp__share-modal--fade-in');
				setTimeout(function() {
					if(_shareModalHidden) {
						_toggleShareModalClass();
					}
				}, 300);
			}
			
			if(!_shareModalHidden) {
				_updateShareURLs();
			}
			return false;
		},

		_openWindowPopup = function(e) {
			e = e || window.event;
			var target = e.target || e.srcElement;

			pswp.shout('shareLinkClick', e, target);

			if(!target.href) {
				return false;
			}

			if( target.hasAttribute('download') ) {
				return true;
			}

			window.open(target.href, 'pswp_share', 'scrollbars=yes,resizable=yes,toolbar=no,'+
										'location=yes,width=550,height=420,top=100,left=' + 
										(window.screen ? Math.round(screen.width / 2 - 275) : 100)  );

			if(!_shareModalHidden) {
				_toggleShareModal();
			}
			
			return false;
		},
		_updateShareURLs = function() {
			var shareButtonOut = '',
				shareButtonData,
				shareURL,
				image_url,
				page_url,
				share_text;

			for(var i = 0; i < _options.shareButtons.length; i++) {
				shareButtonData = _options.shareButtons[i];

				image_url = _options.getImageURLForShare(shareButtonData);
				page_url = _options.getPageURLForShare(shareButtonData);
				share_text = _options.getTextForShare(shareButtonData);

				shareURL = shareButtonData.url.replace('{{url}}', encodeURIComponent(page_url) )
									.replace('{{image_url}}', encodeURIComponent(image_url) )
									.replace('{{raw_image_url}}', image_url )
									.replace('{{text}}', encodeURIComponent(share_text) );

				shareButtonOut += '<a href="' + shareURL + '" target="_blank" '+
									'class="pswp__share--' + shareButtonData.id + '"' +
									(shareButtonData.download ? 'download' : '') + '>' + 
									shareButtonData.label + '</a>';

				if(_options.parseShareButtonOut) {
					shareButtonOut = _options.parseShareButtonOut(shareButtonData, shareButtonOut);
				}
			}
			_shareModal.children[0].innerHTML = shareButtonOut;
			_shareModal.children[0].onclick = _openWindowPopup;

		},
		_hasCloseClass = function(target) {
			for(var  i = 0; i < _options.closeElClasses.length; i++) {
				if( framework.hasClass(target, 'pswp__' + _options.closeElClasses[i]) ) {
					return true;
				}
			}
		},
		_idleInterval,
		_idleTimer,
		_idleIncrement = 0,
		_onIdleMouseMove = function() {
			clearTimeout(_idleTimer);
			_idleIncrement = 0;
			if(_isIdle) {
				ui.setIdle(false);
			}
		},
		_onMouseLeaveWindow = function(e) {
			e = e ? e : window.event;
			var from = e.relatedTarget || e.toElement;
			if (!from || from.nodeName === 'HTML') {
				clearTimeout(_idleTimer);
				_idleTimer = setTimeout(function() {
					ui.setIdle(true);
				}, _options.timeToIdleOutside);
			}
		},
		_setupFullscreenAPI = function() {
			if(_options.fullscreenEl && !framework.features.isOldAndroid) {
				if(!_fullscrenAPI) {
					_fullscrenAPI = ui.getFullscreenAPI();
				}
				if(_fullscrenAPI) {
					framework.bind(document, _fullscrenAPI.eventK, ui.updateFullscreen);
					ui.updateFullscreen();
					framework.addClass(pswp.template, 'pswp--supports-fs');
				} else {
					framework.removeClass(pswp.template, 'pswp--supports-fs');
				}
			}
		},
		_setupLoadingIndicator = function() {
			// Setup loading indicator
			if(_options.preloaderEl) {
			
				_toggleLoadingIndicator(true);

				_listen('beforeChange', function() {

					clearTimeout(_loadingIndicatorTimeout);

					// display loading indicator with delay
					_loadingIndicatorTimeout = setTimeout(function() {

						if(pswp.currItem && pswp.currItem.loading) {

							if( !pswp.allowProgressiveImg() || (pswp.currItem.img && !pswp.currItem.img.naturalWidth)  ) {
								// show preloader if progressive loading is not enabled, 
								// or image width is not defined yet (because of slow connection)
								_toggleLoadingIndicator(false); 
								// items-controller.js function allowProgressiveImg
							}
							
						} else {
							_toggleLoadingIndicator(true); // hide preloader
						}

					}, _options.loadingIndicatorDelay);
					
				});
				_listen('imageLoadComplete', function(index, item) {
					if(pswp.currItem === item) {
						_toggleLoadingIndicator(true);
					}
				});

			}
		},
		_toggleLoadingIndicator = function(hide) {
			if( _loadingIndicatorHidden !== hide ) {
				_togglePswpClass(_loadingIndicator, 'preloader--active', !hide);
				_loadingIndicatorHidden = hide;
			}
		},
		_applyNavBarGaps = function(item) {
			var gap = item.vGap;

			if( _fitControlsInViewport() ) {
				
				var bars = _options.barsSize; 
				if(_options.captionEl && bars.bottom === 'auto') {
					if(!_fakeCaptionContainer) {
						_fakeCaptionContainer = framework.createEl('pswp__caption pswp__caption--fake');
						_fakeCaptionContainer.appendChild( framework.createEl('pswp__caption__center') );
						_controls.insertBefore(_fakeCaptionContainer, _captionContainer);
						framework.addClass(_controls, 'pswp__ui--fit');
					}
					if( _options.addCaptionHTMLFn(item, _fakeCaptionContainer, true) ) {

						var captionSize = _fakeCaptionContainer.clientHeight;
						gap.bottom = parseInt(captionSize,10) || 44;
					} else {
						gap.bottom = bars.top; // if no caption, set size of bottom gap to size of top
					}
				} else {
					gap.bottom = bars.bottom === 'auto' ? 0 : bars.bottom;
				}
				
				// height of top bar is static, no need to calculate it
				gap.top = bars.top;
			} else {
				gap.top = gap.bottom = 0;
			}
		},
		_setupIdle = function() {
			// Hide controls when mouse is used
			if(_options.timeToIdle) {
				_listen('mouseUsed', function() {
					
					framework.bind(document, 'mousemove', _onIdleMouseMove);
					framework.bind(document, 'mouseout', _onMouseLeaveWindow);

					_idleInterval = setInterval(function() {
						_idleIncrement++;
						if(_idleIncrement === 2) {
							ui.setIdle(true);
						}
					}, _options.timeToIdle / 2);
				});
			}
		},
		_setupHidingControlsDuringGestures = function() {

			// Hide controls on vertical drag
			_listen('onVerticalDrag', function(now) {
				if(_controlsVisible && now < 0.95) {
					ui.hideControls();
				} else if(!_controlsVisible && now >= 0.95) {
					ui.showControls();
				}
			});

			// Hide controls when pinching to close
			var pinchControlsHidden;
			_listen('onPinchClose' , function(now) {
				if(_controlsVisible && now < 0.9) {
					ui.hideControls();
					pinchControlsHidden = true;
				} else if(pinchControlsHidden && !_controlsVisible && now > 0.9) {
					ui.showControls();
				}
			});

			_listen('zoomGestureEnded', function() {
				pinchControlsHidden = false;
				if(pinchControlsHidden && !_controlsVisible) {
					ui.showControls();
				}
			});

		};



	var _uiElements = [
		{ 
			name: 'caption', 
			option: 'captionEl',
			onInit: function(el) {  
				_captionContainer = el; 
			} 
		},
		{ 
			name: 'share-modal', 
			option: 'shareEl',
			onInit: function(el) {  
				_shareModal = el;
			},
			onTap: function() {
				_toggleShareModal();
			} 
		},
		{ 
			name: 'button--share', 
			option: 'shareEl',
			onInit: function(el) { 
				_shareButton = el;
			},
			onTap: function() {
				_toggleShareModal();
			} 
		},
		{ 
			name: 'button--zoom', 
			option: 'zoomEl',
			onTap: pswp.toggleDesktopZoom
		},
		{ 
			name: 'counter', 
			option: 'counterEl',
			onInit: function(el) {  
				_indexIndicator = el;
			} 
		},
		{ 
			name: 'button--close', 
			option: 'closeEl',
			onTap: pswp.close
		},
		{ 
			name: 'button--arrow--left', 
			option: 'arrowEl',
			onTap: pswp.prev
		},
		{ 
			name: 'button--arrow--right', 
			option: 'arrowEl',
			onTap: pswp.next
		},
		{ 
			name: 'button--fs', 
			option: 'fullscreenEl',
			onTap: function() {  
				if(_fullscrenAPI.isFullscreen()) {
					_fullscrenAPI.exit();
				} else {
					_fullscrenAPI.enter();
				}
			} 
		},
		{ 
			name: 'preloader', 
			option: 'preloaderEl',
			onInit: function(el) {  
				_loadingIndicator = el;
			} 
		}

	];

	var _setupUIElements = function() {
		var item,
			classAttr,
			uiElement;

		var loopThroughChildElements = function(sChildren) {
			if(!sChildren) {
				return;
			}

			var l = sChildren.length;
			for(var i = 0; i < l; i++) {
				item = sChildren[i];
				classAttr = item.className;

				for(var a = 0; a < _uiElements.length; a++) {
					uiElement = _uiElements[a];

					if(classAttr.indexOf('pswp__' + uiElement.name) > -1  ) {

						if( _options[uiElement.option] ) { // if element is not disabled from options
							
							framework.removeClass(item, 'pswp__element--disabled');
							if(uiElement.onInit) {
								uiElement.onInit(item);
							}
							
							//item.style.display = 'block';
						} else {
							framework.addClass(item, 'pswp__element--disabled');
							//item.style.display = 'none';
						}
					}
				}
			}
		};
		loopThroughChildElements(_controls.children);

		var topBar =  framework.getChildByClass(_controls, 'pswp__top-bar');
		if(topBar) {
			loopThroughChildElements( topBar.children );
		}
	};


	

	ui.init = function() {

		// extend options
		framework.extend(pswp.options, _defaultUIOptions, true);

		// create local link for fast access
		_options = pswp.options;

		// find pswp__ui element
		_controls = framework.getChildByClass(pswp.scrollWrap, 'pswp__ui');

		// create local link
		_listen = pswp.listen;


		_setupHidingControlsDuringGestures();

		// update controls when slides change
		_listen('beforeChange', ui.update);

		// toggle zoom on double-tap
		_listen('doubleTap', function(point) {
			var initialZoomLevel = pswp.currItem.initialZoomLevel;
			if(pswp.getZoomLevel() !== initialZoomLevel) {
				pswp.zoomTo(initialZoomLevel, point, 333);
			} else {
				pswp.zoomTo(_options.getDoubleTapZoom(false, pswp.currItem), point, 333);
			}
		});

		// Allow text selection in caption
		_listen('preventDragEvent', function(e, isDown, preventObj) {
			var t = e.target || e.srcElement;
			if(
				t && 
				t.getAttribute('class') && e.type.indexOf('mouse') > -1 && 
				( t.getAttribute('class').indexOf('__caption') > 0 || (/(SMALL|STRONG|EM)/i).test(t.tagName) ) 
			) {
				preventObj.prevent = false;
			}
		});

		// bind events for UI
		_listen('bindEvents', function() {
			framework.bind(_controls, 'pswpTap click', _onControlsTap);
			framework.bind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);

			if(!pswp.likelyTouchDevice) {
				framework.bind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);
			}
		});

		// unbind events for UI
		_listen('unbindEvents', function() {
			if(!_shareModalHidden) {
				_toggleShareModal();
			}

			if(_idleInterval) {
				clearInterval(_idleInterval);
			}
			framework.unbind(document, 'mouseout', _onMouseLeaveWindow);
			framework.unbind(document, 'mousemove', _onIdleMouseMove);
			framework.unbind(_controls, 'pswpTap click', _onControlsTap);
			framework.unbind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);
			framework.unbind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);

			if(_fullscrenAPI) {
				framework.unbind(document, _fullscrenAPI.eventK, ui.updateFullscreen);
				if(_fullscrenAPI.isFullscreen()) {
					_options.hideAnimationDuration = 0;
					_fullscrenAPI.exit();
				}
				_fullscrenAPI = null;
			}
		});


		// clean up things when gallery is destroyed
		_listen('destroy', function() {
			if(_options.captionEl) {
				if(_fakeCaptionContainer) {
					_controls.removeChild(_fakeCaptionContainer);
				}
				framework.removeClass(_captionContainer, 'pswp__caption--empty');
			}

			if(_shareModal) {
				_shareModal.children[0].onclick = null;
			}
			framework.removeClass(_controls, 'pswp__ui--over-close');
			framework.addClass( _controls, 'pswp__ui--hidden');
			ui.setIdle(false);
		});
		

		if(!_options.showAnimationDuration) {
			framework.removeClass( _controls, 'pswp__ui--hidden');
		}
		_listen('initialZoomIn', function() {
			if(_options.showAnimationDuration) {
				framework.removeClass( _controls, 'pswp__ui--hidden');
			}
		});
		_listen('initialZoomOut', function() {
			framework.addClass( _controls, 'pswp__ui--hidden');
		});

		_listen('parseVerticalMargin', _applyNavBarGaps);
		
		_setupUIElements();

		if(_options.shareEl && _shareButton && _shareModal) {
			_shareModalHidden = true;
		}

		_countNumItems();

		_setupIdle();

		_setupFullscreenAPI();

		_setupLoadingIndicator();
	};

	ui.setIdle = function(isIdle) {
		_isIdle = isIdle;
		_togglePswpClass(_controls, 'ui--idle', isIdle);
	};

	ui.update = function() {
		// Don't update UI if it's hidden
		if(_controlsVisible && pswp.currItem) {
			
			ui.updateIndexIndicator();

			if(_options.captionEl) {
				_options.addCaptionHTMLFn(pswp.currItem, _captionContainer);

				_togglePswpClass(_captionContainer, 'caption--empty', !pswp.currItem.title);
			}

			_overlayUIUpdated = true;

		} else {
			_overlayUIUpdated = false;
		}

		if(!_shareModalHidden) {
			_toggleShareModal();
		}

		_countNumItems();
	};

	ui.updateFullscreen = function(e) {

		if(e) {
			// some browsers change window scroll position during the fullscreen
			// so PhotoSwipe updates it just in case
			setTimeout(function() {
				pswp.setScrollOffset( 0, framework.getScrollY() );
			}, 50);
		}
		
		// toogle pswp--fs class on root element
		framework[ (_fullscrenAPI.isFullscreen() ? 'add' : 'remove') + 'Class' ](pswp.template, 'pswp--fs');
	};

	ui.updateIndexIndicator = function() {
		if(_options.counterEl) {
			_indexIndicator.innerHTML = (pswp.getCurrentIndex()+1) + 
										_options.indexIndicatorSep + 
										_options.getNumItemsFn();
		}
	};
	
	ui.onGlobalTap = function(e) {
		e = e || window.event;
		var target = e.target || e.srcElement;

		if(_blockControlsTap) {
			return;
		}

		if(e.detail && e.detail.pointerType === 'mouse') {

			// close gallery if clicked outside of the image
			if(_hasCloseClass(target)) {
				pswp.close();
				return;
			}

			if(framework.hasClass(target, 'pswp__img')) {
				if(pswp.getZoomLevel() === 1 && pswp.getZoomLevel() <= pswp.currItem.fitRatio) {
					if(_options.clickToCloseNonZoomable) {
						pswp.close();
					}
				} else {
					pswp.toggleDesktopZoom(e.detail.releasePoint);
				}
			}
			
		} else {

			// tap anywhere (except buttons) to toggle visibility of controls
			if(_options.tapToToggleControls) {
				if(_controlsVisible) {
					ui.hideControls();
				} else {
					ui.showControls();
				}
			}

			// tap to close gallery
			if(_options.tapToClose && (framework.hasClass(target, 'pswp__img') || _hasCloseClass(target)) ) {
				pswp.close();
				return;
			}
			
		}
	};
	ui.onMouseOver = function(e) {
		e = e || window.event;
		var target = e.target || e.srcElement;

		// add class when mouse is over an element that should close the gallery
		_togglePswpClass(_controls, 'ui--over-close', _hasCloseClass(target));
	};

	ui.hideControls = function() {
		framework.addClass(_controls,'pswp__ui--hidden');
		_controlsVisible = false;
	};

	ui.showControls = function() {
		_controlsVisible = true;
		if(!_overlayUIUpdated) {
			ui.update();
		}
		framework.removeClass(_controls,'pswp__ui--hidden');
	};

	ui.supportsFullscreen = function() {
		var d = document;
		return !!(d.exitFullscreen || d.mozCancelFullScreen || d.webkitExitFullscreen || d.msExitFullscreen);
	};

	ui.getFullscreenAPI = function() {
		var dE = document.documentElement,
			api,
			tF = 'fullscreenchange';

		if (dE.requestFullscreen) {
			api = {
				enterK: 'requestFullscreen',
				exitK: 'exitFullscreen',
				elementK: 'fullscreenElement',
				eventK: tF
			};

		} else if(dE.mozRequestFullScreen ) {
			api = {
				enterK: 'mozRequestFullScreen',
				exitK: 'mozCancelFullScreen',
				elementK: 'mozFullScreenElement',
				eventK: 'moz' + tF
			};

			

		} else if(dE.webkitRequestFullscreen) {
			api = {
				enterK: 'webkitRequestFullscreen',
				exitK: 'webkitExitFullscreen',
				elementK: 'webkitFullscreenElement',
				eventK: 'webkit' + tF
			};

		} else if(dE.msRequestFullscreen) {
			api = {
				enterK: 'msRequestFullscreen',
				exitK: 'msExitFullscreen',
				elementK: 'msFullscreenElement',
				eventK: 'MSFullscreenChange'
			};
		}

		if(api) {
			api.enter = function() { 
				// disable close-on-scroll in fullscreen
				_initalCloseOnScrollValue = _options.closeOnScroll; 
				_options.closeOnScroll = false; 

				if(this.enterK === 'webkitRequestFullscreen') {
					pswp.template[this.enterK]( Element.ALLOW_KEYBOARD_INPUT );
				} else {
					return pswp.template[this.enterK](); 
				}
			};
			api.exit = function() { 
				_options.closeOnScroll = _initalCloseOnScrollValue;

				return document[this.exitK](); 

			};
			api.isFullscreen = function() { return document[this.elementK]; };
		}

		return api;
	};



};
return PhotoSwipeUI_Default;


});


================================================
FILE: addons/photoswipe/PhotoSwipe/photoswipe.css
================================================
/*! PhotoSwipe main CSS by Dmitry Semenov | photoswipe.com | MIT license */
/*
	Styles for basic PhotoSwipe functionality (sliding area, open/close transitions)
*/
/* pswp = photoswipe */
.pswp {
  display: none;
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  overflow: hidden;
  -ms-touch-action: none;
  touch-action: none;
  z-index: 1500;
  -webkit-text-size-adjust: 100%;
  /* create separate layer, to avoid paint on window.onscroll in webkit/blink */
  -webkit-backface-visibility: hidden;
  outline: none; }
  .pswp * {
    -webkit-box-sizing: border-box;
            box-sizing: border-box; }
  .pswp img {
    max-width: none; }

/* style is added when JS option showHideOpacity is set to true */
.pswp--animate_opacity {
  /* 0.001, because opacity:0 doesn't trigger Paint action, which causes lag at start of transition */
  opacity: 0.001;
  will-change: opacity;
  /* for open/close transition */
  -webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
          transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }

.pswp--open {
  display: block; }

.pswp--zoom-allowed .pswp__img {
  /* autoprefixer: off */
  cursor: -webkit-zoom-in;
  cursor: -moz-zoom-in;
  cursor: zoom-in; }

.pswp--zoomed-in .pswp__img {
  /* autoprefixer: off */
  cursor: -webkit-grab;
  cursor: -moz-grab;
  cursor: grab; }

.pswp--dragging .pswp__img {
  /* autoprefixer: off */
  cursor: -webkit-grabbing;
  cursor: -moz-grabbing;
  cursor: grabbing; }

/*
	Background is added as a separate element.
	As animating opacity is much faster than animating rgba() background-color.
*/
.pswp__bg {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: #000;
  opacity: 0;
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  will-change: opacity; }

.pswp__scroll-wrap {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: hidden; }

.pswp__container,
.pswp__zoom-wrap {
  -ms-touch-action: none;
  touch-action: none;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0; }

/* Prevent selection and tap highlights */
.pswp__container,
.pswp__img {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
      user-select: none;
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none; }

.pswp__zoom-wrap {
  position: absolute;
  width: 100%;
  -webkit-transform-origin: left top;
  -ms-transform-origin: left top;
  transform-origin: left top;
  /* for open/close transition */
  -webkit-transition: -webkit-transform 333ms cubic-bezier(0.4, 0, 0.22, 1);
          transition: transform 333ms cubic-bezier(0.4, 0, 0.22, 1); }

.pswp__bg {
  will-change: opacity;
  /* for open/close transition */
  -webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
          transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }

.pswp--animated-in .pswp__bg,
.pswp--animated-in .pswp__zoom-wrap {
  -webkit-transition: none;
  transition: none; }

.pswp__container,
.pswp__zoom-wrap {
  -webkit-backface-visibility: hidden; }

.pswp__item {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  overflow: hidden; }

.pswp__img {
  position: absolute;
  width: auto;
  height: auto;
  top: 0;
  left: 0; }

/*
	stretched thumbnail or div placeholder element (see below)
	style is added to avoid flickering in webkit/blink when layers overlap
*/
.pswp__img--placeholder {
  -webkit-backface-visibility: hidden; }

/*
	div element that matches size of large image
	large image loads on top of it
*/
.pswp__img--placeholder--blank {
  background: #222; }

.pswp--ie .pswp__img {
  width: 100% !important;
  height: auto !important;
  left: 0;
  top: 0; }

/*
	Error message appears when image is not loaded
	(JS option errorMsg controls markup)
*/
.pswp__error-msg {
  position: absolute;
  left: 0;
  top: 50%;
  width: 100%;
  text-align: center;
  font-size: 14px;
  line-height: 16px;
  margin-top: -8px;
  color: #CCC; }

.pswp__error-msg a {
  color: #CCC;
  text-decoration: underline; }


================================================
FILE: addons/photoswipe/PhotoSwipe/photoswipe.js
================================================
/*! PhotoSwipe - v4.1.1 - 2015-12-24
* http://photoswipe.com
* Copyright (c) 2015 Dmitry Semenov; */
(function (root, factory) { 
	if (typeof define === 'function' && define.amd) {
		define(factory);
	} else if (typeof exports === 'object') {
		module.exports = factory();
	} else {
		root.PhotoSwipe = factory();
	}
})(this, function () {

	'use strict';
	var PhotoSwipe = function(template, UiClass, items, options){

/*>>framework-bridge*/
/**
 *
 * Set of generic functions used by gallery.
 * 
 * You're free to modify anything here as long as functionality is kept.
 * 
 */
var framework = {
	features: null,
	bind: function(target, type, listener, unbind) {
		var methodName = (unbind ? 'remove' : 'add') + 'EventListener';
		type = type.split(' ');
		for(var i = 0; i < type.length; i++) {
			if(type[i]) {
				target[methodName]( type[i], listener, false);
			}
		}
	},
	isArray: function(obj) {
		return (obj instanceof Array);
	},
	createEl: function(classes, tag) {
		var el = document.createElement(tag || 'div');
		if(classes) {
			el.className = classes;
		}
		return el;
	},
	getScrollY: function() {
		var yOffset = window.pageYOffset;
		return yOffset !== undefined ? yOffset : document.documentElement.scrollTop;
	},
	unbind: function(target, type, listener) {
		framework.bind(target,type,listener,true);
	},
	removeClass: function(el, className) {
		var reg = new RegExp('(\\s|^)' + className + '(\\s|$)');
		el.className = el.className.replace(reg, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
	},
	addClass: function(el, className) {
		if( !framework.hasClass(el,className) ) {
			el.className += (el.className ? ' ' : '') + className;
		}
	},
	hasClass: function(el, className) {
		return el.className && new RegExp('(^|\\s)' + className + '(\\s|$)').test(el.className);
	},
	getChildByClass: function(parentEl, childClassName) {
		var node = parentEl.firstChild;
		while(node) {
			if( framework.hasClass(node, childClassName) ) {
				return node;
			}
			node = node.nextSibling;
		}
	},
	arraySearch: function(array, value, key) {
		var i = array.length;
		while(i--) {
			if(array[i][key] === value) {
				return i;
			} 
		}
		return -1;
	},
	extend: function(o1, o2, preventOverwrite) {
		for (var prop in o2) {
			if (o2.hasOwnProperty(prop)) {
				if(preventOverwrite && o1.hasOwnProperty(prop)) {
					continue;
				}
				o1[prop] = o2[prop];
			}
		}
	},
	easing: {
		sine: {
			out: function(k) {
				return Math.sin(k * (Math.PI / 2));
			},
			inOut: function(k) {
				return - (Math.cos(Math.PI * k) - 1) / 2;
			}
		},
		cubic: {
			out: function(k) {
				return --k * k * k + 1;
			}
		}
		/*
			elastic: {
				out: function ( k ) {

					var s, a = 0.1, p = 0.4;
					if ( k === 0 ) return 0;
					if ( k === 1 ) return 1;
					if ( !a || a < 1 ) { a = 1; s = p / 4; }
					else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );
					return ( a * Math.pow( 2, - 10 * k) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) + 1 );

				},
			},
			back: {
				out: function ( k ) {
					var s = 1.70158;
					return --k * k * ( ( s + 1 ) * k + s ) + 1;
				}
			}
		*/
	},

	/**
	 * 
	 * @return {object}
	 * 
	 * {
	 *  raf : request animation frame function
	 *  caf : cancel animation frame function
	 *  transfrom : transform property key (with vendor), or null if not supported
	 *  oldIE : IE8 or below
	 * }
	 * 
	 */
	detectFeatures: function() {
		if(framework.features) {
			return framework.features;
		}
		var helperEl = framework.createEl(),
			helperStyle = helperEl.style,
			vendor = '',
			features = {};

		// IE8 and below
		features.oldIE = document.all && !document.addEventListener;

		features.touch = 'ontouchstart' in window;

		if(window.requestAnimationFrame) {
			features.raf = window.requestAnimationFrame;
			features.caf = window.cancelAnimationFrame;
		}

		features.pointerEvent = navigator.pointerEnabled || navigator.msPointerEnabled;

		// fix false-positive detection of old Android in new IE
		// (IE11 ua string contains "Android 4.0")
		
		if(!features.pointerEvent) { 

			var ua = navigator.userAgent;

			// Detect if device is iPhone or iPod and if it's older than iOS 8
			// http://stackoverflow.com/a/14223920
			// 
			// This detection is made because of buggy top/bottom toolbars
			// that don't trigger window.resize event.
			// For more info refer to _isFixedPosition variable in core.js

			if (/iP(hone|od)/.test(navigator.platform)) {
				var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
				if(v && v.length > 0) {
					v = parseInt(v[1], 10);
					if(v >= 1 && v < 8 ) {
						features.isOldIOSPhone = true;
					}
				}
			}

			// Detect old Android (before KitKat)
			// due to bugs related to position:fixed
			// http://stackoverflow.com/questions/7184573/pick-up-the-android-version-in-the-browser-by-javascript
			
			var match = ua.match(/Android\s([0-9\.]*)/);
			var androidversion =  match ? match[1] : 0;
			androidversion = parseFloat(androidversion);
			if(androidversion >= 1 ) {
				if(androidversion < 4.4) {
					features.isOldAndroid = true; // for fixed position bug & performance
				}
				features.androidVersion = androidversion; // for touchend bug
			}	
			features.isMobileOpera = /opera mini|opera mobi/i.test(ua);

			// p.s. yes, yes, UA sniffing is bad, propose your solution for above bugs.
		}
		
		var styleChecks = ['transform', 'perspective', 'animationName'],
			vendors = ['', 'webkit','Moz','ms','O'],
			styleCheckItem,
			styleName;

		for(var i = 0; i < 4; i++) {
			vendor = vendors[i];

			for(var a = 0; a < 3; a++) {
				styleCheckItem = styleChecks[a];

				// uppercase first letter of property name, if vendor is present
				styleName = vendor + (vendor ? 
										styleCheckItem.charAt(0).toUpperCase() + styleCheckItem.slice(1) : 
										styleCheckItem);
			
				if(!features[styleCheckItem] && styleName in helperStyle ) {
					features[styleCheckItem] = styleName;
				}
			}

			if(vendor && !features.raf) {
				vendor = vendor.toLowerCase();
				features.raf = window[vendor+'RequestAnimationFrame'];
				if(features.raf) {
					features.caf = window[vendor+'CancelAnimationFrame'] || 
									window[vendor+'CancelRequestAnimationFrame'];
				}
			}
		}
			
		if(!features.raf) {
			var lastTime = 0;
			features.raf = function(fn) {
				var currTime = new Date().getTime();
				var timeToCall = Math.max(0, 16 - (currTime - lastTime));
				var id = window.setTimeout(function() { fn(currTime + timeToCall); }, timeToCall);
				lastTime = currTime + timeToCall;
				return id;
			};
			features.caf = function(id) { clearTimeout(id); };
		}

		// Detect SVG support
		features.svg = !!document.createElementNS && 
						!!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect;

		framework.features = features;

		return features;
	}
};

framework.detectFeatures();

// Override addEventListener for old versions of IE
if(framework.features.oldIE) {

	framework.bind = function(target, type, listener, unbind) {
		
		type = type.split(' ');

		var methodName = (unbind ? 'detach' : 'attach') + 'Event',
			evName,
			_handleEv = function() {
				listener.handleEvent.call(listener);
			};

		for(var i = 0; i < type.length; i++) {
			evName = type[i];
			if(evName) {

				if(typeof listener === 'object' && listener.handleEvent) {
					if(!unbind) {
						listener['oldIE' + evName] = _handleEv;
					} else {
						if(!listener['oldIE' + evName]) {
							return false;
						}
					}

					target[methodName]( 'on' + evName, listener['oldIE' + evName]);
				} else {
					target[methodName]( 'on' + evName, listener);
				}

			}
		}
	};
	
}

/*>>framework-bridge*/

/*>>core*/
//function(template, UiClass, items, options)

var self = this;

/**
 * Static vars, don't change unless you know what you're doing.
 */
var DOUBLE_TAP_RADIUS = 25, 
	NUM_HOLDERS = 3;

/**
 * Options
 */
var _options = {
	allowPanToNext:true,
	spacing: 0.12,
	bgOpacity: 1,
	mouseUsed: false,
	loop: true,
	pinchToClose: true,
	closeOnScroll: true,
	closeOnVerticalDrag: true,
	verticalDragRange: 0.75,
	hideAnimationDuration: 333,
	showAnimationDuration: 333,
	showHideOpacity: false,
	focus: true,
	escKey: true,
	arrowKeys: true,
	mainScrollEndFriction: 0.35,
	panEndFriction: 0.35,
	isClickableElement: function(el) {
        return el.tagName === 'A';
    },
    getDoubleTapZoom: function(isMouseClick, item) {
    	if(isMouseClick) {
    		return 1;
    	} else {
    		return item.initialZoomLevel < 0.7 ? 1 : 1.33;
    	}
    },
    maxSpreadZoom: 1.33,
	modal: true,

	// not fully implemented yet
	scaleMode: 'fit' // TODO
};
framework.extend(_options, options);


/**
 * Private helper variables & functions
 */

var _getEmptyPoint = function() { 
		return {x:0,y:0}; 
	};

var _isOpen,
	_isDestroying,
	_closedByScroll,
	_currentItemIndex,
	_containerStyle,
	_containerShiftIndex,
	_currPanDist = _getEmptyPoint(),
	_startPanOffset = _getEmptyPoint(),
	_panOffset = _getEmptyPoint(),
	_upMoveEvents, // drag move, drag end & drag cancel events array
	_downEvents, // drag start events array
	_globalEventHandlers,
	_viewportSize = {},
	_currZoomLevel,
	_startZoomLevel,
	_translatePrefix,
	_translateSufix,
	_updateSizeInterval,
	_itemsNeedUpdate,
	_currPositionIndex = 0,
	_offset = {},
	_slideSize = _getEmptyPoint(), // size of slide area, including spacing
	_itemHolders,
	_prevItemIndex,
	_indexDiff = 0, // difference of indexes since last content update
	_dragStartEvent,
	_dragMoveEvent,
	_dragEndEvent,
	_dragCancelEvent,
	_transformKey,
	_pointerEventEnabled,
	_isFixedPosition = true,
	_likelyTouchDevice,
	_modules = [],
	_requestAF,
	_cancelAF,
	_initalClassName,
	_initalWindowScrollY,
	_oldIE,
	_currentWindowScrollY,
	_features,
	_windowVisibleSize = {},
	_renderMaxResolution = false,

	// Registers PhotoSWipe module (History, Controller ...)
	_registerModule = function(name, module) {
		framework.extend(self, module.publicMethods);
		_modules.push(name);
	},

	_getLoopedId = function(index) {
		var numSlides = _getNumItems();
		if(index > numSlides - 1) {
			return index - numSlides;
		} else  if(index < 0) {
			return numSlides + index;
		}
		return index;
	},
	
	// Micro bind/trigger
	_listeners = {},
	_listen = function(name, fn) {
		if(!_listeners[name]) {
			_listeners[name] = [];
		}
		return _listeners[name].push(fn);
	},
	_shout = function(name) {
		var listeners = _listeners[name];

		if(listeners) {
			var args = Array.prototype.slice.call(arguments);
			args.shift();

			for(var i = 0; i < listeners.length; i++) {
				listeners[i].apply(self, args);
			}
		}
	},

	_getCurrentTime = function() {
		return new Date().getTime();
	},
	_applyBgOpacity = function(opacity) {
		_bgOpacity = opacity;
		self.bg.style.opacity = opacity * _options.bgOpacity;
	},

	_applyZoomTransform = function(styleObj,x,y,zoom,item) {
		if(!_renderMaxResolution || (item && item !== self.currItem) ) {
			zoom = zoom / (item ? item.fitRatio : self.currItem.fitRatio);	
		}
			
		styleObj[_transformKey] = _translatePrefix + x + 'px, ' + y + 'px' + _translateSufix + ' scale(' + zoom + ')';
	},
	_applyCurrentZoomPan = function( allowRenderResolution ) {
		if(_currZoomElementStyle) {

			if(allowRenderResolution) {
				if(_currZoomLevel > self.currItem.fitRatio) {
					if(!_renderMaxResolution) {
						_setImageSize(self.currItem, false, true);
						_renderMaxResolution = true;
					}
				} else {
					if(_renderMaxResolution) {
						_setImageSize(self.currItem);
						_renderMaxResolution = false;
					}
				}
			}
			

			_applyZoomTransform(_currZoomElementStyle, _panOffset.x, _panOffset.y, _currZoomLevel);
		}
	},
	_applyZoomPanToItem = function(item) {
		if(item.container) {

			_applyZoomTransform(item.container.style, 
								item.initialPosition.x, 
								item.initialPosition.y, 
								item.initialZoomLevel,
								item);
		}
	},
	_setTranslateX = function(x, elStyle) {
		elStyle[_transformKey] = _translatePrefix + x + 'px, 0px' + _translateSufix;
	},
	_moveMainScroll = function(x, dragging) {

		if(!_options.loop && dragging) {
			var newSlideIndexOffset = _currentItemIndex + (_slideSize.x * _currPositionIndex - x) / _slideSize.x,
				delta = Math.round(x - _mainScrollPos.x);

			if( (newSlideIndexOffset < 0 && delta > 0) || 
				(newSlideIndexOffset >= _getNumItems() - 1 && delta < 0) ) {
				x = _mainScrollPos.x + delta * _options.mainScrollEndFriction;
			} 
		}
		
		_mainScrollPos.x = x;
		_setTranslateX(x, _containerStyle);
	},
	_calculatePanOffset = function(axis, zoomLevel) {
		var m = _midZoomPoint[axis] - _offset[axis];
		return _startPanOffset[axis] + _currPanDist[axis] + m - m * ( zoomLevel / _startZoomLevel );
	},
	
	_equalizePoints = function(p1, p2) {
		p1.x = p2.x;
		p1.y = p2.y;
		if(p2.id) {
			p1.id = p2.id;
		}
	},
	_roundPoint = function(p) {
		p.x = Math.round(p.x);
		p.y = Math.round(p.y);
	},

	_mouseMoveTimeout = null,
	_onFirstMouseMove = function() {
		// Wait until mouse move event is fired at least twice during 100ms
		// We do this, because some mobile browsers trigger it on touchstart
		if(_mouseMoveTimeout ) { 
			framework.unbind(document, 'mousemove', _onFirstMouseMove);
			framework.addClass(template, 'pswp--has_mouse');
			_options.mouseUsed = true;
			_shout('mouseUsed');
		}
		_mouseMoveTimeout = setTimeout(function() {
			_mouseMoveTimeout = null;
		}, 100);
	},

	_bindEvents = function() {
		framework.bind(document, 'keydown', self);

		if(_features.transform) {
			// don't bind click event in browsers that don't support transform (mostly IE8)
			framework.bind(self.scrollWrap, 'click', self);
		}
		

		if(!_options.mouseUsed) {
			framework.bind(document, 'mousemove', _onFirstMouseMove);
		}

		framework.bind(window, 'resize scroll', self);

		_shout('bindEvents');
	},

	_unbindEvents = function() {
		framework.unbind(window, 'resize', self);
		framework.unbind(window, 'scroll', _globalEventHandlers.scroll);
		framework.unbind(document, 'keydown', self);
		framework.unbind(document, 'mousemove', _onFirstMouseMove);

		if(_features.transform) {
			framework.unbind(self.scrollWrap, 'click', self);
		}

		if(_isDragging) {
			framework.unbind(window, _upMoveEvents, self);
		}

		_shout('unbindEvents');
	},
	
	_calculatePanBounds = function(zoomLevel, update) {
		var bounds = _calculateItemSize( self.currItem, _viewportSize, zoomLevel );
		if(update) {
			_currPanBounds = bounds;
		}
		return bounds;
	},
	
	_getMinZoomLevel = function(item) {
		if(!item) {
			item = self.currItem;
		}
		return item.initialZoomLevel;
	},
	_getMaxZoomLevel = function(item) {
		if(!item) {
			item = self.currItem;
		}
		return item.w > 0 ? _options.maxSpreadZoom : 1;
	},

	// Return true if offset is out of the bounds
	_modifyDestPanOffset = function(axis, destPanBounds, destPanOffset, destZoomLevel) {
		if(destZoomLevel === self.currItem.initialZoomLevel) {
			destPanOffset[axis] = self.currItem.initialPosition[axis];
			return true;
		} else {
			destPanOffset[axis] = _calculatePanOffset(axis, destZoomLevel); 

			if(destPanOffset[axis] > destPanBounds.min[axis]) {
				destPanOffset[axis] = destPanBounds.min[axis];
				return true;
			} else if(destPanOffset[axis] < destPanBounds.max[axis] ) {
				destPanOffset[axis] = destPanBounds.max[axis];
				return true;
			}
		}
		return false;
	},

	_setupTransforms = function() {

		if(_transformKey) {
			// setup 3d transforms
			var allow3dTransform = _features.perspective && !_likelyTouchDevice;
			_translatePrefix = 'translate' + (allow3dTransform ? '3d(' : '(');
			_translateSufix = _features.perspective ? ', 0px)' : ')';	
			return;
		}

		// Override zoom/pan/move functions in case old browser is used (most likely IE)
		// (so they use left/top/width/height, instead of CSS transform)
	
		_transformKey = 'left';
		framework.addClass(template, 'pswp--ie');

		_setTranslateX = function(x, elStyle) {
			elStyle.left = x + 'px';
		};
		_applyZoomPanToItem = function(item) {

			var zoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,
				s = item.container.style,
				w = zoomRatio * item.w,
				h = zoomRatio * item.h;

			s.width = w + 'px';
			s.height = h + 'px';
			s.left = item.initialPosition.x + 'px';
			s.top = item.initialPosition.y + 'px';

		};
		_applyCurrentZoomPan = function() {
			if(_currZoomElementStyle) {

				var s = _currZoomElementStyle,
					item = self.currItem,
					zoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,
					w = zoomRatio * item.w,
					h = zoomRatio * item.h;

				s.width = w + 'px';
				s.height = h + 'px';


				s.left = _panOffset.x + 'px';
				s.top = _panOffset.y + 'px';
			}
			
		};
	},

	_onKeyDown = function(e) {
		var keydownAction = '';
		if(_options.escKey && e.keyCode === 27) { 
			keydownAction = 'close';
		} else if(_options.arrowKeys) {
			if(e.keyCode === 37) {
				keydownAction = 'prev';
			} else if(e.keyCode === 39) { 
				keydownAction = 'next';
			}
		}

		if(keydownAction) {
			// don't do anything if special key pressed to prevent from overriding default browser actions
			// e.g. in Chrome on Mac cmd+arrow-left returns to previous page
			if( !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey ) {
				if(e.preventDefault) {
					e.preventDefault();
				} else {
					e.returnValue = false;
				} 
				self[keydownAction]();
			}
		}
	},

	_onGlobalClick = function(e) {
		if(!e) {
			return;
		}

		// don't allow click event to pass through when triggering after drag or some other gesture
		if(_moved || _zoomStarted || _mainScrollAnimating || _verticalDragInitiated) {
			e.preventDefault();
			e.stopPropagation();
		}
	},

	_updatePageScrollOffset = function() {
		self.setScrollOffset(0, framework.getScrollY());		
	};
	


	



// Micro animation engine
var _animations = {},
	_numAnimations = 0,
	_stopAnimation = function(name) {
		if(_animations[name]) {
			if(_animations[name].raf) {
				_cancelAF( _animations[name].raf );
			}
			_numAnimations--;
			delete _animations[name];
		}
	},
	_registerStartAnimation = function(name) {
		if(_animations[name]) {
			_stopAnimation(name);
		}
		if(!_animations[name]) {
			_numAnimations++;
			_animations[name] = {};
		}
	},
	_stopAllAnimations = function() {
		for (var prop in _animations) {

			if( _animations.hasOwnProperty( prop ) ) {
				_stopAnimation(prop);
			} 
			
		}
	},
	_animateProp = function(name, b, endProp, d, easingFn, onUpdate, onComplete) {
		var startAnimTime = _getCurrentTime(), t;
		_registerStartAnimation(name);

		var animloop = function(){
			if ( _animations[name] ) {
				
				t = _getCurrentTime() - startAnimTime; // time diff
				//b - beginning (start prop)
				//d - anim duration

				if ( t >= d ) {
					_stopAnimation(name);
					onUpdate(endProp);
					if(onComplete) {
						onComplete();
					}
					return;
				}
				onUpdate( (endProp - b) * easingFn(t/d) + b );

				_animations[name].raf = _requestAF(animloop);
			}
		};
		animloop();
	};
	


var publicMethods = {

	// make a few local variables and functions public
	shout: _shout,
	listen: _listen,
	viewportSize: _viewportSize,
	options: _options,

	isMainScrollAnimating: function() {
		return _mainScrollAnimating;
	},
	getZoomLevel: function() {
		return _currZoomLevel;
	},
	getCurrentIndex: function() {
		return _currentItemIndex;
	},
	isDragging: function() {
		return _isDragging;
	},	
	isZooming: function() {
		return _isZooming;
	},
	setScrollOffset: function(x,y) {
		_offset.x = x;
		_currentWindowScrollY = _offset.y = y;
		_shout('updateScrollOffset', _offset);
	},
	applyZoomPan: function(zoomLevel,panX,panY,allowRenderResolution) {
		_panOffset.x = panX;
		_panOffset.y = panY;
		_currZoomLevel = zoomLevel;
		_applyCurrentZoomPan( allowRenderResolution );
	},

	init: function() {

		if(_isOpen || _isDestroying) {
			return;
		}

		var i;

		self.framework = framework; // basic functionality
		self.template = template; // root DOM element of PhotoSwipe
		self.bg = framework.getChildByClass(template, 'pswp__bg');

		_initalClassName = template.className;
		_isOpen = true;
				
		_features = framework.detectFeatures();
		_requestAF = _features.raf;
		_cancelAF = _features.caf;
		_transformKey = _features.transform;
		_oldIE = _features.oldIE;
		
		self.scrollWrap = framework.getChildByClass(template, 'pswp__scroll-wrap');
		self.container = framework.getChildByClass(self.scrollWrap, 'pswp__container');

		_containerStyle = self.container.style; // for fast access

		// Objects that hold slides (there are only 3 in DOM)
		self.itemHolders = _itemHolders = [
			{el:self.container.children[0] , wrap:0, index: -1},
			{el:self.container.children[1] , wrap:0, index: -1},
			{el:self.container.children[2] , wrap:0, index: -1}
		];

		// hide nearby item holders until initial zoom animation finishes (to avoid extra Paints)
		_itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'none';

		_setupTransforms();

		// Setup global events
		_globalEventHandlers = {
			resize: self.updateSize,
			scroll: _updatePageScrollOffset,
			keydown: _onKeyDown,
			click: _onGlobalClick
		};

		// disable show/hide effects on old browsers that don't support CSS animations or transforms, 
		// old IOS, Android and Opera mobile. Blackberry seems to work fine, even older models.
		var oldPhone = _features.isOldIOSPhone || _features.isOldAndroid || _features.isMobileOpera;
		if(!_features.animationName || !_features.transform || oldPhone) {
			_options.showAnimationDuration = _options.hideAnimationDuration = 0;
		}

		// init modules
		for(i = 0; i < _modules.length; i++) {
			self['init' + _modules[i]]();
		}
		
		// init
		if(UiClass) {
			var ui = self.ui = new UiClass(self, framework);
			ui.init();
		}

		_shout('firstUpdate');
		_currentItemIndex = _currentItemIndex || _options.index || 0;
		// validate index
		if( isNaN(_currentItemIndex) || _currentItemIndex < 0 || _currentItemIndex >= _getNumItems() ) {
			_currentItemIndex = 0;
		}
		self.currItem = _getItemAt( _currentItemIndex );

		
		if(_features.isOldIOSPhone || _features.isOldAndroid) {
			_isFixedPosition = false;
		}
		
		template.setAttribute('aria-hidden', 'false');
		if(_options.modal) {
			if(!_isFixedPosition) {
				template.style.position = 'absolute';
				template.style.top = framework.getScrollY() + 'px';
			} else {
				template.style.position = 'fixed';
			}
		}

		if(_currentWindowScrollY === undefined) {
			_shout('initialLayout');
			_currentWindowScrollY = _initalWindowScrollY = framework.getScrollY();
		}
		
		// add classes to root element of PhotoSwipe
		var rootClasses = 'pswp--open ';
		if(_options.mainClass) {
			rootClasses += _options.mainClass + ' ';
		}
		if(_options.showHideOpacity) {
			rootClasses += 'pswp--animate_opacity ';
		}
		rootClasses += _likelyTouchDevice ? 'pswp--touch' : 'pswp--notouch';
		rootClasses += _features.animationName ? ' pswp--css_animation' : '';
		rootClasses += _features.svg ? ' pswp--svg' : '';
		framework.addClass(template, rootClasses);

		self.updateSize();

		// initial update
		_containerShiftIndex = -1;
		_indexDiff = null;
		for(i = 0; i < NUM_HOLDERS; i++) {
			_setTranslateX( (i+_containerShiftIndex) * _slideSize.x, _itemHolders[i].el.style);
		}

		if(!_oldIE) {
			framework.bind(self.scrollWrap, _downEvents, self); // no dragging for old IE
		}	

		_listen('initialZoomInEnd', function() {
			self.setContent(_itemHolders[0], _currentItemIndex-1);
			self.setContent(_itemHolders[2], _currentItemIndex+1);

			_itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'block';

			if(_options.focus) {
				// focus causes layout, 
				// which causes lag during the animation, 
				// that's why we delay it untill the initial zoom transition ends
				template.focus();
			}
			 

			_bindEvents();
		});

		// set content for center slide (first time)
		self.setContent(_itemHolders[1], _currentItemIndex);
		
		self.updateCurrItem();

		_shout('afterInit');

		if(!_isFixedPosition) {

			// On all versions of iOS lower than 8.0, we check size of viewport every second.
			// 
			// This is done to detect when Safari top & bottom bars appear, 
			// as this action doesn't trigger any events (like resize). 
			// 
			// On iOS8 they fixed this.
			// 
			// 10 Nov 2014: iOS 7 usage ~40%. iOS 8 usage 56%.
			
			_updateSizeInterval = setInterval(function() {
				if(!_numAnimations && !_isDragging && !_isZooming && (_currZoomLevel === self.currItem.initialZoomLevel)  ) {
					self.updateSize();
				}
			}, 1000);
		}

		framework.addClass(template, 'pswp--visible');
	},

	// Close the gallery, then destroy it
	close: function() {
		if(!_isOpen) {
			return;
		}

		_isOpen = false;
		_isDestroying = true;
		_shout('close');
		_unbindEvents();

		_showOrHide(self.currItem, null, true, self.destroy);
	},

	// destroys the gallery (unbinds events, cleans up intervals and timeouts to avoid memory leaks)
	destroy: function() {
		_shout('destroy');

		if(_showOrHideTimeout) {
			clearTimeout(_showOrHideTimeout);
		}
		
		template.setAttribute('aria-hidden', 'true');
		template.className = _initalClassName;

		if(_updateSizeInterval) {
			clearInterval(_updateSizeInterval);
		}

		framework.unbind(self.scrollWrap, _downEvents, self);

		// we unbind scroll event at the end, as closing animation may depend on it
		framework.unbind(window, 'scroll', self);

		_stopDragUpdateLoop();

		_stopAllAnimations();

		_listeners = null;
	},

	/**
	 * Pan image to position
	 * @param {Number} x     
	 * @param {Number} y     
	 * @param {Boolean} force Will ignore bounds if set to true.
	 */
	panTo: function(x,y,force) {
		if(!force) {
			if(x > _currPanBounds.min.x) {
				x = _currPanBounds.min.x;
			} else if(x < _currPanBounds.max.x) {
				x = _currPanBounds.max.x;
			}

			if(y > _currPanBounds.min.y) {
				y = _currPanBounds.min.y;
			} else if(y < _currPanBounds.max.y) {
				y = _currPanBounds.max.y;
			}
		}
		
		_panOffset.x = x;
		_panOffset.y = y;
		_applyCurrentZoomPan();
	},
	
	handleEvent: function (e) {
		e = e || window.event;
		if(_globalEventHandlers[e.type]) {
			_globalEventHandlers[e.type](e);
		}
	},


	goTo: function(index) {

		index = _getLoopedId(index);

		var diff = index - _currentItemIndex;
		_indexDiff = diff;

		_currentItemIndex = index;
		self.currItem = _getItemAt( _currentItemIndex );
		_currPositionIndex -= diff;
		
		_moveMainScroll(_slideSize.x * _currPositionIndex);
		

		_stopAllAnimations();
		_mainScrollAnimating = false;

		self.updateCurrItem();
	},
	next: function() {
		self.goTo( _currentItemIndex + 1);
	},
	prev: function() {
		self.goTo( _currentItemIndex - 1);
	},

	// update current zoom/pan objects
	updateCurrZoomItem: function(emulateSetContent) {
		if(emulateSetContent) {
			_shout('beforeChange', 0);
		}

		// itemHolder[1] is middle (current) item
		if(_itemHolders[1].el.children.length) {
			var zoomElement = _itemHolders[1].el.children[0];
			if( framework.hasClass(zoomElement, 'pswp__zoom-wrap') ) {
				_currZoomElementStyle = zoomElement.style;
			} else {
				_currZoomElementStyle = null;
			}
		} else {
			_currZoomElementStyle = null;
		}
		
		_currPanBounds = self.currItem.bounds;	
		_startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;

		_panOffset.x = _currPanBounds.center.x;
		_panOffset.y = _currPanBounds.center.y;

		if(emulateSetContent) {
			_shout('afterChange');
		}
	},


	invalidateCurrItems: function() {
		_itemsNeedUpdate = true;
		for(var i = 0; i < NUM_HOLDERS; i++) {
			if( _itemHolders[i].item ) {
				_itemHolders[i].item.needsUpdate = true;
			}
		}
	},

	updateCurrItem: function(beforeAnimation) {

		if(_indexDiff === 0) {
			return;
		}

		var diffAbs = Math.abs(_indexDiff),
			tempHolder;

		if(beforeAnimation && diffAbs < 2) {
			return;
		}


		self.currItem = _getItemAt( _currentItemIndex );
		_renderMaxResolution = false;
		
		_shout('beforeChange', _indexDiff);

		if(diffAbs >= NUM_HOLDERS) {
			_containerShiftIndex += _indexDiff + (_indexDiff > 0 ? -NUM_HOLDERS : NUM_HOLDERS);
			diffAbs = NUM_HOLDERS;
		}
		for(var i = 0; i < diffAbs; i++) {
			if(_indexDiff > 0) {
				tempHolder = _itemHolders.shift();
				_itemHolders[NUM_HOLDERS-1] = tempHolder; // move first to last

				_containerShiftIndex++;
				_setTranslateX( (_containerShiftIndex+2) * _slideSize.x, tempHolder.el.style);
				self.setContent(tempHolder, _currentItemIndex - diffAbs + i + 1 + 1);
			} else {
				tempHolder = _itemHolders.pop();
				_itemHolders.unshift( tempHolder ); // move last to first

				_containerShiftIndex--;
				_setTranslateX( _containerShiftIndex * _slideSize.x, tempHolder.el.style);
				self.setContent(tempHolder, _currentItemIndex + diffAbs - i - 1 - 1);
			}
			
		}

		// reset zoom/pan on previous item
		if(_currZoomElementStyle && Math.abs(_indexDiff) === 1) {

			var prevItem = _getItemAt(_prevItemIndex);
			if(prevItem.initialZoomLevel !== _currZoomLevel) {
				_calculateItemSize(prevItem , _viewportSize );
				_setImageSize(prevItem);
				_applyZoomPanToItem( prevItem ); 				
			}

		}

		// reset diff after update
		_indexDiff = 0;

		self.updateCurrZoomItem();

		_prevItemIndex = _currentItemIndex;

		_shout('afterChange');
		
	},



	updateSize: function(force) {
		
		if(!_isFixedPosition && _options.modal) {
			var windowScrollY = framework.getScrollY();
			if(_currentWindowScrollY !== windowScrollY) {
				template.style.top = windowScrollY + 'px';
				_currentWindowScrollY = windowScrollY;
			}
			if(!force && _windowVisibleSize.x === window.innerWidth && _windowVisibleSize.y === window.innerHeight) {
				return;
			}
			_windowVisibleSize.x = window.innerWidth;
			_windowVisibleSize.y = window.innerHeight;

			//template.style.width = _windowVisibleSize.x + 'px';
			template.style.height = _windowVisibleSize.y + 'px';
		}



		_viewportSize.x = self.scrollWrap.clientWidth;
		_viewportSize.y = self.scrollWrap.clientHeight;

		_updatePageScrollOffset();

		_slideSize.x = _viewportSize.x + Math.round(_viewportSize.x * _options.spacing);
		_slideSize.y = _viewportSize.y;

		_moveMainScroll(_slideSize.x * _currPositionIndex);

		_shout('beforeResize'); // even may be used for example to switch image sources


		// don't re-calculate size on inital size update
		if(_containerShiftIndex !== undefined) {

			var holder,
				item,
				hIndex;

			for(var i = 0; i < NUM_HOLDERS; i++) {
				holder = _itemHolders[i];
				_setTranslateX( (i+_containerShiftIndex) * _slideSize.x, holder.el.style);

				hIndex = _currentItemIndex+i-1;

				if(_options.loop && _getNumItems() > 2) {
					hIndex = _getLoopedId(hIndex);
				}

				// update zoom level on items and refresh source (if needsUpdate)
				item = _getItemAt( hIndex );

				// re-render gallery item if `needsUpdate`,
				// or doesn't have `bounds` (entirely new slide object)
				if( item && (_itemsNeedUpdate || item.needsUpdate || !item.bounds) ) {

					self.cleanSlide( item );
					
					self.setContent( holder, hIndex );

					// if "center" slide
					if(i === 1) {
						self.currItem = item;
						self.updateCurrZoomItem(true);
					}

					item.needsUpdate = false;

				} else if(holder.index === -1 && hIndex >= 0) {
					// add content first time
					self.setContent( holder, hIndex );
				}
				if(item && item.container) {
					_calculateItemSize(item, _viewportSize);
					_setImageSize(item);
					_applyZoomPanToItem( item );
				}
				
			}
			_itemsNeedUpdate = false;
		}	

		_startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;
		_currPanBounds = self.currItem.bounds;

		if(_currPanBounds) {
			_panOffset.x = _currPanBounds.center.x;
			_panOffset.y = _currPanBounds.center.y;
			_applyCurrentZoomPan( true );
		}
		
		_shout('resize');
	},
	
	// Zoom current item to
	zoomTo: function(destZoomLevel, centerPoint, speed, easingFn, updateFn) {
		/*
			if(destZoomLevel === 'fit') {
				destZoomLevel = self.currItem.fitRatio;
			} else if(destZoomLevel === 'fill') {
				destZoomLevel = self.currItem.fillRatio;
			}
		*/

		if(centerPoint) {
			_startZoomLevel = _currZoomLevel;
			_midZoomPoint.x = Math.abs(centerPoint.x) - _panOffset.x ;
			_midZoomPoint.y = Math.abs(centerPoint.y) - _panOffset.y ;
			_equalizePoints(_startPanOffset, _panOffset);
		}

		var destPanBounds = _calculatePanBounds(destZoomLevel, false),
			destPanOffset = {};

		_modifyDestPanOffset('x', destPanBounds, destPanOffset, destZoomLevel);
		_modifyDestPanOffset('y', destPanBounds, destPanOffset, destZoomLevel);

		var initialZoomLevel = _currZoomLevel;
		var initialPanOffset = {
			x: _panOffset.x,
			y: _panOffset.y
		};

		_roundPoint(destPanOffset);

		var onUpdate = function(now) {
			if(now === 1) {
				_currZoomLevel = destZoomLevel;
				_panOffset.x = destPanOffset.x;
				_panOffset.y = destPanOffset.y;
			} else {
				_currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;
				_panOffset.x = (destPanOffset.x - initialPanOffset.x) * now + initialPanOffset.x;
				_panOffset.y = (destPanOffset.y - initialPanOffset.y) * now + initialPanOffset.y;
			}

			if(updateFn) {
				updateFn(now);
			}

			_applyCurrentZoomPan( now === 1 );
		};

		if(speed) {
			_animateProp('customZoomTo', 0, 1, speed, easingFn || framework.easing.sine.inOut, onUpdate);
		} else {
			onUpdate(1);
		}
	}


};


/*>>core*/

/*>>gestures*/
/**
 * Mouse/touch/pointer event handlers.
 * 
 * separated from @core.js for readability
 */

var MIN_SWIPE_DISTANCE = 30,
	DIRECTION_CHECK_OFFSET = 10; // amount of pixels to drag to determine direction of swipe

var _gestureStartTime,
	_gestureCheckSpeedTime,

	// pool of objects that are used during dragging of zooming
	p = {}, // first point
	p2 = {}, // second point (for zoom gesture)
	delta = {},
	_currPoint = {},
	_startPoint = {},
	_currPointers = [],
	_startMainScrollPos = {},
	_releaseAnimData,
	_posPoints = [], // array of points during dragging, used to determine type of gesture
	_tempPoint = {},

	_isZoomingIn,
	_verticalDragInitiated,
	_oldAndroidTouchEndTimeout,
	_currZoomedItemIndex = 0,
	_centerPoint = _getEmptyPoint(),
	_lastReleaseTime = 0,
	_isDragging, // at least one pointer is down
	_isMultitouch, // at least two _pointers are down
	_zoomStarted, // zoom level changed during zoom gesture
	_moved,
	_dragAnimFrame,
	_mainScrollShifted,
	_currentPoints, // array of current touch points
	_isZooming,
	_currPointsDistance,
	_startPointsDistance,
	_currPanBounds,
	_mainScrollPos = _getEmptyPoint(),
	_currZoomElementStyle,
	_mainScrollAnimating, // true, if animation after swipe gesture is running
	_midZoomPoint = _getEmptyPoint(),
	_currCenterPoint = _getEmptyPoint(),
	_direction,
	_isFirstMove,
	_opacityChanged,
	_bgOpacity,
	_wasOverInitialZoom,

	_isEqualPoints = function(p1, p2) {
		return p1.x === p2.x && p1.y === p2.y;
	},
	_isNearbyPoints = function(touch0, touch1) {
		return Math.abs(touch0.x - touch1.x) < DOUBLE_TAP_RADIUS && Math.abs(touch0.y - touch1.y) < DOUBLE_TAP_RADIUS;
	},
	_calculatePointsDistance = function(p1, p2) {
		_tempPoint.x = Math.abs( p1.x - p2.x );
		_tempPoint.y = Math.abs( p1.y - p2.y );
		return Math.sqrt(_tempPoint.x * _tempPoint.x + _tempPoint.y * _tempPoint.y);
	},
	_stopDragUpdateLoop = function() {
		if(_dragAnimFrame) {
			_cancelAF(_dragAnimFrame);
			_dragAnimFrame = null;
		}
	},
	_dragUpdateLoop = function() {
		if(_isDragging) {
			_dragAnimFrame = _requestAF(_dragUpdateLoop);
			_renderMovement();
		}
	},
	_canPan = function() {
		return !(_options.scaleMode === 'fit' && _currZoomLevel ===  self.currItem.initialZoomLevel);
	},
	
	// find the closest parent DOM element
	_closestElement = function(el, fn) {
	  	if(!el || el === document) {
	  		return false;
	  	}

	  	// don't search elements above pswp__scroll-wrap
	  	if(el.getAttribute('class') && el.getAttribute('class').indexOf('pswp__scroll-wrap') > -1 ) {
	  		return false;
	  	}

	  	if( fn(el) ) {
	  		return el;
	  	}

	  	return _closestElement(el.parentNode, fn);
	},

	_preventObj = {},
	_preventDefaultEventBehaviour = function(e, isDown) {
	    _preventObj.prevent = !_closestElement(e.target, _options.isClickableElement);

		_shout('preventDragEvent', e, isDown, _preventObj);
		return _preventObj.prevent;

	},
	_convertTouchToPoint = function(touch, p) {
		p.x = touch.pageX;
		p.y = touch.pageY;
		p.id = touch.identifier;
		return p;
	},
	_findCenterOfPoints = function(p1, p2, pCenter) {
		pCenter.x = (p1.x + p2.x) * 0.5;
		pCenter.y = (p1.y + p2.y) * 0.5;
	},
	_pushPosPoint = function(time, x, y) {
		if(time - _gestureCheckSpeedTime > 50) {
			var o = _posPoints.length > 2 ? _posPoints.shift() : {};
			o.x = x;
			o.y = y; 
			_posPoints.push(o);
			_gestureCheckSpeedTime = time;
		}
	},

	_calculateVerticalDragOpacityRatio = function() {
		var yOffset = _panOffset.y - self.currItem.initialPosition.y; // difference between initial and current position
		return 1 -  Math.abs( yOffset / (_viewportSize.y / 2)  );
	},

	
	// points pool, reused during touch events
	_ePoint1 = {},
	_ePoint2 = {},
	_tempPointsArr = [],
	_tempCounter,
	_getTouchPoints = function(e) {
		// clean up previous points, without recreating array
		while(_tempPointsArr.length > 0) {
			_tempPointsArr.pop();
		}

		if(!_pointerEventEnabled) {
			if(e.type.indexOf('touch') > -1) {

				if(e.touches && e.touches.length > 0) {
					_tempPointsArr[0] = _convertTouchToPoint(e.touches[0], _ePoint1);
					if(e.touches.length > 1) {
						_tempPointsArr[1] = _convertTouchToPoint(e.touches[1], _ePoint2);
					}
				}
				
			} else {
				_ePoint1.x = e.pageX;
				_ePoint1.y = e.pageY;
				_ePoint1.id = '';
				_tempPointsArr[0] = _ePoint1;//_ePoint1;
			}
		} else {
			_tempCounter = 0;
			// we can use forEach, as pointer events are supported only in modern browsers
			_currPointers.forEach(function(p) {
				if(_tempCounter === 0) {
					_tempPointsArr[0] = p;
				} else if(_tempCounter === 1) {
					_tempPointsArr[1] = p;
				}
				_tempCounter++;

			});
		}
		return _tempPointsArr;
	},

	_panOrMoveMainScroll = function(axis, delta) {

		var panFriction,
			overDiff = 0,
			newOffset = _panOffset[axis] + delta[axis],
			startOverDiff,
			dir = delta[axis] > 0,
			newMainScrollPosition = _mainScrollPos.x + delta.x,
			mainScrollDiff = _mainScrollPos.x - _startMainScrollPos.x,
			newPanPos,
			newMainScrollPos;

		// calculate fdistance over the bounds and friction
		if(newOffset > _currPanBounds.min[axis] || newOffset < _currPanBounds.max[axis]) {
			panFriction = _options.panEndFriction;
			// Linear increasing of friction, so at 1/4 of viewport it's at max value. 
			// Looks not as nice as was expected. Left for history.
			// panFriction = (1 - (_panOffset[axis] + delta[axis] + panBounds.min[axis]) / (_viewportSize[axis] / 4) );
		} else {
			panFriction = 1;
		}
		
		newOffset = _panOffset[axis] + delta[axis] * panFriction;

		// move main scroll or start panning
		if(_options.allowPanToNext || _currZoomLevel === self.currItem.initialZoomLevel) {


			if(!_currZoomElementStyle) {
				
				newMainScrollPos = newMainScrollPosition;

			} else if(_direction === 'h' && axis === 'x' && !_zoomStarted ) {
				
				if(dir) {
					if(newOffset > _currPanBounds.min[axis]) {
						panFriction = _options.panEndFriction;
						overDiff = _currPanBounds.min[axis] - newOffset;
						startOverDiff = _currPanBounds.min[axis] - _startPanOffset[axis];
					}
					
					// drag right
					if( (startOverDiff <= 0 || mainScrollDiff < 0) && _getNumItems() > 1 ) {
						newMainScrollPos = newMainScrollPosition;
						if(mainScrollDiff < 0 && newMainScrollPosition > _startMainScrollPos.x) {
							newMainScrollPos = _startMainScrollPos.x;
						}
					} else {
						if(_currPanBounds.min.x !== _currPanBounds.max.x) {
							newPanPos = newOffset;
						}
						
					}

				} else {

					if(newOffset < _currPanBounds.max[axis] ) {
						panFriction =_options.panEndFriction;
						overDiff = newOffset - _currPanBounds.max[axis];
						startOverDiff = _startPanOffset[axis] - _currPanBounds.max[axis];
					}

					if( (startOverDiff <= 0 || mainScrollDiff > 0) && _getNumItems() > 1 ) {
						newMainScrollPos = newMainScrollPosition;

						if(mainScrollDiff > 0 && newMainScrollPosition < _startMainScrollPos.x) {
							newMainScrollPos = _startMainScrollPos.x;
						}

					} else {
						if(_currPanBounds.min.x !== _currPanBounds.max.x) {
							newPanPos = newOffset;
						}
					}

				}


				//
			}

			if(axis === 'x') {

				if(newMainScrollPos !== undefined) {
					_moveMainScroll(newMainScrollPos, true);
					if(newMainScrollPos === _startMainScrollPos.x) {
						_mainScrollShifted = false;
					} else {
						_mainScrollShifted = true;
					}
				}

				if(_currPanBounds.min.x !== _currPanBounds.max.x) {
					if(newPanPos !== undefined) {
						_panOffset.x = newPanPos;
					} else if(!_mainScrollShifted) {
						_panOffset.x += delta.x * panFriction;
					}
				}

				return newMainScrollPos !== undefined;
			}

		}

		if(!_mainScrollAnimating) {
			
			if(!_mainScrollShifted) {
				if(_currZoomLevel > self.currItem.fitRatio) {
					_panOffset[axis] += delta[axis] * panFriction;
				
				}
			}

			
		}
		
	},

	// Pointerdown/touchstart/mousedown handler
	_onDragStart = function(e) {

		// Allow dragging only via left mouse button.
		// As this handler is not added in IE8 - we ignore e.which
		// 
		// http://www.quirksmode.org/js/events_properties.html
		// https://developer.mozilla.org/en-US/docs/Web/API/event.button
		if(e.type === 'mousedown' && e.button > 0  ) {
			return;
		}

		if(_initialZoomRunning) {
			e.preventDefault();
			return;
		}

		if(_oldAndroidTouchEndTimeout && e.type === 'mousedown') {
			return;
		}

		if(_preventDefaultEventBehaviour(e, true)) {
			e.preventDefault();
		}



		_shout('pointerDown');

		if(_pointerEventEnabled) {
			var pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');
			if(pointerIndex < 0) {
				pointerIndex = _currPointers.length;
			}
			_currPointers[pointerIndex] = {x:e.pageX, y:e.pageY, id: e.pointerId};
		}
		


		var startPointsList = _getTouchPoints(e),
			numPoints = startPointsList.length;

		_currentPoints = null;

		_stopAllAnimations();

		// init drag
		if(!_isDragging || numPoints === 1) {

			

			_isDragging = _isFirstMove = true;
			framework.bind(window, _upMoveEvents, self);

			_isZoomingIn = 
				_wasOverInitialZoom = 
				_opacityChanged = 
				_verticalDragInitiated = 
				_mainScrollShifted = 
				_moved = 
				_isMultitouch = 
				_zoomStarted = false;

			_direction = null;

			_shout('firstTouchStart', startPointsList);

			_equalizePoints(_startPanOffset, _panOffset);

			_currPanDist.x = _currPanDist.y = 0;
			_equalizePoints(_currPoint, startPointsList[0]);
			_equalizePoints(_startPoint, _currPoint);

			//_equalizePoints(_startMainScrollPos, _mainScrollPos);
			_startMainScrollPos.x = _slideSize.x * _currPositionIndex;

			_posPoints = [{
				x: _currPoint.x,
				y: _currPoint.y
			}];

			_gestureCheckSpeedTime = _gestureStartTime = _getCurrentTime();

			//_mainScrollAnimationEnd(true);
			_calculatePanBounds( _currZoomLevel, true );
			
			// Start rendering
			_stopDragUpdateLoop();
			_dragUpdateLoop();
			
		}

		// init zoom
		if(!_isZooming && numPoints > 1 && !_mainScrollAnimating && !_mainScrollShifted) {
			_startZoomLevel = _currZoomLevel;
			_zoomStarted = false; // true if zoom changed at least once

			_isZooming = _isMultitouch = true;
			_currPanDist.y = _currPanDist.x = 0;

			_equalizePoints(_startPanOffset, _panOffset);

			_equalizePoints(p, startPointsList[0]);
			_equalizePoints(p2, startPointsList[1]);

			_findCenterOfPoints(p, p2, _currCenterPoint);

			_midZoomPoint.x = Math.abs(_currCenterPoint.x) - _panOffset.x;
			_midZoomPoint.y = Math.abs(_currCenterPoint.y) - _panOffset.y;
			_currPointsDistance = _startPointsDistance = _calculatePointsDistance(p, p2);
		}


	},

	// Pointermove/touchmove/mousemove handler
	_onDragMove = function(e) {

		e.preventDefault();

		if(_pointerEventEnabled) {
			var pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');
			if(pointerIndex > -1) {
				var p = _currPointers[pointerIndex];
				p.x = e.pageX;
				p.y = e.pageY; 
			}
		}

		if(_isDragging) {
			var touchesList = _getTouchPoints(e);
			if(!_direction && !_moved && !_isZooming) {

				if(_mainScrollPos.x !== _slideSize.x * _currPositionIndex) {
					// if main scroll position is shifted – direction is always horizontal
					_direction = 'h';
				} else {
					var diff = Math.abs(touchesList[0].x - _currPoint.x) - Math.abs(touchesList[0].y - _currPoint.y);
					// check the direction of movement
					if(Math.abs(diff) >= DIRECTION_CHECK_OFFSET) {
						_direction = diff > 0 ? 'h' : 'v';
						_currentPoints = touchesList;
					}
				}
				
			} else {
				_currentPoints = touchesList;
			}
		}	
	},
	// 
	_renderMovement =  function() {

		if(!_currentPoints) {
			return;
		}

		var numPoints = _currentPoints.length;

		if(numPoints === 0) {
			return;
		}

		_equalizePoints(p, _currentPoints[0]);

		delta.x = p.x - _currPoint.x;
		delta.y = p.y - _currPoint.y;

		if(_isZooming && numPoints > 1) {
			// Handle behaviour for more than 1 point

			_currPoint.x = p.x;
			_currPoint.y = p.y;
		
			// check if one of two points changed
			if( !delta.x && !delta.y && _isEqualPoints(_currentPoints[1], p2) ) {
				return;
			}

			_equalizePoints(p2, _currentPoints[1]);


			if(!_zoomStarted) {
				_zoomStarted = true;
				_shout('zoomGestureStarted');
			}
			
			// Distance between two points
			var pointsDistance = _calculatePointsDistance(p,p2);

			var zoomLevel = _calculateZoomLevel(pointsDistance);

			// slightly over the of initial zoom level
			if(zoomLevel > self.currItem.initialZoomLevel + self.currItem.initialZoomLevel / 15) {
				_wasOverInitialZoom = true;
			}

			// Apply the friction if zoom level is out of the bounds
			var zoomFriction = 1,
				minZoomLevel = _getMinZoomLevel(),
				maxZoomLevel = _getMaxZoomLevel();

			if ( zoomLevel < minZoomLevel ) {
				
				if(_options.pinchToClose && !_wasOverInitialZoom && _startZoomLevel <= self.currItem.initialZoomLevel) {
					// fade out background if zooming out
					var minusDiff = minZoomLevel - zoomLevel;
					var percent = 1 - minusDiff / (minZoomLevel / 1.2);

					_applyBgOpacity(percent);
					_shout('onPinchClose', percent);
					_opacityChanged = true;
				} else {
					zoomFriction = (minZoomLevel - zoomLevel) / minZoomLevel;
					if(zoomFriction > 1) {
						zoomFriction = 1;
					}
					zoomLevel = minZoomLevel - zoomFriction * (minZoomLevel / 3);
				}
				
			} else if ( zoomLevel > maxZoomLevel ) {
				// 1.5 - extra zoom level above the max. E.g. if max is x6, real max 6 + 1.5 = 7.5
				zoomFriction = (zoomLevel - maxZoomLevel) / ( minZoomLevel * 6 );
				if(zoomFriction > 1) {
					zoomFriction = 1;
				}
				zoomLevel = maxZoomLevel + zoomFriction * minZoomLevel;
			}

			if(zoomFriction < 0) {
				zoomFriction = 0;
			}

			// distance between touch points after friction is applied
			_currPointsDistance = pointsDistance;

			// _centerPoint - The point in the middle of two pointers
			_findCenterOfPoints(p, p2, _centerPoint);
		
			// paning with two pointers pressed
			_currPanDist.x += _centerPoint.x - _currCenterPoint.x;
			_currPanDist.y += _centerPoint.y - _currCenterPoint.y;
			_equalizePoints(_currCenterPoint, _centerPoint);

			_panOffset.x = _calculatePanOffset('x', zoomLevel);
			_panOffset.y = _calculatePanOffset('y', zoomLevel);

			_isZoomingIn = zoomLevel > _currZoomLevel;
			_currZoomLevel = zoomLevel;
			_applyCurrentZoomPan();

		} else {

			// handle behaviour for one point (dragging or panning)

			if(!_direction) {
				return;
			}

			if(_isFirstMove) {
				_isFirstMove = false;

				// subtract drag distance that was used during the detection direction  

				if( Math.abs(delta.x) >= DIRECTION_CHECK_OFFSET) {
					delta.x -= _currentPoints[0].x - _startPoint.x;
				}
				
				if( Math.abs(delta.y) >= DIRECTION_CHECK_OFFSET) {
					delta.y -= _currentPoints[0].y - _startPoint.y;
				}
			}

			_currPoint.x = p.x;
			_currPoint.y = p.y;

			// do nothing if pointers position hasn't changed
			if(delta.x === 0 && delta.y === 0) {
				return;
			}

			if(_direction === 'v' && _options.closeOnVerticalDrag) {
				if(!_canPan()) {
					_currPanDist.y += delta.y;
					_panOffset.y += delta.y;

					var opacityRatio = _calculateVerticalDragOpacityRatio();

					_verticalDragInitiated = true;
					_shout('onVerticalDrag', opacityRatio);

					_applyBgOpacity(opacityRatio);
					_applyCurrentZoomPan();
					return ;
				}
			}

			_pushPosPoint(_getCurrentTime(), p.x, p.y);

			_moved = true;
			_currPanBounds = self.currItem.bounds;
			
			var mainScrollChanged = _panOrMoveMainScroll('x', delta);
			if(!mainScrollChanged) {
				_panOrMoveMainScroll('y', delta);

				_roundPoint(_panOffset);
				_applyCurrentZoomPan();
			}

		}

	},
	
	// Pointerup/pointercancel/touchend/touchcancel/mouseup event handler
	_onDragRelease = function(e) {

		if(_features.isOldAndroid ) {

			if(_oldAndroidTouchEndTimeout && e.type === 'mouseup') {
				return;
			}

			// on Android (v4.1, 4.2, 4.3 & possibly older) 
			// ghost mousedown/up event isn't preventable via e.preventDefault,
			// which causes fake mousedown event
			// so we block mousedown/up for 600ms
			if( e.type.indexOf('touch') > -1 ) {
				clearTimeout(_oldAndroidTouchEndTimeout);
				_oldAndroidTouchEndTimeout = setTimeout(function() {
					_oldAndroidTouchEndTimeout = 0;
				}, 600);
			}
			
		}

		_shout('pointerUp');

		if(_preventDefaultEventBehaviour(e, false)) {
			e.preventDefault();
		}

		var releasePoint;

		if(_pointerEventEnabled) {
			var pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');
			
			if(pointerIndex > -1) {
				releasePoint = _currPointers.splice(pointerIndex, 1)[0];

				if(navigator.pointerEnabled) {
					releasePoint.type = e.pointerType || 'mouse';
				} else {
					var MSPOINTER_TYPES = {
						4: 'mouse', // event.MSPOINTER_TYPE_MOUSE
						2: 'touch', // event.MSPOINTER_TYPE_TOUCH 
						3: 'pen' // event.MSPOINTER_TYPE_PEN
					};
					releasePoint.type = MSPOINTER_TYPES[e.pointerType];

					if(!releasePoint.type) {
						releasePoint.type = e.pointerType || 'mouse';
					}
				}

			}
		}

		var touchList = _getTouchPoints(e),
			gestureType,
			numPoints = touchList.length;

		if(e.type === 'mouseup') {
			numPoints = 0;
		}

		// Do nothing if there were 3 touch points or more
		if(numPoints === 2) {
			_currentPoints = null;
			return true;
		}

		// if second pointer released
		if(numPoints === 1) {
			_equalizePoints(_startPoint, touchList[0]);
		}				


		// pointer hasn't moved, send "tap release" point
		if(numPoints === 0 && !_direction && !_mainScrollAnimating) {
			if(!releasePoint) {
				if(e.type === 'mouseup') {
					releasePoint = {x: e.pageX, y: e.pageY, type:'mouse'};
				} else if(e.changedTouches && e.changedTouches[0]) {
					releasePoint = {x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY, type:'touch'};
				}		
			}

			_shout('touchRelease', e, releasePoint);
		}

		// Difference in time between releasing of two last touch points (zoom gesture)
		var releaseTimeDiff = -1;

		// Gesture completed, no pointers left
		if(numPoints === 0) {
			_isDragging = false;
			framework.unbind(window, _upMoveEvents, self);

			_stopDragUpdateLoop();

			if(_isZooming) {
				// Two points released at the same time
				releaseTimeDiff = 0;
			} else if(_lastReleaseTime !== -1) {
				releaseTimeDiff = _getCurrentTime() - _lastReleaseTime;
			}
		}
		_lastReleaseTime = numPoints === 1 ? _getCurrentTime() : -1;
		
		if(releaseTimeDiff !== -1 && releaseTimeDiff < 150) {
			gestureType = 'zoom';
		} else {
			gestureType = 'swipe';
		}

		if(_isZooming && numPoints < 2) {
			_isZooming = false;

			// Only second point released
			if(numPoints === 1) {
				gestureType = 'zoomPointerUp';
			}
			_shout('zoomGestureEnded');
		}

		_currentPoints = null;
		if(!_moved && !_zoomStarted && !_mainScrollAnimating && !_verticalDragInitiated) {
			// nothing to animate
			return;
		}
	
		_stopAllAnimations();

		
		if(!_releaseAnimData) {
			_releaseAnimData = _initDragReleaseAnimationData();
		}
		
		_releaseAnimData.calculateSwipeSpeed('x');


		if(_verticalDragInitiated) {

			var opacityRatio = _calculateVerticalDragOpacityRatio();

			if(opacityRatio < _options.verticalDragRange) {
				self.close();
			} else {
				var initalPanY = _panOffset.y,
					initialBgOpacity = _bgOpacity;

				_animateProp('verticalDrag', 0, 1, 300, framework.easing.cubic.out, function(now) {
					
					_panOffset.y = (self.currItem.initialPosition.y - initalPanY) * now + initalPanY;

					_applyBgOpacity(  (1 - initialBgOpacity) * now + initialBgOpacity );
					_applyCurrentZoomPan();
				});

				_shout('onVerticalDrag', 1);
			}

			return;
		}


		// main scroll 
		if(  (_mainScrollShifted || _mainScrollAnimating) && numPoints === 0) {
			var itemChanged = _finishSwipeMainScrollGesture(gestureType, _releaseAnimData);
			if(itemChanged) {
				return;
			}
			gestureType = 'zoomPointerUp';
		}

		// prevent zoom/pan animation when main scroll animation runs
		if(_mainScrollAnimating) {
			return;
		}
		
		// Complete simple zoom gesture (reset zoom level if it's out of the bounds)  
		if(gestureType !== 'swipe') {
			_completeZoomGesture();
			return;
		}
	
		// Complete pan gesture if main scroll is not shifted, and it's possible to pan current image
		if(!_mainScrollShifted && _currZoomLevel > self.currItem.fitRatio) {
			_completePanGesture(_releaseAnimData);
		}
	},


	// Returns object with data about gesture
	// It's created only once and then reused
	_initDragReleaseAnimationData  = function() {
		// temp local vars
		var lastFlickDuration,
			tempReleasePos;

		// s = this
		var s = {
			lastFlickOffset: {},
			lastFlickDist: {},
			lastFlickSpeed: {},
			slowDownRatio:  {},
			slowDownRatioReverse:  {},
			speedDecelerationRatio:  {},
			speedDecelerationRatioAbs:  {},
			distanceOffset:  {},
			backAnimDestination: {},
			backAnimStarted: {},
			calculateSwipeSpeed: function(axis) {
				

				if( _posPoints.length > 1) {
					lastFlickDuration = _getCurrentTime() - _gestureCheckSpeedTime + 50;
					tempReleasePos = _posPoints[_posPoints.length-2][axis];
				} else {
					lastFlickDuration = _getCurrentTime() - _gestureStartTime; // total gesture duration
					tempReleasePos = _startPoint[axis];
				}
				s.lastFlickOffset[axis] = _currPoint[axis] - tempReleasePos;
				s.lastFlickDist[axis] = Math.abs(s.lastFlickOffset[axis]);
				if(s.lastFlickDist[axis] > 20) {
					s.lastFlickSpeed[axis] = s.lastFlickOffset[axis] / lastFlickDuration;
				} else {
					s.lastFlickSpeed[axis] = 0;
				}
				if( Math.abs(s.lastFlickSpeed[axis]) < 0.1 ) {
					s.lastFlickSpeed[axis] = 0;
				}
				
				s.slowDownRatio[axis] = 0.95;
				s.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];
				s.speedDecelerationRatio[axis] = 1;
			},

			calculateOverBoundsAnimOffset: function(axis, speed) {
				if(!s.backAnimStarted[axis]) {

					if(_panOffset[axis] > _currPanBounds.min[axis]) {
						s.backAnimDestination[axis] = _currPanBounds.min[axis];
						
					} else if(_panOffset[axis] < _currPanBounds.max[axis]) {
						s.backAnimDestination[axis] = _currPanBounds.max[axis];
					}

					if(s.backAnimDestination[axis] !== undefined) {
						s.slowDownRatio[axis] = 0.7;
						s.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];
						if(s.speedDecelerationRatioAbs[axis] < 0.05) {

							s.lastFlickSpeed[axis] = 0;
							s.backAnimStarted[axis] = true;

							_animateProp('bounceZoomPan'+axis,_panOffset[axis], 
								s.backAnimDestination[axis], 
								speed || 300, 
								framework.easing.sine.out, 
								function(pos) {
									_panOffset[axis] = pos;
									_applyCurrentZoomPan();
								}
							);

						}
					}
				}
			},

			// Reduces the speed by slowDownRatio (per 10ms)
			calculateAnimOffset: function(axis) {
				if(!s.backAnimStarted[axis]) {
					s.speedDecelerationRatio[axis] = s.speedDecelerationRatio[axis] * (s.slowDownRatio[axis] + 
												s.slowDownRatioReverse[axis] - 
												s.slowDownRatioReverse[axis] * s.timeDiff / 10);

					s.speedDecelerationRatioAbs[axis] = Math.abs(s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis]);
					s.distanceOffset[axis] = s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis] * s.timeDiff;
					_panOffset[axis] += s.distanceOffset[axis];

				}
			},

			panAnimLoop: function() {
				if ( _animations.zoomPan ) {
					_animations.zoomPan.raf = _requestAF(s.panAnimLoop);

					s.now = _getCurrentTime();
					s.timeDiff = s.now - s.lastNow;
					s.lastNow = s.now;
					
					s.calculateAnimOffset('x');
					s.calculateAnimOffset('y');

					_applyCurrentZoomPan();
					
					s.calculateOverBoundsAnimOffset('x');
					s.calculateOverBoundsAnimOffset('y');


					if (s.speedDecelerationRatioAbs.x < 0.05 && s.speedDecelerationRatioAbs.y < 0.05) {

						// round pan position
						_panOffset.x = Math.round(_panOffset.x);
						_panOffset.y = Math.round(_panOffset.y);
						_applyCurrentZoomPan();
						
						_stopAnimation('zoomPan');
						return;
					}
				}

			}
		};
		return s;
	},

	_completePanGesture = function(animData) {
		// calculate swipe speed for Y axis (paanning)
		animData.calculateSwipeSpeed('y');

		_currPanBounds = self.currItem.bounds;
		
		animData.backAnimDestination = {};
		animData.backAnimStarted = {};

		// Avoid acceleration animation if speed is too low
		if(Math.abs(animData.lastFlickSpeed.x) <= 0.05 && Math.abs(animData.lastFlickSpeed.y) <= 0.05 ) {
			animData.speedDecelerationRatioAbs.x = animData.speedDecelerationRatioAbs.y = 0;

			// Run pan drag release animation. E.g. if you drag image and release finger without momentum.
			animData.calculateOverBoundsAnimOffset('x');
			animData.calculateOverBoundsAnimOffset('y');
			return true;
		}

		// Animation loop that controls the acceleration after pan gesture ends
		_registerStartAnimation('zoomPan');
		animData.lastNow = _getCurrentTime();
		animData.panAnimLoop();
	},


	_finishSwipeMainScrollGesture = function(gestureType, _releaseAnimData) {
		var itemChanged;
		if(!_mainScrollAnimating) {
			_currZoomedItemIndex = _currentItemIndex;
		}


		
		var itemsDiff;

		if(gestureType === 'swipe') {
			var totalShiftDist = _currPoint.x - _startPoint.x,
				isFastLastFlick = _releaseAnimData.lastFlickDist.x < 10;

			// if container is shifted for more than MIN_SWIPE_DISTANCE, 
			// and last flick gesture was in right direction
			if(totalShiftDist > MIN_SWIPE_DISTANCE && 
				(isFastLastFlick || _releaseAnimData.lastFlickOffset.x > 20) ) {
				// go to prev item
				itemsDiff = -1;
			} else if(totalShiftDist < -MIN_SWIPE_DISTANCE && 
				(isFastLastFlick || _releaseAnimData.lastFlickOffset.x < -20) ) {
				// go to next item
				itemsDiff = 1;
			}
		}

		var nextCircle;

		if(itemsDiff) {
			
			_currentItemIndex += itemsDiff;

			if(_currentItemIndex < 0) {
				_currentItemIndex = _options.loop ? _getNumItems()-1 : 0;
				nextCircle = true;
			} else if(_currentItemIndex >= _getNumItems()) {
				_currentItemIndex = _options.loop ? 0 : _getNumItems()-1;
				nextCircle = true;
			}

			if(!nextCircle || _options.loop) {
				_indexDiff += itemsDiff;
				_currPositionIndex -= itemsDiff;
				itemChanged = true;
			}
			

			
		}

		var animateToX = _slideSize.x * _currPositionIndex;
		var animateToDist = Math.abs( animateToX - _mainScrollPos.x );
		var finishAnimDuration;


		if(!itemChanged && animateToX > _mainScrollPos.x !== _releaseAnimData.lastFlickSpeed.x > 0) {
			// "return to current" duration, e.g. when dragging from slide 0 to -1
			finishAnimDuration = 333; 
		} else {
			finishAnimDuration = Math.abs(_releaseAnimData.lastFlickSpeed.x) > 0 ? 
									animateToDist / Math.abs(_releaseAnimData.lastFlickSpeed.x) : 
									333;

			finishAnimDuration = Math.min(finishAnimDuration, 400);
			finishAnimDuration = Math.max(finishAnimDuration, 250);
		}

		if(_currZoomedItemIndex === _currentItemIndex) {
			itemChanged = false;
		}
		
		_mainScrollAnimating = true;
		
		_shout('mainScrollAnimStart');

		_animateProp('mainScroll', _mainScrollPos.x, animateToX, finishAnimDuration, framework.easing.cubic.out, 
			_moveMainScroll,
			function() {
				_stopAllAnimations();
				_mainScrollAnimating = false;
				_currZoomedItemIndex = -1;
				
				if(itemChanged || _currZoomedItemIndex !== _currentItemIndex) {
					self.updateCurrItem();
				}
				
				_shout('mainScrollAnimComplete');
			}
		);

		if(itemChanged) {
			self.updateCurrItem(true);
		}

		return itemChanged;
	},

	_calculateZoomLevel = function(touchesDistance) {
		return  1 / _startPointsDistance * touchesDistance * _startZoomLevel;
	},

	// Resets zoom if it's out of bounds
	_completeZoomGesture = function() {
		var destZoomLevel = _currZoomLevel,
			minZoomLevel = _getMinZoomLevel(),
			maxZoomLevel = _getMaxZoomLevel();

		if ( _currZoomLevel < minZoomLevel ) {
			destZoomLevel = minZoomLevel;
		} else if ( _currZoomLevel > maxZoomLevel ) {
			destZoomLevel = maxZoomLevel;
		}

		var destOpacity = 1,
			onUpdate,
			initialOpacity = _bgOpacity;

		if(_opacityChanged && !_isZoomingIn && !_wasOverInitialZoom && _currZoomLevel < minZoomLevel) {
			//_closedByScroll = true;
			self.close();
			return true;
		}

		if(_opacityChanged) {
			onUpdate = function(now) {
				_applyBgOpacity(  (destOpacity - initialOpacity) * now + initialOpacity );
			};
		}

		self.zoomTo(destZoomLevel, 0, 200,  framework.easing.cubic.out, onUpdate);
		return true;
	};


_registerModule('Gestures', {
	publicMethods: {

		initGestures: function() {

			// helper function that builds touch/pointer/mouse events
			var addEventNames = function(pref, down, move, up, cancel) {
				_dragStartEvent = pref + down;
				_dragMoveEvent = pref + move;
				_dragEndEvent = pref + up;
				if(cancel) {
					_dragCancelEvent = pref + cancel;
				} else {
					_dragCancelEvent = '';
				}
			};

			_pointerEventEnabled = _features.pointerEvent;
			if(_pointerEventEnabled && _features.touch) {
				// we don't need touch events, if browser supports pointer events
				_features.touch = false;
			}

			if(_pointerEventEnabled) {
				if(navigator.pointerEnabled) {
					addEventNames('pointer', 'down', 'move', 'up', 'cancel');
				} else {
					// IE10 pointer events are case-sensitive
					addEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel');
				}
			} else if(_features.touch) {
				addEventNames('touch', 'start', 'move', 'end', 'cancel');
				_likelyTouchDevice = true;
			} else {
				addEventNames('mouse', 'down', 'move', 'up');	
			}

			_upMoveEvents = _dragMoveEvent + ' ' + _dragEndEvent  + ' ' +  _dragCancelEvent;
			_downEvents = _dragStartEvent;

			if(_pointerEventEnabled && !_likelyTouchDevice) {
				_likelyTouchDevice = (navigator.maxTouchPoints > 1) || (navigator.msMaxTouchPoints > 1);
			}
			// make variable public
			self.likelyTouchDevice = _likelyTouchDevice; 
			
			_globalEventHandlers[_dragStartEvent] = _onDragStart;
			_globalEventHandlers[_dragMoveEvent] = _onDragMove;
			_globalEventHandlers[_dragEndEvent] = _onDragRelease; // the Kraken

			if(_dragCancelEvent) {
				_globalEventHandlers[_dragCancelEvent] = _globalEventHandlers[_dragEndEvent];
			}

			// Bind mouse events on device with detected hardware touch support, in case it supports multiple types of input.
			if(_features.touch) {
				_downEvents += ' mousedown';
				_upMoveEvents += ' mousemove mouseup';
				_globalEventHandlers.mousedown = _globalEventHandlers[_dragStartEvent];
				_globalEventHandlers.mousemove = _globalEventHandlers[_dragMoveEvent];
				_globalEventHandlers.mouseup = _globalEventHandlers[_dragEndEvent];
			}

			if(!_likelyTouchDevice) {
				// don't allow pan to next slide from zoomed state on Desktop
				_options.allowPanToNext = false;
			}
		}

	}
});


/*>>gestures*/

/*>>show-hide-transition*/
/**
 * show-hide-transition.js:
 *
 * Manages initial opening or closing transition.
 *
 * If you're not planning to use transition for gallery at all,
 * you may set options hideAnimationDuration and showAnimationDuration to 0,
 * and just delete startAnimation function.
 * 
 */


var _showOrHideTimeout,
	_showOrHide = function(item, img, out, completeFn) {

		if(_showOrHideTimeout) {
			clearTimeout(_showOrHideTimeout);
		}

		_initialZoomRunning = true;
		_initialContentSet = true;
		
		// dimensions of small thumbnail {x:,y:,w:}.
		// Height is optional, as calculated based on large image.
		var thumbBounds; 
		if(item.initialLayout) {
			thumbBounds = item.initialLayout;
			item.initialLayout = null;
		} else {
			thumbBounds = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);
		}

		var duration = out ? _options.hideAnimationDuration : _options.showAnimationDuration;

		var onComplete = function() {
			_stopAnimation('initialZoom');
			if(!out) {
				_applyBgOpacity(1);
				if(img) {
					img.style.display = 'block';
				}
				framework.addClass(template, 'pswp--animated-in');
				_shout('initialZoom' + (out ? 'OutEnd' : 'InEnd'));
			} else {
				self.template.removeAttribute('style');
				self.bg.removeAttribute('style');
			}

			if(completeFn) {
				completeFn();
			}
			_initialZoomRunning = false;
		};

		// if bounds aren't provided, just open gallery without animation
		if(!duration || !thumbBounds || thumbBounds.x === undefined) {

			_shout('initialZoom' + (out ? 'Out' : 'In') );

			_currZoomLevel = item.initialZoomLevel;
			_equalizePoints(_panOffset,  item.initialPosition );
			_applyCurrentZoomPan();

			template.style.opacity = out ? 0 : 1;
			_applyBgOpacity(1);

			if(duration) {
				setTimeout(function() {
					onComplete();
				}, duration);
			} else {
				onComplete();
			}

			return;
		}

		var startAnimation = function() {
			var closeWithRaf = _closedByScroll,
				fadeEverything = !self.currItem.src || self.currItem.loadError || _options.showHideOpacity;
			
			// apply hw-acceleration to image
			if(item.miniImg) {
				item.miniImg.style.webkitBackfaceVisibility = 'hidden';
			}

			if(!out) {
				_currZoomLevel = thumbBounds.w / item.w;
				_panOffset.x = thumbBounds.x;
				_panOffset.y = thumbBounds.y - _initalWindowScrollY;

				self[fadeEverything ? 'template' : 'bg'].style.opacity = 0.001;
				_applyCurrentZoomPan();
			}

			_registerStartAnimation('initialZoom');
			
			if(out && !closeWithRaf) {
				framework.removeClass(template, 'pswp--animated-in');
			}

			if(fadeEverything) {
				if(out) {
					framework[ (closeWithRaf ? 'remove' : 'add') + 'Class' ](template, 'pswp--animate_opacity');
				} else {
					setTimeout(function() {
						framework.addClass(template, 'pswp--animate_opacity');
					}, 30);
				}
			}

			_showOrHideTimeout = setTimeout(function() {

				_shout('initialZoom' + (out ? 'Out' : 'In') );
				

				if(!out) {

					// "in" animation always uses CSS transitions (instead of rAF).
					// CSS transition work faster here, 
					// as developer may also want to animate other things, 
					// like ui on top of sliding area, which can be animated just via CSS
					
					_currZoomLevel = item.initialZoomLevel;
					_equalizePoints(_panOffset,  item.initialPosition );
					_applyCurrentZoomPan();
					_applyBgOpacity(1);

					if(fadeEverything) {
						template.style.opacity = 1;
					} else {
						_applyBgOpacity(1);
					}

					_showOrHideTimeout = setTimeout(onComplete, duration + 20);
				} else {

					// "out" animation uses rAF only when PhotoSwipe is closed by browser scroll, to recalculate position
					var destZoomLevel = thumbBounds.w / item.w,
						initialPanOffset = {
							x: _panOffset.x,
							y: _panOffset.y
						},
						initialZoomLevel = _currZoomLevel,
						initalBgOpacity = _bgOpacity,
						onUpdate = function(now) {
							
							if(now === 1) {
								_currZoomLevel = destZoomLevel;
								_panOffset.x = thumbBounds.x;
								_panOffset.y = thumbBounds.y  - _currentWindowScrollY;
							} else {
								_currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;
								_panOffset.x = (thumbBounds.x - initialPanOffset.x) * now + initialPanOffset.x;
								_panOffset.y = (thumbBounds.y - _currentWindowScrollY - initialPanOffset.y) * now + initialPanOffset.y;
							}
							
							_applyCurrentZoomPan();
							if(fadeEverything) {
								template.style.opacity = 1 - now;
							} else {
								_applyBgOpacity( initalBgOpacity - now * initalBgOpacity );
							}
						};

					if(closeWithRaf) {
						_animateProp('initialZoom', 0, 1, duration, framework.easing.cubic.out, onUpdate, onComplete);
					} else {
						onUpdate(1);
						_showOrHideTimeout = setTimeout(onComplete, duration + 20);
					}
				}
			
			}, out ? 25 : 90); // Main purpose of this delay is to give browser time to paint and
					// create composite layers of PhotoSwipe UI parts (background, controls, caption, arrows).
					// Which avoids lag at the beginning of scale transition.
		};
		startAnimation();

		
	};

/*>>show-hide-transition*/

/*>>items-controller*/
/**
*
* Controller manages gallery items, their dimensions, and their content.
* 
*/

var _items,
	_tempPanAreaSize = {},
	_imagesToAppendPool = [],
	_initialContentSet,
	_initialZoomRunning,
	_controllerDefaultOptions = {
		index: 0,
		errorMsg: '<div class="pswp__error-msg"><a href="%url%" target="_blank">The image</a> could not be loaded.</div>',
		forceProgressiveLoading: false, // TODO
		preload: [1,1],
		getNumItemsFn: function() {
			return _items.length;
		}
	};


var _getItemAt,
	_getNumItems,
	_initialIsLoop,
	_getZeroBounds = function() {
		return {
			center:{x:0,y:0}, 
			max:{x:0,y:0}, 
			min:{x:0,y:0}
		};
	},
	_calculateSingleItemPanBounds = function(item, realPanElementW, realPanElementH ) {
		var bounds = item.bounds;

		// position of element when it's centered
		bounds.center.x = Math.round((_tempPanAreaSize.x - realPanElementW) / 2);
		bounds.center.y = Math.round((_tempPanAreaSize.y - realPanElementH) / 2) + item.vGap.top;

		// maximum pan position
		bounds.max.x = (realPanElementW > _tempPanAreaSize.x) ? 
							Math.round(_tempPanAreaSize.x - realPanElementW) : 
							bounds.center.x;
		
		bounds.max.y = (realPanElementH > _tempPanAreaSize.y) ? 
							Math.round(_tempPanAreaSize.y - realPanElementH) + item.vGap.top : 
							bounds.center.y;
		
		// minimum pan position
		bounds.min.x = (realPanElementW > _tempPanAreaSize.x) ? 0 : bounds.center.x;
		bounds.min.y = (realPanElementH > _tempPanAreaSize.y) ? item.vGap.top : bounds.center.y;
	},
	_calculateItemSize = function(item, viewportSize, zoomLevel) {

		if (item.src && !item.loadError) {
			var isInitial = !zoomLevel;
			
			if(isInitial) {
				if(!item.vGap) {
					item.vGap = {top:0,bottom:0};
				}
				// allows overriding vertical margin for individual items
				_shout('parseVerticalMargin', item);
			}


			_tempPanAreaSize.x = viewportSize.x;
			_tempPanAreaSize.y = viewportSize.y - item.vGap.top - item.vGap.bottom;

			if (isInitial) {
				var hRatio = _tempPanAreaSize.x / item.w;
				var vRatio = _tempPanAreaSize.y / item.h;

				item.fitRatio = hRatio < vRatio ? hRatio : vRatio;
				//item.fillRatio = hRatio > vRatio ? hRatio : vRatio;

				var scaleMode = _options.scaleMode;

				if (scaleMode === 'orig') {
					zoomLevel = 1;
				} else if (scaleMode === 'fit') {
					zoomLevel = item.fitRatio;
				}

				if (zoomLevel > 1) {
					zoomLevel = 1;
				}

				item.initialZoomLevel = zoomLevel;
				
				if(!item.bounds) {
					// reuse bounds object
					item.bounds = _getZeroBounds(); 
				}
			}

			if(!zoomLevel) {
				return;
			}

			_calculateSingleItemPanBounds(item, item.w * zoomLevel, item.h * zoomLevel);

			if (isInitial && zoomLevel === item.initialZoomLevel) {
				item.initialPosition = item.bounds.center;
			}

			return item.bounds;
		} else {
			item.w = item.h = 0;
			item.initialZoomLevel = item.fitRatio = 1;
			item.bounds = _getZeroBounds();
			item.initialPosition = item.bounds.center;

			// if it's not image, we return zero bounds (content is not zoomable)
			return item.bounds;
		}
		
	},

	


	_appendImage = function(index, item, baseDiv, img, preventAnimation, keepPlaceholder) {
		

		if(item.loadError) {
			return;
		}

		if(img) {

			item.imageAppended = true;
			_setImageSize(item, img, (item === self.currItem && _renderMaxResolution) );
			
			baseDiv.appendChild(img);

			if(keepPlaceholder) {
				setTimeout(function() {
					if(item && item.loaded && item.placeholder) {
						item.placeholder.style.display = 'none';
						item.placeholder = null;
					}
				}, 500);
			}
		}
	},
	


	_preloadImage = function(item) {
		item.loading = true;
		item.loaded = false;
		var img = item.img = framework.createEl('pswp__img', 'img');
		var onComplete = function() {
			item.loading = false;
			item.loaded = true;

			if(item.loadComplete) {
				item.loadComplete(item);
			} else {
				item.img = null; // no need to store image object
			}
			img.onload = img.onerror = null;
			img = null;
		};
		img.onload = onComplete;
		img.onerror = function() {
			item.loadError = true;
			onComplete();
		};		

		img.src = item.src;// + '?a=' + Math.random();

		return img;
	},
	_checkForError = function(item, cleanUp) {
		if(item.src && item.loadError && item.container) {

			if(cleanUp) {
				item.container.innerHTML = '';
			}

			item.container.innerHTML = _options.errorMsg.replace('%url%',  item.src );
			return true;
			
		}
	},
	_setImageSize = function(item, img, maxRes) {
		if(!item.src) {
			return;
		}

		if(!img) {
			img = item.container.lastChild;
		}

		var w = maxRes ? item.w : Math.round(item.w * item.fitRatio),
			h = maxRes ? item.h : Math.round(item.h * item.fitRatio);
		
		if(item.placeholder && !item.loaded) {
			item.placeholder.style.width = w + 'px';
			item.placeholder.style.height = h + 'px';
		}

		img.style.width = w + 'px';
		img.style.height = h + 'px';
	},
	_appendImagesPool = function() {

		if(_imagesToAppendPool.length) {
			var poolItem;

			for(var i = 0; i < _imagesToAppendPool.length; i++) {
				poolItem = _imagesToAppendPool[i];
				if( poolItem.holder.index === poolItem.index ) {
					_appendImage(poolItem.index, poolItem.item, poolItem.baseDiv, poolItem.img, false, poolItem.clearPlaceholder);
				}
			}
			_imagesToAppendPool = [];
		}
	};
	


_registerModule('Controller', {

	publicMethods: {

		lazyLoadItem: function(index) {
			index = _getLoopedId(index);
			var item = _getItemAt(index);

			if(!item || ((item.loaded || item.loading) && !_itemsNeedUpdate)) {
				return;
			}

			_shout('gettingData', index, item);

			if (!item.src) {
				return;
			}

			_preloadImage(item);
		},
		initController: function() {
			framework.extend(_options, _controllerDefaultOptions, true);
			self.items = _items = items;
			_getItemAt = self.getItemAt;
			_getNumItems = _options.getNumItemsFn; //self.getNumItems;



			_initialIsLoop = _options.loop;
			if(_getNumItems() < 3) {
				_options.loop = false; // disable loop if less then 3 items
			}

			_listen('beforeChange', function(diff) {

				var p = _options.preload,
					isNext = diff === null ? true : (diff >= 0),
					preloadBefore = Math.min(p[0], _getNumItems() ),
					preloadAfter = Math.min(p[1], _getNumItems() ),
					i;


				for(i = 1; i <= (isNext ? preloadAfter : preloadBefore); i++) {
					self.lazyLoadItem(_currentItemIndex+i);
				}
				for(i = 1; i <= (isNext ? preloadBefore : preloadAfter); i++) {
					self.lazyLoadItem(_currentItemIndex-i);
				}
			});

			_listen('initialLayout', function() {
				self.currItem.initialLayout = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);
			});

			_listen('mainScrollAnimComplete', _appendImagesPool);
			_listen('initialZoomInEnd', _appendImagesPool);



			_listen('destroy', function() {
				var item;
				for(var i = 0; i < _items.length; i++) {
					item = _items[i];
					// remove reference to DOM elements, for GC
					if(item.container) {
						item.container = null; 
					}
					if(item.placeholder) {
						item.placeholder = null;
					}
					if(item.img) {
						item.img = null;
					}
					if(item.preloader) {
						item.preloader = null;
					}
					if(item.loadError) {
						item.loaded = item.loadError = false;
					}
				}
				_imagesToAppendPool = null;
			});
		},


		getItemAt: function(index) {
			if (index >= 0) {
				return _items[index] !== undefined ? _items[index] : false;
			}
			return false;
		},

		allowProgressiveImg: function() {
			// 1. Progressive image loading isn't working on webkit/blink 
			//    when hw-acceleration (e.g. translateZ) is applied to IMG element.
			//    That's why in PhotoSwipe parent element gets zoom transform, not image itself.
			//    
			// 2. Progressive image loading sometimes blinks in webkit/blink when applying animation to parent element.
			//    That's why it's disabled on touch devices (mainly because of swipe transition)
			//    
			// 3. Progressive image loading sometimes doesn't work in IE (up to 11).

			// Don't allow progressive loading on non-large touch devices
			return _options.forceProgressiveLoading || !_likelyTouchDevice || _options.mouseUsed || screen.width > 1200; 
			// 1200 - to eliminate touch devices with large screen (like Chromebook Pixel)
		},

		setContent: function(holder, index) {

			if(_options.loop) {
				index = _getLoopedId(index);
			}

			var prevItem = self.getItemAt(holder.index);
			if(prevItem) {
				prevItem.container = null;
			}
	
			var item = self.getItemAt(index),
				img;
			
			if(!item) {
				holder.el.innerHTML = '';
				return;
			}

			// allow to override data
			_shout('gettingData', index, item);

			holder.index = index;
			holder.item = item;

			// base container DIV is created only once for each of 3 holders
			var baseDiv = item.container = framework.createEl('pswp__zoom-wrap'); 

			

			if(!item.src && item.html) {
				if(item.html.tagName) {
					baseDiv.appendChild(item.html);
				} else {
					baseDiv.innerHTML = item.html;
				}
			}

			_checkForError(item);

			_calculateItemSize(item, _viewportSize);
			
			if(item.src && !item.loadError && !item.loaded) {

				item.loadComplete = function(item) {

					// gallery closed before image finished loading
					if(!_isOpen) {
						return;
					}

					// check if holder hasn't changed while image was loading
					if(holder && holder.index === index ) {
						if( _checkForError(item, true) ) {
							item.loadComplete = item.img = null;
							_calculateItemSize(item, _viewportSize);
							_applyZoomPanToItem(item);

							if(holder.index === _currentItemIndex) {
								// recalculate dimensions
								self.updateCurrZoomItem();
							}
							return;
						}
						if( !item.imageAppended ) {
							if(_features.transform && (_mainScrollAnimating || _initialZoomRunning) ) {
								_imagesToAppendPool.push({
									item:item,
									baseDiv:baseDiv,
									img:item.img,
									index:index,
									holder:holder,
									clearPlaceholder:true
								});
							} else {
								_appendImage(index, item, baseDiv, item.img, _mainScrollAnimating || _initialZoomRunning, true);
							}
						} else {
							// remove preloader & mini-img
							if(!_initialZoomRunning && item.placeholder) {
								item.placeholder.style.display = 'none';
								item.placeholder = null;
							}
						}
					}

					item.loadComplete = null;
					item.img = null; // no need to store image element after it's added

					_shout('imageLoadComplete', index, item);
				};

				if(framework.features.transform) {
					
					var placeholderClassName = 'pswp__img pswp__img--placeholder'; 
					placeholderClassName += (item.msrc ? '' : ' pswp__img--placeholder--blank');

					var placeholder = framework.createEl(placeholderClassName, item.msrc ? 'img' : '');
					if(item.msrc) {
						placeholder.src = item.msrc;
					}
					
					_setImageSize(item, placeholder);

					baseDiv.appendChild(placeholder);
					item.placeholder = placeholder;

				}
				

				

				if(!item.loading) {
					_preloadImage(item);
				}


				if( self.allowProgressiveImg() ) {
					// just append image
					if(!_initialContentSet && _features.transform) {
						_imagesToAppendPool.push({
							item:item, 
							baseDiv:baseDiv, 
							img:item.img, 
							index:index, 
							holder:holder
						});
					} else {
						_appendImage(index, item, baseDiv, item.img, true, true);
					}
				}
				
			} else if(item.src && !item.loadError) {
				// image object is created every time, due to bugs of image loading & delay when switching images
				img = framework.createEl('pswp__img', 'img');
				img.style.opacity = 1;
				img.src = item.src;
				_setImageSize(item, img);
				_appendImage(index, item, baseDiv, img, true);
			}
			

			if(!_initialContentSet && index === _currentItemIndex) {
				_currZoomElementStyle = baseDiv.style;
				_showOrHide(item, (img ||item.img) );
			} else {
				_applyZoomPanToItem(item);
			}

			holder.el.innerHTML = '';
			holder.el.appendChild(baseDiv);
		},

		cleanSlide: function( item ) {
			if(item.img ) {
				item.img.onload = item.img.onerror = null;
			}
			item.loaded = item.loading = item.img = item.imageAppended = false;
		}

	}
});

/*>>items-controller*/

/*>>tap*/
/**
 * tap.js:
 *
 * Displatches tap and double-tap events.
 * 
 */

var tapTimer,
	tapReleasePoint = {},
	_dispatchTapEvent = function(origEvent, releasePoint, pointerType) {		
		var e = document.createEvent( 'CustomEvent' ),
			eDetail = {
				origEvent:origEvent, 
				target:origEvent.target, 
				releasePoint: releasePoint, 
				pointerType:pointerType || 'touch'
			};

		e.initCustomEvent( 'pswpTap', true, true, eDetail );
		origEvent.target.dispatchEvent(e);
	};

_registerModule('Tap', {
	publicMethods: {
		initTap: function() {
			_listen('firstTouchStart', self.onTapStart);
			_listen('touchRelease', self.onTapRelease);
			_listen('destroy', function() {
				tapReleasePoint = {};
				tapTimer = null;
			});
		},
		onTapStart: function(touchList) {
			if(touchList.length > 1) {
				clearTimeout(tapTimer);
				tapTimer = null;
			}
		},
		onTapRelease: function(e, releasePoint) {
			if(!releasePoint) {
				return;
			}

			if(!_moved && !_isMultitouch && !_numAnimations) {
				var p0 = releasePoint;
				if(tapTimer) {
					clearTimeout(tapTimer);
					tapTimer = null;

					// Check if taped on the same place
					if ( _isNearbyPoints(p0, tapReleasePoint) ) {
						_shout('doubleTap', p0);
						return;
					}
				}

				if(releasePoint.type === 'mouse') {
					_dispatchTapEvent(e, releasePoint, 'mouse');
					return;
				}

				var clickedTagName = e.target.tagName.toUpperCase();
				// avoid double tap delay on buttons and elements that have class pswp__single-tap
				if(clickedTagName === 'BUTTON' || framework.hasClass(e.target, 'pswp__single-tap') ) {
					_dispatchTapEvent(e, releasePoint);
					return;
				}

				_equalizePoints(tapReleasePoint, p0);

				tapTimer = setTimeout(function() {
					_dispatchTapEvent(e, releasePoint);
					tapTimer = null;
				}, 300);
			}
		}
	}
});

/*>>tap*/

/*>>desktop-zoom*/
/**
 *
 * desktop-zoom.js:
 *
 * - Binds mousewheel event for paning zoomed image.
 * - Manages "dragging", "zoomed-in", "zoom-out" classes.
 *   (which are used for cursors and zoom icon)
 * - Adds toggleDesktopZoom function.
 * 
 */

var _wheelDelta;
	
_registerModule('DesktopZoom', {

	publicMethods: {

		initDesktopZoom: function() {

			if(_oldIE) {
				// no zoom for old IE (<=8)
				return;
			}

			if(_likelyTouchDevice) {
				// if detected hardware touch support, we wait until mouse is used,
				// and only then apply desktop-zoom features
				_listen('mouseUsed', function() {
					self.setupDesktopZoom();
				});
			} else {
				self.setupDesktopZoom(true);
			}

		},

		setupDesktopZoom: function(onInit) {

			_wheelDelta = {};

			var events = 'wheel mousewheel DOMMouseScroll';
			
			_listen('bindEvents', function() {
				framework.bind(template, events,  self.handleMouseWheel);
			});

			_listen('unbindEvents', function() {
				if(_wheelDelta) {
					framework.unbind(template, events, self.handleMouseWheel);
				}
			});

			self.mouseZoomedIn = false;

			var hasDraggingClass,
				updateZoomable = function() {
					if(self.mouseZoomedIn) {
						framework.removeClass(template, 'pswp--zoomed-in');
						self.mouseZoomedIn = false;
					}
					if(_currZoomLevel < 1) {
						framework.addClass(template, 'pswp--zoom-allowed');
					} else {
						framework.removeClass(template, 'pswp--zoom-allowed');
					}
					removeDraggingClass();
				},
				removeDraggingClass = function() {
					if(hasDraggingClass) {
						framework.removeClass(template, 'pswp--dragging');
						hasDraggingClass = false;
					}
				};

			_listen('resize' , updateZoomable);
			_listen('afterChange' , updateZoomable);
			_listen('pointerDown', function() {
				if(self.mouseZoomedIn) {
					hasDraggingClass = true;
					framework.addClass(template, 'pswp--dragging');
				}
			});
			_listen('pointerUp', removeDraggingClass);

			if(!onInit) {
				updateZoomable();
			}
			
		},

		handleMouseWheel: function(e) {

			if(_currZoomLevel <= self.currItem.fitRatio) {
				if( _options.modal ) {

					if (!_options.closeOnScroll || _numAnimations || _isDragging) {
						e.preventDefault();
					} else if(_transformKey && Math.abs(e.deltaY) > 2) {
						// close PhotoSwipe
						// if browser supports transforms & scroll changed enough
						_closedByScroll = true;
						self.close();
					}

				}
				return true;
			}

			// allow just one event to fire
			e.stopPropagation();

			// https://developer.mozilla.org/en-US/docs/Web/Events/wheel
			_wheelDelta.x = 0;

			if('deltaX' in e) {
				if(e.deltaMode === 1 /* DOM_DELTA_LINE */) {
					// 18 - average line height
					_wheelDelta.x = e.deltaX * 18;
					_wheelDelta.y = e.deltaY * 18;
				} else {
					_wheelDelta.x = e.deltaX;
					_wheelDelta.y = e.deltaY;
				}
			} else if('wheelDelta' in e) {
				if(e.wheelDeltaX) {
					_wheelDelta.x = -0.16 * e.wheelDeltaX;
				}
				if(e.wheelDeltaY) {
					_wheelDelta.y = -0.16 * e.wheelDeltaY;
				} else {
					_wheelDelta.y = -0.16 * e.wheelDelta;
				}
			} else if('detail' in e) {
				_wheelDelta.y = e.detail;
			} else {
				return;
			}

			_calculatePanBounds(_currZoomLevel, true);

			var newPanX = _panOffset.x - _wheelDelta.x,
				newPanY = _panOffset.y - _wheelDelta.y;

			// only prevent scrolling in nonmodal mode when not at edges
			if (_options.modal ||
				(
				newPanX <= _currPanBounds.min.x && newPanX >= _currPanBounds.max.x &&
				newPanY <= _currPanBounds.min.y && newPanY >= _currPanBounds.max.y
				) ) {
				e.preventDefault();
			}

			// TODO: use rAF instead of mousewheel?
			self.panTo(newPanX, newPanY);
		},

		toggleDesktopZoom: function(centerPoint) {
			centerPoint = centerPoint || {x:_viewportSize.x/2 + _offset.x, y:_viewportSize.y/2 + _offset.y };

			var doubleTapZoomLevel = _options.getDoubleTapZoom(true, self.currItem);
			var zoomOut = _currZoomLevel === doubleTapZoomLevel;
			
			self.mouseZoomedIn = !zoomOut;

			self.zoomTo(zoomOut ? self.currItem.initialZoomLevel : doubleTapZoomLevel, centerPoint, 333);
			framework[ (!zoomOut ? 'add' : 'remove') + 'Class'](template, 'pswp--zoomed-in');
		}

	}
});


/*>>desktop-zoom*/

/*>>history*/
/**
 *
 * history.js:
 *
 * - Back button to close gallery.
 * 
 * - Unique URL for each slide: example.com/&pid=1&gid=3
 *   (where PID is picture index, and GID and gallery index)
 *   
 * - Switch URL when slides change.
 * 
 */


var _historyDefaultOptions = {
	history: true,
	galleryUID: 1
};

var _historyUpdateTimeout,
	_hashChangeTimeout,
	_hashAnimCheckTimeout,
	_hashChangedByScript,
	_hashChangedByHistory,
	_hashReseted,
	_initialHash,
	_historyChanged,
	_closedFromURL,
	_urlChangedOnce,
	_windowLoc,

	_supportsPushState,

	_getHash = function() {
		return _windowLoc.hash.substring(1);
	},
	_cleanHistoryTimeouts = function() {

		if(_historyUpdateTimeout) {
			clearTimeout(_historyUpdateTimeout);
		}

		if(_hashAnimCheckTimeout) {
			clearTimeout(_hashAnimCheckTimeout);
		}
	},

	// pid - Picture index
	// gid - Gallery index
	_parseItemIndexFromURL = function() {
		var hash = _getHash(),
			params = {};

		if(hash.length < 5) { // pid=1
			return params;
		}

		var i, vars = hash.split('&');
		for (i = 0; i < vars.length; i++) {
			if(!vars[i]) {
				continue;
			}
			var pair = vars[i].split('=');	
			if(pair.length < 2) {
				continue;
			}
			params[pair[0]] = pair[1];
		}
		if(_options.galleryPIDs) {
			// detect custom pid in hash and search for it among the items collection
			var searchfor = params.pid;
			params.pid = 0; // if custom pid cannot be found, fallback to the first item
			for(i = 0; i < _items.length; i++) {
				if(_items[i].pid === searchfor) {
					params.pid = i;
					break;
				}
			}
		} else {
			params.pid = parseInt(params.pid,10)-1;
		}
		if( params.pid < 0 ) {
			params.pid = 0;
		}
		return params;
	},
	_updateHash = function() {

		if(_hashAnimCheckTimeout) {
			clearTimeout(_hashAnimCheckTimeout);
		}


		if(_numAnimations || _isDragging) {
			// changing browser URL forces layout/paint in some browsers, which causes noticable lag during animation
			// that's why we update hash only when no animations running
			_hashAnimCheckTimeout = setTimeout(_updateHash, 500);
			return;
		}
		
		if(_hashChangedByScript) {
			clearTimeout(_hashChangeTimeout);
		} else {
			_hashChangedByScript = true;
		}


		var pid = (_currentItemIndex + 1);
		var item = _getItemAt( _currentItemIndex );
		if(item.hasOwnProperty('pid')) {
			// carry forward any custom pid assigned to the item
			pid = item.pid;
		}
		var newHash = _initialHash + '&'  +  'gid=' + _options.galleryUID + '&' + 'pid=' + pid;

		if(!_historyChanged) {
			if(_windowLoc.hash.indexOf(newHash) === -1) {
				_urlChangedOnce = true;
			}
			// first time - add new hisory record, then just replace
		}

		var newURL = _windowLoc.href.split('#')[0] + '#' +  newHash;

		if( _supportsPushState ) {

			if('#' + newHash !== window.location.hash) {
				history[_historyChanged ? 'replaceState' : 'pushState']('', document.title, newURL);
			}

		} else {
			if(_historyChanged) {
				_windowLoc.replace( newURL );
			} else {
				_windowLoc.hash = newHash;
			}
		}
		
		

		_historyChanged = true;
		_hashChangeTimeout = setTimeout(function() {
			_hashChangedByScript = false;
		}, 60);
	};



	

_registerModule('History', {

	

	publicMethods: {
		initHistory: function() {

			framework.extend(_options, _historyDefaultOptions, true);

			if( !_options.history ) {
				return;
			}


			_windowLoc = window.location;
			_urlChangedOnce = false;
			_closedFromURL = false;
			_historyChanged = false;
			_initialHash = _getHash();
			_supportsPushState = ('pushState' in history);


			if(_initialHash.indexOf('gid=') > -1) {
				_initialHash = _initialHash.split('&gid=')[0];
				_initialHash = _initialHash.split('?gid=')[0];
			}
			

			_listen('afterChange', self.updateURL);
			_listen('unbindEvents', function() {
				framework.unbind(window, 'hashchange', self.onHashChange);
			});


			var returnToOriginal = function() {
				_hashReseted = true;
				if(!_closedFromURL) {

					if(_urlChangedOnce) {
						history.back();
					} else {

						if(_initialHash) {
							_windowLoc.hash = _initialHash;
						} else {
							if (_supportsPushState) {

								// remove hash from url without refreshing it or scrolling to top
								history.pushState('', document.title,  _windowLoc.pathname + _windowLoc.search );
							} else {
								_windowLoc.hash = '';
							}
						}
					}
					
				}

				_cleanHistoryTimeouts();
			};


			_listen('unbindEvents', function() {
				if(_closedByScroll) {
					// if PhotoSwipe is closed by scroll, we go "back" before the closing animation starts
					// this is done to keep the scroll position
					returnToOriginal();
				}
			});
			_listen('destroy', function() {
				if(!_hashReseted) {
					returnToOriginal();
				}
			});
			_listen('firstUpdate', function() {
				_currentItemIndex = _parseItemIndexFromURL().pid;
			});

			

			
			var index = _initialHash.indexOf('pid=');
			if(index > -1) {
				_initialHash = _initialHash.substring(0, index);
				if(_initialHash.slice(-1) === '&') {
					_initialHash = _initialHash.slice(0, -1);
				}
			}
			

			setTimeout(function() {
				if(_isOpen) { // hasn't destroyed yet
					framework.bind(window, 'hashchange', self.onHashChange);
				}
			}, 40);
			
		},
		onHashChange: function() {

			if(_getHash() === _initialHash) {

				_closedFromURL = true;
				self.close();
				return;
			}
			if(!_hashChangedByScript) {

				_hashChangedByHistory = true;
				self.goTo( _parseItemIndexFromURL().pid );
				_hashChangedByHistory = false;
			}
			
		},
		updateURL: function() {

			// Delay the update of URL, to avoid lag during transition, 
			// and to not to trigger actions like "refresh page sound" or "blinking favicon" to often
			
			_cleanHistoryTimeouts();
			

			if(_hashChangedByHistory) {
				return;
			}

			if(!_historyChanged) {
				_updateHash(); // first time
			} else {
				_historyUpdateTimeout = setTimeout(_updateHash, 800);
			}
		}
	
	}
});


/*>>history*/
	framework.extend(self, publicMethods); };
	return PhotoSwipe;
});

================================================
FILE: addons/photoswipe/PhotoSwipe/pswp.html
================================================
<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

	<!-- Background of PhotoSwipe. 
		 It's a separate element as animating opacity is faster than rgba(). -->
	<div class="pswp__bg"></div>

	<!-- Slides wrapper with overflow:hidden. -->
	<div class="pswp__scroll-wrap">

		<!-- Container that holds slides. 
			PhotoSwipe keeps only 3 of them in the DOM to save memory.
			Don't modify these 3 pswp__item elements, data is added later on. -->
		<div class="pswp__container">
			<div class="pswp__item"></div>
			<div class="pswp__item"></div>
			<div class="pswp__item"></div>
		</div>

		<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
		<div class="pswp__ui pswp__ui--hidden">

			<div class="pswp__top-bar">

				<!--  Controls are self-explanatory. Order can be changed. -->

				<div class="pswp__counter"></div>

				<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>

				<button class="pswp__button pswp__button--share" title="Share"></button>

				<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>

				<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>

				<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
				<!-- element will get class pswp__preloader - active when preloader is running -->
				<div class="pswp__preloader">
					<div class="pswp__preloader__icn">
					  <div class="pswp__preloader__cut">
						<div class="pswp__preloader__donut"></div>
					  </div>
					</div>
				</div>
			</div>

			<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
				<div class="pswp__share-tooltip"></div> 
			</div>

			<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
			</button>

			<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
			</button>

			<div class="pswp__caption">
				<div class="pswp__caption__center"></div>
			</div>

		</div>

	</div>

</div>

================================================
FILE: addons/photoswipe/conf/info.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
	<title xml:lang="ko">넘겨보는 사진</title>
	<title xml:lang="en">PhotoSwipe</title>
	<description xml:lang="ko">
		본문 이미지를 하나의 갤러리 처럼 볼 수 있도록 하는 애드온입니다.
	</description>
	<description xml:lang="en">
		Swipe your images of a post on your screen.
	</description>
	<license>MIT License (codes from http://photoswipe.com/), GPLv2 (other codes by Rhymix contributors)</license>
	<version>RX_VERSION</version>
	<date>RX_CORE</date>

	<author email_address="misol.kr@gmail.com" link="https://github.com/misol">
		<name xml:lang="ko">misol</name>
		<name xml:lang="en">misol</name>
	</author>
	<author email_address="devops@rhymix.org" link="https://github.com/rhymix">
		<name xml:lang="ko">Rhymix contributors</name>
		<name xml:lang="en">Rhymix contributors</name>
	</author>
	<extra_vars>
		<var name="display_name" type="select">
			<title xml:lang="ko">파일이름 출력 설정</title>
			<title xml:lang="en">Display Filenames</title>
			<description xml:lang="ko">넘겨보기 실행시 하단에 파일이름을 출력할 것인지 여부를 선택합니다. 기본값은 사용하도록 되어있습니다.</description>
			<description xml:lang="en">Whether the PhotoSwipe displays the filenames or not. The default is to display.</description>
			<options value="block">
				<title xml:lang="ko">사용</title>
				<title xml:lang="en">Display</title>
			</options>
			<options value="none">
				<title xml:lang="ko">사용 안함</title>
				<title xml:lang="en">Hide</title>
			</options>
		</var>
	</extra_vars>
</addon>


================================================
FILE: addons/photoswipe/photoswipe.addon.php
================================================
<?php
/* Copyright (C) misol and Rhymix contributors */

if(!defined('RX_VERSION'))
{
	exit();
}

/**
 * @file rx_photoswipe.addon.php
 * @author MinSoo Kim <misol.kr@gmail.com>
 * @brief Add-on to highlight an activated image.
 */
if($called_position == 'after_module_proc' && Context::getResponseMethod() == "HTML" && Context::get('module') != 'admin' && !isCrawler())
{
	Context::loadFile(array('./addons/photoswipe/PhotoSwipe/photoswipe.css', '', '', null), true);
	Context::loadFile(array('./addons/photoswipe/PhotoSwipe/default-skin/default-skin.css', '', '', null), true);

	Context::loadFile(array('./addons/photoswipe/PhotoSwipe/photoswipe.js', 'body', '', null), true);
	Context::loadFile(array('./addons/photoswipe/PhotoSwipe/photoswipe-ui-default.js', 'body', '', null), true);
	Context::loadFile(array('./addons/photoswipe/rx_photoswipe.js', 'body', '', null), true);

	$footer = FileHandler::readFile('./addons/photoswipe/PhotoSwipe/pswp.html');

	$style_display = isset($addon_info->display_name) ? "<style>.pswp__caption__center {  display:{$addon_info->display_name} }</style>" : '<style>.pswp__caption__center {  display:block }</style>';

	Context::addHtmlFooter($style_display . $footer);
}

/* End of file photoswipe.addon.php */
/* Location: ./addons/photoswipe/photoswipe.addon.php */


================================================
FILE: addons/photoswipe/rx_photoswipe.js
================================================
/* Modified version of a http://photoswipe.com/documentation/getting-started.html example. Modified by misol for rhymix */
var getPSImageSize = function(el) {
	var size = new Array();
	size[0] = el.naturalWidth ? el.naturalWidth : (el.width ? el.width : 0);
	size[1] = el.naturalHeight ? el.naturalHeight : (el.height ? el.height : 0);
	if (!size[0] || !size[1]) {
		var test = new Image();
		test.src = el.src;
		size[0] = test.naturalWidth ? test.naturalWidth : (test.width ? test.width : 1000);
		size[1] = test.naturalHeight ? test.naturalHeight : (test.height ? test.height : 1000);
	}
	return size;
}

var initPhotoSwipeFromDOM = function(gallerySelector) {
	// photoswipe will skip images that have these classes or are children of these elements.
	var ps_skip_class = '.rx-escape, .photoswipe-escape',
		ps_skip_elements_array = ['a', 'pre', 'xml', 'textarea', 'input', 'select', 'option', 'code', 'script', 'style', 'iframe', 'button', 'img', 'embed', 'object', 'ins'],
		ps_skip_elements = '';
	ps_skip_elements_array.forEach(function(el, i) { ps_skip_elements += el + ' img,'; });

	// Photoswipe will enroll images that have this class, though the image is marked as skip item by criteria above.
	var ps_enroll_class = '.photoswipe-images';

	// CSS selector for photoswipe items.
	var ps_find_selector = 'img:not(' + ps_skip_elements + ps_skip_class + '), img' + ps_enroll_class;

	// parse slide data (url, title, size ...) from DOM elements
	// (children of gallerySelector)
	var parseThumbnailElements = function(el) {
		var imgElements = $(el).find(ps_find_selector),
			numNodes = imgElements.length,
			items = [],
			imgEl,
			size,
			item;

		for(var i = 0; i < numNodes; i++) {

			imgEl = imgElements.get(i); // <img> element

			// include only element nodes
			if (imgEl.nodeType !== 1 || !imgEl.src || !$(imgEl).attr('data-pswp-pid')) {
				continue;
			}

			size = getPSImageSize(imgEl);

			// create slide object
			item = {
				src: $(imgEl).attr('src'),
				w: parseInt( size[0] , 10),
				h: parseInt( size[1] , 10),
				pid: $(imgEl).attr('data-pswp-pid')
			};

			var ps_skip_alt_class = '.photoswipe-no-caption';
			if(imgEl.alt && !$(imgEl).is(ps_skip_alt_class)) {
				item.title = imgEl.alt;
			}

			if(imgEl.title && !$(imgEl).is(ps_skip_alt_class)) {
				item.title = imgEl.title;
			}

			item.el = imgEl; // save link to element for getThumbBoundsFn
			items.push(item);
		}

		return items;
	};

	// find nearest parent element
	var closest = function closest(el, fn) {
		return el && ( fn(el) ? el : closest(el.parentNode, fn) );
	};

	// triggers when user clicks on thumbnail
	var onThumbnailsClick = function(e) {
		var eTarget = e.target || e.srcElement;

		// find root element of slide
		var clickedListItem = closest(eTarget, function(el) {
			return (el.tagName && el.tagName.toUpperCase() === 'IMG' && el.hasAttribute('data-pswp-pid'));
		});

		if(!clickedListItem) {
			return;
		}

		e = e || window.event;
		e.preventDefault ? e.preventDefault() : e.returnValue = false;

		// find index of clicked item by looping through all child nodes
		// alternatively, you may define index via data- attribute
		var clickedGallery = $(clickedListItem).closest(gallerySelector).get(0),
			childNodes = $(clickedGallery).find(ps_find_selector),
			numChildNodes = childNodes.length,
			nodeIndex = 0,
			index;

		/*for (var i = 0; i < numChildNodes; i++) {
			if($(childNodes[i]).attr('data-pswp-pid') === $(clickedListItem).attr('data-pswp-pid')) {
				index = nodeIndex;
				break;
			}
			nodeIndex++;
		}*/

		for (var i = 0; i < numChildNodes; i++) {
			if(childNodes[i].nodeType !== 1 || !$(childNodes[i]).attr('data-pswp-pid')) {
				continue;
			}

			if(childNodes[i] === clickedListItem) {
				index = nodeIndex;
				break;
			}
			nodeIndex++;
		}

		if(index >= 0) {
			// open PhotoSwipe if valid index found
			openPhotoSwipe( index, clickedGallery, false, false);
		}
		return false;
	};

	// parse picture index and gallery index from URL (#&pid=1&gid=2)
	var photoswipeParseHash = function() {
		var hash = window.location.hash.substring(1),
		params = {};

		if(hash.length < 5) {
			return params;
		}

		var vars = hash.split('&');
		for (var i = 0; i < vars.length; i++) {
			if(!vars[i]) {
				continue;
			}
			var pair = vars[i].split('=');
			if(pair.length < 2) {
				continue;
			}
			params[pair[0]] = pair[1];
		}

		if(params.gid) {
			params.gid = parseInt(params.gid, 10);
		}

		return params;
	};

	var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) {
		var pswpElement = document.querySelectorAll('.pswp')[0],
			gallery,
			options,
			items;

		items = parseThumbnailElements(galleryElement);

		// define options (if needed)
		options = {

			// define gallery index (for URL)
			galleryUID: galleryElement.getAttribute('data-pswp-uid'),

			getThumbBoundsFn: function(index) {
				// See Options -> getThumbBoundsFn section of documentation for more info
				var thumbnail = items[index].el,
					pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
					rect = thumbnail.getBoundingClientRect();

				return {x:rect.left, y:rect.top + pageYScroll, w:rect.width};
			},

			addCaptionHTMLFn: function(item, captionEl, isFake) {
				if(!item.title) {
					captionEl.children[0].innerText = '';
					return false;
				}
				captionEl.children[0].innerHTML = item.title;
				return true;
			},

		};

		// PhotoSwipe opened from URL
		if(fromURL) {
			if(options.galleryPIDs) {
				// parse real index when custom PIDs are used
				// http://photoswipe.com/documentation/faq.html#custom-pid-in-url
				for(var j = 0; j < items.length; j++) {
					if(items[j].pid == index) {
						options.index = j;
						break;
					}
				}
			} else {
				// in URL indexes start from 1
				options.index = parseInt(index, 10) - 1;
			}
		} else {
			options.index = parseInt(index, 10);
		}

		// exit if index not found
		if( isNaN(options.index) ) {
			return;
		}

		if(disableAnimation) {
			options.showAnimationDuration = 0;
		}

		// Pass data to PhotoSwipe and initialize it
		gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
		gallery.init();
	};

	// loop through all gallery elements and bind events
	var galleryElements = document.querySelectorAll
Download .txt
Showing preview only (278K chars total). Download the full file or copy to clipboard to get everything.
gitextract_2yj37nij/

├── .editorconfig
├── .gitattributes
├── .github/
│   └── workflows/
│       ├── ci.yml
│       ├── setup-mysql.sh
│       └── setup-php.sh
├── .gitignore
├── .htaccess
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── addons/
│   ├── adminlogging/
│   │   ├── adminlogging.addon.php
│   │   └── conf/
│   │       └── info.xml
│   ├── autolink/
│   │   ├── autolink.addon.php
│   │   ├── autolink.js
│   │   ├── autolink.spec.html
│   │   └── conf/
│   │       └── info.xml
│   ├── counter/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   └── counter.addon.php
│   ├── member_extra_info/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── member_extra_info.addon.php
│   │   └── member_extra_info.lib.php
│   ├── photoswipe/
│   │   ├── PhotoSwipe/
│   │   │   ├── LICENSE
│   │   │   ├── default-skin/
│   │   │   │   └── default-skin.css
│   │   │   ├── photoswipe-ui-default.js
│   │   │   ├── photoswipe.css
│   │   │   ├── photoswipe.js
│   │   │   └── pswp.html
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── photoswipe.addon.php
│   │   └── rx_photoswipe.js
│   └── point_level_icon/
│       ├── conf/
│       │   └── info.xml
│       ├── point_level_icon.addon.php
│       └── point_level_icon.lib.php
├── classes/
│   ├── cache/
│   │   └── CacheHandler.class.php
│   ├── context/
│   │   └── Context.class.php
│   ├── db/
│   │   └── DB.class.php
│   ├── display/
│   │   ├── DisplayHandler.class.php
│   │   ├── HTMLDisplayHandler.php
│   │   ├── JSCallbackDisplayHandler.php
│   │   ├── JSONDisplayHandler.php
│   │   ├── RawDisplayHandler.php
│   │   ├── VirtualXMLDisplayHandler.php
│   │   └── XMLDisplayHandler.php
│   ├── editor/
│   │   └── EditorHandler.class.php
│   ├── extravar/
│   │   └── Extravar.class.php
│   ├── file/
│   │   ├── FileHandler.class.php
│   │   └── FileObject.class.php
│   ├── frontendfile/
│   │   └── FrontEndFileHandler.class.php
│   ├── handler/
│   │   └── Handler.class.php
│   ├── httprequest/
│   │   └── XEHttpRequest.class.php
│   ├── mail/
│   │   └── Mail.class.php
│   ├── mobile/
│   │   └── Mobile.class.php
│   ├── module/
│   │   ├── ModuleHandler.class.php
│   │   └── ModuleObject.class.php
│   ├── object/
│   │   └── Object.class.php
│   ├── page/
│   │   └── PageHandler.class.php
│   ├── security/
│   │   ├── EmbedFilter.class.php
│   │   ├── IpFilter.class.php
│   │   ├── Password.class.php
│   │   ├── Purifier.class.php
│   │   ├── Security.class.php
│   │   └── UploadFileFilter.class.php
│   ├── template/
│   │   └── TemplateHandler.class.php
│   ├── validator/
│   │   └── Validator.class.php
│   ├── widget/
│   │   └── WidgetHandler.class.php
│   └── xml/
│       ├── GeneralXmlParser.class.php
│       ├── XmlGenerator.class.php
│       ├── XmlJsFilter.class.php
│       ├── XmlLangParser.class.php
│       └── XmlParser.class.php
├── codeception.dist.yml
├── common/
│   ├── autoload.php
│   ├── composer.json
│   ├── constants.php
│   ├── css/
│   │   ├── bootstrap-responsive.css
│   │   ├── bootstrap.css
│   │   ├── rhymix.scss
│   │   └── xeicon/
│   │       ├── README.md
│   │       └── xeicon.css
│   ├── defaults/
│   │   ├── blacklist.php
│   │   ├── cloudflare.php
│   │   ├── config.php
│   │   ├── countries.php
│   │   ├── korea.ipv4.php
│   │   ├── korea.ipv6.php
│   │   ├── korea_ip_ranges/
│   │   │   ├── korea.ipv4.parser.php
│   │   │   └── korea.ipv6.parser.php
│   │   ├── locales.php
│   │   ├── plugins.php
│   │   ├── reserved.php
│   │   └── whitelist.php
│   ├── framework/
│   │   ├── Cache.php
│   │   ├── Calendar.php
│   │   ├── Config.php
│   │   ├── Cookie.php
│   │   ├── DB.php
│   │   ├── DateTime.php
│   │   ├── Debug.php
│   │   ├── Exception.php
│   │   ├── Formatter.php
│   │   ├── HTTP.php
│   │   ├── Image.php
│   │   ├── Korea.php
│   │   ├── Lang.php
│   │   ├── MIME.php
│   │   ├── Mail.php
│   │   ├── Pagination.php
│   │   ├── Password.php
│   │   ├── Push.php
│   │   ├── Queue.php
│   │   ├── Request.php
│   │   ├── Router.php
│   │   ├── SMS.php
│   │   ├── Security.php
│   │   ├── Session.php
│   │   ├── Storage.php
│   │   ├── Template.php
│   │   ├── Timer.php
│   │   ├── UA.php
│   │   ├── URL.php
│   │   ├── drivers/
│   │   │   ├── CacheInterface.php
│   │   │   ├── MailInterface.php
│   │   │   ├── PushInterface.php
│   │   │   ├── QueueInterface.php
│   │   │   ├── SMSInterface.php
│   │   │   ├── cache/
│   │   │   │   ├── apc.php
│   │   │   │   ├── dummy.php
│   │   │   │   ├── file.php
│   │   │   │   ├── memcached.php
│   │   │   │   ├── redis.php
│   │   │   │   └── sqlite.php
│   │   │   ├── mail/
│   │   │   │   ├── base.php
│   │   │   │   ├── brevo.php
│   │   │   │   ├── dummy.php
│   │   │   │   ├── mailfunction.php
│   │   │   │   ├── mailgun.php
│   │   │   │   ├── mandrill.php
│   │   │   │   ├── ncloud_mailer.php
│   │   │   │   ├── postmark.php
│   │   │   │   ├── sendgrid.php
│   │   │   │   ├── ses.php
│   │   │   │   ├── smtp.php
│   │   │   │   ├── sparkpost.php
│   │   │   │   └── woorimail.php
│   │   │   ├── push/
│   │   │   │   ├── apns.php
│   │   │   │   ├── base.php
│   │   │   │   ├── fcm.php
│   │   │   │   └── fcmv1.php
│   │   │   ├── queue/
│   │   │   │   ├── db.php
│   │   │   │   ├── dummy.php
│   │   │   │   └── redis.php
│   │   │   └── sms/
│   │   │       ├── base.php
│   │   │       ├── coolsms.php
│   │   │       ├── dummy.php
│   │   │       ├── iwinv.php
│   │   │       ├── ncloud_sens.php
│   │   │       ├── ppurio.php
│   │   │       ├── solapi.php
│   │   │       └── twilio.php
│   │   ├── exceptions/
│   │   │   ├── DBError.php
│   │   │   ├── FeatureDisabled.php
│   │   │   ├── InvalidRequest.php
│   │   │   ├── MustLogin.php
│   │   │   ├── NotPermitted.php
│   │   │   ├── QueryError.php
│   │   │   ├── SecurityViolation.php
│   │   │   └── TargetNotFound.php
│   │   ├── filters/
│   │   │   ├── FileContentFilter.php
│   │   │   ├── FilenameFilter.php
│   │   │   ├── HTMLFilter.php
│   │   │   ├── IpFilter.php
│   │   │   └── MediaFilter.php
│   │   ├── helpers/
│   │   │   ├── CacheItemHelper.php
│   │   │   ├── CacheItemPoolHelper.php
│   │   │   ├── ConfigHelper.php
│   │   │   ├── DBHelper.php
│   │   │   ├── DBResultHelper.php
│   │   │   ├── DBStmtHelper.php
│   │   │   ├── HTTPHelper.php
│   │   │   └── SessionHelper.php
│   │   ├── i18n.php
│   │   └── parsers/
│   │       ├── AddonInfoParser.php
│   │       ├── BaseParser.php
│   │       ├── ConfigParser.php
│   │       ├── DBQueryParser.php
│   │       ├── DBTableParser.php
│   │       ├── EditorComponentParser.php
│   │       ├── LangParser.php
│   │       ├── LayoutInfoParser.php
│   │       ├── ModuleActionParser.php
│   │       ├── ModuleInfoParser.php
│   │       ├── RulesetParser.php
│   │       ├── SkinInfoParser.php
│   │       ├── WidgetInfoParser.php
│   │       ├── WidgetStyleInfoParser.php
│   │       ├── XEXMLParser.php
│   │       ├── XMLRPCParser.php
│   │       ├── dbquery/
│   │       │   ├── ColumnRead.php
│   │       │   ├── ColumnWrite.php
│   │       │   ├── Condition.php
│   │       │   ├── ConditionGroup.php
│   │       │   ├── EmptyString.php
│   │       │   ├── GroupBy.php
│   │       │   ├── IndexHint.php
│   │       │   ├── Navigation.php
│   │       │   ├── NullValue.php
│   │       │   ├── OrderBy.php
│   │       │   ├── Query.php
│   │       │   ├── Table.php
│   │       │   └── VariableBase.php
│   │       ├── dbtable/
│   │       │   ├── Column.php
│   │       │   ├── Constraint.php
│   │       │   ├── GeneratedColumn.php
│   │       │   ├── Index.php
│   │       │   └── Table.php
│   │       └── template/
│   │           ├── TemplateParser_v1.php
│   │           └── TemplateParser_v2.php
│   ├── functions.php
│   ├── js/
│   │   ├── common.js
│   │   ├── debug.js
│   │   ├── jquery-2.2.4.js
│   │   ├── jquery-3.7.1.js
│   │   ├── js_app.js
│   │   ├── modernizr.js
│   │   ├── plugins/
│   │   │   ├── blankshield/
│   │   │   │   └── plugin.load
│   │   │   ├── ckeditor/
│   │   │   │   ├── ckeditor/
│   │   │   │   │   ├── CHANGES.md
│   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── SECURITY.md
│   │   │   │   │   ├── adapters/
│   │   │   │   │   │   └── jquery.js
│   │   │   │   │   ├── bender-runner.config.json
│   │   │   │   │   ├── build-config.js
│   │   │   │   │   ├── ckeditor.js
│   │   │   │   │   ├── contents.css
│   │   │   │   │   ├── lang/
│   │   │   │   │   │   ├── af.js
│   │   │   │   │   │   ├── ar.js
│   │   │   │   │   │   ├── az.js
│   │   │   │   │   │   ├── bg.js
│   │   │   │   │   │   ├── bn.js
│   │   │   │   │   │   ├── bs.js
│   │   │   │   │   │   ├── ca.js
│   │   │   │   │   │   ├── cs.js
│   │   │   │   │   │   ├── cy.js
│   │   │   │   │   │   ├── da.js
│   │   │   │   │   │   ├── de-ch.js
│   │   │   │   │   │   ├── de.js
│   │   │   │   │   │   ├── el.js
│   │   │   │   │   │   ├── en-au.js
│   │   │   │   │   │   ├── en-ca.js
│   │   │   │   │   │   ├── en-gb.js
│   │   │   │   │   │   ├── en.js
│   │   │   │   │   │   ├── eo.js
│   │   │   │   │   │   ├── es-mx.js
│   │   │   │   │   │   ├── es.js
│   │   │   │   │   │   ├── et.js
│   │   │   │   │   │   ├── eu.js
│   │   │   │   │   │   ├── fa.js
│   │   │   │   │   │   ├── fi.js
│   │   │   │   │   │   ├── fo.js
│   │   │   │   │   │   ├── fr-ca.js
│   │   │   │   │   │   ├── fr.js
│   │   │   │   │   │   ├── gl.js
│   │   │   │   │   │   ├── gu.js
│   │   │   │   │   │   ├── he.js
│   │   │   │   │   │   ├── hi.js
│   │   │   │   │   │   ├── hr.js
│   │   │   │   │   │   ├── hu.js
│   │   │   │   │   │   ├── id.js
│   │   │   │   │   │   ├── is.js
│   │   │   │   │   │   ├── it.js
│   │   │   │   │   │   ├── ja.js
│   │   │   │   │   │   ├── ka.js
│   │   │   │   │   │   ├── km.js
│   │   │   │   │   │   ├── ko.js
│   │   │   │   │   │   ├── ku.js
│   │   │   │   │   │   ├── lt.js
│   │   │   │   │   │   ├── lv.js
│   │   │   │   │   │   ├── mk.js
│   │   │   │   │   │   ├── mn.js
│   │   │   │   │   │   ├── ms.js
│   │   │   │   │   │   ├── nb.js
│   │   │   │   │   │   ├── nl.js
│   │   │   │   │   │   ├── no.js
│   │   │   │   │   │   ├── oc.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
│   │   │   │   │   ├── plugins/
│   │   │   │   │   │   ├── a11yhelp/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       ├── a11yhelp.js
│   │   │   │   │   │   │       └── lang/
│   │   │   │   │   │   │           ├── _translationstatus.txt
│   │   │   │   │   │   │           ├── af.js
│   │   │   │   │   │   │           ├── ar.js
│   │   │   │   │   │   │           ├── az.js
│   │   │   │   │   │   │           ├── bg.js
│   │   │   │   │   │   │           ├── ca.js
│   │   │   │   │   │   │           ├── cs.js
│   │   │   │   │   │   │           ├── cy.js
│   │   │   │   │   │   │           ├── da.js
│   │   │   │   │   │   │           ├── de-ch.js
│   │   │   │   │   │   │           ├── de.js
│   │   │   │   │   │   │           ├── el.js
│   │   │   │   │   │   │           ├── en-au.js
│   │   │   │   │   │   │           ├── en-gb.js
│   │   │   │   │   │   │           ├── en.js
│   │   │   │   │   │   │           ├── eo.js
│   │   │   │   │   │   │           ├── es-mx.js
│   │   │   │   │   │   │           ├── es.js
│   │   │   │   │   │   │           ├── et.js
│   │   │   │   │   │   │           ├── eu.js
│   │   │   │   │   │   │           ├── fa.js
│   │   │   │   │   │   │           ├── fi.js
│   │   │   │   │   │   │           ├── fo.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
│   │   │   │   │   │   │           ├── oc.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.css
│   │   │   │   │   │   │       └── colordialog.js
│   │   │   │   │   │   ├── copyformatting/
│   │   │   │   │   │   │   └── styles/
│   │   │   │   │   │   │       └── copyformatting.css
│   │   │   │   │   │   ├── dialog/
│   │   │   │   │   │   │   ├── dialogDefinition.js
│   │   │   │   │   │   │   └── styles/
│   │   │   │   │   │   │       └── dialog.css
│   │   │   │   │   │   ├── div/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       └── div.js
│   │   │   │   │   │   ├── divarea/
│   │   │   │   │   │   │   └── plugin.js
│   │   │   │   │   │   ├── exportpdf/
│   │   │   │   │   │   │   ├── CHANGELOG.md
│   │   │   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── plugindefinition.js
│   │   │   │   │   │   │   └── tests/
│   │   │   │   │   │   │       ├── _helpers/
│   │   │   │   │   │   │       │   └── tools.js
│   │   │   │   │   │   │       ├── authentication.js
│   │   │   │   │   │   │       ├── exportpdf.js
│   │   │   │   │   │   │       ├── manual/
│   │   │   │   │   │   │       │   ├── configfilename.html
│   │   │   │   │   │   │       │   ├── configfilename.md
│   │   │   │   │   │   │       │   ├── emptyeditor.html
│   │   │   │   │   │   │       │   ├── emptyeditor.md
│   │   │   │   │   │   │       │   ├── integration.html
│   │   │   │   │   │   │       │   ├── integration.md
│   │   │   │   │   │   │       │   ├── integrations/
│   │   │   │   │   │   │       │   │   ├── easyimage.html
│   │   │   │   │   │   │       │   │   └── easyimage.md
│   │   │   │   │   │   │       │   ├── notifications.html
│   │   │   │   │   │   │       │   ├── notifications.md
│   │   │   │   │   │   │       │   ├── notificationsasync.html
│   │   │   │   │   │   │       │   ├── notificationsasync.md
│   │   │   │   │   │   │       │   ├── paperformat.html
│   │   │   │   │   │   │       │   ├── paperformat.md
│   │   │   │   │   │   │       │   ├── readonly.html
│   │   │   │   │   │   │       │   ├── readonly.md
│   │   │   │   │   │   │       │   ├── stylesheets.html
│   │   │   │   │   │   │       │   ├── stylesheets.md
│   │   │   │   │   │   │       │   ├── tokenfetching.html
│   │   │   │   │   │   │       │   ├── tokenfetching.md
│   │   │   │   │   │   │       │   ├── tokentwoeditorscorrect.html
│   │   │   │   │   │   │       │   ├── tokentwoeditorscorrect.md
│   │   │   │   │   │   │       │   ├── tokentwoeditorswrong.html
│   │   │   │   │   │   │       │   ├── tokentwoeditorswrong.md
│   │   │   │   │   │   │       │   ├── tokenwithouturl.html
│   │   │   │   │   │   │       │   ├── tokenwithouturl.md
│   │   │   │   │   │   │       │   ├── wrongendpoint.html
│   │   │   │   │   │   │       │   └── wrongendpoint.md
│   │   │   │   │   │   │       ├── notification.js
│   │   │   │   │   │   │       ├── resourcespaths.js
│   │   │   │   │   │   │       ├── statistics.js
│   │   │   │   │   │   │       └── stylesheets.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
│   │   │   │   │   │   ├── imageresize/
│   │   │   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   │   │   └── README.md
│   │   │   │   │   │   ├── ios_enterkey/
│   │   │   │   │   │   │   └── plugin.js
│   │   │   │   │   │   ├── link/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       ├── anchor.js
│   │   │   │   │   │   │       └── link.js
│   │   │   │   │   │   ├── liststyle/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       └── liststyle.js
│   │   │   │   │   │   ├── onchange/
│   │   │   │   │   │   │   └── docs/
│   │   │   │   │   │   │       ├── install.html
│   │   │   │   │   │   │       └── styles.css
│   │   │   │   │   │   ├── pastefromgdocs/
│   │   │   │   │   │   │   └── filter/
│   │   │   │   │   │   │       └── default.js
│   │   │   │   │   │   ├── pastefromlibreoffice/
│   │   │   │   │   │   │   └── filter/
│   │   │   │   │   │   │       └── default.js
│   │   │   │   │   │   ├── pastefromword/
│   │   │   │   │   │   │   └── filter/
│   │   │   │   │   │   │       └── default.js
│   │   │   │   │   │   ├── pastetools/
│   │   │   │   │   │   │   └── filter/
│   │   │   │   │   │   │       ├── common.js
│   │   │   │   │   │   │       └── image.js
│   │   │   │   │   │   ├── preview/
│   │   │   │   │   │   │   ├── preview.html
│   │   │   │   │   │   │   └── styles/
│   │   │   │   │   │   │       └── screen.css
│   │   │   │   │   │   ├── rx_paste/
│   │   │   │   │   │   │   └── plugin.js
│   │   │   │   │   │   ├── scayt/
│   │   │   │   │   │   │   ├── CHANGELOG.md
│   │   │   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── dialogs/
│   │   │   │   │   │   │   │   ├── dialog.css
│   │   │   │   │   │   │   │   ├── options.js
│   │   │   │   │   │   │   │   └── toolbar.css
│   │   │   │   │   │   │   └── skins/
│   │   │   │   │   │   │       └── moono-lisa/
│   │   │   │   │   │   │           └── scayt.css
│   │   │   │   │   │   ├── smiley/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       └── smiley.js
│   │   │   │   │   │   ├── specialchar/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       ├── lang/
│   │   │   │   │   │   │       │   ├── _translationstatus.txt
│   │   │   │   │   │   │       │   ├── af.js
│   │   │   │   │   │   │       │   ├── ar.js
│   │   │   │   │   │   │       │   ├── az.js
│   │   │   │   │   │   │       │   ├── bg.js
│   │   │   │   │   │   │       │   ├── ca.js
│   │   │   │   │   │   │       │   ├── cs.js
│   │   │   │   │   │   │       │   ├── cy.js
│   │   │   │   │   │   │       │   ├── da.js
│   │   │   │   │   │   │       │   ├── de-ch.js
│   │   │   │   │   │   │       │   ├── de.js
│   │   │   │   │   │   │       │   ├── el.js
│   │   │   │   │   │   │       │   ├── en-au.js
│   │   │   │   │   │   │       │   ├── en-ca.js
│   │   │   │   │   │   │       │   ├── en-gb.js
│   │   │   │   │   │   │       │   ├── en.js
│   │   │   │   │   │   │       │   ├── eo.js
│   │   │   │   │   │   │       │   ├── es-mx.js
│   │   │   │   │   │   │       │   ├── es.js
│   │   │   │   │   │   │       │   ├── et.js
│   │   │   │   │   │   │       │   ├── eu.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
│   │   │   │   │   │   │       │   ├── ko.js
│   │   │   │   │   │   │       │   ├── ku.js
│   │   │   │   │   │   │       │   ├── lt.js
│   │   │   │   │   │   │       │   ├── lv.js
│   │   │   │   │   │   │       │   ├── nb.js
│   │   │   │   │   │   │       │   ├── nl.js
│   │   │   │   │   │   │       │   ├── no.js
│   │   │   │   │   │   │       │   ├── oc.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
│   │   │   │   │   │   │       └── specialchar.js
│   │   │   │   │   │   ├── table/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       └── table.js
│   │   │   │   │   │   ├── tableselection/
│   │   │   │   │   │   │   └── styles/
│   │   │   │   │   │   │       └── tableselection.css
│   │   │   │   │   │   ├── tabletools/
│   │   │   │   │   │   │   └── dialogs/
│   │   │   │   │   │   │       └── tableCell.js
│   │   │   │   │   │   ├── templates/
│   │   │   │   │   │   │   ├── dialogs/
│   │   │   │   │   │   │   │   ├── templates.css
│   │   │   │   │   │   │   │   └── templates.js
│   │   │   │   │   │   │   ├── templatedefinition.js
│   │   │   │   │   │   │   └── templates/
│   │   │   │   │   │   │       └── default.js
│   │   │   │   │   │   ├── wsc/
│   │   │   │   │   │   │   ├── LICENSE.md
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── dialogs/
│   │   │   │   │   │   │   │   ├── ciframe.html
│   │   │   │   │   │   │   │   ├── tmpFrameset.html
│   │   │   │   │   │   │   │   ├── wsc.css
│   │   │   │   │   │   │   │   ├── wsc.js
│   │   │   │   │   │   │   │   └── wsc_ie.js
│   │   │   │   │   │   │   └── skins/
│   │   │   │   │   │   │       └── moono-lisa/
│   │   │   │   │   │   │           └── wsc.css
│   │   │   │   │   │   └── xe_component/
│   │   │   │   │   │       └── plugin.js
│   │   │   │   │   ├── skins/
│   │   │   │   │   │   ├── 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
│   │   │   │   │   │   │   └── skin.js
│   │   │   │   │   │   ├── moono-dark/
│   │   │   │   │   │   │   ├── 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
│   │   │   │   │   │   │   └── skin.js
│   │   │   │   │   │   └── moono-lisa/
│   │   │   │   │   │       ├── dialog.css
│   │   │   │   │   │       ├── dialog_ie.css
│   │   │   │   │   │       ├── dialog_ie8.css
│   │   │   │   │   │       ├── dialog_iequirks.css
│   │   │   │   │   │       ├── editor.css
│   │   │   │   │   │       ├── editor_gecko.css
│   │   │   │   │   │       ├── editor_ie.css
│   │   │   │   │   │       ├── editor_ie8.css
│   │   │   │   │   │       ├── editor_iequirks.css
│   │   │   │   │   │       └── readme.md
│   │   │   │   │   ├── styles.js
│   │   │   │   │   └── vendor/
│   │   │   │   │       └── promise.js
│   │   │   │   └── plugin.load
│   │   │   ├── cookie/
│   │   │   │   ├── js.cookie.js
│   │   │   │   └── plugin.load
│   │   │   ├── filebox/
│   │   │   │   ├── filebox.js
│   │   │   │   └── plugin.load
│   │   │   ├── foggyLayer/
│   │   │   │   ├── foggyLayer.js
│   │   │   │   └── plugin.load
│   │   │   ├── handlebars/
│   │   │   │   ├── handlebars.js
│   │   │   │   └── plugin.load
│   │   │   ├── handlebars.runtime/
│   │   │   │   ├── handlebars.runtime.js
│   │   │   │   └── plugin.load
│   │   │   ├── hotkeys/
│   │   │   │   ├── jquery.hotkeys-packed.js
│   │   │   │   └── plugin.load
│   │   │   ├── jquery.fileupload/
│   │   │   │   ├── LICENSE.txt
│   │   │   │   ├── css/
│   │   │   │   │   ├── demo-ie8.css
│   │   │   │   │   ├── demo.css
│   │   │   │   │   ├── jquery.fileupload-noscript.css
│   │   │   │   │   ├── jquery.fileupload-ui-noscript.css
│   │   │   │   │   ├── jquery.fileupload-ui.css
│   │   │   │   │   ├── jquery.fileupload.css
│   │   │   │   │   └── style.css
│   │   │   │   ├── js/
│   │   │   │   │   ├── app.js
│   │   │   │   │   ├── cors/
│   │   │   │   │   │   ├── jquery.postmessage-transport.js
│   │   │   │   │   │   └── jquery.xdr-transport.js
│   │   │   │   │   ├── jquery.fileupload-angular.js
│   │   │   │   │   ├── jquery.fileupload-audio.js
│   │   │   │   │   ├── jquery.fileupload-image.js
│   │   │   │   │   ├── jquery.fileupload-jquery-ui.js
│   │   │   │   │   ├── jquery.fileupload-process.js
│   │   │   │   │   ├── jquery.fileupload-ui.js
│   │   │   │   │   ├── jquery.fileupload-validate.js
│   │   │   │   │   ├── jquery.fileupload-video.js
│   │   │   │   │   ├── jquery.fileupload.js
│   │   │   │   │   ├── jquery.iframe-transport.js
│   │   │   │   │   ├── main.js
│   │   │   │   │   └── vendor/
│   │   │   │   │       └── jquery.ui.widget.js
│   │   │   │   └── plugin.load
│   │   │   ├── jquery.finderSelect/
│   │   │   │   ├── LICENSE.txt
│   │   │   │   ├── README.md
│   │   │   │   └── plugin.load
│   │   │   ├── qtip/
│   │   │   │   ├── jquery.qtip.js
│   │   │   │   └── plugin.load
│   │   │   ├── spectrum/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── .travis.yml
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── i18n/
│   │   │   │   │   ├── jquery.spectrum-ar.js
│   │   │   │   │   ├── jquery.spectrum-de.js
│   │   │   │   │   ├── jquery.spectrum-dk.js
│   │   │   │   │   ├── jquery.spectrum-en.js
│   │   │   │   │   ├── jquery.spectrum-es.js
│   │   │   │   │   ├── jquery.spectrum-fa.js
│   │   │   │   │   ├── jquery.spectrum-fi.js
│   │   │   │   │   ├── jquery.spectrum-fr.js
│   │   │   │   │   ├── jquery.spectrum-gr.js
│   │   │   │   │   ├── jquery.spectrum-he.js
│   │   │   │   │   ├── jquery.spectrum-hr.js
│   │   │   │   │   ├── jquery.spectrum-id.js
│   │   │   │   │   ├── jquery.spectrum-it.js
│   │   │   │   │   ├── jquery.spectrum-ja.js
│   │   │   │   │   ├── jquery.spectrum-ko.js
│   │   │   │   │   ├── jquery.spectrum-lt.js
│   │   │   │   │   ├── jquery.spectrum-nl.js
│   │   │   │   │   ├── jquery.spectrum-pl.js
│   │   │   │   │   ├── jquery.spectrum-pt-br.js
│   │   │   │   │   ├── jquery.spectrum-ru.js
│   │   │   │   │   ├── jquery.spectrum-sv.js
│   │   │   │   │   ├── jquery.spectrum-tr.js
│   │   │   │   │   ├── jquery.spectrum-zh-cn.js
│   │   │   │   │   └── jquery.spectrum-zh-tw.js
│   │   │   │   ├── plugin.load
│   │   │   │   ├── rx_spectrum.js
│   │   │   │   ├── spectrum.css
│   │   │   │   ├── spectrum.js
│   │   │   │   └── themes/
│   │   │   │       ├── index.html
│   │   │   │       └── sp-dark.css
│   │   │   ├── ui/
│   │   │   │   ├── i18n/
│   │   │   │   │   ├── datepicker-af.js
│   │   │   │   │   ├── datepicker-ar-DZ.js
│   │   │   │   │   ├── datepicker-ar.js
│   │   │   │   │   ├── datepicker-az.js
│   │   │   │   │   ├── datepicker-be.js
│   │   │   │   │   ├── datepicker-bg.js
│   │   │   │   │   ├── datepicker-bs.js
│   │   │   │   │   ├── datepicker-ca.js
│   │   │   │   │   ├── datepicker-cs.js
│   │   │   │   │   ├── datepicker-cy-GB.js
│   │   │   │   │   ├── datepicker-da.js
│   │   │   │   │   ├── datepicker-de.js
│   │   │   │   │   ├── datepicker-el.js
│   │   │   │   │   ├── datepicker-en-AU.js
│   │   │   │   │   ├── datepicker-en-GB.js
│   │   │   │   │   ├── datepicker-en-NZ.js
│   │   │   │   │   ├── datepicker-en.js
│   │   │   │   │   ├── datepicker-eo.js
│   │   │   │   │   ├── datepicker-es.js
│   │   │   │   │   ├── datepicker-et.js
│   │   │   │   │   ├── datepicker-eu.js
│   │   │   │   │   ├── datepicker-fa.js
│   │   │   │   │   ├── datepicker-fi.js
│   │   │   │   │   ├── datepicker-fo.js
│   │   │   │   │   ├── datepicker-fr-CA.js
│   │   │   │   │   ├── datepicker-fr-CH.js
│   │   │   │   │   ├── datepicker-fr.js
│   │   │   │   │   ├── datepicker-gl.js
│   │   │   │   │   ├── datepicker-he.js
│   │   │   │   │   ├── datepicker-hi.js
│   │   │   │   │   ├── datepicker-hr.js
│   │   │   │   │   ├── datepicker-hu.js
│   │   │   │   │   ├── datepicker-hy.js
│   │   │   │   │   ├── datepicker-id.js
│   │   │   │   │   ├── datepicker-is.js
│   │   │   │   │   ├── datepicker-it-CH.js
│   │   │   │   │   ├── datepicker-it.js
│   │   │   │   │   ├── datepicker-ja.js
│   │   │   │   │   ├── datepicker-ka.js
│   │   │   │   │   ├── datepicker-kk.js
│   │   │   │   │   ├── datepicker-km.js
│   │   │   │   │   ├── datepicker-ko.js
│   │   │   │   │   ├── datepicker-ky.js
│   │   │   │   │   ├── datepicker-lb.js
│   │   │   │   │   ├── datepicker-lt.js
│   │   │   │   │   ├── datepicker-lv.js
│   │   │   │   │   ├── datepicker-mk.js
│   │   │   │   │   ├── datepicker-ml.js
│   │   │   │   │   ├── datepicker-ms.js
│   │   │   │   │   ├── datepicker-nb.js
│   │   │   │   │   ├── datepicker-nl-BE.js
│   │   │   │   │   ├── datepicker-nl.js
│   │   │   │   │   ├── datepicker-nn.js
│   │   │   │   │   ├── datepicker-no.js
│   │   │   │   │   ├── datepicker-pl.js
│   │   │   │   │   ├── datepicker-pt-BR.js
│   │   │   │   │   ├── datepicker-pt.js
│   │   │   │   │   ├── datepicker-rm.js
│   │   │   │   │   ├── datepicker-ro.js
│   │   │   │   │   ├── datepicker-ru.js
│   │   │   │   │   ├── datepicker-sk.js
│   │   │   │   │   ├── datepicker-sl.js
│   │   │   │   │   ├── datepicker-sq.js
│   │   │   │   │   ├── datepicker-sr-SR.js
│   │   │   │   │   ├── datepicker-sr.js
│   │   │   │   │   ├── datepicker-sv.js
│   │   │   │   │   ├── datepicker-ta.js
│   │   │   │   │   ├── datepicker-th.js
│   │   │   │   │   ├── datepicker-tj.js
│   │   │   │   │   ├── datepicker-tr.js
│   │   │   │   │   ├── datepicker-uk.js
│   │   │   │   │   ├── datepicker-vi.js
│   │   │   │   │   ├── datepicker-zh-CN.js
│   │   │   │   │   ├── datepicker-zh-HK.js
│   │   │   │   │   └── datepicker-zh-TW.js
│   │   │   │   ├── jquery-ui.css
│   │   │   │   ├── jquery-ui.js
│   │   │   │   ├── jquery-ui.structure.css
│   │   │   │   ├── jquery-ui.theme.css
│   │   │   │   ├── jquery.ui.datepicker-ko.js
│   │   │   │   ├── plugin.load
│   │   │   │   └── rx_datepicker.js
│   │   │   ├── ui.calendar/
│   │   │   │   ├── plugin.load
│   │   │   │   ├── ui.calendar.css
│   │   │   │   └── ui.calendar.js
│   │   │   ├── ui.colorpicker/
│   │   │   │   ├── ChangeLog.txt
│   │   │   │   ├── ReadMe.txt
│   │   │   │   ├── css/
│   │   │   │   │   └── jPicker-1.1.6.css
│   │   │   │   ├── jpicker-1.1.6.js
│   │   │   │   ├── minify.ini
│   │   │   │   ├── plugin.load
│   │   │   │   └── xe_colorpicker.js
│   │   │   ├── ui.krzip/
│   │   │   │   ├── krzip_search.js
│   │   │   │   └── plugin.load
│   │   │   ├── ui.tree/
│   │   │   │   ├── jquery.simple.tree.css
│   │   │   │   ├── jquery.simple.tree.js
│   │   │   │   └── plugin.load
│   │   │   ├── uri/
│   │   │   │   └── plugin.load
│   │   │   └── watchinput/
│   │   │       ├── jquery.watchinput.js
│   │   │       └── plugin.load
│   │   ├── x.js
│   │   ├── xml2json.js
│   │   ├── xml_handler.js
│   │   └── xml_js_filter.js
│   ├── lang/
│   │   ├── de.php
│   │   ├── en.php
│   │   ├── es.php
│   │   ├── fr.php
│   │   ├── ja.php
│   │   ├── ko.php
│   │   ├── mn.php
│   │   ├── ru.php
│   │   ├── tr.php
│   │   ├── vi.php
│   │   ├── zh-CN.php
│   │   └── zh-TW.php
│   ├── legacy.php
│   ├── libraries/
│   │   ├── cryptocompat.php
│   │   ├── ftp.php
│   │   ├── swift_mail.php
│   │   ├── tar.php
│   │   └── vendorpass.php
│   ├── manual/
│   │   └── server_config/
│   │       ├── rhymix-nginx-subdir.conf
│   │       └── rhymix-nginx.conf
│   ├── scripts/
│   │   ├── clean_empty_dirs.php
│   │   ├── clean_garbage_files.php
│   │   ├── clean_message_files.php
│   │   ├── clean_old_logs.php
│   │   ├── clean_old_notifications.php
│   │   ├── clean_old_thumbnails.php
│   │   ├── common.php
│   │   ├── cron.php
│   │   └── update_all_modules.php
│   ├── tpl/
│   │   ├── common_layout.html
│   │   ├── debug_comment.html
│   │   ├── default_layout.html
│   │   ├── popup_layout.html
│   │   └── refresh.html
│   └── vendor/
│       ├── autoload.php
│       ├── bin/
│       │   ├── html-to-markdown
│       │   ├── lessify
│       │   ├── minifycss
│       │   ├── minifyjs
│       │   ├── plessc
│       │   └── pscss
│       ├── composer/
│       │   ├── ClassLoader.php
│       │   ├── InstalledVersions.php
│       │   ├── LICENSE
│       │   ├── autoload_classmap.php
│       │   ├── autoload_files.php
│       │   ├── autoload_namespaces.php
│       │   ├── autoload_psr4.php
│       │   ├── autoload_real.php
│       │   ├── autoload_static.php
│       │   ├── ca-bundle/
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   ├── res/
│       │   │   │   └── cacert.pem
│       │   │   └── src/
│       │   │       └── CaBundle.php
│       │   ├── installed.json
│       │   └── installed.php
│       ├── coolsms/
│       │   └── php-sdk/
│       │       ├── .gitignore
│       │       ├── README.md
│       │       ├── app/
│       │       │   └── Nurigo/
│       │       │       ├── Api/
│       │       │       │   ├── GroupMessage.php
│       │       │       │   ├── Image.php
│       │       │       │   ├── Message.php
│       │       │       │   └── SenderID.php
│       │       │       ├── Coolsms.php
│       │       │       └── Exceptions/
│       │       │           ├── CoolsmsException.php
│       │       │           ├── CoolsmsSDKException.php
│       │       │           ├── CoolsmsServerException.php
│       │       │           └── CoolsmsSystemException.php
│       │       ├── bootstrap.php
│       │       ├── composer.json
│       │       └── examples/
│       │           ├── GroupMessage/
│       │           │   ├── example_add_messages.php
│       │           │   ├── example_add_messages_json.php
│       │           │   ├── example_create_group.php
│       │           │   ├── example_delete_groups.php
│       │           │   ├── example_delete_messages.php
│       │           │   ├── example_get_group_info.php
│       │           │   ├── example_get_group_list.php
│       │           │   ├── example_get_message_list.php
│       │           │   ├── example_send.php
│       │           │   └── example_send_process.php
│       │           ├── Message/
│       │           │   ├── example_cancel.php
│       │           │   ├── example_get_balance.php
│       │           │   ├── example_get_status.php
│       │           │   ├── example_send.php
│       │           │   └── example_sent.php
│       │           ├── image/
│       │           │   ├── example_delete_images.php
│       │           │   ├── example_get_image_info.php
│       │           │   ├── example_get_image_list.php
│       │           │   └── example_upload_image.php
│       │           └── senderid/
│       │               ├── example_delete.php
│       │               ├── example_get_default.php
│       │               ├── example_get_sender_id_list.php
│       │               ├── example_register.php
│       │               ├── example_set_default.php
│       │               └── example_verify.php
│       ├── doctrine/
│       │   └── lexer/
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       ├── lib/
│       │       │   └── Doctrine/
│       │       │       └── Common/
│       │       │           └── Lexer/
│       │       │               └── AbstractLexer.php
│       │       └── psalm.xml
│       ├── egulias/
│       │   └── email-validator/
│       │       ├── CHANGELOG.md
│       │       ├── CONTRIBUTING.md
│       │       ├── LICENSE
│       │       ├── composer.json
│       │       └── src/
│       │           ├── EmailLexer.php
│       │           ├── EmailParser.php
│       │           ├── EmailValidator.php
│       │           ├── MessageIDParser.php
│       │           ├── Parser/
│       │           │   ├── Comment.php
│       │           │   ├── CommentStrategy/
│       │           │   │   ├── CommentStrategy.php
│       │           │   │   ├── DomainComment.php
│       │           │   │   └── LocalComment.php
│       │           │   ├── DomainLiteral.php
│       │           │   ├── DomainPart.php
│       │           │   ├── DoubleQuote.php
│       │           │   ├── FoldingWhiteSpace.php
│       │           │   ├── IDLeftPart.php
│       │           │   ├── IDRightPart.php
│       │           │   ├── LocalPart.php
│       │           │   └── PartParser.php
│       │           ├── Parser.php
│       │           ├── Result/
│       │           │   ├── InvalidEmail.php
│       │           │   ├── MultipleErrors.php
│       │           │   ├── Reason/
│       │           │   │   ├── AtextAfterCFWS.php
│       │           │   │   ├── CRLFAtTheEnd.php
│       │           │   │   ├── CRLFX2.php
│       │           │   │   ├── CRNoLF.php
│       │           │   │   ├── CharNotAllowed.php
│       │           │   │   ├── CommaInDomain.php
│       │           │   │   ├── CommentsInIDRight.php
│       │           │   │   ├── ConsecutiveAt.php
│       │           │   │   ├── ConsecutiveDot.php
│       │           │   │   ├── DetailedReason.php
│       │           │   │   ├── DomainAcceptsNoMail.php
│       │           │   │   ├── DomainHyphened.php
│       │           │   │   ├── DomainTooLong.php
│       │           │   │   ├── DotAtEnd.php
│       │           │   │   ├── DotAtStart.php
│       │           │   │   ├── EmptyReason.php
│       │           │   │   ├── ExceptionFound.php
│       │           │   │   ├── ExpectingATEXT.php
│       │           │   │   ├── ExpectingCTEXT.php
│       │           │   │   ├── ExpectingDTEXT.php
│       │           │   │   ├── ExpectingDomainLiteralClose.php
│       │           │   │   ├── LabelTooLong.php
│       │           │   │   ├── LocalOrReservedDomain.php
│       │           │   │   ├── NoDNSRecord.php
│       │           │   │   ├── NoDomainPart.php
│       │           │   │   ├── NoLocalPart.php
│       │           │   │   ├── RFCWarnings.php
│       │           │   │   ├── Reason.php
│       │           │   │   ├── SpoofEmail.php
│       │           │   │   ├── UnOpenedComment.php
│       │           │   │   ├── UnableToGetDNSRecord.php
│       │           │   │   ├── UnclosedComment.php
│       │           │   │   ├── UnclosedQuotedString.php
│       │           │   │   └── UnusualElements.php
│       │           │   ├── Result.php
│       │           │   ├── SpoofEmail.php
│       │           │   └── ValidEmail.php
│       │           ├── Validation/
│       │           │   ├── DNSCheckValidation.php
│       │           │   ├── DNSGetRecordWrapper.php
│       │           │   ├── DNSRecords.php
│       │           │   ├── EmailValidation.php
│       │           │   ├── Exception/
│       │           │   │   └── EmptyValidationList.php
│       │           │   ├── Extra/
│       │           │   │   └── SpoofCheckValidation.php
│       │           │   ├── MessageIDValidation.php
│       │           │   ├── MultipleValidationWithAnd.php
│       │           │   ├── NoRFCWarningsValidation.php
│       │           │   └── RFCValidation.php
│       │           └── Warning/
│       │               ├── AddressLiteral.php
│       │               ├── CFWSNearAt.php
│       │               ├── CFWSWithFWS.php
│       │               ├── Comment.php
│       │               ├── DeprecatedComment.php
│       │               ├── DomainLiteral.php
│       │               ├── EmailTooLong.php
│       │               ├── IPV6BadChar.php
│       │               ├── IPV6ColonEnd.php
│       │               ├── IPV6ColonStart.php
│       │               ├── IPV6Deprecated.php
│       │               ├── IPV6DoubleColon.php
│       │               ├── IPV6GroupCount.php
│       │               ├── IPV6MaxGroups.php
│       │               ├── LocalTooLong.php
│       │               ├── NoDNSMXRecord.php
│       │               ├── ObsoleteDTEXT.php
│       │               ├── QuotedPart.php
│       │               ├── QuotedString.php
│       │               ├── TLD.php
│       │               └── Warning.php
│       ├── enshrined/
│       │   └── svg-sanitize/
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       └── src/
│       │           ├── ElementReference/
│       │           │   ├── Resolver.php
│       │           │   ├── Subject.php
│       │           │   └── Usage.php
│       │           ├── Exceptions/
│       │           │   └── NestingException.php
│       │           ├── Helper.php
│       │           ├── Sanitizer.php
│       │           ├── data/
│       │           │   ├── AllowedAttributes.php
│       │           │   ├── AllowedTags.php
│       │           │   ├── AttributeInterface.php
│       │           │   ├── TagInterface.php
│       │           │   └── XPath.php
│       │           └── svg-scanner.php
│       ├── ezyang/
│       │   └── htmlpurifier/
│       │       ├── CREDITS
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── VERSION
│       │       ├── composer.json
│       │       └── library/
│       │           ├── HTMLPurifier/
│       │           │   ├── Arborize.php
│       │           │   ├── AttrCollections.php
│       │           │   ├── AttrDef/
│       │           │   │   ├── CSS/
│       │           │   │   │   ├── AlphaValue.php
│       │           │   │   │   ├── Background.php
│       │           │   │   │   ├── BackgroundPosition.php
│       │           │   │   │   ├── Border.php
│       │           │   │   │   ├── Color.php
│       │           │   │   │   ├── Composite.php
│       │           │   │   │   ├── DenyElementDecorator.php
│       │           │   │   │   ├── Filter.php
│       │           │   │   │   ├── Font.php
│       │           │   │   │   ├── FontFamily.php
│       │           │   │   │   ├── Ident.php
│       │           │   │   │   ├── ImportantDecorator.php
│       │           │   │   │   ├── Length.php
│       │           │   │   │   ├── ListStyle.php
│       │           │   │   │   ├── Multiple.php
│       │           │   │   │   ├── Number.php
│       │           │   │   │   ├── Percentage.php
│       │           │   │   │   ├── Ratio.php
│       │           │   │   │   ├── TextDecoration.php
│       │           │   │   │   └── URI.php
│       │           │   │   ├── CSS.php
│       │           │   │   ├── Clone.php
│       │           │   │   ├── Enum.php
│       │           │   │   ├── HTML/
│       │           │   │   │   ├── Bool.php
│       │           │   │   │   ├── Class.php
│       │           │   │   │   ├── Color.php
│       │           │   │   │   ├── ContentEditable.php
│       │           │   │   │   ├── FrameTarget.php
│       │           │   │   │   ├── ID.php
│       │           │   │   │   ├── Length.php
│       │           │   │   │   ├── LinkTypes.php
│       │           │   │   │   ├── MultiLength.php
│       │           │   │   │   ├── Nmtokens.php
│       │           │   │   │   └── Pixels.php
│       │           │   │   ├── Integer.php
│       │           │   │   ├── Lang.php
│       │           │   │   ├── Switch.php
│       │           │   │   ├── Text.php
│       │           │   │   ├── URI/
│       │           │   │   │   ├── Email/
│       │           │   │   │   │   └── SimpleCheck.php
│       │           │   │   │   ├── Email.php
│       │           │   │   │   ├── Host.php
│       │           │   │   │   ├── IPv4.php
│       │           │   │   │   └── IPv6.php
│       │           │   │   └── URI.php
│       │           │   ├── AttrDef.php
│       │           │   ├── AttrTransform/
│       │           │   │   ├── Background.php
│       │           │   │   ├── BdoDir.php
│       │           │   │   ├── BgColor.php
│       │           │   │   ├── BoolToCSS.php
│       │           │   │   ├── Border.php
│       │           │   │   ├── EnumToCSS.php
│       │           │   │   ├── ImgRequired.php
│       │           │   │   ├── ImgSpace.php
│       │           │   │   ├── Input.php
│       │           │   │   ├── Lang.php
│       │           │   │   ├── Length.php
│       │           │   │   ├── Name.php
│       │           │   │   ├── NameSync.php
│       │           │   │   ├── Nofollow.php
│       │           │   │   ├── SafeEmbed.php
│       │           │   │   ├── SafeObject.php
│       │           │   │   ├── SafeParam.php
│       │           │   │   ├── ScriptRequired.php
│       │           │   │   ├── TargetBlank.php
│       │           │   │   ├── TargetNoopener.php
│       │           │   │   ├── TargetNoreferrer.php
│       │           │   │   └── Textarea.php
│       │           │   ├── AttrTransform.php
│       │           │   ├── AttrTypes.php
│       │           │   ├── AttrValidator.php
│       │           │   ├── Bootstrap.php
│       │           │   ├── CSSDefinition.php
│       │           │   ├── ChildDef/
│       │           │   │   ├── Chameleon.php
│       │           │   │   ├── Custom.php
│       │           │   │   ├── Empty.php
│       │           │   │   ├── List.php
│       │           │   │   ├── Optional.php
│       │           │   │   ├── Required.php
│       │           │   │   ├── StrictBlockquote.php
│       │           │   │   └── Table.php
│       │           │   ├── ChildDef.php
│       │           │   ├── Config.php
│       │           │   ├── ConfigSchema/
│       │           │   │   ├── Builder/
│       │           │   │   │   ├── ConfigSchema.php
│       │           │   │   │   └── Xml.php
│       │           │   │   ├── Exception.php
│       │           │   │   ├── Interchange/
│       │           │   │   │   ├── Directive.php
│       │           │   │   │   └── Id.php
│       │           │   │   ├── Interchange.php
│       │           │   │   ├── InterchangeBuilder.php
│       │           │   │   ├── Validator.php
│       │           │   │   ├── ValidatorAtom.php
│       │           │   │   ├── schema/
│       │           │   │   │   ├── Attr.AllowedClasses.txt
│       │           │   │   │   ├── Attr.AllowedFrameTargets.txt
│       │           │   │   │   ├── Attr.AllowedRel.txt
│       │           │   │   │   ├── Attr.AllowedRev.txt
│       │           │   │   │   ├── Attr.ClassUseCDATA.txt
│       │           │   │   │   ├── Attr.DefaultImageAlt.txt
│       │           │   │   │   ├── Attr.DefaultInvalidImage.txt
│       │           │   │   │   ├── Attr.DefaultInvalidImageAlt.txt
│       │           │   │   │   ├── Attr.DefaultTextDir.txt
│       │           │   │   │   ├── Attr.EnableID.txt
│       │           │   │   │   ├── Attr.ForbiddenClasses.txt
│       │           │   │   │   ├── Attr.ID.HTML5.txt
│       │           │   │   │   ├── Attr.IDBlacklist.txt
│       │           │   │   │   ├── Attr.IDBlacklistRegexp.txt
│       │           │   │   │   ├── Attr.IDPrefix.txt
│       │           │   │   │   ├── Attr.IDPrefixLocal.txt
│       │           │   │   │   ├── AutoFormat.AutoParagraph.txt
│       │           │   │   │   ├── AutoFormat.Custom.txt
│       │           │   │   │   ├── AutoFormat.DisplayLinkURI.txt
│       │           │   │   │   ├── AutoFormat.Linkify.txt
│       │           │   │   │   ├── AutoFormat.PurifierLinkify.DocURL.txt
│       │           │   │   │   ├── AutoFormat.PurifierLinkify.txt
│       │           │   │   │   ├── AutoFormat.RemoveEmpty.Predicate.txt
│       │           │   │   │   ├── AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.txt
│       │           │   │   │   ├── AutoFormat.RemoveEmpty.RemoveNbsp.txt
│       │           │   │   │   ├── AutoFormat.RemoveEmpty.txt
│       │           │   │   │   ├── AutoFormat.RemoveSpansWithoutAttributes.txt
│       │           │   │   │   ├── CSS.AllowDuplicates.txt
│       │           │   │   │   ├── CSS.AllowImportant.txt
│       │           │   │   │   ├── CSS.AllowTricky.txt
│       │           │   │   │   ├── CSS.AllowedFonts.txt
│       │           │   │   │   ├── CSS.AllowedProperties.txt
│       │           │   │   │   ├── CSS.DefinitionRev.txt
│       │           │   │   │   ├── CSS.ForbiddenProperties.txt
│       │           │   │   │   ├── CSS.MaxImgLength.txt
│       │           │   │   │   ├── CSS.Proprietary.txt
│       │           │   │   │   ├── CSS.Trusted.txt
│       │           │   │   │   ├── Cache.DefinitionImpl.txt
│       │           │   │   │   ├── Cache.SerializerPath.txt
│       │           │   │   │   ├── Cache.SerializerPermissions.txt
│       │           │   │   │   ├── Core.AggressivelyFixLt.txt
│       │           │   │   │   ├── Core.AggressivelyRemoveScript.txt
│       │           │   │   │   ├── Core.AllowHostnameUnderscore.txt
│       │           │   │   │   ├── Core.AllowParseManyTags.txt
│       │           │   │   │   ├── Core.CollectErrors.txt
│       │           │   │   │   ├── Core.ColorKeywords.txt
│       │           │   │   │   ├── Core.ConvertDocumentToFragment.txt
│       │           │   │   │   ├── Core.DirectLexLineNumberSyncInterval.txt
│       │           │   │   │   ├── Core.DisableExcludes.txt
│       │           │   │   │   ├── Core.EnableIDNA.txt
│       │           │   │   │   ├── Core.Encoding.txt
│       │           │   │   │   ├── Core.EscapeInvalidChildren.txt
│       │           │   │   │   ├── Core.EscapeInvalidTags.txt
│       │           │   │   │   ├── Core.EscapeNonASCIICharacters.txt
│       │           │   │   │   ├── Core.HiddenElements.txt
│       │           │   │   │   ├── Core.Language.txt
│       │           │   │   │   ├── Core.LegacyEntityDecoder.txt
│       │           │   │   │   ├── Core.LexerImpl.txt
│       │           │   │   │   ├── Core.MaintainLineNumbers.txt
│       │           │   │   │   ├── Core.NormalizeNewlines.txt
│       │           │   │   │   ├── Core.RemoveBlanks.txt
│       │           │   │   │   ├── Core.RemoveInvalidImg.txt
│       │           │   │   │   ├── Core.RemoveProcessingInstructions.txt
│       │           │   │   │   ├── Core.RemoveScriptContents.txt
│       │           │   │   │   ├── Filter.Custom.txt
│       │           │   │   │   ├── Filter.ExtractStyleBlocks.Escaping.txt
│       │           │   │   │   ├── Filter.ExtractStyleBlocks.Scope.txt
│       │           │   │   │   ├── Filter.ExtractStyleBlocks.TidyImpl.txt
│       │           │   │   │   ├── Filter.ExtractStyleBlocks.txt
│       │           │   │   │   ├── Filter.YouTube.txt
│       │           │   │   │   ├── HTML.Allowed.txt
│       │           │   │   │   ├── HTML.AllowedAttributes.txt
│       │           │   │   │   ├── HTML.AllowedComments.txt
│       │           │   │   │   ├── HTML.AllowedCommentsRegexp.txt
│       │           │   │   │   ├── HTML.AllowedElements.txt
│       │           │   │   │   ├── HTML.AllowedModules.txt
│       │           │   │   │   ├── HTML.Attr.Name.UseCDATA.txt
│       │           │   │   │   ├── HTML.BlockWrapper.txt
│       │           │   │   │   ├── HTML.CoreModules.txt
│       │           │   │   │   ├── HTML.CustomDoctype.txt
│       │           │   │   │   ├── HTML.DefinitionID.txt
│       │           │   │   │   ├── HTML.DefinitionRev.txt
│       │           │   │   │   ├── HTML.Doctype.txt
│       │           │   │   │   ├── HTML.FlashAllowFullScreen.txt
│       │           │   │   │   ├── HTML.ForbiddenAttributes.txt
│       │           │   │   │   ├── HTML.ForbiddenElements.txt
│       │           │   │   │   ├── HTML.Forms.txt
│       │           │   │   │   ├── HTML.MaxImgLength.txt
│       │           │   │   │   ├── HTML.Nofollow.txt
│       │           │   │   │   ├── HTML.Parent.txt
│       │           │   │   │   ├── HTML.Proprietary.txt
│       │           │   │   │   ├── HTML.SafeEmbed.txt
│       │           │   │   │   ├── HTML.SafeIframe.txt
│       │           │   │   │   ├── HTML.SafeObject.txt
│       │           │   │   │   ├── HTML.SafeScripting.txt
│       │           │   │   │   ├── HTML.Strict.txt
│       │           │   │   │   ├── HTML.TargetBlank.txt
│       │           │   │   │   ├── HTML.TargetNoopener.txt
│       │           │   │   │   ├── HTML.TargetNoreferrer.txt
│       │           │   │   │   ├── HTML.TidyAdd.txt
│       │           │   │   │   ├── HTML.TidyLevel.txt
│       │           │   │   │   ├── HTML.TidyRemove.txt
│       │           │   │   │   ├── HTML.Trusted.txt
│       │           │   │   │   ├── HTML.XHTML.txt
│       │           │   │   │   ├── Output.CommentScriptContents.txt
│       │           │   │   │   ├── Output.FixInnerHTML.txt
│       │           │   │   │   ├── Output.FlashCompat.txt
│       │           │   │   │   ├── Output.Newline.txt
│       │           │   │   │   ├── Output.SortAttr.txt
│       │           │   │   │   ├── Output.TidyFormat.txt
│       │           │   │   │   ├── Test.ForceNoIconv.txt
│       │           │   │   │   ├── URI.AllowedSchemes.txt
│       │           │   │   │   ├── URI.Base.txt
│       │           │   │   │   ├── URI.DefaultScheme.txt
│       │           │   │   │   ├── URI.DefinitionID.txt
│       │           │   │   │   ├── URI.DefinitionRev.txt
│       │           │   │   │   ├── URI.Disable.txt
│       │           │   │   │   ├── URI.DisableExternal.txt
│       │           │   │   │   ├── URI.DisableExternalResources.txt
│       │           │   │   │   ├── URI.DisableResources.txt
│       │           │   │   │   ├── URI.Host.txt
│       │           │   │   │   ├── URI.HostBlacklist.txt
│       │           │   │   │   ├── URI.MakeAbsolute.txt
│       │           │   │   │   ├── URI.Munge.txt
│       │           │   │   │   ├── URI.MungeResources.txt
│       │           │   │   │   ├── URI.MungeSecretKey.txt
│       │           │   │   │   ├── URI.OverrideAllowedSchemes.txt
│       │           │   │   │   ├── URI.SafeIframeRegexp.txt
│       │           │   │   │   └── info.ini
│       │           │   │   └── schema.ser
│       │           │   ├── ConfigSchema.php
│       │           │   ├── ContentSets.php
│       │           │   ├── Context.php
│       │           │   ├── Definition.php
│       │           │   ├── DefinitionCache/
│       │           │   │   ├── Decorator/
│       │           │   │   │   ├── Cleanup.php
│       │           │   │   │   ├── Memory.php
│       │           │   │   │   └── Template.php.in
│       │           │   │   ├── Decorator.php
│       │           │   │   ├── Null.php
│       │           │   │   ├── Serializer/
│       │           │   │   │   └── README
│       │           │   │   └── Serializer.php
│       │           │   ├── DefinitionCache.php
│       │           │   ├── DefinitionCacheFactory.php
│       │           │   ├── Doctype.php
│       │           │   ├── DoctypeRegistry.php
│       │           │   ├── ElementDef.php
│       │           │   ├── Encoder.php
│       │           │   ├── EntityLookup/
│       │           │   │   └── entities.ser
│       │           │   ├── EntityLookup.php
│       │           │   ├── EntityParser.php
│       │           │   ├── ErrorCollector.php
│       │           │   ├── ErrorStruct.php
│       │           │   ├── Exception.php
│       │           │   ├── Filter/
│       │           │   │   ├── ExtractStyleBlocks.php
│       │           │   │   └── YouTube.php
│       │           │   ├── Filter.php
│       │           │   ├── Generator.php
│       │           │   ├── HTMLDefinition.php
│       │           │   ├── HTMLModule/
│       │           │   │   ├── Bdo.php
│       │           │   │   ├── CommonAttributes.php
│       │           │   │   ├── Edit.php
│       │           │   │   ├── Forms.php
│       │           │   │   ├── Hypertext.php
│       │           │   │   ├── Iframe.php
│       │           │   │   ├── Image.php
│       │           │   │   ├── Legacy.php
│       │           │   │   ├── List.php
│       │           │   │   ├── Name.php
│       │           │   │   ├── Nofollow.php
│       │           │   │   ├── NonXMLCommonAttributes.php
│       │           │   │   ├── Object.php
│       │           │   │   ├── Presentation.php
│       │           │   │   ├── Proprietary.php
│       │           │   │   ├── Ruby.php
│       │           │   │   ├── SafeEmbed.php
│       │           │   │   ├── SafeObject.php
│       │           │   │   ├── SafeScripting.php
│       │           │   │   ├── Scripting.php
│       │           │   │   ├── StyleAttribute.php
│       │           │   │   ├── Tables.php
│       │           │   │   ├── Target.php
│       │           │   │   ├── TargetBlank.php
│       │           │   │   ├── TargetNoopener.php
│       │           │   │   ├── TargetNoreferrer.php
│       │           │   │   ├── Text.php
│       │           │   │   ├── Tidy/
│       │           │   │   │   ├── Name.php
│       │           │   │   │   ├── Proprietary.php
│       │           │   │   │   ├── Strict.php
│       │           │   │   │   ├── Transitional.php
│       │           │   │   │   ├── XHTML.php
│       │           │   │   │   └── XHTMLAndHTML4.php
│       │           │   │   ├── Tidy.php
│       │           │   │   └── XMLCommonAttributes.php
│       │           │   ├── HTMLModule.php
│       │           │   ├── HTMLModuleManager.php
│       │           │   ├── IDAccumulator.php
│       │           │   ├── Injector/
│       │           │   │   ├── AutoParagraph.php
│       │           │   │   ├── DisplayLinkURI.php
│       │           │   │   ├── Linkify.php
│       │           │   │   ├── PurifierLinkify.php
│       │           │   │   ├── RemoveEmpty.php
│       │           │   │   ├── RemoveSpansWithoutAttributes.php
│       │           │   │   └── SafeObject.php
│       │           │   ├── Injector.php
│       │           │   ├── Language/
│       │           │   │   └── messages/
│       │           │   │       └── en.php
│       │           │   ├── Language.php
│       │           │   ├── LanguageFactory.php
│       │           │   ├── Length.php
│       │           │   ├── Lexer/
│       │           │   │   ├── DOMLex.php
│       │           │   │   ├── DirectLex.php
│       │           │   │   └── PH5P.php
│       │           │   ├── Lexer.php
│       │           │   ├── Node/
│       │           │   │   ├── Comment.php
│       │           │   │   ├── Element.php
│       │           │   │   └── Text.php
│       │           │   ├── Node.php
│       │           │   ├── PercentEncoder.php
│       │           │   ├── Printer/
│       │           │   │   ├── CSSDefinition.php
│       │           │   │   ├── ConfigForm.css
│       │           │   │   ├── ConfigForm.js
│       │           │   │   ├── ConfigForm.php
│       │           │   │   └── HTMLDefinition.php
│       │           │   ├── Printer.php
│       │           │   ├── PropertyList.php
│       │           │   ├── PropertyListIterator.php
│       │           │   ├── Queue.php
│       │           │   ├── Strategy/
│       │           │   │   ├── Composite.php
│       │           │   │   ├── Core.php
│       │           │   │   ├── FixNesting.php
│       │           │   │   ├── MakeWellFormed.php
│       │           │   │   ├── RemoveForeignElements.php
│       │           │   │   └── ValidateAttributes.php
│       │           │   ├── Strategy.php
│       │           │   ├── StringHash.php
│       │           │   ├── StringHashParser.php
│       │           │   ├── TagTransform/
│       │           │   │   ├── Font.php
│       │           │   │   └── Simple.php
│       │           │   ├── TagTransform.php
│       │           │   ├── Token/
│       │           │   │   ├── Comment.php
│       │           │   │   ├── Empty.php
│       │           │   │   ├── End.php
│       │           │   │   ├── Start.php
│       │           │   │   ├── Tag.php
│       │           │   │   └── Text.php
│       │           │   ├── Token.php
│       │           │   ├── TokenFactory.php
│       │           │   ├── URI.php
│       │           │   ├── URIDefinition.php
│       │           │   ├── URIFilter/
│       │           │   │   ├── DisableExternal.php
│       │           │   │   ├── DisableExternalResources.php
│       │           │   │   ├── DisableResources.php
│       │           │   │   ├── HostBlacklist.php
│       │           │   │   ├── MakeAbsolute.php
│       │           │   │   ├── Munge.php
│       │           │   │   └── SafeIframe.php
│       │           │   ├── URIFilter.php
│       │           │   ├── URIParser.php
│       │           │   ├── URIScheme/
│       │           │   │   ├── data.php
│       │           │   │   ├── file.php
│       │           │   │   ├── ftp.php
│       │           │   │   ├── http.php
│       │           │   │   ├── https.php
│       │           │   │   ├── mailto.php
│       │           │   │   ├── news.php
│       │           │   │   ├── nntp.php
│       │           │   │   └── tel.php
│       │           │   ├── URIScheme.php
│       │           │   ├── URISchemeRegistry.php
│       │           │   ├── UnitConverter.php
│       │           │   ├── VarParser/
│       │           │   │   ├── Flexible.php
│       │           │   │   └── Native.php
│       │           │   ├── VarParser.php
│       │           │   ├── VarParserException.php
│       │           │   └── Zipper.php
│       │           ├── HTMLPurifier.auto.php
│       │           ├── HTMLPurifier.autoload-legacy.php
│       │           ├── HTMLPurifier.autoload.php
│       │           ├── HTMLPurifier.composer.php
│       │           ├── HTMLPurifier.func.php
│       │           ├── HTMLPurifier.includes.php
│       │           ├── HTMLPurifier.kses.php
│       │           ├── HTMLPurifier.path.php
│       │           ├── HTMLPurifier.php
│       │           └── HTMLPurifier.safe-includes.php
│       ├── firebase/
│       │   └── php-jwt/
│       │       ├── CHANGELOG.md
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       └── src/
│       │           ├── BeforeValidException.php
│       │           ├── CachedKeySet.php
│       │           ├── ExpiredException.php
│       │           ├── JWK.php
│       │           ├── JWT.php
│       │           ├── Key.php
│       │           └── SignatureInvalidException.php
│       ├── google/
│       │   └── auth/
│       │       ├── COPYING
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── SECURITY.md
│       │       ├── autoload.php
│       │       ├── composer.json
│       │       └── src/
│       │           ├── AccessToken.php
│       │           ├── ApplicationDefaultCredentials.php
│       │           ├── Cache/
│       │           │   ├── InvalidArgumentException.php
│       │           │   ├── Item.php
│       │           │   ├── MemoryCacheItemPool.php
│       │           │   ├── SysVCacheItemPool.php
│       │           │   └── TypedItem.php
│       │           ├── CacheTrait.php
│       │           ├── Credentials/
│       │           │   ├── AppIdentityCredentials.php
│       │           │   ├── GCECredentials.php
│       │           │   ├── IAMCredentials.php
│       │           │   ├── ImpersonatedServiceAccountCredentials.php
│       │           │   ├── InsecureCredentials.php
│       │           │   ├── ServiceAccountCredentials.php
│       │           │   ├── ServiceAccountJwtAccessCredentials.php
│       │           │   └── UserRefreshCredentials.php
│       │           ├── CredentialsLoader.php
│       │           ├── FetchAuthTokenCache.php
│       │           ├── FetchAuthTokenInterface.php
│       │           ├── GCECache.php
│       │           ├── GetQuotaProjectInterface.php
│       │           ├── HttpHandler/
│       │           │   ├── Guzzle5HttpHandler.php
│       │           │   ├── Guzzle6HttpHandler.php
│       │           │   ├── Guzzle7HttpHandler.php
│       │           │   ├── HttpClientCache.php
│       │           │   └── HttpHandlerFactory.php
│       │           ├── Iam.php
│       │           ├── IamSignerTrait.php
│       │           ├── Middleware/
│       │           │   ├── AuthTokenMiddleware.php
│       │           │   ├── ProxyAuthTokenMiddleware.php
│       │           │   ├── ScopedAccessTokenMiddleware.php
│       │           │   └── SimpleMiddleware.php
│       │           ├── OAuth2.php
│       │           ├── ProjectIdProviderInterface.php
│       │           ├── ServiceAccountSignerTrait.php
│       │           ├── SignBlobInterface.php
│       │           └── UpdateMetadataInterface.php
│       ├── guzzlehttp/
│       │   ├── guzzle/
│       │   │   ├── CHANGELOG.md
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── UPGRADING.md
│       │   │   ├── composer.json
│       │   │   └── src/
│       │   │       ├── BodySummarizer.php
│       │   │       ├── BodySummarizerInterface.php
│       │   │       ├── Client.php
│       │   │       ├── ClientInterface.php
│       │   │       ├── ClientTrait.php
│       │   │       ├── Cookie/
│       │   │       │   ├── CookieJar.php
│       │   │       │   ├── CookieJarInterface.php
│       │   │       │   ├── FileCookieJar.php
│       │   │       │   ├── SessionCookieJar.php
│       │   │       │   └── SetCookie.php
│       │   │       ├── Exception/
│       │   │       │   ├── BadResponseException.php
│       │   │       │   ├── ClientException.php
│       │   │       │   ├── ConnectException.php
│       │   │       │   ├── GuzzleException.php
│       │   │       │   ├── InvalidArgumentException.php
│       │   │       │   ├── RequestException.php
│       │   │       │   ├── ServerException.php
│       │   │       │   ├── TooManyRedirectsException.php
│       │   │       │   └── TransferException.php
│       │   │       ├── Handler/
│       │   │       │   ├── CurlFactory.php
│       │   │       │   ├── CurlFactoryInterface.php
│       │   │       │   ├── CurlHandler.php
│       │   │       │   ├── CurlMultiHandler.php
│       │   │       │   ├── EasyHandle.php
│       │   │       │   ├── HeaderProcessor.php
│       │   │       │   ├── MockHandler.php
│       │   │       │   ├── Proxy.php
│       │   │       │   └── StreamHandler.php
│       │   │       ├── HandlerStack.php
│       │   │       ├── MessageFormatter.php
│       │   │       ├── MessageFormatterInterface.php
│       │   │       ├── Middleware.php
│       │   │       ├── Pool.php
│       │   │       ├── PrepareBodyMiddleware.php
│       │   │       ├── RedirectMiddleware.php
│       │   │       ├── RequestOptions.php
│       │   │       ├── RetryMiddleware.php
│       │   │       ├── TransferStats.php
│       │   │       ├── Utils.php
│       │   │       ├── functions.php
│       │   │       └── functions_include.php
│       │   ├── promises/
│       │   │   ├── CHANGELOG.md
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   └── src/
│       │   │       ├── AggregateException.php
│       │   │       ├── CancellationException.php
│       │   │       ├── Coroutine.php
│       │   │       ├── Create.php
│       │   │       ├── Each.php
│       │   │       ├── EachPromise.php
│       │   │       ├── FulfilledPromise.php
│       │   │       ├── Is.php
│       │   │       ├── Promise.php
│       │   │       ├── PromiseInterface.php
│       │   │       ├── PromisorInterface.php
│       │   │       ├── RejectedPromise.php
│       │   │       ├── RejectionException.php
│       │   │       ├── TaskQueue.php
│       │   │       ├── TaskQueueInterface.php
│       │   │       └── Utils.php
│       │   └── psr7/
│       │       ├── CHANGELOG.md
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       └── src/
│       │           ├── AppendStream.php
│       │           ├── BufferStream.php
│       │           ├── CachingStream.php
│       │           ├── DroppingStream.php
│       │           ├── Exception/
│       │           │   └── MalformedUriException.php
│       │           ├── FnStream.php
│       │           ├── Header.php
│       │           ├── HttpFactory.php
│       │           ├── InflateStream.php
│       │           ├── LazyOpenStream.php
│       │           ├── LimitStream.php
│       │           ├── Message.php
│       │           ├── MessageTrait.php
│       │           ├── MimeType.php
│       │           ├── MultipartStream.php
│       │           ├── NoSeekStream.php
│       │           ├── PumpStream.php
│       │           ├── Query.php
│       │           ├── Request.php
│       │           ├── Response.php
│       │           ├── Rfc7230.php
│       │           ├── ServerRequest.php
│       │           ├── Stream.php
│       │           ├── StreamDecoratorTrait.php
│       │           ├── StreamWrapper.php
│       │           ├── UploadedFile.php
│       │           ├── Uri.php
│       │           ├── UriComparator.php
│       │           ├── UriNormalizer.php
│       │           ├── UriResolver.php
│       │           └── Utils.php
│       ├── league/
│       │   └── html-to-markdown/
│       │       ├── .github/
│       │       │   ├── FUNDING.yml
│       │       │   ├── ISSUE_TEMPLATE/
│       │       │   │   ├── 1_Conversion_error.yaml
│       │       │   │   ├── 2_Bug_report.yaml
│       │       │   │   └── 3_Feature_request.yaml
│       │       │   ├── SECURITY.md
│       │       │   ├── renovate.json
│       │       │   ├── stale.yml
│       │       │   └── workflows/
│       │       │       └── tests.yml
│       │       ├── CHANGELOG.md
│       │       ├── CONDUCT.md
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── bin/
│       │       │   └── html-to-markdown
│       │       ├── composer.json
│       │       ├── phpcs.xml.dist
│       │       ├── phpstan.neon.dist
│       │       ├── psalm.xml
│       │       └── src/
│       │           ├── Coerce.php
│       │           ├── Configuration.php
│       │           ├── ConfigurationAwareInterface.php
│       │           ├── Converter/
│       │           │   ├── BlockquoteConverter.php
│       │           │   ├── CodeConverter.php
│       │           │   ├── CommentConverter.php
│       │           │   ├── ConverterInterface.php
│       │           │   ├── DefaultConverter.php
│       │           │   ├── DivConverter.php
│       │           │   ├── EmphasisConverter.php
│       │           │   ├── HardBreakConverter.php
│       │           │   ├── HeaderConverter.php
│       │           │   ├── HorizontalRuleConverter.php
│       │           │   ├── ImageConverter.php
│       │           │   ├── LinkConverter.php
│       │           │   ├── ListBlockConverter.php
│       │           │   ├── ListItemConverter.php
│       │           │   ├── ParagraphConverter.php
│       │           │   ├── PreformattedConverter.php
│       │           │   ├── TableConverter.php
│       │           │   └── TextConverter.php
│       │           ├── Element.php
│       │           ├── ElementInterface.php
│       │           ├── Environment.php
│       │           ├── HtmlConverter.php
│       │           ├── HtmlConverterInterface.php
│       │           └── PreConverterInterface.php
│       ├── matthiasmullie/
│       │   ├── minify/
│       │   │   ├── LICENSE
│       │   │   ├── bin/
│       │   │   │   ├── minifycss
│       │   │   │   └── minifyjs
│       │   │   ├── composer.json
│       │   │   ├── data/
│       │   │   │   └── js/
│       │   │   │       ├── keywords_after.txt
│       │   │   │       ├── keywords_before.txt
│       │   │   │       ├── keywords_reserved.txt
│       │   │   │       ├── operators.txt
│       │   │   │       ├── operators_after.txt
│       │   │   │       └── operators_before.txt
│       │   │   └── src/
│       │   │       ├── CSS.php
│       │   │       ├── Exception.php
│       │   │       ├── Exceptions/
│       │   │       │   ├── BasicException.php
│       │   │       │   ├── FileImportException.php
│       │   │       │   ├── IOException.php
│       │   │       │   └── PatternMatchException.php
│       │   │       ├── JS.php
│       │   │       └── Minify.php
│       │   └── path-converter/
│       │       ├── LICENSE
│       │       ├── composer.json
│       │       └── src/
│       │           ├── Converter.php
│       │           ├── ConverterInterface.php
│       │           └── NoConverter.php
│       ├── michelf/
│       │   ├── php-markdown/
│       │   │   ├── .editorconfig
│       │   │   ├── .gitignore
│       │   │   ├── .scrutinizer.yml
│       │   │   ├── .travis.yml
│       │   │   ├── License.md
│       │   │   ├── Michelf/
│       │   │   │   ├── Markdown.inc.php
│       │   │   │   ├── Markdown.php
│       │   │   │   ├── MarkdownExtra.inc.php
│       │   │   │   ├── MarkdownExtra.php
│       │   │   │   ├── MarkdownInterface.inc.php
│       │   │   │   └── MarkdownInterface.php
│       │   │   ├── Readme.md
│       │   │   ├── Readme.php
│       │   │   ├── composer.json
│       │   │   ├── phpunit.xml.dist
│       │   │   └── test/
│       │   │       ├── bootstrap.php
│       │   │       ├── helpers/
│       │   │       │   └── MarkdownTestHelper.php
│       │   │       ├── integration/
│       │   │       │   └── PhpMarkdownTest.php
│       │   │       ├── resources/
│       │   │       │   ├── markdown.mdtest/
│       │   │       │   │   ├── Amps and angle encoding.text
│       │   │       │   │   ├── Amps and angle encoding.xhtml
│       │   │       │   │   ├── Auto links.text
│       │   │       │   │   ├── Auto links.xhtml
│       │   │       │   │   ├── Backslash escapes.text
│       │   │       │   │   ├── Backslash escapes.xhtml
│       │   │       │   │   ├── Blockquotes with code blocks.text
│       │   │       │   │   ├── Blockquotes with code blocks.xhtml
│       │   │       │   │   ├── Code Blocks.text
│       │   │       │   │   ├── Code Blocks.xhtml
│       │   │       │   │   ├── Code Spans.text
│       │   │       │   │   ├── Code Spans.xhtml
│       │   │       │   │   ├── Hard-wrapped paragraphs with list-like lines.text
│       │   │       │   │   ├── Hard-wrapped paragraphs with list-like lines.xhtml
│       │   │       │   │   ├── Horizontal rules.text
│       │   │       │   │   ├── Horizontal rules.xhtml
│       │   │       │   │   ├── Images.text
│       │   │       │   │   ├── Images.xhtml
│       │   │       │   │   ├── Inline HTML (Advanced).text
│       │   │       │   │   ├── Inline HTML (Advanced).xhtml
│       │   │       │   │   ├── Inline HTML (Simple).html
│       │   │       │   │   ├── Inline HTML (Simple).text
│       │   │       │   │   ├── Inline HTML comments.html
│       │   │       │   │   ├── Inline HTML comments.text
│       │   │       │   │   ├── Links, inline style.text
│       │   │       │   │   ├── Links, inline style.xhtml
│       │   │       │   │   ├── Links, reference style.text
│       │   │       │   │   ├── Links, reference style.xhtml
│       │   │       │   │   ├── Links, shortcut references.text
│       │   │       │   │   ├── Links, shortcut references.xhtml
│       │   │       │   │   ├── Literal quotes in titles.text
│       │   │       │   │   ├── Literal quotes in titles.xhtml
│       │   │       │   │   ├── Markdown Documentation - Basics.text
│       │   │       │   │   ├── Markdown Documentation - Basics.xhtml
│       │   │       │   │   ├── Markdown Documentation - Syntax.text
│       │   │       │   │   ├── Markdown Documentation - Syntax.xhtml
│       │   │       │   │   ├── Nested blockquotes.text
│       │   │       │   │   ├── Nested blockquotes.xhtml
│       │   │       │   │   ├── Ordered and unordered lists.text
│       │   │       │   │   ├── Ordered and unordered lists.xhtml
│       │   │       │   │   ├── Strong and em together.text
│       │   │       │   │   ├── Strong and em together.xhtml
│       │   │       │   │   ├── Tabs.text
│       │   │       │   │   ├── Tabs.xhtml
│       │   │       │   │   ├── Tidyness.text
│       │   │       │   │   └── Tidyness.xhtml
│       │   │       │   ├── php-markdown-extra.mdtest/
│       │   │       │   │   ├── Abbr.text
│       │   │       │   │   ├── Abbr.xhtml
│       │   │       │   │   ├── Backtick Fenced Code Blocks Special Cases.text
│       │   │       │   │   ├── Backtick Fenced Code Blocks Special Cases.xhtml
│       │   │       │   │   ├── Backtick Fenced Code Blocks.text
│       │   │       │   │   ├── Backtick Fenced Code Blocks.xhtml
│       │   │       │   │   ├── Definition Lists.text
│       │   │       │   │   ├── Definition Lists.xhtml
│       │   │       │   │   ├── Emphasis.text
│       │   │       │   │   ├── Emphasis.xhtml
│       │   │       │   │   ├── Footnotes.text
│       │   │       │   │   ├── Footnotes.xhtml
│       │   │       │   │   ├── Headers with attributes.text
│       │   │       │   │   ├── Headers with attributes.xhtml
│       │   │       │   │   ├── Inline HTML with Markdown content.text
│       │   │       │   │   ├── Inline HTML with Markdown content.xhtml
│       │   │       │   │   ├── Link & Image Attributes.text
│       │   │       │   │   ├── Link & Image Attributes.xhtml
│       │   │       │   │   ├── Tables.text
│       │   │       │   │   ├── Tables.xhtml
│       │   │       │   │   ├── Tilde Fenced Code Blocks Special Cases.text
│       │   │       │   │   ├── Tilde Fenced Code Blocks Special Cases.xhtml
│       │   │       │   │   ├── Tilde Fenced Code Blocks.text
│       │   │       │   │   └── Tilde Fenced Code Blocks.xhtml
│       │   │       │   └── php-markdown.mdtest/
│       │   │       │       ├── Adjacent Lists.text
│       │   │       │       ├── Adjacent Lists.xhtml
│       │   │       │       ├── Auto Links.text
│       │   │       │       ├── Auto Links.xhtml
│       │   │       │       ├── Backslash escapes.text
│       │   │       │       ├── Backslash escapes.xhtml
│       │   │       │       ├── Code Spans.text
│       │   │       │       ├── Code Spans.xhtml
│       │   │       │       ├── Code block in a list item.text
│       │   │       │       ├── Code block in a list item.xhtml
│       │   │       │       ├── Code block on second line.text
│       │   │       │       ├── Code block on second line.xhtml
│       │   │       │       ├── Code block regressions.text
│       │   │       │       ├── Code block regressions.xhtml
│       │   │       │       ├── Email auto links.text
│       │   │       │       ├── Email auto links.xhtml
│       │   │       │       ├── Emphasis.text
│       │   │       │       ├── Emphasis.xhtml
│       │   │       │       ├── Empty List Item.text
│       │   │       │       ├── Empty List Item.xhtml
│       │   │       │       ├── Headers.text
│       │   │       │       ├── Headers.xhtml
│       │   │       │       ├── Horizontal Rules.text
│       │   │       │       ├── Horizontal Rules.xhtml
│       │   │       │       ├── Inline HTML (Simple).html
│       │   │       │       ├── Inline HTML (Simple).text
│       │   │       │       ├── Inline HTML (Span).text
│       │   │       │       ├── Inline HTML (Span).xhtml
│       │   │       │       ├── Inline HTML comments.html
│       │   │       │       ├── Inline HTML comments.text
│       │   │       │       ├── Ins & del.text
│       │   │       │       ├── Ins & del.xhtml
│       │   │       │       ├── Links, inline style.text
│       │   │       │       ├── Links, inline style.xhtml
│       │   │       │       ├── MD5 Hashes.text
│       │   │       │       ├── MD5 Hashes.xhtml
│       │   │       │       ├── Mixed OLs and ULs.text
│       │   │       │       ├── Mixed OLs and ULs.xhtml
│       │   │       │       ├── Nesting.text
│       │   │       │       ├── Nesting.xhtml
│       │   │       │       ├── PHP-Specific Bugs.text
│       │   │       │       ├── PHP-Specific Bugs.xhtml
│       │   │       │       ├── Parens in URL.text
│       │   │       │       ├── Parens in URL.xhtml
│       │   │       │       ├── Quotes in attributes.text
│       │   │       │       ├── Quotes in attributes.xhtml
│       │   │       │       ├── Tight blocks.text
│       │   │       │       ├── Tight blocks.xhtml
│       │   │       │       ├── XML empty tag.text
│       │   │       │       └── XML empty tag.xhtml
│       │   │       └── unit/
│       │   │           └── MarkdownExtraTest.php
│       │   └── php-smartypants/
│       │       ├── License.md
│       │       ├── Michelf/
│       │       │   ├── SmartyPants.inc.php
│       │       │   ├── SmartyPants.php
│       │       │   ├── SmartyPantsTypographer.inc.php
│       │       │   └── SmartyPantsTypographer.php
│       │       ├── Readme.md
│       │       ├── Readme.php
│       │       └── composer.json
│       ├── psr/
│       │   ├── cache/
│       │   │   ├── CHANGELOG.md
│       │   │   ├── LICENSE.txt
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   └── src/
│       │   │       ├── CacheException.php
│       │   │       ├── CacheItemInterface.php
│       │   │       ├── CacheItemPoolInterface.php
│       │   │       └── InvalidArgumentException.php
│       │   ├── http-client/
│       │   │   ├── CHANGELOG.md
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   └── src/
│       │   │       ├── ClientExceptionInterface.php
│       │   │       ├── ClientInterface.php
│       │   │       ├── NetworkExceptionInterface.php
│       │   │       └── RequestExceptionInterface.php
│       │   ├── http-factory/
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   └── src/
│       │   │       ├── RequestFactoryInterface.php
│       │   │       ├── ResponseFactoryInterface.php
│       │   │       ├── ServerRequestFactoryInterface.php
│       │   │       ├── StreamFactoryInterface.php
│       │   │       ├── UploadedFileFactoryInterface.php
│       │   │       └── UriFactoryInterface.php
│       │   └── http-message/
│       │       ├── CHANGELOG.md
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       ├── docs/
│       │       │   ├── PSR7-Interfaces.md
│       │       │   └── PSR7-Usage.md
│       │       └── src/
│       │           ├── MessageInterface.php
│       │           ├── RequestInterface.php
│       │           ├── ResponseInterface.php
│       │           ├── ServerRequestInterface.php
│       │           ├── StreamInterface.php
│       │           ├── UploadedFileInterface.php
│       │           └── UriInterface.php
│       ├── ralouphie/
│       │   └── getallheaders/
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       └── src/
│       │           └── getallheaders.php
│       ├── rmccue/
│       │   └── requests/
│       │       ├── CHANGELOG.md
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       └── library/
│       │           ├── Requests/
│       │           │   ├── Auth/
│       │           │   │   └── Basic.php
│       │           │   ├── Auth.php
│       │           │   ├── Cookie/
│       │           │   │   └── Jar.php
│       │           │   ├── Cookie.php
│       │           │   ├── Exception/
│       │           │   │   ├── HTTP/
│       │           │   │   │   ├── 304.php
│       │           │   │   │   ├── 305.php
│       │           │   │   │   ├── 306.php
│       │           │   │   │   ├── 400.php
│       │           │   │   │   ├── 401.php
│       │           │   │   │   ├── 402.php
│       │           │   │   │   ├── 403.php
│       │           │   │   │   ├── 404.php
│       │           │   │   │   ├── 405.php
│       │           │   │   │   ├── 406.php
│       │           │   │   │   ├── 407.php
│       │           │   │   │   ├── 408.php
│       │           │   │   │   ├── 409.php
│       │           │   │   │   ├── 410.php
│       │           │   │   │   ├── 411.php
│       │           │   │   │   ├── 412.php
│       │           │   │   │   ├── 413.php
│       │           │   │   │   ├── 414.php
│       │           │   │   │   ├── 415.php
│       │           │   │   │   ├── 416.php
│       │           │   │   │   ├── 417.php
│       │           │   │   │   ├── 418.php
│       │           │   │   │   ├── 428.php
│       │           │   │   │   ├── 429.php
│       │           │   │   │   ├── 431.php
│       │           │   │   │   ├── 500.php
│       │           │   │   │   ├── 501.php
│       │           │   │   │   ├── 502.php
│       │           │   │   │   ├── 503.php
│       │           │   │   │   ├── 504.php
│       │           │   │   │   ├── 505.php
│       │           │   │   │   ├── 511.php
│       │           │   │   │   └── Unknown.php
│       │           │   │   ├── HTTP.php
│       │           │   │   ├── Transport/
│       │           │   │   │   └── cURL.php
│       │           │   │   └── Transport.php
│       │           │   ├── Exception.php
│       │           │   ├── Hooker.php
│       │           │   ├── Hooks.php
│       │           │   ├── IDNAEncoder.php
│       │           │   ├── IPv6.php
│       │           │   ├── IRI.php
│       │           │   ├── Proxy/
│       │           │   │   └── HTTP.php
│       │           │   ├── Proxy.php
│       │           │   ├── Response/
│       │           │   │   └── Headers.php
│       │           │   ├── Response.php
│       │           │   ├── SSL.php
│       │           │   ├── Session.php
│       │           │   ├── Transport/
│       │           │   │   ├── cURL.php
│       │           │   │   ├── cacert.pem
│       │           │   │   └── fsockopen.php
│       │           │   ├── Transport.php
│       │           │   └── Utility/
│       │           │       ├── CaseInsensitiveDictionary.php
│       │           │       └── FilteredIterator.php
│       │           └── Requests.php
│       ├── scssphp/
│       │   └── scssphp/
│       │       ├── LICENSE.md
│       │       ├── README.md
│       │       ├── bin/
│       │       │   └── pscss
│       │       ├── composer.json
│       │       ├── scss.inc.php
│       │       └── src/
│       │           ├── Base/
│       │           │   └── Range.php
│       │           ├── Block/
│       │           │   ├── AtRootBlock.php
│       │           │   ├── CallableBlock.php
│       │           │   ├── ContentBlock.php
│       │           │   ├── DirectiveBlock.php
│       │           │   ├── EachBlock.php
│       │           │   ├── ElseBlock.php
│       │           │   ├── ElseifBlock.php
│       │           │   ├── ForBlock.php
│       │           │   ├── IfBlock.php
│       │           │   ├── MediaBlock.php
│       │           │   ├── NestedPropertyBlock.php
│       │           │   └── WhileBlock.php
│       │           ├── Block.php
│       │           ├── Cache.php
│       │           ├── Colors.php
│       │           ├── CompilationResult.php
│       │           ├── Compiler/
│       │           │   ├── CachedResult.php
│       │           │   └── Environment.php
│       │           ├── Compiler.php
│       │           ├── Exception/
│       │           │   ├── CompilerException.php
│       │           │   ├── ParserException.php
│       │           │   ├── RangeException.php
│       │           │   ├── SassException.php
│       │           │   ├── SassScriptException.php
│       │           │   └── ServerException.php
│       │           ├── Formatter/
│       │           │   ├── Compact.php
│       │           │   ├── Compressed.php
│       │           │   ├── Crunched.php
│       │           │   ├── Debug.php
│       │           │   ├── Expanded.php
│       │           │   ├── Nested.php
│       │           │   └── OutputBlock.php
│       │           ├── Formatter.php
│       │           ├── Logger/
│       │           │   ├── LoggerInterface.php
│       │           │   ├── QuietLogger.php
│       │           │   └── StreamLogger.php
│       │           ├── Node/
│       │           │   └── Number.php
│       │           ├── Node.php
│       │           ├── OutputStyle.php
│       │           ├── Parser.php
│       │           ├── SourceMap/
│       │           │   ├── Base64.php
│       │           │   ├── Base64VLQ.php
│       │           │   └── SourceMapGenerator.php
│       │           ├── Type.php
│       │           ├── Util/
│       │           │   └── Path.php
│       │           ├── Util.php
│       │           ├── ValueConverter.php
│       │           ├── Version.php
│       │           └── Warn.php
│       ├── swiftmailer/
│       │   └── swiftmailer/
│       │       ├── .gitattributes
│       │       ├── .github/
│       │       │   ├── ISSUE_TEMPLATE.md
│       │       │   ├── PULL_REQUEST_TEMPLATE.md
│       │       │   └── workflows/
│       │       │       └── tests.yml
│       │       ├── .gitignore
│       │       ├── .php_cs.dist
│       │       ├── CHANGES
│       │       ├── LICENSE
│       │       ├── README.md
│       │       ├── composer.json
│       │       ├── doc/
│       │       │   ├── headers.rst
│       │       │   ├── index.rst
│       │       │   ├── introduction.rst
│       │       │   ├── japanese.rst
│       │       │   ├── messages.rst
│       │       │   ├── plugins.rst
│       │       │   └── sending.rst
│       │       └── lib/
│       │           ├── classes/
│       │           │   ├── Swift/
│       │           │   │   ├── AddressEncoder/
│       │           │   │   │   ├── IdnAddressEncoder.php
│       │           │   │   │   └── Utf8AddressEncoder.php
│       │           │   │   ├── AddressEncoder.php
│       │           │   │   ├── AddressEncoderException.php
│       │           │   │   ├── Attachment.php
│       │           │   │   ├── ByteStream/
│       │           │   │   │   ├── AbstractFilterableInputStream.php
│       │           │   │   │   ├── ArrayByteStream.php
│       │           │   │   │   ├── FileByteStream.php
│       │           │   │   │   └── TemporaryFileByteStream.php
│       │           │   │   ├── CharacterReader/
│       │           │   │   │   ├── GenericFixedWidthReader.php
│       │           │   │   │   ├── UsAsciiReader.php
│       │           │   │   │   └── Utf8Reader.php
│       │           │   │   ├── CharacterReader.php
│       │           │   │   ├── CharacterReaderFactory/
│       │           │   │   │   └── SimpleCharacterReaderFactory.php
│       │           │   │   ├── CharacterReaderFactory.php
│       │           │   │   ├── CharacterStream/
│       │           │   │   │   ├── ArrayCharacterStream.php
│       │           │   │   │   └── NgCharacterStream.php
│       │           │   │   ├── CharacterStream.php
│       │           │   │   ├── ConfigurableSpool.php
│       │           │   │   ├── DependencyContainer.php
│       │           │   │   ├── DependencyException.php
│       │           │   │   ├── EmbeddedFile.php
│       │           │   │   ├── Encoder/
│       │           │   │   │   ├── Base64Encoder.php
│       │           │   │   │   ├── QpEncoder.php
│       │           │   │   │   └── Rfc2231Encoder.php
│       │           │   │   ├── Encoder.php
│       │           │   │   ├── Events/
│       │           │   │   │   ├── CommandEvent.php
│       │           │   │   │   ├── CommandListener.php
│       │           │   │   │   ├── Event.php
│       │           │   │   │   ├── EventDispatcher.php
│       │           │   │   │   ├── EventListener.php
│       │           │   │   │   ├── EventObject.php
│       │           │   │   │   ├── ResponseEvent.php
│       │           │   │   │   ├── ResponseListener.php
│       │           │   │   │   ├── SendEvent.php
│       │           │   │   │   ├── SendListener.php
│       │           │   │   │   ├── SimpleEventDispatcher.php
│       │           │   │   │   ├── TransportChangeEvent.php
│       │           │   │   │   ├── TransportChangeListener.php
│       │           │   │   │   ├── TransportExceptionEvent.php
│       │           │   │   │   └── TransportExceptionListener.php
│       │           │   │   ├── FailoverTransport.php
│       │           │   │   ├── FileSpool.php
│       │           │   │   ├── FileStream.php
│       │           │   │   ├── Filterable.php
│       │           │   │   ├── IdGenerator.php
│       │           │   │   ├── Image.php
│       │           │   │   ├── InputByteStream.php
│       │           │   │   ├── IoException.php
│       │           │   │   ├── KeyCache/
│       │           │   │   │   ├── ArrayKeyCache.php
│       │           │   │   │   ├── DiskKeyCache.php
│       │           │   │   │   ├── KeyCacheInputStream.php
│       │           │   │   │   ├── NullKeyCache.php
│       │           │   │   │   └── SimpleKeyCacheInputStream.php
│       │           │   │   ├── KeyCache.php
│       │           │   │   ├── LoadBalancedTransport.php
│       │           │   │   ├── Mailer/
│       │           │   │   │   ├── ArrayRecipientIterator.php
│       │           │   │   │   └── RecipientIterator.php
│       │           │   │   ├── Mailer.php
│       │           │   │   ├── MemorySpool.php
│       │           │   │   ├── Message.php
│       │           │   │   ├── Mime/
│       │           │   │   │   ├── Attachment.php
│       │           │   │   │   ├── CharsetObserver.php
│       │           │   │   │   ├── ContentEncoder/
│       │           │   │   │   │   ├── Base64ContentEncoder.php
│       │           │   │   │   │   ├── NativeQpContentEncoder.php
│       │           │   │   │   │   ├── NullContentEncoder.php
│       │           │   │   │   │   ├── PlainContentEncoder.php
│       │           │   │   │   │   ├── QpContentEncoder.php
│       │           │   │   │   │   ├── QpContentEncoderProxy.php
│       │           │   │   │   │   └── RawContentEncoder.php
│       │           │   │   │   ├── ContentEncoder.php
│       │           │   │   │   ├── EmbeddedFile.php
│       │           │   │   │   ├── EncodingObserver.php
│       │           │   │   │   ├── Header.php
│       │           │   │   │   ├── HeaderEncoder/
│       │           │   │   │   │   ├── Base64HeaderEncoder.php
│       │           │   │   │   │   └── QpHeaderEncoder.php
│       │           │   │   │   ├── HeaderEncoder.php
│       │           │   │   │   ├── Headers/
│       │           │   │   │   │   ├── AbstractHeader.php
│       │           │   │   │   │   ├── DateHeader.php
│       │           │   │   │   │   ├── IdentificationHeader.php
│       │           │   │   │   │   ├── MailboxHeader.php
│       │           │   │   │   │   ├── OpenDKIMHeader.php
│       │           │   │   │   │   ├── ParameterizedHeader.php
│       │           │   │   │   │   ├── PathHeader.php
│       │           │   │   │   │   └── UnstructuredHeader.php
│       │           │   │   │   ├── IdGenerator.php
│       │           │   │   │   ├── MimePart.php
│       │           │   │   │   ├── SimpleHeaderFactory.php
│       │           │   │   │   ├── SimpleHeaderSet.php
│       │           │   │   │   ├── SimpleMessage.php
│       │           │   │   │   └── SimpleMimeEntity.php
│       │           │   │   ├── MimePart.php
│       │           │   │   ├── NullTransport.php
│       │           │   │   ├── OutputByteStream.php
│       │           │   │   ├── Plugins/
│       │           │   │   │   ├── AntiFloodPlugin.php
│       │           │   │   │   ├── BandwidthMonitorPlugin.php
│       │           │   │   │   ├── Decorator/
│       │           │   │   │   │   └── Replacements.php
│       │           │   │   │   ├── DecoratorPlugin.php
│       │           │   │   │   ├── ImpersonatePlugin.php
│       │           │   │   │   ├── Logger.php
│       │           │   │   │   ├── LoggerPlugin.php
│       │           │   │   │   ├── Loggers/
│       │           │   │   │   │   ├── ArrayLogger.php
│       │           │   │   │   │   └── EchoLogger.php
│       │           │   │   │   ├── MessageLogger.php
│       │           │   │   │   ├── Pop/
│       │           │   │   │   │   ├── Pop3Connection.php
│       │           │   │   │   │   └── Pop3Exception.php
│       │           │   │   │   ├── PopBeforeSmtpPlugin.php
│       │           │   │   │   ├── RedirectingPlugin.php
│       │           │   │   │   ├── Reporter.php
│       │           │   │   │   ├── ReporterPlugin.php
│       │           │   │   │   ├── Reporters/
│       │           │   │   │   │   ├── HitReporter.php
│       │           │   │   │   │   └── HtmlReporter.php
│       │           │   │   │   ├── Sleeper.php
│       │           │   │   │   ├── ThrottlerPlugin.php
│       │           │   │   │   └── Timer.php
│       │           │   │   ├── Preferences.php
│       │           │   │   ├── ReplacementFilterFactory.php
│       │           │   │   ├── RfcComplianceException.php
│       │           │   │   ├── SendmailTransport.php
│       │           │   │   ├── Signer.php
│       │           │   │   ├── Signers/
│       │           │   │   │   ├── BodySigner.php
│       │           │   │   │   ├── DKIMSigner.php
│       │           │   │   │   ├── DomainKeySigner.php
│       │           │   │   │   ├── HeaderSigner.php
│       │           │   │   │   ├── OpenDKIMSigner.php
│       │           │   │   │   └── SMimeSigner.php
│       │           │   │   ├── SmtpTransport.php
│       │           │   │   ├── Spool.php
│       │           │   │   ├── SpoolTransport.php
│       │           │   │   ├── StreamFilter.php
│       │           │   │   ├── StreamFilters/
│       │           │   │   │   ├── ByteArrayReplacementFilter.php
│       │           │   │   │   ├── StringReplacementFilter.php
│       │           │   │   │   └── StringReplacementFilterFactory.php
│       │           │   │   ├── SwiftException.php
│       │           │   │   ├── Transport/
│       │           │   │   │   ├── AbstractSmtpTransport.php
│       │           │   │   │   ├── Esmtp/
│       │           │   │   │   │   ├── Auth/
│       │           │   │   │   │   │   ├── CramMd5Authenticator.php
│       │           │   │   │   │   │   ├── LoginAuthenticator.php
│       │           │   │   │   │   │   ├── NTLMAuthenticator.php
│       │           │   │   │   │   │   ├── PlainAuthenticator.php
│       │           │   │   │   │   │   └── XOAuth2Authenticator.php
│       │           │   │   │   │   ├── AuthHandler.php
│       │           │   │   │   │   ├── Authenticator.php
│       │           │   │   │   │   ├── EightBitMimeHandler.php
│       │           │   │   │   │   └── SmtpUtf8Handler.php
│       │           │   │   │   ├── EsmtpHandler.php
│       │           │   │   │   ├── EsmtpTransport.php
│       │           │   │   │   ├── FailoverTransport.php
│       │           │   │   │   ├── IoBuffer.php
│       │           │   │   │   ├── LoadBalancedTransport.php
│       │           │   │   │   ├── NullTransport.php
│       │           │   │   │   ├── SendmailTransport.php
│       │           │   │   │   ├── SmtpAgent.php
│       │           │   │   │   ├── SpoolTransport.php
│       │           │   │   │   └── StreamBuffer.php
│       │           │   │   ├── Transport.php
│       │           │   │   └── TransportException.php
│       │           │   └── Swift.php
│       │           ├── dependency_maps/
│       │           │   ├── cache_deps.php
│       │           │   ├── message_deps.php
│       │           │   ├── mime_deps.php
│       │           │   └── transport_deps.php
│       │           ├── mime_types.php
│       │           ├── preferences.php
│       │           ├── swift_required.php
│       │           └── swiftmailer_generate_mimes_config.php
│       ├── symfony/
│       │   ├── deprecation-contracts/
│       │   │   ├── CHANGELOG.md
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── composer.json
│       │   │   └── function.php
│       │   ├── polyfill-iconv/
│       │   │   ├── Iconv.php
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── Resources/
│       │   │   │   └── charset/
│       │   │   │       ├── from.big5.php
│       │   │   │       ├── from.cp037.php
│       │   │   │       ├── from.cp1006.php
│       │   │   │       ├── from.cp1026.php
│       │   │   │       ├── from.cp424.php
│       │   │   │       ├── from.cp437.php
│       │   │   │       ├── from.cp500.php
│       │   │   │       ├── from.cp737.php
│       │   │   │       ├── from.cp775.php
│       │   │   │       ├── from.cp850.php
│       │   │   │       ├── from.cp852.php
│       │   │   │       ├── from.cp855.php
│       │   │   │       ├── from.cp856.php
│       │   │   │       ├── from.cp857.php
│       │   │   │       ├── from.cp860.php
│       │   │   │       ├── from.cp861.php
│       │   │   │       ├── from.cp862.php
│       │   │   │       ├── from.cp863.php
│       │   │   │       ├── from.cp864.php
│       │   │   │       ├── from.cp865.php
│       │   │   │       ├── from.cp866.php
│       │   │   │       ├── from.cp869.php
│       │   │   │       ├── from.cp874.php
│       │   │   │       ├── from.cp875.php
│       │   │   │       ├── from.cp932.php
│       │   │   │       ├── from.cp936.php
│       │   │   │       ├── from.cp949.php
│       │   │   │       ├── from.cp950.php
│       │   │   │       ├── from.iso-8859-1.php
│       │   │   │       ├── from.iso-8859-10.php
│       │   │   │       ├── from.iso-8859-11.php
│       │   │   │       ├── from.iso-8859-13.php
│       │   │   │       ├── from.iso-8859-14.php
│       │   │   │       ├── from.iso-8859-15.php
│       │   │   │       ├── from.iso-8859-16.php
│       │   │   │       ├── from.iso-8859-2.php
│       │   │   │       ├── from.iso-8859-3.php
│       │   │   │       ├── from.iso-8859-4.php
│       │   │   │       ├── from.iso-8859-5.php
│       │   │   │       ├── from.iso-8859-6.php
│       │   │   │       ├── from.iso-8859-7.php
│       │   │   │       ├── from.iso-8859-8.php
│       │   │   │       ├── from.iso-8859-9.php
│       │   │   │       ├── from.koi8-r.php
│       │   │   │       ├── from.koi8-u.php
│       │   │   │       ├── from.us-ascii.php
│       │   │   │       ├── from.windows-1250.php
│       │   │   │       ├── from.windows-1251.php
│       │   │   │       ├── from.windows-1252.php
│       │   │   │       ├── from.windows-1253.php
│       │   │   │       ├── from.windows-1254.php
│       │   │   │       ├── from.windows-1255.php
│       │   │   │       ├── from.windows-1256.php
│       │   │   │       ├── from.windows-1257.php
│       │   │   │       ├── from.windows-1258.php
│       │   │   │       └── translit.php
│       │   │   ├── bootstrap.php
│       │   │   ├── bootstrap80.php
│       │   │   └── composer.json
│       │   ├── polyfill-intl-idn/
│       │   │   ├── Idn.php
│       │   │   ├── Info.php
│       │   │   ├── LICENSE
│       │   │   ├── README.md
│       │   │   ├── Resources/
│       │   │   │   └── unidata/
│       │   │   │       ├── DisallowedRanges.php
│       │   │   │       ├── Regex.php
│       │   │   │       ├── deviation.php
│       │   │   │       ├── disallowed.php
│       │   │   │       ├── disallowed_STD3_mapped.php
│       │   │   │       ├── disallowed_STD3_valid.php
│       │   │   │       ├── ignored.php
│       │   │   │       ├── mapped.php
│       │   │   │       └── virama.php
│       │   │   ├── bootstrap.php
│       │   │   ├── bootstrap80.php
│       │   │   └── composer.json
│       │   ├── polyfill-intl-normalizer/
│       │   │   ├── LICENSE
│       │   │   ├── Normalizer.php
│       │   │   ├── README.md
│       │   │   ├── Resources/
│       │   │   │   ├── stubs/
│       │   │   │   │   └── Normalizer.php
│       │   │   │   └── unidata/
│       │   │   │       ├── canonicalComposition.php
│       │   │   │       ├── canonicalDecomposition.php
│       │   │   │       ├── combiningClass.php
│       │   │   │       └── compatibilityDecomposition.php
│       │   │   ├── bootstrap.php
│       │   │   ├── bootstrap80.php
│       │   │   └── composer.json
│       │   └── polyfill-mbstring/
│       │       ├── LICENSE
│       │       ├── Mbstring.php
│       │       ├── README.md
│       │       ├── Resources/
│       │       │   └── unidata/
│       │       │       ├── caseFolding.php
│       │       │       ├── lowerCase.php
│       │       │       ├── titleCaseRegexp.php
│       │       │       └── upperCase.php
│       │       ├── bootstrap.php
│       │       ├── bootstrap80.php
│       │       └── composer.json
│       └── true/
│           └── punycode/
│               ├── CHANGELOG.md
│               ├── LICENSE
│               ├── README.md
│               ├── composer.json
│               └── src/
│                   ├── Exception/
│                   │   ├── DomainOutOfBoundsException.php
│                   │   ├── LabelOutOfBoundsException.php
│                   │   └── OutOfBoundsException.php
│                   └── Punycode.php
├── config/
│   └── config.inc.php
├── index.php
├── layouts/
│   ├── default/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── default.layout.css
│   │   ├── default.layout.js
│   │   ├── default.layout.webfont.css
│   │   └── layout.html
│   ├── user_layout/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── layout.html
│   │   ├── user_layout.css
│   │   └── user_layout.js
│   └── xedition/
│       ├── conf/
│       │   └── info.xml
│       ├── css/
│       │   ├── idangerous.swiper.css
│       │   ├── layout.css
│       │   ├── webfont.css
│       │   ├── welcome.css
│       │   ├── widget.login.css
│       │   └── xeicon.css
│       ├── demo/
│       │   ├── copyright.html
│       │   ├── footer.html
│       │   ├── slide.html
│       │   ├── welcome_main.html
│       │   ├── welcome_sub1.html
│       │   ├── welcome_sub2.html
│       │   └── welcome_sub3.html
│       ├── js/
│       │   ├── idangerous.swiper.js
│       │   ├── jquery.parallax-scroll.js
│       │   ├── layout.js
│       │   └── welcome.js
│       ├── lang/
│       │   └── ko.php
│       └── layout.html
├── m.layouts/
│   ├── colorCode/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── css/
│   │   │   ├── Blue/
│   │   │   │   └── layout.css
│   │   │   ├── Gray/
│   │   │   │   └── layout.css
│   │   │   ├── Orange/
│   │   │   │   └── layout.css
│   │   │   ├── Red/
│   │   │   │   └── layout.css
│   │   │   ├── nGreenA/
│   │   │   │   └── layout.css
│   │   │   └── nGreenB/
│   │   │       └── layout.css
│   │   ├── js/
│   │   │   └── layout.js
│   │   └── layout.html
│   ├── default/
│   │   ├── conf/
│   │   │   └── info.xml
│   │   ├── layout.html
│   │   └── mx.css
│   └── simpleGray/
│       ├── conf/
│       │   └── info.xml
│       ├── layout.html
│       └── mx.css
├── modules/
│   ├── addon/
│   │   ├── addon.admin.controller.php
│   │   ├── addon.admin.model.php
│   │   ├── addon.admin.view.php
│   │   ├── addon.class.php
│   │   ├── addon.controller.php
│   │   ├── addon.model.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteAddon.xml
│   │   │   ├── deleteSiteAddon.xml
│   │   │   ├── deleteSiteAddons.xml
│   │   │   ├── getAddonInfo.xml
│   │   │   ├── getAddonIsActivated.xml
│   │   │   ├── getAddons.xml
│   │   │   ├── getMAddonIsActivated.xml
│   │   │   ├── getSiteAddonInfo.xml
│   │   │   ├── getSiteAddonIsActivated.xml
│   │   │   ├── getSiteAddons.xml
│   │   │   ├── getSiteMAddonIsActivated.xml
│   │   │   ├── insertAddon.xml
│   │   │   ├── insertSiteAddon.xml
│   │   │   ├── updateAddon.xml
│   │   │   └── updateSiteAddon.xml
│   │   ├── ruleset/
│   │   │   └── updateAddonSetup.xml
│   │   ├── schemas/
│   │   │   ├── addons.xml
│   │   │   └── addons_site.xml
│   │   └── tpl/
│   │       ├── addon_info.html
│   │       ├── addon_list.html
│   │       ├── css/
│   │       │   └── addon.css
│   │       ├── filter/
│   │       │   ├── setup_addon.xml
│   │       │   └── toggle_activate_addon.xml
│   │       ├── js/
│   │       │   └── addon.js
│   │       └── setup_addon.html
│   ├── admin/
│   │   ├── admin.admin.controller.php
│   │   ├── admin.admin.model.php
│   │   ├── admin.admin.view.php
│   │   ├── admin.class.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── controllers/
│   │   │   ├── AdminMenu.php
│   │   │   ├── Base.php
│   │   │   ├── Dashboard.php
│   │   │   ├── Design.php
│   │   │   ├── Install.php
│   │   │   ├── ServerEnv.php
│   │   │   ├── maintenance/
│   │   │   │   ├── CacheReset.php
│   │   │   │   └── Cleanup.php
│   │   │   └── systemconfig/
│   │   │       ├── Advanced.php
│   │   │       ├── Debug.php
│   │   │       ├── Domains.php
│   │   │       ├── Notification.php
│   │   │       ├── Queue.php
│   │   │       ├── SEO.php
│   │   │       ├── Security.php
│   │   │       └── SiteLock.php
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── models/
│   │   │   ├── AdminMenu.php
│   │   │   ├── Favorite.php
│   │   │   ├── Icon.php
│   │   │   └── Utility.php
│   │   ├── queries/
│   │   │   ├── deleteAllFavorite.xml
│   │   │   ├── deleteFavorite.xml
│   │   │   ├── deleteFavorites.xml
│   │   │   ├── getCommentCount.xml
│   │   │   ├── getCommentDeclaredCount.xml
│   │   │   ├── getCommentDeclaredStatus.xml
│   │   │   ├── getCommentStatus.xml
│   │   │   ├── getDocumentCount.xml
│   │   │   ├── getDocumentDeclaredCount.xml
│   │   │   ├── getDocumentDeclaredStatus.xml
│   │   │   ├── getDocumentStatus.xml
│   │   │   ├── getFavorite.xml
│   │   │   ├── getFavoriteList.xml
│   │   │   ├── getFileCount.xml
│   │   │   ├── getFileStatus.xml
│   │   │   ├── getMemberCount.xml
│   │   │   ├── getMemberStatus.xml
│   │   │   ├── getSiteAllList.xml
│   │   │   ├── getSiteCountByDate.xml
│   │   │   ├── getSiteVisitors.xml
│   │   │   ├── getTodayCommentCount.xml
│   │   │   ├── getTodayTrackbackCount.xml
│   │   │   ├── getTotalSiteVisitors.xml
│   │   │   ├── getTotalVisitors.xml
│   │   │   ├── getTrackbackCount.xml
│   │   │   ├── getTrackbackStatus.xml
│   │   │   ├── getVisitors.xml
│   │   │   └── insertFavorite.xml
│   │   ├── ruleset/
│   │   │   ├── insertThemeInfo.xml
│   │   │   └── sitelock.xml
│   │   ├── schemas/
│   │   │   └── admin_favorite.xml
│   │   └── tpl/
│   │       ├── _admin_common.html
│   │       ├── _dashboard_counter.html
│   │       ├── _dashboard_default.html
│   │       ├── _footer.html
│   │       ├── _header.html
│   │       ├── admin_setup.html
│   │       ├── cleanup.html
│   │       ├── config_advanced.html
│   │       ├── config_debug.html
│   │       ├── config_domains.html
│   │       ├── config_domains_edit.html
│   │       ├── config_header.html
│   │       ├── config_notification.html
│   │       ├── config_queue.html
│   │       ├── config_security.html
│   │       ├── config_seo.html
│   │       ├── config_sitelock.html
│   │       ├── css/
│   │       │   ├── admin.bootstrap.css
│   │       │   ├── admin.css
│   │       │   ├── admin.iefix.css
│   │       │   └── queue_config.scss
│   │       ├── favicon_upload.html
│   │       ├── index.html
│   │       ├── js/
│   │       │   ├── admin.js
│   │       │   ├── cleanup.js
│   │       │   ├── config.js
│   │       │   ├── dashboard_counter.js
│   │       │   ├── dashboard_default.js
│   │       │   ├── jquery.jstree.js
│   │       │   ├── jquery.tmpl.js
│   │       │   ├── menu_setup.js
│   │       │   ├── notification_config.js
│   │       │   ├── queue_config.js
│   │       │   └── themes/
│   │       │       ├── apple/
│   │       │       │   └── style.css
│   │       │       ├── classic/
│   │       │       │   └── style.css
│   │       │       ├── default/
│   │       │       │   └── style.css
│   │       │       └── default-rtl/
│   │       │           └── style.css
│   │       ├── layout.html
│   │       ├── popup_layout.html
│   │       └── server_env.html
│   ├── adminlogging/
│   │   ├── adminlogging.class.php
│   │   ├── adminlogging.controller.php
│   │   ├── adminlogging.model.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── queries/
│   │   │   └── insertLog.xml
│   │   └── schemas/
│   │       └── admin_log.xml
│   ├── advanced_mailer/
│   │   ├── advanced_mailer.admin.controller.php
│   │   ├── advanced_mailer.admin.view.php
│   │   ├── advanced_mailer.class.php
│   │   ├── advanced_mailer.controller.php
│   │   ├── advanced_mailer.model.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   └── ko.php
│   │   ├── queries/
│   │   │   ├── countMailLogByType.xml
│   │   │   ├── countPushLogByType.xml
│   │   │   ├── countSMSLogByType.xml
│   │   │   ├── deleteMailLogs.xml
│   │   │   ├── deletePushLogs.xml
│   │   │   ├── deleteSMSLogs.xml
│   │   │   ├── getMailLogByType.xml
│   │   │   ├── getPushLogByType.xml
│   │   │   ├── getSMSLogByType.xml
│   │   │   ├── insertMailLog.xml
│   │   │   ├── insertPushLog.xml
│   │   │   └── insertSMSLog.xml
│   │   ├── schemas/
│   │   │   ├── advanced_mailer_log.xml
│   │   │   ├── advanced_mailer_push_log.xml
│   │   │   └── advanced_mailer_sms_log.xml
│   │   └── tpl/
│   │       ├── common.html
│   │       ├── config.html
│   │       ├── css/
│   │       │   ├── config.css
│   │       │   ├── spf_dkim.css
│   │       │   └── view_log.css
│   │       ├── exceptions.html
│   │       ├── js/
│   │       │   ├── config.js
│   │       │   ├── spf_dkim.js
│   │       │   └── view_log.js
│   │       ├── mail_log.html
│   │       ├── mail_test.html
│   │       ├── push_log.html
│   │       ├── push_test.html
│   │       ├── sms_log.html
│   │       ├── sms_test.html
│   │       ├── spf_dkim.html
│   │       └── test_email.html
│   ├── autoinstall/
│   │   ├── autoinstall.admin.controller.php
│   │   ├── autoinstall.admin.model.php
│   │   ├── autoinstall.admin.view.php
│   │   ├── autoinstall.class.php
│   │   ├── autoinstall.lib.php
│   │   ├── autoinstall.model.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteCategory.xml
│   │   │   ├── deleteInstalledPackage.xml
│   │   │   ├── deletePackage.xml
│   │   │   ├── deletePackages.xml
│   │   │   ├── getCategories.xml
│   │   │   ├── getCategory.xml
│   │   │   ├── getHaveInstance.xml
│   │   │   ├── getInstalledPackage.xml
│   │   │   ├── getInstalledPackageCount.xml
│   │   │   ├── getInstalledPackageList.xml
│   │   │   ├── getInstalledPackages.xml
│   │   │   ├── getLatestPackage.xml
│   │   │   ├── getNeedUpdate.xml
│   │   │   ├── getPackage.xml
│   │   │   ├── getPackageCount.xml
│   │   │   ├── getPackageSrlByPath.xml
│   │   │   ├── getPackages.xml
│   │   │   ├── insertCategory.xml
│   │   │   ├── insertInstalledPackage.xml
│   │   │   ├── insertPackage.xml
│   │   │   ├── updateCategory.xml
│   │   │   ├── updateInstalledPackage.xml
│   │   │   └── updatePackage.xml
│   │   ├── schemas/
│   │   │   ├── ai_installed_packages.xml
│   │   │   ├── ai_remote_categories.xml
│   │   │   └── autoinstall_packages.xml
│   │   └── tpl/
│   │       ├── category.html
│   │       ├── config.html
│   │       ├── css/
│   │       │   └── autoinstall.css
│   │       ├── filter/
│   │       │   └── insert_config.xml
│   │       ├── header.html
│   │       ├── index.html
│   │       ├── install.html
│   │       ├── js/
│   │       │   ├── autoinstall.js
│   │       │   └── waiting.js
│   │       ├── list.html
│   │       └── uninstall.html
│   ├── board/
│   │   ├── board.admin.controller.php
│   │   ├── board.admin.model.php
│   │   ├── board.admin.view.php
│   │   ├── board.api.php
│   │   ├── board.class.php
│   │   ├── board.controller.php
│   │   ├── board.mobile.php
│   │   ├── board.model.php
│   │   ├── board.view.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── m.skins/
│   │   │   ├── default/
│   │   │   │   ├── _list.html
│   │   │   │   ├── category.html
│   │   │   │   ├── comment.html
│   │   │   │   ├── comment_form.html
│   │   │   │   ├── css/
│   │   │   │   │   └── mboard.css
│   │   │   │   ├── delete_comment_form.html
│   │   │   │   ├── delete_form.html
│   │   │   │   ├── input_password_form.html
│   │   │   │   ├── js/
│   │   │   │   │   └── mboard.js
│   │   │   │   ├── list.html
│   │   │   │   ├── read.html
│   │   │   │   ├── skin.xml
│   │   │   │   └── write_form.html
│   │   │   └── simpleGray/
│   │   │       ├── _list.html
│   │   │       ├── category.html
│   │   │       ├── comment.html
│   │   │       ├── comment_form.html
│   │   │       ├── css/
│   │   │       │   └── mboard.css
│   │   │       ├── delete_comment_form.html
│   │   │       ├── delete_form.html
│   │   │       ├── input_password_form.html
│   │   │       ├── js/
│   │   │       │   └── mboard.js
│   │   │       ├── list.html
│   │   │       ├── read.html
│   │   │       ├── skin.xml
│   │   │       └── write_form.html
│   │   ├── models/
│   │   │   └── Features.php
│   │   ├── queries/
│   │   │   ├── getAllBoard.xml
│   │   │   └── getBoardList.xml
│   │   ├── ruleset/
│   │   │   ├── insertBoard.xml
│   │   │   └── insertBoardForBasic.xml
│   │   ├── skins/
│   │   │   ├── default/
│   │   │   │   ├── _comment.html
│   │   │   │   ├── _footer.html
│   │   │   │   ├── _header.html
│   │   │   │   ├── _read.html
│   │   │   │   ├── _trackback.html
│   │   │   │   ├── board.default.css
│   │   │   │   ├── board.default.js
│   │   │   │   ├── comment.html
│   │   │   │   ├── comment_form.html
│   │   │   │   ├── delete_comment_form.html
│   │   │   │   ├── delete_form.html
│   │   │   │   ├── delete_trackback_form.html
│   │   │   │   ├── input_password_form.html
│   │   │   │   ├── list.html
│   │   │   │   ├── message.html
│   │   │   │   ├── skin.xml
│   │   │   │   ├── tag_list.html
│   │   │   │   └── write_form.html
│   │   │   └── xedition/
│   │   │       ├── _comment.html
│   │   │       ├── _footer.html
│   │   │       ├── _header.html
│   │   │       ├── _read.html
│   │   │       ├── _trackback.html
│   │   │       ├── board.default.css
│   │   │       ├── board.default.js
│   │   │       ├── comment.html
│   │   │       ├── comment_form.html
│   │   │       ├── delete_comment_form.html
│   │   │       ├── delete_form.html
│   │   │       ├── delete_trackback_form.html
│   │   │       ├── input_password_form.html
│   │   │       ├── list.html
│   │   │       ├── message.html
│   │   │       ├── skin.xml
│   │   │       ├── tag_list.html
│   │   │       ├── update_list.html
│   │   │       ├── update_view.html
│   │   │       ├── vote_log.html
│   │   │       └── write_form.html
│   │   └── tpl/
│   │       ├── addition_setup.html
│   │       ├── board_delete.html
│   │       ├── board_insert.html
│   │       ├── board_setup_basic.html
│   │       ├── category_list.html
│   │       ├── extra_vars.html
│   │       ├── filter/
│   │       │   ├── delete_board.xml
│   │       │   ├── delete_comment.xml
│   │       │   ├── delete_document.xml
│   │       │   ├── delete_trackback.xml
│   │       │   ├── input_password.xml
│   │       │   ├── insert.xml
│   │       │   ├── insert_admin.xml
│   │       │   ├── insert_board.xml
│   │       │   ├── insert_comment.xml
│   │       │   ├── search.xml
│   │       │   ├── update.xml
│   │       │   ├── update_category.xml
│   │       │   └── vote.xml
│   │       ├── grant_list.html
│   │       ├── header.html
│   │       ├── index.html
│   │       ├── js/
│   │       │   ├── board.js
│   │       │   ├── board_admin.js
│   │       │   └── rewrite.js
│   │       ├── skin_info.html
│   │       └── smartphone/
│   │           ├── comment_list.html
│   │           ├── list.html
│   │           └── view_document.html
│   ├── comment/
│   │   ├── comment.admin.controller.php
│   │   ├── comment.admin.view.php
│   │   ├── comment.class.php
│   │   ├── comment.controller.php
│   │   ├── comment.item.php
│   │   ├── comment.model.php
│   │   ├── comment.view.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteComment.xml
│   │   │   ├── deleteCommentList.xml
│   │   │   ├── deleteCommentVotedLog.xml
│   │   │   ├── deleteComments.xml
│   │   │   ├── deleteCommentsList.xml
│   │   │   ├── deleteDeclaredCommentLog.xml
│   │   │   ├── deleteDeclaredComments.xml
│   │   │   ├── deleteModuleComments.xml
│   │   │   ├── deleteModuleCommentsList.xml
│   │   │   ├── getAllComments.xml
│   │   │   ├── getChildCommentCount.xml
│   │   │   ├── getChildComments.xml
│   │   │   ├── getComment.xml
│   │   │   ├── getCommentCount.xml
│   │   │   ├── getCommentCountByMemberSrl.xml
│   │   │   ├── getCommentDeclaredLogInfo.xml
│   │   │   ├── getCommentDepth.xml
│   │   │   ├── getCommentList.xml
│   │   │   ├── getCommentListByMemberSrl.xml
│   │   │   ├── getCommentListItem.xml
│   │   │   ├── getCommentPage.xml
│   │   │   ├── getCommentPageItem.xml
│   │   │   ├── getCommentPageList.xml
│   │   │   ├── getCommentParentNextSibling.xml
│   │   │   ├── getCommentVotedLog.xml
│   │   │   ├── getCommentVotedLogInfo.xml
│   │   │   ├── getCommentVotedLogMulti.xml
│   │   │   ├── getComments.xml
│   │   │   ├── getCommentsByDocumentSrls.xml
│   │   │   ├── getDeclaredComment.xml
│   │   │   ├── getDeclaredLatest.xml
│   │   │   ├── getDeclaredList.xml
│   │   │   ├── getDeclaredLogByCommentSrl.xml
│   │   │   ├── getDistinctModules.xml
│   │   │   ├── getModuleList.xml
│   │   │   ├── getNewestCommentList.xml
│   │   │   ├── getTotalCommentCountByGroupStatus.xml
│   │   │   ├── getTotalCommentCountWithinMemberByGroupStatus.xml
│   │   │   ├── getTotalCommentList.xml
│   │   │   ├── getTotalCommentListWithinMember.xml
│   │   │   ├── getTotalCommentListWithoutJoin.xml
│   │   │   ├── getVotedMemberList.xml
│   │   │   ├── insertComment.xml
│   │   │   ├── insertCommentDeclaredLog.xml
│   │   │   ├── insertCommentList.xml
│   │   │   ├── insertCommentVotedLog.xml
│   │   │   ├── insertDeclaredComment.xml
│   │   │   ├── updateBlamedCount.xml
│   │   │   ├── updateComment.xml
│   │   │   ├── updateCommentByDelete.xml
│   │   │   ├── updateCommentByRestore.xml
│   │   │   ├── updateCommentListArrange.xml
│   │   │   ├── updateCommentListModule.xml
│   │   │   ├── updateCommentModule.xml
│   │   │   ├── updateDeclaredComment.xml
│   │   │   ├── updateDeclaredCommentCancel.xml
│   │   │   ├── updatePublishedStatus.xml
│   │   │   ├── updateUploadedCount.xml
│   │   │   └── updateVotedCount.xml
│   │   ├── ruleset/
│   │   │   ├── deleteChecked.xml
│   │   │   ├── insertCommentModuleConfig.xml
│   │   │   └── insertDeclare.xml
│   │   ├── schemas/
│   │   │   ├── comment_declared.xml
│   │   │   ├── comment_declared_log.xml
│   │   │   ├── comment_voted_log.xml
│   │   │   ├── comments.xml
│   │   │   └── comments_list.xml
│   │   └── tpl/
│   │       ├── comment_list.html
│   │       ├── comment_module_config.html
│   │       ├── css/
│   │       │   └── declare_comment.css
│   │       ├── declare_comment.html
│   │       ├── declared_list.html
│   │       ├── declared_log.html
│   │       ├── filter/
│   │       │   ├── delete_checked.xml
│   │       │   └── insert_comment_module_config.xml
│   │       ├── header.html
│   │       └── js/
│   │           └── comment_admin.js
│   ├── communication/
│   │   ├── communication.admin.controller.php
│   │   ├── communication.admin.model.php
│   │   ├── communication.admin.view.php
│   │   ├── communication.class.php
│   │   ├── communication.controller.php
│   │   ├── communication.mobile.php
│   │   ├── communication.model.php
│   │   ├── communication.view.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── m.skins/
│   │   │   └── default/
│   │   │       ├── css/
│   │   │       │   └── mcommunication.css
│   │   │       ├── friends.html
│   │   │       ├── js/
│   │   │       │   └── communication.js
│   │   │       ├── message_box.html
│   │   │       ├── messages.html
│   │   │       ├── read_message.html
│   │   │       ├── send_message.html
│   │   │       └── skin.xml
│   │   ├── queries/
│   │   │   ├── addFriend.xml
│   │   │   ├── addFriendGroup.xml
│   │   │   ├── deleteFriend.xml
│   │   │   ├── deleteFriendGroup.xml
│   │   │   ├── deleteMessage.xml
│   │   │   ├── deleteMessages.xml
│   │   │   ├── deleteMessagesMember.xml
│   │   │   ├── getFriendGroup.xml
│   │   │   ├── getFriendGroups.xml
│   │   │   ├── getFriends.xml
│   │   │   ├── getMessage.xml
│   │   │   ├── getMessages.xml
│   │   │   ├── getNewMessage.xml
│   │   │   ├── getNewMessageCount.xml
│   │   │   ├── getReadedMessages.xml
│   │   │   ├── getReceivedMessages.xml
│   │   │   ├── getRelatedMessages.xml
│   │   │   ├── getSendedMessages.xml
│   │   │   ├── getStoredMessages.xml
│   │   │   ├── isAddedFriend.xml
│   │   │   ├── moveFriend.xml
│   │   │   ├── renameFriendGroup.xml
│   │   │   ├── sendMessage.xml
│   │   │   ├── setMessageReaded.xml
│   │   │   ├── setMessageStored.xml
│   │   │   └── updateAllowMessage.xml
│   │   ├── ruleset/
│   │   │   ├── addFriend.xml
│   │   │   ├── addFriendGroup.xml
│   │   │   ├── deleteCheckedFriend.xml
│   │   │   ├── insertConfig.xml
│   │   │   ├── moveCheckedFriend.xml
│   │   │   └── sendMessage.xml
│   │   ├── schemas/
│   │   │   ├── member_friend.xml
│   │   │   ├── member_friend_group.xml
│   │   │   └── member_message.xml
│   │   ├── scripts/
│   │   │   └── cleanMessageFiles.php
│   │   ├── skins/
│   │   │   └── default/
│   │   │       ├── add_friend.html
│   │   │       ├── add_friend_group.html
│   │   │       ├── common_footer.html
│   │   │       ├── common_header.html
│   │   │       ├── css/
│   │   │       │   └── communication.css
│   │   │       ├── filter/
│   │   │       │   ├── add_friend.xml
│   │   │       │   ├── add_friend_group.xml
│   │   │       │   ├── delete_checked_friend.xml
│   │   │       │   ├── delete_checked_message.xml
│   │   │       │   ├── delete_friend_group.xml
│   │   │       │   ├── move_friend.xml
│   │   │       │   ├── send_message.xml
│   │   │       │   └── update_allow_message.xml
│   │   │       ├── friends.html
│   │   │       ├── js/
│   │   │       │   └── communication.js
│   │   │       ├── messages.html
│   │   │       ├── new_message.html
│   │   │       ├── send_message.html
│   │   │       └── skin.xml
│   │   └── tpl/
│   │       ├── colorset_list.html
│   │       ├── filter/
│   │       │   └── insert_config.xml
│   │       ├── index.html
│   │       └── js/
│   │           ├── communication_admin.js
│   │           ├── member_communication.js
│   │           └── window_type.js
│   ├── counter/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── counter.admin.view.php
│   │   ├── counter.class.php
│   │   ├── counter.controller.php
│   │   ├── counter.model.php
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── getCounterLog.xml
│   │   │   ├── getCounterLogStatus.xml
│   │   │   ├── getCounterStatus.xml
│   │   │   ├── getCounterStatusDays.xml
│   │   │   ├── getSiteCounterLogStatus.xml
│   │   │   ├── getSiteLogDate.xml
│   │   │   ├── getStartLogDate.xml
│   │   │   ├── getTodayStatus.xml
│   │   │   ├── insertCounterLog.xml
│   │   │   ├── insertTodayStatus.xml
│   │   │   ├── updateCounterPageview.xml
│   │   │   ├── updateCounterUnique.xml
│   │   │   ├── updateTotalCounterPageview.xml
│   │   │   └── updateTotalCounterUnique.xml
│   │   ├── schemas/
│   │   │   ├── counter_log.xml
│   │   │   ├── counter_site_status.xml
│   │   │   └── counter_status.xml
│   │   └── tpl/
│   │       ├── counter.css
│   │       ├── index.html
│   │       └── js/
│   │           └── counter_admin.js
│   ├── document/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── document.admin.controller.php
│   │   ├── document.admin.model.php
│   │   ├── document.admin.view.php
│   │   ├── document.class.php
│   │   ├── document.controller.php
│   │   ├── document.item.php
│   │   ├── document.model.php
│   │   ├── document.view.php
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteAlias.xml
│   │   │   ├── deleteCategory.xml
│   │   │   ├── deleteDeclared.xml
│   │   │   ├── deleteDeclaredDocument.xml
│   │   │   ├── deleteDeclaredDocumentLog.xml
│   │   │   ├── deleteDeclaredDocuments.xml
│   │   │   ├── deleteDocument.xml
│   │   │   ├── deleteDocumentDeclaredLog.xml
│   │   │   ├── deleteDocumentExtraKeys.xml
│   │   │   ├── deleteDocumentExtraVars.xml
│   │   │   ├── deleteDocumentReadedLog.xml
│   │   │   ├── deleteDocumentUpdateLog.xml
│   │   │   ├── deleteDocumentVotedLog.xml
│   │   │   ├── deleteHistory.xml
│   │   │   ├── deleteModuleCategory.xml
│   │   │   ├── deleteModuleDocument.xml
│   │   │   ├── deleteTrash.xml
│   │   │   ├── getAliases.xml
│   │   │   ├── getAllModules.xml
│   │   │   ├── getCategory.xml
│   │   │   ├── getCategoryDocumentCount.xml
│   │   │   ├── getCategoryDocumentCounts.xml
│   │   │   ├── getCategoryList.xml
│   │   │   ├── getChildCategoryCount.xml
│   │   │   ├── getChildCategoryMinListOrder.xml
│   │   │   ├── getDailyArchivedList.xml
│   │   │   ├── getDeclaredDocument.xml
│   │   │   ├── getDeclaredLatest.xml
│   │   │   ├── getDeclaredList.xml
│   │   │   ├── getDeclaredLogByDocumentSrl.xml
│   │   │   ├── getDocument.xml
│   │   │   ├── getDocumentCount.xml
│   │   │   ├── getDocumentCountByDate.xml
│   │   │   ├── getDocumentCountByGroupStatus.xml
│   │   │   ├── getDocumentCountByMemberSrl.xml
│   │   │   ├── getDocumentDeclaredLogInfo.xml
│   │   │   ├── getDocumentDivision.xml
│   │   │   ├── getDocumentDivisionCount.xml
│   │   │   ├── getDocumentDivisionUseIndex.xml
│   │   │   ├── getDocumentExtraKeys.xml
│   │   │   ├── getDocumentExtraVars.xml
│   │   │   ├── getDocumentExtraVarsCount.xml
│   │   │   ├── getDocumentList.xml
│   │   │   ├── getDocumentListByMemberSrl.xml
│   │   │   ├── getDocumentListExtraSort.xml
│   │   │   ├── getDocumentListPage.xml
│   │   │   ├── getDocumentListUseIndex.xml
│   │   │   ├── getDocumentListWithExtraVars.xml
│   │   │   ├── getDocumentListWithExtraVarsPage.xml
│   │   │   ├── getDocumentListWithinComment.xml
│   │   │   ├── getDocumentListWithinCommentPage.xml
│   │   │   ├── getDocumentListWithinExtraVars.xml
│   │   │   ├── getDocumentListWithinExtraVarsExtraSort.xml
│   │   │   ├── getDocumentListWithinMember.xml
│   │   │   ├── getDocumentListWithinTag.xml
│   │   │   ├── getDocumentListWithinTagPage.xml
│   │   │   ├── getDocumentMaxExtraKeyIdx.xml
│   │   │   ├── getDocumentNumericExtraKeys.xml
│   │   │   ├── getDocumentReadedLogInfo.xml
│   │   │   ├── getDocumentSrlByAlias.xml
│   │   │   ├── getDocumentSrlByTitle.xml
│   │   │   ├── getDocumentTags.xml
│   │   │   ├── getDocumentTranslationLangCodes.xml
│   │   │   ├── getDocumentUpdateLog.xml
│   │   │   ├── getDocumentVotedLog.xml
│   │   │   ├── getDocumentVotedLogInfo.xml
│   │   │   ├── getDocuments.xml
│   │   │   ├── getDocumentsExtraVars.xml
│   │   │   ├── getGroupsExtraKeys.xml
│   │   │   ├── getGroupsExtraVars.xml
│   │   │   ├── getHistories.xml
│   │   │   ├── getHistory.xml
│   │   │   ├── getModuleList.xml
│   │   │   ├── getMonthlyArchivedList.xml
│   │   │   ├── getNoticeList.xml
│   │   │   ├── getTrash.xml
│   │   │   ├── getTrashByDocumentSrl.xml
│   │   │   ├── getTrashList.xml
│   │   │   ├── getUpdateLog.xml
│   │   │   ├── getUpdateLogAdminisExists.xml
│   │   │   ├── getVotedMemberList.xml
│   │   │   ├── insertAlias.xml
│   │   │   ├── insertCategory.xml
│   │   │   ├── insertDeclaredDocument.xml
│   │   │   ├── insertDocument.xml
│   │   │   ├── insertDocumentDeclaredLog.xml
│   │   │   ├── insertDocumentExtraKey.xml
│   │   │   ├── insertDocumentExtraVar.xml
│   │   │   ├── insertDocumentReadedLog.xml
│   │   │   ├── insertDocumentUpdateLog.xml
│   │   │   ├── insertDocumentVotedLog.xml
│   │   │   ├── insertHistory.xml
│   │   │   ├── insertTrash.xml
│   │   │   ├── isExistsExtraKey.xml
│   │   │   ├── moveDocumentExtraVars.xml
│   │   │   ├── updateBlamedCount.xml
│   │   │   ├── updateCategory.xml
│   │   │   ├── updateCategoryCount.xml
│   │   │   ├── updateCategoryIsDefault.xml
│   │   │   ├── updateCategoryOrder.xml
│   │   │   ├── updateCommentCount.xml
│   │   │   ├── updateDeclaredDocument.xml
│   │   │   ├── updateDeclaredDocumentCancel.xml
│   │   │   ├── updateDocument.xml
│   │   │   ├── updateDocumentCategory.xml
│   │   │   ├── updateDocumentCommentStatus.xml
│   │   │   ├── updateDocumentExtraKey.xml
│   │   │   ├── updateDocumentExtraKeyEid.xml
│   │   │   ├── updateDocumentExtraKeyIdx.xml
│   │   │   ├── updateDocumentExtraKeyIdxOrder.xml
│   │   │   ├── updateDocumentExtraVar.xml
│   │   │   ├── updateDocumentExtraVarEid.xml
│   │   │   ├── updateDocumentExtraVarIdx.xml
│   │   │   ├── updateDocumentExtraVarIdxOrder.xml
│   │   │   ├── updateDocumentExtraVarSortValue.xml
│   │   │   ├── updateDocumentExtraVarsModule.xml
│   │   │   ├── updateDocumentModule.xml
│   │   │   ├── updateDocumentOrder.xml
│   │   │   ├── updateDocumentStatus.xml
│   │   │   ├── updateDocumentTags.xml
│   │   │   ├── updateDocumentsAllowCommentTrackback.xml
│   │   │   ├── updateDocumentsLangCode.xml
│   │   │   ├── updateDocumentsModule.xml
│   │   │   ├── updateDocumentsSecret.xml
│   │   │   ├── updateReadedCount.xml
│   │   │   ├── updateTrackbackCount.xml
│   │   │   ├── updateUploadedCount.xml
│   │   │   └── updateVotedCount.xml
│   │   ├── ruleset/
│   │   │   ├── deleteAlias.xml
│   │   │   ├── insertAlias.xml
│   │   │   ├── insertCategory.xml
│   │   │   ├── insertDeclare.xml
│   │   │   └── insertExtraVar.xml
│   │   ├── schemas/
│   │   │   ├── document_aliases.xml
│   │   │   ├── document_categories.xml
│   │   │   ├── document_declared.xml
│   │   │   ├── document_declared_log.xml
│   │   │   ├── document_extra_keys.xml
│   │   │   ├── document_extra_vars.xml
│   │   │   ├── document_histories.xml
│   │   │   ├── document_readed_log.xml
│   │   │   ├── document_trash.xml
│   │   │   ├── document_update_log.xml
│   │   │   ├── document_voted_log.xml
│   │   │   └── documents.xml
│   │   └── tpl/
│   │       ├── category_list.html
│   │       ├── checked_list.html
│   │       ├── css/
│   │       │   ├── declare_document.css
│   │       │   └── document_admin.css
│   │       ├── declare_document.html
│   │       ├── declared_list.html
│   │       ├── declared_log.html
│   │       ├── document_alias.html
│   │       ├── document_config.html
│   │       ├── document_list.html
│   │       ├── document_module_config.html
│   │       ├── document_trash_list.html
│   │       ├── extra_keys.html
│   │       ├── filter/
│   │       │   ├── delete_alias.xml
│   │       │   ├── delete_category.xml
│   │       │   ├── delete_checked.xml
│   │       │   ├── delete_extra_var.xml
│   │       │   ├── insert_alias.xml
│   │       │   ├── insert_category.xml
│   │       │   ├── insert_config.xml
│   │       │   ├── insert_document_module_config.xml
│   │       │   ├── insert_extra_var.xml
│   │       │   ├── manage_checked_document.xml
│   │       │   ├── move_category.xml
│   │       │   └── restore_trash.xml
│   │       ├── header.html
│   │       ├── js/
│   │       │   ├── document_admin.js
│   │       │   ├── document_category.js
│   │       │   └── document_extra_keys.js
│   │       ├── preview_page.html
│   │       ├── print_page.html
│   │       └── saved_list_popup.html
│   ├── editor/
│   │   ├── components/
│   │   │   ├── emoticon/
│   │   │   │   ├── emoticon.class.php
│   │   │   │   ├── info.xml
│   │   │   │   └── tpl/
│   │   │   │       ├── images/
│   │   │   │       │   └── Twemoji/
│   │   │   │       │       ├── LICENSE
│   │   │   │       │       ├── LICENSE-GRAPHICS
│   │   │   │       │       ├── README.md
│   │   │   │       │       └── skin.xml
│   │   │   │       ├── popup.html
│   │   │   │       ├── popup.js
│   │   │   │       └── popup.scss
│   │   │   ├── image_gallery/
│   │   │   │   ├── image_gallery.class.php
│   │   │   │   ├── info.xml
│   │   │   │   ├── lang/
│   │   │   │   │   └── lang.xml
│   │   │   │   └── tpl/
│   │   │   │       ├── gallery.js
│   │   │   │       ├── list_gallery.html
│   │   │   │       ├── list_gallery.js
│   │   │   │       ├── popup.css
│   │   │   │       ├── popup.html
│   │   │   │       ├── popup.js
│   │   │   │       ├── slide_gallery.css
│   │   │   │       ├── slide_gallery.html
│   │   │   │       └── slide_gallery.js
│   │   │   ├── image_link/
│   │   │   │   ├── image_link.class.php
│   │   │   │   ├── info.xml
│   │   │   │   ├── lang/
│   │   │   │   │   └── lang.xml
│   │   │   │   └── tpl/
│   │   │   │       ├── popup.css
│   │   │   │       ├── popup.html
│   │   │   │       └── popup.js
│   │   │   └── poll_maker/
│   │   │       ├── info.xml
│   │   │       ├── lang/
│   │   │       │   └── lang.xml
│   │   │       ├── poll_maker.class.php
│   │   │       └── tpl/
│   │   │           ├── filter/
│   │   │           │   └── insert_poll.xml
│   │   │           ├── popup.css
│   │   │           ├── popup.html
│   │   │           └── popup.js
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── editor.admin.controller.php
│   │   ├── editor.admin.view.php
│   │   ├── editor.api.php
│   │   ├── editor.class.php
│   │   ├── editor.controller.php
│   │   ├── editor.model.php
│   │   ├── editor.view.php
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteSavedDoc.xml
│   │   │   ├── deleteSiteComponent.xml
│   │   │   ├── getComponent.xml
│   │   │   ├── getComponentList.xml
│   │   │   ├── getSavedDocument.xml
│   │   │   ├── getSiteComponent.xml
│   │   │   ├── getSiteComponentList.xml
│   │   │   ├── insertComponent.xml
│   │   │   ├── insertSavedDoc.xml
│   │   │   ├── insertSiteComponent.xml
│   │   │   ├── isComponentInserted.xml
│   │   │   ├── isSiteComponentInserted.xml
│   │   │   ├── updateComponent.xml
│   │   │   └── updateSiteComponent.xml
│   │   ├── ruleset/
│   │   │   ├── componentOrderAndUse.xml
│   │   │   ├── generalConfig.xml
│   │   │   └── setupComponent.xml
│   │   ├── schemas/
│   │   │   ├── editor_autosave.xml
│   │   │   ├── editor_components.xml
│   │   │   └── editor_components_site.xml
│   │   ├── skins/
│   │   │   ├── ckeditor/
│   │   │   │   ├── config.blade.php
│   │   │   │   ├── css/
│   │   │   │   │   └── ckeditor.scss
│   │   │   │   ├── editor.html
│   │   │   │   ├── file_upload.html
│   │   │   │   ├── js/
│   │   │   │   │   ├── editor.js
│   │   │   │   │   ├── file_upload.js
│   │   │   │   │   └── xe_textarea.js
│   │   │   │   ├── lang/
│   │   │   │   │   ├── en.php
│   │   │   │   │   └── ko.php
│   │   │   │   └── skin.xml
│   │   │   ├── simpleeditor/
│   │   │   │   ├── css/
│   │   │   │   │   └── simpleeditor.scss
│   │   │   │   ├── editor.html
│   │   │   │   ├── js/
│   │   │   │   │   ├── interface.js
│   │   │   │   │   └── simpleeditor.js
│   │   │   │   └── skin.xml
│   │   │   └── textarea/
│   │   │       ├── css/
│   │   │       │   └── textarea.css
│   │   │       ├── editor.html
│   │   │       ├── js/
│   │   │       │   ├── interface.js
│   │   │       │   └── textarea.js
│   │   │       └── skin.xml
│   │   └── tpl/
│   │       ├── admin_index.html
│   │       ├── component_not_founded.html
│   │       ├── config_preview.html
│   │       ├── css/
│   │       │   ├── editor.css
│   │       │   ├── editor_admin.css
│   │       │   ├── editor_module_config.css
│   │       │   └── view_component.css
│   │       ├── editor_frame.html
│   │       ├── editor_module_config.html
│   │       ├── filter/
│   │       │   ├── insert_editor_module_config.xml
│   │       │   └── setup_component.xml
│   │       ├── images/
│   │       │   └── SWFUpload.swf
│   │       ├── js/
│   │       │   ├── editor.app.js
│   │       │   ├── editor_admin.js
│   │       │   ├── editor_common.js
│   │       │   └── editor_module_config.js
│   │       ├── popup.html
│   │       ├── setup_component.html
│   │       └── view_component.html
│   ├── extravar/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── controllers/
│   │   │   ├── Base.php
│   │   │   ├── Config.php
│   │   │   └── Install.php
│   │   ├── models/
│   │   │   ├── Value.php
│   │   │   └── ValueCollection.php
│   │   ├── skins/
│   │   │   └── default/
│   │   │       ├── assets/
│   │   │       │   ├── file_upload.js
│   │   │       │   └── number.js
│   │   │       ├── form.blade.php
│   │   │       ├── form_types/
│   │   │       │   ├── checkbox.blade.php
│   │   │       │   ├── datetime.blade.php
│   │   │       │   ├── file_upload.blade.php
│   │   │       │   ├── kr_zip.blade.php
│   │   │       │   ├── locale.blade.php
│   │   │       │   ├── password.blade.php
│   │   │       │   ├── select.blade.php
│   │   │       │   ├── tel.blade.php
│   │   │       │   ├── text.blade.php
│   │   │       │   └── textarea.blade.php
│   │   │       └── skin.xml
│   │   └── views/
│   │       ├── config.blade.php
│   │       └── header.blade.php
│   ├── file/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── file.admin.controller.php
│   │   ├── file.admin.model.php
│   │   ├── file.admin.view.php
│   │   ├── file.class.php
│   │   ├── file.controller.php
│   │   ├── file.model.php
│   │   ├── file.view.php
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteFile.xml
│   │   │   ├── deleteFiles.xml
│   │   │   ├── deleteModuleFiles.xml
│   │   │   ├── getAttachedFileSize.xml
│   │   │   ├── getCoverImage.xml
│   │   │   ├── getFile.xml
│   │   │   ├── getFileList.xml
│   │   │   ├── getFileListByTargetStatus.xml
│   │   │   ├── getFiles.xml
│   │   │   ├── getFilesCount.xml
│   │   │   ├── getFilesCountByGroupValid.xml
│   │   │   ├── getModuleFiles.xml
│   │   │   ├── getModuleFilesProper.xml
│   │   │   ├── getModuleList.xml
│   │   │   ├── getOneFileInDocument.xml
│   │   │   ├── insertFile.xml
│   │   │   ├── insertFileChangelog.xml
│   │   │   ├── updateClearCoverImage.xml
│   │   │   ├── updateCoverImage.xml
│   │   │   ├── updateFile.xml
│   │   │   ├── updateFileDownloadCount.xml
│   │   │   ├── updateFileModule.xml
│   │   │   ├── updateFileModuleComment.xml
│   │   │   ├── updateFileName.xml
│   │   │   ├── updateFileTargetType.xml
│   │   │   └── updateFileValid.xml
│   │   ├── ruleset/
│   │   │   ├── deleteChecked.xml
│   │   │   ├── fileModuleConfig.xml
│   │   │   └── insertConfig.xml
│   │   ├── schemas/
│   │   │   ├── files.xml
│   │   │   └── files_changelog.xml
│   │   ├── scripts/
│   │   │   ├── cleanEmptyDirs.php
│   │   │   ├── cleanGarbageFiles.php
│   │   │   └── cleanThumbnails.php
│   │   └── tpl/
│   │       ├── css/
│   │       │   ├── config.css
│   │       │   └── file_list.css
│   │       ├── download_config.html
│   │       ├── file_edit.html
│   │       ├── file_list.html
│   │       ├── file_module_config.html
│   │       ├── filter/
│   │       │   ├── delete_checked.xml
│   │       │   ├── insert_config.xml
│   │       │   └── insert_file_module_config.xml
│   │       ├── header.html
│   │       ├── iframe.html
│   │       ├── js/
│   │       │   ├── config.js
│   │       │   ├── file_admin.js
│   │       │   └── fileupload.app.js
│   │       ├── other_config.html
│   │       ├── print_uploaded_file_list.html
│   │       └── upload_config.html
│   ├── importer/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── extract.class.php
│   │   ├── importer.admin.controller.php
│   │   ├── importer.admin.view.php
│   │   ├── importer.class.php
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── getCommentMemberSrlWithUserID.xml
│   │   │   ├── getCommentMemberSrlWithUserIDByEmail.xml
│   │   │   ├── getDocumentMemberSrlWithUserID.xml
│   │   │   ├── getDocumentMemberSrlWithUserIDByEmail.xml
│   │   │   ├── updateCommentSync.xml
│   │   │   ├── updateCommentSyncByEmail.xml
│   │   │   ├── updateCommentSyncForCUBRID.xml
│   │   │   ├── updateCommentSyncForCUBRIDByEmail.xml
│   │   │   ├── updateDocumentSync.xml
│   │   │   ├── updateDocumentSyncByEmail.xml
│   │   │   ├── updateDocumentSyncForCUBRID.xml
│   │   │   └── updateDocumentSyncForCUBRIDByEmail.xml
│   │   ├── tpl/
│   │   │   ├── filter/
│   │   │   │   └── step1.xml
│   │   │   ├── header.html
│   │   │   ├── index.html
│   │   │   ├── js/
│   │   │   │   └── importer_admin.js
│   │   │   └── process.html
│   │   └── ttimport.class.php
│   ├── install/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── install.admin.controller.php
│   │   ├── install.class.php
│   │   ├── install.controller.php
│   │   ├── install.model.php
│   │   ├── install.view.php
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── ruleset/
│   │   │   └── install.xml
│   │   ├── schemas/
│   │   │   └── sequence.xml
│   │   ├── script/
│   │   │   ├── ko.install.php
│   │   │   ├── welcome_content/
│   │   │   │   ├── welcome.css
│   │   │   │   └── welcome_content.html
│   │   │   └── xeicon_content/
│   │   │       ├── xeicon_content_ko_1.html
│   │   │       ├── xeicon_content_ko_2.html
│   │   │       ├── xeicon_content_ko_3.html
│   │   │       └── xeicon_content_ko_4.html
│   │   └── tpl/
│   │       ├── check_env.html
│   │       ├── css/
│   │       │   └── install.css
│   │       ├── db_config.html
│   │       ├── filter/
│   │       │   ├── admin.xml
│   │       │   ├── config.xml
│   │       │   ├── cubrid.xml
│   │       │   ├── firebird.xml
│   │       │   ├── mssql.xml
│   │       │   ├── mysql.xml
│   │       │   ├── postgresql.xml
│   │       │   └── sqlite2.xml
│   │       ├── footer.html
│   │       ├── header.html
│   │       ├── introduce.html
│   │       ├── js/
│   │       │   └── install.js
│   │       ├── license_agreement.html
│   │       ├── license_text.en.html
│   │       ├── license_text.ko.html
│   │       ├── other_config.html
│   │       └── progress_menu.html
│   ├── integration_search/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── integration_search.admin.controller.php
│   │   ├── integration_search.admin.view.php
│   │   ├── integration_search.class.php
│   │   ├── integration_search.mobile.php
│   │   ├── integration_search.model.php
│   │   ├── integration_search.view.php
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── models/
│   │   │   └── FileSearchResult.php
│   │   ├── ruleset/
│   │   │   └── insertConfig.xml
│   │   ├── skins/
│   │   │   ├── default/
│   │   │   │   ├── comment.html
│   │   │   │   ├── document.html
│   │   │   │   ├── file.html
│   │   │   │   ├── header.html
│   │   │   │   ├── index.html
│   │   │   │   ├── multimedia.html
│   │   │   │   ├── no_keywords.html
│   │   │   │   ├── skin.xml
│   │   │   │   └── white.css
│   │   │   └── misol_town/
│   │   │       ├── LICENSE
│   │   │       ├── _page.html
│   │   │       ├── comment.html
│   │   │       ├── css/
│   │   │       │   ├── blue.css
│   │   │       │   └── crimson.css
│   │   │       ├── document.html
│   │   │       ├── file.html
│   │   │       ├── footer.html
│   │   │       ├── header.html
│   │   │       ├── index.html
│   │   │       ├── multimedia.html
│   │   │       ├── no_keywords.html
│   │   │       ├── skin.xml
│   │   │       └── trackback.html
│   │   └── tpl/
│   │       ├── filter/
│   │       │   └── insert_config.xml
│   │       ├── header.html
│   │       ├── index.html
│   │       ├── js/
│   │       │   └── integration_search_admin.js
│   │       └── skin_info.html
│   ├── krzip/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── krzip.admin.controller.php
│   │   ├── krzip.admin.view.php
│   │   ├── krzip.class.php
│   │   ├── krzip.controller.php
│   │   ├── krzip.model.php
│   │   ├── krzip.view.php
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   └── ko.php
│   │   ├── ruleset/
│   │   │   └── krzipConfig.xml
│   │   └── tpl/
│   │       ├── config.html
│   │       ├── css/
│   │       │   ├── default.css
│   │       │   └── popup.css
│   │       ├── js/
│   │       │   ├── admin.js
│   │       │   ├── daumapi.js
│   │       │   ├── epostapi.js
│   │       │   ├── epostapi.search.js
│   │       │   └── postcodify.js
│   │       ├── searchForm.epostapi.html
│   │       ├── template.daumapi.html
│   │       ├── template.epostapi.html
│   │       └── template.postcodify.html
│   ├── layout/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── faceoff/
│   │   │   ├── conf/
│   │   │   │   └── info.xml
│   │   │   ├── css/
│   │   │   │   └── layout.css
│   │   │   ├── js/
│   │   │   │   └── layout.js
│   │   │   ├── layout.html
│   │   │   └── layout.ini
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── layout.admin.controller.php
│   │   ├── layout.admin.model.php
│   │   ├── layout.admin.view.php
│   │   ├── layout.class.php
│   │   ├── layout.model.php
│   │   ├── layout.view.php
│   │   ├── queries/
│   │   │   ├── deleteLayout.xml
│   │   │   ├── getLayout.xml
│   │   │   ├── getLayoutDotList.xml
│   │   │   ├── getLayoutList.xml
│   │   │   ├── getLayoutModules.xml
│   │   │   ├── getOneModuleInstanceByModuleName.xml
│   │   │   ├── insertLayout.xml
│   │   │   ├── updateAllLayoutInSiteWithTheme.xml
│   │   │   ├── updateLayout.xml
│   │   │   ├── updateModuleLayout.xml
│   │   │   └── updateModuleMLayout.xml
│   │   ├── ruleset/
│   │   │   ├── codeUpdate.xml
│   │   │   ├── deleteLayout.xml
│   │   │   ├── imageUpload.xml
│   │   │   ├── insertLayout.xml
│   │   │   ├── updateLayout.xml
│   │   │   └── userLayoutImport.xml
│   │   ├── schemas/
│   │   │   └── layouts.xml
│   │   └── tpl/
│   │       ├── after_upload_config_image.html
│   │       ├── copy_layout.html
│   │       ├── css/
│   │       │   ├── faceoff_menu.css
│   │       │   └── widget.css
│   │       ├── faceoff_layout_edit.html
│   │       ├── faceoff_layout_menu.html
│   │       ├── filter/
│   │       │   ├── delete_layout.xml
│   │       │   ├── insert_layout.xml
│   │       │   ├── reset_layout_code.xml
│   │       │   ├── update_layout_code.xml
│   │       │   └── update_layout_info.xml
│   │       ├── header.html
│   │       ├── installed_layout_list.html
│   │       ├── js/
│   │       │   ├── adminEdit.js
│   │       │   ├── adminList.js
│   │       │   ├── faceoff.js
│   │       │   ├── layout_admin.js
│   │       │   ├── layout_admin_set_html.js
│   │       │   ├── layout_image_list.js
│   │       │   ├── layout_modify.js
│   │       │   ├── ui.hotkey.js
│   │       │   └── ui.toolbar.js
│   │       ├── layout_all_instance_list.html
│   │       ├── layout_edit.html
│   │       ├── layout_html_css_view.html
│   │       ├── layout_info_view.html
│   │       ├── layout_instance_list.html
│   │       ├── layout_modify.html
│   │       ├── layout_preview.html
│   │       ├── sub_tab.html
│   │       └── top_refresh.html
│   ├── member/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── controllers/
│   │   │   └── Device.php
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── m.skins/
│   │   │   └── default/
│   │   │       ├── active_logins.html
│   │   │       ├── comment_list.html
│   │   │       ├── common_footer.html
│   │   │       ├── common_header.html
│   │   │       ├── css/
│   │   │       │   ├── member.css
│   │   │       │   ├── mlogin.css
│   │   │       │   └── msignup.css
│   │   │       ├── document_list.html
│   │   │       ├── find_member_account.html
│   │   │       ├── find_temp_password.html
│   │   │       ├── leave_form.html
│   │   │       ├── login_form.html
│   │   │       ├── member_info.html
│   │   │       ├── member_nick.html
│   │   │       ├── modify_email_address.html
│   │   │       ├── modify_info.html
│   │   │       ├── modify_password.html
│   │   │       ├── rechecked_password.html
│   │   │       ├── saved_list.html
│   │   │       ├── scrapped_list.html
│   │   │       ├── signup_form.html
│   │   │       └── skin.xml
│   │   ├── member.admin.controller.php
│   │   ├── member.admin.model.php
│   │   ├── member.admin.view.php
│   │   ├── member.api.php
│   │   ├── member.class.php
│   │   ├── member.controller.php
│   │   ├── member.mobile.php
│   │   ├── member.model.php
│   │   ├── member.view.php
│   │   ├── queries/
│   │   │   ├── addMemberToGroup.xml
│   │   │   ├── addScrapDocument.xml
│   │   │   ├── changeGroup.xml
│   │   │   ├── chkAuthMail.xml
│   │   │   ├── chkAuthSms.xml
│   │   │   ├── chkDeniedID.xml
│   │   │   ├── chkDeniedNickName.xml
│   │   │   ├── deleteAgreed.xml
│   │   │   ├── deleteAuthChangeEmailAddress.xml
│   │   │   ├── deleteAuthMail.xml
│   │   │   ├── deleteAutologin.xml
│   │   │   ├── deleteDeniedID.xml
│   │   │   ├── deleteDeniedNickName.xml
│   │   │   ├── deleteGroup.xml
│   │   │   ├── deleteJoinForm.xml
│   │   │   ├── deleteLoginCountByIp.xml
│   │   │   ├── deleteLoginCountHistoryByMemberSrl.xml
│   │   │   ├── deleteManagedEmailHost.xml
│   │   │   ├── deleteMember.xml
│   │   │   ├── deleteMemberDevice.xml
│   │   │   ├── deleteMemberGroup.xml
│   │   │   ├── deleteMemberGroupMember.xml
│   │   │   ├── deleteMemberModifyNickNameLog.xml
│   │   │   ├── deleteMembersGroup.xml
│   │   │   ├── deleteScrapDocument.xml
│   │   │   ├── deleteScrapDocumentByDocumentSrl.xml
│   │   │   ├── deleteScrapFolder.xml
│   │   │   ├── deleteSiteGroup.xml
│   │   │   ├── getAdminGroup.xml
│   │   │   ├── getAdmins.xml
│   │   │   ├── getAuthMail.xml
│   │   │   ├── getAuthMailInfo.xml
│   │   │   ├── getAuthMailType.xml
│   │   │   ├── getAutologin.xml
│   │   │   ├── getDefaultGroup.xml
│   │   │   ├── getDeniedAndStatus.xml
│   │   │   ├── getDeniedIDList.xml
│   │   │   ├── getDeniedIDs.xml
│   │   │   ├── getDeniedNickNames.xml
│   │   │   ├── getGroup.xml
│   │   │   ├── getGroups.xml
│   │   │   ├── getJoinForm.xml
│   │   │   ├── getJoinFormList.xml
│   │   │   ├── getLoginCountByIp.xml
│   │   │   ├── getLoginCountHistoryByMemberSrl.xml
│   │   │   ├── getManagedEmailHosts.xml
│   │   │   ├── getMemberCountByDate.xml
│   │   │   ├── getMemberCountByPhoneCountry.xml
│   │   │   ├── getMemberDevice.xml
│   │   │   ├── getMemberDeviceTokensByMemberSrl.xml
│   │   │   ├── getMemberGroupMember.xml
│   │   │   ├── getMemberGroupMemberCountByDate.xml
│   │   │   ├── getMemberGroups.xml
│   │   │   ├── getMemberInfo.xml
│   │   │   ├── getMemberInfoByEmailAddress.xml
│   │   │   ├── getMemberInfoByMemberSrl.xml
│   │   │   ├── getMemberInfoByPhoneNumber.xml
│   │   │   ├── getMemberList.xml
│   │   │   ├── getMemberListWithinGroup.xml
│   │   │   ├── getMemberModifyNickName.xml
│   │   │   ├── getMemberSrl.xml
│   │   │   ├── getMembers.xml
│   │   │   ├── getMembersGroup.xml
│   │   │   ├── getMembersGroups.xml
│   │   │   ├── getScrapDocument.xml
│   │   │   ├── getScrapDocumentList.xml
│   │   │   ├── getScrapFolderList.xml
│   │   │   ├── getSiteAdminMemberSrls.xml
│   │   │   ├── getSiteMemberList.xml
│   │   │   ├── insertAgreed.xml
│   │   │   ├── insertAuthMail.xml
│   │   │   ├── insertAuthSms.xml
│   │   │   ├── insertAutologin.xml
│   │   │   ├── insertDeniedID.xml
│   │   │   ├── insertDeniedNickName.xml
│   │   │   ├── insertGroup.xml
│   │   │   ├── insertJoinForm.xml
│   │   │   ├── insertLoginCountByIp.xml
│   │   │   ├── insertLoginCountHistoryByMemberSrl.xml
│   │   │   ├── insertManagedEmailHost.xml
│   │   │   ├── insertMember.xml
│   │   │   ├── insertMemberDevice.xml
│   │   │   ├── insertMemberModifyNickName.xml
│   │   │   ├── insertScrapFolder.xml
│   │   │   ├── updateAllChangePasswordDate.xml
│   │   │   ├── updateAllMemberGroupListOrder.xml
│   │   │   ├── updateAuthMail.xml
│   │   │   ├── updateAutologin.xml
│   │   │   ├── updateChangePasswordDate.xml
│   │   │   ├── updateFindAccountAnswer.xml
│   │   │   ├── updateGroup.xml
│   │   │   ├── updateGroupDefaultClear.xml
│   │   │   ├── updateJoinForm.xml
│   │   │   ├── updateLastLogin.xml
│   │   │   ├── updateLoginCountByIp.xml
│   │   │   ├── updateLoginCountHistoryByMemberSrl.xml
│   │   │   ├── updateMember.xml
│   │   │   ├── updateMemberDeniedInfo.xml
│   │   │   ├── updateMemberDevice.xml
│   │   │   ├── updateMemberDeviceLastActiveDate.xml
│   │   │   ├── updateMemberEmailAddress.xml
│   │   │   ├── updateMemberExtraVars.xml
│   │   │   ├── updateMemberFindQuestionAnswer.xml
│   │   │   ├── updateMemberGroupListOrder.xml
│   │   │   ├── updateMemberJoinFormListorder.xml
│   │   │   ├── updateMemberListOrderAll.xml
│   │   │   ├── updateMemberPassword.xml
│   │   │   ├── updateMemberPhoneCountry.xml
│   │   │   ├── updateMemberPhoneNumber.xml
│   │   │   ├── updateMemberStatus.xml
│   │   │   ├── updateScrapDocumentFolder.xml
│   │   │   ├── updateScrapFolder.xml
│   │   │   └── updateScrapFolderFromNull.xml
│   │   ├── ruleset/
│   │   │   ├── deleteGroup.xml
│   │   │   ├── findAccount.xml
│   │   │   ├── insert.xml
│   │   │   ├── insertAdminMember.xml
│   │   │   ├── insertDefaultConfig.xml
│   │   │   ├── insertDeniedId.xml
│   │   │   ├── insertGroup.xml
│   │   │   ├── insertJoinForm.xml
│   │   │   ├── insertLoginConfig.xml
│   │   │   ├── leaveMember.xml
│   │   │   ├── login.xml
│   │   │   ├── manageMemberGroup.xml
│   │   │   ├── modifyEmailAddress.xml
│   │   │   ├── modifyInfo.xml
│   │   │   ├── modifyPassword.xml
│   │   │   ├── recheckedPassword.xml
│   │   │   ├── resendAuthMail.xml
│   │   │   ├── resetAuthMail.xml
│   │   │   ├── resetPassword.xml
│   │   │   ├── signup.xml
│   │   │   ├── updateGroup.xml
│   │   │   └── updateSeletedMemberInfo.xml
│   │   ├── schemas/
│   │   │   ├── member.xml
│   │   │   ├── member_agreed.xml
│   │   │   ├── member_auth_mail.xml
│   │   │   ├── member_auth_sms.xml
│   │   │   ├── member_autologin.xml
│   │   │   ├── member_count_history.xml
│   │   │   ├── member_denied_nick_name.xml
│   │   │   ├── member_denied_user_id.xml
│   │   │   ├── member_devices.xml
│   │   │   ├── member_group.xml
│   │   │   ├── member_group_member.xml
│   │   │   ├── member_join_form.xml
│   │   │   ├── member_login_count.xml
│   │   │   ├── member_managed_email_hosts.xml
│   │   │   ├── member_nickname_log.xml
│   │   │   ├── member_scrap.xml
│   │   │   └── member_scrap_folders.xml
│   │   ├── skins/
│   │   │   └── default/
│   │   │       ├── active_logins.html
│   │   │       ├── comment_list.html
│   │   │       ├── common_footer.html
│   │   │       ├── common_header.html
│   │   │       ├── confirm_member_account_mail.html
│   │   │       ├── confirm_member_new_email.html
│   │   │       ├── css/
│   │   │       │   └── member.css
│   │   │       ├── document_list.html
│   │   │       ├── filter/
│   │   │       │   ├── delete_image_mark.xml
│   │   │       │   ├── delete_image_name.xml
│   │   │       │   ├── delete_profile_image.xml
│   │   │       │   ├── find_member_account.xml
│   │   │       │   ├── leave_member.xml
│   │   │       │   ├── login.xml
│   │   │       │   ├── modify_info.xml
│   │   │       │   ├── modify_password.xml
│   │   │       │   ├── resend_auth_mail.xml
│   │   │       │   ├── signup.xml
│   │   │       │   └── update_allow_message.xml
│   │   │       ├── find_member_account.html
│   │   │       ├── find_member_account_mail.html
│   │   │       ├── js/
│   │   │       │   └── member.js
│   │   │       ├── leave_form.html
│   │   │       ├── login_form.html
│   │   │       ├── member_info.html
│   │   │       ├── member_nick.html
│   │   │       ├── modify_email_address.html
│   │   │       ├── modify_info.html
│   │   │       ├── modify_password.html
│   │   │       ├── rechecked_password.html
│   │   │       ├── resend_auth_mail.html
│   │   │       ├── reset_password.html
│   │   │       ├── saved_list.html
│   │   │       ├── scrapped_list.html
│   │   │       ├── signup_form.html
│   │   │       └── skin.xml
│   │   └── tpl/
│   │       ├── agreements_config.html
│   │       ├── colorset_list.html
│   │       ├── css/
│   │       │   ├── member.css
│   │       │   ├── mlogin.css
│   │       │   └── msignup.css
│   │       ├── default_config.html
│   │       ├── design_config.html
│   │       ├── features_config.html
│   │       ├── filter/
│   │       │   ├── delete_image_mark.xml
│   │       │   ├── delete_image_name.xml
│   │       │   ├── delete_member.xml
│   │       │   ├── delete_members.xml
│   │       │   ├── delete_profile_image.xml
│   │       │   ├── insert.xml
│   │       │   ├── insert_config.xml
│   │       │   ├── insert_denied_id.xml
│   │       │   ├── insert_group.xml
│   │       │   ├── insert_join_form.xml
│   │       │   ├── manage_member_group.xml
│   │       │   ├── update_denied_id.xml
│   │       │   ├── update_group.xml
│   │       │   ├── update_join_form.xml
│   │       │   └── update_member.xml
│   │       ├── group_list.html
│   │       ├── header.html
│   │       ├── insert_join_form.html
│   │       ├── insert_member.html
│   │       ├── js/
│   │       │   ├── config.js
│   │       │   ├── default_config.js
│   │       │   ├── design_config.js
│   │       │   ├── member_admin.js
│   │       │   ├── member_admin_group.js
│   │       │   ├── member_admin_list.js
│   │       │   ├── signup_check.js
│   │       │   └── signup_config.js
│   │       ├── login_config.html
│   │       ├── member_info.html
│   │       ├── member_list.html
│   │       ├── new_colorset_list.html
│   │       ├── nick_name_log.html
│   │       ├── signup_config.html
│   │       └── spammer.html
│   ├── menu/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── menu.admin.controller.php
│   │   ├── menu.admin.model.php
│   │   ├── menu.admin.view.php
│   │   ├── menu.class.php
│   │   ├── menu.mobile.php
│   │   ├── queries/
│   │   │   ├── deleteMenu.xml
│   │   │   ├── deleteMenuItem.xml
│   │   │   ├── deleteMenuItems.xml
│   │   │   ├── deleteMenuLayout.xml
│   │   │   ├── getChildMenuCount.xml
│   │   │   ├── getMaxListorder.xml
│   │   │   ├── getMenu.xml
│   │   │   ├── getMenuByTitle.xml
│   │   │   ├── getMenuItem.xml
│   │   │   ├── getMenuItemByUrl.xml
│   │   │   ├── getMenuItems.xml
│   │   │   ├── getMenuLayout.xml
│   │   │   ├── getMenuList.xml
│   │   │   ├── getMenus.xml
│   │   │   ├── getMinListorder.xml
│   │   │   ├── insertMenu.xml
│   │   │   ├── insertMenuItem.xml
│   │   │   ├── insertMenuLayout.xml
│   │   │   ├── updateMenu.xml
│   │   │   ├── updateMenuItem.xml
│   │   │   ├── updateMenuItemListorder.xml
│   │   │   ├── updateMenuItemNode.xml
│   │   │   ├── updateMenuItemParent.xml
│   │   │   └── updateMenuItems.xml
│   │   ├── ruleset/
│   │   │   ├── insertMenu.xml
│   │   │   ├── insertMenuItem.xml
│   │   │   ├── updateMenuDesign.xml
│   │   │   ├── updateMenuItem.xml
│   │   │   └── updateMenuTitle.xml
│   │   ├── schemas/
│   │   │   ├── menu.xml
│   │   │   ├── menu_item.xml
│   │   │   └── menu_layout.xml
│   │   └── tpl/
│   │       ├── css/
│   │       │   ├── mmenu.css
│   │       │   ├── sitemap.css
│   │       │   └── themes/
│   │       │       ├── apple/
│   │       │       │   └── style.css
│   │       │       ├── classic/
│   │       │       │   └── style.css
│   │       │       ├── default/
│   │       │       │   └── style.css
│   │       │       └── default-rtl/
│   │       │           └── style.css
│   │       ├── js/
│   │       │   ├── _lib/
│   │       │   │   └── jquery.cookie.js
│   │       │   ├── jquery.jstree.js
│   │       │   ├── jquery.scrollTo-1.4.2.js
│   │       │   └── jquery.tmpl.js
│   │       ├── menu.html
│   │       └── sitemap.html
│   ├── message/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── m.skins/
│   │   │   └── default/
│   │   │       ├── filter/
│   │   │       │   ├── login.xml
│   │   │       │   ├── logout.xml
│   │   │       │   └── openid_login.xml
│   │   │       ├── http_status_code.html
│   │   │       ├── message.css
│   │   │       └── system_message.html
│   │   ├── message.admin.controller.php
│   │   ├── message.admin.model.php
│   │   ├── message.admin.view.php
│   │   ├── message.class.php
│   │   ├── message.mobile.php
│   │   ├── message.view.php
│   │   ├── skins/
│   │   │   ├── default/
│   │   │   │   ├── filter/
│   │   │   │   │   ├── login.xml
│   │   │   │   │   ├── logout.xml
│   │   │   │   │   └── openid_login.xml
│   │   │   │   ├── http_status_code.html
│   │   │   │   ├── message.css
│   │   │   │   ├── message.js
│   │   │   │   └── system_message.html
│   │   │   └── xedition/
│   │   │       ├── css/
│   │   │       │   └── message.css
│   │   │       ├── http_status_code.html
│   │   │       └── system_message.html
│   │   └── tpl/
│   │       ├── colorset_list.html
│   │       ├── config.html
│   │       └── js/
│   │           └── config.js
│   ├── module/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── models/
│   │   │   └── Permission.php
│   │   ├── module.admin.controller.php
│   │   ├── module.admin.model.php
│   │   ├── module.admin.view.php
│   │   ├── module.class.php
│   │   ├── module.controller.php
│   │   ├── module.mobile.php
│   │   ├── module.model.php
│   │   ├── module.view.php
│   │   ├── queries/
│   │   │   ├── clearDefaultModule.xml
│   │   │   ├── deleteActionForward.xml
│   │   │   ├── deleteAdminId.xml
│   │   │   ├── deleteAdminIds.xml
│   │   │   ├── deleteDomain.xml
│   │   │   ├── deleteLang.xml
│   │   │   ├── deleteLangs.xml
│   │   │   ├── deleteLock.xml
│   │   │   ├── deleteLocksTimeoutPassed.xml
│   │   │   ├── deleteModule.xml
│   │   │   ├── deleteModuleCategory.xml
│   │   │   ├── deleteModuleConfig.xml
│   │   │   ├── deleteModuleExtend.xml
│   │   │   ├── deleteModuleExtraVars.xml
│   │   │   ├── deleteModuleFileBox.xml
│   │   │   ├── deleteModuleGrants.xml
│   │   │   ├── deleteModuleMobileSkinVars.xml
│   │   │   ├── deleteModulePartConfig.xml
│   │   │   ├── deleteModuleSkinVars.xml
│   │   │   ├── deleteModuleTriggers.xml
│   │   │   ├── deleteSite.xml
│   │   │   ├── deleteTrigger.xml
│   │   │   ├── deleteTriggers.xml
│   │   │   ├── getActionForward.xml
│   │   │   ├── getActionForwardWithModule.xml
│   │   │   ├── getAdminID.xml
│   │   │   ├── getAdminSrls.xml
│   │   │   ├── getAllMobileSkinSetModule.xml
│   │   │   ├── getAllSkinSetModule.xml
│   │   │   ├── getDefaultMidInfo.xml
│   │   │   ├── getDefaultModules.xml
│   │   │   ├── getDomainInfo.xml
│   │   │   ├── getDomains.xml
│   │   │   ├── getLang.xml
│   │   │   ├── getLangCount.xml
│   │   │   ├── getLangList.xml
│   │   │   ├── getLangListByLangcode.xml
│   │   │   ├── getLangListByName.xml
│   │   │   ├── getLangNameByValue.xml
│   │   │   ├── getMidInfo.xml
│   │   │   ├── getMidList.xml
│   │   │   ├── getModuleAdmin.xml
│   │   │   ├── getModuleCategories.xml
│   │   │   ├── getModuleCategory.xml
│   │   │   ├── getModuleConfig.xml
│   │   │   ├── getModuleCount.xml
│   │   │   ├── getModuleExtend.xml
│   │   │   ├── getModuleExtraVars.xml
│   │   │   ├── getModuleFileBox.xml
│   │   │   ├── getModuleFileBoxList.xml
│   │   │   ├── getModuleGrants.xml
│   │   │   ├── getModuleInfoByDocument.xml
│   │   │   ├── getModuleInfoByMenuItemSrl.xml
│   │   │   ├── getModuleInfoByModuleSrl.xml
│   │   │   ├── getModuleInfos.xml
│   │   │   ├── getModuleListByInstance.xml
│   │   │   ├── getModuleMidList.xml
│   │   │   ├── getModuleMobileSkinVars.xml
│   │   │   ├── getModulePartConfig.xml
│   │   │   ├── getModulePartConfigs.xml
│   │   │   ├── getModuleSites.xml
│   │   │   ├── getModuleSkinDotList.xml
│   │   │   ├── getModuleSkinVars.xml
│   │   │   ├── getModuleSrlByMid.xml
│   │   │   ├── getModuleUpdateLog.xml
│   │   │   ├── getModulesByLayout.xml
│   │   │   ├── getModulesInfo.xml
│   │   │   ├── getNonuniqueDomains.xml
│   │   │   ├── getNotLinkedModuleBySiteSrl.xml
│   │   │   ├── getPlanetGrants.xml
│   │   │   ├── getSite.xml
│   │   │   ├── getSiteCount.xml
│   │   │   ├── getSiteInfo.xml
│   │   │   ├── getSiteModules.xml
│   │   │   ├── getSites.xml
│   │   │   ├── getTrigger.xml
│   │   │   ├── getTriggers.xml
│   │   │   ├── insertActionForward.xml
│   │   │   ├── insertAdminId.xml
│   │   │   ├── insertDomain.xml
│   │   │   ├── insertLang.xml
│   │   │   ├── insertLock.xml
│   │   │   ├── insertModule.xml
│   │   │   ├── insertModuleCategory.xml
│   │   │   ├── insertModuleConfig.xml
│   │   │   ├── insertModuleExtend.xml
│   │   │   ├── insertModuleExtraVars.xml
│   │   │   ├── insertModuleFileBox.xml
│   │   │   ├── insertModuleGrant.xml
│   │   │   ├── insertModuleMobileSkinVars.xml
│   │   │   ├── insertModulePartConfig.xml
│   │   │   ├── insertModuleSkinVars.xml
│   │   │   ├── insertModuleUpdateLog.xml
│   │   │   ├── insertSite.xml
│   │   │   ├── insertTrigger.xml
│   │   │   ├── isExistsModuleName.xml
│   │   │   ├── updateAllModuleSkinInSiteWithTheme.xml
│   │   │   ├── updateDefaultDomain.xml
│   │   │   ├── updateDomain.xml
│   │   │   ├── updateLangCode.xml
│   │   │   ├── updateMobileSkinFixModules.xml
│   │   │   ├── updateModule.xml
│   │   │   ├── updateModuleCategory.xml
│   │   │   ├── updateModuleFileBox.xml
│   │   │   ├── updateModuleLayout.xml
│   │   │   ├── updateModuleMenu.xml
│   │   │   ├── updateModuleMenuSrl.xml
│   │   │   ├── updateSite.xml
│   │   │   ├── updateSkinAll.xml
│   │   │   └── updateSkinFixModules.xml
│   │   ├── ruleset/
│   │   │   ├── copyModule.xml
│   │   │   ├── deleteCategory.xml
│   │   │   ├── insertCategory.xml
│   │   │   ├── insertModuleSetup.xml
│   │   │   ├── insertModulesGrant.xml
│   │   │   └── updateCategory.xml
│   │   ├── schemas/
│   │   │   ├── action_forward.xml
│   │   │   ├── domains.xml
│   │   │   ├── lang.xml
│   │   │   ├── module_admins.xml
│   │   │   ├── module_categories.xml
│   │   │   ├── module_config.xml
│   │   │   ├── module_extend.xml
│   │   │   ├── module_extra_vars.xml
│   │   │   ├── module_filebox.xml
│   │   │   ├── module_grants.xml
│   │   │   ├── module_locks.xml
│   │   │   ├── module_mobile_skins.xml
│   │   │   ├── module_part_config.xml
│   │   │   ├── module_skins.xml
│   │   │   ├── module_trigger.xml
│   │   │   ├── module_update.xml
│   │   │   ├── modules.xml
│   │   │   ├── sites.xml
│   │   │   ├── task_queue.xml
│   │   │   └── task_schedule.xml
│   │   ├── scripts/
│   │   │   ├── cleanMiscLogs.php
│   │   │   └── updateAllModules.php
│   │   └── tpl/
│   │       ├── adminFileBox.html
│   │       ├── category_list.html
│   │       ├── category_update_form.html
│   │       ├── copy_module.html
│   │       ├── css/
│   │       │   ├── mlang.css
│   │       │   └── module_admin.scss
│   │       ├── filebox_add.html
│   │       ├── filebox_list.html
│   │       ├── filebox_list_html.html
│   │       ├── filter/
│   │       │   ├── copy_module.xml
│   │       │   ├── insert_category.xml
│   │       │   ├── insert_grant.xml
│   │       │   ├── insert_lang.xml
│   │       │   ├── insert_module_setup.xml
│   │       │   ├── insert_modules_grant.xml
│   │       │   ├── insert_shortcut.xml
│   │       │   └── update_category.xml
│   │       ├── header.html
│   │       ├── include.filebox.html
│   │       ├── include.manage_selected.html
│   │       ├── include.module_addition_setup.html
│   │       ├── include.module_grant_setup.html
│   │       ├── include.module_setup.html
│   │       ├── include.multilang.html
│   │       ├── include.multilang.textarea.html
│   │       ├── js/
│   │       │   ├── filebox.js
│   │       │   ├── manage_selected_module.js
│   │       │   ├── mid.js
│   │       │   ├── module_admin.js
│   │       │   ├── module_list.js
│   │       │   ├── multi_order.js
│   │       │   └── multilingual.js
│   │       ├── lang.html
│   │       ├── module_addition_setup.html
│   │       ├── module_grant_setup.html
│   │       ├── module_grants.html
│   │       ├── module_info.html
│   │       ├── module_langcode.html
│   │       ├── module_list.html
│   │       ├── module_searcher_v17.html
│   │       ├── module_selector.html
│   │       ├── module_setup.html
│   │       ├── move_filebox_list.html
│   │       ├── multilingual_v17.html
│   │       ├── multilingual_v17_list.html
│   │       ├── skin_config.html
│   │       ├── skin_info.html
│   │       └── top_refresh.html
│   ├── ncenterlite/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   └── ko.php
│   │   ├── m.skins/
│   │   │   └── default/
│   │   │       ├── NotifyList.html
│   │   │       ├── ncenter.html
│   │   │       ├── ncenterlite.black.css
│   │   │       ├── ncenterlite.blacknoprofile.css
│   │   │       ├── ncenterlite.css
│   │   │       ├── ncenterlite.gray.css
│   │   │       ├── ncenterlite.graynoprofile.css
│   │   │       ├── ncenterlite.html
│   │   │       ├── ncenterlite.mobile.css
│   │   │       ├── ncenterlite.white.css
│   │   │       ├── ncenterlite.whitenoprofile.css
│   │   │       ├── notify.css
│   │   │       ├── skin.xml
│   │   │       └── userconfig.html
│   │   ├── ncenterlite.admin.controller.php
│   │   ├── ncenterlite.admin.model.php
│   │   ├── ncenterlite.admin.view.php
│   │   ├── ncenterlite.class.php
│   │   ├── ncenterlite.controller.php
│   │   ├── ncenterlite.mobile.php
│   │   ├── ncenterlite.model.php
│   │   ├── ncenterlite.view.php
│   │   ├── queries/
│   │   │   ├── deleteNcenterliteUserSettingData.xml
│   │   │   ├── deleteNotifyAll.xml
│   │   │   ├── deleteNotifyByMemberSrl.xml
│   │   │   ├── deleteNotifyBySrl.xml
│   │   │   ├── deleteNotifyByTargetType.xml
│   │   │   ├── deleteNotifyType.xml
│   │   │   ├── deleteUnsubscribe.xml
│   │   │   ├── getAdminNotifyList.xml
│   │   │   ├── getAllUserConfig.xml
│   │   │   ├── getCountNewMessage.xml
│   │   │   ├── getDispNotifyList.xml
│   │   │   ├── getMemberAdmins.xml
│   │   │   ├── getMemberSrlById.xml
│   │   │   ├── getMemberSrlByNickName.xml
│   │   │   ├── getMemberTotals.xml
│   │   │   ├── getNotify.xml
│   │   │   ├── getNotifyList.xml
│   │   │   ├── getNotifyListByCommentSrl.xml
│   │   │   ├── getNotifyListByDocumentSrl.xml
│   │   │   ├── getNotifyMemberSrlBySrl.xml
│   │   │   ├── getNotifyNewCount.xml
│   │   │   ├── getNotifyType.xml
│   │   │   ├── getNotifyTypeAdminList.xml
│   │   │   ├── getNotifyTypeByID.xml
│   │   │   ├── getOtherCommentByMemberSrl.xml
│   │   │   ├── getUnsubscribeList.xml
│   │   │   ├── getUserConfig.xml
│   │   │   ├── getUserUnsubscribeConfigByTargetSrl.xml
│   │   │   ├── getUserUnsubscribeConfigByUnsubscribeSrl.xml
│   │   │   ├── insertNotify.xml
│   │   │   ├── insertNotifyType.xml
│   │   │   ├── insertUnsubscribe.xml
│   │   │   ├── insertUserConfig.xml
│   │   │   ├── updateNotifyReaded.xml
│   │   │   ├── updateNotifyReadedAll.xml
│   │   │   ├── updateNotifyReadedBySrl.xml
│   │   │   ├── updateNotifyReadedByTargetSrl.xml
│   │   │   ├── updateNotifyReadedByType.xml
│   │   │   └── updateUserConfig.xml
│   │   ├── ruleset/
│   │   │   └── insertConfig.xml
│   │   ├── schemas/
│   │   │   ├── ncenterlite_notify.xml
│   │   │   ├── ncenterlite_notify_type.xml
│   │   │   ├── ncenterlite_unsubscribe.xml
│   │   │   └── ncenterlite_user_set.xml
│   │   ├── scripts/
│   │   │   └── cleanNotifications.php
│   │   ├── skins/
│   │   │   ├── default/
│   │   │   │   ├── NotifyList.html
│   │   │   │   ├── ncenterlite.black.css
│   │   │   │   ├── ncenterlite.blacknoprofile.css
│   │   │   │   ├── ncenterlite.css
│   │   │   │   ├── ncenterlite.gray.css
│   │   │   │   ├── ncenterlite.graynoprofile.css
│   │   │   │   ├── ncenterlite.html
│   │   │   │   ├── ncenterlite.mobile.css
│   │   │   │   ├── ncenterlite.white.css
│   │   │   │   ├── ncenterlite.whitenoprofile.css
│   │   │   │   ├── skin.xml
│   │   │   │   ├── unsubscribe.html
│   │   │   │   ├── unsubscribeList.html
│   │   │   │   └── userconfig.html
│   │   │   └── default_bottom/
│   │   │       ├── NotifyList.html
│   │   │       ├── ncenterlite.black.css
│   │   │       ├── ncenterlite.blacknoprofile.css
│   │   │       ├── ncenterlite.css
│   │   │       ├── ncenterlite.gray.css
│   │   │       ├── ncenterlite.graynoprofile.css
│   │   │       ├── ncenterlite.html
│   │   │       ├── ncenterlite.mobile.css
│   │   │       ├── ncenterlite.white.css
│   │   │       ├── ncenterlite.whitenoprofile.css
│   │   │       ├── skin.xml
│   │   │       ├── unsubscribe.html
│   │   │       ├── unsubscribeList.html
│   │   │       └── userconfig.html
│   │   └── tpl/
│   │       ├── advancedconfig.html
│   │       ├── config.html
│   │       ├── css/
│   │       │   └── ncenter_admin.css
│   │       ├── customlist.html
│   │       ├── header.html
│   │       ├── js/
│   │       │   ├── ncenter_admin.js
│   │       │   └── ncenterlite.js
│   │       ├── list.html
│   │       ├── othercomment.html
│   │       ├── seletedmid.html
│   │       ├── skinsetting.html
│   │       └── test.html
│   ├── page/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── m.skins/
│   │   │   └── default/
│   │   │       ├── mobile.html
│   │   │       └── skin.xml
│   │   ├── page.admin.controller.php
│   │   ├── page.admin.view.php
│   │   ├── page.api.php
│   │   ├── page.class.php
│   │   ├── page.controller.php
│   │   ├── page.mobile.php
│   │   ├── page.view.php
│   │   ├── queries/
│   │   │   ├── getArticlePageSrls.xml
│   │   │   ├── getPageList.xml
│   │   │   ├── insertPageType.xml
│   │   │   ├── pageTypeNullCheck.xml
│   │   │   ├── pageTypeOpageCheck.xml
│   │   │   ├── updateAllOpage.xml
│   │   │   └── updateSkinFix.xml
│   │   ├── ruleset/
│   │   │   ├── deletePage.xml
│   │   │   ├── insertPage.xml
│   │   │   └── updatePage.xml
│   │   ├── skins/
│   │   │   └── default/
│   │   │       ├── content.html
│   │   │       └── skin.xml
│   │   └── tpl/
│   │       ├── addition_setup.html
│   │       ├── article_content_footer.html
│   │       ├── article_content_modify.html
│   │       ├── content.html
│   │       ├── css/
│   │       │   └── page.css
│   │       ├── filter/
│   │       │   ├── delete_page.xml
│   │       │   ├── insert_article.xml
│   │       │   ├── insert_config.xml
│   │       │   ├── insert_mpage_content.xml
│   │       │   ├── insert_outside.xml
│   │       │   ├── insert_page.xml
│   │       │   └── insert_page_content.xml
│   │       ├── grant_list.html
│   │       ├── header.html
│   │       ├── index.html
│   │       ├── js/
│   │       │   └── page_admin.js
│   │       ├── mcontent.html
│   │       ├── mobile.html
│   │       ├── page_content_modify.html
│   │       ├── page_delete.html
│   │       ├── page_info.html
│   │       ├── page_mobile_content_modify.html
│   │       └── skin_info.html
│   ├── point/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── point.admin.controller.php
│   │   ├── point.admin.view.php
│   │   ├── point.class.php
│   │   ├── point.controller.php
│   │   ├── point.model.php
│   │   ├── point.view.php
│   │   ├── queries/
│   │   │   ├── deleteMemberGroup.xml
│   │   │   ├── getCommentPoint.xml
│   │   │   ├── getCommentUsers.xml
│   │   │   ├── getDocumentPoint.xml
│   │   │   ├── getFilePoint.xml
│   │   │   ├── getMemberCount.xml
│   │   │   ├── getMemberGroupMember.xml
│   │   │   ├── getMemberList.xml
│   │   │   ├── getMemberListWithinGroup.xml
│   │   │   ├── getPoint.xml
│   │   │   ├── getPointCount.xml
│   │   │   ├── initMemberPoint.xml
│   │   │   ├── insertPoint.xml
│   │   │   └── updatePoint.xml
│   │   ├── ruleset/
│   │   │   ├── insertConfig.xml
│   │   │   └── updatePoint.xml
│   │   ├── schemas/
│   │   │   └── point.xml
│   │   └── tpl/
│   │       ├── config.html
│   │       ├── filter/
│   │       │   ├── insert_act_config.xml
│   │       │   ├── insert_config.xml
│   │       │   ├── insert_module_config.xml
│   │       │   ├── insert_point_module_config.xml
│   │       │   └── update_point.xml
│   │       ├── header.html
│   │       ├── js/
│   │       │   └── point_admin.js
│   │       ├── member_list.html
│   │       ├── module_config.html
│   │       └── point_module_config.html
│   ├── poll/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── poll.admin.controller.php
│   │   ├── poll.admin.model.php
│   │   ├── poll.admin.view.php
│   │   ├── poll.class.php
│   │   ├── poll.controller.php
│   │   ├── poll.model.php
│   │   ├── queries/
│   │   │   ├── deletePoll.xml
│   │   │   ├── deletePollItem.xml
│   │   │   ├── deletePollLog.xml
│   │   │   ├── deletePollTitle.xml
│   │   │   ├── getMemberbyPollitem.xml
│   │   │   ├── getPoll.xml
│   │   │   ├── getPollByDeletePollTitle.xml
│   │   │   ├── getPollByTargetSrl.xml
│   │   │   ├── getPollItem.xml
│   │   │   ├── getPollList.xml
│   │   │   ├── getPollListWithMember.xml
│   │   │   ├── getPollLog.xml
│   │   │   ├── getPollTitle.xml
│   │   │   ├── insertPoll.xml
│   │   │   ├── insertPollItem.xml
│   │   │   ├── insertPollLog.xml
│   │   │   ├── insertPollTitle.xml
│   │   │   ├── updatePoll.xml
│   │   │   ├── updatePollItemTarget.xml
│   │   │   ├── updatePollItems.xml
│   │   │   ├── updatePollTarget.xml
│   │   │   ├── updatePollTitle.xml
│   │   │   └── updatePollTitleTarget.xml
│   │   ├── ruleset/
│   │   │   ├── deleteChecked.xml
│   │   │   ├── insertConfig.xml
│   │   │   └── poll.xml
│   │   ├── schemas/
│   │   │   ├── poll.xml
│   │   │   ├── poll_item.xml
│   │   │   ├── poll_log.xml
│   │   │   └── poll_title.xml
│   │   ├── skins/
│   │   │   ├── default/
│   │   │   │   ├── css/
│   │   │   │   │   └── poll.css
│   │   │   │   ├── filter/
│   │   │   │   │   └── poll.xml
│   │   │   │   ├── form.html
│   │   │   │   ├── result.html
│   │   │   │   └── skin.xml
│   │   │   └── simple/
│   │   │       ├── css/
│   │   │       │   └── poll.css
│   │   │       ├── filter/
│   │   │       │   └── poll.xml
│   │   │       ├── form.html
│   │   │       ├── result.html
│   │   │       └── skin.xml
│   │   └── tpl/
│   │       ├── config.html
│   │       ├── css/
│   │       │   └── poll.css
│   │       ├── filter/
│   │       │   ├── delete_checked.xml
│   │       │   └── insert_config.xml
│   │       ├── header.html
│   │       ├── js/
│   │       │   ├── poll.js
│   │       │   └── poll_admin.js
│   │       ├── poll_list.html
│   │       └── result.html
│   ├── rss/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── rss.admin.controller.php
│   │   ├── rss.admin.view.php
│   │   ├── rss.class.php
│   │   ├── rss.controller.php
│   │   ├── rss.model.php
│   │   ├── rss.view.php
│   │   ├── ruleset/
│   │   │   ├── insertRssConfig.xml
│   │   │   └── insertRssModuleConfig.xml
│   │   └── tpl/
│   │       ├── format/
│   │       │   ├── atom10.html
│   │       │   ├── rss10.html
│   │       │   ├── rss20.html
│   │       │   └── xe.html
│   │       ├── rss_admin_index.html
│   │       └── rss_module_config.html
│   ├── session/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteSession.xml
│   │   │   ├── gcSession.xml
│   │   │   ├── getExpiredSessions.xml
│   │   │   ├── getLoggedMembers.xml
│   │   │   ├── getSession.xml
│   │   │   ├── insertSession.xml
│   │   │   └── updateSession.xml
│   │   ├── schemas/
│   │   │   └── session.xml
│   │   ├── session.admin.controller.php
│   │   ├── session.admin.view.php
│   │   ├── session.class.php
│   │   ├── session.controller.php
│   │   ├── session.model.php
│   │   └── tpl/
│   │       ├── index.html
│   │       └── js/
│   │           └── session.js
│   ├── spamfilter/
│   │   ├── captcha/
│   │   │   ├── recaptcha.php
│   │   │   └── turnstile.php
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── de.php
│   │   │   ├── en.php
│   │   │   ├── es.php
│   │   │   ├── fr.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   ├── mn.php
│   │   │   ├── ru.php
│   │   │   ├── tr.php
│   │   │   ├── vi.php
│   │   │   ├── zh-CN.php
│   │   │   └── zh-TW.php
│   │   ├── queries/
│   │   │   ├── deleteDeniedIP.xml
│   │   │   ├── deleteDeniedWord.xml
│   │   │   ├── deleteLog.xml
│   │   │   ├── getDeniedIPList.xml
│   │   │   ├── getDeniedWordList.xml
│   │   │   ├── getLogCount.xml
│   │   │   ├── insertDeniedIP.xml
│   │   │   ├── insertDeniedWord.xml
│   │   │   ├── insertLog.xml
│   │   │   ├── isDeniedIP.xml
│   │   │   ├── updateDeniedIPAttributes.xml
│   │   │   ├── updateDeniedIPHit.xml
│   │   │   ├── updateDeniedWordAttributes.xml
│   │   │   └── updateDeniedWordHit.xml
│   │   ├── schemas/
│   │   │   ├── spamfilter_denied_ip.xml
│   │   │   ├── spamfilter_denied_word.xml
│   │   │   └── spamfilter_log.xml
│   │   ├── spamfilter.admin.controller.php
│   │   ├── spamfilter.admin.view.php
│   │   ├── spamfilter.class.php
│   │   ├── spamfilter.controller.php
│   │   ├── spamfilter.model.php
│   │   └── tpl/
│   │       ├── captcha_test.html
│   │       ├── config_block.html
│   │       ├── config_captcha.html
│   │       ├── css/
│   │       │   └── spamfilter_admin.css
│   │       ├── denied_ip_list.html
│   │       ├── denied_word_list.html
│   │       ├── filter/
│   │       │   ├── delete_denied_ip.xml
│   │       │   ├── delete_denied_word.xml
│   │       │   ├── insert_config.xml
│   │       │   ├── insert_denied_ip.xml
│   │       │   └── insert_denied_word.xml
│   │       ├── footer.html
│   │       ├── header.html
│   │       └── js/
│   │           ├── recaptcha.js
│   │           ├── spamfilter_admin.js
│   │           └── turnstile.js
│   ├── tag/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   └── ko.php
│   │   ├── queries/
│   │   │   ├── deleteModuleTags.xml
│   │   │   ├── deleteTag.xml
│   │   │   ├── deleteTagByTag.xml
│   │   │   ├── getAllTagList.xml
│   │   │   ├── getDocumentSrlByTag.xml
│   │   │   ├── getDocumentsTagList.xml
│   │   │   ├── getTagList.xml
│   │   │   ├── insertTag.xml
│   │   │   └── updateTagModule.xml
│   │   ├── schemas/
│   │   │   └── tags.xml
│   │   ├── tag.admin.controller.php
│   │   ├── tag.admin.view.php
│   │   ├── tag.class.php
│   │   ├── tag.controller.php
│   │   ├── tag.model.php
│   │   └── tpl/
│   │       └── config.html
│   ├── trash/
│   │   ├── conf/
│   │   │   ├── info.xml
│   │   │   └── module.xml
│   │   ├── lang/
│   │   │   ├── en.php
│   │   │   ├── ja.php
│   │   │   ├── ko.php
│   │   │   └── zh-TW.php
│   │   ├── model/
│   │   │   └── TrashVO.php
│   │   ├── queries/
│   │   │   ├── deleteTrash.xml
│   │   │   ├── getDocumentExtraVars.xml
│   │   │   ├── getTrash.xml
│   │   │   ├── getTrashAllList.xml
│   │   │   ├── getTrashList.xml
│   │   │   └── insertTrash.xml
│   │   ├── ruleset/
│   │   │   └── emptyTrash.xml
│   │   ├── schemas/
│   │   │   └── trash.xml
│   │   ├── tpl/
│   │   │   ├── filter/
│   │   │   │   └── emptyTrash.xml
│   │   │   ├── header.html
│   │   │   ├── js/
│   │   │   │   └── trash_admin.js
│   │   │   ├── trash_list.html
│   │   │   └── trash_view.html
│   │   ├── trash.admin.controller.php
│   │   ├── trash.admin.view.php
│   │   ├── trash.class.php
│   │   ├── trash.controller.php
│   │   ├── trash.model.php
│   │   └── trash.view.php
│   └── widget/
│       ├── conf/
│       │   ├── info.xml
│       │   └── module.xml
│       ├── lang/
│       │   ├── en.php
│       │   ├── es.php
│       │   ├── fr.php
│       │   ├── ja.php
│       │   ├── ko.php
│       │   ├── ru.php
│       │   ├── tr.php
│       │   ├── vi.php
│       │   ├── zh-CN.php
│       │   └── zh-TW.php
│       ├── ruleset/
│       │   └── generateCodeInPage.xml
│       ├── tpl/
│       │   ├── add_content_widget.html
│       │   ├── css/
│       │   │   └── widget.css
│       │   ├── downloaded_widget_list.html
│       │   ├── filter/
│       │   │   ├── add_content.xml
│       │   │   ├── generate_code.xml
│       │   │   ├── generate_code_in_page.xml
│       │   │   └── style_generate_code_in_page.xml
│       │   ├── header.html
│       │   ├── js/
│       │   │   ├── generate_code.js
│       │   │   ├── widget.js
│       │   │   └── widget_admin.js
│       │   ├── skin_info.html
│       │   ├── widget_detail_info.html
│       │   ├── widget_generate_code.html
│       │   ├── widget_generate_code.include.html
│       │   ├── widget_generate_code_in_page.html
│       │   ├── widget_layer.html
│       │   └── widget_style_generate_code_in_page.html
│       ├── widget.admin.view.php
│       ├── widget.class.php
│       ├── widget.controller.php
│       ├── widget.model.php
│       └── widget.view.php
├── tests/
│   ├── _bootstrap.php
│   ├── _data/
│   │   ├── dbquery/
│   │   │   ├── deleteTest.xml
│   │   │   ├── emptyStringTest1.xml
│   │   │   ├── emptyStringTest2.xml
│   │   │   ├── ifVarTest.xml
│   │   │   ├── indexHintTest1.xml
│   │   │   ├── indexHintTest2.xml
│   │   │   ├── insertTest.xml
│   │   │   ├── nullValueTest1.xml
│   │   │   ├── nullValueTest2.xml
│   │   │   ├── selectCountTest1.xml
│   │   │   ├── selectCountTest2.xml
│   │   │   ├── selectJoinTest1.xml
│   │   │   ├── selectJoinTest2.xml
│   │   │   ├── selectSubqueryTest1.xml
│   │   │   ├── selectSubqueryTest2.xml
│   │   │   ├── selectSubqueryTest3.xml
│   │   │   ├── selectTest1.xml
│   │   │   ├── selectTest2.xml
│   │   │   ├── selectTest3.xml
│   │   │   ├── sortIndexTest.xml
│   │   │   └── updateTest.xml
│   │   ├── dbtable/
│   │   │   ├── example.xml
│   │   │   └── generated.xml
│   │   ├── dump.sql
│   │   ├── formatter/
│   │   │   ├── bbcode.source.txt
│   │   │   ├── bbcode.target.html
│   │   │   ├── concat.source1.css
│   │   │   ├── concat.source1.js
│   │   │   ├── concat.source2.css
│   │   │   ├── concat.source2.js
│   │   │   ├── concat.source3.css
│   │   │   ├── concat.target1.css
│   │   │   ├── concat.target1.js
│   │   │   ├── concat.target2.css
│   │   │   ├── concat.target2.js
│   │   │   ├── concat.target3.css
│   │   │   ├── html2markdown.source.html
│   │   │   ├── html2markdown.target.md
│   │   │   ├── html2text.source.html
│   │   │   ├── html2text.target.txt
│   │   │   ├── less.source1.less
│   │   │   ├── less.source2.less
│   │   │   ├── less.target1.css
│   │   │   ├── less.target2.css
│   │   │   ├── markdown2html.source.md
│   │   │   ├── markdown2html.target1.html
│   │   │   ├── markdown2html.target2.html
│   │   │   ├── markdown2html.target3.html
│   │   │   ├── markdown2html.target4.html
│   │   │   ├── markdownextra.source.md
│   │   │   ├── markdownextra.target1.html
│   │   │   ├── markdownextra.target2.html
│   │   │   ├── minify.source.css
│   │   │   ├── minify.source.js
│   │   │   ├── minify.target.css
│   │   │   ├── minify.target.js
│   │   │   ├── scss/
│   │   │   │   ├── _partial1.scss
│   │   │   │   ├── _partial2.scss
│   │   │   │   ├── include1.scss
│   │   │   │   └── include2.scss
│   │   │   ├── scss.source1.scss
│   │   │   ├── scss.source2
Download .txt
Showing preview only (1,071K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (11620 symbols across 1422 files)

FILE: addons/member_extra_info/member_extra_info.lib.php
  function memberTransImageName (line 7) | function memberTransImageName($matches)

FILE: addons/point_level_icon/point_level_icon.lib.php
  function pointLevelIconTrans (line 7) | function pointLevelIconTrans($matches, $addon_info)

FILE: classes/cache/CacheHandler.class.php
  class CacheHandler (line 8) | class CacheHandler extends Handler
    method getInstance (line 23) | public static function getInstance($target = null, $info = null, $alwa...
    method __construct (line 39) | protected function __construct($target = null, $info = null, $always_u...
    method isSupport (line 49) | public function isSupport()
    method getCacheKey (line 60) | public function getCacheKey($key)
    method get (line 73) | public function get($key, $modified_time = 0)
    method put (line 89) | public function put($key, $obj, $valid_time = 0)
    method delete (line 100) | public function delete($key)
    method isValid (line 113) | public function isValid($key, $modified_time = 0)
    method truncate (line 123) | public function truncate()
    method getGroupKey (line 144) | public function getGroupKey($keyGroupName, $key)
    method invalidateGroupKey (line 155) | public function invalidateGroupKey($keyGroupName)

FILE: classes/context/Context.class.php
  class Context (line 8) | #[AllowDynamicProperties]
    method getInstance (line 160) | public static function getInstance()
    method __construct (line 177) | private function __construct()
    method init (line 187) | public static function init()
    method getSessionStatus (line 420) | public static function getSessionStatus()
    method checkSessionStatus (line 430) | public static function checkSessionStatus($force = false)
    method close (line 440) | public static function close()
    method setCacheControl (line 462) | public static function setCacheControl($ttl = 0, $public = true): void
    method setCorsPolicy (line 492) | public static function setCorsPolicy(string $origin = '*', array $meth...
    method redirect (line 517) | public static function redirect(string $url, int $status_code = 302, i...
    method loadDBInfo (line 528) | public static function loadDBInfo($config = null)
    method getDBType (line 559) | public static function getDBType()
    method setDBInfo (line 571) | public static function setDBInfo(object $db_info): void
    method getDBInfo (line 582) | public static function getDBInfo(): object
    method getRouteInfo (line 593) | public static function getRouteInfo(): Rhymix\Framework\Request
    method getCurrentRequest (line 603) | public static function getCurrentRequest(): Rhymix\Framework\Request
    method getSSLStatus (line 614) | public static function getSSLStatus(): string
    method getDefaultUrl (line 626) | public static function getDefaultUrl($site_module_info = null, $use_ss...
    method loadLangSupported (line 650) | public static function loadLangSupported()
    method loadLangSelected (line 661) | public static function loadLangSelected()
    method checkSSO (line 689) | public static function checkSSO()
    method isFTPRegisted (line 700) | public static function isFTPRegisted()
    method getFTPInfo (line 712) | public static function getFTPInfo()
    method addBrowserTitle (line 729) | public static function addBrowserTitle($title, $delimiter = ' - ')
    method prependBrowserTitle (line 752) | public static function prependBrowserTitle($title, $delimiter = ' - ')
    method setBrowserTitle (line 775) | public static function setBrowserTitle($title, $vars = array())
    method getBrowserTitle (line 796) | public static function getBrowserTitle()
    method getSiteTitle (line 810) | public static function getSiteTitle()
    method getSiteSubtitle (line 828) | public static function getSiteSubtitle()
    method _getBrowserTitle (line 846) | public static function _getBrowserTitle()
    method loadLang (line 858) | public static function loadLang($path, $plugin_name = null)
    method setLangType (line 881) | public static function setLangType($lang_type = 'ko')
    method getLangType (line 903) | public static function getLangType()
    method getLang (line 914) | public static function getLang($code)
    method setLang (line 932) | public static function setLang($code, $val)
    method replaceUserLang (line 950) | public static function replaceUserLang($string, $fix_double_escape = f...
    method convertEncoding (line 990) | public static function convertEncoding($source_obj)
    method checkConvertFlag (line 1031) | public static function checkConvertFlag(&$val, $key = null, $charset =...
    method doConvertEncoding (line 1060) | public static function doConvertEncoding(&$val, $key = null, $charset ...
    method convertEncodingStr (line 1080) | public static function convertEncodingStr($str)
    method encodeIdna (line 1100) | public static function encodeIdna($domain)
    method decodeIdna (line 1112) | public static function decodeIdna($domain)
    method _checkGlobalVars (line 1122) | private static function _checkGlobalVars()
    method setResponseMethod (line 1146) | public static function setResponseMethod($method = 'HTML', $content_ty...
    method getResponseMethod (line 1161) | public static function getResponseMethod()
    method getRequestMethod (line 1178) | public static function getRequestMethod()
    method setRequestMethod (line 1189) | public static function setRequestMethod($type = '')
    method setRequestArguments (line 1252) | public static function setRequestArguments(array $router_args = [])
    method setUploadInfo (line 1324) | public static function setUploadInfo()
    method _recursiveCheckVar (line 1401) | private static function _recursiveCheckVar($val)
    method _filterXmlVars (line 1440) | private static function _filterXmlVars($key, $val)
    method _filterRequestVar (line 1488) | private static function _filterRequestVar($key, $val)
    method isUploaded (line 1552) | public static function isUploaded()
    method _setUploadedArgument (line 1563) | public static function _setUploadedArgument()
    method enforceSiteLock (line 1571) | private static function enforceSiteLock()
    method displayErrorPage (line 1634) | public static function displayErrorPage($title = 'Error', $message = '...
    method getRequestUrl (line 1682) | public static function getRequestUrl()
    method getJSCallbackFunc (line 1698) | public static function getJSCallbackFunc()
    method getUrl (line 1722) | public static function getUrl($num_args = 0, $args_list = array(), $do...
    method getRequestUri (line 1927) | public static function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL, $...
    method set (line 1977) | public static function set($key, $val, $replace_request_arg = false)
    method get (line 2006) | public static function get($key)
    method gets (line 2033) | public static function gets()
    method getAll (line 2059) | public static function getAll()
    method getRequestVars (line 2069) | public static function getRequestVars()
    method clearRequestVars (line 2083) | public static function clearRequestVars()
    method clearUserVars (line 2096) | public static function clearUserVars()
    method addSSLAction (line 2108) | public static function addSSLAction($action)
    method addSSLActions (line 2120) | public static function addSSLActions($action_array)
    method subtractSSLAction (line 2132) | public static function subtractSSLAction($action)
    method getSSLActions (line 2143) | public static function getSSLActions()
    method isExistsSSLAction (line 2155) | public static function isExistsSSLAction($action)
    method normalizeFilePath (line 2167) | public static function normalizeFilePath($file)
    method getAbsFileUrl (line 2189) | public static function getAbsFileUrl($file)
    method loadFile (line 2220) | public static function loadFile($args)
    method unloadFile (line 2238) | public static function unloadFile($file, $unused = '', $media = 'all')
    method unloadAllFiles (line 2249) | public static function unloadAllFiles($type = 'all')
    method addJsFile (line 2267) | public static function addJsFile($file, $unused1 = '', $unused2 = '', ...
    method unloadJsFile (line 2294) | public static function unloadJsFile($file)
    method unloadAllJsFiles (line 2304) | public static function unloadAllJsFiles()
    method addJsFilter (line 2316) | public static function addJsFilter($path, $filename)
    method _getUniqueFileList (line 2329) | public static function _getUniqueFileList($files)
    method getJsFile (line 2353) | public static function getJsFile($type = 'head', $finalize = false)
    method addCSSFile (line 2370) | public static function addCSSFile($file, $unused1 = '', $media = 'all'...
    method unloadCSSFile (line 2384) | public static function unloadCSSFile($file, $unused = '', $media = 'all')
    method unloadAllCSSFiles (line 2394) | public static function unloadAllCSSFiles()
    method getCSSFile (line 2405) | public static function getCSSFile($finalize = false)
    method getJavascriptPluginInfo (line 2416) | public static function getJavascriptPluginInfo($plugin_name)
    method loadJavascriptPlugin (line 2476) | public static function loadJavascriptPlugin($plugin_name)
    method addHtmlHeader (line 2539) | public static function addHtmlHeader($header, bool $prepend = false)
    method getHtmlHeader (line 2556) | public static function getHtmlHeader(): string
    method clearHtmlHeader (line 2566) | public static function clearHtmlHeader()
    method addBodyClass (line 2576) | public static function addBodyClass($class_name)
    method removeBodyClass (line 2590) | public static function removeBodyClass($class_name)
    method getBodyClassList (line 2603) | public static function getBodyClassList(): array
    method getBodyClass (line 2614) | public static function getBodyClass(): string
    method addBodyHeader (line 2633) | public static function addBodyHeader($header, bool $prepend = false)
    method getBodyHeader (line 2650) | public static function getBodyHeader()
    method addHtmlFooter (line 2662) | public static function addHtmlFooter($footer, bool $prepend = false)
    method getHtmlFooter (line 2679) | public static function getHtmlFooter()
    method addLink (line 2691) | public static function addLink(string $url, string $rel): void
    method getLinks (line 2701) | public static function getLinks(): array
    method getConfigFile (line 2712) | public static function getConfigFile()
    method getFTPConfigFile (line 2723) | public static function getFTPConfigFile()
    method setValidatorMessage (line 2735) | public static function setValidatorMessage($id, $message, $type = 'info')
    method isInstalled (line 2749) | public static function isInstalled()
    method isLocked (line 2759) | public static function isLocked()
    method transContent (line 2771) | public static function transContent($content)
    method isAllowRewrite (line 2782) | public static function isAllowRewrite()
    method isDefaultPlugin (line 2794) | public static function isDefaultPlugin($plugin_name, $type)
    method isBlacklistedPlugin (line 2815) | public static function isBlacklistedPlugin($plugin_name, $type = '')
    method isReservedWord (line 2849) | public static function isReservedWord($word)
    method pathToUrl (line 2870) | public static function pathToUrl($path)
    method getMetaTag (line 2927) | public static function getMetaTag($name = null)
    method addMetaTag (line 2948) | public static function addMetaTag($name, $content, $is_http_equiv = fa...
    method getMetaImages (line 2963) | public static function getMetaImages()
    method addMetaImage (line 2976) | public static function addMetaImage($filename, $width = 0, $height = 0)
    method getOpenGraphData (line 2999) | public static function getOpenGraphData()
    method addOpenGraphData (line 3020) | public static function addOpenGraphData($name, $content)
    method setCanonicalURL (line 3041) | public static function setCanonicalURL($url)
    method getCanonicalURL (line 3052) | public static function getCanonicalURL()

FILE: classes/db/DB.class.php
  class DB (line 3) | class DB extends Rhymix\Framework\DB

FILE: classes/display/DisplayHandler.class.php
  class DisplayHandler (line 8) | class DisplayHandler extends Handler
    method printContent (line 20) | public function printContent(&$oModule)
    method getDebugInfo (line 165) | public static function getDebugInfo(&$output = null): string
    method _printXMLHeader (line 325) | public static function _printXMLHeader()
    method _printHTMLHeader (line 334) | public static function _printHTMLHeader()
    method _printJSONHeader (line 343) | public static function _printJSONHeader()
    method _printCustomContentTypeHeader (line 354) | public static function _printCustomContentTypeHeader($content_type)
    method _printHttpStatusCode (line 364) | public static function _printHttpStatusCode($code)

FILE: classes/display/HTMLDisplayHandler.php
  class HTMLDisplayHandler (line 3) | class HTMLDisplayHandler
    method toDoc (line 50) | public function toDoc(&$oModule)
    method isPartialPageRendering (line 229) | public static function isPartialPageRendering()
    method prepareToPrint (line 259) | public function prepareToPrint(&$output)
    method _preserveValue (line 342) | function _preserveValue($match)
    method _preserveSelectValue (line 386) | function _preserveSelectValue($matches)
    method _preserveTextAreaValue (line 410) | function _preserveTextAreaValue($matches)
    method _moveStyleToHeader (line 423) | function _moveStyleToHeader($matches)
    method _moveLinkToHeader (line 438) | function _moveLinkToHeader($matches)
    method _transMeta (line 455) | function _transMeta($matches)
    method _addOpenGraphMetadata (line 477) | function _addOpenGraphMetadata()
    method _addTwitterMetadata (line 705) | function _addTwitterMetadata()
    method _loadDesktopJSCSS (line 731) | public function _loadDesktopJSCSS()
    method _loadMobileJSCSS (line 739) | private function _loadMobileJSCSS()
    method _loadCommonJSCSS (line 747) | private function _loadCommonJSCSS()

FILE: classes/display/JSCallbackDisplayHandler.php
  class JSCallbackDisplayHandler (line 3) | class JSCallbackDisplayHandler
    method toDoc (line 11) | function toDoc(&$oModule)

FILE: classes/display/JSONDisplayHandler.php
  class JSONDisplayHandler (line 3) | class JSONDisplayHandler
    method toDoc (line 11) | public function toDoc($oModule)
    method _convertCompat (line 37) | protected static function _convertCompat(&$array, $compat_type = 'JSON')
    method _isNumericArray (line 69) | protected static function _isNumericArray($array)

FILE: classes/display/RawDisplayHandler.php
  class RawDisplayHandler (line 3) | class RawDisplayHandler
    method toDoc (line 5) | function toDoc($oModule)

FILE: classes/display/VirtualXMLDisplayHandler.php
  class VirtualXMLDisplayHandler (line 3) | class VirtualXMLDisplayHandler
    method toDoc (line 10) | function toDoc(&$oModule)

FILE: classes/display/XMLDisplayHandler.php
  class XMLDisplayHandler (line 3) | class XMLDisplayHandler
    method toDoc (line 11) | function toDoc(&$oModule)
    method _makeXmlDoc (line 31) | function _makeXmlDoc($obj)

FILE: classes/editor/EditorHandler.class.php
  class EditorHandler (line 9) | class EditorHandler extends BaseObject
    method setInfo (line 17) | function setInfo($info)

FILE: classes/file/FileHandler.class.php
  class FileHandler (line 8) | class FileHandler
    method getRealPath (line 16) | public static function getRealPath($source): string
    method copyDir (line 42) | public static function copyDir($source_dir, $target_dir, $filter = '')
    method copyFile (line 55) | public static function copyFile($source, $target, $force = 'Y')
    method readFile (line 67) | public static function readFile($filename)
    method writeFile (line 80) | public static function writeFile($filename, $buff, $mode = "w")
    method removeFile (line 96) | public static function removeFile($filename)
    method rename (line 115) | public static function rename($source, $target)
    method moveFile (line 132) | public static function moveFile($source, $target)
    method moveDir (line 151) | public static function moveDir($source_dir, $target_dir)
    method readDir (line 172) | public static function readDir($path, $filter = '', $to_lower = FALSE,...
    method makeDir (line 210) | public static function makeDir($path_string)
    method removeDir (line 227) | public static function removeDir($path)
    method removeBlankDir (line 243) | public static function removeBlankDir($path)
    method removeFilesInDir (line 261) | public static function removeFilesInDir($path)
    method filesize (line 278) | public static function filesize($size)
    method getRemoteResource (line 327) | public static function getRemoteResource($url, $body = null, $timeout ...
    method getRemoteFile (line 422) | public static function getRemoteFile($url, $target_filename, $body = n...
    method returnBytes (line 442) | public static function returnBytes($val)
    method checkMemoryLoadImage (line 467) | public static function checkMemoryLoadImage($imageInfo, $resizeInfo = [])
    method checkImageRotation (line 510) | public static function checkImageRotation(string $filename)
    method createImageFile (line 549) | public static function createImageFile($source_file, $target_file, $re...
    method readIniFile (line 795) | public static function readIniFile($filename)
    method writeIniFile (line 822) | public static function writeIniFile($filename, $arr)
    method _makeIniBuff (line 839) | public static function _makeIniBuff($arr)
    method openFile (line 877) | public static function openFile($filename, $mode)
    method hasContent (line 890) | public static function hasContent($filename)
    method exists (line 901) | public static function exists($filename)
    method isDir (line 913) | public static function isDir($path)
    method isWritableDir (line 925) | public static function isWritableDir($path)
    method clearStatCache (line 938) | public static function clearStatCache($target, $include = false)
    method invalidateOpcache (line 961) | public static function invalidateOpcache($target, $force = true)

FILE: classes/file/FileObject.class.php
  class FileObject (line 8) | class FileObject extends BaseObject
    method __construct (line 36) | function __construct($path, $mode)
    method append (line 50) | function append($file_name)
    method feof (line 66) | function feof()
    method read (line 77) | function read($size = 1024)
    method write (line 88) | function write($str)
    method open (line 112) | function open($path, $mode)
    method getPath (line 133) | function getPath()
    method close (line 150) | function close()

FILE: classes/frontendfile/FrontEndFileHandler.class.php
  class FrontEndFileHandler (line 7) | class FrontEndFileHandler extends Handler
    method getInstance (line 72) | public static function getInstance(): self
    method isSsl (line 87) | public static function isSsl()
    method loadFile (line 114) | public function loadFile($args)
    method getFileInfo (line 214) | protected function getFileInfo($fileName, $unused = '', $media = 'all'...
    method startLog (line 287) | public function startLog()
    method endLog (line 298) | public function endLog(): array
    method proc_CSS_JS (line 311) | protected function proc_CSS_JS($file, $minify)
    method proc_LESS_SCSS (line 348) | protected function proc_LESS_SCSS($file, $minify)
    method unloadFile (line 430) | public function unloadFile($fileName, $unused = '', $media = 'all')
    method unloadAllFiles (line 467) | public function unloadAllFiles($type = 'all')
    method getCssFileList (line 490) | public function getCssFileList($finalize = false)
    method getJsFileList (line 581) | public function getJsFileList($type = 'head', $finalize = false)
    method _concatMap (line 680) | protected function _concatMap(&$map)
    method _sortMap (line 710) | protected function _sortMap(&$map, &$index)
    method _normalizeFilePath (line 721) | protected function _normalizeFilePath($path)
    method _getAbsFileUrl (line 748) | protected function _getAbsFileUrl($path)
    method _arrangeCssIndex (line 766) | protected function _arrangeCssIndex($dirname, $file, $hint = '')

FILE: classes/handler/Handler.class.php
  class Handler (line 8) | class Handler

FILE: classes/httprequest/XEHttpRequest.class.php
  class XEHttpRequest (line 12) | class XEHttpRequest
    method __construct (line 43) | function __construct($host, $port, $scheme='')
    method addToHeader (line 57) | function addToHeader($key, $value)
    method send (line 70) | function send($target = '/', $method = 'GET', $timeout = 3, $post_vars...
    method sendWithSock (line 114) | function sendWithSock($target, $method, $timeout, $post_vars)
    method sendWithCurl (line 204) | function sendWithCurl($target, $method, $timeout, $post_vars)

FILE: classes/mail/Mail.class.php
  class Mail (line 6) | class Mail extends Rhymix\Framework\Mail
    method useGmailAccount (line 15) | public static function useGmailAccount($account_name, $account_passwd)
    method useSMTP (line 32) | public static function useSMTP($auth = null, $host = null, $user = nul...
    method setAdditionalParams (line 46) | public function setAdditionalParams($additional_params)
    method setSender (line 58) | public function setSender($name, $email)
    method getSender (line 68) | public function getSender()
    method setReceiptor (line 80) | public function setReceiptor($name, $email)
    method getReceiptor (line 91) | public function getReceiptor()
    method setBCC (line 103) | public function setBCC($bcc)
    method getPlainContent (line 114) | public function getPlainContent()
    method getHTMLContent (line 124) | public function getHTMLContent()
    method addAttachment (line 136) | public function addAttachment($original_filename, $filename)
    method addCidAttachment (line 148) | public function addCidAttachment($original_filename, $cid = null)
    method procAttachments (line 158) | public function procAttachments()
    method procCidAttachments (line 168) | public function procCidAttachments()
    method checkMailMX (line 179) | public static function checkMailMX($email_address)
    method isAdvancedMailer (line 205) | public static function isAdvancedMailer()
    method isVaildMailAddress (line 217) | public static function isVaildMailAddress($email_address, $restrictive...
    method returnMIMEType (line 244) | public static function returnMIMEType($filename)

FILE: classes/mobile/Mobile.class.php
  class Mobile (line 8) | class Mobile
    method getInstance (line 21) | public function getInstance()
    method isFromMobilePhone (line 31) | public static function isFromMobilePhone()
    method _isFromMobilePhone (line 87) | public static function _isFromMobilePhone()
    method isMobileCheckByAgent (line 98) | public static function isMobileCheckByAgent()
    method isMobilePadCheckByAgent (line 109) | public static function isMobilePadCheckByAgent()
    method setMobile (line 121) | public static function setMobile($ismobile)
    method isMobileEnabled (line 131) | public static function isMobileEnabled()

FILE: classes/module/ModuleHandler.class.php
  class ModuleHandler (line 8) | class ModuleHandler extends Handler
    method __construct (line 58) | public function __construct($module = '', $act = '', $mid = '', $docum...
    method init (line 122) | public function init()
    method procModule (line 331) | public function procModule()
    method _checkDocumentSrl (line 766) | protected function _checkDocumentSrl()
    method _setModuleColorScheme (line 838) | protected function _setModuleColorScheme($site_module_info)
    method _setModuleSEOInfo (line 861) | protected function _setModuleSEOInfo($module_info, $site_module_info)
    method _setInputValueToSession (line 915) | protected static function _setInputValueToSession()
    method _setInputErrorToContext (line 930) | protected static function _setInputErrorToContext()
    method _clearErrorSession (line 960) | protected static function _clearErrorSession()
    method _createErrorMessage (line 973) | protected static function _createErrorMessage($error, $message, $statu...
    method displayContent (line 1004) | public function displayContent($oModule = NULL)
    method procCommandLineArguments (line 1232) | public static function procCommandLineArguments(array $args)
    method getModulePath (line 1263) | public static function getModulePath($module)
    method getModuleInstance (line 1276) | public static function getModuleInstance($module, $type = 'view', $kin...
    method triggerCall (line 1304) | public static function triggerCall($trigger_name, $called_position, &$...
    method _setHttpStatusMessage (line 1443) | public static function _setHttpStatusMessage($code)

FILE: classes/module/ModuleObject.class.php
  class ModuleObject (line 8) | class ModuleObject extends BaseObject
    method __construct (line 48) | public function __construct($error = 0, $message = 'success')
    method getInstance (line 59) | public static function getInstance($module_hint = null)
    method setModule (line 105) | public function setModule($module)
    method setModulePath (line 117) | public function setModulePath($path)
    method setRedirectUrl (line 133) | public function setRedirectUrl($url = './', $output = NULL)
    method getRedirectUrl (line 156) | public function getRedirectUrl()
    method setRefreshPage (line 169) | public function setRefreshPage()
    method setAct (line 182) | public function setAct($act)
    method setModuleInfo (line 195) | public function setModuleInfo($module_info, $xml_info)
    method setPrivileges (line 250) | public function setPrivileges()
    method checkPermission (line 342) | public function checkPermission($grant = null, $member_info = null, &$...
    method _generatePermissionError (line 481) | protected function _generatePermissionError($failed_requirement)
    method stop (line 520) | public function stop($msg_code, $error_code = -1)
    method setTemplateFile (line 556) | public function setTemplateFile($filename)
    method getTemplateFile (line 567) | public function getTemplateFile()
    method setTemplatePath (line 578) | public function setTemplatePath($path)
    method getTemplatePath (line 598) | public function getTemplatePath()
    method setEditedLayoutFile (line 609) | public function setEditedLayoutFile($filename)
    method getEditedLayoutFile (line 621) | public function getEditedLayoutFile()
    method setLayoutFile (line 632) | public function setLayoutFile($filename)
    method getLayoutFile (line 643) | public function getLayoutFile()
    method setLayoutPath (line 654) | public function setLayoutPath($path)
    method getLayoutPath (line 674) | public function getLayoutPath()
    method setLayoutAndTemplatePaths (line 686) | public function setLayoutAndTemplatePaths($type, $config)
    method proc (line 791) | public function proc()
    method copyResponseFrom (line 942) | public function copyResponseFrom(self $instance)

FILE: classes/object/Object.class.php
  class BaseObject (line 8) | #[AllowDynamicProperties]
    method __construct (line 42) | public function __construct($error = 0, $message = 'success')
    method __set_state (line 67) | public static function __set_state(array $vars)
    method setError (line 83) | public function setError($error = 0)
    method getError (line 115) | public function getError()
    method setHttpStatusCode (line 126) | public function setHttpStatusCode($code = 200)
    method getHttpStatusCode (line 137) | public function getHttpStatusCode()
    method setMessage (line 149) | public function setMessage($message = 'success', $type = null)
    method getMessage (line 164) | public function getMessage()
    method setMessageType (line 174) | public function setMessageType($type)
    method getMessageType (line 184) | public function getMessageType()
    method set (line 202) | public function set($key, $val)
    method add (line 211) | public function add($key, $val)
    method sets (line 222) | public function sets($vars)
    method adds (line 241) | public function adds($vars)
    method get (line 252) | public function get($key)
    method gets (line 262) | public function gets()
    method getVariables (line 278) | public function getVariables()
    method getObjectVars (line 288) | public function getObjectVars()
    method unset (line 298) | public function unset($key)
    method toBool (line 308) | public function toBool()
    method toBoolean (line 319) | public function toBoolean()

FILE: classes/page/PageHandler.class.php
  class PageHandler (line 8) | class PageHandler extends Handler implements Iterator
    method __construct (line 39) | public function __construct(int $total_count, int $total_page, int $cu...
    method getNextPage (line 71) | public function getNextPage(): int
    method getPage (line 87) | public function getPage(int $offset): int
    method rewind (line 97) | public function rewind(): void
    method valid (line 107) | public function valid(): bool
    method current (line 118) | public function current(): int
    method key (line 128) | public function key(): int
    method next (line 138) | public function next(): void

FILE: classes/security/EmbedFilter.class.php
  class EmbedFilter (line 6) | class EmbedFilter
    method getInstance (line 22) | function getInstance()
    method getWhiteUrlList (line 27) | public function getWhiteUrlList()
    method getWhiteIframeUrlList (line 32) | public function getWhiteIframeUrlList()
    method isWhiteDomain (line 37) | function isWhiteDomain($urlAttribute)
    method isWhiteIframeDomain (line 42) | function isWhiteIframeDomain($urlAttribute)
    method isWhiteMimetype (line 47) | function isWhiteMimetype($mimeType)
    method isWhiteExt (line 52) | function isWhiteExt($ext)
    method check (line 57) | function check(&$content)
    method checkIframeTag (line 62) | function checkIframeTag(&$content)
    method checkObjectTag (line 67) | function checkObjectTag(&$content)
    method checkEmbedTag (line 72) | function checkEmbedTag(&$content)
    method checkParamTag (line 77) | function checkParamTag(&$content)

FILE: classes/security/IpFilter.class.php
  class IpFilter (line 6) | class IpFilter
    method filter (line 8) | public static function filter($ip_list, $ip = NULL)
    method validate (line 14) | public static function validate($ip_list = array())

FILE: classes/security/Password.class.php
  class Password (line 6) | class Password
    method registerCustomAlgorithm (line 8) | public static function registerCustomAlgorithm($name, $regexp, $callback)
    method getSupportedAlgorithms (line 13) | public static function getSupportedAlgorithms()
    method getBestAlgorithm (line 18) | public static function getBestAlgorithm()
    method getCurrentlySelectedAlgorithm (line 23) | public static function getCurrentlySelectedAlgorithm()
    method getWorkFactor (line 28) | public static function getWorkFactor()
    method createHash (line 33) | public static function createHash($password, $algorithm = null)
    method checkPassword (line 38) | public static function checkPassword($password, $hash, $algorithm = null)
    method checkAlgorithm (line 43) | public static function checkAlgorithm($hash)
    method checkWorkFactor (line 49) | public static function checkWorkFactor($hash)
    method createSecureSalt (line 54) | public static function createSecureSalt($length, $format = 'hex')
    method createTemporaryPassword (line 59) | public static function createTemporaryPassword($length = 16)
    method createSignature (line 64) | public static function createSignature($string)
    method checkSignature (line 69) | public static function checkSignature($string, $signature)
    method getSecretKey (line 74) | public static function getSecretKey()
    method pbkdf2 (line 79) | public static function pbkdf2($password, $salt, $algorithm = 'sha256',...
    method bcrypt (line 86) | public static function bcrypt($password, $salt = null)
    method strcmpConstantTime (line 91) | public static function strcmpConstantTime($a, $b)

FILE: classes/security/Purifier.class.php
  class Purifier (line 6) | class Purifier
    method getInstance (line 8) | public static function getInstance()
    method purify (line 13) | public function purify(&$content)

FILE: classes/security/Security.class.php
  class Security (line 9) | class Security
    method __construct (line 23) | public function __construct($var = NULL)
    method encodeHTML (line 35) | public function encodeHTML(/* , $varName1, $varName2, ... */)
    method _encodeHTML (line 110) | protected function _encodeHTML($var, $name = array())
    method detectingXEE (line 184) | public static function detectingXEE($xml)

FILE: classes/security/UploadFileFilter.class.php
  class UploadFileFilter (line 3) | class UploadFileFilter
    method check (line 12) | public static function check($file, $filename = null)

FILE: classes/template/TemplateHandler.class.php
  class TemplateHandler (line 3) | class TemplateHandler extends Rhymix\Framework\Template

FILE: classes/validator/Validator.class.php
  class Validator (line 8) | class Validator
    method __construct (line 70) | function __construct($xml_path = '')
    method __destruct (line 95) | function __destruct()
    method load (line 106) | function load($xml_path)
    method setCacheDir (line 135) | function setCacheDir($cache_dir)
    method validate (line 148) | function validate($fields_ = null)
    method arrayTrim (line 343) | function arrayTrim($array)
    method error (line 363) | function error($field, $msg)
    method getLastError (line 395) | function getLastError()
    method addRule (line 406) | function addRule($name, $rule = '')
    method removeRule (line 443) | function removeRule($name)
    method addFilter (line 454) | function addFilter($name, $filter = '')
    method removeFilter (line 497) | function removeFilter($name)
    method applyRule (line 508) | function applyRule($name, $value)
    method getJsPath (line 542) | function getJsPath()
    method _compile2js (line 584) | function _compile2js()
    method _execExpression (line 729) | protected static function _execExpression($value, $expression)

FILE: classes/widget/WidgetHandler.class.php
  class WidgetHandler (line 8) | class WidgetHandler

FILE: classes/xml/GeneralXmlParser.class.php
  class GeneralXmlParser (line 10) | class GeneralXmlParser
    method parse (line 24) | function parse($input = '')
    method _tagOpen (line 50) | function _tagOpen($parser, $node_name, $attrs)
    method _tagBody (line 67) | function _tagBody($parser, $body)
    method _tagClosed (line 79) | function _tagClosed($parser, $node_name)

FILE: classes/xml/XmlGenerator.class.php
  class XmlGenerator (line 9) | class XmlGenerator
    method obj2xml (line 17) | function obj2xml($xml)
    method _makexml (line 33) | function _makexml($node)

FILE: classes/xml/XmlJsFilter.class.php
  class XmlJsFilter (line 48) | class XmlJsFilter extends XeXmlParser
    method __construct (line 81) | function __construct($path, $xml_file)
    method compile (line 95) | function compile()
    method _compile (line 116) | function _compile()
    method _getCompiledFileName (line 419) | function _getCompiledFileName($xml_file)

FILE: classes/xml/XmlLangParser.class.php
  class XmlLangParser (line 10) | class XmlLangParser extends XeXmlParser
    method __construct (line 54) | function __construct($xml_file, $lang_type)
    method compile (line 65) | function compile()
    method getCompileContent (line 94) | function getCompileContent()
    method _compile (line 109) | function _compile()
    method _writeFile (line 136) | function _writeFile()
    method _parseItem (line 152) | function _parseItem($item, $var)
    method _parseValues (line 201) | function _parseValues($nodes, $var)
    method _parseValue (line 252) | function _parseValue($node, $var)
    method _getCompiledFileName (line 271) | function _getCompiledFileName($lang_type, $type = 'php')

FILE: classes/xml/XmlParser.class.php
  class XeXmlParser (line 10) | class XeXmlParser
    method loadXmlFile (line 19) | public static function loadXmlFile($filename): ?object
    method parse (line 39) | function parse($input = ''): ?object

FILE: common/framework/Cache.php
  class Cache (line 8) | class Cache
    method init (line 37) | public static function init($config): Drivers\CacheInterface
    method getSupportedDrivers (line 93) | public static function getSupportedDrivers(): array
    method getDriverName (line 113) | public static function getDriverName(): ?string
    method getDriverInstance (line 125) | public static function getDriverInstance($name = null, array $config =...
    method getPrefix (line 150) | public static function getPrefix(): string
    method getDefaultTTL (line 160) | public static function getDefaultTTL(): int
    method setDefaultTTL (line 171) | public static function setDefaultTTL(int $ttl): void
    method get (line 184) | public static function get(string $key)
    method set (line 209) | public static function set(string $key, $value, int $ttl = 0, bool $fo...
    method delete (line 238) | public static function delete(string $key): bool
    method exists (line 262) | public static function exists(string $key): bool
    method incr (line 284) | public static function incr(string $key, int $amount = 1): int
    method decr (line 306) | public static function decr(string $key, int $amount = 1): int
    method clearGroup (line 326) | public static function clearGroup(string $group_name): bool
    method clearAll (line 351) | public static function clearAll(): bool
    method getGroupVersion (line 373) | public static function getGroupVersion(string $group_name): int
    method getRealKey (line 398) | public static function getRealKey(string $key): string
    method sendClearRequest (line 418) | public static function sendClearRequest(array $keys): void

FILE: common/framework/Calendar.php
  class Calendar (line 8) | class Calendar
    method getMonthName (line 17) | public static function getMonthName(int $month_number, bool $long_form...
    method getMonthStartDayOfWeek (line 38) | public static function getMonthStartDayOfWeek(int $month_number, ?int ...
    method getMonthDays (line 58) | public static function getMonthDays(int $month_number, ?int $year = nu...
    method getMonthCalendar (line 82) | public static function getMonthCalendar(int $month_number, ?int $year ...

FILE: common/framework/Config.php
  class Config (line 8) | class Config
    method init (line 29) | public static function init(): array
    method getAll (line 58) | public static function getAll(): array
    method getDefaults (line 68) | public static function getDefaults(): array
    method get (line 79) | public static function get(string $key)
    method set (line 105) | public static function set(string $key, $value): void
    method setAll (line 126) | public static function setAll(array $config): void
    method save (line 137) | public static function save(?array $config = null): bool
    method serialize (line 186) | public static function serialize($value): string

FILE: common/framework/Cookie.php
  class Cookie (line 8) | class Cookie
    method get (line 16) | public static function get(string $name): ?string
    method set (line 40) | public static function set(string $name, string $value, array $options...
    method remove (line 102) | public static function remove(string $name, array $options = []): bool

FILE: common/framework/DB.php
  class DB (line 8) | class DB
    method getInstance (line 61) | public static function getInstance(string $type = 'master'): self
    method __construct (line 92) | public function __construct(string $type, array $config)
    method connect (line 119) | public function connect(array $config): void
    method disconnect (line 161) | public function disconnect(): void
    method getHandle (line 172) | public function getHandle(): ?Helpers\DBHelper
    method prepare (line 190) | public function prepare(string $statement, array $driver_options = [])...
    method query (line 222) | public function query(string $query_string, ...$args): ?Helpers\DBStmt...
    method executeQuery (line 263) | public function executeQuery(string $query_id, $args = [], array $colu...
    method _executeCountQuery (line 441) | protected function _executeCountQuery(string $query_id, Parsers\DBQuer...
    method fetch (line 527) | public function fetch($stmt, int $last_index = 0, string $result_type ...
    method beginTransaction (line 582) | public function beginTransaction(): int
    method begin (line 592) | public function begin(): int
    method rollback (line 624) | public function rollback(): int
    method commit (line 660) | public function commit(): int
    method getTransactionLevel (line 699) | public function getTransactionLevel(): int
    method getAffectedRows (line 709) | public function getAffectedRows(): int
    method getInsertID (line 719) | public function getInsertID(): int
    method getNextSequence (line 729) | public function getNextSequence(): int
    method isValidOldPassword (line 754) | public function isValidOldPassword(string $password, string $saved_pas...
    method isTableExists (line 774) | public function isTableExists(string $table_name): bool
    method createTable (line 788) | public function createTable(string $filename = '', string $content = '...
    method dropTable (line 813) | public function dropTable(string $table_name): Helpers\DBResultHelper
    method isColumnExists (line 826) | public function isColumnExists(string $table_name, string $column_name...
    method addColumn (line 845) | public function addColumn(string $table_name, string $column_name, str...
    method modifyColumn (line 897) | public function modifyColumn(string $table_name, string $column_name, ...
    method dropColumn (line 958) | public function dropColumn(string $table_name, string $column_name): H...
    method getColumnInfo (line 971) | public function getColumnInfo(string $table_name, string $column_name)...
    method isIndexExists (line 1024) | public function isIndexExists(string $table_name, string $index_name):...
    method addIndex (line 1041) | public function addIndex(string $table_name, string $index_name, $colu...
    method dropIndex (line 1081) | public function dropIndex(string $table_name, string $index_name): Hel...
    method getIndexInfo (line 1094) | public function getIndexInfo(string $table_name, string $index_name): ...
    method addPrefixes (line 1136) | public function addPrefixes(string $query_string): string
    method addQuotes (line 1183) | public function addQuotes($str): string
    method getBestSupportedCharset (line 1200) | public function getBestSupportedCharset(): string
    method isError (line 1214) | public function isError(): bool
    method getError (line 1224) | public function getError(): Helpers\DBResultHelper
    method setError (line 1236) | public function setError(int $errno = 0, string $errstr = 'success'): ...
    method clearError (line 1249) | public function clearError(): void
    method getQueryLog (line 1262) | public function getQueryLog(string $query, float $elapsed_time): array
    method setQueryLog (line 1314) | public function setQueryLog(array $log): void
    method addElapsedTime (line 1325) | public function addElapsedTime(float $elapsed_time): void
    method getQueryElapsedTime (line 1335) | public function getQueryElapsedTime(): float
    method getTotalElapsedTime (line 1345) | public function getTotalElapsedTime(): float
    method setDebugComment (line 1356) | public function setDebugComment(bool $enabled): void
    method __get (line 1367) | public function __get(string $key)
    method _query (line 1393) | public function _query($query_string): ?Helpers\DBStmtHelper
    method _fetch (line 1416) | public function _fetch($stmt, int $last_index = 0)
    method create (line 1428) | public static function create(): self
    method db_fetch_object (line 1440) | public function db_fetch_object(\PDOStatement $stmt)
    method db_free_result (line 1452) | public function db_free_result(\PDOStatement $stmt): bool
    method db_insert_id (line 1463) | public function db_insert_id(): int
    method getSupportedList (line 1474) | public static function getSupportedList(): array
    method getEnableList (line 1490) | public static function getEnableList(): array
    method getDisableList (line 1503) | public static function getDisableList(): array
    method isSupported (line 1516) | public function isSupported(): bool
    method isConnected (line 1527) | public function isConnected(): bool
    method close (line 1538) | public function close(): bool
    method createTableByXmlFile (line 1549) | public function createTableByXmlFile($filename): bool
    method createTableByXml (line 1554) | public function createTableByXml($xml_doc)
    method _createTable (line 1559) | public function _createTable($xml_doc)
    method getCountCache (line 1571) | public function getCountCache(): bool
    method putCountCache (line 1575) | public function putCountCache(): bool
    method resetCountCache (line 1579) | public function resetCountCache(): bool
    method getParser (line 1587) | public function getParser(): bool
    method _getSlaveConnectionStringIndex (line 1591) | public function _getSlaveConnectionStringIndex(): int
    method _getConnection (line 1595) | public function _getConnection(): ?Helpers\DBHelper
    method _dbInfoExists (line 1599) | public function _dbInfoExists(): bool

FILE: common/framework/DateTime.php
  class DateTime (line 8) | class DateTime
    method formatTimestamp (line 27) | public static function formatTimestamp(string $format, ?int $timestamp...
    method formatTimestampForCurrentUser (line 45) | public static function formatTimestampForCurrentUser(string $format, ?...
    method getTimezoneForCurrentUser (line 68) | public static function getTimezoneForCurrentUser(): string
    method getTimezoneList (line 93) | public static function getTimezoneList(): array
    method getTimezoneOffset (line 119) | public static function getTimezoneOffset(string $timezone, ?int $times...
    method getTimezoneOffsetFromInternal (line 138) | public static function getTimezoneOffsetFromInternal(string $timezone,...
    method getTimezoneOffsetByLegacyFormat (line 149) | public static function getTimezoneOffsetByLegacyFormat(string $timezon...
    method getTimezoneNameByOffset (line 169) | public static function getTimezoneNameByOffset(int $offset): string
    method getRelativeTimestamp (line 193) | public static function getRelativeTimestamp(?int $timestamp = null): s...

FILE: common/framework/Debug.php
  class Debug (line 8) | class Debug
    method enable (line 45) | public static function enable(): void
    method disable (line 55) | public static function disable(): void
    method getEntries (line 65) | public static function getEntries(): array
    method clearEntries (line 75) | public static function clearEntries(): void
    method getErrors (line 85) | public static function getErrors(): array
    method clearErrors (line 95) | public static function clearErrors(): void
    method getQueries (line 105) | public static function getQueries(): array
    method getSlowQueries (line 115) | public static function getSlowQueries(): array
    method clearQueries (line 125) | public static function clearQueries(): void
    method getTriggers (line 136) | public static function getTriggers(): array
    method getSlowTriggers (line 146) | public static function getSlowTriggers(): array
    method clearTriggers (line 156) | public static function clearTriggers(): void
    method getWidgets (line 167) | public static function getWidgets(): array
    method getSlowWidgets (line 177) | public static function getSlowWidgets(): array
    method clearWidgets (line 187) | public static function clearWidgets(): void
    method getRemoteRequests (line 198) | public static function getRemoteRequests(): array
    method getSlowRemoteRequests (line 208) | public static function getSlowRemoteRequests(): array
    method clearRemoteRequests (line 218) | public static function clearRemoteRequests(): void
    method clearAll (line 229) | public static function clearAll(): void
    method addFilenameAlias (line 254) | public static function addFilenameAlias(string $display_filename, stri...
    method addTime (line 266) | public static function addTime(string $type, float $time): void
    method addEntry (line 284) | public static function addEntry($message): void
    method addError (line 347) | public static function addError(int $errno, string $errstr, string $er...
    method addQuery (line 417) | public static function addQuery(array $query): void
    method addTrigger (line 528) | public static function addTrigger(array $trigger): void
    method addWidget (line 563) | public static function addWidget(array $widget): void
    method addRemoteRequest (line 598) | public static function addRemoteRequest(array $request): void
    method exceptionHandler (line 637) | public static function exceptionHandler(\Throwable $e): void
    method shutdownHandler (line 687) | public static function shutdownHandler(): void
    method formatBacktrace (line 717) | public static function formatBacktrace(array $backtrace): string
    method translateFilename (line 739) | public static function translateFilename(string $filename)
    method registerErrorHandlers (line 758) | public static function registerErrorHandlers(int $error_types): void
    method displayErrorScreen (line 773) | public static function displayErrorScreen(string $message, string $loc...
    method displayError (line 819) | public static function displayError(string $message): void
    method isEnabledForCurrentUser (line 839) | public static function isEnabledForCurrentUser(): bool
    method getDebugData (line 893) | public static function getDebugData(): object
    method getErrorType (line 974) | public static function getErrorType(int $errno): string

FILE: common/framework/Exception.php
  class Exception (line 8) | class Exception extends \Exception
    method getUserFileAndLine (line 19) | public function getUserFileAndLine(): string

FILE: common/framework/Formatter.php
  class Formatter (line 8) | class Formatter
    method text2html (line 29) | public static function text2html(string $text, int $options = 0): string
    method html2text (line 66) | public static function html2text(string $html): string
    method markdown2html (line 100) | public static function markdown2html(string $markdown, int $options = ...
    method html2markdown (line 129) | public static function html2markdown(string $html): string
    method bbcode (line 143) | public static function bbcode(string $bbcode): string
    method applySmartQuotes (line 165) | public static function applySmartQuotes(string $html): string
    method compileLESS (line 179) | public static function compileLESS($source_filename, string $target_fi...
    method compileSCSS (line 227) | public static function compileSCSS($source_filename, string $target_fi...
    method minifyCSS (line 304) | public static function minifyCSS($source_filename, string $target_file...
    method minifyJS (line 332) | public static function minifyJS($source_filename, string $target_filen...
    method concatCSS (line 360) | public static function concatCSS($source_filename, string $target_file...
    method concatJS (line 528) | public static function concatJS($source_filename): string
    method convertIECondition (line 564) | public static function convertIECondition($condition)

FILE: common/framework/HTTP.php
  class HTTP (line 8) | class HTTP
    method resetClient (line 23) | public static function resetClient(): void
    method get (line 38) | public static function get(string $url, $data = null, array $headers =...
    method head (line 53) | public static function head(string $url, $data = null, array $headers ...
    method post (line 68) | public static function post(string $url, $data = null, array $headers ...
    method download (line 88) | public static function download(string $url, string $target_filename, ...
    method request (line 117) | public static function request(string $url, string $method = 'GET', $d...
    method async (line 149) | public static function async(string $url, string $method = 'GET', $dat...
    method multiple (line 167) | public static function multiple(array $requests): array
    method _createClient (line 204) | protected static function _createClient(): \GuzzleHttp\Client
    method _populateSettings (line 245) | protected static function _populateSettings(string $url, string $metho...

FILE: common/framework/Image.php
  class Image (line 8) | class Image
    method isImage (line 16) | public static function isImage(string $filename): bool
    method isAnimatedGIF (line 27) | public static function isAnimatedGIF(string $filename): bool
    method isAnimatedWebP (line 56) | public static function isAnimatedWebP(string $filename): bool
    method getImageInfo (line 73) | public static function getImageInfo(string $filename): ?array

FILE: common/framework/Korea.php
  class Korea (line 8) | class Korea
    method formatPhoneNumber (line 16) | public static function formatPhoneNumber(string $num): string
    method isValidPhoneNumber (line 72) | public static function isValidPhoneNumber(string $num): bool
    method isValidMobilePhoneNumber (line 100) | public static function isValidMobilePhoneNumber(string $num): bool
    method isValidJuminNumber (line 117) | public static function isValidJuminNumber(string $code): bool
    method isValidCorporationNumber (line 167) | public static function isValidCorporationNumber(string $code): bool
    method isValidBusinessNumber (line 203) | public static function isValidBusinessNumber(string $code): bool
    method isKoreanIP (line 235) | public static function isKoreanIP(string $ip): bool
    method isKoreanEmailAddress (line 296) | public static function isKoreanEmailAddress(string $email_address, boo...
    method _getDNSRecords (line 372) | protected static function _getDNSRecords(string $domain, int $type): a...

FILE: common/framework/Lang.php
  class Lang (line 8) | class Lang
    method getInstance (line 29) | public static function getInstance(string $language): self
    method __construct (line 47) | protected function __construct(string $language)
    method langType (line 58) | public function langType(): string
    method loadPlugin (line 69) | public function loadPlugin(string $name): bool
    method loadDirectory (line 107) | public function loadDirectory(string $dir, ?string $plugin_name = null...
    method getSupportedList (line 170) | public static function getSupportedList(): array
    method get (line 186) | public function get(string $key)
    method set (line 212) | public function set(string $key, $value): void
    method getFromDefaultLang (line 223) | public function getFromDefaultLang(string $key)
    method __get (line 241) | public function __get(string $key)
    method __set (line 305) | public function __set(string $key, $value): void
    method __isset (line 383) | public function __isset(string $key): bool
    method __unset (line 401) | public function __unset(string $key): void
    method __call (line 413) | public function __call(string $key, $args = array())

FILE: common/framework/MIME.php
  class MIME (line 8) | class MIME
    method getContentType (line 18) | public static function getContentType(string $filename): ?string
    method getTypeByExtension (line 48) | public static function getTypeByExtension(string $extension): string
    method getTypeByFilename (line 60) | public static function getTypeByFilename(string $filename): string
    method getExtensionByType (line 74) | public static function getExtensionByType(string $type): ?string

FILE: common/framework/Mail.php
  class Mail (line 8) | class Mail
    method setDefaultDriver (line 33) | public static function setDefaultDriver(Drivers\MailInterface $driver)...
    method getDefaultDriver (line 43) | public static function getDefaultDriver(): Drivers\MailInterface
    method addDriver (line 68) | public static function addDriver(Drivers\MailInterface $driver): void
    method getSupportedDrivers (line 78) | public static function getSupportedDrivers(): array
    method __construct (line 116) | public function __construct()
    method setFrom (line 129) | public function setFrom(string $email, ?string $name = null): bool
    method getFrom (line 148) | public function getFrom(): ?string
    method addTo (line 161) | public function addTo(string $email, ?string $name = null): bool
    method addCc (line 182) | public function addCc(string $email, ?string $name = null): bool
    method addBcc (line 203) | public function addBcc(string $email, ?string $name = null): bool
    method getRecipients (line 222) | public function getRecipients(): array
    method setReplyTo (line 248) | public function setReplyTo(string $replyTo): bool
    method setReturnPath (line 268) | public function setReturnPath(string $returnPath): bool
    method setMessageID (line 288) | public function setMessageID(string $message_id): bool
    method setInReplyTo (line 309) | public function setInReplyTo(string $in_reply_to): bool
    method setReferences (line 330) | public function setReferences(string $references): bool
    method setSubject (line 351) | public function setSubject(string $subject): bool
    method getSubject (line 370) | public function getSubject(): string
    method setTitle (line 381) | public function setTitle(string $subject): bool
    method getTitle (line 391) | public function getTitle(): string
    method setBody (line 403) | public function setBody(string $content, ?string $content_type = null)...
    method getBody (line 423) | public function getBody(): string
    method setContent (line 435) | public function setContent(string $content, ?string $content_type = nu...
    method getContent (line 445) | public function getContent(): string
    method setContentType (line 456) | public function setContentType(string $type = 'text/html'): void
    method getContentType (line 466) | public function getContentType(): string
    method attach (line 478) | public function attach(string $local_filename, ?string $display_filena...
    method embed (line 516) | public function embed(string $local_filename, ?string $cid = null)
    method getAttachments (line 551) | public function getAttachments(): array
    method send (line 562) | public function send(bool $sync = false): bool
    method sendAsync (line 617) | public static function sendAsync(self $mail): void
    method isSent (line 627) | public function isSent(): bool
    method getCaller (line 637) | public function getCaller(): string
    method getErrors (line 647) | public function getErrors(): array
    method convertImageURLs (line 659) | protected function convertImageURLs(array $matches): string
    method formatAddresses (line 670) | protected function formatAddresses(array $addresses): array

FILE: common/framework/Pagination.php
  class Pagination (line 8) | class Pagination
    method countPages (line 24) | public static function countPages(int $total_items, int $items_per_pag...
    method createLinks (line 46) | public static function createLinks(string $base_url, int $total_pages,...
    method _composeLink (line 151) | protected static function _composeLink(string $target_url, string $con...

FILE: common/framework/Password.php
  class Password (line 8) | class Password
    method addAlgorithm (line 44) | public static function addAlgorithm(string $name, string $signature, c...
    method isValidAlgorithm (line 56) | public static function isValidAlgorithm($algos): bool
    method getSupportedAlgorithms (line 80) | public static function getSupportedAlgorithms(): array
    method getBestSupportedAlgorithm (line 107) | public static function getBestSupportedAlgorithm(): string
    method getDefaultAlgorithm (line 123) | public static function getDefaultAlgorithm(): string
    method getBackwardCompatibleAlgorithm (line 151) | public static function getBackwardCompatibleAlgorithm(): string
    method getWorkFactor (line 173) | public static function getWorkFactor(): int
    method getRandomPassword (line 198) | public static function getRandomPassword(int $length = 16): string
    method hashPassword (line 229) | public static function hashPassword(string $password, $algos = null, ?...
    method checkPassword (line 374) | public static function checkPassword(string $password, string $hash, $...
    method checkAlgorithm (line 409) | public static function checkAlgorithm(string $hash): array
    method checkWorkFactor (line 425) | public static function checkWorkFactor(string $hash): int
    method argon2id (line 448) | public static function argon2id(string $password, int $work_factor = 1...
    method bcrypt (line 492) | public static function bcrypt(string $password, ?string $salt = null, ...
    method pbkdf2 (line 513) | public static function pbkdf2(string $password, ?string $salt = null, ...
    method countEntropyBits (line 550) | public static function countEntropyBits(string $password): int

FILE: common/framework/Push.php
  class Push (line 8) | class Push
    method addDriver (line 40) | public static function addDriver(string $name, Drivers\PushInterface $...
    method getDriver (line 51) | public static function getDriver(string $name): ?object
    method getSupportedDrivers (line 75) | public static function getSupportedDrivers(): array
    method __construct (line 109) | public function __construct()
    method setFrom (line 120) | public function setFrom(int $member_srl): bool
    method getFrom (line 131) | public function getFrom(): int
    method addTo (line 142) | public function addTo(int $member_srl): bool
    method getRecipients (line 153) | public function getRecipients(): array
    method addTopic (line 164) | public function addTopic(string $topic): bool
    method getTopics (line 175) | public function getTopics(): array
    method setSubject (line 186) | public function setSubject(string $subject): bool
    method getSubject (line 197) | public function getSubject(): string
    method setContent (line 208) | public function setContent(string $content): bool
    method getContent (line 220) | public function getContent(): string
    method setImage (line 231) | public function setImage(string $url): bool
    method getImage (line 243) | public function getImage(): string
    method setClickAction (line 254) | public function setClickAction(string $click_action): bool
    method getClickAction (line 265) | public function getClickAction(): string
    method setSound (line 276) | public function setSound(string $sound): bool
    method setBadge (line 288) | public function setBadge(string $badge): bool
    method setIcon (line 300) | public function setIcon(string $icon): bool
    method setTag (line 312) | public function setTag(string $tag): bool
    method setColor (line 324) | public function setColor(string $color): bool
    method setAndroidChannelId (line 336) | public function setAndroidChannelId(string $android_channel_id): bool
    method getMetadata (line 347) | public function getMetadata(): array
    method setData (line 360) | public function setData(array $data): bool
    method getData (line 371) | public function getData(): array
    method setURL (line 382) | public function setURL(string $url): bool
    method getURL (line 393) | public function getURL(): string
    method send (line 404) | public function send(bool $sync = false): bool
    method sendAsync (line 481) | public static function sendAsync(self $push): void
    method _getDeviceTokens (line 492) | protected function _getDeviceTokens(): \stdClass
    method _deleteInvalidTokens (line 536) | protected function _deleteInvalidTokens(array $invalid_tokens): bool
    method _updateDeviceTokens (line 554) | protected function _updateDeviceTokens(array $update_tokens): bool
    method isSent (line 576) | public function isSent(): bool
    method getCaller (line 586) | public function getCaller(): string
    method getErrors (line 596) | public function getErrors(): array
    method getSuccessTokens (line 606) | public function getSuccessTokens(): array
    method getDeletedTokens (line 616) | public function getDeletedTokens(): array
    method getUpdatedTokens (line 626) | public function getUpdatedTokens(): array
    method addError (line 637) | public function addError(string $message): void

FILE: common/framework/Queue.php
  class Queue (line 8) | class Queue
    method addDriver (line 30) | public static function addDriver(string $name, Drivers\QueueInterface ...
    method getDriver (line 41) | public static function getDriver(string $name): ?Drivers\QueueInterface
    method getDbDriver (line 65) | public static function getDbDriver(): Drivers\Queue\DB
    method getSupportedDrivers (line 75) | public static function getSupportedDrivers(): array
    method addTask (line 134) | public static function addTask(string $handler, ?object $args = null, ...
    method addTaskAt (line 164) | public static function addTaskAt(int $time, string $handler, ?object $...
    method addTaskAtInterval (line 189) | public static function addTaskAtInterval(string $interval, string $han...
    method getScheduledTask (line 213) | public static function getScheduledTask(int $task_srl): ?object
    method cancelScheduledTask (line 225) | public static function cancelScheduledTask(int $task_srl): bool
    method checkKey (line 237) | public static function checkKey(string $key): bool
    method checkIntervalSyntax (line 252) | public static function checkIntervalSyntax(string $interval): bool
    method parseInterval (line 279) | public static function parseInterval(string $interval, ?int $time): bool
    method process (line 329) | public static function process(int $index, int $count, int $timeout): ...
    method _executeTask (line 417) | protected static function _executeTask(object $task): void
    method signalHandler (line 521) | public static function signalHandler(int $signal, $siginfo): void
    method signalReceived (line 531) | public static function signalReceived(): int

FILE: common/framework/Request.php
  class Request (line 8) | class Request
    method __construct (line 59) | public function __construct(string $method = '', string $url = '', str...
    method get (line 88) | public function get(string $name, string $type = '')
    method getAll (line 105) | public function getAll(): object
    method getFullUrl (line 115) | public function getFullUrl(): string
    method getMethod (line 125) | public function getMethod(): string
    method getCallbackFunction (line 135) | public function getCallbackFunction(): string
    method getRouteStatus (line 145) | public function getRouteStatus(): int
    method set (line 157) | public function set(string $name, $value): void
    method setAll (line 175) | public function setAll(array $args): void
    method setRouteStatus (line 189) | public function setRouteStatus(int $status): void
    method getRouteOption (line 200) | public function getRouteOption(string $name)
    method getRouteOptions (line 210) | public function getRouteOptions(): object
    method setRouteOption (line 222) | public function setRouteOption(string $name, $value): void

FILE: common/framework/Router.php
  class Router (line 8) | class Router
    method getRewriteLevel (line 102) | public static function getRewriteLevel(): int
    method parseURL (line 120) | public static function parseURL(string $method, string $url, int $rewr...
    method getURL (line 308) | public static function getURL(array $args, int $rewrite_level): string
    method _getActionInfoByPrefix (line 451) | protected static function _getActionInfoByPrefix(string $prefix, strin...
    method _getActionInfoByModule (line 477) | protected static function _getActionInfoByModule(string $module)
    method _fillActionProperties (line 495) | protected static function _fillActionProperties(Request $request, ?obj...
    method _getForwardedRoutes (line 525) | protected static function _getForwardedRoutes(string $type): array
    method _getBestMatchingRoute (line 579) | protected static function _getBestMatchingRoute(array $routes, array $...
    method _insertRouteVars (line 623) | protected static function _insertRouteVars(string $route, array $vars)...

FILE: common/framework/SMS.php
  class SMS (line 8) | class SMS
    method setDefaultDriver (line 40) | public static function setDefaultDriver(Drivers\SMSInterface $driver):...
    method getDefaultDriver (line 50) | public static function getDefaultDriver(): Drivers\SMSInterface
    method addDriver (line 75) | public static function addDriver(Drivers\SMSInterface $driver): void
    method getSupportedDrivers (line 85) | public static function getSupportedDrivers(): array
    method __construct (line 124) | public function __construct()
    method setFrom (line 138) | public function setFrom(string $number): bool
    method getFrom (line 149) | public function getFrom(): ?string
    method addTo (line 161) | public function addTo(string $number, string $country = '0'): bool
    method getRecipients (line 175) | public function getRecipients(): array
    method getRecipientsWithCountry (line 187) | public function getRecipientsWithCountry(): array
    method getRecipientsGroupedByCountry (line 197) | public function getRecipientsGroupedByCountry(): array
    method setSubject (line 213) | public function setSubject(string $subject): bool
    method getSubject (line 224) | public function getSubject(): string
    method setTitle (line 235) | public function setTitle(string $subject): bool
    method getTitle (line 245) | public function getTitle(): string
    method setBody (line 256) | public function setBody(string $content): bool
    method getBody (line 268) | public function getBody(): string
    method setContent (line 279) | public function setContent(string $content): bool
    method getContent (line 289) | public function getContent(): string
    method attach (line 301) | public function attach(string $local_filename, ?string $display_filena...
    method getAttachments (line 326) | public function getAttachments(): array
    method setExtraVar (line 338) | public function setExtraVar(string $key, $value): void
    method getExtraVar (line 349) | public function getExtraVar(string $key)
    method getExtraVars (line 360) | public function getExtraVars(): array
    method setExtraVars (line 371) | public function setExtraVars(array $vars): void
    method setDelay (line 387) | public function setDelay(int $when): bool
    method getDelay (line 412) | public function getDelay(): int
    method forceSMS (line 422) | public function forceSMS(): void
    method unforceSMS (line 432) | public function unforceSMS(): void
    method isForceSMS (line 442) | public function isForceSMS(): bool
    method allowSplitSMS (line 452) | public function allowSplitSMS(): void
    method allowSplitLMS (line 462) | public function allowSplitLMS(): void
    method disallowSplitSMS (line 472) | public function disallowSplitSMS(): void
    method disallowSplitLMS (line 482) | public function disallowSplitLMS(): void
    method isSplitSMSAllowed (line 492) | public function isSplitSMSAllowed(): bool
    method isSplitLMSAllowed (line 502) | public function isSplitLMSAllowed(): bool
    method send (line 513) | public function send(bool $sync = false): bool
    method sendAsync (line 583) | public static function sendAsync(self $sms): void
    method isSent (line 593) | public function isSent(): bool
    method getCaller (line 603) | public function getCaller(): string
    method getErrors (line 613) | public function getErrors(): array
    method addError (line 624) | public function addError(string $message): void
    method _formatSpec (line 635) | protected function _formatSpec(array $spec): array
    method _getLengthInCharset (line 798) | protected function _getLengthInCharset(string $str, string $charset): int
    method _splitString (line 812) | protected function _splitString(string $str, int $max_length, string $...

FILE: common/framework/Security.php
  class Security (line 8) | class Security
    method sanitize (line 17) | public static function sanitize(string $input, string $type): string
    method encrypt (line 66) | public static function encrypt(string $plaintext, ?string $key = null)...
    method decrypt (line 83) | public static function decrypt(string $ciphertext, ?string $key = null)
    method createSignature (line 106) | public static function createSignature(string $string): string
    method verifySignature (line 121) | public static function verifySignature(string $string, string $signatu...
    method getRandom (line 141) | public static function getRandom(int $length = 32, string $format = 'a...
    method getRandomNumber (line 249) | public static function getRandomNumber(int $min = 0, int $max = \PHP_I...
    method getRandomUUID (line 272) | public static function getRandomUUID(int $version = 4): string
    method compareStrings (line 302) | public static function compareStrings(string $a, string $b): bool
    method checkCSRF (line 327) | public static function checkCSRF(?string $referer = null): bool
    method checkXXE (line 394) | public static function checkXXE(?string $xml = null): bool

FILE: common/framework/Session.php
  class Session (line 8) | class Session
    method get (line 24) | public static function get(string $key)
    method set (line 46) | public static function set(string $key, $value): void
    method start (line 66) | public static function start(bool $force = false): bool
    method checkStart (line 177) | public static function checkStart(bool $force = false): bool
    method checkLoginStatusCookie (line 222) | public static function checkLoginStatusCookie(): void
    method checkSSO (line 249) | public static function checkSSO(object $site_module_info): void
    method create (line 348) | public static function create(): bool
    method refresh (line 407) | public static function refresh(bool $refresh_cookie = false): bool
    method close (line 451) | public static function close(): void
    method destroy (line 474) | public static function destroy(): void
    method login (line 512) | public static function login(int $member_srl, bool $refresh = true): bool
    method logout (line 550) | public static function logout(): void
    method isStarted (line 565) | public static function isStarted(): bool
    method isMember (line 577) | public static function isMember(): bool
    method isAdmin (line 589) | public static function isAdmin(): bool
    method isTrusted (line 604) | public static function isTrusted(): bool
    method isValid (line 628) | public static function isValid(int $member_srl = 0): bool
    method getMemberSrl (line 669) | public static function getMemberSrl(): int
    method getMemberInfo (line 682) | public static function getMemberInfo(bool $refresh = false): Helpers\S...
    method setMemberInfo (line 709) | public static function setMemberInfo(Helpers\SessionHelper $member_inf...
    method getLanguage (line 722) | public static function getLanguage(): string
    method setLanguage (line 733) | public static function setLanguage(string $language): void
    method getTimezone (line 746) | public static function getTimezone(): string
    method setTimezone (line 757) | public static function setTimezone(string $timezone): void
    method getDomain (line 767) | public static function getDomain(): string
    method setDomain (line 785) | public static function setDomain(string $domain): bool
    method setTrusted (line 806) | public static function setTrusted(int $duration = 300): bool
    method getGenericToken (line 828) | public static function getGenericToken()
    method createToken (line 852) | public static function createToken(string $key = ''): string
    method verifyToken (line 872) | public static function verifyToken(string $token, string $key = '', bo...
    method invalidateToken (line 894) | public static function invalidateToken(string $token): bool
    method getLoginStatus (line 915) | public static function getLoginStatus(): string
    method getLastLoginTime (line 935) | public static function getLastLoginTime(): int
    method getValidityInfo (line 946) | public static function getValidityInfo(int $member_srl): object
    method setValidityInfo (line 976) | public static function setValidityInfo(int $member_srl, object $validi...
    method encrypt (line 999) | public static function encrypt(string $plaintext): string
    method decrypt (line 1014) | public static function decrypt(string $ciphertext)
    method _isBuggyUserAgent (line 1025) | protected static function _isBuggyUserAgent(): bool
    method _getParams (line 1043) | protected static function _getParams(): array
    method _getAutologinKey (line 1060) | protected static function _getAutologinKey()
    method _unsetCookie (line 1081) | protected static function _unsetCookie(string $name, string $path = ''...
    method setAutologinKeys (line 1098) | public static function setAutologinKeys(string $autologin_key, string ...
    method destroyAutologinKeys (line 1132) | public static function destroyAutologinKeys(): bool
    method destroyOtherSessions (line 1162) | public static function destroyOtherSessions(int $member_srl): bool
    method destroyCookiesFromConflictingDomains (line 1204) | public static function destroyCookiesFromConflictingDomains(array $coo...

FILE: common/framework/Storage.php
  class Storage (line 8) | class Storage
    method exists (line 36) | public static function exists(string $path): bool
    method isFile (line 49) | public static function isFile(string $path): bool
    method isEmptyFile (line 61) | public static function isEmptyFile(string $path): bool
    method isDirectory (line 74) | public static function isDirectory(string $path): bool
    method isEmptyDirectory (line 86) | public static function isEmptyDirectory(string $path): bool
    method isSymlink (line 104) | public static function isSymlink(string $path): bool
    method isValidSymlink (line 116) | public static function isValidSymlink(string $path): bool
    method isReadable (line 128) | public static function isReadable(string $path): bool
    method isWritable (line 140) | public static function isWritable(string $path): bool
    method isExecutable (line 152) | public static function isExecutable(string $path): bool
    method getSize (line 181) | public static function getSize(string $filename)
    method read (line 206) | public static function read(string $filename, bool $stream = false)
    method readPHPData (line 240) | public static function readPHPData(string $filename)
    method write (line 266) | public static function write(string $filename, $content, string $mode ...
    method writePHPData (line 362) | public static function writePHPData(string $filename, $data, ?string $...
    method copy (line 394) | public static function copy(string $source, string $destination, ?int ...
    method move (line 489) | public static function move(string $source, string $destination): bool
    method moveUploadedFile (line 552) | public static function moveUploadedFile(string $source, string $destin...
    method delete (line 598) | public static function delete(string $filename): bool
    method createDirectory (line 630) | public static function createDirectory(string $dirname, ?int $mode = n...
    method readDirectory (line 666) | public static function readDirectory(string $dirname, bool $full_path ...
    method copyDirectory (line 709) | public static function copyDirectory(string $source, string $destinati...
    method moveDirectory (line 778) | public static function moveDirectory(string $source, string $destinati...
    method deleteDirectory (line 790) | public static function deleteDirectory(string $dirname, bool $delete_s...
    method deleteEmptyDirectory (line 853) | public static function deleteEmptyDirectory(string $dirname, bool $del...
    method getUmask (line 881) | public static function getUmask(): int
    method setUmask (line 896) | public static function setUmask(int $umask): void
    method recommendUmask (line 906) | public static function recommendUmask(): string
    method getServerUID (line 938) | public static function getServerUID()
    method getLock (line 971) | public static function getLock(string $name): bool
    method clearLocks (line 1009) | public static function clearLocks(): void

FILE: common/framework/Template.php
  class Template (line 8) | class Template
    method getInstance (line 69) | public static function getInstance(): self
    method __construct (line 82) | public function __construct(?string $dirname = null, ?string $filename...
    method _initConfig (line 121) | protected function _initConfig(): void
    method _setSourcePath (line 137) | protected function _setSourcePath(string $dirname, string $filename, s...
    method setCachePath (line 209) | public function setCachePath(?string $cache_path = null)
    method disableCache (line 224) | public function disableCache(): void
    method exists (line 234) | public function exists(): bool
    method getParent (line 244) | public function getParent(): ?self
    method setParent (line 255) | public function setParent(self $parent): void
    method getVars (line 265) | public function getVars(): ?object
    method setVars (line 276) | public function setVars($vars): void
    method addVars (line 298) | public function addVars($vars): void
    method compile (line 325) | public function compile(?string $dirname = null, ?string $filename = n...
    method compileDirect (line 392) | public function compileDirect(string $dirname, string $filename): string
    method parse (line 416) | public function parse(?string $content = null): string
    method execute (line 457) | public function execute(): string
    method getFragment (line 493) | public function getFragment(string $name): ?string
    method getStack (line 511) | public function getStack(string $name): ?array
    method isRelativePath (line 529) | public function isRelativePath(string $path): bool
    method convertPath (line 541) | public function convertPath(string $path, ?string $basepath = null): s...
    method normalizePath (line 571) | public function normalizePath(string $path): string
    method _v2_include (line 596) | protected function _v2_include(...$args): string
    method _v2_loadResource (line 669) | protected function _v2_loadResource(string $path, $media_type = null, ...
    method _v2_initLoopVar (line 789) | protected function _v2_initLoopVar(string $stack_id, &$array): object
    method _v2_incrLoopVar (line 814) | protected function _v2_incrLoopVar(object $loop): void
    method _v2_removeLoopVar (line 832) | protected function _v2_removeLoopVar(object $loop): void
    method _v2_buildAttribute (line 848) | protected function _v2_buildAttribute(string $attribute, array $defini...
    method _v2_checkAuth (line 884) | protected function _v2_checkAuth(string $type = 'member'): bool
    method _v2_checkCapability (line 903) | protected function _v2_checkCapability(int $check_type, $capability): ...
    method _v2_errorExists (line 941) | protected function _v2_errorExists(...$args): bool
    method _v2_isMobile (line 957) | protected function _v2_isMobile(): bool
    method _v2_escape (line 968) | protected function _v2_escape($str): string
    method _v2_lang (line 983) | protected function _v2_lang(...$args): string

FILE: common/framework/Timer.php
  class Timer (line 8) | class Timer
    method start (line 23) | public static function start(string $name = ''): float
    method stop (line 45) | public static function stop(string $name = ''): float
    method stopFormat (line 83) | public static function stopFormat(string $name = ''): string
    method sinceStartup (line 95) | public static function sinceStartup(): float
    method sinceStartupFormat (line 105) | public static function sinceStartupFormat(): string

FILE: common/framework/UA.php
  class UA (line 8) | class UA
    method isMobile (line 48) | public static function isMobile(?string $ua = null): bool
    method isTablet (line 111) | public static function isTablet(?string $ua = null): bool
    method isRobot (line 156) | public static function isRobot(?string $ua = null): bool
    method getLocale (line 199) | public static function getLocale(?string $header = null): string
    method getBrowserInfo (line 214) | public static function getBrowserInfo(?string $ua = null): self
    method encodeFilenameForDownload (line 380) | public static function encodeFilenameForDownload(string $filename, ?st...
    method getColorScheme (line 451) | public static function getColorScheme(): string
    method setColorScheme (line 469) | public static function setColorScheme(string $color_scheme): void

FILE: common/framework/URL.php
  class URL (line 8) | class URL
    method getCurrentURL (line 19) | public static function getCurrentURL(array $changes = []): string
    method getCurrentDomain (line 39) | public static function getCurrentDomain(bool $preserve_port = false): ...
    method getCurrentDomainURL (line 56) | public static function getCurrentDomainURL(string $path = '/'): string
    method getCanonicalURL (line 69) | public static function getCanonicalURL(string $url): string
    method getDomainFromURL (line 87) | public static function getDomainFromURL(string $url)
    method isInternalURL (line 106) | public static function isInternalURL(string $url): bool
    method modifyURL (line 137) | public static function modifyURL(string $url, array $changes = []): st...
    method fromServerPath (line 163) | public static function fromServerPath(string $path)
    method toServerPath (line 191) | public static function toServerPath(string $url)
    method encodeIdna (line 208) | public static function encodeIdna(string $url): string
    method decodeIdna (line 248) | public static function decodeIdna(string $url): string

FILE: common/framework/drivers/CacheInterface.php
  type CacheInterface (line 8) | interface CacheInterface
    method getInstance (line 16) | public static function getInstance(array $config);
    method isSupported (line 25) | public static function isSupported();
    method validateSettings (line 35) | public static function validateSettings($config);
    method get (line 45) | public function get($key);
    method set (line 59) | public function set($key, $value, $ttl = 0, $force = false);
    method delete (line 70) | public function delete($key);
    method exists (line 80) | public function exists($key);
    method incr (line 92) | public function incr($key, $amount);
    method decr (line 104) | public function decr($key, $amount);
    method clear (line 113) | public function clear();

FILE: common/framework/drivers/MailInterface.php
  type MailInterface (line 8) | interface MailInterface
    method getInstance (line 16) | public static function getInstance(array $config);
    method getName (line 23) | public static function getName();
    method getRequiredConfig (line 30) | public static function getRequiredConfig();
    method getAPITypes (line 37) | public static function getAPITypes();
    method getSPFHint (line 44) | public static function getSPFHint();
    method getDKIMHint (line 51) | public static function getDKIMHint();
    method isSupported (line 60) | public static function isSupported();
    method send (line 70) | public function send(\Rhymix\Framework\Mail $message);

FILE: common/framework/drivers/PushInterface.php
  type PushInterface (line 8) | interface PushInterface
    method getInstance (line 16) | public static function getInstance(array $config): PushInterface;
    method getName (line 23) | public static function getName(): string;
    method getRequiredConfig (line 30) | public static function getRequiredConfig(): array;
    method getOptionalConfig (line 37) | public static function getOptionalConfig(): array;
    method isSupported (line 46) | public static function isSupported(): bool;
    method send (line 57) | public function send(\Rhymix\Framework\Push $message, array $tokens): ...

FILE: common/framework/drivers/QueueInterface.php
  type QueueInterface (line 8) | interface QueueInterface
    method getInstance (line 16) | public static function getInstance(array $config): QueueInterface;
    method getName (line 23) | public static function getName(): string;
    method getRequiredConfig (line 30) | public static function getRequiredConfig(): array;
    method getOptionalConfig (line 37) | public static function getOptionalConfig(): array;
    method isSupported (line 44) | public static function isSupported(): bool;
    method validateConfig (line 52) | public static function validateConfig($config): bool;
    method addTask (line 63) | public function addTask(string $handler, ?object $args = null, ?object...
    method getNextTask (line 71) | public function getNextTask(int $blocking = 0): ?object;

FILE: common/framework/drivers/SMSInterface.php
  type SMSInterface (line 8) | interface SMSInterface
    method getInstance (line 16) | public static function getInstance(array $config);
    method getName (line 23) | public static function getName();
    method getRequiredConfig (line 30) | public static function getRequiredConfig();
    method getOptionalConfig (line 37) | public static function getOptionalConfig();
    method getAPITypes (line 44) | public static function getAPITypes();
    method getAPISpec (line 51) | public static function getAPISpec();
    method isSupported (line 60) | public static function isSupported();
    method send (line 71) | public function send(array $messages, \Rhymix\Framework\SMS $original);

FILE: common/framework/drivers/cache/apc.php
  class APC (line 8) | class APC implements \Rhymix\Framework\Drivers\CacheInterface
    method __construct (line 23) | protected function __construct()
    method getInstance (line 34) | public static function getInstance(array $config)
    method isSupported (line 50) | public static function isSupported()
    method validateSettings (line 63) | public static function validateSettings($config)
    method get (line 76) | public function get($key)
    method set (line 94) | public function set($key, $value, $ttl = 0, $force = false)
    method delete (line 108) | public function delete($key)
    method exists (line 121) | public function exists($key)
    method incr (line 136) | public function incr($key, $amount)
    method decr (line 157) | public function decr($key, $amount)
    method clear (line 175) | public function clear()

FILE: common/framework/drivers/cache/dummy.php
  class Dummy (line 8) | class Dummy extends File implements \Rhymix\Framework\Drivers\CacheInter...
    method isSupported (line 30) | public static function isSupported()
    method get (line 43) | public function get($key)
    method set (line 77) | public function set($key, $value, $ttl = 0, $force = false)
    method delete (line 99) | public function delete($key)
    method exists (line 124) | public function exists($key)
    method clear (line 136) | public function clear()

FILE: common/framework/drivers/cache/file.php
  class File (line 10) | class File implements \Rhymix\Framework\Drivers\CacheInterface
    method __construct (line 30) | protected function __construct(array $config)
    method getInstance (line 45) | public static function getInstance(array $config)
    method isSupported (line 60) | public static function isSupported()
    method validateSettings (line 73) | public static function validateSettings($config)
    method get (line 86) | public function get($key)
    method set (line 118) | public function set($key, $value, $ttl = 0, $force = false)
    method delete (line 132) | public function delete($key)
    method exists (line 145) | public function exists($key)
    method incr (line 160) | public function incr($key, $amount)
    method decr (line 177) | public function decr($key, $amount)
    method clear (line 189) | public function clear()
    method _getFilename (line 200) | protected function _getFilename($key)

FILE: common/framework/drivers/cache/memcached.php
  class Memcached (line 8) | class Memcached implements \Rhymix\Framework\Drivers\CacheInterface
    method __construct (line 29) | protected function __construct(array $config)
    method getInstance (line 69) | public static function getInstance(array $config)
    method isSupported (line 85) | public static function isSupported()
    method validateSettings (line 98) | public static function validateSettings($config)
    method get (line 148) | public function get($key)
    method set (line 173) | public function set($key, $value, $ttl = 0, $force = false)
    method delete (line 194) | public function delete($key)
    method exists (line 207) | public function exists($key)
    method incr (line 222) | public function incr($key, $amount)
    method decr (line 243) | public function decr($key, $amount)
    method clear (line 261) | public function clear()

FILE: common/framework/drivers/cache/redis.php
  class Redis (line 8) | class Redis implements \Rhymix\Framework\Drivers\CacheInterface
    method __construct (line 28) | protected function __construct(array $config)
    method getInstance (line 81) | public static function getInstance(array $config)
    method isSupported (line 97) | public static function isSupported()
    method validateSettings (line 110) | public static function validateSettings($config)
    method get (line 162) | public function get($key)
    method set (line 202) | public function set($key, $value, $ttl = 0, $force = false)
    method delete (line 224) | public function delete($key)
    method exists (line 244) | public function exists($key)
    method incr (line 266) | public function incr($key, $amount)
    method decr (line 288) | public function decr($key, $amount)
    method clear (line 307) | public function clear()

FILE: common/framework/drivers/cache/sqlite.php
  class SQLite (line 10) | class SQLite implements \Rhymix\Framework\Drivers\CacheInterface
    method __construct (line 31) | protected function __construct()
    method _connect (line 61) | protected function _connect($filename)
    method getInstance (line 75) | public static function getInstance(array $config)
    method isSupported (line 91) | public static function isSupported()
    method validateSettings (line 104) | public static function validateSettings($config)
    method get (line 117) | public function get($key)
    method set (line 164) | public function set($key, $value, $ttl = 0, $force = false)
    method delete (line 188) | public function delete($key)
    method exists (line 209) | public function exists($key)
    method incr (line 247) | public function incr($key, $amount)
    method decr (line 274) | public function decr($key, $amount)
    method clear (line 286) | public function clear()

FILE: common/framework/drivers/mail/base.php
  class Base (line 8) | abstract class Base implements \Rhymix\Framework\Drivers\MailInterface
    method __construct (line 23) | protected function __construct(array $config)
    method getInstance (line 34) | public static function getInstance(array $config)
    method getName (line 44) | public static function getName()
    method getRequiredConfig (line 54) | public static function getRequiredConfig()
    method getAPITypes (line 64) | public static function getAPITypes()
    method getSPFHint (line 74) | public static function getSPFHint()
    method getDKIMHint (line 84) | public static function getDKIMHint()
    method isSupported (line 96) | public static function isSupported()
    method send (line 109) | public function send(\Rhymix\Framework\Mail $message)

FILE: common/framework/drivers/mail/brevo.php
  class Brevo (line 8) | class Brevo extends Base implements \Rhymix\Framework\Drivers\MailInterface
    method getRequiredConfig (line 20) | public static function getRequiredConfig(): array
    method getSPFHint (line 30) | public static function getSPFHint(): string
    method getDKIMHint (line 40) | public static function getDKIMHint(): string
    method isSupported (line 52) | public static function isSupported(): bool
    method send (line 65) | public function send(\Rhymix\Framework\Mail $message): bool

FILE: common/framework/drivers/mail/dummy.php
  class Dummy (line 8) | class Dummy extends Base implements \Rhymix\Framework\Drivers\MailInterface
    method isSupported (line 17) | public static function isSupported()
    method send (line 30) | public function send(\Rhymix\Framework\Mail $message)

FILE: common/framework/drivers/mail/mailfunction.php
  class MailFunction (line 8) | class MailFunction extends Base implements \Rhymix\Framework\Drivers\Mai...
    method getName (line 15) | public static function getName()
    method getSPFHint (line 25) | public static function getSPFHint()
    method isSupported (line 37) | public static function isSupported()
    method send (line 50) | public function send(\Rhymix\Framework\Mail $message)

FILE: common/framework/drivers/mail/mailgun.php
  class Mailgun (line 8) | class Mailgun extends Base implements \Rhymix\Framework\Drivers\MailInte...
    method getRequiredConfig (line 20) | public static function getRequiredConfig()
    method getSPFHint (line 30) | public static function getSPFHint()
    method getDKIMHint (line 40) | public static function getDKIMHint()
    method isSupported (line 52) | public static function isSupported()
    method send (line 65) | public function send(\Rhymix\Framework\Mail $message)

FILE: common/framework/drivers/mail/mandrill.php
  class Mandrill (line 8) | class Mandrill extends SMTP implements \Rhymix\Framework\Drivers\MailInt...
    method __construct (line 13) | protected function __construct(array $config)
    method getRequiredConfig (line 28) | public static function getRequiredConfig()
    method getSPFHint (line 38) | public static function getSPFHint()
    method getDKIMHint (line 48) | public static function getDKIMHint()

FILE: common/framework/drivers/mail/ncloud_mailer.php
  class Ncloud_Mailer (line 8) | class Ncloud_Mailer extends Base implements \Rhymix\Framework\Drivers\Ma...
    method getName (line 21) | public static function getName()
    method getRequiredConfig (line 31) | public static function getRequiredConfig()
    method getSPFHint (line 41) | public static function getSPFHint()
    method getDKIMHint (line 51) | public static function getDKIMHint()
    method isSupported (line 63) | public static function isSupported()
    method _makeSignature (line 76) | protected static function _makeSignature($timestamp, $access_key, $sec...
    method send (line 92) | public function send(\Rhymix\Framework\Mail $message)

FILE: common/framework/drivers/mail/postmark.php
  class Postmark (line 8) | class Postmark extends SMTP implements \Rhymix\Framework\Drivers\MailInt...
    method __construct (line 13) | protected function __construct(array $config)
    method getRequiredConfig (line 28) | public static function getRequiredConfig()
    method getSPFHint (line 38) | public static function getSPFHint()
    method getDKIMHint (line 48) | public static function getDKIMHint()

FILE: common/framework/drivers/mail/sendgrid.php
  class SendGrid (line 8) | class SendGrid extends Base implements \Rhymix\Framework\Drivers\MailInt...
    method getRequiredConfig (line 20) | public static function getRequiredConfig()
    method getSPFHint (line 30) | public static function getSPFHint()
    method getDKIMHint (line 40) | public static function getDKIMHint()
    method isSupported (line 52) | public static function isSupported()
    method send (line 65) | public function send(\Rhymix\Framework\Mail $message)

FILE: common/framework/drivers/mail/ses.php
  class SES (line 8) | class SES extends SMTP implements \Rhymix\Framework\Drivers\MailInterface
    method __construct (line 18) | protected function __construct(array $config)
    method getName (line 31) | public static function getName()
    method getRequiredConfig (line 41) | public static function getRequiredConfig()
    method getAPITypes (line 51) | public static function getAPITypes()
    method getSPFHint (line 66) | public static function getSPFHint()
    method getDKIMHint (line 76) | public static function getDKIMHint()

FILE: common/framework/drivers/mail/smtp.php
  class SMTP (line 8) | class SMTP extends Base implements \Rhymix\Framework\Drivers\MailInterface
    method getRequiredConfig (line 15) | public static function getRequiredConfig()
    method isSupported (line 27) | public static function isSupported()
    method send (line 40) | public function send(\Rhymix\Framework\Mail $message)

FILE: common/framework/drivers/mail/sparkpost.php
  class SparkPost (line 8) | class SparkPost extends Base implements \Rhymix\Framework\Drivers\MailIn...
    method getRequiredConfig (line 20) | public static function getRequiredConfig()
    method getSPFHint (line 30) | public static function getSPFHint()
    method getDKIMHint (line 40) | public static function getDKIMHint()
    method isSupported (line 52) | public static function isSupported()
    method send (line 65) | public function send(\Rhymix\Framework\Mail $message)

FILE: common/framework/drivers/mail/woorimail.php
  class Woorimail (line 8) | class Woorimail extends Base implements \Rhymix\Framework\Drivers\MailIn...
    method getRequiredConfig (line 40) | public static function getRequiredConfig()
    method getAPITypes (line 50) | public static function getAPITypes()
    method getSPFHint (line 60) | public static function getSPFHint()
    method getDKIMHint (line 70) | public static function getDKIMHint()
    method isSupported (line 82) | public static function isSupported()
    method send (line 95) | public function send(\Rhymix\Framework\Mail $message)

FILE: common/framework/drivers/push/apns.php
  class APNs (line 11) | class APNs extends Base implements PushInterface
    method getName (line 24) | public static function getName(): string
    method isSupported (line 36) | public static function isSupported(): bool
    method send (line 50) | public function send(Push $message, array $tokens): \stdClass

FILE: common/framework/drivers/push/base.php
  class Base (line 10) | abstract class Base implements PushInterface
    method __construct (line 26) | protected function __construct(array $config)
    method getInstance (line 37) | public static function getInstance(array $config): PushInterface
    method getName (line 47) | public static function getName(): string
    method getRequiredConfig (line 57) | public static function getRequiredConfig(): array
    method getOptionalConfig (line 67) | public static function getOptionalConfig(): array
    method isSupported (line 79) | public static function isSupported(): bool
    method send (line 93) | public function send(\Rhymix\Framework\Push $message, array $tokens): ...

FILE: common/framework/drivers/push/fcm.php
  class FCM (line 12) | class FCM extends Base implements PushInterface
    method getName (line 25) | public static function getName(): string
    method isSupported (line 37) | public static function isSupported(): bool
    method send (line 51) | public function send(Push $message, array $tokens): \stdClass

FILE: common/framework/drivers/push/fcmv1.php
  class FCMv1 (line 18) | class FCMv1 extends Base implements PushInterface
    method getName (line 39) | public static function getName(): string
    method isSupported (line 51) | public static function isSupported(): bool
    method send (line 65) | public function send(Push $message, array $tokens): \stdClass

FILE: common/framework/drivers/queue/db.php
  class DB (line 12) | class DB implements QueueInterface
    method getInstance (line 20) | public static function getInstance(array $config): QueueInterface
    method getName (line 30) | public static function getName(): string
    method getRequiredConfig (line 40) | public static function getRequiredConfig(): array
    method getOptionalConfig (line 50) | public static function getOptionalConfig(): array
    method isSupported (line 60) | public static function isSupported(): bool
    method validateConfig (line 71) | public static function validateConfig($config): bool
    method __construct (line 81) | public function __construct(array $config)
    method addTask (line 95) | public function addTask(string $handler, ?object $args = null, ?object...
    method addTaskAt (line 141) | public function addTaskAt(int $time, string $handler, ?object $args = ...
    method addTaskAtInterval (line 182) | public function addTaskAtInterval(string $interval, string $handler, ?...
    method getNextTask (line 209) | public function getNextTask(int $blocking = 0): ?object
    method getScheduledTask (line 240) | public function getScheduledTask(int $task_srl): ?object
    method getScheduledTasks (line 265) | public function getScheduledTasks(string $type): array
    method updateLastRunTimestamp (line 325) | public function updateLastRunTimestamp(object $task): void
    method cancelScheduledTask (line 346) | public function cancelScheduledTask(int $task_srl): bool

FILE: common/framework/drivers/queue/dummy.php
  class Dummy (line 10) | class Dummy implements QueueInterface
    method getInstance (line 23) | public static function getInstance(array $config): QueueInterface
    method getName (line 33) | public static function getName(): string
    method getRequiredConfig (line 43) | public static function getRequiredConfig(): array
    method getOptionalConfig (line 53) | public static function getOptionalConfig(): array
    method isSupported (line 63) | public static function isSupported(): bool
    method validateConfig (line 74) | public static function validateConfig($config): bool
    method __construct (line 84) | public function __construct(array $config)
    method addTask (line 98) | public function addTask(string $handler, ?object $args = null, ?object...
    method getNextTask (line 114) | public function getNextTask(int $blocking = 0): ?object

FILE: common/framework/drivers/queue/redis.php
  class Redis (line 10) | class Redis implements QueueInterface
    method getInstance (line 24) | public static function getInstance(array $config): QueueInterface
    method getName (line 34) | public static function getName(): string
    method getRequiredConfig (line 44) | public static function getRequiredConfig(): array
    method getOptionalConfig (line 54) | public static function getOptionalConfig(): array
    method isSupported (line 64) | public static function isSupported(): bool
    method validateConfig (line 75) | public static function validateConfig($config): bool
    method __construct (line 105) | public function __construct(array $config)
    method addTask (line 139) | public function addTask(string $handler, ?object $args = null, ?object...
    method getNextTask (line 171) | public function getNextTask(int $blocking = 0): ?object

FILE: common/framework/drivers/sms/base.php
  class Base (line 8) | abstract class Base implements \Rhymix\Framework\Drivers\SMSInterface
    method __construct (line 29) | protected function __construct(array $config)
    method getInstance (line 40) | public static function getInstance(array $config)
    method getName (line 50) | public static function getName()
    method getRequiredConfig (line 60) | public static function getRequiredConfig()
    method getOptionalConfig (line 70) | public static function getOptionalConfig()
    method getAPITypes (line 80) | public static function getAPITypes()
    method getAPISpec (line 90) | public static function getAPISpec()
    method isSupported (line 102) | public static function isSupported()
    method send (line 116) | public function send(array $messages, \Rhymix\Framework\SMS $original)

FILE: common/framework/drivers/sms/coolsms.php
  class CoolSMS (line 8) | class CoolSMS extends Base implements \Rhymix\Framework\Drivers\SMSInter...
    method isSupported (line 48) | public static function isSupported()
    method send (line 62) | public function send(array $messages, \Rhymix\Framework\SMS $original)

FILE: common/framework/drivers/sms/dummy.php
  class Dummy (line 8) | class Dummy extends Base implements \Rhymix\Framework\Drivers\SMSInterface
    method isSupported (line 47) | public static function isSupported()
    method send (line 61) | public function send(array $messages, \Rhymix\Framework\SMS $original)
    method getSentMessages (line 75) | public function getSentMessages()
    method resetSentMessages (line 85) | public function resetSentMessages()

FILE: common/framework/drivers/sms/iwinv.php
  class iwinv (line 8) | class iwinv extends Base implements \Rhymix\Framework\Drivers\SMSInterface
    method isSupported (line 54) | public static function isSupported()
    method getApiUrls (line 64) | public static function getApiUrls()
    method send (line 81) | public function send(array $messages, \Rhymix\Framework\SMS $original)

FILE: common/framework/drivers/sms/ncloud_sens.php
  class Ncloud_Sens (line 10) | class Ncloud_Sens extends Base implements \Rhymix\Framework\Drivers\SMSI...
    method getName (line 55) | public static function getName()
    method isSupported (line 67) | public static function isSupported()
    method _makeSignature (line 82) | protected static function _makeSignature($method, $uri, $timestamp, $a...
    method _uploadFile (line 95) | protected function _uploadFile(string $filename, string $path): ?string
    method send (line 149) | public function send(array $messages, \Rhymix\Framework\SMS $original)

FILE: common/framework/drivers/sms/ppurio.php
  class Ppurio (line 8) | class Ppurio extends Base implements \Rhymix\Framework\Drivers\SMSInterface
    method isSupported (line 39) | public static function isSupported()
    method send (line 53) | public function send(array $messages, \Rhymix\Framework\SMS $original)

FILE: common/framework/drivers/sms/solapi.php
  class SolAPI (line 10) | class SolAPI extends Base implements \Rhymix\Framework\Drivers\SMSInterface
    method isSupported (line 54) | public static function isSupported()
    method send (line 68) | public function send(array $messages, \Rhymix\Framework\SMS $original)
    method _getHeader (line 169) | protected function _getHeader()
    method _uploadImage (line 184) | protected function _uploadImage($path, $type)
    method _request (line 200) | protected function _request($method, $url, $data = null)

FILE: common/framework/drivers/sms/twilio.php
  class Twilio (line 11) | class Twilio extends Base implements \Rhymix\Framework\Drivers\SMSInterface
    method isSupported (line 56) | public static function isSupported()
    method send (line 70) | public function send(array $messages, \Rhymix\Framework\SMS $original)

FILE: common/framework/exceptions/DBError.php
  class DBError (line 8) | class DBError extends \Rhymix\Framework\Exception
    method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)

FILE: common/framework/exceptions/FeatureDisabled.php
  class FeatureDisabled (line 8) | class FeatureDisabled extends \Rhymix\Framework\Exception
    method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)

FILE: common/framework/exceptions/InvalidRequest.php
  class InvalidRequest (line 8) | class InvalidRequest extends \Rhymix\Framework\Exception
    method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)

FILE: common/framework/exceptions/MustLogin.php
  class MustLogin (line 8) | class MustLogin extends \Rhymix\Framework\Exception
    method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)

FILE: common/framework/exceptions/NotPermitted.php
  class NotPermitted (line 8) | class NotPermitted extends \Rhymix\Framework\Exception
    method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)

FILE: common/framework/exceptions/QueryError.php
  class QueryError (line 8) | class QueryError extends DBError
    method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)

FILE: common/framework/exceptions/SecurityViolation.php
  class SecurityViolation (line 8) | class SecurityViolation extends \Rhymix\Framework\Exception
    method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)

FILE: common/framework/exceptions/TargetNotFound.php
  class TargetNotFound (line 8) | class TargetNotFound extends \Rhymix\Framework\Exception
    method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)

FILE: common/framework/filters/FileContentFilter.php
  class FileContentFilter (line 8) | class FileContentFilter
    method check (line 22) | public static function check(?string $file = null, ?string $filename =...
    method _checkSVG (line 95) | protected static function _checkSVG($fp, $from, $to, $ext)
    method _checkXML (line 117) | protected static function _checkXML($fp, $from, $to)
    method _checkHTML (line 135) | protected static function _checkHTML($fp, $from, $to)
    method _matchStream (line 161) | protected static function _matchStream($regexp, $fp, $from, $to, $bloc...
    method _getMimetype (line 182) | protected static function _getMimetype($file, $trim_subtype = false)

FILE: common/framework/filters/FilenameFilter.php
  class FilenameFilter (line 8) | class FilenameFilter
    method clean (line 16) | public static function clean(string $filename): string
    method cleanPath (line 63) | public static function cleanPath(string $path): string
    method isDirectDownload (line 103) | public static function isDirectDownload(string $filename, bool $includ...

FILE: common/framework/filters/HTMLFilter.php
  class HTMLFilter (line 13) | class HTMLFilter
    method prependPreFilter (line 76) | public static function prependPreFilter(callable $callback): void
    method appendPreFilter (line 87) | public static function appendPreFilter(callable $callback): void
    method prependPostFilter (line 98) | public static function prependPostFilter(callable $callback): void
    method appendPostFilter (line 109) | public static function appendPostFilter(callable $callback): void
    method clean (line 123) | public static function clean(string $input, $allow_classes = false, bo...
    method fixRelativeUrls (line 179) | public static function fixRelativeUrls(string $content): string
    method getHTMLPurifier (line 202) | public static function getHTMLPurifier(?array $allowed_classes = null)...
    method _supportHTML5 (line 269) | protected static function _supportHTML5(\HTMLPurifier_Config $config):...
    method _supportCSS3 (line 379) | protected static function _supportCSS3(\HTMLPurifier_Config $config): ...
    method _preprocess (line 531) | protected static function _preprocess(string $content, \HTMLPurifier $...
    method _postprocess (line 553) | protected static function _postprocess(string $content, \HTMLPurifier ...
    method _encodeWidgetsAndEditorComponents (line 636) | protected static function _encodeWidgetsAndEditorComponents(string $co...
    method _decodeWidgetsAndEditorComponents (line 691) | protected static function _decodeWidgetsAndEditorComponents(string $co...
    method _encodeDataAttributes (line 732) | protected static function _encodeDataAttributes(string $content): string
    method _decodeDataAttributes (line 765) | protected static function _decodeDataAttributes(string $content): string

FILE: common/framework/filters/IpFilter.php
  class IpFilter (line 8) | class IpFilter
    method inRange (line 17) | public static function inRange(string $ip, string $range): bool
    method inRanges (line 76) | public static function inRanges(string $ip, array $ranges): bool
    method validateRange (line 94) | public static function validateRange(string $range): bool
    method validateRanges (line 119) | public static function validateRanges(array $ranges): bool
    method getCloudFlareRealIP (line 136) | public static function getCloudFlareRealIP()
    method _checkIPv4CIDR (line 163) | protected static function _checkIPv4CIDR(string $ip, string $range): bool
    method _checkIPv6CIDR (line 181) | protected static function _checkIPv6CIDR(string $ip, string $range): bool
    method _checkIPv4Wildcard (line 206) | protected static function _checkIPv4Wildcard(string $ip, string $range...
    method _checkIPv4Hyphen (line 226) | protected static function _checkIPv4Hyphen(string $ip, string $range):...

FILE: common/framework/filters/MediaFilter.php
  class MediaFilter (line 10) | class MediaFilter
    method addPrefix (line 24) | public static function addPrefix(string $prefix, bool $permanently = f...
    method addIframePrefix (line 55) | public static function addIframePrefix(string $prefix, bool $permanent...
    method addObjectPrefix (line 66) | public static function addObjectPrefix(): void
    method formatPrefix (line 77) | public static function formatPrefix(string $prefix): string
    method getWhitelist (line 92) | public static function getWhitelist(): array
    method getWhitelistRegex (line 106) | public static function getWhitelistRegex(): string
    method matchWhitelist (line 126) | public static function matchWhitelist(string $url): bool
    method removeEmbeddedMedia (line 138) | public static function removeEmbeddedMedia(string $input, string $repl...
    method _loadWhitelists (line 152) | protected static function _loadWhitelists(array $custom_whitelist = []...
    method getIframeWhitelist (line 222) | public static function getIframeWhitelist(): array
    method getIframeWhitelistRegex (line 233) | public static function getIframeWhitelistRegex(): string
    method matchIframeWhitelist (line 245) | public static function matchIframeWhitelist(string $url): bool
    method getObjectWhitelist (line 256) | public static function getObjectWhitelist(): array
    method getObjectWhitelistRegex (line 267) | public static function getObjectWhitelistRegex(): string
    method matchObjectWhitelist (line 279) | public static function matchObjectWhitelist(string $url): bool

FILE: common/framework/helpers/CacheItemHelper.php
  class CacheItemHelper (line 11) | class CacheItemHelper implements CacheItemInterface
    method __construct (line 26) | public function __construct(string $key, CacheInterface $driver)
    method getKey (line 37) | public function getKey()
    method get (line 47) | public function get()
    method isHit (line 61) | public function isHit()
    method set (line 72) | public function set($value)
    method expiresAt (line 84) | public function expiresAt($expiration)
    method expiresAfter (line 96) | public function expiresAfter($time)

FILE: common/framework/helpers/CacheItemPoolHelper.php
  class CacheItemPoolHelper (line 12) | class CacheItemPoolHelper implements CacheItemPoolInterface
    method __construct (line 33) | public function __construct(bool $force = false)
    method getItem (line 53) | public function getItem($key)
    method getItems (line 71) | public function getItems(array $keys = [])
    method hasItem (line 94) | public function hasItem($key)
    method clear (line 104) | public function clear()
    method deleteItem (line 116) | public function deleteItem($key)
    method deleteItems (line 134) | public function deleteItems(array $keys)
    method save (line 159) | public function save(CacheItemInterface $item)
    method saveDeferred (line 171) | public function saveDeferred(CacheItemInterface $item)
    method commit (line 181) | public function commit()
    method _getRealKey (line 192) | protected function _getRealKey($key): string

FILE: common/framework/helpers/ConfigHelper.php
  class ConfigHelper (line 11) | class ConfigHelper
    method consolidate (line 24) | public static function consolidate(array $format): array
    method _parseConfigValue (line 44) | protected static function _parseConfigValue(array $value)

FILE: common/framework/helpers/DBHelper.php
  class DBHelper (line 15) | class DBHelper extends \PDO
    method setType (line 25) | public function setType(string $type)
    method prepare (line 37) | #[\ReturnTypeWillChange]
    method query (line 91) | #[\ReturnTypeWillChange]
    method exec (line 135) | #[\ReturnTypeWillChange]

FILE: common/framework/helpers/DBResultHelper.php
  class DBResultHelper (line 10) | class DBResultHelper extends \BaseObject

FILE: common/framework/helpers/DBStmtHelper.php
  class DBStmtHelper (line 16) | class DBStmtHelper extends \PDOStatement
    method setType (line 29) | public function setType(string $type): void
    method execute (line 40) | public function execute($params = null): bool

FILE: common/framework/helpers/HTTPHelper.php
  class HTTPHelper (line 14) | class HTTPHelper implements ResponseInterface
    method __construct (line 30) | public function __construct(\Throwable $exception)
    method getStatusCode (line 40) | public function getStatusCode(): int
    method getReasonPhrase (line 44) | public function getReasonPhrase(): string
    method withStatus (line 48) | public function withStatus(int $code, string $reasonPhrase = ''): Resp...

FILE: common/framework/helpers/SessionHelper.php
  class SessionHelper (line 8) | #[\AllowDynamicProperties]
    method __construct (line 41) | public function __construct($member_srl = 0)
    method isMember (line 65) | public function isMember(): bool
    method isAdmin (line 75) | public function isAdmin(): bool
    method isModuleAdmin (line 86) | public function isModuleAdmin(?int $module_srl = null): bool
    method isValid (line 96) | public function isValid(): bool
    method getGroups (line 113) | public function getGroups(): array
    method getProfileImage (line 123) | public function getProfileImage(): string

FILE: common/framework/i18n.php
  class i18n (line 8) | class i18n
    method listCountries (line 32) | public static function listCountries(int $sort_by = self::SORT_NAME_EN...
    method getCallingCodeByCountryCode (line 98) | public static function getCallingCodeByCountryCode(string $code): ?string
    method getCountryCodeByCallingCode (line 129) | public static function getCountryCodeByCallingCode(string $code, $type...
    method formatPhoneNumber (line 152) | public static function formatPhoneNumber(string $phone_number, string ...

FILE: common/framework/parsers/AddonInfoParser.php
  class AddonInfoParser (line 8) | class AddonInfoParser extends BaseParser
    method loadXML (line 18) | public static function loadXML(string $filename, string $addon_name, s...

FILE: common/framework/parsers/BaseParser.php
  class BaseParser (line 8) | abstract class BaseParser
    method _getAttributes (line 17) | protected static function _getAttributes(\SimpleXMLElement $element, b...
    method _getAttributeString (line 38) | protected static function _getAttributeString(\SimpleXMLElement $eleme...
    method _getAttributeBool (line 62) | protected static function _getAttributeBool(\SimpleXMLElement $element...
    method _getChildrenByLang (line 85) | protected static function _getChildrenByLang(\SimpleXMLElement $parent...
    method _getExtraVars (line 116) | protected static function _getExtraVars(\SimpleXMLElement $extra_vars,...

FILE: common/framework/parsers/ConfigParser.php
  class ConfigParser (line 13) | class ConfigParser
    method convert (line 20) | public static function convert(): array

FILE: common/framework/parsers/DBQueryParser.php
  class DBQueryParser (line 8) | class DBQueryParser extends BaseParser
    method loadXML (line 16) | public static function loadXML(string $filename): ?object
    method _parseQuery (line 38) | protected static function _parseQuery(\SimpleXMLElement $xml, string $...
    method _parseConditions (line 255) | protected static function _parseConditions(\SimpleXMLElement $parent):...

FILE: common/framework/parsers/DBTableParser.php
  class DBTableParser (line 8) | class DBTableParser extends BaseParser
    method loadXML (line 36) | public static function loadXML(string $filename = '', string $content ...
    method getTypeAndSize (line 238) | public static function getTypeAndSize(string $type, string $size): array
    method getXEType (line 275) | public static function getXEType(string $type, string $size): string
    method resolveDependency (line 304) | public static function resolveDependency(array $tables): array

FILE: common/framework/parsers/EditorComponentParser.php
  class EditorComponentParser (line 8) | class EditorComponentParser extends BaseParser
    method loadXML (line 18) | public static function loadXML(string $filename, string $component_nam...

FILE: common/framework/parsers/LangParser.php
  class LangParser (line 11) | class LangParser
    method convertDirectory (line 20) | public static function convertDirectory(string $dir, array $xml_langs ...
    method compileXMLtoPHP (line 49) | public static function compileXMLtoPHP(string $filename, string $langu...
    method _toArray (line 112) | protected static function _toArray($items, &$lang, string $language): ...

FILE: common/framework/parsers/LayoutInfoParser.php
  class LayoutInfoParser (line 8) | class LayoutInfoParser extends BaseParser
    method loadXML (line 19) | public static function loadXML(string $filename, string $layout_name, ...

FILE: common/framework/parsers/ModuleActionParser.php
  class ModuleActionParser (line 8) | class ModuleActionParser extends BaseParser
    method loadXML (line 30) | public static function loadXML(string $filename): ?object
    method analyzeRoute (line 326) | public static function analyzeRoute(array $route): object

FILE: common/framework/parsers/ModuleInfoParser.php
  class ModuleInfoParser (line 8) | class ModuleInfoParser extends BaseParser
    method loadXML (line 16) | public static function loadXML(string $filename): ?object

FILE: common/framework/parsers/RulesetParser.php
  class RulesetParser (line 8) | class RulesetParser extends BaseParser
    method loadXML (line 17) | public static function loadXML(string $filename, string $lang = ''): ?...

FILE: common/framework/parsers/SkinInfoParser.php
  class SkinInfoParser (line 8) | class SkinInfoParser extends BaseParser
    method loadXML (line 19) | public static function loadXML(string $filename, string $skin_name, st...

FILE: common/framework/parsers/WidgetInfoParser.php
  class WidgetInfoParser (line 8) | class WidgetInfoParser extends BaseParser
    method loadXML (line 18) | public static function loadXML(string $filename, string $widget_name, ...

FILE: common/framework/parsers/WidgetStyleInfoParser.php
  class WidgetStyleInfoParser (line 8) | class WidgetStyleInfoParser extends BaseParser
    method loadXML (line 18) | public static function loadXML(string $filename, string $widgetstyle_n...

FILE: common/framework/parsers/XEXMLParser.php
  class XEXMLParser (line 8) | #[\AllowDynamicProperties]
    method loadXMLFile (line 18) | public static function loadXMLFile(string $filename, string $lang = ''...
    method loadXMLString (line 31) | public static function loadXMLString(string $content, string $lang = '...
    method _recursiveConvert (line 58) | protected static function _recursiveConvert(\SimpleXMLElement $element...
    method __get (line 112) | public function __get($name)

FILE: common/framework/parsers/XMLRPCParser.php
  class XMLRPCParser (line 8) | class XMLRPCParser
    method parse (line 16) | public static function parse(string $content): ?array
    method _parseArray (line 38) | protected static function _parseArray(\SimpleXMLElement $parent): array

FILE: common/framework/parsers/dbquery/ColumnRead.php
  class ColumnRead (line 8) | class ColumnRead

FILE: common/framework/parsers/dbquery/ColumnWrite.php
  class ColumnWrite (line 8) | class ColumnWrite extends VariableBase

FILE: common/framework/parsers/dbquery/Condition.php
  class Condition (line 8) | class Condition extends VariableBase

FILE: common/framework/parsers/dbquery/ConditionGroup.php
  class ConditionGroup (line 8) | class ConditionGroup

FILE: common/framework/parsers/dbquery/EmptyString.php
  class EmptyString (line 8) | class EmptyString
    method __toString (line 10) | public function __toString(): string

FILE: common/framework/parsers/dbquery/GroupBy.php
  class GroupBy (line 8) | class GroupBy

FILE: common/framework/parsers/dbquery/IndexHint.php
  class IndexHint (line 8) | class IndexHint

FILE: common/framework/parsers/dbquery/Navigation.php
  class Navigation (line 8) | class Navigation

FILE: common/framework/parsers/dbquery/NullValue.php
  class NullValue (line 8) | class NullValue
    method __toString (line 10) | public function __toString(): string

FILE: common/framework/parsers/dbquery/OrderBy.php
  class OrderBy (line 8) | class OrderBy extends VariableBase

FILE: common/framework/parsers/dbquery/Query.php
  class Query (line 8) | class Query extends VariableBase
    method getQueryString (line 63) | public function getQueryString(string $prefix = '', array $args = [], ...
    method getQueryParams (line 102) | public function getQueryParams(): array
    method requiresPagination (line 112) | public function requiresPagination(): bool
    method _getSelectQueryString (line 123) | protected function _getSelectQueryString(int $count_only = 0): string
    method _getInsertQueryString (line 288) | protected function _getInsertQueryString(): string
    method _getUpdateQueryString (line 340) | protected function _getUpdateQueryString(): string
    method _getDeleteQueryString (line 391) | protected function _getDeleteQueryString(): string
    method _arrangeTables (line 443) | protected function _arrangeTables(array $tables, int $use_aliases = se...
    method _arrangeIndexHints (line 512) | protected function _arrangeIndexHints(array $index_hints): string
    method _arrangeConditions (line 559) | protected function _arrangeConditions(array $conditions): string
    method _arrangeOrderBy (line 618) | protected function _arrangeOrderBy(Navigation $navigation): string
    method _arrangeLimitOffset (line 675) | protected function _arrangeLimitOffset(Navigation $navigation): string
    method _parseCondition (line 731) | protected function _parseCondition(VariableBase $condition): string
    method quoteName (line 747) | public static function quoteName(string $column_name): string
    method isValidColumnName (line 765) | public static function isValidColumnName(string $column_name): bool
    method isValidVariable (line 777) | public static function isValidVariable($var, bool $allow_empty_string ...

FILE: common/framework/parsers/dbquery/Table.php
  class Table (line 8) | class Table

FILE: common/framework/parsers/dbquery/VariableBase.php
  class VariableBase (line 8) | class VariableBase
    method getQueryStringAndParams (line 24) | public function getQueryStringAndParams(array $args, string $prefix = ...
    method getValue (line 292) | public function getValue(array $args): array
    method getDefaultValue (line 333) | public function getDefaultValue(): array
    method filterValue (line 405) | public function filterValue($value): void
    method _parseSearchKeywords (line 498) | protected function _parseSearchKeywords(string $column, string $value)...

FILE: common/framework/parsers/dbtable/Column.php
  class Column (line 8) | class Column

FILE: common/framework/parsers/dbtable/Constraint.php
  class Constraint (line 8) | class Constraint

FILE: common/framework/parsers/dbtable/GeneratedColumn.php
  class GeneratedColumn (line 8) | class GeneratedColumn extends Column

FILE: common/framework/parsers/dbtable/Index.php
  class Index (line 8) | class Index

FILE: common/framework/parsers/dbtable/Table.php
  class Table (line 8) | class Table
    method getCreateQuery (line 25) | public function getCreateQuery(string $prefix = '', string $charset = ...

FILE: common/framework/parsers/template/TemplateParser_v1.php
  class TemplateParser_v1 (line 20) | class TemplateParser_v1
    method convert (line 36) | public function convert(string $content, Template $template): string
    method _compileFormAuthGeneration (line 103) | private function _compileFormAuthGeneration($matches)
    method _replacePath (line 201) | private function _replacePath($match)
    method _replaceRelativePath (line 213) | private function _replaceRelativePath($match)
    method _replaceSrcsetPath (line 251) | private function _replaceSrcsetPath($match)
    method _parseInline (line 274) | private function _parseInline($content)
    method _parseResource (line 396) | private function _parseResource($m)
    method _applyEscapeOption (line 789) | private function _applyEscapeOption($str, $escape_option)
    method _getRelativeDir (line 817) | private function _getRelativeDir($path)
    method _isVar (line 856) | private static function _isVar($str)
    method _replaceVar (line 867) | private static function _replaceVar($php)
    method _replaceTempEntities (line 900) | private static function _replaceTempEntities($str)
    method _getTempEntityForChar (line 914) | private static function _getTempEntityForChar($char)

FILE: common/framework/parsers/template/TemplateParser_v2.php
  class TemplateParser_v2 (line 21) | class TemplateParser_v2
    method convert (line 130) | public function convert(string $content, Template $template): string
    method _preprocess (line 166) | protected function _preprocess(string $content): string
    method _addContextSwitches (line 180) | protected function _addContextSwitches(string $content): string
    method _removeContextSwitches (line 246) | protected static function _removeContextSwitches(string $content): string
    method _removeComments (line 260) | protected function _removeComments(string $content): string
    method _convertRelativePaths (line 274) | protected function _convertRelativePaths(string $content): string
    method _convertPHPSections (line 329) | protected function _convertPHPSections(string $content): string
    method _convertVerbatimSections (line 358) | protected function _convertVerbatimSections(string $content): string
    method _convertFragments (line 384) | protected function _convertFragments(string $content): string
    method _convertClassAliases (line 417) | protected function _convertClassAliases(string $content): string
    method _convertIncludes (line 465) | protected function _convertIncludes(string $content): string
    method _convertResource (line 555) | protected function _convertResource(string $content): string
    method _convertLoopDirectives (line 620) | protected function _convertLoopDirectives(string $content): string
    method _convertInlineDirectives (line 742) | protected function _convertInlineDirectives(string $content): string
    method _convertMiscDirectives (line 785) | protected function _convertMiscDirectives(string $content): string
    method _convertEchoStatements (line 834) | protected function _convertEchoStatements(string $content): string
    method _arrangeOutputFilters (line 866) | protected function _arrangeOutputFilters(array $match): string
    method _applyEscapeOption (line 1002) | protected static function _applyEscapeOption(string $str, string $opti...
    method _addDeprecationMessages (line 1032) | protected function _addDeprecationMessages(string $content): string
    method _postprocess (line 1062) | protected function _postprocess(string $content): string
    method _convertVariableScope (line 1102) | protected function _convertVariableScope(string $content): string
    method _getTagAttributes (line 1165) | protected static function _getTagAttributes(string $html): array
    method _getRegexpForParentheses (line 1190) | protected static function _getRegexpForParentheses(int $position_in_re...
    method _getRegexpForCurlyBraces (line 1201) | protected static function _getRegexpForCurlyBraces(int $position_in_re...
    method _escapeCurly (line 1212) | protected static function _escapeCurly(string $code): string
    method _escapeVars (line 1226) | protected static function _escapeVars(string $code): string

FILE: common/functions.php
  function config (line 16) | function config(string $key, $value = null)
  function lang (line 35) | function lang(?string $code, $value = null)
  function array_first (line 61) | function array_first(array $array)
  function array_first_key (line 73) | function array_first_key(array $array)
  function array_last (line 86) | function array_last(array $array)
  function array_last_key (line 98) | function array_last_key(array $array)
  function array_escape (line 110) | function array_escape(array $array, bool $double_escape = true): array
  function array_flatten (line 141) | function array_flatten(array $array, bool $preserve_keys = true): array
  function class_basename (line 164) | function class_basename($class): string
  function clean_path (line 177) | function clean_path(string $path): string
  function escape (line 190) | function escape($str, bool $double_escape = true, bool $except_lang_code...
  function escape_css (line 210) | function escape_css(string $str): string
  function escape_js (line 221) | function escape_js(string $str): string
  function escape_sqstr (line 235) | function escape_sqstr(string $str): string
  function escape_dqstr (line 247) | function escape_dqstr(string $str): string
  function explode_with_escape (line 263) | function explode_with_escape(string $delimiter, string $str, int $limit ...
  function starts_with (line 287) | function starts_with($needle, $haystack, bool $case_sensitive = true): bool
  function ends_with (line 313) | function ends_with($needle, $haystack, bool $case_sensitive = true): bool
  function contains (line 339) | function contains($needle, $haystack, bool $case_sensitive = true): bool
  function is_between (line 367) | function is_between($needle, $min, $max, bool $exclusive = false): bool
  function force_range (line 389) | function force_range($input, $min, $max)
  function base64_encode_urlsafe (line 405) | function base64_encode_urlsafe(string $str): string
  function base64_decode_urlsafe (line 416) | function base64_decode_urlsafe(string $str): string
  function number_shorten (line 428) | function number_shorten($number, int $significant_digits = 2): string
  function path2url (line 460) | function path2url(string $path)
  function url2path (line 474) | function url2path(string $url)
  function hex2rgb (line 487) | function hex2rgb(string $hex): array
  function rgb2hex (line 517) | function rgb2hex(array $rgb, bool $hash_prefix = true): string
  function include_in_clean_scope (line 537) | function include_in_clean_scope(string $filename)
  function include_and_ignore_errors (line 548) | function include_and_ignore_errors(string $filename)
  function include_and_ignore_output (line 562) | function include_and_ignore_output(string $filename)
  function tobool (line 577) | function tobool($input): bool
  function countobj (line 594) | function countobj($array_or_object): int
  function utf8_check (line 616) | function utf8_check($str): bool
  function utf8_clean (line 634) | function utf8_clean($str): string
  function utf8_mbencode (line 668) | function utf8_mbencode($str): string
  function utf8_normalize_spaces (line 685) | function utf8_normalize_spaces($str, bool $multiline = false): string
  function utf8_trim (line 704) | function utf8_trim($str): string
  function is_html_content (line 717) | function is_html_content($str): bool
  function is_empty_html_content (line 747) | function is_empty_html_content($str): bool
  function str_starts_with (line 763) | function str_starts_with($haystack, $needle)
  function str_ends_with (line 778) | function str_ends_with($haystack, $needle)
  function str_contains (line 793) | function str_contains($haystack, $needle)

FILE: common/js/common.js
  function isMobile (line 1307) | function isMobile() {
  function getColorScheme (line 1316) | function getColorScheme() {
  function setColorScheme (line 1326) | function setColorScheme(color_scheme) {
  function detectColorScheme (line 1335) | function detectColorScheme() {
  function getLangType (line 1344) | function getLangType() {
  function setLangType (line 1354) | function setLangType(lang_type) {
  function getCSRFToken (line 1363) | function getCSRFToken() {
  function setCSRFToken (line 1373) | function setCSRFToken(token) {
  function isCurrentPageUrl (line 1383) | function isCurrentPageUrl(url) {
  function isSameOrigin (line 1394) | function isSameOrigin(url1, url2) {
  function redirect (line 1404) | function redirect(url) {
  function openModal (line 1414) | function openModal(id) {
  function openModalIframe (line 1425) | function openModalIframe(url, target) {
  function closeModal (line 1435) | function closeModal(id) {
  function winopen (line 1446) | function winopen(url, target, features) {
  function popopen (line 1457) | function popopen(url, target) {
  function doAddDocumentCart (line 1473) | function doAddDocumentCart(obj) {
  function doDocumentPreview (line 1493) | function doDocumentPreview(obj) {
  function doDocumentSave (line 1533) | function doDocumentSave(obj) {
  function doDocumentLoad (line 1569) | function doDocumentLoad(obj) {
  function doDocumentSelect (line 1586) | function doDocumentSelect(document_srl, module, mid) {
  function getCookie (line 1633) | function getCookie(name) {
  function setCookie (line 1649) | function setCookie(name, value, expires, path) {
  function doChangeLangType (line 1667) | function doChangeLangType(obj) {
  function doCallModuleAction (line 1698) | function doCallModuleAction(module, action, target_srl) {
  function rhymix_alert_close (line 1725) | function rhymix_alert_close() {
  function rhymix_alert (line 1743) | function rhymix_alert(message, redirect_url, delay) {
  function move_url (line 1766) | function move_url(url, open_window) {
  function setFixedPopupSize (line 1787) | function setFixedPopupSize() {
  function displayMultimedia (line 1827) | function displayMultimedia(src, width, height, options) {
  function _displayMultimedia (line 1833) | function _displayMultimedia(src, width, height, options) {
  function transRGB2Hex (line 1862) | function transRGB2Hex(value) {
  function sendMailTo (line 1893) | function sendMailTo(email_address) {
  function viewSkinInfo (line 1905) | function viewSkinInfo(module, skin) {
  function xSleep (line 1917) | function xSleep(sec) {
  function isDef (line 1933) | function isDef() {
  function is_def (line 1951) | function is_def(v) {
  function ucfirst (line 1962) | function ucfirst(str) {
  function get_by_id (line 1973) | function get_by_id(id) {
  function GetObjLeft (line 1984) | function GetObjLeft(obj) {
  function GetObjTop (line 1995) | function GetObjTop(obj) {
  function getOuterHTML (line 2006) | function getOuterHTML(obj) {
  function replaceOuterHTML (line 2018) | function replaceOuterHTML(obj, html) {
  function toggleDisplay (line 2029) | function toggleDisplay(id) {
  function toggleSecuritySignIn (line 2039) | function toggleSecuritySignIn() {
  function completeMessage (line 2055) | function completeMessage(ret_obj) {
  function reloadDocument (line 2066) | function reloadDocument() {
  function open_calendar (line 2079) | function open_calendar(fo_id, day_str, callback_func) {
  function displayPopupMenu (line 2092) | function displayPopupMenu(ret_obj, response_tags, params) {
  function createPopupMenu (line 2102) | function createPopupMenu() {
  function chkPopupMenu (line 2112) | function chkPopupMenu() {
  function zbxe_folder_open (line 2119) | function zbxe_folder_open(id) {
  function zbxe_folder_close (line 2124) | function zbxe_folder_close(id) {
  function svc_folder_open (line 2129) | function svc_folder_open(id) {
  function svc_folder_close (line 2134) | function svc_folder_close(id) {

FILE: common/js/jquery-2.2.4.js
  function isArrayLike (line 529) | function isArrayLike( obj ) {
  function Sizzle (line 738) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 878) | function createCache() {
  function markFunction (line 896) | function markFunction( fn ) {
  function assert (line 905) | function assert( fn ) {
  function addHandle (line 927) | function addHandle( attrs, handler ) {
  function siblingCheck (line 942) | function siblingCheck( a, b ) {
  function createInputPseudo (line 969) | function createInputPseudo( type ) {
  function createButtonPseudo (line 980) | function createButtonPseudo( type ) {
  function createPositionalPseudo (line 991) | function createPositionalPseudo( fn ) {
  function testContext (line 1014) | function testContext( context ) {
  function setFilters (line 2059) | function setFilters() {}
  function toSelector (line 2130) | function toSelector( tokens ) {
  function addCombinator (line 2140) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2198) | function elementMatcher( matchers ) {
  function multipleContexts (line 2212) | function multipleContexts( selector, contexts, results ) {
  function condense (line 2221) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2242) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2335) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2393) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function winnow (line 2731) | function winnow( elements, qualifier, not ) {
  function sibling (line 3038) | function sibling( cur, dir ) {
  function createOptions (line 3114) | function createOptions( options ) {
  function completed (line 3549) | function completed() {
  function Data (line 3660) | function Data() {
  function dataAttr (line 3870) | function dataAttr( elem, key, data ) {
  function adjustCSS (line 4187) | function adjustCSS( elem, prop, valueParts, tween ) {
  function getAll (line 4276) | function getAll( context, tag ) {
  function setGlobalEval (line 4293) | function setGlobalEval( elems, refElements ) {
  function buildFragment (line 4309) | function buildFragment( elems, context, scripts, selection, ignored ) {
  function returnTrue (line 4430) | function returnTrue() {
  function returnFalse (line 4434) | function returnFalse() {
  function safeActiveElement (line 4440) | function safeActiveElement() {
  function on (line 4446) | function on( elem, types, selector, data, fn, one ) {
  function manipulationTarget (line 5138) | function manipulationTarget( elem, content ) {
  function disableScript (line 5148) | function disableScript( elem ) {
  function restoreScript (line 5152) | function restoreScript( elem ) {
  function cloneCopyEvent (line 5164) | function cloneCopyEvent( src, dest ) {
  function fixInput (line 5199) | function fixInput( src, dest ) {
  function domManip (line 5212) | function domManip( collection, args, callback, ignored ) {
  function remove (line 5302) | function remove( elem, selector, keepData ) {
  function actualDisplay (line 5593) | function actualDisplay( name, doc ) {
  function defaultDisplay (line 5609) | function defaultDisplay( nodeName ) {
  function computeStyleTests (line 5705) | function computeStyleTests() {
  function curCSS (line 5795) | function curCSS( elem, name, computed ) {
  function addGetHookIf (line 5845) | function addGetHookIf( conditionFn, hookFn ) {
  function vendorPropName (line 5882) | function vendorPropName( name ) {
  function setPositiveNumber (line 5901) | function setPositiveNumber( elem, value, subtract ) {
  function augmentWidthOrHeight (line 5913) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
  function getWidthOrHeight (line 5957) | function getWidthOrHeight( elem, name, extra ) {
  function showHide (line 6002) | function showHide( elements, show ) {
  function Tween (line 6341) | function Tween( elem, options, prop, end, easing ) {
  function createFxNow (line 6465) | function createFxNow() {
  function genFx (line 6473) | function genFx( type, includeWidth ) {
  function createTween (line 6493) | function createTween( value, prop, animation ) {
  function defaultPrefilter (line 6507) | function defaultPrefilter( elem, props, opts ) {
  function propFilter (line 6643) | function propFilter( props, specialEasing ) {
  function Animation (line 6680) | function Animation( elem, properties, options ) {
  function getClass (line 7369) | function getClass( elem ) {
  function addToPrefiltersOrTransports (line 8025) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 8059) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 8088) | function ajaxExtend( target, src ) {
  function ajaxHandleResponses (line 8108) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 8166) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function done (line 8671) | function done( status, nativeStatusText, responses, headers ) {
  function buildParams (line 8924) | function buildParams( prefix, obj, traditional, add ) {
  function getWindow (line 9490) | function getWindow( elem ) {

FILE: common/js/jquery-3.7.1.js
  function DOMEval (line 104) | function DOMEval( code, node, doc ) {
  function toType (line 134) | function toType( obj ) {
  function isArrayLike (line 546) | function isArrayLike( obj ) {
  function nodeName (line 564) | function nodeName( elem, name ) {
  function fcssescape (line 610) | function fcssescape( ch, asCodePoint ) {
  function safeActiveElement (line 777) | function safeActiveElement() {
  function find (line 805) | function find( selector, context, results, seed ) {
  function createCache (line 948) | function createCache() {
  function markFunction (line 969) | function markFunction( fn ) {
  function assert (line 978) | function assert( fn ) {
  function createInputPseudo (line 1001) | function createInputPseudo( type ) {
  function createButtonPseudo (line 1011) | function createButtonPseudo( type ) {
  function createDisabledPseudo (line 1022) | function createDisabledPseudo( disabled ) {
  function createPositionalPseudo (line 1077) | function createPositionalPseudo( fn ) {
  function testContext (line 1100) | function testContext( context ) {
  function setDocument (line 1109) | function setDocument( node ) {
  function setFilters (line 2083) | function setFilters() {}
  function tokenize (line 2087) | function tokenize( selector, parseOnly ) {
  function toSelector (line 2159) | function toSelector( tokens ) {
  function addCombinator (line 2169) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2231) | function elementMatcher( matchers ) {
  function multipleContexts (line 2245) | function multipleContexts( selector, contexts, results ) {
  function condense (line 2254) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2275) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2374) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2442) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function compile (line 2568) | function compile( selector, match /* Internal Use Only */ ) {
  function select (line 2609) | function select( selector, context, results, seed ) {
  function winnow (line 2762) | function winnow( elements, qualifier, not ) {
  function sibling (line 3057) | function sibling( cur, dir ) {
  function createOptions (line 3150) | function createOptions( options ) {
  function Identity (line 3375) | function Identity( v ) {
  function Thrower (line 3378) | function Thrower( ex ) {
  function adoptValue (line 3382) | function adoptValue( value, resolve, reject, noValue ) {
  function resolve (line 3475) | function resolve( depth, deferred, handler, special ) {
  function completed (line 3851) | function completed() {
  function fcamelCase (line 3946) | function fcamelCase( _all, letter ) {
  function camelCase (line 3953) | function camelCase( string ) {
  function Data (line 3970) | function Data() {
  function getData (line 4139) | function getData( data ) {
  function dataAttr (line 4164) | function dataAttr( elem, key, data ) {
  function adjustCSS (line 4476) | function adjustCSS( elem, prop, valueParts, tween ) {
  function getDefaultDisplay (line 4544) | function getDefaultDisplay( elem ) {
  function showHide (line 4567) | function showHide( elements, show ) {
  function getAll (line 4699) | function getAll( context, tag ) {
  function setGlobalEval (line 4724) | function setGlobalEval( elems, refElements ) {
  function buildFragment (line 4740) | function buildFragment( elems, context, scripts, selection, ignored ) {
  function returnTrue (line 4832) | function returnTrue() {
  function returnFalse (line 4836) | function returnFalse() {
  function on (line 4840) | function on( elem, types, selector, data, fn, one ) {
  function leverageNative (line 5328) | function leverageNative( el, type, isSetup ) {
  function focusMappedHandler (line 5541) | function focusMappedHandler( nativeEvent ) {
  function manipulationTarget (line 5793) | function manipulationTarget( elem, content ) {
  function disableScript (line 5804) | function disableScript( elem ) {
  function restoreScript (line 5808) | function restoreScript( elem ) {
  function cloneCopyEvent (line 5818) | function cloneCopyEvent( src, dest ) {
  function fixInput (line 5851) | function fixInput( src, dest ) {
  function domManip (line 5864) | function domManip( collection, args, callback, ignored ) {
  function remove (line 5962) | function remove( elem, selector, keepData ) {
  function computeStyleTests (line 6280) | function computeStyleTests() {
  function roundPixelMeasures (line 6324) | function roundPixelMeasures( measure ) {
  function curCSS (line 6417) | function curCSS( elem, name, computed ) {
  function addGetHookIf (line 6502) | function addGetHookIf( conditionFn, hookFn ) {
  function vendorPropName (line 6527) | function vendorPropName( name ) {
  function finalPropName (line 6542) | function finalPropName( name ) {
  function setPositiveNumber (line 6567) | function setPositiveNumber( _elem, value, subtract ) {
  function boxModelAdjustment (line 6579) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
  function getWidthOrHeight (line 6650) | function getWidthOrHeight( elem, dimension, extra ) {
  function Tween (line 7035) | function Tween( elem, options, prop, end, easing ) {
  function schedule (line 7158) | function schedule() {
  function createFxNow (line 7171) | function createFxNow() {
  function genFx (line 7179) | function genFx( type, includeWidth ) {
  function createTween (line 7199) | function createTween( value, prop, animation ) {
  function defaultPrefilter (line 7213) | function defaultPrefilter( elem, props, opts ) {
  function propFilter (line 7385) | function propFilter( props, specialEasing ) {
  function Animation (line 7422) | function Animation( elem, properties, options ) {
  function stripAndCollapse (line 8136) | function stripAndCollapse( value ) {
  function getClass (line 8142) | function getClass( elem ) {
  function classesToArray (line 8146) | function classesToArray( value ) {
  function buildParams (line 8725) | function buildParams( prefix, obj, traditional, add ) {
  function addToPrefiltersOrTransports (line 8878) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 8912) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 8941) | function ajaxExtend( target, src ) {
  function ajaxHandleResponses (line 8961) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 9019) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function done (line 9535) | function done( status, nativeStatusText, responses, headers ) {

FILE: common/js/js_app.js
  function getTypeBase (line 236) | function getTypeBase() {

FILE: common/js/modernizr.js
  function isEventSupported (line 100) | function isEventSupported( eventName, element ) {
  function setCss (line 185) | function setCss( str ) {
  function setCssAll (line 189) | function setCssAll( str1, str2 ) {
  function is (line 193) | function is( obj, type ) {
  function contains (line 197) | function contains( str, substr ) {
  function testProps (line 201) | function testProps( props, prefixed ) {
  function testDOMProps (line 211) | function testDOMProps( props, obj, elem ) {
  function testPropsAll (line 228) | function testPropsAll( prop, prefixed, elem ) {
  function webforms (line 530) | function webforms() {
  function addStyleSheet (line 661) | function addStyleSheet(ownerDocument, cssText) {
  function getElements (line 669) | function getElements() {
  function getExpandoData (line 674) | function getExpandoData(ownerDocument) {
  function createElement (line 685) | function createElement(nodeName, ownerDocument, data){
  function createDocumentFragment (line 708) | function createDocumentFragment(ownerDocument, data){
  function shivMethods (line 726) | function shivMethods(ownerDocument, data) {
  function shivDocument (line 754) | function shivDocument(ownerDocument) {
  function d (line 824) | function d(a){return"[object Function]"==o.call(a)}
  function e (line 824) | function e(a){return"string"==typeof a}
  function f (line 824) | function f(){}
  function g (line 824) | function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}
  function h (line 824) | function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCs...
  function i (line 824) | function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1...
  function j (line 824) | function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++...
  function k (line 824) | function k(){var a=B;return a.loader={load:j,i:0},a}
  function b (line 824) | function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:...
  function g (line 824) | function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop()...
  function h (line 824) | function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[]....

FILE: common/js/plugins/ckeditor/ckeditor/ckeditor.js
  function a (line 7) | function a(){try{document.addEventListener?(document.removeEventListener...
  function b (line 7) | function b(){for(var a;a=c.shift();)a()}
  function e (line 7) | function e(){try{document.documentElement.doScroll("left")}catch(b){setT...
  function d (line 9) | function d(a){var e=b(this);return e[a]||(e[a]=new c(a))}
  function l (line 10) | function l(x,y,z,n){x={name:b,sender:this,editor:x,data:y,listenerData:h...
  function g (line 10) | function g(){x.removeListener(b,c)}
  function a (line 22) | function a(a,y,b){this._minInterval=a;this._context=b;this._lastOutput=t...
  function d (line 22) | function d(x,y,b){a.call(this,x,y,b);this._args=[];var c=this;this.input...
  function c (line 47) | function c(a){g.top=h[a[0]];g.right=h[a[1]];g.bottom=h[a[2]];g.left=h[a[...
  function c (line 51) | function c(a){if(a){var b=a.getClientRect();g.top+=b.top;g.left+=
  function b (line 76) | function b(c){c["data-cke-expando"]&&(c["data-cke-expando"]=!1);if(c.nod...
  function c (line 76) | function c(b){if(b.type==CKEDITOR.NODE_ELEMENT||b.type==CKEDITOR.NODE_DO...
  function d (line 78) | function d(a,b){var c=b?a.getNext():a.getPrevious();return c&&c.type==CK...
  function a (line 99) | function a(a,b){return-1<(" "+a+" ").replace(e," ").indexOf(" "+b+" ")}
  function d (line 99) | function d(a){var b=!0;a.$.id||(a.$.id="cke_tmp_"+CKEDITOR.tools.getNext...
  function b (line 99) | function b(a,b){var c=CKEDITOR.tools.escapeCss(a.$.id);return"#"+c+" "+b...
  function c (line 99) | function c(a){for(var b=0,c=0,g=k[a].length;c<g;c++)b+=parseFloat(this.g...
  function a (line 104) | function a(){try{this.$.focus()}catch(b){}}
  function a (line 115) | function a(b){var c=this.$.attributes.getNamedItem(b);if("input"==this.g...
  function a (line 116) | function a(b,c,g){if(c&&c.type==CKEDITOR.NODE_ELEMENT){for(var e=
  function k (line 125) | function k(b,c){/body|html/.test(a.getName())?
  function v (line 126) | function v(a,b){var c={x:0,y:0};if(!a.is(M?"body":"html")){var g=a.$.get...
  function m (line 126) | function m(a,b){return parseInt(a.getComputedStyle("margin-"+b)||0,10)||0}
  function a (line 130) | function a(b,c){var g=b.childNodes;if(0<=c&&c<g.length)return g[c]}
  function a (line 131) | function a(b){return b.type==CKEDITOR.NODE_ELEMENT&&b.hasClass("cke_enab...
  function a (line 138) | function a(a,b){var c=this.range;if(this._.end)return null;if(!this._.st...
  function d (line 140) | function d(b){for(var c,g=null;c=a.call(this,b);)g=c;return g}
  function c (line 143) | function c(a){return a&&a.getName&&"span"==a.getName()&&a.data("cke-book...
  function b (line 144) | function b(a){return!e(a)&&!k(a)}
  function a (line 149) | function a(a){a.collapsed=a.startContainer&&a.endContainer&&a.startConta...
  function d (line 149) | function d(a,b,c,e,d){function f(a,b,c,g){var Y=c?a.getPrevious():a.getN...
  function b (line 153) | function b(){var a=!1,b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom...
  function c (line 153) | function c(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.wal...
  function f (line 154) | function f(a){return function(){var b;return this[a?"getPreviousNode":"g...
  function b (line 156) | function b(a){return a.getAscendant(function(a){var b;
  function a (line 158) | function a(b){var g=b.container,e=b.offset,d;d=g;var f=e;d=d.type!=CKEDI...
  function b (line 160) | function b(a,c){var g=c.getCustomData("cke-fillingChar");if(g){var e=a.c...
  function c (line 166) | function c(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("c...
  function e (line 166) | function e(a,b,c){var g=new CKEDITOR.dom.range(c);g.setStart(a,b);g.setE...
  function a (line 183) | function a(e){return function(a){return b(a)||c(a)||a.type==CKEDITOR.NOD...
  function a (line 187) | function a(b,c){for(;b;){if(b.type==
  function a (line 195) | function a(b,c){var e=CKEDITOR.tools.array.map(b,function(a){return a}),...
  function b (line 197) | function b(a,c,d){var g;c.collapsed?d.startContainer instanceof CKEDITOR...
  function c (line 199) | function c(a,b,e){a=CKEDITOR.tools.extend({},a);b&&(a=CKEDITOR.tools.get...
  function e (line 199) | function e(a){var b=a.startNode;a=a.endNode;var c;b.setText("​");b.remov...
  function a (line 204) | function a(a){1>arguments.length||(this.range=a,this.forceBrBreak=0,this...
  function d (line 204) | function d(a){var b=[];a.forEach(function(a){if("true"==a.getAttribute("...
  function b (line 204) | function b(a,c,e,f){a:{null==f&&(f=d(e));for(var h;h=f.shift();)if(h.get...
  function c (line 205) | function c(a,b,c){if(!b)return!1;a=a.clone();a.collapse(!c);return a.che...
  function d (line 213) | function d(a){return!(a.equals(c)||a.equals(f))}
  function a (line 220) | function a(a,b,c,e,d){var f,g;a=[];for(f in b){g=b[f];g="boolean"==typeo...
  function d (line 222) | function d(a,c,e,d){if(!a.match||a.match(c))if(d||h(a,c))if(a.properties...
  function b (line 223) | function b(a,b,c){if(!a)return!1;if(!0===a)return!0;for(var e in b)c[e]|...
  function c (line 223) | function c(a,b,c){if(!a.match||a.match(b)){if(a.noProperties)return!1;c....
  function f (line 223) | function f(a,
  function e (line 224) | function e(a,b,c){if(a.disabled||a.customConfig&&!c||!b)return!1;a._.cac...
  function k (line 224) | function k(a,b){if(!a)return!1;if(!0===a)return a;if("string"==typeof a)...
  function h (line 224) | function h(a,b){if(a.nothingRequired)return!0;
  function n (line 225) | function n(a,b){if(!b)return!0;for(var c=0,e;c<b.length;++c)if(e=b[c],"s...
  function l (line 225) | function l(a){if(!a)return{};
  function g (line 226) | function g(a){var b,c,e,d,f={},g=1;for(a=A(a);b=a.match(r);)(c=b[2])?(e=...
  function x (line 226) | function x(a,b){var c=a.match(E[b]);return c?A(c[1]):null}
  function y (line 226) | function y(a){var b=a.styleBackup=a.attributes.style,c=a.classBackup=a.a...
  function z (line 227) | function z(a,b,e,f){var g=0,t;f.toHtml&&(b.name=b.name.replace(S,"$1"));...
  function G (line 230) | function G(a){var b=[],c;for(c in a)-1<c.indexOf("*")&&b.push(c.replace(...
  function v (line 230) | function v(a){var b=a.attributes,c;delete b.style;delete b["class"];
  function m (line 231) | function m(a){switch(a.name){case "a":if(!(a.children.length||a.attribut...
  function M (line 231) | function M(a){if(!a)return!1;if(!0===a)return!0;var b=G(a);return functi...
  function w (line 231) | function w(){return new CKEDITOR.htmlParser.element("br")}
  function J (line 231) | function J(a){return a.type==CKEDITOR.NODE_ELEMENT&&("br"==
  function F (line 232) | function F(a,b,c){var e=a.name;if(t.$empty[e]||!a.children.length)"hr"==...
  function q (line 234) | function q(a,b,c){var e,d;for(e=0;e<c.length;++e)if(d=c[e],!(d.check&&!a...
  function u (line 234) | function u(a,b){var c=b.getDefinition(),e=c.attributes,d=c.styles,f,g,p,...
  function K (line 235) | function K(a,b){var c,e;"string"==typeof a?c=a:a instanceof CKEDITOR.sty...
  function D (line 235) | function D(a){return function(b){return u(b,a)}}
  function B (line 235) | function B(a){return function(b,c){c[a](b)}}
  function b (line 251) | function b(e){a.styles["margin-top"]=
  function d (line 255) | function d(){if(this.hasFocus){this.hasFocus=!1;var a=this._.editor.cont...
  function a (line 263) | function a(){var b;(b=c[0])&&this.load(b.scriptUrl,b.callback,CKEDITOR,0)}
  function a (line 272) | function a(a,f,g){CKEDITOR.event.call(this);a=a&&CKEDITOR.tools.clone(a)...
  function d (line 275) | function d(){do var a="editor"+ ++G;while(CKEDITOR.instances[a]);return a}
  function b (line 275) | function b(a,b){return b==CKEDITOR.ELEMENT_MODE_INLINE?a.is(CKEDITOR.dtd...
  function c (line 275) | function c(){var a=this.commands,b;for(b in a)f(this,a[b])}
  function f (line 275) | function f(a,b){b[b.startDisabled?"disable":a.readOnly&&!b.readOnly?"dis...
  function e (line 276) | function e(a,b,c){if(b){var e,d,f=a.commands;for(d in f)e=f[d],(c||e.con...
  function k (line 276) | function k(a){var b=a.config.customConfig;if(!b)return!1;var b=CKEDITOR....
  function h (line 276) | function h(a,b){a.on("customConfigLoaded",function(){if(b){if(b.on)for(v...
  function n (line 279) | function n(a){CKEDITOR.skin.loadPart("editor",function(){l(a)})}
  function l (line 279) | function l(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLangu...
  function g (line 280) | function g(a){a.getStylesSet(function(b){a.once("loaded",function(){a.fi...
  function x (line 280) | function x(a){function b(a){if(!a)return"";CKEDITOR.tools.isArray(a)&&(a...
  function y (line 283) | function y(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT...
  function z (line 284) | function z(a,b){function c(a){var b=a.startContainer,e=a.endContainer,d=...
  function a (line 286) | function a(b){c.updateElement();c._.required&&!e.getValue()&&!1===c.fire...
  function b (line 286) | function b(a){return!!(a&&a.call&&a.apply)}
  function a (line 312) | function a(a){return a.attributes["data-cke-survive"]?!1:"a"==a.name&&a....
  function n (line 313) | function n(a){var b;if(0<m.length)for(var c=0;c<m.length;c++){var e=m[c]...
  function l (line 313) | function l(){for(;M.length;)x(M.shift(),w)}
  function g (line 313) | function g(a){if(a._.isBlockLike&&"pre"!=a.name&&"textarea"!=a.name){var...
  function x (line 314) | function x(b,c,e){c=c||w||v;var d=w;void 0===b.previous&&(y(c,b)&&(w=c,G...
  function y (line 314) | function y(a,b){if((a==v||"body"==a.name)&&h&&(!a.name||CKEDITOR.dtd[a.n...
  function z (line 315) | function z(a,b){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$t...
  function a (line 323) | function a(){this.rules=[]}
  function d (line 323) | function d(b,c,d,e){var k,h;for(k in c)(h=b[k])||(h=b[k]=new a),h.add(c[...
  function a (line 329) | function a(a,d){function g(a){return a||CKEDITOR.env.needsNbspFiller?new...
  function d (line 332) | function d(a,b){return a!=CKEDITOR.ENTER_BR&&!1!==b?a==CKEDITOR.ENTER_DI...
  function b (line 332) | function b(a){for(a=a.children[a.children.length-1];a&&f(a);)a=a.previou...
  function c (line 332) | function c(a){for(a=a.previous;a&&f(a);)a=a.previous;return a}
  function f (line 332) | function f(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a....
  function e (line 332) | function e(a){return a&&
  function k (line 333) | function k(a,b){var c=a.children[a.children.length-1];a.children.push(b)...
  function h (line 333) | function h(a){a=a.attributes;"false"!=a.contenteditable&&(a["data-cke-ed...
  function n (line 333) | function n(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":...
  function l (line 333) | function l(a,b){return a.replace(t,
  function g (line 334) | function g(a,b){return a.replace(b,function(a,b,c){0===a.indexOf("\x3cte...
  function x (line 334) | function x(a){return a.replace(L,function(a,b){return decodeURIComponent...
  function y (line 334) | function y(a){return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g,
  function z (line 335) | function z(a){return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)-...
  function G (line 335) | function G(a,b){var c=b._.dataStore;return a.replace(/\x3c!--\{cke_prote...
  function v (line 335) | function v(a,b,c){var d=[],e=b.config.protectedSource,f=b._.dataStore||
  function a (line 349) | function a(b,c){for(var e=0;e<b.length;e++){var d=b[e];d.lastIndex=0;if(...
  function b (line 349) | function b(a){return CKEDITOR.tools.array.reduce(a.split(""),function(a,...
  function c (line 349) | function c(a){var b;
  function a (line 354) | function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&(...
  function a (line 362) | function a(a){if(e.secure&&e.latest)return a();try{var b=new XMLHttpRequ...
  function d (line 363) | function d(a){var c=a.match(b);return c?{original:a,major:4,minor:Number...
  function d (line 366) | function d(){CKEDITOR.currentInstance==a&&(CKEDITOR.currentInstance=null...
  function a (line 373) | function a(a,f,e,k){a=CKEDITOR.editor._getEditorElement(a);if(!a)return ...
  function d (line 374) | function d(){var a=this.container,b=this.element;a&&(a.clearCustomData()...
  function b (line 374) | function b(a){var b=a.name,d=
  function a (line 383) | function a(a){var b=a.editor,e=a.data.path,g=e.blockLimit,f=a.data.selec...
  function d (line 384) | function d(a,b){if(a.isFake)return 0;var d=b.block||b.blockLimit,e=d&&d....
  function b (line 385) | function b(a){var b=a.data.getTarget();b.is("input")&&(b=b.getAttribute(...
  function c (line 385) | function c(a){return z(a)&&G(a)}
  function f (line 385) | function f(a,b){return function(c){var d=c.data.$.toElement||c.data.$.fr...
  function e (line 385) | function e(a){return!!a.getRanges()[0].startPath().contains({table:1,ul:...
  function k (line 385) | function k(a){function b(a){var e=
  function h (line 386) | function h(a){return a.block.getParent().getChildCount()}
  function n (line 387) | function n(a,b,c){return!1!==a.config.autoParagraph&&a.activeEnterMode!=...
  function l (line 387) | function l(a){return a.activeEnterMode!=CKEDITOR.ENTER_BR&&!1!==a.config...
  function g (line 387) | function g(a){a&&a.isEmptyInlineRemoveable()&&a.remove()}
  function x (line 387) | function x(a){var b=a.editor;b.getSelection().scrollIntoView();setTimeou...
  function y (line 387) | function y(a,b,c){var d=a.getCommonAncestor(b);
  function a (line 397) | function a(){var b=c.getDocument().$,d=b.getSelection(),e;a:if(d.anchorN...
  function b (line 398) | function b(){var a=c.getDocument().$,d=a.selection,e=c.getDocument().get...
  function a (line 421) | function a(b){return b.type==CKEDITOR.NODE_ELEMENT}
  function b (line 421) | function b(c,d){var e,g,f,r,h=[],t=d.range.startContainer;e=d.range.star...
  function d (line 422) | function d(b,c){var e=[],g=b.getChildren(),f=g.count(),h,r=0,k=L[c],A=!b...
  function e (line 422) | function e(b){return a(b.startContainer)&&b.startContainer.getChild(b.st...
  function f (line 422) | function f(b){return b&&
  function h (line 423) | function h(b,c,d,e){var g=b.clone(),f,t;g.setEndAt(c,CKEDITOR.POSITION_B...
  function k (line 423) | function k(b,c){function d(b,c){if(c.isBlock&&c.isElement&&!c.node.is("b...
  function a (line 434) | function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)re...
  function b (line 435) | function b(a,c,d){c=a.getDocument().createElement(c);a.append(c,d);retur...
  function c (line 435) | function c(a){var b=a.count(),d;for(b;0<b--;)d=a.getItem(b),CKEDITOR.too...
  function a (line 436) | function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)re...
  function a (line 441) | function a(b,c){var d=b.getParent();if(d.is(CKEDITOR.dtd.$inline))b[c?"i...
  function b (line 441) | function b(c,d,e){a(d);a(e,1);for(var g;g=
  function c (line 442) | function c(a,b){var d=new CKEDITOR.dom.range(a);d.setStartAfter(b.startN...
  function a (line 445) | function a(c){var e=[],g,f=new CKEDITOR.dom.walker(c),h=c.startPath().co...
  function b (line 446) | function b(a,c){var d=CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CO...
  function a (line 452) | function a(a){return CKEDITOR.plugins.widget&&CKEDITOR.plugins.widget.is...
  function d (line 452) | function d(b,c){if(0===b.length||a(b[0].getEnclosedNode()))return!1;var ...
  function b (line 453) | function b(a){function b(a){a=a.find("td, th");var c=[],d;for(d=0;d<a.co...
  function c (line 453) | function c(a){a=b(a);var c="",d=[],e,g;for(g=0;g<a.length;g++)e&&!e.equa...
  function f (line 454) | function f(a){var b=this.root.editor,d=b.getSelection(1);this.reset();F=...
  function e (line 454) | function e(){var b=this._.fakeSelection,c;if(b){c=this.getSelection(1);
  function k (line 457) | function k(){u=!0;q||(h.call(this),q=CKEDITOR.tools.setTimeout(h,200,thi...
  function h (line 457) | function h(){q=null;u&&(CKEDITOR.tools.setTimeout(e,0,this),u=!1)}
  function n (line 457) | function n(a){return K(a)||a.type==CKEDITOR.NODE_ELEMENT&&!a.is(CKEDITOR...
  function l (line 457) | function l(a){function b(c,d){return c&&c.type!=CKEDITOR.NODE_TEXT?a.clo...
  function g (line 458) | function g(a){x(a,!1);var b=a.getDocument().createText(w);a.setCustomDat...
  function x (line 458) | function x(a,b){var c=a&&a.removeCustomData("cke-fillingChar");if(c){if(...
  function y (line 459) | function y(a,b){return b?a.replace(J,function(a,b){return b?" ":""}):a.r...
  function z (line 459) | function z(a,b){var c=b&&CKEDITOR.tools.htmlEncode(b)||"\x26nbsp;",
  function G (line 461) | function G(b){var c={37:1,39:1,8:1,46:1};return function(d){var e=d.data...
  function v (line 462) | function v(a){for(var b=0;b<a.length;b++){var c=a[b];c.getCommonAncestor...
  function a (line 464) | function a(b){return function(a){var c=a.editor.createRange();c.moveToCl...
  function b (line 464) | function b(a){return function(b){var c=b.editor,d=c.createRange(),e;if(!...
  function b (line 465) | function b(){var a=c.getSelection();a&&a.removeAllRanges()}
  function a (line 465) | function a(){q=new CKEDITOR.dom.selection(c.getSelection());q.lock()}
  function b (line 465) | function b(){h.removeListener("mouseup",
  function d (line 466) | function d(a){var b,c;b=(b=this.document.getActive())?"input"===b.getNam...
  function g (line 466) | function g(a){a=a.getRanges()[0];return a?(a=a.startContainer.getAscenda...
  function b (line 470) | function b(a){a=a.data.$;if(u){var c=t.$.createTextRange();try{c.moveToP...
  function c (line 470) | function c(){l.removeListener("mousemove",b);h.removeListener("mouseup",...
  function a (line 482) | function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}
  function a (line 502) | function a(a,b){for(var c,d;(a=a.getParent())&&!a.equals(b);)if(a.getAtt...
  function d (line 502) | function d(a,b,c,d){return(a.getPosition(b)|d)==d&&(!c.childRule||c.chil...
  function b (line 502) | function b(c){var e=c.document;if(c.collapsed)e=M(this,e),c.insertNode(e...
  function c (line 507) | function c(a){function b(){for(var a=new CKEDITOR.dom.elementPath(d.getP...
  function f (line 510) | function f(a){var b=[];a.forEach(function(a){if("true"==a.getAttribute("...
  function e (line 510) | function e(a){var b=a.getEnclosedNode()||a.getCommonAncestor(!1,!0);(a=(...
  function k (line 510) | function k(a){var b=a.getCommonAncestor(!0,!0);if(a=(new CKEDITOR.dom.el...
  function h (line 511) | function h(a){var b=a.createBookmark(!0),c=a.createIterator();c.enforceR...
  function n (line 511) | function n(a){var b=a.createBookmark(1),
  function l (line 512) | function l(a,b){var c=!b;c&&(b=a.getDocument().createElement("div"),a.co...
  function g (line 514) | function g(a){var b=[];x(a.getOuterHtml(),/(\S\s*)\n(?:\s|(<span[^>]+dat...
  function x (line 514) | function x(a,b,c){var d="",e="";a=a.replace(/(^<span[^>]+data-cke-bookma...
  function y (line 515) | function y(a,b){var c;1<a.length&&(c=new CKEDITOR.dom.documentFragment(b...
  function z (line 516) | function z(a,b){var c=this._.definition,d=c.attributes,c=c.styles,e=F(th...
  function G (line 517) | function G(a){for(var b=F(this),c=a.getElementsByTag(this.element),d,e=c...
  function v (line 517) | function v(a,
  function m (line 518) | function m(a,b){if(!a.hasAttributes()||b)if(CKEDITOR.dtd.$block[a.getNam...
  function M (line 519) | function M(a,b,c){var d;d=a.element;"*"==d&&(d="span");d=new CKEDITOR.do...
  function w (line 519) | function w(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.get...
  function J (line 520) | function J(a,b){for(var c in a)a[c]=a[c].replace(H,function(a,c){return ...
  function F (line 520) | function F(a){if(a._.overrides)return a._.overrides;var b=a._.overrides=...
  function q (line 521) | function q(a,b,c){var d=new CKEDITOR.dom.element("span");d[c?"setStyle":...
  function u (line 521) | function u(a,b){function c(a,b){return"font-family"==b.toLowerCase()?a.r...
  function K (line 522) | function K(a,b,c){var d=a.getRanges();b=b?this.removeFromRange:this.appl...
  function a (line 536) | function a(a,f,e){a.once("selectionCheck",function(a){if(!d){var c=a.dat...
  function a (line 539) | function a(a,c){if(b(a))a=Math.round(c*(parseFloat(a)/100));else if("str...
  function d (line 539) | function d(a,c){b(a)?a=c*(parseFloat(a)/100):"string"===typeof a&&a.matc...
  function b (line 539) | function b(a){return"string"===typeof a&&a.match(/^((\d*\.\d+)|(\d+))%{1...
  function c (line 539) | function c(a,b,c){return!isNaN(a)&&a>=b&&a<=c}
  function f (line 539) | function f(a){a=a.toString(16);return 1==a.length?"0"+a:a}
  function a (line 567) | function a(a,c,d){var e=a.serializable,k=c[d?"endContainer":"startContai...
  function a (line 571) | function a(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1]||"sk...
  function d (line 571) | function d(b){var c=CKEDITOR.skin["ua_"+b],d=CKEDITOR.env;if(c)for(var c...
  function b (line 571) | function b(a,b){e[a]||(CKEDITOR.document.appendStyleSheet(d(a)),e[a]=1);...
  function c (line 571) | function c(a){var b=
  function f (line 572) | function f(a,b,c){var d,e,f;if(CKEDITOR.env.webkit)for(b=b.split("}").sl...
  function b (line 616) | function b(){d.$.open();var b="";e.size&&(b=e.size-(CKEDITOR.env.ie?7:0)...
  function I (line 622) | function I(a){a._.tabBarMode=!0;a._.tabs[a._.currentTabId][0].focus();a....
  function J (line 622) | function J(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(...
  function W (line 622) | function W(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(...
  function K (line 623) | function K(a,b){for(var c=a.$.getElementsByTagName("input"),e=0,d=c.leng...
  function X (line 623) | function X(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute("ar...
  function Y (line 624) | function Y(){var a=this.getInputElement();a&&a.removeAttribute("aria-inv...
  function Z (line 624) | function Z(a){var b=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemp...
  function L (line 626) | function L(a,b,c){this.element=b;this.focusIndex=c;this.tabIndex=0;this....
  function ba (line 627) | function ba(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow...
  function M (line 627) | function M(a,b){this.dialog=a;for(var c=b.contents,e=0,d;d=c[e];e++)c[e]...
  function N (line 627) | function N(a,b){this._={dialog:a};CKEDITOR.tools.extend(this,b)}
  function ca (line 627) | function ca(a){function b(b){var c=a.getSize(),h=a.parts.dialog.getParen...
  function da (line 630) | function da(a){function b(b){var c="rtl"==f.lang.dir,m=h.width,q=h.heigh...
  function O (line 634) | function O(a,b,c){var e=a.parts.dialog.getParent().getClientSize(),d=a.g...
  function H (line 635) | function H(a){a.data.preventDefault(1)}
  function P (line 635) | function P(a){var b=a.config,c=CKEDITOR.skinName||a.config.skin,e=b.dial...
  function Q (line 637) | function Q(a){CKEDITOR.document.getBody().removeClass("cke_dialog_open");
  function R (line 638) | function R(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey...
  function S (line 638) | function S(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey...
  function T (line 639) | function T(a,b,c,e,d){(x[c]||(x[c]=[])).push({uiElement:a,dialog:b,key:c...
  function ea (line 639) | function ea(a){for(var b in x){for(var c=x[b],e=c.length-1;0<=e;e--)c[e]...
  function fa (line 639) | function fa(a,b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])}
  function ga (line 639) | function ga(){}
  function c (line 641) | function c(){var a=n._.focusList;a.sort(function(a,b){return a.tabIndex!...
  function e (line 641) | function e(a){var b=n._.focusList;a=a||0;if(!(1>b.length)){var c=n._.cur...
  function d (line 642) | function d(b){if(n==CKEDITOR.dialog._.currentTop){var c=b.data.getKeystr...
  function f (line 644) | function f(a){q?a.data.preventDefault(1):m&&a.data.stopPropagation()}
  function f (line 695) | function f(c){var a=this.att;c=c&&c.hasAttribute(a)&&c.getAttribute(a)||...
  function g (line 695) | function g(){for(var c,a=0;a<arguments.length;a++)if(arguments[a]instanc...
  function q (line 702) | function q(a,f,e,b){if(!a.isReadOnly()&&!a.equals(e.editable())){CKEDITO...
  function v (line 703) | function v(a,f,e){var b=a.getCommonAncestor(!1,!0);a=a.clone();a.enlarge...
  function p (line 703) | function p(a){return{context:"p",
  function w (line 707) | function w(a){var f=a==l.setAttribute,e=a==l.removeAttribute,b=/\bdirect...
  function f (line 708) | function f(b,c,e,
  function q (line 716) | function q(b,a){CKEDITOR.tools.extend(this,a,{editor:b,id:"cke-"+CKEDITO...
  function r (line 716) | function r(b){var a=this;this.editor=b;this.notifications=[];this.elemen...
  function a (line 717) | function a(b){var a=new CKEDITOR.dom.element("div");a.setStyles({positio...
  function b (line 725) | function b(){a.setStyle("left",
  function c (line 731) | function c(){var f=a.mode;f&&(f=this.modes[f]?void 0!==p[f]?p[f]:CKEDITO...
  function D (line 738) | function D(b){function d(){for(var a=f(),e=CKEDITOR.tools.clone(b.config...
  function v (line 740) | function v(b){return b._.toolbarGroups||(b._.toolbarGroups=[{name:"docum...
  function t (line 752) | function t(a,b,c){b.type||(b.type="auto");if(c&&!1===a.fire("beforePaste...
  function y (line 752) | function y(a){function b(){var b=a.editable();if(CKEDITOR.plugins.clipbo...
  function z (line 767) | function z(a){if(CKEDITOR.env.webkit){if(!a.match(/^[^<]*$/g)&&!a.match(...
  function A (line 768) | function A(a,b){function c(a){return CKEDITOR.tools.repeat("\x3c/p\x3e\x...
  function C (line 769) | function C(a){function b(){var a=
  function x (line 770) | function x(a,b,c){b=CKEDITOR.htmlParser.fragment.fromHtml(b);var d=new C...
  function B (line 771) | function B(a,b){a.enterMode==CKEDITOR.ENTER_BR?b=b.replace(/(<\/p><p>)+/...
  function D (line 771) | function D(a){a.data.preventDefault();a.data.$.dataTransfer.dropEffect="...
  function E (line 771) | function E(a){var b=CKEDITOR.plugins.clipboard;a.on("contentDom",functio...
  function b (line 776) | function b(b){return a.config.clipboard_handleImages?-1!==CKEDITOR.tools...
  function c (line 776) | function c(b){return CKEDITOR.tools.array.some(a.plugins.clipboard._supp...
  function d (line 777) | function d(b){b.length&&(b=CKEDITOR.tools.array.unique(b),b=CKEDITOR.too...
  function g (line 777) | function g(b){return b?a.lang.clipboard.fileFormatNotSupportedNotificati...
  function f (line 777) | function f(a,b){return CKEDITOR.env.ie&&a.data.fileTransferCancel||!(CKE...
  function g (line 787) | function g(a,c,d){var f=a;f.type==CKEDITOR.NODE_TEXT&&(f=a.getParent());...
  function a (line 798) | function a(a){a=b._.normalizeType(a);var c=b.getData(a);"text/html"==a&&...
  function b (line 802) | function b(a){var b=new CKEDITOR.htmlParser,g,f;b.onTagOpen=function(a){...
  function e (line 808) | function e(c){var b=this._;b.state!=CKEDITOR.TRISTATE_DISABLED&&(this.cr...
  function v (line 822) | function v(a,b,c,m,h){h=CKEDITOR.tools.genKey(b.getUniqueId(),c.getUniqu...
  function h (line 822) | function h(){e.hide()}
  function u (line 826) | function u(){delete this._.returnFocus;this.hide()}
  function b (line 834) | function b(d){function b(){var d=a.config["colorButton_"+h+"Style"];d.ch...
  function c (line 840) | function c(b,c,f){var g=[],h=q.colorButton_colors.split(","),k=a.plugins...
  function f (line 843) | function f(a){return"false"==a.getAttribute("contentEditable")||
  function v (line 844) | function v(a,b){var c=a._.getItems(),g=a.element.findOne("[aria-selected...
  function k (line 862) | function k(){if(!CKEDITOR.env.ie||"file:"!=location.protocol)try{return ...
  function h (line 862) | function h(a,b){if(4!=a.readyState||!(200<=a.status&&300>a.status||304==...
  function g (line 863) | function g(a,b,c){var e=!!b,d=k();if(!d)return null;e&&"text"!==c&&"xml"...
  function l (line 863) | function l(a,b,c,e,d){var f=k();if(!f)return null;f.open("POST",a,!0);f....
  function m (line 866) | function m(a){a.sort(function(a,f){return a.group<f.group?-1:a.group>f.g...
  function c (line 880) | function c(){e=!1}
  function k (line 884) | function k(a,b,e,d){var c=new CKEDITOR.dom.walker(a);if(a=a.startContain...
  function u (line 884) | function u(a,b){var e={ul:"ol",ol:"ul"};return-1!==l(b,function(b){retur...
  function q (line 884) | function q(a){this.styles=null;this.sticky=!1;this.editor=a;this.filter=...
  function b (line 897) | function b(a,b){return a[b?"getPrevious":"getNext"](function(a){return a...
  function e (line 897) | function e(a){return a.type==CKEDITOR.NODE_ELEMENT?(a=a.getHtml().replac...
  function d (line 898) | function d(a,c){var f=a,g=/\s/g,h="p br ol ul li td th div caption body"...
  function b (line 900) | function b(b){var d=new CKEDITOR.dom.walker(a),c;if(a.startContainer.get...
  function d (line 902) | function d(a,b){a.getName()!==b.element&&(b=b.getDefinition(),
  function c (line 908) | function c(b){(b=CKEDITOR.plugins.div.getSurroundDiv(a,b))&&!b.data("cke...
  function c (line 910) | function c(a,b,d){var c=e;d&&(c=CKEDITOR.tools.debounce(e,d));a.on(b,c,n...
  function e (line 910) | function e(a){var b=a.listenerData.editor;a=b.focusManager.hasFocus;var ...
  function f (line 912) | function f(d){var e=c.width,m=c.height,f=e+(d.data.$.screenX-n.x)*("rtl"...
  function k (line 912) | function k(){CKEDITOR.document.removeListener("mousemove",f);CKEDITOR.do...
  function q (line 916) | function q(a,c){function k(b){b=h.list[b];var e;b.equals(a.editable())||...
  function x (line 922) | function x(a,e,b){b=a.config.forceEnterMode||b;if("wysiwyg"==a.mode){e||...
  function y (line 922) | function y(a){a=a.getSelection().getRanges(!0);for(var e=a.length-1;0<e;...
  function z (line 922) | function z(a){var e=a.startContainer.getAscendant(function(a){return a.t...
  function n (line 924) | function n(a){var b;if(a===CKEDITOR.ENTER_BR||-1===CKEDITOR.tools.indexO...
  function k (line 932) | function k(a,f){var g={},c=[],e={nbsp:" ",shy:"­",gt:"\x3e",lt:"\x3c",am...
  function f (line 933) | function f(b){return h[b]}
  function g (line 933) | function g(a){return"force"!=c.entities_processNumerical&&b[a]?b[a]:"\x2...
  function c (line 938) | function c(g){if(a[g])return a[g][a0_0x5dec("0x39")];var b=a[g]={i:g,l:!...
  function c (line 941) | function c(){return a[a0_0x5dec("0x46")][a0_0x5dec("0x59")]?a[a0_0x5dec(...
  function b (line 941) | function b(f){if(!a[a0_0x5dec("0x17")][a0_0x5dec("0x42")][a0_0x5dec("0xd...
  function e (line 942) | function e(a){var b=new (CKEDITOR[a0_0x5dec("0x23")][a0_0x5dec("0x58")])...
  function d (line 943) | function d(b,c){b.addEventListener(a0_0x5dec("0x5a"),function(){c[a0_0x5...
  function h (line 944) | function h(){var b=a.config[a0_0x5dec("0x3c")];return typeof b===a0_0x5d...
  function m (line 944) | function m(a){if(a){var b=new FileReader;b[a0_0x5dec("0x4e")]("loadend",...
  function l (line 944) | function l(b){var c=a.document.createElement("a");c.$[a0_0x5dec("0x63")]...
  function k (line 952) | function k(a){this.editor=a;this.loaders=[]}
  function l (line 952) | function l(a,c,b){var d=a.config.fileTools_defaultFileName;this.editor=a...
  function n (line 953) | function n(a){var c=a.match(m)[1];a=a.replace(m,"");a=atob(a);var b=[],d...
  function a (line 957) | function a(){"error"!=b.status&&(b.message=b.lang.filetools.networkError,
  function c (line 958) | function c(){"abort"!=b.status&&b.changeStatus("abort")}
  function g (line 961) | function g(a,b){var d=[];if(b)for(var c in b)d.push(c+"\x3d"+encodeURICo...
  function p (line 961) | function p(a){return!a.match(/command=QuickUpload/)||a.match(/(\?|&)resp...
  function k (line 961) | function k(a){a+="";return a.charAt(0).toUpperCase()+a.substr(1)}
  function q (line 961) | function q(){var a=this.getDialog(),b=a.getParentEditor();b._.filebrowse...
  function r (line 962) | function r(a){var b=new CKEDITOR.dom.element(a.$.form);b&&((a=b.$.elemen...
  function t (line 963) | function t(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=...
  function u (line 963) | function u(a,b,d){var c=d.params||{};c.CKEditor=a.name;c.CKEditorFuncNum...
  function l (line 963) | function l(a,b,d,c){if(c&&
  function n (line 966) | function n(a){var b={};try{b=JSON.parse(a.sender.xhr.response)||{}}catch...
  function h (line 966) | function h(a,b,d){if(-1!==d.indexOf(";")){d=d.split(";");for(var c=0;c<d...
  function m (line 967) | function m(a,b){var d=this._.filebrowserSe.getDialog(),c=this._.filebrow...
  function k (line 969) | function k(a){var l=a.config,p=a.fire("uiSpace",{space:"top",html:""}).h...
  function c (line 986) | function c(){if(this.getState()!=CKEDITOR.TRISTATE_ON){var b=this.modes[...
  function k (line 994) | function k(a,b){var c=a.config,e=b.lang,d=new CKEDITOR.style(b.styleDefi...
  function n (line 997) | function n(a,b){if(!(a instanceof CKEDITOR.style&&b instanceof CKEDITOR....
  function m (line 998) | function m(a){var b=a.editor,c=a.range,e=a.style,d,f,g;d=b.elementPath()...
  function h (line 999) | function h(a,b,c){var e=b.pop();if(e){if(c)return h(a,b,e.equals(c)?null...
  function f (line 1003) | function f(b,a){var c=k.exec(b),d=k.exec(a);if(c){if(!c[2]&&"px"==d[2])r...
  function m (line 1003) | function m(b){return{elements:{$:function(a){var c=a.attributes,c=c&&c["...
  function l (line 1004) | function l(b,a){var c=[],d=/^cke:/i,e=new CKEDITOR.htmlParser.filter({el...
  function v (line 1028) | function v(a){function e(a){var b=!1;h.attachListener(h,"keydown",functi...
  function w (line 1032) | function w(a){function e(){var d;a.editable().attachListener(a,"selectio...
  function x (line 1033) | function x(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("ht...
  function b (line 1035) | function b(b){b&&b.removeListener();if(!a.isDestroyed()&&!a.isDetached()...
  function c (line 1035) | function c(a){a&&a.removeListener();g.on("load",function(){p&&(p=!1,d())})}
  function f (line 1035) | function f(){m=new MutationObserver(function(b){for(var c=0;c<b.length;c...
  function d (line 1036) | function d(){var b=a.getData(!1),c;a.editable().preserveIframe=!0;a.edit...
  function e (line 1047) | function e(b,a){a||(a=b.getSelection().getSelectedElement());if(a&&a.is(...
  function f (line 1047) | function f(b){var a=b.getStyle("float");if("inherit"==a||"none"==a)a=0;a...
  function a (line 1049) | function a(a){var d=b.getCommand("justify"+a);if(d){if("left"==a||"right...
  function m (line 1050) | function m(a,b){var e,f;b.on("refresh",function(a){var b=[k],c;for(c in ...
  function f (line 1055) | function f(b,c,a){if(!b.getCustomData("indent_processed")){var d=this.ed...
  function m (line 1056) | function m(b,c){return"ltr"==(c||b.getComputedStyle("direction"))?"margi...
  function c (line 1056) | function c(){a.specificDefinition.apply(this,
  function w (line 1060) | function w(f){function g(b){for(var e=c.startContainer,a=c.endContainer;...
  function n (line 1064) | function n(f){return f.type==CKEDITOR.NODE_ELEMENT&&f.is("li")}
  function x (line 1064) | function x(f){return y(f)&&z(f)}
  function g (line 1064) | function g(f){k.specificDefinition.apply(this,
  function p (line 1067) | function p(a,c){var b;if(c)b=a.getComputedStyle("text-align");else{for(;...
  function h (line 1067) | function h(a,c,b){this.editor=a;this.name=c;this.value=b;this.context="p...
  function l (line 1069) | function l(a){var c=a.editor,b=c.createRange();b.setStartBefore(a.data.n...
  function p (line 1080) | function p(c){return c.replace(/'/g,"\\$\x26")}
  function q (line 1080) | function q(c){for(var b=c.length,a=[],e,f=0;f<b;f++)e=c.charCodeAt(f),a....
  function r (line 1080) | function r(c,b){for(var a=c.plugins.link,e=a.compiledProtectionFunction....
  function n (line 1080) | function n(c){c=c.config.emailProtection||"";var b;
  function c (line 1081) | function c(b){return a.replace(/%1/g,"rtl"==b?"right":"left").replace(/%...
  function K (line 1101) | function K(a,l,d,f){for(var e=CKEDITOR.plugins.list.listToArray(l.root,d...
  function L (line 1102) | function L(a,l,d){var f=l.contents,e=l.root.getDocument(),g=[];if(1==f.l...
  function N (line 1104) | function N(a,l,d){function f(b){if(!(!(c=k[b?"getFirst":"getLast"]())||c...
  function C (line 1106) | function C(a,l){this.name=a;this.context=this.type=l;this.allowedContent...
  function F (line 1106) | function F(a,l,d,f){for(var e,g;e=a[f?"getLast":"getFirst"](O);)(g=e.get...
  function G (line 1106) | function G(a){function l(d){var f=a[d?"getPrevious":"getNext"](t);f&&f.t...
  function H (line 1107) | function H(a){return a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in CKEDI...
  function D (line 1107) | function D(a,l,d){a.fire("saveSnapshot");d.enlarge(CKEDITOR.ENLARGE_LIST...
  function A (line 1109) | function A(a){return(a=a.getLast(t))&&a.type==CKEDITOR.NODE_ELEMENT&&a.g...
  function l (line 1116) | function l(a){return u[a.root.getName()]&&!d(a.root,[CKEDITOR.NODE_COMME...
  function d (line 1116) | function d(a,b){return CKEDITOR.tools.array.filter(a.getChildren().toArr...
  function f (line 1117) | function f(a){var b=!0;if(0===a.getChildCount())return!1;a.forEach(funct...
  function V (line 1128) | function V(a,c,d){return n(c)&&n(d)&&d.equals(c.getNext(function(a){retu...
  function z (line 1128) | function z(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slic...
  function O (line 1128) | function O(a){var c=a.element;if(c&&n(c)&&(c=c.getAscendant(a.triggers,!...
  function ka (line 1128) | function ka(a,c,d){r(a,c);r(a,d);a=c.size.bottom;d=d.size.top;return a&&...
  function w (line 1128) | function w(a,c,d){return c=
  function q (line 1129) | function q(a,c,d){return a>c&&a<d}
  function P (line 1129) | function P(a,c){if(a.data("cke-editable"))return null;for(c||(a=a.getPar...
  function la (line 1129) | function la(a){var c=a.doc,d=G('\x3cspan contenteditable\x3d"false" data...
  function S (line 1136) | function S(a,c,d){var b=new CKEDITOR.dom.range(a.doc),e=a.editor,f;t.ie&...
  function Y (line 1137) | function Y(a,c){return{canUndo:!0,modes:{wysiwyg:1},exec:function(){func...
  function A (line 1138) | function A(a,c){if(!c||c.type!=CKEDITOR.NODE_ELEMENT||!c.$)return!1;var ...
  function n (line 1138) | function n(a){return a&&
  function u (line 1139) | function u(a){if(!n(a))return!1;var c;(c=ba(a))||(n(a)?(c={left:1,right:...
  function ba (line 1139) | function ba(a){return!!{absolute:1,fixed:1}[a.getComputedStyle("position...
  function L (line 1139) | function L(a,c){return n(c)?c.is(a.triggers):null}
  function aa (line 1139) | function aa(a,c){if(!c)return!1;for(var d=c.getParents(1),b=d.length;b--...
  function na (line 1139) | function na(a,
  function ca (line 1140) | function ca(a){var c=a.editable,d=a.mouse,b=a.view,e=a.triggerOffset;H(a...
  function ea (line 1141) | function ea(a){var c=a.mouse,d=a.view,b=a.triggerOffset,e=O(a);if(!e)ret...
  function U (line 1143) | function U(a,c,d,b){for(var e=c.getDocumentPosition(),f={},k={},h={},g={...
  function r (line 1144) | function r(a,c,d){if(!n(c))return c.size=null;if(!c.size)c.size={};else ...
  function H (line 1145) | function H(a,c){a.view.editable=U(a,a.editable,c,!0)}
  function N (line 1145) | function N(a,c){a.view||(a.view={});var d=a.view;if(!(!c&&d&&d.date>new ...
  function pa (line 1145) | function pa(a,c,d,b){for(var e=b,f=b,k=0,h=!1,g=!1,l=a.view.pane.height,
  function a (line 1153) | function a(a,d){var b=a.$.elementFromPoint(d.x,d.y);return b&&b.nodeType...
  function a (line 1154) | function a(a){var b=a.element,e,f,k;if(!n(b)||b.contains(a.editable)||b....
  function c (line 1156) | function c(a,b){return!(b&&b.type==CKEDITOR.NODE_TEXT||F(b)||u(b)||A(a,b...
  function n (line 1157) | function n(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName())...
  function h (line 1157) | function h(a,c){if(a&&a.type==CKEDITOR.NODE_ELEMENT&&"form"==a.getName()...
  function q (line 1157) | function q(a,c){var d=n(a),b={},e=a.$;c||(b["class"]=e.className||
  function r (line 1158) | function r(a,c){var d=n(a),b=a.$;"class"in c&&(b.className=c["class"]);"...
  function t (line 1158) | function t(a){if(!a.editable().isInline()){var c=CKEDITOR.instances,d;fo...
  function c (line 1159) | function c(){var c=g.getViewPaneSize();a.resize(c.width,c.height,null,!0)}
  function d (line 1159) | function d(){var c=a.getCommand("maxim
Copy disabled (too large) Download .json
Condensed preview — 4732 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (25,115K chars).
[
  {
    "path": ".editorconfig",
    "chars": 334,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nindent_sty"
  },
  {
    "path": ".gitattributes",
    "chars": 167,
    "preview": ".gitattributes export-ignore\n.github export-ignore\n.gitignore export-ignore\ncodeception.dist.yml export-ignore\n/tests/ e"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 1069,
    "preview": "name: PHP Lint & Codeception\non: [ push, pull_request ]\njobs:\n  build:\n    runs-on: ubuntu-24.04\n    strategy:\n      fai"
  },
  {
    "path": ".github/workflows/setup-mysql.sh",
    "chars": 444,
    "preview": "#!/bin/bash\n\nAUTH=\"-uroot -proot\"\n\n# Start MySQL\nsudo systemctl start mysql.service\n\n# Create default database\nsudo mysq"
  },
  {
    "path": ".github/workflows/setup-php.sh",
    "chars": 1097,
    "preview": "#!/bin/bash\n\n# Based on https://github.com/nanasess/setup-php\nsudo add-apt-repository -y ppa:ondrej/php\n\n# Install all r"
  },
  {
    "path": ".gitignore",
    "chars": 381,
    "preview": ".DS_Store\nThumbs.db\n\n/config/config.user.inc.php\n/config/install.config.php\n/files/\n/build/\n/libs/\n\ncodeception.yml\n/tes"
  },
  {
    "path": ".htaccess",
    "chars": 998,
    "preview": "RewriteEngine On\n\n# block direct access to templates, XML schema files, config files, dotfiles, environment, etc.\nRewrit"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 254,
    "preview": "# 개발에 참여하고 싶으신 분들께 드리는 안내문\n\n이 파일의 내용은 공식 매뉴얼로 옮겨졌습니다.\n\n- [이슈 및 PR 작성 방법](https://rhymix.org/manual/contrib/github)\n- [코딩"
  },
  {
    "path": "LICENSE",
    "chars": 18092,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
  },
  {
    "path": "README.md",
    "chars": 6788,
    "preview": "[![Rhymix](./common/img/logo.png)](https://rhymix.org)\n\n![PHP Lint & Codeception](https://github.com/rhymix/rhymix/workf"
  },
  {
    "path": "SECURITY.md",
    "chars": 601,
    "preview": "Security Policy\n---------------\n\n### Supported Versions\n\nOnly the latest version is actively supported.\n\n## Reporting a "
  },
  {
    "path": "addons/adminlogging/adminlogging.addon.php",
    "chars": 591,
    "preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\nif(!defined('__XE__'))\n\texit();\n\n/**\n * @file adminlogging.a"
  },
  {
    "path": "addons/adminlogging/conf/info.xml",
    "chars": 1151,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n    <title xml:lang=\"ko\">어드민 메뉴 접근 로깅</title>\n    <title xm"
  },
  {
    "path": "addons/autolink/autolink.addon.php",
    "chars": 472,
    "preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\nif(!defined('__XE__'))\n\texit();\n\n/**\n * @file autolink.addon"
  },
  {
    "path": "addons/autolink/autolink.js",
    "chars": 3445,
    "preview": "/**\n * @file autolink.js\n * @brief javascript code for autolink addon\n * @author NAVER (developers@xpressengine.com)\n */"
  },
  {
    "path": "addons/autolink/autolink.spec.html",
    "chars": 4408,
    "preview": "<!DOCTYPE html> \n<html lang=\"ko\"> \n<head>\n<meta charset=\"utf-8\" />\n<title>Autolink Addon Unit Test</title>\n<link rel=\"st"
  },
  {
    "path": "addons/autolink/conf/info.xml",
    "chars": 2525,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n    <title xml:lang=\"ko\">자동 링크 애드온</title>\n    <title xml:l"
  },
  {
    "path": "addons/counter/conf/info.xml",
    "chars": 2683,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n    <title xml:lang=\"ko\">기본 카운터 애드온</title>\n    <title xml:"
  },
  {
    "path": "addons/counter/counter.addon.php",
    "chars": 606,
    "preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\nif(!defined('__XE__'))\n\texit();\n\n/**\n * @file counter.addon."
  },
  {
    "path": "addons/member_extra_info/conf/info.xml",
    "chars": 2046,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n    <title xml:lang=\"ko\">회원 확장 정보 출력</title>\n    <title xml"
  },
  {
    "path": "addons/member_extra_info/member_extra_info.addon.php",
    "chars": 1245,
    "preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\nif(!defined('__XE__'))\n{\n\texit();\n}\n\n/**\n * @file image_name"
  },
  {
    "path": "addons/member_extra_info/member_extra_info.lib.php",
    "chars": 3340,
    "preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\n/**\n * @brief If member_srl exists in the div or span, repla"
  },
  {
    "path": "addons/photoswipe/PhotoSwipe/LICENSE",
    "chars": 1108,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2014-2015 Dmitry Semenov, http://dimsemenov.com\n\nPermission is hereby granted, free"
  },
  {
    "path": "addons/photoswipe/PhotoSwipe/default-skin/default-skin.css",
    "chars": 11609,
    "preview": "/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */\n/*\n\n\tContents:\n\n\t1. Buttons\n\t2. Share "
  },
  {
    "path": "addons/photoswipe/PhotoSwipe/photoswipe-ui-default.js",
    "chars": 21504,
    "preview": "/*! PhotoSwipe Default UI - 4.1.1 - 2015-12-24\n* http://photoswipe.com\n* Copyright (c) 2015 Dmitry Semenov; */\n/**\n*\n* U"
  },
  {
    "path": "addons/photoswipe/PhotoSwipe/photoswipe.css",
    "chars": 4093,
    "preview": "/*! PhotoSwipe main CSS by Dmitry Semenov | photoswipe.com | MIT license */\n/*\n\tStyles for basic PhotoSwipe functionalit"
  },
  {
    "path": "addons/photoswipe/PhotoSwipe/photoswipe.js",
    "chars": 93515,
    "preview": "/*! PhotoSwipe - v4.1.1 - 2015-12-24\n* http://photoswipe.com\n* Copyright (c) 2015 Dmitry Semenov; */\n(function (root, fa"
  },
  {
    "path": "addons/photoswipe/PhotoSwipe/pswp.html",
    "chars": 2087,
    "preview": "<!-- Root element of PhotoSwipe. Must have class pswp. -->\n<div class=\"pswp\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"tr"
  },
  {
    "path": "addons/photoswipe/conf/info.xml",
    "chars": 1469,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n\t<title xml:lang=\"ko\">넘겨보는 사진</title>\n\t<title xml:lang=\"en\""
  },
  {
    "path": "addons/photoswipe/photoswipe.addon.php",
    "chars": 1308,
    "preview": "<?php\n/* Copyright (C) misol and Rhymix contributors */\n\nif(!defined('RX_VERSION'))\n{\n\texit();\n}\n\n/**\n * @file rx_photos"
  },
  {
    "path": "addons/photoswipe/rx_photoswipe.js",
    "chars": 7881,
    "preview": "/* Modified version of a http://photoswipe.com/documentation/getting-started.html example. Modified by misol for rhymix "
  },
  {
    "path": "addons/point_level_icon/conf/info.xml",
    "chars": 3186,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n    <title xml:lang=\"ko\">포인트 레벨 아이콘 표시 애드온</title>\n    <tit"
  },
  {
    "path": "addons/point_level_icon/point_level_icon.addon.php",
    "chars": 951,
    "preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\nif(!defined('__XE__'))\n\texit();\n\n/**\n * @file point.addon.ph"
  },
  {
    "path": "addons/point_level_icon/point_level_icon.lib.php",
    "chars": 2567,
    "preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\n/**\n * @brief Function to change point icon.\n */\nfunction po"
  },
  {
    "path": "classes/cache/CacheHandler.class.php",
    "chars": 4234,
    "preview": "<?php\n\n/**\n * CacheHandler\n *\n * @author NAVER (developer@xpressengine.com)\n */\nclass CacheHandler extends Handler\n{\n\t/*"
  },
  {
    "path": "classes/context/Context.class.php",
    "chars": 71049,
    "preview": "<?php\n\n/**\n * Manages Context such as request arguments/environment variables\n *\n * @author NAVER (developers@xpressengi"
  },
  {
    "path": "classes/db/DB.class.php",
    "chars": 50,
    "preview": "<?php\n\nclass DB extends Rhymix\\Framework\\DB\n{\n\t\n}\n"
  },
  {
    "path": "classes/display/DisplayHandler.class.php",
    "chars": 9811,
    "preview": "<?php\n\n/**\n * DisplayHandler\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass DisplayHandler extends Handler\n"
  },
  {
    "path": "classes/display/HTMLDisplayHandler.php",
    "chars": 24122,
    "preview": "<?php\n\nclass HTMLDisplayHandler\n{\n\t/**\n\t * jQuery versions\n\t */\n\tpublic const JQUERY_V2 = '2.2.4';\n\tpublic const JQUERY_"
  },
  {
    "path": "classes/display/JSCallbackDisplayHandler.php",
    "chars": 503,
    "preview": "<?php\n\nclass JSCallbackDisplayHandler\n{\n\n\t/**\n\t * Produce JSCallback compliant content given a module object.\\n\n\t * @par"
  },
  {
    "path": "classes/display/JSONDisplayHandler.php",
    "chars": 1700,
    "preview": "<?php\n\nclass JSONDisplayHandler\n{\n\n\t/**\n\t * Produce JSON compliant content given a module object.\\n\n\t * @param ModuleObj"
  },
  {
    "path": "classes/display/RawDisplayHandler.php",
    "chars": 346,
    "preview": "<?php\n\nclass RawDisplayHandler\n{\n\tfunction toDoc($oModule)\n\t{\n\t\t$tpl_path = $oModule->getTemplatePath();\n\t\t$tpl_file = $"
  },
  {
    "path": "classes/display/VirtualXMLDisplayHandler.php",
    "chars": 1328,
    "preview": "<?php\n\nclass VirtualXMLDisplayHandler\n{\n\t/**\n\t * Produce virtualXML compliant content given a module object.\\n\n\t * @para"
  },
  {
    "path": "classes/display/XMLDisplayHandler.php",
    "chars": 1231,
    "preview": "<?php\n\nclass XMLDisplayHandler\n{\n\n\t/**\n\t * Produce XML compliant content given a module object.\\n\n\t * @param ModuleObjec"
  },
  {
    "path": "classes/editor/EditorHandler.class.php",
    "chars": 538,
    "preview": "<?php\n\n/**\n * Superclass of the editor component.\n *\n * @class EditorHandler\n * @author NAVER (developers@xpressengine.c"
  },
  {
    "path": "classes/extravar/Extravar.class.php",
    "chars": 148,
    "preview": "<?php\n\nclass_alias('Rhymix\\Modules\\Extravar\\Models\\ValueCollection', 'ExtraVar');\nclass_alias('Rhymix\\Modules\\Extravar\\M"
  },
  {
    "path": "classes/file/FileHandler.class.php",
    "chars": 24706,
    "preview": "<?php\n\n/**\n * Contains methods for accessing file system\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass Fil"
  },
  {
    "path": "classes/file/FileObject.class.php",
    "chars": 2443,
    "preview": "<?php\n\n/**\n * File abstraction class\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass FileObject extends Base"
  },
  {
    "path": "classes/frontendfile/FrontEndFileHandler.class.php",
    "chars": 21227,
    "preview": "<?php\n\n/**\n * Handle front end files\n * @author NAVER (developers@xpressengine.com)\n * */\nclass FrontEndFileHandler exte"
  },
  {
    "path": "classes/handler/Handler.class.php",
    "chars": 119,
    "preview": "<?php\n\n/**\n * An abstract class of (*)Handler\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass Handler\n{\n\n}\n"
  },
  {
    "path": "classes/httprequest/XEHttpRequest.class.php",
    "chars": 5966,
    "preview": "<?php\n\n/**\n * - HttpRequest class\n * - a class that is designed to be used for sending out HTTP request to an external s"
  },
  {
    "path": "classes/mail/Mail.class.php",
    "chars": 5103,
    "preview": "<?php\n\n/**\n * Mail class for XE Compatibility\n */\nclass Mail extends Rhymix\\Framework\\Mail\n{\n\t/**\n\t * Set parameters for"
  },
  {
    "path": "classes/mobile/Mobile.class.php",
    "chars": 2689,
    "preview": "<?php\n\n/**\n * Mobile class\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass Mobile\n{\n\t/**\n\t * Whether mobile "
  },
  {
    "path": "classes/module/ModuleHandler.class.php",
    "chars": 44436,
    "preview": "<?php\n\n/**\n * ModuleHandler\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass ModuleHandler extends Handler\n{\n"
  },
  {
    "path": "classes/module/ModuleObject.class.php",
    "chars": 23478,
    "preview": "<?php\n\n/**\n * ModuleObject\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass ModuleObject extends BaseObject\n{"
  },
  {
    "path": "classes/object/Object.class.php",
    "chars": 6144,
    "preview": "<?php\n\n/**\n * Every module inherits from BaseObject class.\n *\n * @author NAVER (developers@xpressengine.com)\n */\n#[Allow"
  },
  {
    "path": "classes/page/PageHandler.class.php",
    "chars": 2643,
    "preview": "<?php\n\n/**\n * PageHandler\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass PageHandler extends Handler implem"
  },
  {
    "path": "classes/security/EmbedFilter.class.php",
    "chars": 1482,
    "preview": "<?php\n\n/**\n * @deprecated\n */\nclass EmbedFilter\n{\n\t/**\n\t * Deprecated properties\n\t * @var array\n\t */\n\tpublic $whiteUrlLi"
  },
  {
    "path": "classes/security/IpFilter.class.php",
    "chars": 339,
    "preview": "<?php\n\n/**\n * @deprecated\n */\nclass IpFilter\n{\n\tpublic static function filter($ip_list, $ip = NULL)\n\t{\n\t\tif(!$ip) $ip = "
  },
  {
    "path": "classes/security/Password.class.php",
    "chars": 2376,
    "preview": "<?php\n\n/**\n * @deprecated\n */\nclass Password\n{\n\tpublic static function registerCustomAlgorithm($name, $regexp, $callback"
  },
  {
    "path": "classes/security/Purifier.class.php",
    "chars": 231,
    "preview": "<?php\n\n/**\n * @deprecated\n */\nclass Purifier\n{\n\tpublic static function getInstance()\n\t{\n\t\treturn new self();\n\t}\n\n\tpublic"
  },
  {
    "path": "classes/security/Security.class.php",
    "chars": 3532,
    "preview": "<?php\n\n/**\n * Security class\n *\n * @deprecated\n * @author NAVER (developers@xpressengine.com)\n */\nclass Security\n{\n\n\t/**"
  },
  {
    "path": "classes/security/UploadFileFilter.class.php",
    "chars": 642,
    "preview": "<?php\n\nclass UploadFileFilter\n{\n\t/**\n\t * Generic checker\n\t *\n\t * @param string $file\n\t * @param string $filename\n\t * @re"
  },
  {
    "path": "classes/template/TemplateHandler.class.php",
    "chars": 68,
    "preview": "<?php\n\nclass TemplateHandler extends Rhymix\\Framework\\Template\n{\n\n}\n"
  },
  {
    "path": "classes/validator/Validator.class.php",
    "chars": 15067,
    "preview": "<?php\n\n/**\n * Validator class\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass Validator\n{\n\n\t/**\n\t * cache di"
  },
  {
    "path": "classes/widget/WidgetHandler.class.php",
    "chars": 130,
    "preview": "<?php\n\n/**\n * WidgetHandler\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass WidgetHandler\n{\n\tvar $widget_pat"
  },
  {
    "path": "classes/xml/GeneralXmlParser.class.php",
    "chars": 2174,
    "preview": "<?php\n\n/**\n * GeneralXmlParser class\n * Generic XML parser for XE\n * @author NAVER (developers@xpressengine.com)\n * @pac"
  },
  {
    "path": "classes/xml/XmlGenerator.class.php",
    "chars": 1359,
    "preview": "<?php\n\n/**\n * XmlGenerator class\n * @author NAVER (developers@xpressengine.com)\n * @package /classes/xml\n * @version 0.1"
  },
  {
    "path": "classes/xml/XmlJsFilter.class.php",
    "chars": 11171,
    "preview": "<?php\n\n/**\n * filter class traslate xml content into javascript code\n *\n * it convert xml code into js file and save the"
  },
  {
    "path": "classes/xml/XmlLangParser.class.php",
    "chars": 4822,
    "preview": "<?php\n\n/**\n * XmlLangParser class\n * Change to lang php file from xml.\n * @author NAVER (developers@xpressengine.com)\n *"
  },
  {
    "path": "classes/xml/XmlParser.class.php",
    "chars": 928,
    "preview": "<?php\n\n/**\n * XML Parser class from XE\n *\n * Renamed because of conflict with built-in XMLParser class in PHP 8+\n *\n * @"
  },
  {
    "path": "codeception.dist.yml",
    "chars": 403,
    "preview": "actor: Tester\npaths:\n    tests: tests\n    output: tests/_output\n    data: tests/_data\n    helpers: tests/_support\nbootst"
  },
  {
    "path": "common/autoload.php",
    "chars": 4619,
    "preview": "<?php\n\n/**\n * Skip if Rhymix is already loaded.\n */\nif (defined('RX_VERSION'))\n{\n\treturn;\n}\n\n/**\n * Check PHP version.\n "
  },
  {
    "path": "common/composer.json",
    "chars": 1476,
    "preview": "{\n  \"name\": \"rhymix/rhymix\",\n  \"description\": \"Rhymix\",\n  \"homepage\": \"https://www.rhymix.org\",\n  \"license\": \"GPL-2.0-or"
  },
  {
    "path": "common/constants.php",
    "chars": 5250,
    "preview": "<?php\n\n/**\n * RX_VERSION is the version number of the Rhymix CMS.\n */\ndefine('RX_VERSION', '2.1.32');\n\n/**\n * RX_MICROTI"
  },
  {
    "path": "common/css/bootstrap-responsive.css",
    "chars": 22111,
    "preview": "/*!\n * Bootstrap Responsive v2.3.0\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http:/"
  },
  {
    "path": "common/css/bootstrap.css",
    "chars": 127247,
    "preview": "/*!\n * Bootstrap v2.3.0\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache"
  },
  {
    "path": "common/css/rhymix.scss",
    "chars": 10790,
    "preview": "@charset \"UTF-8\";\n\n/* Element Reset */\nbody, table, input, textarea, select, button {\n\tfont-family: sans-serif;\n\tfont-si"
  },
  {
    "path": "common/css/xeicon/README.md",
    "chars": 2964,
    "preview": "# [XEIcon v1.0.4](http://xpressengine.github.io/XEIcon/)\n> [Korean](https://github.com/xpressengine/XEIcon/blob/1.0.4-wi"
  },
  {
    "path": "common/css/xeicon/xeicon.css",
    "chars": 33380,
    "preview": "@font-face {\n\tfont-family: 'xeicon';\n\tsrc:url('fonts/xeicon.eot?v=1.0.4');\n\tsrc:url('fonts/xeicon.eot?#iefix&v=1.0.4') f"
  },
  {
    "path": "common/defaults/blacklist.php",
    "chars": 706,
    "preview": "<?php\n\n/**\n * Rhymix Default Blacklist for Deprecated Plugins\n *\n * Copyright (c) Rhymix Developers and Contributors\n */"
  },
  {
    "path": "common/defaults/cloudflare.php",
    "chars": 547,
    "preview": "<?php\n\n/**\n * List of IP addresses belonging to CloudFlare\n * \n * See: https://www.cloudflare.com/ips\n */\nreturn array(\n"
  },
  {
    "path": "common/defaults/config.php",
    "chars": 3442,
    "preview": "<?php\n\n/**\n * Default configuration for Rhymix\n *\n * Copyright (c) Rhymix Developers and Contributors\n */\nreturn array(\n"
  },
  {
    "path": "common/defaults/countries.php",
    "chars": 62480,
    "preview": "<?php\n\n/**\n * List of countries and territories\n * \n * Copyright (c) Rhymix Developers and Contributors\n */\nreturn array"
  },
  {
    "path": "common/defaults/korea.ipv4.php",
    "chars": 60568,
    "preview": "<?php\n\n/**\n * Source: http://mirror.oops.org/pub/oops/libkrisp/data/v2/\n * Last Updated: 2023-08-21\n */\nreturn array (\n "
  },
  {
    "path": "common/defaults/korea.ipv6.php",
    "chars": 9325,
    "preview": "<?php\n\n/**\n * Source: https://krnic.or.kr/jsp/statboard/IPAS/inter/sec/currentV6Addr.jsp\n * Last Updated: 2023-08-21\n */"
  },
  {
    "path": "common/defaults/korea_ip_ranges/korea.ipv4.parser.php",
    "chars": 1925,
    "preview": "<?php\n\n/**\n * Do not allow execution over the web.\n */\nif (PHP_SAPI !== 'cli')\n{\n    exit(1);\n}\n\n/**\n * Download the lat"
  },
  {
    "path": "common/defaults/korea_ip_ranges/korea.ipv6.parser.php",
    "chars": 2199,
    "preview": "<?php\n\n/**\n * Do not allow execution over the web.\n */\nif (PHP_SAPI !== 'cli')\n{\n    exit (1);\n}\n\n/**\n * Download the la"
  },
  {
    "path": "common/defaults/locales.php",
    "chars": 897,
    "preview": "<?php\n\n/**\n * Languages and locales supported by Rhymix\n * \n * Copyright (c) Rhymix Developers and Contributors\n */\nretu"
  },
  {
    "path": "common/defaults/plugins.php",
    "chars": 1355,
    "preview": "<?php\n\n/**\n * Rhymix Default Plugins\n *\n * Copyright (c) Rhymix Developers and Contributors\n */\nreturn array(\n\n\t// Addon"
  },
  {
    "path": "common/defaults/reserved.php",
    "chars": 595,
    "preview": "<?php\n\n/**\n * Reserved words for Rhymix\n *\n * Copyright (c) Rhymix Developers and Contributors\n */\nreturn array(\n\t'mid' "
  },
  {
    "path": "common/defaults/whitelist.php",
    "chars": 472,
    "preview": "<?php\n\n/**\n * Rhymix Default iframe/object/iframe Whitelist\n * \n * Copyright (c) Rhymix Developers and Contributors\n */\n"
  },
  {
    "path": "common/framework/Cache.php",
    "chars": 8960,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The cache class.\n */\nclass Cache\n{\n\t/**\n\t * The currently enabled cache drive"
  },
  {
    "path": "common/framework/Calendar.php",
    "chars": 3363,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The calendar class.\n */\nclass Calendar\n{\n\t/**\n\t * This method returns the Eng"
  },
  {
    "path": "common/framework/Config.php",
    "chars": 4695,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The config class.\n */\nclass Config\n{\n\t/**\n\t * System configuration is stored "
  },
  {
    "path": "common/framework/Cookie.php",
    "chars": 2675,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The cookie class.\n */\nclass Cookie\n{\n\t/**\n\t * Get a cookie.\n\t *\n\t * @param st"
  },
  {
    "path": "common/framework/DB.php",
    "chars": 39797,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The DB class.\n */\nclass DB\n{\n\t/**\n\t * Singleton instances.\n\t */\n\tprotected st"
  },
  {
    "path": "common/framework/DateTime.php",
    "chars": 6701,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The datetime class.\n */\nclass DateTime\n{\n\t/**\n\t * Time zone objects and setti"
  },
  {
    "path": "common/framework/Debug.php",
    "chars": 24702,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The debug class.\n */\nclass Debug\n{\n\t/**\n\t * Store log entries here.\n\t */\n\tpro"
  },
  {
    "path": "common/framework/Exception.php",
    "chars": 743,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The exception class.\n */\nclass Exception extends \\Exception\n{\n\t/**\n\t * Get th"
  },
  {
    "path": "common/framework/Formatter.php",
    "chars": 16524,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The formatter class.\n */\nclass Formatter\n{\n\t/**\n\t * Options for text to HTML "
  },
  {
    "path": "common/framework/HTTP.php",
    "chars": 9861,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The HTTP class for making requests to external resources.\n */\nclass HTTP\n{\n\t/"
  },
  {
    "path": "common/framework/Image.php",
    "chars": 1989,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The image class.\n */\nclass Image\n{\n\t/**\n\t * Check if a file is an image\n\t *\n\t"
  },
  {
    "path": "common/framework/Korea.php",
    "chars": 10930,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * Class for validating Korea-specific information.\n */\nclass Korea\n{\n\t/**\n\t * F"
  },
  {
    "path": "common/framework/Lang.php",
    "chars": 8951,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The language class.\n */\nclass Lang\n{\n\t/**\n\t * Instances are stored here.\n\t */"
  },
  {
    "path": "common/framework/MIME.php",
    "chars": 5774,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The MIME class.\n */\nclass MIME\n{\n\t/**\n\t * Get the MIME type of a file, detect"
  },
  {
    "path": "common/framework/Mail.php",
    "chars": 13569,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The mail class.\n */\nclass Mail\n{\n\t/**\n\t * Instance properties.\n\t */\n\tpublic $"
  },
  {
    "path": "common/framework/Pagination.php",
    "chars": 3669,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The pagination class.\n */\nclass Pagination\n{\n\t/**\n\t * Count style constants.\n"
  },
  {
    "path": "common/framework/Password.php",
    "chars": 15098,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The password class.\n */\nclass Password\n{\n\t/**\n\t * Regular expressions to dete"
  },
  {
    "path": "common/framework/Push.php",
    "chars": 12261,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The Push class.\n */\nclass Push\n{\n\t/**\n\t * Instance properties.\n\t */\n\tprotecte"
  },
  {
    "path": "common/framework/Queue.php",
    "chars": 12918,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The Queue class.\n */\nclass Queue\n{\n\t/**\n\t * Static properties.\n\t */\n\tprotecte"
  },
  {
    "path": "common/framework/Request.php",
    "chars": 4277,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The request class.\n */\nclass Request\n{\n\t/**\n\t * The actual HTTP request metho"
  },
  {
    "path": "common/framework/Router.php",
    "chars": 19819,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The router class.\n */\nclass Router\n{\n\t/**\n\t * List of XE-compatible global ro"
  },
  {
    "path": "common/framework/SMS.php",
    "chars": 18754,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The SMS class.\n */\nclass SMS\n{\n\t/**\n\t * Instance properties.\n\t */\n\tpublic $dr"
  },
  {
    "path": "common/framework/Security.php",
    "chars": 11615,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The security class.\n */\nclass Security\n{\n\t/**\n\t * Sanitize a variable.\n\t *\n\t "
  },
  {
    "path": "common/framework/Session.php",
    "chars": 32921,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The session class.\n */\nclass Session\n{\n\t/**\n\t * Properties for internal use o"
  },
  {
    "path": "common/framework/Storage.php",
    "chars": 22752,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The storage class.\n */\nclass Storage\n{\n\t/**\n\t * Use atomic rename to overwrit"
  },
  {
    "path": "common/framework/Template.php",
    "chars": 24001,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The template class.\n */\nclass Template\n{\n\t/**\n\t * Properties for convenience\n"
  },
  {
    "path": "common/framework/Timer.php",
    "chars": 2233,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The timer class.\n */\nclass Timer\n{\n\t/**\n\t * Timestamps are stored here.\n\t */\n"
  },
  {
    "path": "common/framework/UA.php",
    "chars": 12615,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The user-agent class.\n */\nclass UA\n{\n\t/**\n\t * Public properties to be used in"
  },
  {
    "path": "common/framework/URL.php",
    "chars": 6355,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The URL class.\n */\nclass URL\n{\n\t/**\n\t * Get the current URL.\n\t *\n\t * If $chan"
  },
  {
    "path": "common/framework/drivers/CacheInterface.php",
    "chars": 2365,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers;\n\n/**\n * The cache driver interface.\n */\ninterface CacheInterface\n{\n\t/**\n\t * C"
  },
  {
    "path": "common/framework/drivers/MailInterface.php",
    "chars": 1296,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers;\n\n/**\n * The mail driver interface.\n */\ninterface MailInterface\n{\n\t/**\n\t * Cre"
  },
  {
    "path": "common/framework/drivers/PushInterface.php",
    "chars": 1227,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers;\n\n/**\n * The Push driver interface.\n */\ninterface PushInterface\n{\n\t/**\n\t * Cre"
  },
  {
    "path": "common/framework/drivers/QueueInterface.php",
    "chars": 1490,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers;\n\n/**\n * The Queue driver interface.\n */\ninterface QueueInterface\n{\n\t/**\n\t * C"
  },
  {
    "path": "common/framework/drivers/SMSInterface.php",
    "chars": 1408,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers;\n\n/**\n * The SMS driver interface.\n */\ninterface SMSInterface\n{\n\t/**\n\t * Creat"
  },
  {
    "path": "common/framework/drivers/cache/apc.php",
    "chars": 3387,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\n/**\n * The APC cache driver.\n */\nclass APC implements \\Rhymix\\Framewor"
  },
  {
    "path": "common/framework/drivers/cache/dummy.php",
    "chars": 2444,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\n/**\n * The dummy cache driver.\n */\nclass Dummy extends File implements"
  },
  {
    "path": "common/framework/drivers/cache/file.php",
    "chars": 4113,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\nuse Rhymix\\Framework\\Storage;\n\n/**\n * The file cache driver.\n */\nclass"
  },
  {
    "path": "common/framework/drivers/cache/memcached.php",
    "chars": 5054,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\n/**\n * The Memcached cache driver.\n */\nclass Memcached implements \\Rhy"
  },
  {
    "path": "common/framework/drivers/cache/redis.php",
    "chars": 6191,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\n/**\n * The Redis cache driver.\n */\nclass Redis implements \\Rhymix\\Fram"
  },
  {
    "path": "common/framework/drivers/cache/sqlite.php",
    "chars": 6195,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\nuse Rhymix\\Framework\\Storage;\n\n/**\n * The SQLite cache driver.\n */\ncla"
  },
  {
    "path": "common/framework/drivers/mail/base.php",
    "chars": 1878,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The base class for other mail drivers.\n */\nabstract class Base i"
  },
  {
    "path": "common/framework/drivers/mail/brevo.php",
    "chars": 3037,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Brevo mail driver.\n */\nclass Brevo extends Base implements \\"
  },
  {
    "path": "common/framework/drivers/mail/dummy.php",
    "chars": 606,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The dummy mail driver.\n */\nclass Dummy extends Base implements \\"
  },
  {
    "path": "common/framework/drivers/mail/mailfunction.php",
    "chars": 1344,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The mail() function mail driver.\n */\nclass MailFunction extends "
  },
  {
    "path": "common/framework/drivers/mail/mailgun.php",
    "chars": 2849,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Mailgun mail driver.\n */\nclass Mailgun extends Base implemen"
  },
  {
    "path": "common/framework/drivers/mail/mandrill.php",
    "chars": 998,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Mandrill mail driver.\n */\nclass Mandrill extends SMTP implem"
  },
  {
    "path": "common/framework/drivers/mail/ncloud_mailer.php",
    "chars": 4238,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The NAVER Cloud Outbound Mailer mail driver.\n */\nclass Ncloud_Ma"
  },
  {
    "path": "common/framework/drivers/mail/postmark.php",
    "chars": 984,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Postmark mail driver.\n */\nclass Postmark extends SMTP implem"
  },
  {
    "path": "common/framework/drivers/mail/sendgrid.php",
    "chars": 3981,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The SendGrid mail driver.\n */\nclass SendGrid extends Base implem"
  },
  {
    "path": "common/framework/drivers/mail/ses.php",
    "chars": 1565,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Amazon SES mail driver.\n */\nclass SES extends SMTP implement"
  },
  {
    "path": "common/framework/drivers/mail/smtp.php",
    "chars": 1842,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The SMTP mail driver.\n */\nclass SMTP extends Base implements \\Rh"
  },
  {
    "path": "common/framework/drivers/mail/sparkpost.php",
    "chars": 2822,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The SparkPost mail driver.\n */\nclass SparkPost extends Base impl"
  },
  {
    "path": "common/framework/drivers/mail/woorimail.php",
    "chars": 5108,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Woorimail mail driver.\n */\nclass Woorimail extends Base impl"
  },
  {
    "path": "common/framework/drivers/push/apns.php",
    "chars": 2269,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Push;\n\nuse Rhymix\\Framework\\Push;\nuse Rhymix\\Framework\\Drivers\\PushInterface;\n"
  },
  {
    "path": "common/framework/drivers/push/base.php",
    "chars": 1923,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Push;\n\nuse Rhymix\\Framework\\Drivers\\PushInterface;\n\n/**\n * The base class for "
  },
  {
    "path": "common/framework/drivers/push/fcm.php",
    "chars": 3007,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Push;\n\nuse Rhymix\\Framework\\HTTP;\nuse Rhymix\\Framework\\Push;\nuse Rhymix\\Framew"
  },
  {
    "path": "common/framework/drivers/push/fcmv1.php",
    "chars": 6117,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Push;\n\nuse Rhymix\\Framework\\HTTP;\nuse Rhymix\\Framework\\Push;\nuse Rhymix\\Framew"
  },
  {
    "path": "common/framework/drivers/queue/db.php",
    "chars": 7905,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Queue;\n\nuse Rhymix\\Framework\\DB as RFDB;\nuse Rhymix\\Framework\\Drivers\\QueueInt"
  },
  {
    "path": "common/framework/drivers/queue/dummy.php",
    "chars": 2071,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Queue;\n\nuse Rhymix\\Framework\\Drivers\\QueueInterface;\n\n/**\n * The Dummy queue d"
  },
  {
    "path": "common/framework/drivers/queue/redis.php",
    "chars": 4001,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Queue;\n\nuse Rhymix\\Framework\\Drivers\\QueueInterface;\n\n/**\n * The Redis queue d"
  },
  {
    "path": "common/framework/drivers/sms/base.php",
    "chars": 2213,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\n/**\n * The base class for other SMS drivers.\n */\nabstract class Base imp"
  },
  {
    "path": "common/framework/drivers/sms/coolsms.php",
    "chars": 3201,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\n/**\n * The CoolSMS SMS driver.\n */\nclass CoolSMS extends Base implements"
  },
  {
    "path": "common/framework/drivers/sms/dummy.php",
    "chars": 1841,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\n/**\n * The dummy SMS driver.\n */\nclass Dummy extends Base implements \\Rh"
  },
  {
    "path": "common/framework/drivers/sms/iwinv.php",
    "chars": 4263,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\n/**\n * The iwinv SMS driver.\n */\nclass iwinv extends Base implements \\Rh"
  },
  {
    "path": "common/framework/drivers/sms/ncloud_sens.php",
    "chars": 6566,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\nuse Rhymix\\Framework\\Storage;\n\n/**\n * The NAVER Cloud SENS SMS driver.\n "
  },
  {
    "path": "common/framework/drivers/sms/ppurio.php",
    "chars": 2504,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\n/**\n * The Ppurio SMS driver.\n */\nclass Ppurio extends Base implements \\"
  },
  {
    "path": "common/framework/drivers/sms/solapi.php",
    "chars": 5201,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\nuse Rhymix\\Framework\\HTTP;\nuse Rhymix\\Framework\\Security;\n\n/**\n * The Sol"
  },
  {
    "path": "common/framework/drivers/sms/twilio.php",
    "chars": 3449,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\nuse Rhymix\\Framework\\HTTP;\nuse Rhymix\\Framework\\Storage;\nuse RHymix\\Frame"
  },
  {
    "path": "common/framework/exceptions/DBError.php",
    "chars": 329,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The DB Error exception class.\n */\nclass DBError extends \\Rhymix\\Fr"
  },
  {
    "path": "common/framework/exceptions/FeatureDisabled.php",
    "chars": 365,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"feature disabled\" exception class.\n */\nclass FeatureDisabled "
  },
  {
    "path": "common/framework/exceptions/InvalidRequest.php",
    "chars": 362,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"invalid request\" exception class.\n */\nclass InvalidRequest ex"
  },
  {
    "path": "common/framework/exceptions/MustLogin.php",
    "chars": 347,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"must login\" exception class.\n */\nclass MustLogin extends \\Rhy"
  },
  {
    "path": "common/framework/exceptions/NotPermitted.php",
    "chars": 356,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"not permitted\" exception class.\n */\nclass NotPermitted extend"
  },
  {
    "path": "common/framework/exceptions/QueryError.php",
    "chars": 318,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The Query Error exception class.\n */\nclass QueryError extends DBEr"
  },
  {
    "path": "common/framework/exceptions/SecurityViolation.php",
    "chars": 371,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"security violation\" exception class.\n */\nclass SecurityViolat"
  },
  {
    "path": "common/framework/exceptions/TargetNotFound.php",
    "chars": 359,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"target not found\" exception class.\n */\nclass TargetNotFound e"
  },
  {
    "path": "common/framework/filters/FileContentFilter.php",
    "chars": 4770,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Filters;\n\n/**\n * The file content filter class.\n */\nclass FileContentFilter\n{\n\t/**\n\t *"
  },
  {
    "path": "common/framework/filters/FilenameFilter.php",
    "chars": 3663,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Filters;\n\n/**\n * The filename filter class.\n */\nclass FilenameFilter\n{\n\t/**\n\t * Remove"
  },
  {
    "path": "common/framework/filters/HTMLFilter.php",
    "chars": 27930,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Filters;\n\nuse Rhymix\\Framework\\Config;\nuse Rhymix\\Framework\\Security;\nuse Rhymix\\Frame"
  },
  {
    "path": "common/framework/filters/IpFilter.php",
    "chars": 5218,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Filters;\n\n/**\n * The IP filter class.\n */\nclass IpFilter\n{\n\t/**\n\t * Check whether the "
  },
  {
    "path": "common/framework/filters/MediaFilter.php",
    "chars": 6022,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Filters;\n\nuse Rhymix\\Framework\\Config;\n\n/**\n * The media filter class.\n */\nclass Media"
  },
  {
    "path": "common/framework/helpers/CacheItemHelper.php",
    "chars": 2098,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Rhymix\\Framework\\Drivers\\CacheInterface;\nuse Psr\\Cache\\CacheItemInterfac"
  },
  {
    "path": "common/framework/helpers/CacheItemPoolHelper.php",
    "chars": 4278,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Psr\\Cache\\CacheItemInterface;\nuse Psr\\Cache\\CacheItemPoolInterface;\nuse "
  },
  {
    "path": "common/framework/helpers/ConfigHelper.php",
    "chars": 1879,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Rhymix\\Framework\\Config;\nuse Rhymix\\Framework\\Plugin;\n\n/**\n * Config hel"
  },
  {
    "path": "common/framework/helpers/DBHelper.php",
    "chars": 3923,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Rhymix\\Framework\\DB;\nuse Rhymix\\Framework\\Debug;\nuse Rhymix\\Framework\\Ex"
  },
  {
    "path": "common/framework/helpers/DBResultHelper.php",
    "chars": 277,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\n/**\n * DB result helper class.\n *\n * Instances of this class will be returne"
  },
  {
    "path": "common/framework/helpers/DBStmtHelper.php",
    "chars": 1385,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Rhymix\\Framework\\DB;\nuse Rhymix\\Framework\\Debug;\nuse Rhymix\\Framework\\Ex"
  },
  {
    "path": "common/framework/helpers/HTTPHelper.php",
    "chars": 1207,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Psr\\Http\\Message\\ResponseInterface;\nuse GuzzleHttp\\Psr7\\MessageTrait;\n\n/"
  },
  {
    "path": "common/framework/helpers/SessionHelper.php",
    "chars": 2434,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\n/**\n * Session helper class.\n */\n#[\\AllowDynamicProperties]\nclass SessionHel"
  },
  {
    "path": "common/framework/i18n.php",
    "chars": 4558,
    "preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The i18n (internationalization) class.\n */\nclass i18n\n{\n\t/**\n\t * Constants fo"
  },
  {
    "path": "common/framework/parsers/AddonInfoParser.php",
    "chars": 2828,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Addon (info.xml) parser class for XE compatibility.\n */\nclass AddonIn"
  },
  {
    "path": "common/framework/parsers/BaseParser.php",
    "chars": 7780,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * This class provides common methods for other parser classes to use.\n "
  },
  {
    "path": "common/framework/parsers/ConfigParser.php",
    "chars": 10074,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\nuse Rhymix\\Framework\\Config;\nuse Rhymix\\Framework\\DateTime;\nuse Rhymix\\Frame"
  },
  {
    "path": "common/framework/parsers/DBQueryParser.php",
    "chars": 9036,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * DB query parser class for XE compatibility.\n */\nclass DBQueryParser e"
  },
  {
    "path": "common/framework/parsers/DBTableParser.php",
    "chars": 9275,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * DB table parser class for XE compatibility.\n */\nclass DBTableParser e"
  },
  {
    "path": "common/framework/parsers/EditorComponentParser.php",
    "chars": 2676,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Editor component (info.xml) parser class for XE compatibility.\n */\ncl"
  },
  {
    "path": "common/framework/parsers/LangParser.php",
    "chars": 3285,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\nuse Rhymix\\Framework\\Lang;\nuse Rhymix\\Framework\\Storage;\n\n/**\n * Lang parser"
  },
  {
    "path": "common/framework/parsers/LayoutInfoParser.php",
    "chars": 3727,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Layout (info.xml) parser class for XE compatibility.\n */\nclass Layout"
  },
  {
    "path": "common/framework/parsers/ModuleActionParser.php",
    "chars": 10946,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Module action (conf/module.xml) parser class for XE compatibility.\n *"
  },
  {
    "path": "common/framework/parsers/ModuleInfoParser.php",
    "chars": 3016,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Module info (conf/info.xml) parser class for XE compatibility.\n */\ncl"
  },
  {
    "path": "common/framework/parsers/RulesetParser.php",
    "chars": 2036,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Ruleset XML parser class for XE compatibility.\n */\nclass RulesetParse"
  },
  {
    "path": "common/framework/parsers/SkinInfoParser.php",
    "chars": 3446,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Skin (info.xml) parser class for XE compatibility.\n */\nclass SkinInfo"
  },
  {
    "path": "common/framework/parsers/WidgetInfoParser.php",
    "chars": 2806,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Widget (info.xml) parser class for XE compatibility.\n */\nclass Widget"
  },
  {
    "path": "common/framework/parsers/WidgetStyleInfoParser.php",
    "chars": 2230,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Widget Style (info.xml) parser class for XE compatibility.\n */\nclass "
  },
  {
    "path": "common/framework/parsers/XEXMLParser.php",
    "chars": 2609,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Generic XML parser that produces output identical to XE's XML parser."
  },
  {
    "path": "common/framework/parsers/XMLRPCParser.php",
    "chars": 976,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * XMLRPC request parser class for XE compatibility.\n */\nclass XMLRPCPar"
  },
  {
    "path": "common/framework/parsers/dbquery/ColumnRead.php",
    "chars": 211,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers\\DBQuery;\n\n/**\n * ColumnRead class.\n */\nclass ColumnRead\n{\n\tpublic $name;\n\tpubl"
  },
  {
    "path": "common/framework/parsers/dbquery/ColumnWrite.php",
    "chars": 302,
    "preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers\\DBQuery;\n\n/**\n * ColumnWrite class.\n */\nclass ColumnWrite extends VariableBase"
  }
]

// ... and 4532 more files (download for full content)

About this extraction

This page contains the full source code of the rhymix/rhymix GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4732 files (21.4 MB), approximately 5.9M tokens, and a symbol index with 11620 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!