├── .gitignore
├── .htaccess
├── INSTALL.md
├── README.md
├── clients
├── client.tgz
└── scanlab
│ ├── api_example.py
│ ├── config.py
│ ├── passwords.txt
│ ├── requirements.txt
│ ├── scanlab_cli.py
│ └── users.txt
├── css
└── scanlab.css
├── images
├── bg1.jpg
├── icons
│ ├── dislike.png
│ └── like.png
├── network.jpg
├── png
│ ├── .DS_Store
│ ├── a1.png
│ ├── a2.png
│ ├── ad.png
│ ├── ae.png
│ ├── af.png
│ ├── ag.png
│ ├── ai.png
│ ├── al.png
│ ├── am.png
│ ├── an.png
│ ├── ao.png
│ ├── aq.png
│ ├── ar.png
│ ├── as.png
│ ├── at.png
│ ├── au.png
│ ├── aw.png
│ ├── ax.png
│ ├── az.png
│ ├── ba.png
│ ├── bb.png
│ ├── bd.png
│ ├── be.png
│ ├── bf.png
│ ├── bg.png
│ ├── bh.png
│ ├── bi.png
│ ├── bj.png
│ ├── bm.png
│ ├── bn.png
│ ├── bo.png
│ ├── br.png
│ ├── bs.png
│ ├── bt.png
│ ├── bv.png
│ ├── bw.png
│ ├── by.png
│ ├── bz.png
│ ├── ca.png
│ ├── catalonia.png
│ ├── cc.png
│ ├── cd.png
│ ├── cf.png
│ ├── cg.png
│ ├── ch.png
│ ├── ci.png
│ ├── ck.png
│ ├── cl.png
│ ├── cm.png
│ ├── cn.png
│ ├── co.png
│ ├── cr.png
│ ├── cs.png
│ ├── cu.png
│ ├── cv.png
│ ├── cx.png
│ ├── cy.png
│ ├── cz.png
│ ├── de.png
│ ├── dj.png
│ ├── dk.png
│ ├── dm.png
│ ├── do.png
│ ├── dz.png
│ ├── ec.png
│ ├── ee.png
│ ├── eg.png
│ ├── eh.png
│ ├── england.png
│ ├── er.png
│ ├── es.png
│ ├── et.png
│ ├── eu.png
│ ├── europeanunion.png
│ ├── fam.png
│ ├── fi.png
│ ├── fj.png
│ ├── fk.png
│ ├── fm.png
│ ├── fo.png
│ ├── fr.png
│ ├── ga.png
│ ├── gb.png
│ ├── gd.png
│ ├── ge.png
│ ├── gf.png
│ ├── gh.png
│ ├── gi.png
│ ├── gl.png
│ ├── gm.png
│ ├── gn.png
│ ├── gp.png
│ ├── gq.png
│ ├── gr.png
│ ├── gs.png
│ ├── gt.png
│ ├── gu.png
│ ├── gw.png
│ ├── gy.png
│ ├── hk.png
│ ├── hm.png
│ ├── hn.png
│ ├── hr.png
│ ├── ht.png
│ ├── hu.png
│ ├── id.png
│ ├── ie.png
│ ├── il.png
│ ├── im.png
│ ├── in.png
│ ├── io.png
│ ├── iq.png
│ ├── ir.png
│ ├── is.png
│ ├── it.png
│ ├── jm.png
│ ├── jo.png
│ ├── jp.png
│ ├── ke.png
│ ├── kg.png
│ ├── kh.png
│ ├── ki.png
│ ├── km.png
│ ├── kn.png
│ ├── kp.png
│ ├── kr.png
│ ├── kw.png
│ ├── ky.png
│ ├── kz.png
│ ├── la.png
│ ├── lb.png
│ ├── lc.png
│ ├── li.png
│ ├── lk.png
│ ├── lr.png
│ ├── ls.png
│ ├── lt.png
│ ├── lu.png
│ ├── lv.png
│ ├── ly.png
│ ├── ma.png
│ ├── mc.png
│ ├── md.png
│ ├── me.png
│ ├── mg.png
│ ├── mh.png
│ ├── mk.png
│ ├── ml.png
│ ├── mm.png
│ ├── mn.png
│ ├── mo.png
│ ├── mp.png
│ ├── mq.png
│ ├── mr.png
│ ├── ms.png
│ ├── mt.png
│ ├── mu.png
│ ├── mv.png
│ ├── mw.png
│ ├── mx.png
│ ├── my.png
│ ├── mz.png
│ ├── na.png
│ ├── nc.png
│ ├── ne.png
│ ├── nf.png
│ ├── ng.png
│ ├── ni.png
│ ├── nl.png
│ ├── no.png
│ ├── np.png
│ ├── nr.png
│ ├── nu.png
│ ├── nz.png
│ ├── o1.png
│ ├── om.png
│ ├── pa.png
│ ├── pe.png
│ ├── pf.png
│ ├── pg.png
│ ├── ph.png
│ ├── pk.png
│ ├── pl.png
│ ├── pm.png
│ ├── pn.png
│ ├── pr.png
│ ├── ps.png
│ ├── pt.png
│ ├── pw.png
│ ├── py.png
│ ├── qa.png
│ ├── re.png
│ ├── ro.png
│ ├── rs.png
│ ├── ru.png
│ ├── rw.png
│ ├── sa.png
│ ├── sb.png
│ ├── sc.png
│ ├── scotland.png
│ ├── sd.png
│ ├── se.png
│ ├── sg.png
│ ├── sh.png
│ ├── si.png
│ ├── sj.png
│ ├── sk.png
│ ├── sl.png
│ ├── sm.png
│ ├── sn.png
│ ├── so.png
│ ├── sr.png
│ ├── st.png
│ ├── sv.png
│ ├── sy.png
│ ├── sz.png
│ ├── tc.png
│ ├── td.png
│ ├── tf.png
│ ├── tg.png
│ ├── th.png
│ ├── tj.png
│ ├── tk.png
│ ├── tl.png
│ ├── tm.png
│ ├── tn.png
│ ├── to.png
│ ├── tr.png
│ ├── tt.png
│ ├── tv.png
│ ├── tw.png
│ ├── tz.png
│ ├── ua.png
│ ├── ug.png
│ ├── um.png
│ ├── us.png
│ ├── uy.png
│ ├── uz.png
│ ├── va.png
│ ├── vc.png
│ ├── ve.png
│ ├── vg.png
│ ├── vi.png
│ ├── vn.png
│ ├── vu.png
│ ├── wales.png
│ ├── wf.png
│ ├── ws.png
│ ├── ye.png
│ ├── yt.png
│ ├── za.png
│ ├── zm.png
│ └── zw.png
├── readme.txt
└── search.png
├── inc
├── base_functions.php
├── classes
│ ├── api.php
│ ├── auth.php
│ ├── overview.php
│ ├── report.php
│ ├── root.php
│ ├── rss.php
│ ├── search.php
│ ├── static.php
│ └── user.php
├── core.php
├── db.php
├── example.settings.php
├── html.php
├── libraries
│ ├── Twig
│ │ ├── Autoloader.php
│ │ ├── Compiler.php
│ │ ├── CompilerInterface.php
│ │ ├── Environment.php
│ │ ├── Error.php
│ │ ├── Error
│ │ │ ├── Loader.php
│ │ │ ├── Runtime.php
│ │ │ └── Syntax.php
│ │ ├── ExistsLoaderInterface.php
│ │ ├── ExpressionParser.php
│ │ ├── Extension.php
│ │ ├── Extension
│ │ │ ├── Core.php
│ │ │ ├── Debug.php
│ │ │ ├── Escaper.php
│ │ │ ├── Optimizer.php
│ │ │ ├── Sandbox.php
│ │ │ ├── Staging.php
│ │ │ └── StringLoader.php
│ │ ├── ExtensionInterface.php
│ │ ├── Filter.php
│ │ ├── Filter
│ │ │ ├── Function.php
│ │ │ ├── Method.php
│ │ │ └── Node.php
│ │ ├── FilterCallableInterface.php
│ │ ├── FilterInterface.php
│ │ ├── Function.php
│ │ ├── Function
│ │ │ ├── Function.php
│ │ │ ├── Method.php
│ │ │ └── Node.php
│ │ ├── FunctionCallableInterface.php
│ │ ├── FunctionInterface.php
│ │ ├── Lexer.php
│ │ ├── LexerInterface.php
│ │ ├── Loader
│ │ │ ├── Array.php
│ │ │ ├── Chain.php
│ │ │ ├── Filesystem.php
│ │ │ └── String.php
│ │ ├── LoaderInterface.php
│ │ ├── Markup.php
│ │ ├── Node.php
│ │ ├── Node
│ │ │ ├── AutoEscape.php
│ │ │ ├── Block.php
│ │ │ ├── BlockReference.php
│ │ │ ├── Body.php
│ │ │ ├── Do.php
│ │ │ ├── Embed.php
│ │ │ ├── Expression.php
│ │ │ ├── Expression
│ │ │ │ ├── Array.php
│ │ │ │ ├── AssignName.php
│ │ │ │ ├── Binary.php
│ │ │ │ ├── Binary
│ │ │ │ │ ├── Add.php
│ │ │ │ │ ├── And.php
│ │ │ │ │ ├── BitwiseAnd.php
│ │ │ │ │ ├── BitwiseOr.php
│ │ │ │ │ ├── BitwiseXor.php
│ │ │ │ │ ├── Concat.php
│ │ │ │ │ ├── Div.php
│ │ │ │ │ ├── EndsWith.php
│ │ │ │ │ ├── Equal.php
│ │ │ │ │ ├── FloorDiv.php
│ │ │ │ │ ├── Greater.php
│ │ │ │ │ ├── GreaterEqual.php
│ │ │ │ │ ├── In.php
│ │ │ │ │ ├── Less.php
│ │ │ │ │ ├── LessEqual.php
│ │ │ │ │ ├── Matches.php
│ │ │ │ │ ├── Mod.php
│ │ │ │ │ ├── Mul.php
│ │ │ │ │ ├── NotEqual.php
│ │ │ │ │ ├── NotIn.php
│ │ │ │ │ ├── Or.php
│ │ │ │ │ ├── Power.php
│ │ │ │ │ ├── Range.php
│ │ │ │ │ ├── StartsWith.php
│ │ │ │ │ └── Sub.php
│ │ │ │ ├── BlockReference.php
│ │ │ │ ├── Call.php
│ │ │ │ ├── Conditional.php
│ │ │ │ ├── Constant.php
│ │ │ │ ├── ExtensionReference.php
│ │ │ │ ├── Filter.php
│ │ │ │ ├── Filter
│ │ │ │ │ └── Default.php
│ │ │ │ ├── Function.php
│ │ │ │ ├── GetAttr.php
│ │ │ │ ├── MethodCall.php
│ │ │ │ ├── Name.php
│ │ │ │ ├── Parent.php
│ │ │ │ ├── TempName.php
│ │ │ │ ├── Test.php
│ │ │ │ ├── Test
│ │ │ │ │ ├── Constant.php
│ │ │ │ │ ├── Defined.php
│ │ │ │ │ ├── Divisibleby.php
│ │ │ │ │ ├── Even.php
│ │ │ │ │ ├── Null.php
│ │ │ │ │ ├── Odd.php
│ │ │ │ │ └── Sameas.php
│ │ │ │ ├── Unary.php
│ │ │ │ └── Unary
│ │ │ │ │ ├── Neg.php
│ │ │ │ │ ├── Not.php
│ │ │ │ │ └── Pos.php
│ │ │ ├── Flush.php
│ │ │ ├── For.php
│ │ │ ├── ForLoop.php
│ │ │ ├── If.php
│ │ │ ├── Import.php
│ │ │ ├── Include.php
│ │ │ ├── Macro.php
│ │ │ ├── Module.php
│ │ │ ├── Print.php
│ │ │ ├── Sandbox.php
│ │ │ ├── SandboxedModule.php
│ │ │ ├── SandboxedPrint.php
│ │ │ ├── Set.php
│ │ │ ├── SetTemp.php
│ │ │ ├── Spaceless.php
│ │ │ └── Text.php
│ │ ├── NodeInterface.php
│ │ ├── NodeOutputInterface.php
│ │ ├── NodeTraverser.php
│ │ ├── NodeVisitor
│ │ │ ├── Escaper.php
│ │ │ ├── Optimizer.php
│ │ │ ├── SafeAnalysis.php
│ │ │ └── Sandbox.php
│ │ ├── NodeVisitorInterface.php
│ │ ├── Parser.php
│ │ ├── ParserInterface.php
│ │ ├── Sandbox
│ │ │ ├── SecurityError.php
│ │ │ ├── SecurityPolicy.php
│ │ │ └── SecurityPolicyInterface.php
│ │ ├── SimpleFilter.php
│ │ ├── SimpleFunction.php
│ │ ├── SimpleTest.php
│ │ ├── Template.php
│ │ ├── TemplateInterface.php
│ │ ├── Test.php
│ │ ├── Test
│ │ │ ├── Function.php
│ │ │ ├── IntegrationTestCase.php
│ │ │ ├── Method.php
│ │ │ ├── Node.php
│ │ │ └── NodeTestCase.php
│ │ ├── TestCallableInterface.php
│ │ ├── TestInterface.php
│ │ ├── Token.php
│ │ ├── TokenParser.php
│ │ ├── TokenParser
│ │ │ ├── AutoEscape.php
│ │ │ ├── Block.php
│ │ │ ├── Do.php
│ │ │ ├── Embed.php
│ │ │ ├── Extends.php
│ │ │ ├── Filter.php
│ │ │ ├── Flush.php
│ │ │ ├── For.php
│ │ │ ├── From.php
│ │ │ ├── If.php
│ │ │ ├── Import.php
│ │ │ ├── Include.php
│ │ │ ├── Macro.php
│ │ │ ├── Sandbox.php
│ │ │ ├── Set.php
│ │ │ ├── Spaceless.php
│ │ │ └── Use.php
│ │ ├── TokenParserBroker.php
│ │ ├── TokenParserBrokerInterface.php
│ │ ├── TokenParserInterface.php
│ │ └── TokenStream.php
│ ├── captcha
│ │ ├── LICENSE.txt
│ │ ├── captcha.php
│ │ └── resources
│ │ │ ├── fonts
│ │ │ ├── AntykwaBold.ttf
│ │ │ ├── Candice.ttf
│ │ │ ├── Ding-DongDaddyO.ttf
│ │ │ ├── Duality.ttf
│ │ │ ├── Heineken.ttf
│ │ │ ├── Jura.ttf
│ │ │ ├── StayPuft.ttf
│ │ │ ├── TimesNewRomanBold.ttf
│ │ │ └── VeraSansBold.ttf
│ │ │ ├── tools
│ │ │ └── dictionary-import
│ │ │ │ ├── README.txt
│ │ │ │ ├── importwords.php
│ │ │ │ ├── sample-words-en.txt
│ │ │ │ └── sample-words-es.txt
│ │ │ └── words
│ │ │ ├── en.php
│ │ │ └── es.php
│ └── glue.php
├── scanlab.php
├── search_functions.php
├── templates
│ ├── auth
│ │ ├── login.html
│ │ └── register.html
│ ├── error.html
│ ├── error_page.php
│ ├── footer.html
│ ├── header.html
│ ├── home.html
│ ├── navi.html
│ ├── overview.html
│ ├── report.html
│ ├── results.html
│ ├── root
│ │ ├── stats.html
│ │ └── users.html
│ ├── rss.html
│ ├── search_form.html
│ ├── statique
│ │ └── js.html
│ └── user
│ │ ├── favorites.html
│ │ └── panel.html
└── urls.php
├── index.php
├── install.php
├── js
├── jquery.cookie.js
├── jquery.js
├── root.js
└── scanlab.js
├── license.txt
├── other
└── scanlab.nginx.conf
└── worker.php
/.gitignore:
--------------------------------------------------------------------------------
1 | inc/settings.php
2 |
--------------------------------------------------------------------------------
/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | RewriteEngine On
3 | RewriteCond %{REQUEST_FILENAME} !-d
4 | RewriteCond %{REQUEST_FILENAME} !-f
5 | RewriteRule ^(.*)$ index.php [L,QSA]
6 |
7 |
8 | php_value upload_max_filesize 10M
9 | php_value post_max_size 10M
10 | php_value memory_limit 32M
11 |
--------------------------------------------------------------------------------
/INSTALL.md:
--------------------------------------------------------------------------------
1 | # Server installation guide.
2 |
3 | ## Easy way using Apache:
4 |
5 | 1) On debian/ubuntu/kali run this commands as root:
6 |
7 | apt-get install apache2 mongodb libapache2-mod-php5 php5-cli php5-mongodb php5-gd php5-geoip
8 |
9 | a2enmod rewrite && php5enmod mongo && service apache2 restart
10 |
11 | See IMPORTANT NOTES if you have any troubles.
12 |
13 | 2) You need to configure your apache server. Make sure you set "AllowOverride" option to "All".
14 |
15 | 3) Upload or "git clone" Scanlab sources to your prefered folder.
16 |
17 | 4) Edit file 'inc/example.settings.php' and move it to 'inc/settings.php'.
18 |
19 | 5) Go to http://your.scanlab.domain.com/install.php and set password for your ROOT user.
20 |
21 |
22 | ## Using nginx for better performance (for advanced users):
23 |
24 | Install these packages:
25 |
26 | nginx-full mongodb php5-fpm php5-cli
27 | php5-mongodb php5-gd php5-geoip
28 |
29 | Example nginx configuration file can be found in 'other' folder.
30 |
31 | Then see instructions for apache and do your best.
32 |
33 | ## IMPORTANT NOTES:
34 |
35 | **Debian Wheezy/Kali Linux** users can find php5-mongodb package in backports repository.
36 |
37 | deb http://http.debian.net/debian wheezy-backports main
38 |
39 | If you are using newest version of **Ubuntu**, you will also **need to install**:
40 |
41 | php5-json
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Scanlab - deep web search engine
2 |
3 | Create your own deep web search engine from [nmap](http://nmap.org/) XML reports!
4 |
5 | Project home at [scanlab.info.tm](http://scanlab.info.tm)
6 |
7 | [Contact developer](mailto:icarus@network.stalker.fi)
8 |
--------------------------------------------------------------------------------
/clients/client.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/clients/client.tgz
--------------------------------------------------------------------------------
/clients/scanlab/requirements.txt:
--------------------------------------------------------------------------------
1 | PySocks==1.5.0
2 | argparse==1.2.1
3 | pygeoip==0.3.1
4 | sleekxmpp==1.3.1
5 | wsgiref==0.1.2
6 |
--------------------------------------------------------------------------------
/clients/scanlab/users.txt:
--------------------------------------------------------------------------------
1 | root
2 | admin
3 | administrator
4 | webadmin
5 | sysadmin
6 | netadmin
7 | guest
8 | user
9 | web
10 | test
11 |
--------------------------------------------------------------------------------
/images/bg1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/bg1.jpg
--------------------------------------------------------------------------------
/images/icons/dislike.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/icons/dislike.png
--------------------------------------------------------------------------------
/images/icons/like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/icons/like.png
--------------------------------------------------------------------------------
/images/network.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/network.jpg
--------------------------------------------------------------------------------
/images/png/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/.DS_Store
--------------------------------------------------------------------------------
/images/png/a1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/a1.png
--------------------------------------------------------------------------------
/images/png/a2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/a2.png
--------------------------------------------------------------------------------
/images/png/ad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ad.png
--------------------------------------------------------------------------------
/images/png/ae.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ae.png
--------------------------------------------------------------------------------
/images/png/af.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/af.png
--------------------------------------------------------------------------------
/images/png/ag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ag.png
--------------------------------------------------------------------------------
/images/png/ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ai.png
--------------------------------------------------------------------------------
/images/png/al.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/al.png
--------------------------------------------------------------------------------
/images/png/am.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/am.png
--------------------------------------------------------------------------------
/images/png/an.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/an.png
--------------------------------------------------------------------------------
/images/png/ao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ao.png
--------------------------------------------------------------------------------
/images/png/aq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/aq.png
--------------------------------------------------------------------------------
/images/png/ar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ar.png
--------------------------------------------------------------------------------
/images/png/as.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/as.png
--------------------------------------------------------------------------------
/images/png/at.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/at.png
--------------------------------------------------------------------------------
/images/png/au.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/au.png
--------------------------------------------------------------------------------
/images/png/aw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/aw.png
--------------------------------------------------------------------------------
/images/png/ax.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ax.png
--------------------------------------------------------------------------------
/images/png/az.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/az.png
--------------------------------------------------------------------------------
/images/png/ba.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ba.png
--------------------------------------------------------------------------------
/images/png/bb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bb.png
--------------------------------------------------------------------------------
/images/png/bd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bd.png
--------------------------------------------------------------------------------
/images/png/be.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/be.png
--------------------------------------------------------------------------------
/images/png/bf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bf.png
--------------------------------------------------------------------------------
/images/png/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bg.png
--------------------------------------------------------------------------------
/images/png/bh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bh.png
--------------------------------------------------------------------------------
/images/png/bi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bi.png
--------------------------------------------------------------------------------
/images/png/bj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bj.png
--------------------------------------------------------------------------------
/images/png/bm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bm.png
--------------------------------------------------------------------------------
/images/png/bn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bn.png
--------------------------------------------------------------------------------
/images/png/bo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bo.png
--------------------------------------------------------------------------------
/images/png/br.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/br.png
--------------------------------------------------------------------------------
/images/png/bs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bs.png
--------------------------------------------------------------------------------
/images/png/bt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bt.png
--------------------------------------------------------------------------------
/images/png/bv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bv.png
--------------------------------------------------------------------------------
/images/png/bw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bw.png
--------------------------------------------------------------------------------
/images/png/by.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/by.png
--------------------------------------------------------------------------------
/images/png/bz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/bz.png
--------------------------------------------------------------------------------
/images/png/ca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ca.png
--------------------------------------------------------------------------------
/images/png/catalonia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/catalonia.png
--------------------------------------------------------------------------------
/images/png/cc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cc.png
--------------------------------------------------------------------------------
/images/png/cd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cd.png
--------------------------------------------------------------------------------
/images/png/cf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cf.png
--------------------------------------------------------------------------------
/images/png/cg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cg.png
--------------------------------------------------------------------------------
/images/png/ch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ch.png
--------------------------------------------------------------------------------
/images/png/ci.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ci.png
--------------------------------------------------------------------------------
/images/png/ck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ck.png
--------------------------------------------------------------------------------
/images/png/cl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cl.png
--------------------------------------------------------------------------------
/images/png/cm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cm.png
--------------------------------------------------------------------------------
/images/png/cn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cn.png
--------------------------------------------------------------------------------
/images/png/co.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/co.png
--------------------------------------------------------------------------------
/images/png/cr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cr.png
--------------------------------------------------------------------------------
/images/png/cs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cs.png
--------------------------------------------------------------------------------
/images/png/cu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cu.png
--------------------------------------------------------------------------------
/images/png/cv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cv.png
--------------------------------------------------------------------------------
/images/png/cx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cx.png
--------------------------------------------------------------------------------
/images/png/cy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cy.png
--------------------------------------------------------------------------------
/images/png/cz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/cz.png
--------------------------------------------------------------------------------
/images/png/de.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/de.png
--------------------------------------------------------------------------------
/images/png/dj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/dj.png
--------------------------------------------------------------------------------
/images/png/dk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/dk.png
--------------------------------------------------------------------------------
/images/png/dm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/dm.png
--------------------------------------------------------------------------------
/images/png/do.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/do.png
--------------------------------------------------------------------------------
/images/png/dz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/dz.png
--------------------------------------------------------------------------------
/images/png/ec.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ec.png
--------------------------------------------------------------------------------
/images/png/ee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ee.png
--------------------------------------------------------------------------------
/images/png/eg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/eg.png
--------------------------------------------------------------------------------
/images/png/eh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/eh.png
--------------------------------------------------------------------------------
/images/png/england.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/england.png
--------------------------------------------------------------------------------
/images/png/er.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/er.png
--------------------------------------------------------------------------------
/images/png/es.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/es.png
--------------------------------------------------------------------------------
/images/png/et.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/et.png
--------------------------------------------------------------------------------
/images/png/eu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/eu.png
--------------------------------------------------------------------------------
/images/png/europeanunion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/europeanunion.png
--------------------------------------------------------------------------------
/images/png/fam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fam.png
--------------------------------------------------------------------------------
/images/png/fi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fi.png
--------------------------------------------------------------------------------
/images/png/fj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fj.png
--------------------------------------------------------------------------------
/images/png/fk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fk.png
--------------------------------------------------------------------------------
/images/png/fm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fm.png
--------------------------------------------------------------------------------
/images/png/fo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fo.png
--------------------------------------------------------------------------------
/images/png/fr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/fr.png
--------------------------------------------------------------------------------
/images/png/ga.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ga.png
--------------------------------------------------------------------------------
/images/png/gb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gb.png
--------------------------------------------------------------------------------
/images/png/gd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gd.png
--------------------------------------------------------------------------------
/images/png/ge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ge.png
--------------------------------------------------------------------------------
/images/png/gf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gf.png
--------------------------------------------------------------------------------
/images/png/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gh.png
--------------------------------------------------------------------------------
/images/png/gi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gi.png
--------------------------------------------------------------------------------
/images/png/gl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gl.png
--------------------------------------------------------------------------------
/images/png/gm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gm.png
--------------------------------------------------------------------------------
/images/png/gn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gn.png
--------------------------------------------------------------------------------
/images/png/gp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gp.png
--------------------------------------------------------------------------------
/images/png/gq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gq.png
--------------------------------------------------------------------------------
/images/png/gr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gr.png
--------------------------------------------------------------------------------
/images/png/gs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gs.png
--------------------------------------------------------------------------------
/images/png/gt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gt.png
--------------------------------------------------------------------------------
/images/png/gu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gu.png
--------------------------------------------------------------------------------
/images/png/gw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gw.png
--------------------------------------------------------------------------------
/images/png/gy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/gy.png
--------------------------------------------------------------------------------
/images/png/hk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/hk.png
--------------------------------------------------------------------------------
/images/png/hm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/hm.png
--------------------------------------------------------------------------------
/images/png/hn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/hn.png
--------------------------------------------------------------------------------
/images/png/hr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/hr.png
--------------------------------------------------------------------------------
/images/png/ht.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ht.png
--------------------------------------------------------------------------------
/images/png/hu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/hu.png
--------------------------------------------------------------------------------
/images/png/id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/id.png
--------------------------------------------------------------------------------
/images/png/ie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ie.png
--------------------------------------------------------------------------------
/images/png/il.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/il.png
--------------------------------------------------------------------------------
/images/png/im.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/im.png
--------------------------------------------------------------------------------
/images/png/in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/in.png
--------------------------------------------------------------------------------
/images/png/io.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/io.png
--------------------------------------------------------------------------------
/images/png/iq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/iq.png
--------------------------------------------------------------------------------
/images/png/ir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ir.png
--------------------------------------------------------------------------------
/images/png/is.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/is.png
--------------------------------------------------------------------------------
/images/png/it.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/it.png
--------------------------------------------------------------------------------
/images/png/jm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/jm.png
--------------------------------------------------------------------------------
/images/png/jo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/jo.png
--------------------------------------------------------------------------------
/images/png/jp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/jp.png
--------------------------------------------------------------------------------
/images/png/ke.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ke.png
--------------------------------------------------------------------------------
/images/png/kg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kg.png
--------------------------------------------------------------------------------
/images/png/kh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kh.png
--------------------------------------------------------------------------------
/images/png/ki.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ki.png
--------------------------------------------------------------------------------
/images/png/km.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/km.png
--------------------------------------------------------------------------------
/images/png/kn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kn.png
--------------------------------------------------------------------------------
/images/png/kp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kp.png
--------------------------------------------------------------------------------
/images/png/kr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kr.png
--------------------------------------------------------------------------------
/images/png/kw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kw.png
--------------------------------------------------------------------------------
/images/png/ky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ky.png
--------------------------------------------------------------------------------
/images/png/kz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/kz.png
--------------------------------------------------------------------------------
/images/png/la.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/la.png
--------------------------------------------------------------------------------
/images/png/lb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lb.png
--------------------------------------------------------------------------------
/images/png/lc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lc.png
--------------------------------------------------------------------------------
/images/png/li.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/li.png
--------------------------------------------------------------------------------
/images/png/lk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lk.png
--------------------------------------------------------------------------------
/images/png/lr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lr.png
--------------------------------------------------------------------------------
/images/png/ls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ls.png
--------------------------------------------------------------------------------
/images/png/lt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lt.png
--------------------------------------------------------------------------------
/images/png/lu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lu.png
--------------------------------------------------------------------------------
/images/png/lv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/lv.png
--------------------------------------------------------------------------------
/images/png/ly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ly.png
--------------------------------------------------------------------------------
/images/png/ma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ma.png
--------------------------------------------------------------------------------
/images/png/mc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mc.png
--------------------------------------------------------------------------------
/images/png/md.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/md.png
--------------------------------------------------------------------------------
/images/png/me.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/me.png
--------------------------------------------------------------------------------
/images/png/mg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mg.png
--------------------------------------------------------------------------------
/images/png/mh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mh.png
--------------------------------------------------------------------------------
/images/png/mk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mk.png
--------------------------------------------------------------------------------
/images/png/ml.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ml.png
--------------------------------------------------------------------------------
/images/png/mm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mm.png
--------------------------------------------------------------------------------
/images/png/mn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mn.png
--------------------------------------------------------------------------------
/images/png/mo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mo.png
--------------------------------------------------------------------------------
/images/png/mp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mp.png
--------------------------------------------------------------------------------
/images/png/mq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mq.png
--------------------------------------------------------------------------------
/images/png/mr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mr.png
--------------------------------------------------------------------------------
/images/png/ms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ms.png
--------------------------------------------------------------------------------
/images/png/mt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mt.png
--------------------------------------------------------------------------------
/images/png/mu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mu.png
--------------------------------------------------------------------------------
/images/png/mv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mv.png
--------------------------------------------------------------------------------
/images/png/mw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mw.png
--------------------------------------------------------------------------------
/images/png/mx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mx.png
--------------------------------------------------------------------------------
/images/png/my.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/my.png
--------------------------------------------------------------------------------
/images/png/mz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/mz.png
--------------------------------------------------------------------------------
/images/png/na.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/na.png
--------------------------------------------------------------------------------
/images/png/nc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nc.png
--------------------------------------------------------------------------------
/images/png/ne.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ne.png
--------------------------------------------------------------------------------
/images/png/nf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nf.png
--------------------------------------------------------------------------------
/images/png/ng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ng.png
--------------------------------------------------------------------------------
/images/png/ni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ni.png
--------------------------------------------------------------------------------
/images/png/nl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nl.png
--------------------------------------------------------------------------------
/images/png/no.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/no.png
--------------------------------------------------------------------------------
/images/png/np.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/np.png
--------------------------------------------------------------------------------
/images/png/nr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nr.png
--------------------------------------------------------------------------------
/images/png/nu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nu.png
--------------------------------------------------------------------------------
/images/png/nz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/nz.png
--------------------------------------------------------------------------------
/images/png/o1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/o1.png
--------------------------------------------------------------------------------
/images/png/om.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/om.png
--------------------------------------------------------------------------------
/images/png/pa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pa.png
--------------------------------------------------------------------------------
/images/png/pe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pe.png
--------------------------------------------------------------------------------
/images/png/pf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pf.png
--------------------------------------------------------------------------------
/images/png/pg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pg.png
--------------------------------------------------------------------------------
/images/png/ph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ph.png
--------------------------------------------------------------------------------
/images/png/pk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pk.png
--------------------------------------------------------------------------------
/images/png/pl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pl.png
--------------------------------------------------------------------------------
/images/png/pm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pm.png
--------------------------------------------------------------------------------
/images/png/pn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pn.png
--------------------------------------------------------------------------------
/images/png/pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pr.png
--------------------------------------------------------------------------------
/images/png/ps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ps.png
--------------------------------------------------------------------------------
/images/png/pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pt.png
--------------------------------------------------------------------------------
/images/png/pw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/pw.png
--------------------------------------------------------------------------------
/images/png/py.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/py.png
--------------------------------------------------------------------------------
/images/png/qa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/qa.png
--------------------------------------------------------------------------------
/images/png/re.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/re.png
--------------------------------------------------------------------------------
/images/png/ro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ro.png
--------------------------------------------------------------------------------
/images/png/rs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/rs.png
--------------------------------------------------------------------------------
/images/png/ru.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ru.png
--------------------------------------------------------------------------------
/images/png/rw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/rw.png
--------------------------------------------------------------------------------
/images/png/sa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sa.png
--------------------------------------------------------------------------------
/images/png/sb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sb.png
--------------------------------------------------------------------------------
/images/png/sc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sc.png
--------------------------------------------------------------------------------
/images/png/scotland.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/scotland.png
--------------------------------------------------------------------------------
/images/png/sd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sd.png
--------------------------------------------------------------------------------
/images/png/se.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/se.png
--------------------------------------------------------------------------------
/images/png/sg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sg.png
--------------------------------------------------------------------------------
/images/png/sh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sh.png
--------------------------------------------------------------------------------
/images/png/si.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/si.png
--------------------------------------------------------------------------------
/images/png/sj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sj.png
--------------------------------------------------------------------------------
/images/png/sk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sk.png
--------------------------------------------------------------------------------
/images/png/sl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sl.png
--------------------------------------------------------------------------------
/images/png/sm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sm.png
--------------------------------------------------------------------------------
/images/png/sn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sn.png
--------------------------------------------------------------------------------
/images/png/so.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/so.png
--------------------------------------------------------------------------------
/images/png/sr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sr.png
--------------------------------------------------------------------------------
/images/png/st.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/st.png
--------------------------------------------------------------------------------
/images/png/sv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sv.png
--------------------------------------------------------------------------------
/images/png/sy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sy.png
--------------------------------------------------------------------------------
/images/png/sz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/sz.png
--------------------------------------------------------------------------------
/images/png/tc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tc.png
--------------------------------------------------------------------------------
/images/png/td.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/td.png
--------------------------------------------------------------------------------
/images/png/tf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tf.png
--------------------------------------------------------------------------------
/images/png/tg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tg.png
--------------------------------------------------------------------------------
/images/png/th.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/th.png
--------------------------------------------------------------------------------
/images/png/tj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tj.png
--------------------------------------------------------------------------------
/images/png/tk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tk.png
--------------------------------------------------------------------------------
/images/png/tl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tl.png
--------------------------------------------------------------------------------
/images/png/tm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tm.png
--------------------------------------------------------------------------------
/images/png/tn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tn.png
--------------------------------------------------------------------------------
/images/png/to.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/to.png
--------------------------------------------------------------------------------
/images/png/tr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tr.png
--------------------------------------------------------------------------------
/images/png/tt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tt.png
--------------------------------------------------------------------------------
/images/png/tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tv.png
--------------------------------------------------------------------------------
/images/png/tw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tw.png
--------------------------------------------------------------------------------
/images/png/tz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/tz.png
--------------------------------------------------------------------------------
/images/png/ua.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ua.png
--------------------------------------------------------------------------------
/images/png/ug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ug.png
--------------------------------------------------------------------------------
/images/png/um.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/um.png
--------------------------------------------------------------------------------
/images/png/us.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/us.png
--------------------------------------------------------------------------------
/images/png/uy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/uy.png
--------------------------------------------------------------------------------
/images/png/uz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/uz.png
--------------------------------------------------------------------------------
/images/png/va.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/va.png
--------------------------------------------------------------------------------
/images/png/vc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/vc.png
--------------------------------------------------------------------------------
/images/png/ve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ve.png
--------------------------------------------------------------------------------
/images/png/vg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/vg.png
--------------------------------------------------------------------------------
/images/png/vi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/vi.png
--------------------------------------------------------------------------------
/images/png/vn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/vn.png
--------------------------------------------------------------------------------
/images/png/vu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/vu.png
--------------------------------------------------------------------------------
/images/png/wales.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/wales.png
--------------------------------------------------------------------------------
/images/png/wf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/wf.png
--------------------------------------------------------------------------------
/images/png/ws.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ws.png
--------------------------------------------------------------------------------
/images/png/ye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/ye.png
--------------------------------------------------------------------------------
/images/png/yt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/yt.png
--------------------------------------------------------------------------------
/images/png/za.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/za.png
--------------------------------------------------------------------------------
/images/png/zm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/zm.png
--------------------------------------------------------------------------------
/images/png/zw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/png/zw.png
--------------------------------------------------------------------------------
/images/readme.txt:
--------------------------------------------------------------------------------
1 | Flag icons - http://www.famfamfam.com
2 |
3 | These icons are public domain, and as such are free for any use (attribution appreciated but not required).
4 |
5 | Note that these flags are named using the ISO3166-1 alpha-2 country codes where appropriate. A list of codes can be found at http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
6 |
7 | If you find these icons useful, please donate via paypal to mjames@gmail.com (or click the donate button available at http://www.famfamfam.com/lab/icons/silk)
8 |
9 | Contact: mjames@gmail.com
--------------------------------------------------------------------------------
/images/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/images/search.png
--------------------------------------------------------------------------------
/inc/classes/overview.php:
--------------------------------------------------------------------------------
1 | user) redirect(REL_URL."auth/login");
11 | }
12 | }
13 |
14 | function GET($matches) {
15 | if (USE_WORKER === true) {
16 | $distinct = $this->db->cache->findOne(array("key" => "distinct_cache"));
17 | if ($distinct == NULL) {
18 | if ($this->user === ROOT_USER) {
19 | $this->renderError("No cached version available. You can manually update cache at root panel.");
20 | }
21 | $this->renderError("No cached version available.");
22 | }
23 | $distinct = unserialize($distinct["value"]);
24 | } else {
25 | $distinct = getDistinct($this->db);
26 | }
27 |
28 | function cmp($a, $b){
29 | return $b['count'] - $a['count'];
30 | }
31 |
32 | usort($distinct['ports'], 'cmp');
33 | usort($distinct['services'], 'cmp');
34 | usort($distinct['countries'], 'cmp');
35 | usort($distinct['tags'], 'cmp');
36 | $distinct["total_count"] = $this->db->reports->count();
37 | $this->view('overview.html', $distinct);
38 | }
39 |
40 | }
41 |
42 | ?>
43 |
--------------------------------------------------------------------------------
/inc/classes/report.php:
--------------------------------------------------------------------------------
1 | checkLogin() && IS_PRIVATE === true) {
11 | redirect(REL_URL.'auth/login');
12 | }
13 |
14 | // ID variable
15 | if (isset($matches[1]) && !empty($matches[1])) {
16 | $id = (string) $matches[1];
17 | } else {
18 | showError("no id set");
19 | }
20 |
21 | $result = $this->checkReportId($id);
22 | libxml_use_internal_errors(true);
23 | libxml_disable_entity_loader(true); // disable doctype injections
24 | if (preg_match('/renderError('invalid xml in this entry');
29 | //variables to pass to the template
30 | $vars = array(
31 | "id" => $id,
32 | "result" => $result,
33 | "host" => $host
34 | );
35 |
36 | $this->view("report.html", $vars);
37 | }
38 | }
39 |
40 |
41 | ?>
42 |
--------------------------------------------------------------------------------
/inc/classes/rss.php:
--------------------------------------------------------------------------------
1 | user = $this->checkAuth($user, $hash, true);
16 | if (!$this->user) {
17 | showError("Wrong details");
18 | }
19 | if ($this->user["api_key"] != "1") {
20 | showError("You are not API user");
21 | }
22 | }
23 |
24 | $this->server_name = $_SERVER["SERVER_NAME"];
25 | if (!empty($_SERVER["HTTPS"])) {
26 | $this->protocol = "https";
27 | } else {
28 | $this->protocol = "http";
29 | }
30 | }
31 |
32 | public function GET($matches) {
33 | if (isset($matches[1]) && !empty($matches[1]) ) {
34 | $mode = (string) $matches[1];
35 | switch ($mode) {
36 | case "search":
37 | $q = getSearchQuery();
38 | $db_query = queryFromSearchArray(queryToArray($q));
39 | $vars["results"] = $this->db->reports->find($db_query)
40 | ->sort(array("timestamp" => -1))->limit(20);
41 | $vars["description"] = "search feed";
42 | $vars["server_name"] = $this->server_name;
43 | $vars["protocol"] = $this->protocol;
44 |
45 | $this->output('application/xml');
46 | $this->view("rss.html", $vars);
47 | break;
48 | default:
49 | die("wrong mode");
50 | }
51 | }
52 | }
53 |
54 | }
55 |
56 | ?>
57 |
--------------------------------------------------------------------------------
/inc/classes/static.php:
--------------------------------------------------------------------------------
1 | view('statique/js.html');
14 | break;
15 | case "captcha":
16 | $captcha = new SimpleCaptcha();
17 | $captcha->wordsFile = '';
18 | $captcha->resourcesPath = getcwd(). "/inc/libraries/captcha/resources";
19 | $captcha->CreateImage();
20 | break;
21 | default:
22 | die();
23 |
24 | }
25 | }
26 |
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/inc/core.php:
--------------------------------------------------------------------------------
1 |
38 |
--------------------------------------------------------------------------------
/inc/example.settings.php:
--------------------------------------------------------------------------------
1 |
62 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Autoloader.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Autoloader
18 | {
19 | /**
20 | * Registers Twig_Autoloader as an SPL autoloader.
21 | *
22 | * @param bool $prepend Whether to prepend the autoloader or not.
23 | */
24 | public static function register($prepend = false)
25 | {
26 | if (version_compare(phpversion(), '5.3.0', '>=')) {
27 | spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
28 | } else {
29 | spl_autoload_register(array(__CLASS__, 'autoload'));
30 | }
31 | }
32 |
33 | /**
34 | * Handles autoloading of classes.
35 | *
36 | * @param string $class A class name.
37 | */
38 | public static function autoload($class)
39 | {
40 | if (0 !== strpos($class, 'Twig')) {
41 | return;
42 | }
43 |
44 | if (is_file($file = dirname(__FILE__).'/../'.str_replace(array('_', "\0"), array('/', ''), $class).'.php')) {
45 | require $file;
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/CompilerInterface.php:
--------------------------------------------------------------------------------
1 |
16 | *
17 | * @deprecated since 1.12 (to be removed in 3.0)
18 | */
19 | interface Twig_CompilerInterface
20 | {
21 | /**
22 | * Compiles a node.
23 | *
24 | * @param Twig_NodeInterface $node The node to compile
25 | *
26 | * @return Twig_CompilerInterface The current compiler instance
27 | */
28 | public function compile(Twig_NodeInterface $node);
29 |
30 | /**
31 | * Gets the current PHP code after compilation.
32 | *
33 | * @return string The PHP code
34 | */
35 | public function getSource();
36 | }
37 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Error/Loader.php:
--------------------------------------------------------------------------------
1 |
24 | */
25 | class Twig_Error_Loader extends Twig_Error
26 | {
27 | public function __construct($message, $lineno = -1, $filename = null, Exception $previous = null)
28 | {
29 | parent::__construct($message, false, false, $previous);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Error/Runtime.php:
--------------------------------------------------------------------------------
1 |
17 | */
18 | class Twig_Error_Runtime extends Twig_Error
19 | {
20 | }
21 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Error/Syntax.php:
--------------------------------------------------------------------------------
1 |
17 | */
18 | class Twig_Error_Syntax extends Twig_Error
19 | {
20 | }
21 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/ExistsLoaderInterface.php:
--------------------------------------------------------------------------------
1 |
16 | *
17 | * @deprecated since 1.12 (to be removed in 3.0)
18 | */
19 | interface Twig_ExistsLoaderInterface
20 | {
21 | /**
22 | * Check if we have the source code of a template, given its name.
23 | *
24 | * @param string $name The name of the template to check if we can load
25 | *
26 | * @return bool If the template source code is handled by this loader or not
27 | */
28 | public function exists($name);
29 | }
30 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Extension/Optimizer.php:
--------------------------------------------------------------------------------
1 | optimizers = $optimizers;
18 | }
19 |
20 | /**
21 | * {@inheritdoc}
22 | */
23 | public function getNodeVisitors()
24 | {
25 | return array(new Twig_NodeVisitor_Optimizer($this->optimizers));
26 | }
27 |
28 | /**
29 | * {@inheritdoc}
30 | */
31 | public function getName()
32 | {
33 | return 'optimizer';
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Extension/StringLoader.php:
--------------------------------------------------------------------------------
1 | true)),
20 | );
21 | }
22 |
23 | /**
24 | * {@inheritdoc}
25 | */
26 | public function getName()
27 | {
28 | return 'string_loader';
29 | }
30 | }
31 |
32 | /**
33 | * Loads a template from a string.
34 | *
35 | *
36 | * {{ include(template_from_string("Hello {{ name }}")) }}
37 | *
38 | *
39 | * @param Twig_Environment $env A Twig_Environment instance
40 | * @param string $template A template as a string
41 | *
42 | * @return Twig_Template A Twig_Template instance
43 | */
44 | function twig_template_from_string(Twig_Environment $env, $template)
45 | {
46 | $name = sprintf('__string_template__%s', hash('sha256', uniqid(mt_rand(), true), false));
47 |
48 | $loader = new Twig_Loader_Chain(array(
49 | new Twig_Loader_Array(array($name => $template)),
50 | $current = $env->getLoader(),
51 | ));
52 |
53 | $env->setLoader($loader);
54 | try {
55 | $template = $env->loadTemplate($name);
56 | } catch (Exception $e) {
57 | $env->setLoader($current);
58 |
59 | throw $e;
60 | }
61 | $env->setLoader($current);
62 |
63 | return $template;
64 | }
65 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Filter/Function.php:
--------------------------------------------------------------------------------
1 |
18 | * @deprecated since 1.12 (to be removed in 2.0)
19 | */
20 | class Twig_Filter_Function extends Twig_Filter
21 | {
22 | protected $function;
23 |
24 | public function __construct($function, array $options = array())
25 | {
26 | $options['callable'] = $function;
27 |
28 | parent::__construct($options);
29 |
30 | $this->function = $function;
31 | }
32 |
33 | public function compile()
34 | {
35 | return $this->function;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Filter/Method.php:
--------------------------------------------------------------------------------
1 |
18 | * @deprecated since 1.12 (to be removed in 2.0)
19 | */
20 | class Twig_Filter_Method extends Twig_Filter
21 | {
22 | protected $extension;
23 | protected $method;
24 |
25 | public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array())
26 | {
27 | $options['callable'] = array($extension, $method);
28 |
29 | parent::__construct($options);
30 |
31 | $this->extension = $extension;
32 | $this->method = $method;
33 | }
34 |
35 | public function compile()
36 | {
37 | return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Filter/Node.php:
--------------------------------------------------------------------------------
1 |
18 | * @deprecated since 1.12 (to be removed in 2.0)
19 | */
20 | class Twig_Filter_Node extends Twig_Filter
21 | {
22 | protected $class;
23 |
24 | public function __construct($class, array $options = array())
25 | {
26 | parent::__construct($options);
27 |
28 | $this->class = $class;
29 | }
30 |
31 | public function getClass()
32 | {
33 | return $this->class;
34 | }
35 |
36 | public function compile()
37 | {
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/FilterCallableInterface.php:
--------------------------------------------------------------------------------
1 |
18 | * @deprecated since 1.12 (to be removed in 2.0)
19 | */
20 | interface Twig_FilterCallableInterface
21 | {
22 | public function getCallable();
23 | }
24 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/FilterInterface.php:
--------------------------------------------------------------------------------
1 |
18 | * @deprecated since 1.12 (to be removed in 2.0)
19 | */
20 | interface Twig_FilterInterface
21 | {
22 | /**
23 | * Compiles a filter.
24 | *
25 | * @return string The PHP code for the filter
26 | */
27 | public function compile();
28 |
29 | public function needsEnvironment();
30 |
31 | public function needsContext();
32 |
33 | public function getSafe(Twig_Node $filterArgs);
34 |
35 | public function getPreservesSafety();
36 |
37 | public function getPreEscape();
38 |
39 | public function setArguments($arguments);
40 |
41 | public function getArguments();
42 | }
43 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Function.php:
--------------------------------------------------------------------------------
1 |
18 | * @deprecated since 1.12 (to be removed in 2.0)
19 | */
20 | abstract class Twig_Function implements Twig_FunctionInterface, Twig_FunctionCallableInterface
21 | {
22 | protected $options;
23 | protected $arguments = array();
24 |
25 | public function __construct(array $options = array())
26 | {
27 | $this->options = array_merge(array(
28 | 'needs_environment' => false,
29 | 'needs_context' => false,
30 | 'callable' => null,
31 | ), $options);
32 | }
33 |
34 | public function setArguments($arguments)
35 | {
36 | $this->arguments = $arguments;
37 | }
38 |
39 | public function getArguments()
40 | {
41 | return $this->arguments;
42 | }
43 |
44 | public function needsEnvironment()
45 | {
46 | return $this->options['needs_environment'];
47 | }
48 |
49 | public function needsContext()
50 | {
51 | return $this->options['needs_context'];
52 | }
53 |
54 | public function getSafe(Twig_Node $functionArgs)
55 | {
56 | if (isset($this->options['is_safe'])) {
57 | return $this->options['is_safe'];
58 | }
59 |
60 | if (isset($this->options['is_safe_callback'])) {
61 | return call_user_func($this->options['is_safe_callback'], $functionArgs);
62 | }
63 |
64 | return array();
65 | }
66 |
67 | public function getCallable()
68 | {
69 | return $this->options['callable'];
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Function/Function.php:
--------------------------------------------------------------------------------
1 |
19 | * @deprecated since 1.12 (to be removed in 2.0)
20 | */
21 | class Twig_Function_Function extends Twig_Function
22 | {
23 | protected $function;
24 |
25 | public function __construct($function, array $options = array())
26 | {
27 | $options['callable'] = $function;
28 |
29 | parent::__construct($options);
30 |
31 | $this->function = $function;
32 | }
33 |
34 | public function compile()
35 | {
36 | return $this->function;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Function/Method.php:
--------------------------------------------------------------------------------
1 |
19 | * @deprecated since 1.12 (to be removed in 2.0)
20 | */
21 | class Twig_Function_Method extends Twig_Function
22 | {
23 | protected $extension;
24 | protected $method;
25 |
26 | public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array())
27 | {
28 | $options['callable'] = array($extension, $method);
29 |
30 | parent::__construct($options);
31 |
32 | $this->extension = $extension;
33 | $this->method = $method;
34 | }
35 |
36 | public function compile()
37 | {
38 | return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Function/Node.php:
--------------------------------------------------------------------------------
1 |
18 | * @deprecated since 1.12 (to be removed in 2.0)
19 | */
20 | class Twig_Function_Node extends Twig_Function
21 | {
22 | protected $class;
23 |
24 | public function __construct($class, array $options = array())
25 | {
26 | parent::__construct($options);
27 |
28 | $this->class = $class;
29 | }
30 |
31 | public function getClass()
32 | {
33 | return $this->class;
34 | }
35 |
36 | public function compile()
37 | {
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/FunctionCallableInterface.php:
--------------------------------------------------------------------------------
1 |
18 | * @deprecated since 1.12 (to be removed in 2.0)
19 | */
20 | interface Twig_FunctionCallableInterface
21 | {
22 | public function getCallable();
23 | }
24 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/FunctionInterface.php:
--------------------------------------------------------------------------------
1 |
19 | * @deprecated since 1.12 (to be removed in 2.0)
20 | */
21 | interface Twig_FunctionInterface
22 | {
23 | /**
24 | * Compiles a function.
25 | *
26 | * @return string The PHP code for the function
27 | */
28 | public function compile();
29 |
30 | public function needsEnvironment();
31 |
32 | public function needsContext();
33 |
34 | public function getSafe(Twig_Node $filterArgs);
35 |
36 | public function setArguments($arguments);
37 |
38 | public function getArguments();
39 | }
40 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/LexerInterface.php:
--------------------------------------------------------------------------------
1 |
16 | *
17 | * @deprecated since 1.12 (to be removed in 3.0)
18 | */
19 | interface Twig_LexerInterface
20 | {
21 | /**
22 | * Tokenizes a source code.
23 | *
24 | * @param string $code The source code
25 | * @param string $filename A unique identifier for the source code
26 | *
27 | * @return Twig_TokenStream A token stream instance
28 | *
29 | * @throws Twig_Error_Syntax When the code is syntactically wrong
30 | */
31 | public function tokenize($code, $filename = null);
32 | }
33 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Loader/String.php:
--------------------------------------------------------------------------------
1 |
25 | */
26 | class Twig_Loader_String implements Twig_LoaderInterface, Twig_ExistsLoaderInterface
27 | {
28 | /**
29 | * {@inheritdoc}
30 | */
31 | public function getSource($name)
32 | {
33 | return $name;
34 | }
35 |
36 | /**
37 | * {@inheritdoc}
38 | */
39 | public function exists($name)
40 | {
41 | return true;
42 | }
43 |
44 | /**
45 | * {@inheritdoc}
46 | */
47 | public function getCacheKey($name)
48 | {
49 | return $name;
50 | }
51 |
52 | /**
53 | * {@inheritdoc}
54 | */
55 | public function isFresh($name, $time)
56 | {
57 | return true;
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/LoaderInterface.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | interface Twig_LoaderInterface
18 | {
19 | /**
20 | * Gets the source code of a template, given its name.
21 | *
22 | * @param string $name The name of the template to load
23 | *
24 | * @return string The template source code
25 | *
26 | * @throws Twig_Error_Loader When $name is not found
27 | */
28 | public function getSource($name);
29 |
30 | /**
31 | * Gets the cache key to use for the cache for a given template name.
32 | *
33 | * @param string $name The name of the template to load
34 | *
35 | * @return string The cache key
36 | *
37 | * @throws Twig_Error_Loader When $name is not found
38 | */
39 | public function getCacheKey($name);
40 |
41 | /**
42 | * Returns true if the template is still fresh.
43 | *
44 | * @param string $name The template name
45 | * @param timestamp $time The last modification time of the cached template
46 | *
47 | * @return bool true if the template is fresh, false otherwise
48 | *
49 | * @throws Twig_Error_Loader When $name is not found
50 | */
51 | public function isFresh($name, $time);
52 | }
53 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Markup.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Markup implements Countable
18 | {
19 | protected $content;
20 | protected $charset;
21 |
22 | public function __construct($content, $charset)
23 | {
24 | $this->content = (string) $content;
25 | $this->charset = $charset;
26 | }
27 |
28 | public function __toString()
29 | {
30 | return $this->content;
31 | }
32 |
33 | public function count()
34 | {
35 | return function_exists('mb_get_info') ? mb_strlen($this->content, $this->charset) : strlen($this->content);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/AutoEscape.php:
--------------------------------------------------------------------------------
1 |
22 | */
23 | class Twig_Node_AutoEscape extends Twig_Node
24 | {
25 | public function __construct($value, Twig_NodeInterface $body, $lineno, $tag = 'autoescape')
26 | {
27 | parent::__construct(array('body' => $body), array('value' => $value), $lineno, $tag);
28 | }
29 |
30 | /**
31 | * Compiles the node to PHP.
32 | *
33 | * @param Twig_Compiler A Twig_Compiler instance
34 | */
35 | public function compile(Twig_Compiler $compiler)
36 | {
37 | $compiler->subcompile($this->getNode('body'));
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Block.php:
--------------------------------------------------------------------------------
1 |
17 | */
18 | class Twig_Node_Block extends Twig_Node
19 | {
20 | public function __construct($name, Twig_NodeInterface $body, $lineno, $tag = null)
21 | {
22 | parent::__construct(array('body' => $body), array('name' => $name), $lineno, $tag);
23 | }
24 |
25 | /**
26 | * Compiles the node to PHP.
27 | *
28 | * @param Twig_Compiler A Twig_Compiler instance
29 | */
30 | public function compile(Twig_Compiler $compiler)
31 | {
32 | $compiler
33 | ->addDebugInfo($this)
34 | ->write(sprintf("public function block_%s(\$context, array \$blocks = array())\n", $this->getAttribute('name')), "{\n")
35 | ->indent()
36 | ;
37 |
38 | $compiler
39 | ->subcompile($this->getNode('body'))
40 | ->outdent()
41 | ->write("}\n\n")
42 | ;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/BlockReference.php:
--------------------------------------------------------------------------------
1 |
17 | */
18 | class Twig_Node_BlockReference extends Twig_Node implements Twig_NodeOutputInterface
19 | {
20 | public function __construct($name, $lineno, $tag = null)
21 | {
22 | parent::__construct(array(), array('name' => $name), $lineno, $tag);
23 | }
24 |
25 | /**
26 | * Compiles the node to PHP.
27 | *
28 | * @param Twig_Compiler A Twig_Compiler instance
29 | */
30 | public function compile(Twig_Compiler $compiler)
31 | {
32 | $compiler
33 | ->addDebugInfo($this)
34 | ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name')))
35 | ;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Body.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Node_Body extends Twig_Node
18 | {
19 | }
20 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Do.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Node_Do extends Twig_Node
18 | {
19 | public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null)
20 | {
21 | parent::__construct(array('expr' => $expr), array(), $lineno, $tag);
22 | }
23 |
24 | /**
25 | * Compiles the node to PHP.
26 | *
27 | * @param Twig_Compiler A Twig_Compiler instance
28 | */
29 | public function compile(Twig_Compiler $compiler)
30 | {
31 | $compiler
32 | ->addDebugInfo($this)
33 | ->write('')
34 | ->subcompile($this->getNode('expr'))
35 | ->raw(";\n")
36 | ;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Embed.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Node_Embed extends Twig_Node_Include
18 | {
19 | // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module)
20 | public function __construct($filename, $index, Twig_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null)
21 | {
22 | parent::__construct(new Twig_Node_Expression_Constant('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag);
23 |
24 | $this->setAttribute('filename', $filename);
25 | $this->setAttribute('index', $index);
26 | }
27 |
28 | protected function addGetTemplate(Twig_Compiler $compiler)
29 | {
30 | $compiler
31 | ->write("\$this->env->loadTemplate(")
32 | ->string($this->getAttribute('filename'))
33 | ->raw(', ')
34 | ->string($this->getAttribute('index'))
35 | ->raw(")")
36 | ;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression.php:
--------------------------------------------------------------------------------
1 |
17 | */
18 | abstract class Twig_Node_Expression extends Twig_Node
19 | {
20 | }
21 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/AssignName.php:
--------------------------------------------------------------------------------
1 | raw('$context[')
24 | ->string($this->getAttribute('name'))
25 | ->raw(']')
26 | ;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary.php:
--------------------------------------------------------------------------------
1 | $left, 'right' => $right), array(), $lineno);
17 | }
18 |
19 | /**
20 | * Compiles the node to PHP.
21 | *
22 | * @param Twig_Compiler A Twig_Compiler instance
23 | */
24 | public function compile(Twig_Compiler $compiler)
25 | {
26 | $compiler
27 | ->raw('(')
28 | ->subcompile($this->getNode('left'))
29 | ->raw(' ')
30 | ;
31 | $this->operator($compiler);
32 | $compiler
33 | ->raw(' ')
34 | ->subcompile($this->getNode('right'))
35 | ->raw(')')
36 | ;
37 | }
38 |
39 | abstract public function operator(Twig_Compiler $compiler);
40 | }
41 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Add.php:
--------------------------------------------------------------------------------
1 | raw('+');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/And.php:
--------------------------------------------------------------------------------
1 | raw('&&');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/BitwiseAnd.php:
--------------------------------------------------------------------------------
1 | raw('&');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/BitwiseOr.php:
--------------------------------------------------------------------------------
1 | raw('|');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/BitwiseXor.php:
--------------------------------------------------------------------------------
1 | raw('^');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Concat.php:
--------------------------------------------------------------------------------
1 | raw('.');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Div.php:
--------------------------------------------------------------------------------
1 | raw('/');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/EndsWith.php:
--------------------------------------------------------------------------------
1 | raw('(0 === substr_compare(')
17 | ->subcompile($this->getNode('left'))
18 | ->raw(', ')
19 | ->subcompile($this->getNode('right'))
20 | ->raw(', -strlen(')
21 | ->subcompile($this->getNode('right'))
22 | ->raw(')))')
23 | ;
24 | }
25 |
26 | public function operator(Twig_Compiler $compiler)
27 | {
28 | return $compiler->raw('');
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Equal.php:
--------------------------------------------------------------------------------
1 | raw('==');
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/FloorDiv.php:
--------------------------------------------------------------------------------
1 | raw('intval(floor(');
21 | parent::compile($compiler);
22 | $compiler->raw('))');
23 | }
24 |
25 | public function operator(Twig_Compiler $compiler)
26 | {
27 | return $compiler->raw('/');
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Greater.php:
--------------------------------------------------------------------------------
1 | raw('>');
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/GreaterEqual.php:
--------------------------------------------------------------------------------
1 | raw('>=');
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/In.php:
--------------------------------------------------------------------------------
1 | raw('twig_in_filter(')
22 | ->subcompile($this->getNode('left'))
23 | ->raw(', ')
24 | ->subcompile($this->getNode('right'))
25 | ->raw(')')
26 | ;
27 | }
28 |
29 | public function operator(Twig_Compiler $compiler)
30 | {
31 | return $compiler->raw('in');
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Less.php:
--------------------------------------------------------------------------------
1 | raw('<');
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/LessEqual.php:
--------------------------------------------------------------------------------
1 | raw('<=');
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Matches.php:
--------------------------------------------------------------------------------
1 | raw('preg_match(')
17 | ->subcompile($this->getNode('right'))
18 | ->raw(', ')
19 | ->subcompile($this->getNode('left'))
20 | ->raw(')')
21 | ;
22 | }
23 |
24 | public function operator(Twig_Compiler $compiler)
25 | {
26 | return $compiler->raw('');
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Mod.php:
--------------------------------------------------------------------------------
1 | raw('%');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Mul.php:
--------------------------------------------------------------------------------
1 | raw('*');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/NotEqual.php:
--------------------------------------------------------------------------------
1 | raw('!=');
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/NotIn.php:
--------------------------------------------------------------------------------
1 | raw('!twig_in_filter(')
22 | ->subcompile($this->getNode('left'))
23 | ->raw(', ')
24 | ->subcompile($this->getNode('right'))
25 | ->raw(')')
26 | ;
27 | }
28 |
29 | public function operator(Twig_Compiler $compiler)
30 | {
31 | return $compiler->raw('not in');
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Or.php:
--------------------------------------------------------------------------------
1 | raw('||');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Power.php:
--------------------------------------------------------------------------------
1 | raw('pow(')
22 | ->subcompile($this->getNode('left'))
23 | ->raw(', ')
24 | ->subcompile($this->getNode('right'))
25 | ->raw(')')
26 | ;
27 | }
28 |
29 | public function operator(Twig_Compiler $compiler)
30 | {
31 | return $compiler->raw('**');
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Range.php:
--------------------------------------------------------------------------------
1 | raw('range(')
22 | ->subcompile($this->getNode('left'))
23 | ->raw(', ')
24 | ->subcompile($this->getNode('right'))
25 | ->raw(')')
26 | ;
27 | }
28 |
29 | public function operator(Twig_Compiler $compiler)
30 | {
31 | return $compiler->raw('..');
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/StartsWith.php:
--------------------------------------------------------------------------------
1 | raw('(0 === strpos(')
17 | ->subcompile($this->getNode('left'))
18 | ->raw(', ')
19 | ->subcompile($this->getNode('right'))
20 | ->raw('))')
21 | ;
22 | }
23 |
24 | public function operator(Twig_Compiler $compiler)
25 | {
26 | return $compiler->raw('');
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Binary/Sub.php:
--------------------------------------------------------------------------------
1 | raw('-');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/BlockReference.php:
--------------------------------------------------------------------------------
1 |
17 | */
18 | class Twig_Node_Expression_BlockReference extends Twig_Node_Expression
19 | {
20 | public function __construct(Twig_NodeInterface $name, $asString = false, $lineno, $tag = null)
21 | {
22 | parent::__construct(array('name' => $name), array('as_string' => $asString, 'output' => false), $lineno, $tag);
23 | }
24 |
25 | /**
26 | * Compiles the node to PHP.
27 | *
28 | * @param Twig_Compiler A Twig_Compiler instance
29 | */
30 | public function compile(Twig_Compiler $compiler)
31 | {
32 | if ($this->getAttribute('as_string')) {
33 | $compiler->raw('(string) ');
34 | }
35 |
36 | if ($this->getAttribute('output')) {
37 | $compiler
38 | ->addDebugInfo($this)
39 | ->write("\$this->displayBlock(")
40 | ->subcompile($this->getNode('name'))
41 | ->raw(", \$context, \$blocks);\n")
42 | ;
43 | } else {
44 | $compiler
45 | ->raw("\$this->renderBlock(")
46 | ->subcompile($this->getNode('name'))
47 | ->raw(", \$context, \$blocks)")
48 | ;
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Conditional.php:
--------------------------------------------------------------------------------
1 | $expr1, 'expr2' => $expr2, 'expr3' => $expr3), array(), $lineno);
17 | }
18 |
19 | public function compile(Twig_Compiler $compiler)
20 | {
21 | $compiler
22 | ->raw('((')
23 | ->subcompile($this->getNode('expr1'))
24 | ->raw(') ? (')
25 | ->subcompile($this->getNode('expr2'))
26 | ->raw(') : (')
27 | ->subcompile($this->getNode('expr3'))
28 | ->raw('))')
29 | ;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Constant.php:
--------------------------------------------------------------------------------
1 | $value), $lineno);
17 | }
18 |
19 | public function compile(Twig_Compiler $compiler)
20 | {
21 | $compiler->repr($this->getAttribute('value'));
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/ExtensionReference.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Node_Expression_ExtensionReference extends Twig_Node_Expression
18 | {
19 | public function __construct($name, $lineno, $tag = null)
20 | {
21 | parent::__construct(array(), array('name' => $name), $lineno, $tag);
22 | }
23 |
24 | /**
25 | * Compiles the node to PHP.
26 | *
27 | * @param Twig_Compiler A Twig_Compiler instance
28 | */
29 | public function compile(Twig_Compiler $compiler)
30 | {
31 | $compiler->raw(sprintf("\$this->env->getExtension('%s')", $this->getAttribute('name')));
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Filter.php:
--------------------------------------------------------------------------------
1 | $node, 'filter' => $filterName, 'arguments' => $arguments), array(), $lineno, $tag);
17 | }
18 |
19 | public function compile(Twig_Compiler $compiler)
20 | {
21 | $name = $this->getNode('filter')->getAttribute('value');
22 | $filter = $compiler->getEnvironment()->getFilter($name);
23 |
24 | $this->setAttribute('name', $name);
25 | $this->setAttribute('type', 'filter');
26 | $this->setAttribute('thing', $filter);
27 | $this->setAttribute('needs_environment', $filter->needsEnvironment());
28 | $this->setAttribute('needs_context', $filter->needsContext());
29 | $this->setAttribute('arguments', $filter->getArguments());
30 | if ($filter instanceof Twig_FilterCallableInterface || $filter instanceof Twig_SimpleFilter) {
31 | $this->setAttribute('callable', $filter->getCallable());
32 | }
33 |
34 | $this->compileCallable($compiler);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Filter/Default.php:
--------------------------------------------------------------------------------
1 |
16 | * {{ var.foo|default('foo item on var is not defined') }}
17 | *
18 | *
19 | * @author Fabien Potencier
20 | */
21 | class Twig_Node_Expression_Filter_Default extends Twig_Node_Expression_Filter
22 | {
23 | public function __construct(Twig_NodeInterface $node, Twig_Node_Expression_Constant $filterName, Twig_NodeInterface $arguments, $lineno, $tag = null)
24 | {
25 | $default = new Twig_Node_Expression_Filter($node, new Twig_Node_Expression_Constant('default', $node->getLine()), $arguments, $node->getLine());
26 |
27 | if ('default' === $filterName->getAttribute('value') && ($node instanceof Twig_Node_Expression_Name || $node instanceof Twig_Node_Expression_GetAttr)) {
28 | $test = new Twig_Node_Expression_Test_Defined(clone $node, 'defined', new Twig_Node(), $node->getLine());
29 | $false = count($arguments) ? $arguments->getNode(0) : new Twig_Node_Expression_Constant('', $node->getLine());
30 |
31 | $node = new Twig_Node_Expression_Conditional($test, $default, $false, $node->getLine());
32 | } else {
33 | $node = $default;
34 | }
35 |
36 | parent::__construct($node, $filterName, $arguments, $lineno, $tag);
37 | }
38 |
39 | public function compile(Twig_Compiler $compiler)
40 | {
41 | $compiler->subcompile($this->getNode('node'));
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Function.php:
--------------------------------------------------------------------------------
1 | $arguments), array('name' => $name), $lineno);
16 | }
17 |
18 | public function compile(Twig_Compiler $compiler)
19 | {
20 | $name = $this->getAttribute('name');
21 | $function = $compiler->getEnvironment()->getFunction($name);
22 |
23 | $this->setAttribute('name', $name);
24 | $this->setAttribute('type', 'function');
25 | $this->setAttribute('thing', $function);
26 | $this->setAttribute('needs_environment', $function->needsEnvironment());
27 | $this->setAttribute('needs_context', $function->needsContext());
28 | $this->setAttribute('arguments', $function->getArguments());
29 | if ($function instanceof Twig_FunctionCallableInterface || $function instanceof Twig_SimpleFunction) {
30 | $this->setAttribute('callable', $function->getCallable());
31 | }
32 |
33 | $this->compileCallable($compiler);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/MethodCall.php:
--------------------------------------------------------------------------------
1 | $node, 'arguments' => $arguments), array('method' => $method, 'safe' => false), $lineno);
16 |
17 | if ($node instanceof Twig_Node_Expression_Name) {
18 | $node->setAttribute('always_defined', true);
19 | }
20 | }
21 |
22 | public function compile(Twig_Compiler $compiler)
23 | {
24 | $compiler
25 | ->subcompile($this->getNode('node'))
26 | ->raw('->')
27 | ->raw($this->getAttribute('method'))
28 | ->raw('(')
29 | ;
30 | $first = true;
31 | foreach ($this->getNode('arguments')->getKeyValuePairs() as $pair) {
32 | if (!$first) {
33 | $compiler->raw(', ');
34 | }
35 | $first = false;
36 |
37 | $compiler->subcompile($pair['value']);
38 | }
39 | $compiler->raw(')');
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Parent.php:
--------------------------------------------------------------------------------
1 |
17 | */
18 | class Twig_Node_Expression_Parent extends Twig_Node_Expression
19 | {
20 | public function __construct($name, $lineno, $tag = null)
21 | {
22 | parent::__construct(array(), array('output' => false, 'name' => $name), $lineno, $tag);
23 | }
24 |
25 | /**
26 | * Compiles the node to PHP.
27 | *
28 | * @param Twig_Compiler A Twig_Compiler instance
29 | */
30 | public function compile(Twig_Compiler $compiler)
31 | {
32 | if ($this->getAttribute('output')) {
33 | $compiler
34 | ->addDebugInfo($this)
35 | ->write("\$this->displayParentBlock(")
36 | ->string($this->getAttribute('name'))
37 | ->raw(", \$context, \$blocks);\n")
38 | ;
39 | } else {
40 | $compiler
41 | ->raw("\$this->renderParentBlock(")
42 | ->string($this->getAttribute('name'))
43 | ->raw(", \$context, \$blocks)")
44 | ;
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/TempName.php:
--------------------------------------------------------------------------------
1 | $name), $lineno);
16 | }
17 |
18 | public function compile(Twig_Compiler $compiler)
19 | {
20 | $compiler
21 | ->raw('$_')
22 | ->raw($this->getAttribute('name'))
23 | ->raw('_')
24 | ;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Test.php:
--------------------------------------------------------------------------------
1 | $node, 'arguments' => $arguments), array('name' => $name), $lineno);
16 | }
17 |
18 | public function compile(Twig_Compiler $compiler)
19 | {
20 | $name = $this->getAttribute('name');
21 | $test = $compiler->getEnvironment()->getTest($name);
22 |
23 | $this->setAttribute('name', $name);
24 | $this->setAttribute('type', 'test');
25 | $this->setAttribute('thing', $test);
26 | if ($test instanceof Twig_TestCallableInterface || $test instanceof Twig_SimpleTest) {
27 | $this->setAttribute('callable', $test->getCallable());
28 | }
29 |
30 | $this->compileCallable($compiler);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Test/Constant.php:
--------------------------------------------------------------------------------
1 |
16 | * {% if post.status is constant('Post::PUBLISHED') %}
17 | * the status attribute is exactly the same as Post::PUBLISHED
18 | * {% endif %}
19 | *
20 | *
21 | * @author Fabien Potencier
22 | */
23 | class Twig_Node_Expression_Test_Constant extends Twig_Node_Expression_Test
24 | {
25 | public function compile(Twig_Compiler $compiler)
26 | {
27 | $compiler
28 | ->raw('(')
29 | ->subcompile($this->getNode('node'))
30 | ->raw(' === constant(')
31 | ;
32 |
33 | if ($this->getNode('arguments')->hasNode(1)) {
34 | $compiler
35 | ->raw('get_class(')
36 | ->subcompile($this->getNode('arguments')->getNode(1))
37 | ->raw(')."::".')
38 | ;
39 | }
40 |
41 | $compiler
42 | ->subcompile($this->getNode('arguments')->getNode(0))
43 | ->raw('))')
44 | ;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Test/Defined.php:
--------------------------------------------------------------------------------
1 |
16 | * {# defined works with variable names and variable attributes #}
17 | * {% if foo is defined %}
18 | * {# ... #}
19 | * {% endif %}
20 | *
21 | *
22 | * @author Fabien Potencier
23 | */
24 | class Twig_Node_Expression_Test_Defined extends Twig_Node_Expression_Test
25 | {
26 | public function __construct(Twig_NodeInterface $node, $name, Twig_NodeInterface $arguments = null, $lineno)
27 | {
28 | parent::__construct($node, $name, $arguments, $lineno);
29 |
30 | if ($node instanceof Twig_Node_Expression_Name) {
31 | $node->setAttribute('is_defined_test', true);
32 | } elseif ($node instanceof Twig_Node_Expression_GetAttr) {
33 | $node->setAttribute('is_defined_test', true);
34 |
35 | $this->changeIgnoreStrictCheck($node);
36 | } else {
37 | throw new Twig_Error_Syntax('The "defined" test only works with simple variables', $this->getLine());
38 | }
39 | }
40 |
41 | protected function changeIgnoreStrictCheck(Twig_Node_Expression_GetAttr $node)
42 | {
43 | $node->setAttribute('ignore_strict_check', true);
44 |
45 | if ($node->getNode('node') instanceof Twig_Node_Expression_GetAttr) {
46 | $this->changeIgnoreStrictCheck($node->getNode('node'));
47 | }
48 | }
49 |
50 | public function compile(Twig_Compiler $compiler)
51 | {
52 | $compiler->subcompile($this->getNode('node'));
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Test/Divisibleby.php:
--------------------------------------------------------------------------------
1 |
16 | * {% if loop.index is divisible by(3) %}
17 | *
18 | *
19 | * @author Fabien Potencier
20 | */
21 | class Twig_Node_Expression_Test_Divisibleby extends Twig_Node_Expression_Test
22 | {
23 | public function compile(Twig_Compiler $compiler)
24 | {
25 | $compiler
26 | ->raw('(0 == ')
27 | ->subcompile($this->getNode('node'))
28 | ->raw(' % ')
29 | ->subcompile($this->getNode('arguments')->getNode(0))
30 | ->raw(')')
31 | ;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Test/Even.php:
--------------------------------------------------------------------------------
1 |
16 | * {{ var is even }}
17 | *
18 | *
19 | * @author Fabien Potencier
20 | */
21 | class Twig_Node_Expression_Test_Even extends Twig_Node_Expression_Test
22 | {
23 | public function compile(Twig_Compiler $compiler)
24 | {
25 | $compiler
26 | ->raw('(')
27 | ->subcompile($this->getNode('node'))
28 | ->raw(' % 2 == 0')
29 | ->raw(')')
30 | ;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Test/Null.php:
--------------------------------------------------------------------------------
1 |
16 | * {{ var is none }}
17 | *
18 | *
19 | * @author Fabien Potencier
20 | */
21 | class Twig_Node_Expression_Test_Null extends Twig_Node_Expression_Test
22 | {
23 | public function compile(Twig_Compiler $compiler)
24 | {
25 | $compiler
26 | ->raw('(null === ')
27 | ->subcompile($this->getNode('node'))
28 | ->raw(')')
29 | ;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Test/Odd.php:
--------------------------------------------------------------------------------
1 |
16 | * {{ var is odd }}
17 | *
18 | *
19 | * @author Fabien Potencier
20 | */
21 | class Twig_Node_Expression_Test_Odd extends Twig_Node_Expression_Test
22 | {
23 | public function compile(Twig_Compiler $compiler)
24 | {
25 | $compiler
26 | ->raw('(')
27 | ->subcompile($this->getNode('node'))
28 | ->raw(' % 2 == 1')
29 | ->raw(')')
30 | ;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Test/Sameas.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Node_Expression_Test_Sameas extends Twig_Node_Expression_Test
18 | {
19 | public function compile(Twig_Compiler $compiler)
20 | {
21 | $compiler
22 | ->raw('(')
23 | ->subcompile($this->getNode('node'))
24 | ->raw(' === ')
25 | ->subcompile($this->getNode('arguments')->getNode(0))
26 | ->raw(')')
27 | ;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Unary.php:
--------------------------------------------------------------------------------
1 | $node), array(), $lineno);
17 | }
18 |
19 | public function compile(Twig_Compiler $compiler)
20 | {
21 | $compiler->raw('(');
22 | $this->operator($compiler);
23 | $compiler
24 | ->subcompile($this->getNode('node'))
25 | ->raw(')')
26 | ;
27 | }
28 |
29 | abstract public function operator(Twig_Compiler $compiler);
30 | }
31 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Unary/Neg.php:
--------------------------------------------------------------------------------
1 | raw('-');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Unary/Not.php:
--------------------------------------------------------------------------------
1 | raw('!');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Expression/Unary/Pos.php:
--------------------------------------------------------------------------------
1 | raw('+');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Flush.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Node_Flush extends Twig_Node
18 | {
19 | public function __construct($lineno, $tag)
20 | {
21 | parent::__construct(array(), array(), $lineno, $tag);
22 | }
23 |
24 | /**
25 | * Compiles the node to PHP.
26 | *
27 | * @param Twig_Compiler A Twig_Compiler instance
28 | */
29 | public function compile(Twig_Compiler $compiler)
30 | {
31 | $compiler
32 | ->addDebugInfo($this)
33 | ->write("flush();\n")
34 | ;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/ForLoop.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Node_ForLoop extends Twig_Node
18 | {
19 | public function __construct($lineno, $tag = null)
20 | {
21 | parent::__construct(array(), array('with_loop' => false, 'ifexpr' => false, 'else' => false), $lineno, $tag);
22 | }
23 |
24 | /**
25 | * Compiles the node to PHP.
26 | *
27 | * @param Twig_Compiler A Twig_Compiler instance
28 | */
29 | public function compile(Twig_Compiler $compiler)
30 | {
31 | if ($this->getAttribute('else')) {
32 | $compiler->write("\$context['_iterated'] = true;\n");
33 | }
34 |
35 | if ($this->getAttribute('with_loop')) {
36 | $compiler
37 | ->write("++\$context['loop']['index0'];\n")
38 | ->write("++\$context['loop']['index'];\n")
39 | ->write("\$context['loop']['first'] = false;\n")
40 | ;
41 |
42 | if (!$this->getAttribute('ifexpr')) {
43 | $compiler
44 | ->write("if (isset(\$context['loop']['length'])) {\n")
45 | ->indent()
46 | ->write("--\$context['loop']['revindex0'];\n")
47 | ->write("--\$context['loop']['revindex'];\n")
48 | ->write("\$context['loop']['last'] = 0 === \$context['loop']['revindex0'];\n")
49 | ->outdent()
50 | ->write("}\n")
51 | ;
52 | }
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Import.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Node_Import extends Twig_Node
18 | {
19 | public function __construct(Twig_Node_Expression $expr, Twig_Node_Expression $var, $lineno, $tag = null)
20 | {
21 | parent::__construct(array('expr' => $expr, 'var' => $var), array(), $lineno, $tag);
22 | }
23 |
24 | /**
25 | * Compiles the node to PHP.
26 | *
27 | * @param Twig_Compiler A Twig_Compiler instance
28 | */
29 | public function compile(Twig_Compiler $compiler)
30 | {
31 | $compiler
32 | ->addDebugInfo($this)
33 | ->write('')
34 | ->subcompile($this->getNode('var'))
35 | ->raw(' = ')
36 | ;
37 |
38 | if ($this->getNode('expr') instanceof Twig_Node_Expression_Name && '_self' === $this->getNode('expr')->getAttribute('name')) {
39 | $compiler->raw("\$this");
40 | } else {
41 | $compiler
42 | ->raw('$this->env->loadTemplate(')
43 | ->subcompile($this->getNode('expr'))
44 | ->raw(")")
45 | ;
46 | }
47 |
48 | $compiler->raw(";\n");
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Print.php:
--------------------------------------------------------------------------------
1 |
17 | */
18 | class Twig_Node_Print extends Twig_Node implements Twig_NodeOutputInterface
19 | {
20 | public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null)
21 | {
22 | parent::__construct(array('expr' => $expr), array(), $lineno, $tag);
23 | }
24 |
25 | /**
26 | * Compiles the node to PHP.
27 | *
28 | * @param Twig_Compiler A Twig_Compiler instance
29 | */
30 | public function compile(Twig_Compiler $compiler)
31 | {
32 | $compiler
33 | ->addDebugInfo($this)
34 | ->write('echo ')
35 | ->subcompile($this->getNode('expr'))
36 | ->raw(";\n")
37 | ;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Sandbox.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Node_Sandbox extends Twig_Node
18 | {
19 | public function __construct(Twig_NodeInterface $body, $lineno, $tag = null)
20 | {
21 | parent::__construct(array('body' => $body), array(), $lineno, $tag);
22 | }
23 |
24 | /**
25 | * Compiles the node to PHP.
26 | *
27 | * @param Twig_Compiler A Twig_Compiler instance
28 | */
29 | public function compile(Twig_Compiler $compiler)
30 | {
31 | $compiler
32 | ->addDebugInfo($this)
33 | ->write("\$sandbox = \$this->env->getExtension('sandbox');\n")
34 | ->write("if (!\$alreadySandboxed = \$sandbox->isSandboxed()) {\n")
35 | ->indent()
36 | ->write("\$sandbox->enableSandbox();\n")
37 | ->outdent()
38 | ->write("}\n")
39 | ->subcompile($this->getNode('body'))
40 | ->write("if (!\$alreadySandboxed) {\n")
41 | ->indent()
42 | ->write("\$sandbox->disableSandbox();\n")
43 | ->outdent()
44 | ->write("}\n")
45 | ;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/SandboxedPrint.php:
--------------------------------------------------------------------------------
1 |
21 | */
22 | class Twig_Node_SandboxedPrint extends Twig_Node_Print
23 | {
24 | public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null)
25 | {
26 | parent::__construct($expr, $lineno, $tag);
27 | }
28 |
29 | /**
30 | * Compiles the node to PHP.
31 | *
32 | * @param Twig_Compiler A Twig_Compiler instance
33 | */
34 | public function compile(Twig_Compiler $compiler)
35 | {
36 | $compiler
37 | ->addDebugInfo($this)
38 | ->write('echo $this->env->getExtension(\'sandbox\')->ensureToStringAllowed(')
39 | ->subcompile($this->getNode('expr'))
40 | ->raw(");\n")
41 | ;
42 | }
43 |
44 | /**
45 | * Removes node filters.
46 | *
47 | * This is mostly needed when another visitor adds filters (like the escaper one).
48 | *
49 | * @param Twig_Node $node A Node
50 | */
51 | protected function removeNodeFilter($node)
52 | {
53 | if ($node instanceof Twig_Node_Expression_Filter) {
54 | return $this->removeNodeFilter($node->getNode('node'));
55 | }
56 |
57 | return $node;
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/SetTemp.php:
--------------------------------------------------------------------------------
1 | $name), $lineno);
17 | }
18 |
19 | public function compile(Twig_Compiler $compiler)
20 | {
21 | $name = $this->getAttribute('name');
22 | $compiler
23 | ->addDebugInfo($this)
24 | ->write('if (isset($context[')
25 | ->string($name)
26 | ->raw('])) { $_')
27 | ->raw($name)
28 | ->raw('_ = $context[')
29 | ->repr($name)
30 | ->raw(']; } else { $_')
31 | ->raw($name)
32 | ->raw("_ = null; }\n")
33 | ;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Spaceless.php:
--------------------------------------------------------------------------------
1 |
18 | */
19 | class Twig_Node_Spaceless extends Twig_Node
20 | {
21 | public function __construct(Twig_NodeInterface $body, $lineno, $tag = 'spaceless')
22 | {
23 | parent::__construct(array('body' => $body), array(), $lineno, $tag);
24 | }
25 |
26 | /**
27 | * Compiles the node to PHP.
28 | *
29 | * @param Twig_Compiler A Twig_Compiler instance
30 | */
31 | public function compile(Twig_Compiler $compiler)
32 | {
33 | $compiler
34 | ->addDebugInfo($this)
35 | ->write("ob_start();\n")
36 | ->subcompile($this->getNode('body'))
37 | ->write("echo trim(preg_replace('/>\s+', '><', ob_get_clean()));\n")
38 | ;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Node/Text.php:
--------------------------------------------------------------------------------
1 |
17 | */
18 | class Twig_Node_Text extends Twig_Node implements Twig_NodeOutputInterface
19 | {
20 | public function __construct($data, $lineno)
21 | {
22 | parent::__construct(array(), array('data' => $data), $lineno);
23 | }
24 |
25 | /**
26 | * Compiles the node to PHP.
27 | *
28 | * @param Twig_Compiler A Twig_Compiler instance
29 | */
30 | public function compile(Twig_Compiler $compiler)
31 | {
32 | $compiler
33 | ->addDebugInfo($this)
34 | ->write('echo ')
35 | ->string($this->getAttribute('data'))
36 | ->raw(";\n")
37 | ;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/NodeInterface.php:
--------------------------------------------------------------------------------
1 |
16 | *
17 | * @deprecated since 1.12 (to be removed in 3.0)
18 | */
19 | interface Twig_NodeInterface extends Countable, IteratorAggregate
20 | {
21 | /**
22 | * Compiles the node to PHP.
23 | *
24 | * @param Twig_Compiler A Twig_Compiler instance
25 | */
26 | public function compile(Twig_Compiler $compiler);
27 |
28 | public function getLine();
29 |
30 | public function getNodeTag();
31 | }
32 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/NodeOutputInterface.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | interface Twig_NodeOutputInterface
18 | {
19 | }
20 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/NodeVisitorInterface.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | interface Twig_NodeVisitorInterface
18 | {
19 | /**
20 | * Called before child nodes are visited.
21 | *
22 | * @param Twig_NodeInterface $node The node to visit
23 | * @param Twig_Environment $env The Twig environment instance
24 | *
25 | * @return Twig_NodeInterface The modified node
26 | */
27 | public function enterNode(Twig_NodeInterface $node, Twig_Environment $env);
28 |
29 | /**
30 | * Called after child nodes are visited.
31 | *
32 | * @param Twig_NodeInterface $node The node to visit
33 | * @param Twig_Environment $env The Twig environment instance
34 | *
35 | * @return Twig_NodeInterface|false The modified node or false if the node must be removed
36 | */
37 | public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env);
38 |
39 | /**
40 | * Returns the priority for this visitor.
41 | *
42 | * Priority should be between -10 and 10 (0 is the default).
43 | *
44 | * @return int The priority level
45 | */
46 | public function getPriority();
47 | }
48 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/ParserInterface.php:
--------------------------------------------------------------------------------
1 |
16 | *
17 | * @deprecated since 1.12 (to be removed in 3.0)
18 | */
19 | interface Twig_ParserInterface
20 | {
21 | /**
22 | * Converts a token stream to a node tree.
23 | *
24 | * @param Twig_TokenStream $stream A token stream instance
25 | *
26 | * @return Twig_Node_Module A node tree
27 | *
28 | * @throws Twig_Error_Syntax When the token stream is syntactically or semantically wrong
29 | */
30 | public function parse(Twig_TokenStream $stream);
31 | }
32 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Sandbox/SecurityError.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_Sandbox_SecurityError extends Twig_Error
18 | {
19 | }
20 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Sandbox/SecurityPolicyInterface.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | interface Twig_Sandbox_SecurityPolicyInterface
18 | {
19 | public function checkSecurity($tags, $filters, $functions);
20 |
21 | public function checkMethodAllowed($obj, $method);
22 |
23 | public function checkPropertyAllowed($obj, $method);
24 | }
25 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/SimpleTest.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | class Twig_SimpleTest
18 | {
19 | protected $name;
20 | protected $callable;
21 | protected $options;
22 |
23 | public function __construct($name, $callable, array $options = array())
24 | {
25 | $this->name = $name;
26 | $this->callable = $callable;
27 | $this->options = array_merge(array(
28 | 'node_class' => 'Twig_Node_Expression_Test',
29 | ), $options);
30 | }
31 |
32 | public function getName()
33 | {
34 | return $this->name;
35 | }
36 |
37 | public function getCallable()
38 | {
39 | return $this->callable;
40 | }
41 |
42 | public function getNodeClass()
43 | {
44 | return $this->options['node_class'];
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TemplateInterface.php:
--------------------------------------------------------------------------------
1 |
16 | *
17 | * @deprecated since 1.12 (to be removed in 3.0)
18 | */
19 | interface Twig_TemplateInterface
20 | {
21 | const ANY_CALL = 'any';
22 | const ARRAY_CALL = 'array';
23 | const METHOD_CALL = 'method';
24 |
25 | /**
26 | * Renders the template with the given context and returns it as string.
27 | *
28 | * @param array $context An array of parameters to pass to the template
29 | *
30 | * @return string The rendered template
31 | */
32 | public function render(array $context);
33 |
34 | /**
35 | * Displays the template with the given context.
36 | *
37 | * @param array $context An array of parameters to pass to the template
38 | * @param array $blocks An array of blocks to pass to the template
39 | */
40 | public function display(array $context, array $blocks = array());
41 |
42 | /**
43 | * Returns the bound environment for this template.
44 | *
45 | * @return Twig_Environment The current environment
46 | */
47 | public function getEnvironment();
48 | }
49 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Test.php:
--------------------------------------------------------------------------------
1 |
16 | * @deprecated since 1.12 (to be removed in 2.0)
17 | */
18 | abstract class Twig_Test implements Twig_TestInterface, Twig_TestCallableInterface
19 | {
20 | protected $options;
21 | protected $arguments = array();
22 |
23 | public function __construct(array $options = array())
24 | {
25 | $this->options = array_merge(array(
26 | 'callable' => null,
27 | ), $options);
28 | }
29 |
30 | public function getCallable()
31 | {
32 | return $this->options['callable'];
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Test/Function.php:
--------------------------------------------------------------------------------
1 |
16 | * @deprecated since 1.12 (to be removed in 2.0)
17 | */
18 | class Twig_Test_Function extends Twig_Test
19 | {
20 | protected $function;
21 |
22 | public function __construct($function, array $options = array())
23 | {
24 | $options['callable'] = $function;
25 |
26 | parent::__construct($options);
27 |
28 | $this->function = $function;
29 | }
30 |
31 | public function compile()
32 | {
33 | return $this->function;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Test/Method.php:
--------------------------------------------------------------------------------
1 |
16 | * @deprecated since 1.12 (to be removed in 2.0)
17 | */
18 | class Twig_Test_Method extends Twig_Test
19 | {
20 | protected $extension;
21 | protected $method;
22 |
23 | public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array())
24 | {
25 | $options['callable'] = array($extension, $method);
26 |
27 | parent::__construct($options);
28 |
29 | $this->extension = $extension;
30 | $this->method = $method;
31 | }
32 |
33 | public function compile()
34 | {
35 | return sprintf('$this->env->getExtension(\'%s\')->%s', $this->extension->getName(), $this->method);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Test/Node.php:
--------------------------------------------------------------------------------
1 |
16 | * @deprecated since 1.12 (to be removed in 2.0)
17 | */
18 | class Twig_Test_Node extends Twig_Test
19 | {
20 | protected $class;
21 |
22 | public function __construct($class, array $options = array())
23 | {
24 | parent::__construct($options);
25 |
26 | $this->class = $class;
27 | }
28 |
29 | public function getClass()
30 | {
31 | return $this->class;
32 | }
33 |
34 | public function compile()
35 | {
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/Test/NodeTestCase.php:
--------------------------------------------------------------------------------
1 | assertNodeCompilation($source, $node, $environment);
21 | }
22 |
23 | public function assertNodeCompilation($source, Twig_Node $node, Twig_Environment $environment = null)
24 | {
25 | $compiler = $this->getCompiler($environment);
26 | $compiler->compile($node);
27 |
28 | $this->assertEquals($source, trim($compiler->getSource()));
29 | }
30 |
31 | protected function getCompiler(Twig_Environment $environment = null)
32 | {
33 | return new Twig_Compiler(null === $environment ? $this->getEnvironment() : $environment);
34 | }
35 |
36 | protected function getEnvironment()
37 | {
38 | return new Twig_Environment();
39 | }
40 |
41 | protected function getVariableGetter($name)
42 | {
43 | if (version_compare(phpversion(), '5.4.0RC1', '>=')) {
44 | return sprintf('(isset($context["%s"]) ? $context["%s"] : null)', $name, $name);
45 | }
46 |
47 | return sprintf('$this->getContext($context, "%s")', $name);
48 | }
49 |
50 | protected function getAttributeGetter()
51 | {
52 | if (function_exists('twig_template_get_attributes')) {
53 | return 'twig_template_get_attributes($this, ';
54 | }
55 |
56 | return '$this->getAttribute(';
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TestCallableInterface.php:
--------------------------------------------------------------------------------
1 |
16 | * @deprecated since 1.12 (to be removed in 2.0)
17 | */
18 | interface Twig_TestCallableInterface
19 | {
20 | public function getCallable();
21 | }
22 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TestInterface.php:
--------------------------------------------------------------------------------
1 |
16 | * @deprecated since 1.12 (to be removed in 2.0)
17 | */
18 | interface Twig_TestInterface
19 | {
20 | /**
21 | * Compiles a test.
22 | *
23 | * @return string The PHP code for the test
24 | */
25 | public function compile();
26 | }
27 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TokenParser.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | abstract class Twig_TokenParser implements Twig_TokenParserInterface
18 | {
19 | /**
20 | * @var Twig_Parser
21 | */
22 | protected $parser;
23 |
24 | /**
25 | * Sets the parser associated with this token parser
26 | *
27 | * @param $parser A Twig_Parser instance
28 | */
29 | public function setParser(Twig_Parser $parser)
30 | {
31 | $this->parser = $parser;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TokenParser/Do.php:
--------------------------------------------------------------------------------
1 | parser->getExpressionParser()->parseExpression();
27 |
28 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
29 |
30 | return new Twig_Node_Do($expr, $token->getLine(), $this->getTag());
31 | }
32 |
33 | /**
34 | * Gets the tag name associated with this token parser.
35 | *
36 | * @return string The tag name
37 | */
38 | public function getTag()
39 | {
40 | return 'do';
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TokenParser/Extends.php:
--------------------------------------------------------------------------------
1 |
17 | * {% extends "base.html" %}
18 | *
19 | */
20 | class Twig_TokenParser_Extends extends Twig_TokenParser
21 | {
22 | /**
23 | * Parses a token and returns a node.
24 | *
25 | * @param Twig_Token $token A Twig_Token instance
26 | *
27 | * @return Twig_NodeInterface A Twig_NodeInterface instance
28 | */
29 | public function parse(Twig_Token $token)
30 | {
31 | if (!$this->parser->isMainScope()) {
32 | throw new Twig_Error_Syntax('Cannot extend from a block', $token->getLine(), $this->parser->getFilename());
33 | }
34 |
35 | if (null !== $this->parser->getParent()) {
36 | throw new Twig_Error_Syntax('Multiple extends tags are forbidden', $token->getLine(), $this->parser->getFilename());
37 | }
38 | $this->parser->setParent($this->parser->getExpressionParser()->parseExpression());
39 |
40 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
41 | }
42 |
43 | /**
44 | * Gets the tag name associated with this token parser.
45 | *
46 | * @return string The tag name
47 | */
48 | public function getTag()
49 | {
50 | return 'extends';
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TokenParser/Filter.php:
--------------------------------------------------------------------------------
1 |
16 | * {% filter upper %}
17 | * This text becomes uppercase
18 | * {% endfilter %}
19 | *
20 | */
21 | class Twig_TokenParser_Filter extends Twig_TokenParser
22 | {
23 | /**
24 | * Parses a token and returns a node.
25 | *
26 | * @param Twig_Token $token A Twig_Token instance
27 | *
28 | * @return Twig_NodeInterface A Twig_NodeInterface instance
29 | */
30 | public function parse(Twig_Token $token)
31 | {
32 | $name = $this->parser->getVarName();
33 | $ref = new Twig_Node_Expression_BlockReference(new Twig_Node_Expression_Constant($name, $token->getLine()), true, $token->getLine(), $this->getTag());
34 |
35 | $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag());
36 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
37 |
38 | $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true);
39 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
40 |
41 | $block = new Twig_Node_Block($name, $body, $token->getLine());
42 | $this->parser->setBlock($name, $block);
43 |
44 | return new Twig_Node_Print($filter, $token->getLine(), $this->getTag());
45 | }
46 |
47 | public function decideBlockEnd(Twig_Token $token)
48 | {
49 | return $token->test('endfilter');
50 | }
51 |
52 | /**
53 | * Gets the tag name associated with this token parser.
54 | *
55 | * @return string The tag name
56 | */
57 | public function getTag()
58 | {
59 | return 'filter';
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TokenParser/Flush.php:
--------------------------------------------------------------------------------
1 | parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
29 |
30 | return new Twig_Node_Flush($token->getLine(), $this->getTag());
31 | }
32 |
33 | /**
34 | * Gets the tag name associated with this token parser.
35 | *
36 | * @return string The tag name
37 | */
38 | public function getTag()
39 | {
40 | return 'flush';
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TokenParser/Import.php:
--------------------------------------------------------------------------------
1 |
16 | * {% import 'forms.html' as forms %}
17 | *
18 | */
19 | class Twig_TokenParser_Import extends Twig_TokenParser
20 | {
21 | /**
22 | * Parses a token and returns a node.
23 | *
24 | * @param Twig_Token $token A Twig_Token instance
25 | *
26 | * @return Twig_NodeInterface A Twig_NodeInterface instance
27 | */
28 | public function parse(Twig_Token $token)
29 | {
30 | $macro = $this->parser->getExpressionParser()->parseExpression();
31 | $this->parser->getStream()->expect('as');
32 | $var = new Twig_Node_Expression_AssignName($this->parser->getStream()->expect(Twig_Token::NAME_TYPE)->getValue(), $token->getLine());
33 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
34 |
35 | $this->parser->addImportedSymbol('template', $var->getAttribute('name'));
36 |
37 | return new Twig_Node_Import($macro, $var, $token->getLine(), $this->getTag());
38 | }
39 |
40 | /**
41 | * Gets the tag name associated with this token parser.
42 | *
43 | * @return string The tag name
44 | */
45 | public function getTag()
46 | {
47 | return 'import';
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TokenParser/Spaceless.php:
--------------------------------------------------------------------------------
1 |
16 | * {% spaceless %}
17 | *
18 | * foo
19 | *
20 | * {% endspaceless %}
21 | *
22 | * {# output will be foo
#}
23 | *
24 | */
25 | class Twig_TokenParser_Spaceless extends Twig_TokenParser
26 | {
27 | /**
28 | * Parses a token and returns a node.
29 | *
30 | * @param Twig_Token $token A Twig_Token instance
31 | *
32 | * @return Twig_NodeInterface A Twig_NodeInterface instance
33 | */
34 | public function parse(Twig_Token $token)
35 | {
36 | $lineno = $token->getLine();
37 |
38 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
39 | $body = $this->parser->subparse(array($this, 'decideSpacelessEnd'), true);
40 | $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
41 |
42 | return new Twig_Node_Spaceless($body, $lineno, $this->getTag());
43 | }
44 |
45 | public function decideSpacelessEnd(Twig_Token $token)
46 | {
47 | return $token->test('endspaceless');
48 | }
49 |
50 | /**
51 | * Gets the tag name associated with this token parser.
52 | *
53 | * @return string The tag name
54 | */
55 | public function getTag()
56 | {
57 | return 'spaceless';
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TokenParserBrokerInterface.php:
--------------------------------------------------------------------------------
1 |
19 | * @deprecated since 1.12 (to be removed in 2.0)
20 | */
21 | interface Twig_TokenParserBrokerInterface
22 | {
23 | /**
24 | * Gets a TokenParser suitable for a tag.
25 | *
26 | * @param string $tag A tag name
27 | *
28 | * @return null|Twig_TokenParserInterface A Twig_TokenParserInterface or null if no suitable TokenParser was found
29 | */
30 | public function getTokenParser($tag);
31 |
32 | /**
33 | * Calls Twig_TokenParserInterface::setParser on all parsers the implementation knows of.
34 | *
35 | * @param Twig_ParserInterface $parser A Twig_ParserInterface interface
36 | */
37 | public function setParser(Twig_ParserInterface $parser);
38 |
39 | /**
40 | * Gets the Twig_ParserInterface.
41 | *
42 | * @return null|Twig_ParserInterface A Twig_ParserInterface instance or null
43 | */
44 | public function getParser();
45 | }
46 |
--------------------------------------------------------------------------------
/inc/libraries/Twig/TokenParserInterface.php:
--------------------------------------------------------------------------------
1 |
16 | */
17 | interface Twig_TokenParserInterface
18 | {
19 | /**
20 | * Sets the parser associated with this token parser
21 | *
22 | * @param $parser A Twig_Parser instance
23 | */
24 | public function setParser(Twig_Parser $parser);
25 |
26 | /**
27 | * Parses a token and returns a node.
28 | *
29 | * @param Twig_Token $token A Twig_Token instance
30 | *
31 | * @return Twig_NodeInterface A Twig_NodeInterface instance
32 | *
33 | * @throws Twig_Error_Syntax
34 | */
35 | public function parse(Twig_Token $token);
36 |
37 | /**
38 | * Gets the tag name associated with this token parser.
39 | *
40 | * @return string The tag name
41 | */
42 | public function getTag();
43 | }
44 |
--------------------------------------------------------------------------------
/inc/libraries/captcha/captcha.php:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/captcha.php
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/fonts/AntykwaBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/AntykwaBold.ttf
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/fonts/Candice.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/Candice.ttf
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/fonts/Ding-DongDaddyO.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/Ding-DongDaddyO.ttf
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/fonts/Duality.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/Duality.ttf
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/fonts/Heineken.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/Heineken.ttf
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/fonts/Jura.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/Jura.ttf
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/fonts/StayPuft.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/StayPuft.ttf
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/fonts/TimesNewRomanBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/TimesNewRomanBold.ttf
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/fonts/VeraSansBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/digital-ghost/scanlab/f872ded3989de5e1af68e5a319cb295a8acdfda9/inc/libraries/captcha/resources/fonts/VeraSansBold.ttf
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/tools/dictionary-import/README.txt:
--------------------------------------------------------------------------------
1 | This script reads an standard words file (one word per line) and saves
2 | a new word file with the format needed by the cool-php-capcha script.
3 |
4 | For prevent remote web access, the output file will be a PHP script
5 | and must have the .php extension
6 |
7 | Usage: importwords.php
8 |
9 | Example: importwords.php english.txt en.php
10 |
11 |
12 |
--------------------------------------------------------------------------------
/inc/libraries/captcha/resources/tools/dictionary-import/importwords.php:
--------------------------------------------------------------------------------
1 |
7 | * @license GPLv3
8 | * @link http://code.google.com/p/cool-php-captcha
9 | * @package captcha
10 | *
11 | */
12 |
13 |
14 | /** Word lengths */
15 | $minLength = 5;
16 | $maxLength = 8;
17 |
18 |
19 |
20 |
21 |
22 | if ($argc < 3) {
23 | die("Usage: $argv[0] infile outfile\n");
24 | }
25 |
26 |
27 |
28 |
29 |
30 | if (!file_exists($argv[1])) {
31 | die("File '$argv[1]' doesn't exists\n");
32 | }
33 |
34 |
35 |
36 | $fp = fopen($argv[1], "r");
37 | $fp2 = fopen($argv[2], "w");
38 | fwrite($fp2, "=$minLength && $strlen<=$maxLength && preg_match("/^[a-z]+$/", $lin)) {
44 | $lin = str_pad($lin, $maxLength);
45 | fwrite($fp2, "$lin\n");
46 | }
47 | }
48 | fwrite($fp2, "*/ ?>\n");
49 |
50 | fclose($fp);
51 | fclose($fp2);
52 |
53 |
54 |
55 | ?>
56 |
--------------------------------------------------------------------------------
/inc/templates/auth/login.html:
--------------------------------------------------------------------------------
1 | {% include "header.html" %}
2 | {% include "navi.html" %}
3 |
4 |
16 |
17 | {% include "footer.html" %}
18 |
19 |
--------------------------------------------------------------------------------
/inc/templates/auth/register.html:
--------------------------------------------------------------------------------
1 | {% include "header.html" %}
2 | {% include "navi.html" %}
3 |
4 |
20 |
21 | {% include "footer.html" %}
22 |
23 |
--------------------------------------------------------------------------------
/inc/templates/error.html:
--------------------------------------------------------------------------------
1 | {% include 'header.html' %}
2 | {% include 'navi.html' %}
3 |
4 |
5 | {{ error_message }}
6 |
7 |
8 | {% include 'footer.html' %}
9 |
--------------------------------------------------------------------------------
/inc/templates/error_page.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ERROR
5 |
17 |
18 |
19 |
20 |
21 |
22 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/inc/templates/footer.html:
--------------------------------------------------------------------------------
1 |
2 |