Page MenuHomePhorge

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
diff --git a/lib/viewers/pdf/cmaps/78-EUC-H.bcmap b/lib/viewers/pdf/cmaps/78-EUC-H.bcmap
new file mode 100644
index 0000000..2655fc7
Binary files /dev/null and b/lib/viewers/pdf/cmaps/78-EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/78-EUC-V.bcmap b/lib/viewers/pdf/cmaps/78-EUC-V.bcmap
new file mode 100644
index 0000000..f1ed853
Binary files /dev/null and b/lib/viewers/pdf/cmaps/78-EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/78-H.bcmap b/lib/viewers/pdf/cmaps/78-H.bcmap
new file mode 100644
index 0000000..39e89d3
Binary files /dev/null and b/lib/viewers/pdf/cmaps/78-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/78-RKSJ-H.bcmap b/lib/viewers/pdf/cmaps/78-RKSJ-H.bcmap
new file mode 100644
index 0000000..e4167cb
Binary files /dev/null and b/lib/viewers/pdf/cmaps/78-RKSJ-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/78-RKSJ-V.bcmap b/lib/viewers/pdf/cmaps/78-RKSJ-V.bcmap
new file mode 100644
index 0000000..50b1646
Binary files /dev/null and b/lib/viewers/pdf/cmaps/78-RKSJ-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/78-V.bcmap b/lib/viewers/pdf/cmaps/78-V.bcmap
new file mode 100644
index 0000000..d7af99b
Binary files /dev/null and b/lib/viewers/pdf/cmaps/78-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/78ms-RKSJ-H.bcmap b/lib/viewers/pdf/cmaps/78ms-RKSJ-H.bcmap
new file mode 100644
index 0000000..37077d0
Binary files /dev/null and b/lib/viewers/pdf/cmaps/78ms-RKSJ-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/78ms-RKSJ-V.bcmap b/lib/viewers/pdf/cmaps/78ms-RKSJ-V.bcmap
new file mode 100644
index 0000000..acf2323
Binary files /dev/null and b/lib/viewers/pdf/cmaps/78ms-RKSJ-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/83pv-RKSJ-H.bcmap b/lib/viewers/pdf/cmaps/83pv-RKSJ-H.bcmap
new file mode 100644
index 0000000..2359bc5
Binary files /dev/null and b/lib/viewers/pdf/cmaps/83pv-RKSJ-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/90ms-RKSJ-H.bcmap b/lib/viewers/pdf/cmaps/90ms-RKSJ-H.bcmap
new file mode 100644
index 0000000..af82938
Binary files /dev/null and b/lib/viewers/pdf/cmaps/90ms-RKSJ-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/90ms-RKSJ-V.bcmap b/lib/viewers/pdf/cmaps/90ms-RKSJ-V.bcmap
new file mode 100644
index 0000000..780549d
Binary files /dev/null and b/lib/viewers/pdf/cmaps/90ms-RKSJ-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/90msp-RKSJ-H.bcmap b/lib/viewers/pdf/cmaps/90msp-RKSJ-H.bcmap
new file mode 100644
index 0000000..bfd3119
Binary files /dev/null and b/lib/viewers/pdf/cmaps/90msp-RKSJ-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/90msp-RKSJ-V.bcmap b/lib/viewers/pdf/cmaps/90msp-RKSJ-V.bcmap
new file mode 100644
index 0000000..25ef14a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/90msp-RKSJ-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/90pv-RKSJ-H.bcmap b/lib/viewers/pdf/cmaps/90pv-RKSJ-H.bcmap
new file mode 100644
index 0000000..02f713b
Binary files /dev/null and b/lib/viewers/pdf/cmaps/90pv-RKSJ-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/90pv-RKSJ-V.bcmap b/lib/viewers/pdf/cmaps/90pv-RKSJ-V.bcmap
new file mode 100644
index 0000000..d08e0cc
Binary files /dev/null and b/lib/viewers/pdf/cmaps/90pv-RKSJ-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Add-H.bcmap b/lib/viewers/pdf/cmaps/Add-H.bcmap
new file mode 100644
index 0000000..59442ac
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Add-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Add-RKSJ-H.bcmap b/lib/viewers/pdf/cmaps/Add-RKSJ-H.bcmap
new file mode 100644
index 0000000..a3065e4
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Add-RKSJ-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Add-RKSJ-V.bcmap b/lib/viewers/pdf/cmaps/Add-RKSJ-V.bcmap
new file mode 100644
index 0000000..040014c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Add-RKSJ-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Add-V.bcmap b/lib/viewers/pdf/cmaps/Add-V.bcmap
new file mode 100644
index 0000000..2f816d3
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Add-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-CNS1-0.bcmap b/lib/viewers/pdf/cmaps/Adobe-CNS1-0.bcmap
new file mode 100644
index 0000000..88ec04a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-CNS1-0.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-CNS1-1.bcmap b/lib/viewers/pdf/cmaps/Adobe-CNS1-1.bcmap
new file mode 100644
index 0000000..03a5014
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-CNS1-1.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-CNS1-2.bcmap b/lib/viewers/pdf/cmaps/Adobe-CNS1-2.bcmap
new file mode 100644
index 0000000..2aa9514
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-CNS1-2.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-CNS1-3.bcmap b/lib/viewers/pdf/cmaps/Adobe-CNS1-3.bcmap
new file mode 100644
index 0000000..86d8b8c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-CNS1-3.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-CNS1-4.bcmap b/lib/viewers/pdf/cmaps/Adobe-CNS1-4.bcmap
new file mode 100644
index 0000000..f50fc6c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-CNS1-4.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-CNS1-5.bcmap b/lib/viewers/pdf/cmaps/Adobe-CNS1-5.bcmap
new file mode 100644
index 0000000..6caf4a8
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-CNS1-5.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-CNS1-6.bcmap b/lib/viewers/pdf/cmaps/Adobe-CNS1-6.bcmap
new file mode 100644
index 0000000..b77fb07
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-CNS1-6.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-CNS1-UCS2.bcmap b/lib/viewers/pdf/cmaps/Adobe-CNS1-UCS2.bcmap
new file mode 100644
index 0000000..69d79a2
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-CNS1-UCS2.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-GB1-0.bcmap b/lib/viewers/pdf/cmaps/Adobe-GB1-0.bcmap
new file mode 100644
index 0000000..3610108
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-GB1-0.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-GB1-1.bcmap b/lib/viewers/pdf/cmaps/Adobe-GB1-1.bcmap
new file mode 100644
index 0000000..707bb10
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-GB1-1.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-GB1-2.bcmap b/lib/viewers/pdf/cmaps/Adobe-GB1-2.bcmap
new file mode 100644
index 0000000..f7648cc
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-GB1-2.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-GB1-3.bcmap b/lib/viewers/pdf/cmaps/Adobe-GB1-3.bcmap
new file mode 100644
index 0000000..8521458
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-GB1-3.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-GB1-4.bcmap b/lib/viewers/pdf/cmaps/Adobe-GB1-4.bcmap
new file mode 100644
index 0000000..e40c63a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-GB1-4.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-GB1-5.bcmap b/lib/viewers/pdf/cmaps/Adobe-GB1-5.bcmap
new file mode 100644
index 0000000..d7623b5
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-GB1-5.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-GB1-UCS2.bcmap b/lib/viewers/pdf/cmaps/Adobe-GB1-UCS2.bcmap
new file mode 100644
index 0000000..7586525
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-GB1-UCS2.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Japan1-0.bcmap b/lib/viewers/pdf/cmaps/Adobe-Japan1-0.bcmap
new file mode 100644
index 0000000..f0e94ec
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Japan1-0.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Japan1-1.bcmap b/lib/viewers/pdf/cmaps/Adobe-Japan1-1.bcmap
new file mode 100644
index 0000000..dad42c5
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Japan1-1.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Japan1-2.bcmap b/lib/viewers/pdf/cmaps/Adobe-Japan1-2.bcmap
new file mode 100644
index 0000000..090819a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Japan1-2.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Japan1-3.bcmap b/lib/viewers/pdf/cmaps/Adobe-Japan1-3.bcmap
new file mode 100644
index 0000000..087dfc1
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Japan1-3.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Japan1-4.bcmap b/lib/viewers/pdf/cmaps/Adobe-Japan1-4.bcmap
new file mode 100644
index 0000000..46aa9bf
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Japan1-4.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Japan1-5.bcmap b/lib/viewers/pdf/cmaps/Adobe-Japan1-5.bcmap
new file mode 100644
index 0000000..5b4b65c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Japan1-5.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Japan1-6.bcmap b/lib/viewers/pdf/cmaps/Adobe-Japan1-6.bcmap
new file mode 100644
index 0000000..e77d699
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Japan1-6.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Japan1-UCS2.bcmap b/lib/viewers/pdf/cmaps/Adobe-Japan1-UCS2.bcmap
new file mode 100644
index 0000000..128a141
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Japan1-UCS2.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Korea1-0.bcmap b/lib/viewers/pdf/cmaps/Adobe-Korea1-0.bcmap
new file mode 100644
index 0000000..cef1a99
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Korea1-0.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Korea1-1.bcmap b/lib/viewers/pdf/cmaps/Adobe-Korea1-1.bcmap
new file mode 100644
index 0000000..11ffa36
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Korea1-1.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Korea1-2.bcmap b/lib/viewers/pdf/cmaps/Adobe-Korea1-2.bcmap
new file mode 100644
index 0000000..3172308
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Korea1-2.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Adobe-Korea1-UCS2.bcmap b/lib/viewers/pdf/cmaps/Adobe-Korea1-UCS2.bcmap
new file mode 100644
index 0000000..f3371c0
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Adobe-Korea1-UCS2.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/B5-H.bcmap b/lib/viewers/pdf/cmaps/B5-H.bcmap
new file mode 100644
index 0000000..beb4d22
Binary files /dev/null and b/lib/viewers/pdf/cmaps/B5-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/B5-V.bcmap b/lib/viewers/pdf/cmaps/B5-V.bcmap
new file mode 100644
index 0000000..2d4f87d
Binary files /dev/null and b/lib/viewers/pdf/cmaps/B5-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/B5pc-H.bcmap b/lib/viewers/pdf/cmaps/B5pc-H.bcmap
new file mode 100644
index 0000000..ce00131
Binary files /dev/null and b/lib/viewers/pdf/cmaps/B5pc-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/B5pc-V.bcmap b/lib/viewers/pdf/cmaps/B5pc-V.bcmap
new file mode 100644
index 0000000..73b99ff
Binary files /dev/null and b/lib/viewers/pdf/cmaps/B5pc-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/CNS-EUC-H.bcmap b/lib/viewers/pdf/cmaps/CNS-EUC-H.bcmap
new file mode 100644
index 0000000..61d1d0c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/CNS-EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/CNS-EUC-V.bcmap b/lib/viewers/pdf/cmaps/CNS-EUC-V.bcmap
new file mode 100644
index 0000000..1a393a5
Binary files /dev/null and b/lib/viewers/pdf/cmaps/CNS-EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/CNS1-H.bcmap b/lib/viewers/pdf/cmaps/CNS1-H.bcmap
new file mode 100644
index 0000000..f738e21
Binary files /dev/null and b/lib/viewers/pdf/cmaps/CNS1-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/CNS1-V.bcmap b/lib/viewers/pdf/cmaps/CNS1-V.bcmap
new file mode 100644
index 0000000..9c3169f
Binary files /dev/null and b/lib/viewers/pdf/cmaps/CNS1-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/CNS2-H.bcmap b/lib/viewers/pdf/cmaps/CNS2-H.bcmap
new file mode 100644
index 0000000..c89b352
Binary files /dev/null and b/lib/viewers/pdf/cmaps/CNS2-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/CNS2-V.bcmap b/lib/viewers/pdf/cmaps/CNS2-V.bcmap
new file mode 100644
index 0000000..7588cec
--- /dev/null
+++ b/lib/viewers/pdf/cmaps/CNS2-V.bcmap
@@ -0,0 +1,3 @@
+àRCopyright 1990-2009 Adobe Systems Incorporated.
+All rights reserved.
+See ./LICENSEáCNS2-H
\ No newline at end of file
diff --git a/lib/viewers/pdf/cmaps/ETHK-B5-H.bcmap b/lib/viewers/pdf/cmaps/ETHK-B5-H.bcmap
new file mode 100644
index 0000000..cb29415
Binary files /dev/null and b/lib/viewers/pdf/cmaps/ETHK-B5-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/ETHK-B5-V.bcmap b/lib/viewers/pdf/cmaps/ETHK-B5-V.bcmap
new file mode 100644
index 0000000..f09aec6
Binary files /dev/null and b/lib/viewers/pdf/cmaps/ETHK-B5-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/ETen-B5-H.bcmap b/lib/viewers/pdf/cmaps/ETen-B5-H.bcmap
new file mode 100644
index 0000000..c2d7746
Binary files /dev/null and b/lib/viewers/pdf/cmaps/ETen-B5-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/ETen-B5-V.bcmap b/lib/viewers/pdf/cmaps/ETen-B5-V.bcmap
new file mode 100644
index 0000000..89bff15
Binary files /dev/null and b/lib/viewers/pdf/cmaps/ETen-B5-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/ETenms-B5-H.bcmap b/lib/viewers/pdf/cmaps/ETenms-B5-H.bcmap
new file mode 100644
index 0000000..a7d69db
--- /dev/null
+++ b/lib/viewers/pdf/cmaps/ETenms-B5-H.bcmap
@@ -0,0 +1,3 @@
+àRCopyright 1990-2009 Adobe Systems Incorporated.
+All rights reserved.
+See ./LICENSEá ETen-B5-H` ^
\ No newline at end of file
diff --git a/lib/viewers/pdf/cmaps/ETenms-B5-V.bcmap b/lib/viewers/pdf/cmaps/ETenms-B5-V.bcmap
new file mode 100644
index 0000000..adc5d61
Binary files /dev/null and b/lib/viewers/pdf/cmaps/ETenms-B5-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/EUC-H.bcmap b/lib/viewers/pdf/cmaps/EUC-H.bcmap
new file mode 100644
index 0000000..e92ea5b
Binary files /dev/null and b/lib/viewers/pdf/cmaps/EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/EUC-V.bcmap b/lib/viewers/pdf/cmaps/EUC-V.bcmap
new file mode 100644
index 0000000..7a7c183
Binary files /dev/null and b/lib/viewers/pdf/cmaps/EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Ext-H.bcmap b/lib/viewers/pdf/cmaps/Ext-H.bcmap
new file mode 100644
index 0000000..3b5cde4
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Ext-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Ext-RKSJ-H.bcmap b/lib/viewers/pdf/cmaps/Ext-RKSJ-H.bcmap
new file mode 100644
index 0000000..ea4d2d9
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Ext-RKSJ-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Ext-RKSJ-V.bcmap b/lib/viewers/pdf/cmaps/Ext-RKSJ-V.bcmap
new file mode 100644
index 0000000..3457c27
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Ext-RKSJ-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Ext-V.bcmap b/lib/viewers/pdf/cmaps/Ext-V.bcmap
new file mode 100644
index 0000000..4999ca4
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Ext-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GB-EUC-H.bcmap b/lib/viewers/pdf/cmaps/GB-EUC-H.bcmap
new file mode 100644
index 0000000..e39908b
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GB-EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GB-EUC-V.bcmap b/lib/viewers/pdf/cmaps/GB-EUC-V.bcmap
new file mode 100644
index 0000000..d5be544
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GB-EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GB-H.bcmap b/lib/viewers/pdf/cmaps/GB-H.bcmap
new file mode 100644
index 0000000..39189c5
--- /dev/null
+++ b/lib/viewers/pdf/cmaps/GB-H.bcmap
@@ -0,0 +1,4 @@
+àRCopyright 1990-2009 Adobe Systems Incorporated.
+All rights reserved.
+See ./LICENSE!!º]aX!!]`21> p z$]‚"R‚d-Uƒ7*„ 4„%+ „Z „{/…%…<9K…b1]†."‡ ‰`]‡,"]ˆ
+"]ˆh"]‰F"]Š$"]‹"]‹`"]Œ>"]"]z"]ŽX"]6"]"]r"]‘P"]’."]“ "]“j"]”H"]•&"]–"]–b"]—@"]˜"]˜|"]™Z"]š8"]›"]›t"]œR"]0"]ž"]žl"]ŸJ"] ("]¡"]¡d"]¢B"]£ "X£~']¤W"]¥5"]¦"]¦q"]§O"]¨-"]© "]©i"]ªG"]«%"]¬"]¬a"]­?"]®"]®{"]¯Y"]°7"]±"]±s"]²Q"]³/"]´ "]´k"]µI"]¶'"]·"]·c"]¸A"]¹"]¹}"]º["]»9
\ No newline at end of file
diff --git a/lib/viewers/pdf/cmaps/GB-V.bcmap b/lib/viewers/pdf/cmaps/GB-V.bcmap
new file mode 100644
index 0000000..3108345
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GB-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBK-EUC-H.bcmap b/lib/viewers/pdf/cmaps/GBK-EUC-H.bcmap
new file mode 100644
index 0000000..05fff7e
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBK-EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBK-EUC-V.bcmap b/lib/viewers/pdf/cmaps/GBK-EUC-V.bcmap
new file mode 100644
index 0000000..0cdf6be
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBK-EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBK2K-H.bcmap b/lib/viewers/pdf/cmaps/GBK2K-H.bcmap
new file mode 100644
index 0000000..46f6ba5
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBK2K-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBK2K-V.bcmap b/lib/viewers/pdf/cmaps/GBK2K-V.bcmap
new file mode 100644
index 0000000..d9a9479
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBK2K-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBKp-EUC-H.bcmap b/lib/viewers/pdf/cmaps/GBKp-EUC-H.bcmap
new file mode 100644
index 0000000..5cb0af6
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBKp-EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBKp-EUC-V.bcmap b/lib/viewers/pdf/cmaps/GBKp-EUC-V.bcmap
new file mode 100644
index 0000000..bca93b8
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBKp-EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBT-EUC-H.bcmap b/lib/viewers/pdf/cmaps/GBT-EUC-H.bcmap
new file mode 100644
index 0000000..4b4e2d3
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBT-EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBT-EUC-V.bcmap b/lib/viewers/pdf/cmaps/GBT-EUC-V.bcmap
new file mode 100644
index 0000000..38f7066
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBT-EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBT-H.bcmap b/lib/viewers/pdf/cmaps/GBT-H.bcmap
new file mode 100644
index 0000000..8437ac3
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBT-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBT-V.bcmap b/lib/viewers/pdf/cmaps/GBT-V.bcmap
new file mode 100644
index 0000000..697ab4a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBT-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBTpc-EUC-H.bcmap b/lib/viewers/pdf/cmaps/GBTpc-EUC-H.bcmap
new file mode 100644
index 0000000..f6e50e8
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBTpc-EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBTpc-EUC-V.bcmap b/lib/viewers/pdf/cmaps/GBTpc-EUC-V.bcmap
new file mode 100644
index 0000000..6c0d71a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBTpc-EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBpc-EUC-H.bcmap b/lib/viewers/pdf/cmaps/GBpc-EUC-H.bcmap
new file mode 100644
index 0000000..c9edf67
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBpc-EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/GBpc-EUC-V.bcmap b/lib/viewers/pdf/cmaps/GBpc-EUC-V.bcmap
new file mode 100644
index 0000000..31450c9
Binary files /dev/null and b/lib/viewers/pdf/cmaps/GBpc-EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/H.bcmap b/lib/viewers/pdf/cmaps/H.bcmap
new file mode 100644
index 0000000..7b24ea4
Binary files /dev/null and b/lib/viewers/pdf/cmaps/H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKdla-B5-H.bcmap b/lib/viewers/pdf/cmaps/HKdla-B5-H.bcmap
new file mode 100644
index 0000000..7d30c05
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKdla-B5-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKdla-B5-V.bcmap b/lib/viewers/pdf/cmaps/HKdla-B5-V.bcmap
new file mode 100644
index 0000000..7894694
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKdla-B5-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKdlb-B5-H.bcmap b/lib/viewers/pdf/cmaps/HKdlb-B5-H.bcmap
new file mode 100644
index 0000000..d829a23
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKdlb-B5-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKdlb-B5-V.bcmap b/lib/viewers/pdf/cmaps/HKdlb-B5-V.bcmap
new file mode 100644
index 0000000..2b572b5
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKdlb-B5-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKgccs-B5-H.bcmap b/lib/viewers/pdf/cmaps/HKgccs-B5-H.bcmap
new file mode 100644
index 0000000..971a4f2
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKgccs-B5-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKgccs-B5-V.bcmap b/lib/viewers/pdf/cmaps/HKgccs-B5-V.bcmap
new file mode 100644
index 0000000..d353ca2
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKgccs-B5-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKm314-B5-H.bcmap b/lib/viewers/pdf/cmaps/HKm314-B5-H.bcmap
new file mode 100644
index 0000000..576dc01
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKm314-B5-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKm314-B5-V.bcmap b/lib/viewers/pdf/cmaps/HKm314-B5-V.bcmap
new file mode 100644
index 0000000..0e96d0e
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKm314-B5-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKm471-B5-H.bcmap b/lib/viewers/pdf/cmaps/HKm471-B5-H.bcmap
new file mode 100644
index 0000000..11d170c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKm471-B5-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKm471-B5-V.bcmap b/lib/viewers/pdf/cmaps/HKm471-B5-V.bcmap
new file mode 100644
index 0000000..54959bf
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKm471-B5-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKscs-B5-H.bcmap b/lib/viewers/pdf/cmaps/HKscs-B5-H.bcmap
new file mode 100644
index 0000000..6ef7857
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKscs-B5-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/HKscs-B5-V.bcmap b/lib/viewers/pdf/cmaps/HKscs-B5-V.bcmap
new file mode 100644
index 0000000..1fb2fa2
Binary files /dev/null and b/lib/viewers/pdf/cmaps/HKscs-B5-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Hankaku.bcmap b/lib/viewers/pdf/cmaps/Hankaku.bcmap
new file mode 100644
index 0000000..4b8ec7f
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Hankaku.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Hiragana.bcmap b/lib/viewers/pdf/cmaps/Hiragana.bcmap
new file mode 100644
index 0000000..17e983e
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Hiragana.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSC-EUC-H.bcmap b/lib/viewers/pdf/cmaps/KSC-EUC-H.bcmap
new file mode 100644
index 0000000..a45c65f
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSC-EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSC-EUC-V.bcmap b/lib/viewers/pdf/cmaps/KSC-EUC-V.bcmap
new file mode 100644
index 0000000..0e7b21f
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSC-EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSC-H.bcmap b/lib/viewers/pdf/cmaps/KSC-H.bcmap
new file mode 100644
index 0000000..b9b22b6
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSC-Johab-H.bcmap b/lib/viewers/pdf/cmaps/KSC-Johab-H.bcmap
new file mode 100644
index 0000000..2531ffc
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSC-Johab-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSC-Johab-V.bcmap b/lib/viewers/pdf/cmaps/KSC-Johab-V.bcmap
new file mode 100644
index 0000000..367ceb2
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSC-Johab-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSC-V.bcmap b/lib/viewers/pdf/cmaps/KSC-V.bcmap
new file mode 100644
index 0000000..6ae2f0b
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSCms-UHC-H.bcmap b/lib/viewers/pdf/cmaps/KSCms-UHC-H.bcmap
new file mode 100644
index 0000000..a8d4240
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSCms-UHC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSCms-UHC-HW-H.bcmap b/lib/viewers/pdf/cmaps/KSCms-UHC-HW-H.bcmap
new file mode 100644
index 0000000..8b4ae18
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSCms-UHC-HW-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSCms-UHC-HW-V.bcmap b/lib/viewers/pdf/cmaps/KSCms-UHC-HW-V.bcmap
new file mode 100644
index 0000000..b655dbc
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSCms-UHC-HW-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSCms-UHC-V.bcmap b/lib/viewers/pdf/cmaps/KSCms-UHC-V.bcmap
new file mode 100644
index 0000000..21f97f6
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSCms-UHC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSCpc-EUC-H.bcmap b/lib/viewers/pdf/cmaps/KSCpc-EUC-H.bcmap
new file mode 100644
index 0000000..e06f361
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSCpc-EUC-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/KSCpc-EUC-V.bcmap b/lib/viewers/pdf/cmaps/KSCpc-EUC-V.bcmap
new file mode 100644
index 0000000..f3c9113
Binary files /dev/null and b/lib/viewers/pdf/cmaps/KSCpc-EUC-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Katakana.bcmap b/lib/viewers/pdf/cmaps/Katakana.bcmap
new file mode 100644
index 0000000..524303c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Katakana.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/LICENSE b/lib/viewers/pdf/cmaps/LICENSE
new file mode 100644
index 0000000..b1ad168
--- /dev/null
+++ b/lib/viewers/pdf/cmaps/LICENSE
@@ -0,0 +1,36 @@
+%%Copyright: -----------------------------------------------------------
+%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
+%%Copyright: All rights reserved.
+%%Copyright:
+%%Copyright: Redistribution and use in source and binary forms, with or
+%%Copyright: without modification, are permitted provided that the
+%%Copyright: following conditions are met:
+%%Copyright:
+%%Copyright: Redistributions of source code must retain the above
+%%Copyright: copyright notice, this list of conditions and the following
+%%Copyright: disclaimer.
+%%Copyright:
+%%Copyright: Redistributions in binary form must reproduce the above
+%%Copyright: copyright notice, this list of conditions and the following
+%%Copyright: disclaimer in the documentation and/or other materials
+%%Copyright: provided with the distribution.
+%%Copyright:
+%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
+%%Copyright: of its contributors may be used to endorse or promote
+%%Copyright: products derived from this software without specific prior
+%%Copyright: written permission.
+%%Copyright:
+%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+%%Copyright: -----------------------------------------------------------
diff --git a/lib/viewers/pdf/cmaps/NWP-H.bcmap b/lib/viewers/pdf/cmaps/NWP-H.bcmap
new file mode 100644
index 0000000..afc5e4b
Binary files /dev/null and b/lib/viewers/pdf/cmaps/NWP-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/NWP-V.bcmap b/lib/viewers/pdf/cmaps/NWP-V.bcmap
new file mode 100644
index 0000000..bb5785e
Binary files /dev/null and b/lib/viewers/pdf/cmaps/NWP-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/RKSJ-H.bcmap b/lib/viewers/pdf/cmaps/RKSJ-H.bcmap
new file mode 100644
index 0000000..fb8d298
Binary files /dev/null and b/lib/viewers/pdf/cmaps/RKSJ-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/RKSJ-V.bcmap b/lib/viewers/pdf/cmaps/RKSJ-V.bcmap
new file mode 100644
index 0000000..a2555a6
Binary files /dev/null and b/lib/viewers/pdf/cmaps/RKSJ-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/Roman.bcmap b/lib/viewers/pdf/cmaps/Roman.bcmap
new file mode 100644
index 0000000..f896dcf
Binary files /dev/null and b/lib/viewers/pdf/cmaps/Roman.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniCNS-UCS2-H.bcmap b/lib/viewers/pdf/cmaps/UniCNS-UCS2-H.bcmap
new file mode 100644
index 0000000..d5db27c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniCNS-UCS2-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniCNS-UCS2-V.bcmap b/lib/viewers/pdf/cmaps/UniCNS-UCS2-V.bcmap
new file mode 100644
index 0000000..1dc9b7a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniCNS-UCS2-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniCNS-UTF16-H.bcmap b/lib/viewers/pdf/cmaps/UniCNS-UTF16-H.bcmap
new file mode 100644
index 0000000..961afef
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniCNS-UTF16-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniCNS-UTF16-V.bcmap b/lib/viewers/pdf/cmaps/UniCNS-UTF16-V.bcmap
new file mode 100644
index 0000000..df0cffe
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniCNS-UTF16-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniCNS-UTF32-H.bcmap b/lib/viewers/pdf/cmaps/UniCNS-UTF32-H.bcmap
new file mode 100644
index 0000000..1ab18a1
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniCNS-UTF32-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniCNS-UTF32-V.bcmap b/lib/viewers/pdf/cmaps/UniCNS-UTF32-V.bcmap
new file mode 100644
index 0000000..ad14662
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniCNS-UTF32-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniCNS-UTF8-H.bcmap b/lib/viewers/pdf/cmaps/UniCNS-UTF8-H.bcmap
new file mode 100644
index 0000000..83c6bd7
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniCNS-UTF8-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniCNS-UTF8-V.bcmap b/lib/viewers/pdf/cmaps/UniCNS-UTF8-V.bcmap
new file mode 100644
index 0000000..22a27e4
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniCNS-UTF8-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniGB-UCS2-H.bcmap b/lib/viewers/pdf/cmaps/UniGB-UCS2-H.bcmap
new file mode 100644
index 0000000..5bd6228
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniGB-UCS2-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniGB-UCS2-V.bcmap b/lib/viewers/pdf/cmaps/UniGB-UCS2-V.bcmap
new file mode 100644
index 0000000..53c534b
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniGB-UCS2-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniGB-UTF16-H.bcmap b/lib/viewers/pdf/cmaps/UniGB-UTF16-H.bcmap
new file mode 100644
index 0000000..b95045b
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniGB-UTF16-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniGB-UTF16-V.bcmap b/lib/viewers/pdf/cmaps/UniGB-UTF16-V.bcmap
new file mode 100644
index 0000000..51f023e
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniGB-UTF16-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniGB-UTF32-H.bcmap b/lib/viewers/pdf/cmaps/UniGB-UTF32-H.bcmap
new file mode 100644
index 0000000..f0dbd14
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniGB-UTF32-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniGB-UTF32-V.bcmap b/lib/viewers/pdf/cmaps/UniGB-UTF32-V.bcmap
new file mode 100644
index 0000000..ce9c30a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniGB-UTF32-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniGB-UTF8-H.bcmap b/lib/viewers/pdf/cmaps/UniGB-UTF8-H.bcmap
new file mode 100644
index 0000000..982ca46
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniGB-UTF8-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniGB-UTF8-V.bcmap b/lib/viewers/pdf/cmaps/UniGB-UTF8-V.bcmap
new file mode 100644
index 0000000..f78020d
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniGB-UTF8-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS-UCS2-H.bcmap b/lib/viewers/pdf/cmaps/UniJIS-UCS2-H.bcmap
new file mode 100644
index 0000000..7daf56a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS-UCS2-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS-UCS2-HW-H.bcmap b/lib/viewers/pdf/cmaps/UniJIS-UCS2-HW-H.bcmap
new file mode 100644
index 0000000..ac9975c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS-UCS2-HW-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS-UCS2-HW-V.bcmap b/lib/viewers/pdf/cmaps/UniJIS-UCS2-HW-V.bcmap
new file mode 100644
index 0000000..3da0a1c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS-UCS2-HW-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS-UCS2-V.bcmap b/lib/viewers/pdf/cmaps/UniJIS-UCS2-V.bcmap
new file mode 100644
index 0000000..c50b9dd
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS-UCS2-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS-UTF16-H.bcmap b/lib/viewers/pdf/cmaps/UniJIS-UTF16-H.bcmap
new file mode 100644
index 0000000..6761344
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS-UTF16-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS-UTF16-V.bcmap b/lib/viewers/pdf/cmaps/UniJIS-UTF16-V.bcmap
new file mode 100644
index 0000000..70bf90c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS-UTF16-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS-UTF32-H.bcmap b/lib/viewers/pdf/cmaps/UniJIS-UTF32-H.bcmap
new file mode 100644
index 0000000..7a83d53
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS-UTF32-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS-UTF32-V.bcmap b/lib/viewers/pdf/cmaps/UniJIS-UTF32-V.bcmap
new file mode 100644
index 0000000..7a87135
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS-UTF32-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS-UTF8-H.bcmap b/lib/viewers/pdf/cmaps/UniJIS-UTF8-H.bcmap
new file mode 100644
index 0000000..9f0334c
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS-UTF8-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS-UTF8-V.bcmap b/lib/viewers/pdf/cmaps/UniJIS-UTF8-V.bcmap
new file mode 100644
index 0000000..808a94f
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS-UTF8-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS2004-UTF16-H.bcmap b/lib/viewers/pdf/cmaps/UniJIS2004-UTF16-H.bcmap
new file mode 100644
index 0000000..d768bf8
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS2004-UTF16-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS2004-UTF16-V.bcmap b/lib/viewers/pdf/cmaps/UniJIS2004-UTF16-V.bcmap
new file mode 100644
index 0000000..3d5bf6f
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS2004-UTF16-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS2004-UTF32-H.bcmap b/lib/viewers/pdf/cmaps/UniJIS2004-UTF32-H.bcmap
new file mode 100644
index 0000000..09eee10
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS2004-UTF32-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS2004-UTF32-V.bcmap b/lib/viewers/pdf/cmaps/UniJIS2004-UTF32-V.bcmap
new file mode 100644
index 0000000..6c54600
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS2004-UTF32-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS2004-UTF8-H.bcmap b/lib/viewers/pdf/cmaps/UniJIS2004-UTF8-H.bcmap
new file mode 100644
index 0000000..1b1a64f
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS2004-UTF8-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJIS2004-UTF8-V.bcmap b/lib/viewers/pdf/cmaps/UniJIS2004-UTF8-V.bcmap
new file mode 100644
index 0000000..994aa9e
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJIS2004-UTF8-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJISPro-UCS2-HW-V.bcmap b/lib/viewers/pdf/cmaps/UniJISPro-UCS2-HW-V.bcmap
new file mode 100644
index 0000000..643f921
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJISPro-UCS2-HW-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJISPro-UCS2-V.bcmap b/lib/viewers/pdf/cmaps/UniJISPro-UCS2-V.bcmap
new file mode 100644
index 0000000..c148f67
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJISPro-UCS2-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJISPro-UTF8-V.bcmap b/lib/viewers/pdf/cmaps/UniJISPro-UTF8-V.bcmap
new file mode 100644
index 0000000..1849d80
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJISPro-UTF8-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJISX0213-UTF32-H.bcmap b/lib/viewers/pdf/cmaps/UniJISX0213-UTF32-H.bcmap
new file mode 100644
index 0000000..a83a677
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJISX0213-UTF32-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJISX0213-UTF32-V.bcmap b/lib/viewers/pdf/cmaps/UniJISX0213-UTF32-V.bcmap
new file mode 100644
index 0000000..f527248
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJISX0213-UTF32-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJISX02132004-UTF32-H.bcmap b/lib/viewers/pdf/cmaps/UniJISX02132004-UTF32-H.bcmap
new file mode 100644
index 0000000..e1a988d
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJISX02132004-UTF32-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniJISX02132004-UTF32-V.bcmap b/lib/viewers/pdf/cmaps/UniJISX02132004-UTF32-V.bcmap
new file mode 100644
index 0000000..47e054a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniJISX02132004-UTF32-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniKS-UCS2-H.bcmap b/lib/viewers/pdf/cmaps/UniKS-UCS2-H.bcmap
new file mode 100644
index 0000000..b5b9485
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniKS-UCS2-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniKS-UCS2-V.bcmap b/lib/viewers/pdf/cmaps/UniKS-UCS2-V.bcmap
new file mode 100644
index 0000000..026adca
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniKS-UCS2-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniKS-UTF16-H.bcmap b/lib/viewers/pdf/cmaps/UniKS-UTF16-H.bcmap
new file mode 100644
index 0000000..fd4e66e
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniKS-UTF16-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniKS-UTF16-V.bcmap b/lib/viewers/pdf/cmaps/UniKS-UTF16-V.bcmap
new file mode 100644
index 0000000..075efb7
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniKS-UTF16-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniKS-UTF32-H.bcmap b/lib/viewers/pdf/cmaps/UniKS-UTF32-H.bcmap
new file mode 100644
index 0000000..769d214
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniKS-UTF32-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniKS-UTF32-V.bcmap b/lib/viewers/pdf/cmaps/UniKS-UTF32-V.bcmap
new file mode 100644
index 0000000..bdab208
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniKS-UTF32-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniKS-UTF8-H.bcmap b/lib/viewers/pdf/cmaps/UniKS-UTF8-H.bcmap
new file mode 100644
index 0000000..6ff8674
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniKS-UTF8-H.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/UniKS-UTF8-V.bcmap b/lib/viewers/pdf/cmaps/UniKS-UTF8-V.bcmap
new file mode 100644
index 0000000..8dfa76a
Binary files /dev/null and b/lib/viewers/pdf/cmaps/UniKS-UTF8-V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/V.bcmap b/lib/viewers/pdf/cmaps/V.bcmap
new file mode 100644
index 0000000..fdec990
Binary files /dev/null and b/lib/viewers/pdf/cmaps/V.bcmap differ
diff --git a/lib/viewers/pdf/cmaps/WP-Symbol.bcmap b/lib/viewers/pdf/cmaps/WP-Symbol.bcmap
new file mode 100644
index 0000000..46729bb
Binary files /dev/null and b/lib/viewers/pdf/cmaps/WP-Symbol.bcmap differ
diff --git a/lib/viewers/pdf/compatibility.js b/lib/viewers/pdf/compatibility.js
index 0230dc5..07d26d3 100644
--- a/lib/viewers/pdf/compatibility.js
+++ b/lib/viewers/pdf/compatibility.js
@@ -1,440 +1,505 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
/* Copyright 2012 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* globals VBArray */
+/* globals VBArray, PDFJS */
'use strict';
+// Initializing PDFJS global object here, it case if we need to change/disable
+// some PDF.js features, e.g. range requests
+if (typeof PDFJS === 'undefined') {
+ (typeof window !== 'undefined' ? window : this).PDFJS = {};
+}
+
// Checking if the typed arrays are supported
+// Support: iOS<6.0 (subarray), IE<10, Android<4.0
(function checkTypedArrayCompatibility() {
if (typeof Uint8Array !== 'undefined') {
- // some mobile versions do not support subarray (e.g. safari 5 / iOS)
+ // Support: iOS<6.0
if (typeof Uint8Array.prototype.subarray === 'undefined') {
Uint8Array.prototype.subarray = function subarray(start, end) {
return new Uint8Array(this.slice(start, end));
};
Float32Array.prototype.subarray = function subarray(start, end) {
return new Float32Array(this.slice(start, end));
};
}
- // some mobile version might not support Float64Array
- if (typeof Float64Array === 'undefined')
+ // Support: Android<4.1
+ if (typeof Float64Array === 'undefined') {
window.Float64Array = Float32Array;
-
+ }
return;
}
function subarray(start, end) {
return new TypedArray(this.slice(start, end));
}
function setArrayOffset(array, offset) {
- if (arguments.length < 2)
+ if (arguments.length < 2) {
offset = 0;
- for (var i = 0, n = array.length; i < n; ++i, ++offset)
+ }
+ for (var i = 0, n = array.length; i < n; ++i, ++offset) {
this[offset] = array[i] & 0xFF;
+ }
}
function TypedArray(arg1) {
- var result;
+ var result, i, n;
if (typeof arg1 === 'number') {
result = [];
- for (var i = 0; i < arg1; ++i)
+ for (i = 0; i < arg1; ++i) {
result[i] = 0;
+ }
} else if ('slice' in arg1) {
result = arg1.slice(0);
} else {
result = [];
- for (var i = 0, n = arg1.length; i < n; ++i) {
+ for (i = 0, n = arg1.length; i < n; ++i) {
result[i] = arg1[i];
}
}
result.subarray = subarray;
result.buffer = result;
result.byteLength = result.length;
result.set = setArrayOffset;
- if (typeof arg1 === 'object' && arg1.buffer)
+ if (typeof arg1 === 'object' && arg1.buffer) {
result.buffer = arg1.buffer;
-
+ }
return result;
}
window.Uint8Array = TypedArray;
+ window.Int8Array = TypedArray;
// we don't need support for set, byteLength for 32-bit array
// so we can use the TypedArray as well
window.Uint32Array = TypedArray;
window.Int32Array = TypedArray;
window.Uint16Array = TypedArray;
window.Float32Array = TypedArray;
window.Float64Array = TypedArray;
})();
-// Object.create() ?
-(function checkObjectCreateCompatibility() {
- if (typeof Object.create !== 'undefined')
- return;
-
- Object.create = function objectCreate(proto) {
- function Constructor() {}
- Constructor.prototype = proto;
- return new Constructor();
- };
+// URL = URL || webkitURL
+// Support: Safari<7, Android 4.2+
+(function normalizeURLObject() {
+ if (!window.URL) {
+ window.URL = window.webkitURL;
+ }
})();
-// Object.defineProperty() ?
+// Object.defineProperty()?
+// Support: Android<4.0, Safari<5.1
(function checkObjectDefinePropertyCompatibility() {
if (typeof Object.defineProperty !== 'undefined') {
var definePropertyPossible = true;
try {
// some browsers (e.g. safari) cannot use defineProperty() on DOM objects
// and thus the native version is not sufficient
Object.defineProperty(new Image(), 'id', { value: 'test' });
// ... another test for android gb browser for non-DOM objects
var Test = function Test() {};
Test.prototype = { get id() { } };
Object.defineProperty(new Test(), 'id',
{ value: '', configurable: true, enumerable: true, writable: false });
} catch (e) {
definePropertyPossible = false;
}
- if (definePropertyPossible) return;
+ if (definePropertyPossible) {
+ return;
+ }
}
Object.defineProperty = function objectDefineProperty(obj, name, def) {
delete obj[name];
- if ('get' in def)
+ if ('get' in def) {
obj.__defineGetter__(name, def['get']);
- if ('set' in def)
+ }
+ if ('set' in def) {
obj.__defineSetter__(name, def['set']);
+ }
if ('value' in def) {
obj.__defineSetter__(name, function objectDefinePropertySetter(value) {
this.__defineGetter__(name, function objectDefinePropertyGetter() {
return value;
});
return value;
});
obj[name] = def.value;
}
};
})();
-// Object.keys() ?
-(function checkObjectKeysCompatibility() {
- if (typeof Object.keys !== 'undefined')
- return;
- Object.keys = function objectKeys(obj) {
- var result = [];
- for (var i in obj) {
- if (obj.hasOwnProperty(i))
- result.push(i);
- }
- return result;
- };
-})();
-
-// No readAsArrayBuffer ?
-(function checkFileReaderReadAsArrayBuffer() {
- if (typeof FileReader === 'undefined')
- return; // FileReader is not implemented
- var frPrototype = FileReader.prototype;
- // Older versions of Firefox might not have readAsArrayBuffer
- if ('readAsArrayBuffer' in frPrototype)
- return; // readAsArrayBuffer is implemented
- Object.defineProperty(frPrototype, 'readAsArrayBuffer', {
- value: function fileReaderReadAsArrayBuffer(blob) {
- var fileReader = new FileReader();
- var originalReader = this;
- fileReader.onload = function fileReaderOnload(evt) {
- var data = evt.target.result;
- var buffer = new ArrayBuffer(data.length);
- var uint8Array = new Uint8Array(buffer);
-
- for (var i = 0, ii = data.length; i < ii; i++)
- uint8Array[i] = data.charCodeAt(i);
-
- Object.defineProperty(originalReader, 'result', {
- value: buffer,
- enumerable: true,
- writable: false,
- configurable: true
- });
-
- var event = document.createEvent('HTMLEvents');
- event.initEvent('load', false, false);
- originalReader.dispatchEvent(event);
- };
- fileReader.readAsBinaryString(blob);
- }
- });
-})();
-
-// No XMLHttpRequest.response ?
+// No XMLHttpRequest#response?
+// Support: IE<11, Android <4.0
(function checkXMLHttpRequestResponseCompatibility() {
var xhrPrototype = XMLHttpRequest.prototype;
- if (!('overrideMimeType' in xhrPrototype)) {
+ var xhr = new XMLHttpRequest();
+ if (!('overrideMimeType' in xhr)) {
// IE10 might have response, but not overrideMimeType
+ // Support: IE10
Object.defineProperty(xhrPrototype, 'overrideMimeType', {
value: function xmlHttpRequestOverrideMimeType(mimeType) {}
});
}
- if ('response' in xhrPrototype ||
- 'mozResponseArrayBuffer' in xhrPrototype ||
- 'mozResponse' in xhrPrototype ||
- 'responseArrayBuffer' in xhrPrototype)
+ if ('response' in xhr || 'responseArrayBuffer' in xhr) {
return;
- // IE9 ?
+ }
+ // Support: IE9
if (typeof VBArray !== 'undefined') {
Object.defineProperty(xhrPrototype, 'response', {
get: function xmlHttpRequestResponseGet() {
return new Uint8Array(new VBArray(this.responseBody).toArray());
}
});
return;
}
// other browsers
function responseTypeSetter() {
// will be only called to set "arraybuffer"
this.overrideMimeType('text/plain; charset=x-user-defined');
}
- if (typeof xhrPrototype.overrideMimeType === 'function') {
+ if (typeof xhr.overrideMimeType === 'function') {
Object.defineProperty(xhrPrototype, 'responseType',
{ set: responseTypeSetter });
}
function responseGetter() {
var text = this.responseText;
var i, n = text.length;
var result = new Uint8Array(n);
- for (i = 0; i < n; ++i)
+ for (i = 0; i < n; ++i) {
result[i] = text.charCodeAt(i) & 0xFF;
+ }
return result;
}
Object.defineProperty(xhrPrototype, 'response', { get: responseGetter });
})();
// window.btoa (base64 encode function) ?
+// Support: IE<10
(function checkWindowBtoaCompatibility() {
- if ('btoa' in window)
+ if ('btoa' in window) {
return;
+ }
var digits =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
window.btoa = function windowBtoa(chars) {
var buffer = '';
var i, n;
for (i = 0, n = chars.length; i < n; i += 3) {
var b1 = chars.charCodeAt(i) & 0xFF;
var b2 = chars.charCodeAt(i + 1) & 0xFF;
var b3 = chars.charCodeAt(i + 2) & 0xFF;
var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);
var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;
var d4 = i + 2 < n ? (b3 & 0x3F) : 64;
buffer += (digits.charAt(d1) + digits.charAt(d2) +
digits.charAt(d3) + digits.charAt(d4));
}
return buffer;
};
})();
-// Function.prototype.bind ?
+// window.atob (base64 encode function)?
+// Support: IE<10
+(function checkWindowAtobCompatibility() {
+ if ('atob' in window) {
+ return;
+ }
+
+ // https://github.com/davidchambers/Base64.js
+ var digits =
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+ window.atob = function (input) {
+ input = input.replace(/=+$/, '');
+ if (input.length % 4 == 1) {
+ throw new Error('bad atob input');
+ }
+ for (
+ // initialize result and counters
+ var bc = 0, bs, buffer, idx = 0, output = '';
+ // get next character
+ buffer = input.charAt(idx++);
+ // character found in table?
+ // initialize bit storage and add its ascii value
+ ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
+ // and if not first of each 4 characters,
+ // convert the first 8 bits to one ascii character
+ bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
+ ) {
+ // try to find character in table (0-63, not found => -1)
+ buffer = digits.indexOf(buffer);
+ }
+ return output;
+ };
+})();
+
+// Function.prototype.bind?
+// Support: Android<4.0, iOS<6.0
(function checkFunctionPrototypeBindCompatibility() {
- if (typeof Function.prototype.bind !== 'undefined')
+ if (typeof Function.prototype.bind !== 'undefined') {
return;
+ }
Function.prototype.bind = function functionPrototypeBind(obj) {
var fn = this, headArgs = Array.prototype.slice.call(arguments, 1);
var bound = function functionPrototypeBindBound() {
- var args = Array.prototype.concat.apply(headArgs, arguments);
+ var args = headArgs.concat(Array.prototype.slice.call(arguments));
return fn.apply(obj, args);
};
return bound;
};
})();
-// IE9/10 text/html data URI
-(function checkDataURICompatibility() {
- if (!('documentMode' in document) ||
- document.documentMode !== 9 && document.documentMode !== 10)
- return;
- // overriding the src property
- var originalSrcDescriptor = Object.getOwnPropertyDescriptor(
- HTMLIFrameElement.prototype, 'src');
- Object.defineProperty(HTMLIFrameElement.prototype, 'src', {
- get: function htmlIFrameElementPrototypeSrcGet() { return this.$src; },
- set: function htmlIFrameElementPrototypeSrcSet(src) {
- this.$src = src;
- if (src.substr(0, 14) != 'data:text/html') {
- originalSrcDescriptor.set.call(this, src);
- return;
- }
- // for text/html, using blank document and then
- // document's open, write, and close operations
- originalSrcDescriptor.set.call(this, 'about:blank');
- setTimeout((function htmlIFrameElementPrototypeSrcOpenWriteClose() {
- var doc = this.contentDocument;
- doc.open('text/html');
- doc.write(src.substr(src.indexOf(',') + 1));
- doc.close();
- }).bind(this), 0);
- },
- enumerable: true
- });
-})();
-
// HTMLElement dataset property
+// Support: IE<11, Safari<5.1, Android<4.0
(function checkDatasetProperty() {
var div = document.createElement('div');
- if ('dataset' in div)
+ if ('dataset' in div) {
return; // dataset property exists
+ }
Object.defineProperty(HTMLElement.prototype, 'dataset', {
get: function() {
- if (this._dataset)
+ if (this._dataset) {
return this._dataset;
+ }
var dataset = {};
for (var j = 0, jj = this.attributes.length; j < jj; j++) {
var attribute = this.attributes[j];
- if (attribute.name.substring(0, 5) != 'data-')
+ if (attribute.name.substring(0, 5) != 'data-') {
continue;
+ }
var key = attribute.name.substring(5).replace(/\-([a-z])/g,
- function(all, ch) { return ch.toUpperCase(); });
+ function(all, ch) {
+ return ch.toUpperCase();
+ });
dataset[key] = attribute.value;
}
Object.defineProperty(this, '_dataset', {
value: dataset,
writable: false,
enumerable: false
});
return dataset;
},
enumerable: true
});
})();
// HTMLElement classList property
+// Support: IE<10, Android<4.0, iOS<5.0
(function checkClassListProperty() {
var div = document.createElement('div');
- if ('classList' in div)
+ if ('classList' in div) {
return; // classList property exists
+ }
function changeList(element, itemName, add, remove) {
var s = element.className || '';
var list = s.split(/\s+/g);
- if (list[0] === '') list.shift();
+ if (list[0] === '') {
+ list.shift();
+ }
var index = list.indexOf(itemName);
- if (index < 0 && add)
+ if (index < 0 && add) {
list.push(itemName);
- if (index >= 0 && remove)
+ }
+ if (index >= 0 && remove) {
list.splice(index, 1);
+ }
element.className = list.join(' ');
+ return (index >= 0);
}
var classListPrototype = {
add: function(name) {
changeList(this.element, name, true, false);
},
+ contains: function(name) {
+ return changeList(this.element, name, false, false);
+ },
remove: function(name) {
changeList(this.element, name, false, true);
},
toggle: function(name) {
changeList(this.element, name, true, true);
}
};
Object.defineProperty(HTMLElement.prototype, 'classList', {
get: function() {
- if (this._classList)
+ if (this._classList) {
return this._classList;
+ }
var classList = Object.create(classListPrototype, {
element: {
value: this,
writable: false,
enumerable: true
}
});
Object.defineProperty(this, '_classList', {
value: classList,
writable: false,
enumerable: false
});
return classList;
},
enumerable: true
});
})();
-// Check console compatability
+// Check console compatibility
+// In older IE versions the console object is not available
+// unless console is open.
+// Support: IE<10
(function checkConsoleCompatibility() {
if (!('console' in window)) {
window.console = {
log: function() {},
error: function() {},
warn: function() {}
};
} else if (!('bind' in console.log)) {
// native functions in IE9 might not have bind
console.log = (function(fn) {
return function(msg) { return fn(msg); };
})(console.log);
console.error = (function(fn) {
return function(msg) { return fn(msg); };
})(console.error);
console.warn = (function(fn) {
return function(msg) { return fn(msg); };
})(console.warn);
}
})();
// Check onclick compatibility in Opera
+// Support: Opera<15
(function checkOnClickCompatibility() {
// workaround for reported Opera bug DSK-354448:
// onclick fires on disabled buttons with opaque content
function ignoreIfTargetDisabled(event) {
if (isDisabled(event.target)) {
event.stopPropagation();
}
}
function isDisabled(node) {
return node.disabled || (node.parentNode && isDisabled(node.parentNode));
}
if (navigator.userAgent.indexOf('Opera') != -1) {
// use browser detection since we cannot feature-check this bug
document.addEventListener('click', ignoreIfTargetDisabled, true);
}
})();
+// Checks if possible to use URL.createObjectURL()
+// Support: IE
+(function checkOnBlobSupport() {
+ // sometimes IE loosing the data created with createObjectURL(), see #3977
+ if (navigator.userAgent.indexOf('Trident') >= 0) {
+ PDFJS.disableCreateObjectURL = true;
+ }
+})();
+
// Checks if navigator.language is supported
(function checkNavigatorLanguage() {
- if ('language' in navigator)
+ if ('language' in navigator &&
+ /^[a-z]+(-[A-Z]+)?$/.test(navigator.language)) {
return;
- Object.defineProperty(navigator, 'language', {
- get: function navigatorLanguage() {
- var language = navigator.userLanguage || 'en-US';
- return language.substring(0, 2).toLowerCase() +
- language.substring(2).toUpperCase();
- },
- enumerable: true
- });
+ }
+ function formatLocale(locale) {
+ var split = locale.split(/[-_]/);
+ split[0] = split[0].toLowerCase();
+ if (split.length > 1) {
+ split[1] = split[1].toUpperCase();
+ }
+ return split.join('-');
+ }
+ var language = navigator.language || navigator.userLanguage || 'en-US';
+ PDFJS.locale = formatLocale(language);
+})();
+
+(function checkRangeRequests() {
+ // Safari has issues with cached range requests see:
+ // https://github.com/mozilla/pdf.js/issues/3260
+ // Last tested with version 6.0.4.
+ // Support: Safari 6.0+
+ var isSafari = Object.prototype.toString.call(
+ window.HTMLElement).indexOf('Constructor') > 0;
+
+ // Older versions of Android (pre 3.0) has issues with range requests, see:
+ // https://github.com/mozilla/pdf.js/issues/3381.
+ // Make sure that we only match webkit-based Android browsers,
+ // since Firefox/Fennec works as expected.
+ // Support: Android<3.0
+ var regex = /Android\s[0-2][^\d]/;
+ var isOldAndroid = regex.test(navigator.userAgent);
+
+ if (isSafari || isOldAndroid) {
+ PDFJS.disableRange = true;
+ }
+})();
+
+// Check if the browser supports manipulation of the history.
+// Support: IE<10, Android<4.2
+(function checkHistoryManipulation() {
+ // Android 2.x has so buggy pushState support that it was removed in
+ // Android 3.0 and restored as late as in Android 4.2.
+ // Support: Android 2.x
+ if (!history.pushState || navigator.userAgent.indexOf('Android 2.') >= 0) {
+ PDFJS.disableHistory = true;
+ }
+})();
+
+// TODO CanvasPixelArray is deprecated; use Uint8ClampedArray
+// once it's supported.
+(function checkSetPresenceInImageData() {
+ if (window.CanvasPixelArray) {
+ if (typeof window.CanvasPixelArray.prototype.set !== 'function') {
+ window.CanvasPixelArray.prototype.set = function(arr) {
+ for (var i = 0, ii = this.length; i < ii; i++) {
+ this[i] = arr[i];
+ }
+ };
+ }
+ }
+})();
+
+// Support: IE<10, Android<4.0, iOS<5.0
+(function checkRequestAnimationFrame() {
+ if ('requestAnimationFrame' in window) {
+ return;
+ }
+ window.requestAnimationFrame =
+ window.mozRequestAnimationFrame ||
+ window.webkitRequestAnimationFrame ||
+ (function fakeRequestAnimationFrame(callback) {
+ window.setTimeout(callback, 20);
+ });
})();
diff --git a/lib/viewers/pdf/debugger.js b/lib/viewers/pdf/debugger.js
index 2305bb7..0eed368 100644
--- a/lib/viewers/pdf/debugger.js
+++ b/lib/viewers/pdf/debugger.js
@@ -1,491 +1,612 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
/* Copyright 2012 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* globals PDFJS */
'use strict';
var FontInspector = (function FontInspectorClosure() {
var fonts;
- var panelWidth = 300;
var active = false;
var fontAttribute = 'data-font-name';
function removeSelection() {
var divs = document.querySelectorAll('div[' + fontAttribute + ']');
for (var i = 0, ii = divs.length; i < ii; ++i) {
var div = divs[i];
div.className = '';
}
}
function resetSelection() {
var divs = document.querySelectorAll('div[' + fontAttribute + ']');
for (var i = 0, ii = divs.length; i < ii; ++i) {
var div = divs[i];
div.className = 'debuggerHideText';
}
}
function selectFont(fontName, show) {
var divs = document.querySelectorAll('div[' + fontAttribute + '=' +
fontName + ']');
for (var i = 0, ii = divs.length; i < ii; ++i) {
var div = divs[i];
div.className = show ? 'debuggerShowText' : 'debuggerHideText';
}
}
function textLayerClick(e) {
- if (!e.target.dataset.fontName || e.target.tagName.toUpperCase() !== 'DIV')
+ if (!e.target.dataset.fontName ||
+ e.target.tagName.toUpperCase() !== 'DIV') {
return;
+ }
var fontName = e.target.dataset.fontName;
var selects = document.getElementsByTagName('input');
for (var i = 0; i < selects.length; ++i) {
var select = selects[i];
- if (select.dataset.fontName != fontName) continue;
+ if (select.dataset.fontName != fontName) {
+ continue;
+ }
select.checked = !select.checked;
selectFont(fontName, select.checked);
select.scrollIntoView();
}
}
return {
// Properties/functions needed by PDFBug.
id: 'FontInspector',
name: 'Font Inspector',
panel: null,
manager: null,
init: function init() {
var panel = this.panel;
panel.setAttribute('style', 'padding: 5px;');
var tmp = document.createElement('button');
tmp.addEventListener('click', resetSelection);
tmp.textContent = 'Refresh';
panel.appendChild(tmp);
fonts = document.createElement('div');
panel.appendChild(fonts);
},
+ cleanup: function cleanup() {
+ fonts.textContent = '';
+ },
enabled: false,
get active() {
return active;
},
set active(value) {
active = value;
if (active) {
document.body.addEventListener('click', textLayerClick, true);
resetSelection();
} else {
document.body.removeEventListener('click', textLayerClick, true);
removeSelection();
}
},
// FontInspector specific functions.
fontAdded: function fontAdded(fontObj, url) {
function properties(obj, list) {
var moreInfo = document.createElement('table');
for (var i = 0; i < list.length; i++) {
var tr = document.createElement('tr');
var td1 = document.createElement('td');
td1.textContent = list[i];
tr.appendChild(td1);
var td2 = document.createElement('td');
td2.textContent = obj[list[i]].toString();
tr.appendChild(td2);
moreInfo.appendChild(tr);
}
return moreInfo;
}
var moreInfo = properties(fontObj, ['name', 'type']);
var m = /url\(['"]?([^\)"']+)/.exec(url);
var fontName = fontObj.loadedName;
var font = document.createElement('div');
var name = document.createElement('span');
name.textContent = fontName;
var download = document.createElement('a');
download.href = m[1];
download.textContent = 'Download';
var logIt = document.createElement('a');
logIt.href = '';
logIt.textContent = 'Log';
logIt.addEventListener('click', function(event) {
event.preventDefault();
console.log(fontObj);
});
var select = document.createElement('input');
select.setAttribute('type', 'checkbox');
select.dataset.fontName = fontName;
select.addEventListener('click', (function(select, fontName) {
return (function() {
selectFont(fontName, select.checked);
});
})(select, fontName));
font.appendChild(select);
font.appendChild(name);
font.appendChild(document.createTextNode(' '));
font.appendChild(download);
font.appendChild(document.createTextNode(' '));
font.appendChild(logIt);
font.appendChild(moreInfo);
fonts.appendChild(font);
// Somewhat of a hack, should probably add a hook for when the text layer
// is done rendering.
setTimeout(function() {
- if (this.active)
+ if (this.active) {
resetSelection();
+ }
}.bind(this), 2000);
}
};
})();
// Manages all the page steppers.
var StepperManager = (function StepperManagerClosure() {
var steppers = [];
var stepperDiv = null;
var stepperControls = null;
var stepperChooser = null;
var breakPoints = {};
return {
// Properties/functions needed by PDFBug.
id: 'Stepper',
name: 'Stepper',
panel: null,
manager: null,
init: function init() {
var self = this;
this.panel.setAttribute('style', 'padding: 5px;');
stepperControls = document.createElement('div');
stepperChooser = document.createElement('select');
stepperChooser.addEventListener('change', function(event) {
self.selectStepper(this.value);
});
stepperControls.appendChild(stepperChooser);
stepperDiv = document.createElement('div');
this.panel.appendChild(stepperControls);
this.panel.appendChild(stepperDiv);
- if (sessionStorage.getItem('pdfjsBreakPoints'))
+ if (sessionStorage.getItem('pdfjsBreakPoints')) {
breakPoints = JSON.parse(sessionStorage.getItem('pdfjsBreakPoints'));
+ }
+ },
+ cleanup: function cleanup() {
+ stepperChooser.textContent = '';
+ stepperDiv.textContent = '';
+ steppers = [];
},
enabled: false,
active: false,
// Stepper specific functions.
create: function create(pageIndex) {
var debug = document.createElement('div');
debug.id = 'stepper' + pageIndex;
debug.setAttribute('hidden', true);
debug.className = 'stepper';
stepperDiv.appendChild(debug);
var b = document.createElement('option');
b.textContent = 'Page ' + (pageIndex + 1);
b.value = pageIndex;
stepperChooser.appendChild(b);
var initBreakPoints = breakPoints[pageIndex] || [];
var stepper = new Stepper(debug, pageIndex, initBreakPoints);
steppers.push(stepper);
- if (steppers.length === 1)
+ if (steppers.length === 1) {
this.selectStepper(pageIndex, false);
+ }
return stepper;
},
selectStepper: function selectStepper(pageIndex, selectPanel) {
- if (selectPanel)
- this.manager.selectPanel(1);
- for (var i = 0; i < steppers.length; ++i) {
+ var i;
+ if (selectPanel) {
+ this.manager.selectPanel(this);
+ }
+ for (i = 0; i < steppers.length; ++i) {
var stepper = steppers[i];
- if (stepper.pageIndex == pageIndex)
+ if (stepper.pageIndex == pageIndex) {
stepper.panel.removeAttribute('hidden');
- else
+ } else {
stepper.panel.setAttribute('hidden', true);
+ }
}
var options = stepperChooser.options;
- for (var i = 0; i < options.length; ++i) {
+ for (i = 0; i < options.length; ++i) {
var option = options[i];
option.selected = option.value == pageIndex;
}
},
saveBreakPoints: function saveBreakPoints(pageIndex, bps) {
breakPoints[pageIndex] = bps;
sessionStorage.setItem('pdfjsBreakPoints', JSON.stringify(breakPoints));
}
};
})();
// The stepper for each page's IRQueue.
var Stepper = (function StepperClosure() {
+ // Shorter way to create element and optionally set textContent.
+ function c(tag, textContent) {
+ var d = document.createElement(tag);
+ if (textContent) {
+ d.textContent = textContent;
+ }
+ return d;
+ }
+
+ var opMap = null;
+
+ function simplifyArgs(args) {
+ if (typeof args === 'string') {
+ var MAX_STRING_LENGTH = 75;
+ return args.length <= MAX_STRING_LENGTH ? args :
+ args.substr(0, MAX_STRING_LENGTH) + '...';
+ }
+ if (typeof args !== 'object' || args === null) {
+ return args;
+ }
+ if ('length' in args) { // array
+ var simpleArgs = [], i, ii;
+ var MAX_ITEMS = 10;
+ for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) {
+ simpleArgs.push(simplifyArgs(args[i]));
+ }
+ if (i < args.length) {
+ simpleArgs.push('...');
+ }
+ return simpleArgs;
+ }
+ var simpleObj = {};
+ for (var key in args) {
+ simpleObj[key] = simplifyArgs(args[key]);
+ }
+ return simpleObj;
+ }
+
function Stepper(panel, pageIndex, initialBreakPoints) {
this.panel = panel;
- this.len = 0;
this.breakPoint = 0;
this.nextBreakPoint = null;
this.pageIndex = pageIndex;
this.breakPoints = initialBreakPoints;
this.currentIdx = -1;
+ this.operatorListIdx = 0;
}
Stepper.prototype = {
- init: function init(IRQueue) {
- // Shorter way to create element and optionally set textContent.
- function c(tag, textContent) {
- var d = document.createElement(tag);
- if (textContent)
- d.textContent = textContent;
- return d;
- }
+ init: function init() {
var panel = this.panel;
- this.len = IRQueue.fnArray.length;
var content = c('div', 'c=continue, s=step');
var table = c('table');
content.appendChild(table);
table.cellSpacing = 0;
var headerRow = c('tr');
table.appendChild(headerRow);
headerRow.appendChild(c('th', 'Break'));
headerRow.appendChild(c('th', 'Idx'));
headerRow.appendChild(c('th', 'fn'));
headerRow.appendChild(c('th', 'args'));
-
+ panel.appendChild(content);
+ this.table = table;
+ if (!opMap) {
+ opMap = Object.create(null);
+ for (var key in PDFJS.OPS) {
+ opMap[PDFJS.OPS[key]] = key;
+ }
+ }
+ },
+ updateOperatorList: function updateOperatorList(operatorList) {
var self = this;
- for (var i = 0; i < IRQueue.fnArray.length; i++) {
+
+ function cboxOnClick() {
+ var x = +this.dataset.idx;
+ if (this.checked) {
+ self.breakPoints.push(x);
+ } else {
+ self.breakPoints.splice(self.breakPoints.indexOf(x), 1);
+ }
+ StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints);
+ }
+
+ var MAX_OPERATORS_COUNT = 15000;
+ if (this.operatorListIdx > MAX_OPERATORS_COUNT) {
+ return;
+ }
+
+ var chunk = document.createDocumentFragment();
+ var operatorsToDisplay = Math.min(MAX_OPERATORS_COUNT,
+ operatorList.fnArray.length);
+ for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) {
var line = c('tr');
line.className = 'line';
line.dataset.idx = i;
- table.appendChild(line);
+ chunk.appendChild(line);
var checked = this.breakPoints.indexOf(i) != -1;
- var args = IRQueue.argsArray[i] ? IRQueue.argsArray[i] : [];
+ var args = operatorList.argsArray[i] || [];
var breakCell = c('td');
var cbox = c('input');
cbox.type = 'checkbox';
cbox.className = 'points';
cbox.checked = checked;
- cbox.onclick = (function(x) {
- return function() {
- if (this.checked)
- self.breakPoints.push(x);
- else
- self.breakPoints.splice(self.breakPoints.indexOf(x), 1);
- StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints);
- };
- })(i);
+ cbox.dataset.idx = i;
+ cbox.onclick = cboxOnClick;
breakCell.appendChild(cbox);
line.appendChild(breakCell);
line.appendChild(c('td', i.toString()));
- line.appendChild(c('td', IRQueue.fnArray[i]));
- line.appendChild(c('td', args.join(', ')));
+ var fn = opMap[operatorList.fnArray[i]];
+ var decArgs = args;
+ if (fn === 'showText') {
+ var glyphs = args[0];
+ var newArgs = [];
+ var str = [];
+ for (var j = 0; j < glyphs.length; j++) {
+ var glyph = glyphs[j];
+ if (typeof glyph === 'object' && glyph !== null) {
+ str.push(glyph.fontChar);
+ } else {
+ if (str.length > 0) {
+ newArgs.push(str.join(''));
+ str = [];
+ }
+ newArgs.push(glyph); // null or number
+ }
+ }
+ if (str.length > 0) {
+ newArgs.push(str.join(''));
+ }
+ decArgs = [newArgs];
+ }
+ line.appendChild(c('td', fn));
+ line.appendChild(c('td', JSON.stringify(simplifyArgs(decArgs))));
}
- panel.appendChild(content);
- var self = this;
+ if (operatorsToDisplay < operatorList.fnArray.length) {
+ line = c('tr');
+ var lastCell = c('td', '...');
+ lastCell.colspan = 4;
+ chunk.appendChild(lastCell);
+ }
+ this.operatorListIdx = operatorList.fnArray.length;
+ this.table.appendChild(chunk);
},
getNextBreakPoint: function getNextBreakPoint() {
this.breakPoints.sort(function(a, b) { return a - b; });
for (var i = 0; i < this.breakPoints.length; i++) {
- if (this.breakPoints[i] > this.currentIdx)
+ if (this.breakPoints[i] > this.currentIdx) {
return this.breakPoints[i];
+ }
}
return null;
},
breakIt: function breakIt(idx, callback) {
StepperManager.selectStepper(this.pageIndex, true);
var self = this;
var dom = document;
self.currentIdx = idx;
var listener = function(e) {
switch (e.keyCode) {
case 83: // step
dom.removeEventListener('keydown', listener, false);
self.nextBreakPoint = self.currentIdx + 1;
self.goTo(-1);
callback();
break;
case 67: // continue
dom.removeEventListener('keydown', listener, false);
var breakPoint = self.getNextBreakPoint();
self.nextBreakPoint = breakPoint;
self.goTo(-1);
callback();
break;
}
};
dom.addEventListener('keydown', listener, false);
self.goTo(idx);
},
goTo: function goTo(idx) {
var allRows = this.panel.getElementsByClassName('line');
for (var x = 0, xx = allRows.length; x < xx; ++x) {
var row = allRows[x];
if (row.dataset.idx == idx) {
row.style.backgroundColor = 'rgb(251,250,207)';
row.scrollIntoView();
} else {
row.style.backgroundColor = null;
}
}
}
};
return Stepper;
})();
var Stats = (function Stats() {
var stats = [];
function clear(node) {
- while (node.hasChildNodes())
+ while (node.hasChildNodes()) {
node.removeChild(node.lastChild);
+ }
}
function getStatIndex(pageNumber) {
- for (var i = 0, ii = stats.length; i < ii; ++i)
- if (stats[i].pageNumber === pageNumber)
+ for (var i = 0, ii = stats.length; i < ii; ++i) {
+ if (stats[i].pageNumber === pageNumber) {
return i;
+ }
+ }
return false;
}
return {
// Properties/functions needed by PDFBug.
id: 'Stats',
name: 'Stats',
panel: null,
manager: null,
init: function init() {
this.panel.setAttribute('style', 'padding: 5px;');
PDFJS.enableStats = true;
},
enabled: false,
active: false,
// Stats specific functions.
add: function(pageNumber, stat) {
- if (!stat)
+ if (!stat) {
return;
+ }
var statsIndex = getStatIndex(pageNumber);
if (statsIndex !== false) {
var b = stats[statsIndex];
this.panel.removeChild(b.div);
stats.splice(statsIndex, 1);
}
var wrapper = document.createElement('div');
wrapper.className = 'stats';
var title = document.createElement('div');
title.className = 'title';
title.textContent = 'Page: ' + pageNumber;
var statsDiv = document.createElement('div');
statsDiv.textContent = stat.toString();
wrapper.appendChild(title);
wrapper.appendChild(statsDiv);
stats.push({ pageNumber: pageNumber, div: wrapper });
stats.sort(function(a, b) { return a.pageNumber - b.pageNumber; });
clear(this.panel);
- for (var i = 0, ii = stats.length; i < ii; ++i)
+ for (var i = 0, ii = stats.length; i < ii; ++i) {
this.panel.appendChild(stats[i].div);
+ }
+ },
+ cleanup: function () {
+ stats = [];
+ clear(this.panel);
}
};
})();
// Manages all the debugging tools.
var PDFBug = (function PDFBugClosure() {
var panelWidth = 300;
var buttons = [];
var activePanel = null;
return {
tools: [
FontInspector,
StepperManager,
Stats
],
enable: function(ids) {
var all = false, tools = this.tools;
- if (ids.length === 1 && ids[0] === 'all')
+ if (ids.length === 1 && ids[0] === 'all') {
all = true;
+ }
for (var i = 0; i < tools.length; ++i) {
var tool = tools[i];
- if (all || ids.indexOf(tool.id) !== -1)
+ if (all || ids.indexOf(tool.id) !== -1) {
tool.enabled = true;
+ }
}
if (!all) {
// Sort the tools by the order they are enabled.
tools.sort(function(a, b) {
var indexA = ids.indexOf(a.id);
indexA = indexA < 0 ? tools.length : indexA;
var indexB = ids.indexOf(b.id);
indexB = indexB < 0 ? tools.length : indexB;
return indexA - indexB;
});
}
},
init: function init() {
/*
* Basic Layout:
* PDFBug
* Controls
* Panels
* Panel
* Panel
* ...
*/
var ui = document.createElement('div');
ui.id = 'PDFBug';
var controls = document.createElement('div');
controls.setAttribute('class', 'controls');
ui.appendChild(controls);
var panels = document.createElement('div');
panels.setAttribute('class', 'panels');
ui.appendChild(panels);
var container = document.getElementById('viewerContainer');
container.appendChild(ui);
container.style.right = panelWidth + 'px';
// Initialize all the debugging tools.
var tools = this.tools;
var self = this;
for (var i = 0; i < tools.length; ++i) {
var tool = tools[i];
var panel = document.createElement('div');
var panelButton = document.createElement('button');
panelButton.textContent = tool.name;
panelButton.addEventListener('click', (function(selected) {
return function(event) {
event.preventDefault();
self.selectPanel(selected);
};
})(i));
controls.appendChild(panelButton);
panels.appendChild(panel);
tool.panel = panel;
tool.manager = this;
- if (tool.enabled)
+ if (tool.enabled) {
tool.init();
- else
+ } else {
panel.textContent = tool.name + ' is disabled. To enable add ' +
' "' + tool.id + '" to the pdfBug parameter ' +
'and refresh (seperate multiple by commas).';
+ }
buttons.push(panelButton);
}
this.selectPanel(0);
},
+ cleanup: function cleanup() {
+ for (var i = 0, ii = this.tools.length; i < ii; i++) {
+ if (this.tools[i].enabled) {
+ this.tools[i].cleanup();
+ }
+ }
+ },
selectPanel: function selectPanel(index) {
- if (index === activePanel)
+ if (typeof index !== 'number') {
+ index = this.tools.indexOf(index);
+ }
+ if (index === activePanel) {
return;
+ }
activePanel = index;
var tools = this.tools;
for (var j = 0; j < tools.length; ++j) {
if (j == index) {
buttons[j].setAttribute('class', 'active');
tools[j].active = true;
tools[j].panel.removeAttribute('hidden');
} else {
buttons[j].setAttribute('class', '');
tools[j].active = false;
tools[j].panel.setAttribute('hidden', 'true');
}
}
}
};
})();
diff --git a/lib/viewers/pdf/images/annotation-check.svg b/lib/viewers/pdf/images/annotation-check.svg
index f28f0e8..71cd16d 100644
--- a/lib/viewers/pdf/images/annotation-check.svg
+++ b/lib/viewers/pdf/images/annotation-check.svg
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
width="40"
- height="40">
+ height="40"
+ viewBox="0 0 40 40">
<path
d="M 1.5006714,23.536225 6.8925879,18.994244 14.585721,26.037937 34.019683,4.5410479 38.499329,9.2235032 14.585721,35.458952 z"
id="path4"
style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.25402856;stroke-opacity:1" />
</svg>
diff --git a/lib/viewers/pdf/images/annotation-comment.svg b/lib/viewers/pdf/images/annotation-comment.svg
index b2aee63..86f1f17 100644
--- a/lib/viewers/pdf/images/annotation-comment.svg
+++ b/lib/viewers/pdf/images/annotation-comment.svg
@@ -1,15 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
height="40"
- width="40">
+ width="40"
+ viewBox="0 0 40 40">
<rect
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
width="33.76017"
height="33.76017"
x="3.119915"
y="3.119915" />
<path
d="m 20.677967,8.54499 c -7.342801,0 -13.295293,4.954293 -13.295293,11.065751 0,2.088793 0.3647173,3.484376 1.575539,5.150563 L 6.0267418,31.45501 13.560595,29.011117 c 2.221262,1.387962 4.125932,1.665377 7.117372,1.665377 7.3428,0 13.295291,-4.954295 13.295291,-11.065753 0,-6.111458 -5.952491,-11.065751 -13.295291,-11.065751 z"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.93031836;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
</svg>
diff --git a/lib/viewers/pdf/images/annotation-help.svg b/lib/viewers/pdf/images/annotation-help.svg
index 349112e..00938fe 100644
--- a/lib/viewers/pdf/images/annotation-help.svg
+++ b/lib/viewers/pdf/images/annotation-help.svg
@@ -1,25 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
width="40"
- height="40">
+ height="40"
+ viewBox="0 0 40 40">
<g
transform="translate(0,-60)"
id="layer1">
<rect
width="36.460953"
height="34.805603"
x="1.7695236"
y="62.597198"
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.30826771;stroke-opacity:1" />
<g
transform="matrix(0.88763677,0,0,0.88763677,2.2472646,8.9890584)">
<path
d="M 20,64.526342 C 11.454135,64.526342 4.5263421,71.454135 4.5263421,80 4.5263421,88.545865 11.454135,95.473658 20,95.473658 28.545865,95.473658 35.473658,88.545865 35.473658,80 35.473658,71.454135 28.545865,64.526342 20,64.526342 z m -0.408738,9.488564 c 3.527079,0 6.393832,2.84061 6.393832,6.335441 0,3.494831 -2.866753,6.335441 -6.393832,6.335441 -3.527079,0 -6.393832,-2.84061 -6.393832,-6.335441 0,-3.494831 2.866753,-6.335441 6.393832,-6.335441 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.02768445;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 7.2335209,71.819938 4.9702591,4.161823 c -1.679956,2.581606 -1.443939,6.069592 0.159325,8.677725 l -5.1263071,3.424463 c 0.67516,1.231452 3.0166401,3.547686 4.2331971,4.194757 l 3.907728,-4.567277 c 2.541952,1.45975 5.730694,1.392161 8.438683,-0.12614 l 3.469517,6.108336 c 1.129779,-0.44367 4.742234,-3.449633 5.416358,-5.003859 l -5.46204,-4.415541 c 1.44319,-2.424098 1.651175,-5.267515 0.557303,-7.748623 l 5.903195,-3.833951 C 33.14257,71.704996 30.616217,69.018606 29.02952,67.99296 l -4.118813,4.981678 C 22.411934,71.205099 18.900853,70.937534 16.041319,72.32916 l -3.595408,-5.322091 c -1.345962,0.579488 -4.1293881,2.921233 -5.2123901,4.812869 z m 8.1010311,3.426672 c 2.75284,-2.446266 6.769149,-2.144694 9.048998,0.420874 2.279848,2.56557 2.113919,6.596919 -0.638924,9.043185 -2.752841,2.446267 -6.775754,2.13726 -9.055604,-0.428308 -2.279851,-2.565568 -2.107313,-6.589485 0.64553,-9.035751 z"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>
diff --git a/lib/viewers/pdf/images/annotation-insert.svg b/lib/viewers/pdf/images/annotation-insert.svg
index 60fbf95..519ef68 100644
--- a/lib/viewers/pdf/images/annotation-insert.svg
+++ b/lib/viewers/pdf/images/annotation-insert.svg
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
width="64"
- height="64">
+ height="64"
+ viewBox="0 0 64 64">
<path
d="M 32.003143,1.4044602 57.432701,62.632577 6.5672991,62.627924 z"
style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:1.00493038;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</svg>
diff --git a/lib/viewers/pdf/images/annotation-key.svg b/lib/viewers/pdf/images/annotation-key.svg
index c0bbb09..8d09d53 100644
--- a/lib/viewers/pdf/images/annotation-key.svg
+++ b/lib/viewers/pdf/images/annotation-key.svg
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
width="64"
- height="64">
+ height="64"
+ viewBox="0 0 64 64">
<path
d="M 25.470843,9.4933766 C 25.30219,12.141818 30.139101,14.445969 34.704831,13.529144 40.62635,12.541995 41.398833,7.3856498 35.97505,5.777863 31.400921,4.1549155 25.157674,6.5445892 25.470843,9.4933766 z M 4.5246282,17.652051 C 4.068249,11.832873 9.2742983,5.9270407 18.437379,3.0977088 29.751911,-0.87185184 45.495663,1.4008022 53.603953,7.1104009 c 9.275765,6.1889221 7.158128,16.2079421 -3.171076,21.5939521 -1.784316,1.635815 -6.380222,1.21421 -7.068351,3.186186 -1.04003,0.972427 -1.288046,2.050158 -1.232864,3.168203 1.015111,2.000108 -3.831548,1.633216 -3.270553,3.759574 0.589477,5.264544 -0.179276,10.53738 -0.362842,15.806257 -0.492006,2.184998 1.163456,4.574232 -0.734888,6.610642 -2.482919,2.325184 -7.30604,2.189143 -9.193497,-0.274767 -2.733688,-1.740626 -8.254447,-3.615254 -6.104247,-6.339626 3.468112,-1.708686 -2.116197,-3.449897 0.431242,-5.080274 5.058402,-1.39256 -2.393215,-2.304318 -0.146889,-4.334645 3.069198,-0.977415 2.056986,-2.518352 -0.219121,-3.540397 1.876567,-1.807151 1.484149,-4.868919 -2.565455,-5.942205 0.150866,-1.805474 2.905737,-4.136876 -1.679967,-5.20493 C 10.260902,27.882167 4.6872697,22.95045 4.5245945,17.652051 z"
id="path604"
style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.72665179;stroke-opacity:1" />
</svg>
diff --git a/lib/viewers/pdf/images/annotation-newparagraph.svg b/lib/viewers/pdf/images/annotation-newparagraph.svg
index 6c179fd..38d2497 100644
--- a/lib/viewers/pdf/images/annotation-newparagraph.svg
+++ b/lib/viewers/pdf/images/annotation-newparagraph.svg
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
width="64"
- height="64">
+ height="64"
+ viewBox="0 0 64 64">
<path
d="M 32.003143,10.913072 57.432701,53.086929 6.567299,53.083723 z"
id="path2985"
style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:0.83403099;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</svg>
diff --git a/lib/viewers/pdf/images/annotation-noicon.svg b/lib/viewers/pdf/images/annotation-noicon.svg
new file mode 100644
index 0000000..c07d108
--- /dev/null
+++ b/lib/viewers/pdf/images/annotation-noicon.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="40"
+ height="40"
+ viewBox="0 0 40 40">
+</svg>
diff --git a/lib/viewers/pdf/images/annotation-note.svg b/lib/viewers/pdf/images/annotation-note.svg
index ed16943..7017365 100644
--- a/lib/viewers/pdf/images/annotation-note.svg
+++ b/lib/viewers/pdf/images/annotation-note.svg
@@ -1,41 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
width="40"
- height="40">
+ height="40"
+ viewBox="0 0 40 40">
<rect
width="36.075428"
height="31.096582"
x="1.962286"
y="4.4517088"
id="rect4"
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.23004246;stroke-opacity:1" />
<rect
width="27.96859"
height="1.5012145"
x="6.0157046"
y="10.285"
id="rect6"
style="fill:#000000;fill-opacity:1;stroke:none" />
<rect
width="27.96859"
height="0.85783684"
x="6.0157056"
y="23.21689"
id="rect8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<rect
width="27.96859"
height="0.85783684"
x="5.8130345"
y="28.964394"
id="rect10"
style="fill:#000000;fill-opacity:1;stroke:none" />
<rect
width="27.96859"
height="0.85783684"
x="6.0157046"
y="17.426493"
id="rect12"
style="fill:#000000;fill-opacity:1;stroke:none" />
</svg>
diff --git a/lib/viewers/pdf/images/annotation-paragraph.svg b/lib/viewers/pdf/images/annotation-paragraph.svg
index 6fd90c1..6ae5212 100644
--- a/lib/viewers/pdf/images/annotation-paragraph.svg
+++ b/lib/viewers/pdf/images/annotation-paragraph.svg
@@ -1,15 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns="http://www.w3.org/2000/svg"
width="40"
- height="40">
+ height="40"
+ viewBox="0 0 40 40">
<rect
width="33.76017"
height="33.76017"
x="3.119915"
y="3.119915"
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m 17.692678,34.50206 0,-16.182224 c -1.930515,-0.103225 -3.455824,-0.730383 -4.57593,-1.881473 -1.12011,-1.151067 -1.680164,-2.619596 -1.680164,-4.405591 0,-1.992435 0.621995,-3.5796849 1.865988,-4.7617553 1.243989,-1.1820288 3.06352,-1.7730536 5.458598,-1.7730764 l 9.802246,0 0,2.6789711 -2.229895,0 0,26.3251486 -2.632515,0 0,-26.3251486 -3.45324,0 0,26.3251486 z"
style="font-size:29.42051125px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.07795751;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
</svg>
diff --git a/lib/viewers/pdf/images/findbarButton-next-rtl.png b/lib/viewers/pdf/images/findbarButton-next-rtl.png
index 08a2c25..bef0274 100644
Binary files a/lib/viewers/pdf/images/findbarButton-next-rtl.png and b/lib/viewers/pdf/images/findbarButton-next-rtl.png differ
diff --git a/lib/viewers/pdf/images/findbarButton-next-rtl@2x.png b/lib/viewers/pdf/images/findbarButton-next-rtl@2x.png
new file mode 100644
index 0000000..1da6dc9
Binary files /dev/null and b/lib/viewers/pdf/images/findbarButton-next-rtl@2x.png differ
diff --git a/lib/viewers/pdf/images/findbarButton-next.png b/lib/viewers/pdf/images/findbarButton-next.png
index beef8cc..de1d0fc 100644
Binary files a/lib/viewers/pdf/images/findbarButton-next.png and b/lib/viewers/pdf/images/findbarButton-next.png differ
diff --git a/lib/viewers/pdf/images/findbarButton-next@2x.png b/lib/viewers/pdf/images/findbarButton-next@2x.png
new file mode 100644
index 0000000..0250307
Binary files /dev/null and b/lib/viewers/pdf/images/findbarButton-next@2x.png differ
diff --git a/lib/viewers/pdf/images/findbarButton-previous-rtl.png b/lib/viewers/pdf/images/findbarButton-previous-rtl.png
index beef8cc..de1d0fc 100644
Binary files a/lib/viewers/pdf/images/findbarButton-previous-rtl.png and b/lib/viewers/pdf/images/findbarButton-previous-rtl.png differ
diff --git a/lib/viewers/pdf/images/findbarButton-previous-rtl@2x.png b/lib/viewers/pdf/images/findbarButton-previous-rtl@2x.png
new file mode 100644
index 0000000..0250307
Binary files /dev/null and b/lib/viewers/pdf/images/findbarButton-previous-rtl@2x.png differ
diff --git a/lib/viewers/pdf/images/findbarButton-previous.png b/lib/viewers/pdf/images/findbarButton-previous.png
index 08a2c25..bef0274 100644
Binary files a/lib/viewers/pdf/images/findbarButton-previous.png and b/lib/viewers/pdf/images/findbarButton-previous.png differ
diff --git a/lib/viewers/pdf/images/findbarButton-previous@2x.png b/lib/viewers/pdf/images/findbarButton-previous@2x.png
new file mode 100644
index 0000000..1da6dc9
Binary files /dev/null and b/lib/viewers/pdf/images/findbarButton-previous@2x.png differ
diff --git a/lib/viewers/pdf/images/grab.cur b/lib/viewers/pdf/images/grab.cur
new file mode 100644
index 0000000..db7ad5a
Binary files /dev/null and b/lib/viewers/pdf/images/grab.cur differ
diff --git a/lib/viewers/pdf/images/grabbing.cur b/lib/viewers/pdf/images/grabbing.cur
new file mode 100644
index 0000000..e0dfd04
Binary files /dev/null and b/lib/viewers/pdf/images/grabbing.cur differ
diff --git a/lib/viewers/pdf/images/loading-small.png b/lib/viewers/pdf/images/loading-small.png
index 1b2df80..51848a7 100644
Binary files a/lib/viewers/pdf/images/loading-small.png and b/lib/viewers/pdf/images/loading-small.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-documentProperties.png b/lib/viewers/pdf/images/secondaryToolbarButton-documentProperties.png
new file mode 100644
index 0000000..40925e2
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-documentProperties.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-documentProperties@2x.png b/lib/viewers/pdf/images/secondaryToolbarButton-documentProperties@2x.png
new file mode 100644
index 0000000..adb240e
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-documentProperties@2x.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-firstPage.png b/lib/viewers/pdf/images/secondaryToolbarButton-firstPage.png
new file mode 100644
index 0000000..e68846a
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-firstPage.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-firstPage@2x.png b/lib/viewers/pdf/images/secondaryToolbarButton-firstPage@2x.png
new file mode 100644
index 0000000..3ad8af5
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-firstPage@2x.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-handTool.png b/lib/viewers/pdf/images/secondaryToolbarButton-handTool.png
new file mode 100644
index 0000000..cb85a84
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-handTool.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-handTool@2x.png b/lib/viewers/pdf/images/secondaryToolbarButton-handTool@2x.png
new file mode 100644
index 0000000..5c13f77
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-handTool@2x.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-lastPage.png b/lib/viewers/pdf/images/secondaryToolbarButton-lastPage.png
new file mode 100644
index 0000000..be763e0
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-lastPage.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-lastPage@2x.png b/lib/viewers/pdf/images/secondaryToolbarButton-lastPage@2x.png
new file mode 100644
index 0000000..8570984
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-lastPage@2x.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-rotateCcw.png b/lib/viewers/pdf/images/secondaryToolbarButton-rotateCcw.png
new file mode 100644
index 0000000..675d6da
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-rotateCcw.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-rotateCcw@2x.png b/lib/viewers/pdf/images/secondaryToolbarButton-rotateCcw@2x.png
new file mode 100644
index 0000000..b9e7431
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-rotateCcw@2x.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-rotateCw.png b/lib/viewers/pdf/images/secondaryToolbarButton-rotateCw.png
new file mode 100644
index 0000000..e1c7598
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-rotateCw.png differ
diff --git a/lib/viewers/pdf/images/secondaryToolbarButton-rotateCw@2x.png b/lib/viewers/pdf/images/secondaryToolbarButton-rotateCw@2x.png
new file mode 100644
index 0000000..cb257b4
Binary files /dev/null and b/lib/viewers/pdf/images/secondaryToolbarButton-rotateCw@2x.png differ
diff --git a/lib/viewers/pdf/images/shadow.png b/lib/viewers/pdf/images/shadow.png
index dd009dc..31d3bdb 100644
Binary files a/lib/viewers/pdf/images/shadow.png and b/lib/viewers/pdf/images/shadow.png differ
diff --git a/lib/viewers/pdf/images/texture.png b/lib/viewers/pdf/images/texture.png
index df00864..eb5ccb5 100644
Binary files a/lib/viewers/pdf/images/texture.png and b/lib/viewers/pdf/images/texture.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-bookmark.png b/lib/viewers/pdf/images/toolbarButton-bookmark.png
index 1e5259a..a187be6 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-bookmark.png and b/lib/viewers/pdf/images/toolbarButton-bookmark.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-bookmark@2x.png b/lib/viewers/pdf/images/toolbarButton-bookmark@2x.png
new file mode 100644
index 0000000..4efbaa6
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-bookmark@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-download.png b/lib/viewers/pdf/images/toolbarButton-download.png
index 8676d8e..eaab35f 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-download.png and b/lib/viewers/pdf/images/toolbarButton-download.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-download@2x.png b/lib/viewers/pdf/images/toolbarButton-download@2x.png
new file mode 100644
index 0000000..896face
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-download@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-menuArrows.png b/lib/viewers/pdf/images/toolbarButton-menuArrows.png
index 31b06b5..306eb43 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-menuArrows.png and b/lib/viewers/pdf/images/toolbarButton-menuArrows.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-menuArrows@2x.png b/lib/viewers/pdf/images/toolbarButton-menuArrows@2x.png
new file mode 100644
index 0000000..f7570bc
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-menuArrows@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-openFile.png b/lib/viewers/pdf/images/toolbarButton-openFile.png
index fc7023f..b5cf1bd 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-openFile.png and b/lib/viewers/pdf/images/toolbarButton-openFile.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-openFile@2x.png b/lib/viewers/pdf/images/toolbarButton-openFile@2x.png
new file mode 100644
index 0000000..91ab765
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-openFile@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-pageDown-rtl.png b/lib/viewers/pdf/images/toolbarButton-pageDown-rtl.png
index c0051f8..1957f79 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-pageDown-rtl.png and b/lib/viewers/pdf/images/toolbarButton-pageDown-rtl.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-pageDown-rtl@2x.png b/lib/viewers/pdf/images/toolbarButton-pageDown-rtl@2x.png
new file mode 100644
index 0000000..16ebcb8
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-pageDown-rtl@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-pageDown.png b/lib/viewers/pdf/images/toolbarButton-pageDown.png
index 762ac43..8219ecf 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-pageDown.png and b/lib/viewers/pdf/images/toolbarButton-pageDown.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-pageDown@2x.png b/lib/viewers/pdf/images/toolbarButton-pageDown@2x.png
new file mode 100644
index 0000000..758c01d
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-pageDown@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-pageUp-rtl.png b/lib/viewers/pdf/images/toolbarButton-pageUp-rtl.png
index 0d49d8e..98e7ce4 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-pageUp-rtl.png and b/lib/viewers/pdf/images/toolbarButton-pageUp-rtl.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-pageUp-rtl@2x.png b/lib/viewers/pdf/images/toolbarButton-pageUp-rtl@2x.png
new file mode 100644
index 0000000..a01b023
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-pageUp-rtl@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-pageUp.png b/lib/viewers/pdf/images/toolbarButton-pageUp.png
index 3155b8b..fb9daa3 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-pageUp.png and b/lib/viewers/pdf/images/toolbarButton-pageUp.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-pageUp@2x.png b/lib/viewers/pdf/images/toolbarButton-pageUp@2x.png
new file mode 100644
index 0000000..a5cfd75
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-pageUp@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-presentationMode.png b/lib/viewers/pdf/images/toolbarButton-presentationMode.png
index fa73095..3ac2124 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-presentationMode.png and b/lib/viewers/pdf/images/toolbarButton-presentationMode.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-presentationMode@2x.png b/lib/viewers/pdf/images/toolbarButton-presentationMode@2x.png
new file mode 100644
index 0000000..cada9e7
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-presentationMode@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-print.png b/lib/viewers/pdf/images/toolbarButton-print.png
index fef84dd..51275e5 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-print.png and b/lib/viewers/pdf/images/toolbarButton-print.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-print@2x.png b/lib/viewers/pdf/images/toolbarButton-print@2x.png
new file mode 100644
index 0000000..53d18da
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-print@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-search.png b/lib/viewers/pdf/images/toolbarButton-search.png
index 604e652..f9b7557 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-search.png and b/lib/viewers/pdf/images/toolbarButton-search.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-search@2x.png b/lib/viewers/pdf/images/toolbarButton-search@2x.png
new file mode 100644
index 0000000..456b133
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-search@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle-rtl.png b/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle-rtl.png
new file mode 100644
index 0000000..8437095
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle-rtl.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png b/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png
new file mode 100644
index 0000000..9d9bfa4
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle.png b/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle.png
new file mode 100644
index 0000000..1f90f83
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle@2x.png b/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle@2x.png
new file mode 100644
index 0000000..b066fe5
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-secondaryToolbarToggle@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-sidebarToggle-rtl.png b/lib/viewers/pdf/images/toolbarButton-sidebarToggle-rtl.png
new file mode 100644
index 0000000..6f85ec0
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-sidebarToggle-rtl.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-sidebarToggle-rtl@2x.png b/lib/viewers/pdf/images/toolbarButton-sidebarToggle-rtl@2x.png
new file mode 100644
index 0000000..291e006
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-sidebarToggle-rtl@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-sidebarToggle.png b/lib/viewers/pdf/images/toolbarButton-sidebarToggle.png
index 5a937c7..025dc90 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-sidebarToggle.png and b/lib/viewers/pdf/images/toolbarButton-sidebarToggle.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-sidebarToggle@2x.png b/lib/viewers/pdf/images/toolbarButton-sidebarToggle@2x.png
new file mode 100644
index 0000000..7f834df
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-sidebarToggle@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-viewAttachments.png b/lib/viewers/pdf/images/toolbarButton-viewAttachments.png
new file mode 100644
index 0000000..fcd0b26
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-viewAttachments.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-viewAttachments@2x.png b/lib/viewers/pdf/images/toolbarButton-viewAttachments@2x.png
new file mode 100644
index 0000000..b979e52
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-viewAttachments@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-viewOutline-rtl.png b/lib/viewers/pdf/images/toolbarButton-viewOutline-rtl.png
new file mode 100644
index 0000000..aaa9430
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-viewOutline-rtl.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-viewOutline-rtl@2x.png b/lib/viewers/pdf/images/toolbarButton-viewOutline-rtl@2x.png
new file mode 100644
index 0000000..3410f70
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-viewOutline-rtl@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-viewOutline.png b/lib/viewers/pdf/images/toolbarButton-viewOutline.png
index cb3967b..976365a 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-viewOutline.png and b/lib/viewers/pdf/images/toolbarButton-viewOutline.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-viewOutline@2x.png b/lib/viewers/pdf/images/toolbarButton-viewOutline@2x.png
new file mode 100644
index 0000000..b6a197f
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-viewOutline@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-viewThumbnail.png b/lib/viewers/pdf/images/toolbarButton-viewThumbnail.png
index 3a27f04..584ba55 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-viewThumbnail.png and b/lib/viewers/pdf/images/toolbarButton-viewThumbnail.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-viewThumbnail@2x.png b/lib/viewers/pdf/images/toolbarButton-viewThumbnail@2x.png
new file mode 100644
index 0000000..fb7db93
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-viewThumbnail@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-zoomIn.png b/lib/viewers/pdf/images/toolbarButton-zoomIn.png
index 670acd9..513d081 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-zoomIn.png and b/lib/viewers/pdf/images/toolbarButton-zoomIn.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-zoomIn@2x.png b/lib/viewers/pdf/images/toolbarButton-zoomIn@2x.png
new file mode 100644
index 0000000..d5d49d5
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-zoomIn@2x.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-zoomOut.png b/lib/viewers/pdf/images/toolbarButton-zoomOut.png
index 810fbf9..156c26b 100644
Binary files a/lib/viewers/pdf/images/toolbarButton-zoomOut.png and b/lib/viewers/pdf/images/toolbarButton-zoomOut.png differ
diff --git a/lib/viewers/pdf/images/toolbarButton-zoomOut@2x.png b/lib/viewers/pdf/images/toolbarButton-zoomOut@2x.png
new file mode 100644
index 0000000..959e191
Binary files /dev/null and b/lib/viewers/pdf/images/toolbarButton-zoomOut@2x.png differ
diff --git a/lib/viewers/pdf/l10n.js b/lib/viewers/pdf/l10n.js
index 5435631..37f3950 100644
--- a/lib/viewers/pdf/l10n.js
+++ b/lib/viewers/pdf/l10n.js
@@ -1,922 +1,1004 @@
-/** Copyright (c) 2011-2012 Fabien Cazenave, Mozilla.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
+/**
+ * Copyright (c) 2011-2013 Fabien Cazenave, Mozilla.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
/*
Additional modifications for PDF.js project:
- Disables language initialization on page loading;
- - Adds fallback argument to the getL10nData;
- - Removes consoleLog and simplifies consoleWarn;
+ - Removes consoleWarn and consoleLog and use console.log/warn directly.
- Removes window._ assignment.
*/
-/*jshint browser: true, devel: true, es5: true, globalstrict: true */
+
+/*jshint browser: true, devel: true, globalstrict: true */
'use strict';
document.webL10n = (function(window, document, undefined) {
var gL10nData = {};
var gTextData = '';
var gTextProp = 'textContent';
var gLanguage = '';
var gMacros = {};
var gReadyState = 'loading';
- // read-only setting -- we recommend to load l10n resources synchronously
- var gAsyncResourceLoading = true;
- // debug helpers
- function consoleWarn(message) {
- console.log('[l10n] ' + message);
- };
+ /**
+ * Synchronously loading l10n resources significantly minimizes flickering
+ * from displaying the app with non-localized strings and then updating the
+ * strings. Although this will block all script execution on this page, we
+ * expect that the l10n resources are available locally on flash-storage.
+ *
+ * As synchronous XHR is generally considered as a bad idea, we're still
+ * loading l10n resources asynchronously -- but we keep this in a setting,
+ * just in case... and applications using this library should hide their
+ * content until the `localized' event happens.
+ */
+
+ var gAsyncResourceLoading = true; // read-only
+
/**
* DOM helpers for the so-called "HTML API".
*
* These functions are written for modern browsers. For old versions of IE,
* they're overridden in the 'startup' section at the end of this file.
*/
function getL10nResourceLinks() {
return document.querySelectorAll('link[type="application/l10n"]');
}
+ function getL10nDictionary() {
+ var script = document.querySelector('script[type="application/l10n"]');
+ // TODO: support multiple and external JSON dictionaries
+ return script ? JSON.parse(script.innerHTML) : null;
+ }
+
function getTranslatableChildren(element) {
return element ? element.querySelectorAll('*[data-l10n-id]') : [];
}
function getL10nAttributes(element) {
if (!element)
return {};
var l10nId = element.getAttribute('data-l10n-id');
var l10nArgs = element.getAttribute('data-l10n-args');
var args = {};
if (l10nArgs) {
try {
args = JSON.parse(l10nArgs);
} catch (e) {
- consoleWarn('could not parse arguments for #' + l10nId);
+ console.warn('could not parse arguments for #' + l10nId);
}
}
return { id: l10nId, args: args };
}
function fireL10nReadyEvent(lang) {
var evtObject = document.createEvent('Event');
- evtObject.initEvent('localized', false, false);
+ evtObject.initEvent('localized', true, false);
evtObject.language = lang;
- window.dispatchEvent(evtObject);
+ document.dispatchEvent(evtObject);
+ }
+
+ function xhrLoadText(url, onSuccess, onFailure, asynchronous) {
+ onSuccess = onSuccess || function _onSuccess(data) {};
+ onFailure = onFailure || function _onFailure() {
+ console.warn(url + ' not found.');
+ };
+
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, asynchronous);
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType('text/plain; charset=utf-8');
+ }
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState == 4) {
+ if (xhr.status == 200 || xhr.status === 0) {
+ onSuccess(xhr.responseText);
+ } else {
+ onFailure();
+ }
+ }
+ };
+ xhr.onerror = onFailure;
+ xhr.ontimeout = onFailure;
+
+ // in Firefox OS with the app:// protocol, trying to XHR a non-existing
+ // URL will raise an exception here -- hence this ugly try...catch.
+ try {
+ xhr.send(null);
+ } catch (e) {
+ onFailure();
+ }
}
/**
* l10n resource parser:
* - reads (async XHR) the l10n resource matching `lang';
* - imports linked resources (synchronously) when specified;
* - parses the text data (fills `gL10nData' and `gTextData');
* - triggers success/failure callbacks when done.
*
* @param {string} href
* URL of the l10n resource to parse.
*
* @param {string} lang
* locale (language) to parse.
*
* @param {Function} successCallback
* triggered when the l10n resource has been successully parsed.
*
* @param {Function} failureCallback
* triggered when the an error has occured.
*
* @return {void}
* uses the following global variables: gL10nData, gTextData, gTextProp.
*/
function parseResource(href, lang, successCallback, failureCallback) {
- var baseURL = href.replace(/\/[^\/]*$/, '/');
+ var baseURL = href.replace(/[^\/]*$/, '') || './';
// handle escaped characters (backslashes) in a string
function evalString(text) {
if (text.lastIndexOf('\\') < 0)
return text;
return text.replace(/\\\\/g, '\\')
.replace(/\\n/g, '\n')
.replace(/\\r/g, '\r')
.replace(/\\t/g, '\t')
.replace(/\\b/g, '\b')
.replace(/\\f/g, '\f')
.replace(/\\{/g, '{')
.replace(/\\}/g, '}')
.replace(/\\"/g, '"')
.replace(/\\'/g, "'");
}
// parse *.properties text data into an l10n dictionary
function parseProperties(text) {
var dictionary = [];
// token expressions
var reBlank = /^\s*|\s*$/;
var reComment = /^\s*#|^\s*$/;
var reSection = /^\s*\[(.*)\]\s*$/;
var reImport = /^\s*@import\s+url\((.*)\)\s*$/i;
var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; // TODO: escape EOLs with '\'
// parse the *.properties file into an associative array
function parseRawLines(rawText, extendedSyntax) {
var entries = rawText.replace(reBlank, '').split(/[\r\n]+/);
var currentLang = '*';
var genericLang = lang.replace(/-[a-z]+$/i, '');
var skipLang = false;
var match = '';
for (var i = 0; i < entries.length; i++) {
var line = entries[i];
// comment or blank line?
if (reComment.test(line))
continue;
// the extended syntax supports [lang] sections and @import rules
if (extendedSyntax) {
if (reSection.test(line)) { // section start?
match = reSection.exec(line);
currentLang = match[1];
skipLang = (currentLang !== '*') &&
(currentLang !== lang) && (currentLang !== genericLang);
continue;
} else if (skipLang) {
continue;
}
if (reImport.test(line)) { // @import rule?
match = reImport.exec(line);
loadImport(baseURL + match[1]); // load the resource synchronously
}
}
// key-value pair
var tmp = line.match(reSplit);
- if (tmp && tmp.length == 3)
+ if (tmp && tmp.length == 3) {
dictionary[tmp[1]] = evalString(tmp[2]);
+ }
}
}
// import another *.properties file
function loadImport(url) {
- loadResource(url, function(content) {
+ xhrLoadText(url, function(content) {
parseRawLines(content, false); // don't allow recursive imports
- }, false, false); // load synchronously
+ }, null, false); // load synchronously
}
// fill the dictionary
parseRawLines(text, true);
return dictionary;
}
- // load the specified resource file
- function loadResource(url, onSuccess, onFailure, asynchronous) {
- var xhr = new XMLHttpRequest();
- xhr.open('GET', url, asynchronous);
- if (xhr.overrideMimeType) {
- xhr.overrideMimeType('text/plain; charset=utf-8');
- }
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- if (xhr.status == 200 || xhr.status === 0) {
- if (onSuccess)
- onSuccess(xhr.responseText);
- } else {
- if (onFailure)
- onFailure();
- }
- }
- };
- xhr.send(null);
- }
-
// load and parse l10n data (warning: global variables are used here)
- loadResource(href, function(response) {
+ xhrLoadText(href, function(response) {
gTextData += response; // mostly for debug
// parse *.properties text data into an l10n dictionary
var data = parseProperties(response);
// find attribute descriptions, if any
for (var key in data) {
var id, prop, index = key.lastIndexOf('.');
if (index > 0) { // an attribute has been specified
id = key.substring(0, index);
prop = key.substr(index + 1);
} else { // no attribute: assuming text content by default
id = key;
prop = gTextProp;
}
if (!gL10nData[id]) {
gL10nData[id] = {};
}
gL10nData[id][prop] = data[key];
}
// trigger callback
- if (successCallback)
+ if (successCallback) {
successCallback();
+ }
}, failureCallback, gAsyncResourceLoading);
- };
+ }
// load and parse all resources for the specified locale
function loadLocale(lang, callback) {
+ callback = callback || function _callback() {};
+
clear();
gLanguage = lang;
// check all <link type="application/l10n" href="..." /> nodes
// and load the resource files
var langLinks = getL10nResourceLinks();
var langCount = langLinks.length;
- if (langCount == 0) {
- consoleWarn('no resource to load, early way out');
+ if (langCount === 0) {
+ // we might have a pre-compiled dictionary instead
+ var dict = getL10nDictionary();
+ if (dict && dict.locales && dict.default_locale) {
+ console.log('using the embedded JSON directory, early way out');
+ gL10nData = dict.locales[lang] || dict.locales[dict.default_locale];
+ callback();
+ } else {
+ console.log('no resource to load, early way out');
+ }
+ // early way out
fireL10nReadyEvent(lang);
gReadyState = 'complete';
return;
}
// start the callback when all resources are loaded
var onResourceLoaded = null;
var gResourceCount = 0;
onResourceLoaded = function() {
gResourceCount++;
if (gResourceCount >= langCount) {
- if (callback) // execute the [optional] callback
- callback();
+ callback();
fireL10nReadyEvent(lang);
gReadyState = 'complete';
}
};
// load all resource files
- function l10nResourceLink(link) {
+ function L10nResourceLink(link) {
var href = link.href;
var type = link.type;
this.load = function(lang, callback) {
var applied = lang;
parseResource(href, lang, callback, function() {
- consoleWarn(href + ' not found.');
+ console.warn(href + ' not found.');
applied = '';
});
return applied; // return lang if found, an empty string if not found
};
}
for (var i = 0; i < langCount; i++) {
- var resource = new l10nResourceLink(langLinks[i]);
+ var resource = new L10nResourceLink(langLinks[i]);
var rv = resource.load(lang, onResourceLoaded);
if (rv != lang) { // lang not found, used default resource instead
- consoleWarn('"' + lang + '" resource not found');
+ console.warn('"' + lang + '" resource not found');
gLanguage = '';
}
}
}
// clear all l10n data
function clear() {
gL10nData = {};
gTextData = '';
gLanguage = '';
// TODO: clear all non predefined macros.
// There's no such macro /yet/ but we're planning to have some...
}
/**
* Get rules for plural forms (shared with JetPack), see:
* http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
* https://github.com/mozilla/addon-sdk/blob/master/python-lib/plural-rules-generator.p
*
* @param {string} lang
* locale (language) used.
*
* @return {Function}
* returns a function that gives the plural form name for a given integer:
* var fun = getPluralRules('en');
* fun(1) -> 'one'
* fun(0) -> 'other'
* fun(1000) -> 'other'.
*/
function getPluralRules(lang) {
var locales2rules = {
'af': 3,
'ak': 4,
'am': 4,
'ar': 1,
'asa': 3,
'az': 0,
'be': 11,
'bem': 3,
'bez': 3,
'bg': 3,
'bh': 4,
'bm': 0,
'bn': 3,
'bo': 0,
'br': 20,
'brx': 3,
'bs': 11,
'ca': 3,
'cgg': 3,
'chr': 3,
'cs': 12,
'cy': 17,
'da': 3,
'de': 3,
'dv': 3,
'dz': 0,
'ee': 3,
'el': 3,
'en': 3,
'eo': 3,
'es': 3,
'et': 3,
'eu': 3,
'fa': 0,
'ff': 5,
'fi': 3,
'fil': 4,
'fo': 3,
'fr': 5,
'fur': 3,
'fy': 3,
'ga': 8,
'gd': 24,
'gl': 3,
'gsw': 3,
'gu': 3,
'guw': 4,
'gv': 23,
'ha': 3,
'haw': 3,
'he': 2,
'hi': 4,
'hr': 11,
'hu': 0,
'id': 0,
'ig': 0,
'ii': 0,
'is': 3,
'it': 3,
'iu': 7,
'ja': 0,
'jmc': 3,
'jv': 0,
'ka': 0,
'kab': 5,
'kaj': 3,
'kcg': 3,
'kde': 0,
'kea': 0,
'kk': 3,
'kl': 3,
'km': 0,
'kn': 0,
'ko': 0,
'ksb': 3,
'ksh': 21,
'ku': 3,
'kw': 7,
'lag': 18,
'lb': 3,
'lg': 3,
'ln': 4,
'lo': 0,
'lt': 10,
'lv': 6,
'mas': 3,
'mg': 4,
'mk': 16,
'ml': 3,
'mn': 3,
'mo': 9,
'mr': 3,
'ms': 0,
'mt': 15,
'my': 0,
'nah': 3,
'naq': 7,
'nb': 3,
'nd': 3,
'ne': 3,
'nl': 3,
'nn': 3,
'no': 3,
'nr': 3,
'nso': 4,
'ny': 3,
'nyn': 3,
'om': 3,
'or': 3,
'pa': 3,
'pap': 3,
'pl': 13,
'ps': 3,
'pt': 3,
'rm': 3,
'ro': 9,
'rof': 3,
'ru': 11,
'rwk': 3,
'sah': 0,
'saq': 3,
'se': 7,
'seh': 3,
'ses': 0,
'sg': 0,
'sh': 11,
'shi': 19,
'sk': 12,
'sl': 14,
'sma': 7,
'smi': 7,
'smj': 7,
'smn': 7,
'sms': 7,
'sn': 3,
'so': 3,
'sq': 3,
'sr': 11,
'ss': 3,
'ssy': 3,
'st': 3,
'sv': 3,
'sw': 3,
'syr': 3,
'ta': 3,
'te': 3,
'teo': 3,
'th': 0,
'ti': 4,
'tig': 3,
'tk': 3,
'tl': 4,
'tn': 3,
'to': 0,
'tr': 0,
'ts': 3,
'tzm': 22,
'uk': 11,
'ur': 3,
've': 3,
'vi': 0,
'vun': 3,
'wa': 4,
'wae': 3,
'wo': 0,
'xh': 3,
'xog': 3,
'yo': 0,
'zh': 0,
'zu': 3
};
// utility functions for plural rules methods
function isIn(n, list) {
return list.indexOf(n) !== -1;
}
function isBetween(n, start, end) {
return start <= n && n <= end;
}
// list of all plural rules methods:
// map an integer to the plural form name to use
var pluralRules = {
'0': function(n) {
return 'other';
},
'1': function(n) {
if ((isBetween((n % 100), 3, 10)))
return 'few';
if (n === 0)
return 'zero';
if ((isBetween((n % 100), 11, 99)))
return 'many';
if (n == 2)
return 'two';
if (n == 1)
return 'one';
return 'other';
},
'2': function(n) {
if (n !== 0 && (n % 10) === 0)
return 'many';
if (n == 2)
return 'two';
if (n == 1)
return 'one';
return 'other';
},
'3': function(n) {
if (n == 1)
return 'one';
return 'other';
},
'4': function(n) {
if ((isBetween(n, 0, 1)))
return 'one';
return 'other';
},
'5': function(n) {
if ((isBetween(n, 0, 2)) && n != 2)
return 'one';
return 'other';
},
'6': function(n) {
if (n === 0)
return 'zero';
if ((n % 10) == 1 && (n % 100) != 11)
return 'one';
return 'other';
},
'7': function(n) {
if (n == 2)
return 'two';
if (n == 1)
return 'one';
return 'other';
},
'8': function(n) {
if ((isBetween(n, 3, 6)))
return 'few';
if ((isBetween(n, 7, 10)))
return 'many';
if (n == 2)
return 'two';
if (n == 1)
return 'one';
return 'other';
},
'9': function(n) {
if (n === 0 || n != 1 && (isBetween((n % 100), 1, 19)))
return 'few';
if (n == 1)
return 'one';
return 'other';
},
'10': function(n) {
if ((isBetween((n % 10), 2, 9)) && !(isBetween((n % 100), 11, 19)))
return 'few';
if ((n % 10) == 1 && !(isBetween((n % 100), 11, 19)))
return 'one';
return 'other';
},
'11': function(n) {
if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))
return 'few';
if ((n % 10) === 0 ||
(isBetween((n % 10), 5, 9)) ||
(isBetween((n % 100), 11, 14)))
return 'many';
if ((n % 10) == 1 && (n % 100) != 11)
return 'one';
return 'other';
},
'12': function(n) {
if ((isBetween(n, 2, 4)))
return 'few';
if (n == 1)
return 'one';
return 'other';
},
'13': function(n) {
if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))
return 'few';
if (n != 1 && (isBetween((n % 10), 0, 1)) ||
(isBetween((n % 10), 5, 9)) ||
(isBetween((n % 100), 12, 14)))
return 'many';
if (n == 1)
return 'one';
return 'other';
},
'14': function(n) {
if ((isBetween((n % 100), 3, 4)))
return 'few';
if ((n % 100) == 2)
return 'two';
if ((n % 100) == 1)
return 'one';
return 'other';
},
'15': function(n) {
if (n === 0 || (isBetween((n % 100), 2, 10)))
return 'few';
if ((isBetween((n % 100), 11, 19)))
return 'many';
if (n == 1)
return 'one';
return 'other';
},
'16': function(n) {
if ((n % 10) == 1 && n != 11)
return 'one';
return 'other';
},
'17': function(n) {
if (n == 3)
return 'few';
if (n === 0)
return 'zero';
if (n == 6)
return 'many';
if (n == 2)
return 'two';
if (n == 1)
return 'one';
return 'other';
},
'18': function(n) {
if (n === 0)
return 'zero';
if ((isBetween(n, 0, 2)) && n !== 0 && n != 2)
return 'one';
return 'other';
},
'19': function(n) {
if ((isBetween(n, 2, 10)))
return 'few';
if ((isBetween(n, 0, 1)))
return 'one';
return 'other';
},
'20': function(n) {
if ((isBetween((n % 10), 3, 4) || ((n % 10) == 9)) && !(
isBetween((n % 100), 10, 19) ||
isBetween((n % 100), 70, 79) ||
isBetween((n % 100), 90, 99)
))
return 'few';
if ((n % 1000000) === 0 && n !== 0)
return 'many';
if ((n % 10) == 2 && !isIn((n % 100), [12, 72, 92]))
return 'two';
if ((n % 10) == 1 && !isIn((n % 100), [11, 71, 91]))
return 'one';
return 'other';
},
'21': function(n) {
if (n === 0)
return 'zero';
if (n == 1)
return 'one';
return 'other';
},
'22': function(n) {
if ((isBetween(n, 0, 1)) || (isBetween(n, 11, 99)))
return 'one';
return 'other';
},
'23': function(n) {
if ((isBetween((n % 10), 1, 2)) || (n % 20) === 0)
return 'one';
return 'other';
},
'24': function(n) {
if ((isBetween(n, 3, 10) || isBetween(n, 13, 19)))
return 'few';
if (isIn(n, [2, 12]))
return 'two';
if (isIn(n, [1, 11]))
return 'one';
return 'other';
}
};
// return a function that gives the plural form name for a given integer
var index = locales2rules[lang.replace(/-.*$/, '')];
if (!(index in pluralRules)) {
- consoleWarn('plural form unknown for [' + lang + ']');
+ console.warn('plural form unknown for [' + lang + ']');
return function() { return 'other'; };
}
return pluralRules[index];
}
// pre-defined 'plural' macro
gMacros.plural = function(str, param, key, prop) {
var n = parseFloat(param);
if (isNaN(n))
return str;
// TODO: support other properties (l20n still doesn't...)
if (prop != gTextProp)
return str;
// initialize _pluralRules
- if (!gMacros._pluralRules)
+ if (!gMacros._pluralRules) {
gMacros._pluralRules = getPluralRules(gLanguage);
+ }
var index = '[' + gMacros._pluralRules(n) + ']';
// try to find a [zero|one|two] key if it's defined
if (n === 0 && (key + '[zero]') in gL10nData) {
str = gL10nData[key + '[zero]'][prop];
} else if (n == 1 && (key + '[one]') in gL10nData) {
str = gL10nData[key + '[one]'][prop];
} else if (n == 2 && (key + '[two]') in gL10nData) {
str = gL10nData[key + '[two]'][prop];
} else if ((key + index) in gL10nData) {
str = gL10nData[key + index][prop];
+ } else if ((key + '[other]') in gL10nData) {
+ str = gL10nData[key + '[other]'][prop];
}
return str;
};
/**
* l10n dictionary functions
*/
// fetch an l10n object, warn if not found, apply `args' if possible
function getL10nData(key, args, fallback) {
var data = gL10nData[key];
if (!data) {
- consoleWarn('#' + key + ' missing for [' + gLanguage + ']');
+ console.warn('#' + key + ' is undefined.');
if (!fallback) {
return null;
}
data = fallback;
}
/** This is where l10n expressions should be processed.
* The plan is to support C-style expressions from the l20n project;
* until then, only two kinds of simple expressions are supported:
* {[ index ]} and {{ arguments }}.
*/
var rv = {};
for (var prop in data) {
var str = data[prop];
str = substIndexes(str, args, key, prop);
- str = substArguments(str, args);
+ str = substArguments(str, args, key);
rv[prop] = str;
}
return rv;
}
// replace {[macros]} with their values
function substIndexes(str, args, key, prop) {
var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/;
var reMatch = reIndex.exec(str);
if (!reMatch || !reMatch.length)
return str;
// an index/macro has been found
// Note: at the moment, only one parameter is supported
var macroName = reMatch[1];
var paramName = reMatch[2];
var param;
if (args && paramName in args) {
param = args[paramName];
} else if (paramName in gL10nData) {
param = gL10nData[paramName];
}
// there's no macro parser yet: it has to be defined in gMacros
if (macroName in gMacros) {
var macro = gMacros[macroName];
str = macro(str, param, key, prop);
}
return str;
}
// replace {{arguments}} with their values
- function substArguments(str, args) {
- var reArgs = /\{\{\s*([a-zA-Z\.]+)\s*\}\}/;
+ function substArguments(str, args, key) {
+ var reArgs = /\{\{\s*(.+?)\s*\}\}/;
var match = reArgs.exec(str);
while (match) {
if (!match || match.length < 2)
return str; // argument key not found
var arg = match[1];
var sub = '';
- if (arg in args) {
+ if (args && arg in args) {
sub = args[arg];
} else if (arg in gL10nData) {
sub = gL10nData[arg][gTextProp];
} else {
- consoleWarn('could not find argument {{' + arg + '}}');
+ console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');
return str;
}
str = str.substring(0, match.index) + sub +
str.substr(match.index + match[0].length);
match = reArgs.exec(str);
}
return str;
}
// translate an HTML element
function translateElement(element) {
var l10n = getL10nAttributes(element);
if (!l10n.id)
return;
// get the related l10n object
var data = getL10nData(l10n.id, l10n.args);
if (!data) {
- consoleWarn('#' + l10n.id + ' missing for [' + gLanguage + ']');
+ console.warn('#' + l10n.id + ' is undefined.');
return;
}
// translate element (TODO: security checks?)
- // for the node content, replace the content of the first child textNode
- // and clear other child textNodes
if (data[gTextProp]) { // XXX
- if (element.children.length === 0) {
+ if (getChildElementCount(element) === 0) {
element[gTextProp] = data[gTextProp];
} else {
- var children = element.childNodes,
- found = false;
+ // this element has element children: replace the content of the first
+ // (non-empty) child textNode and clear other child textNodes
+ var children = element.childNodes;
+ var found = false;
for (var i = 0, l = children.length; i < l; i++) {
- if (children[i].nodeType === 3 &&
- /\S/.test(children[i].textContent)) { // XXX
- // using nodeValue seems cross-browser
+ if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) {
if (found) {
children[i].nodeValue = '';
} else {
children[i].nodeValue = data[gTextProp];
found = true;
}
}
}
+ // if no (non-empty) textNode is found, insert a textNode before the
+ // first element child.
if (!found) {
- consoleWarn('unexpected error, could not translate element content');
+ var textNode = document.createTextNode(data[gTextProp]);
+ element.insertBefore(textNode, element.firstChild);
}
}
delete data[gTextProp];
}
for (var k in data) {
element[k] = data[k];
}
}
+ // webkit browsers don't currently support 'children' on SVG elements...
+ function getChildElementCount(element) {
+ if (element.children) {
+ return element.children.length;
+ }
+ if (typeof element.childElementCount !== 'undefined') {
+ return element.childElementCount;
+ }
+ var count = 0;
+ for (var i = 0; i < element.childNodes.length; i++) {
+ count += element.nodeType === 1 ? 1 : 0;
+ }
+ return count;
+ }
+
// translate an HTML subtree
function translateFragment(element) {
element = element || document.documentElement;
// check all translatable children (= w/ a `data-l10n-id' attribute)
var children = getTranslatableChildren(element);
var elementCount = children.length;
for (var i = 0; i < elementCount; i++) {
translateElement(children[i]);
}
// translate element itself if necessary
translateElement(element);
}
// cross-browser API (sorry, oldIE doesn't support getters & setters)
return {
// get a localized string
- get: function(key, args, fallback) {
- var data = getL10nData(key, args, {textContent: fallback});
- if (data) { // XXX double-check this
- return 'textContent' in data ? data.textContent : '';
+ get: function(key, args, fallbackString) {
+ var index = key.lastIndexOf('.');
+ var prop = gTextProp;
+ if (index > 0) { // An attribute has been specified
+ prop = key.substr(index + 1);
+ key = key.substring(0, index);
+ }
+ var fallback;
+ if (fallbackString) {
+ fallback = {};
+ fallback[prop] = fallbackString;
+ }
+ var data = getL10nData(key, args, fallback);
+ if (data && prop in data) {
+ return data[prop];
}
return '{{' + key + '}}';
},
// debug
getData: function() { return gL10nData; },
getText: function() { return gTextData; },
// get|set the document language
getLanguage: function() { return gLanguage; },
setLanguage: function(lang) { loadLocale(lang, translateFragment); },
// get the direction (ltr|rtl) of the current language
getDirection: function() {
// http://www.w3.org/International/questions/qa-scripts
// Arabic, Hebrew, Farsi, Pashto, Urdu
var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];
return (rtlList.indexOf(gLanguage) >= 0) ? 'rtl' : 'ltr';
},
// translate an element or document fragment
translate: translateFragment,
// this can be used to prevent race conditions
- getReadyState: function() { return gReadyState; }
+ getReadyState: function() { return gReadyState; },
+ ready: function(callback) {
+ if (!callback) {
+ return;
+ } else if (gReadyState == 'complete' || gReadyState == 'interactive') {
+ window.setTimeout(callback);
+ } else if (document.addEventListener) {
+ document.addEventListener('localized', callback);
+ } else if (document.attachEvent) {
+ document.documentElement.attachEvent('onpropertychange', function(e) {
+ if (e.propertyName === 'localized') {
+ callback();
+ }
+ });
+ }
+ }
};
-
}) (window, document);
diff --git a/lib/viewers/pdf/locale/ach/viewer.properties b/lib/viewers/pdf/locale/ach/viewer.properties
new file mode 100644
index 0000000..73ebb52
--- /dev/null
+++ b/lib/viewers/pdf/locale/ach/viewer.properties
@@ -0,0 +1,97 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Pot buk Mukato
+next.title=Pot buk Malubo Kore
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Pot buk:
+page_of=pi {{pageCount}}
+
+zoom_out.title=Dwogo Woko
+zoom_out_label=Dwogo Woko
+zoom_in.title=Dwogo iyie
+zoom_in_label=Dwogo iyie
+zoom.title=Kwoti
+print.title=Goo
+print_label=Goo
+open_file.title=Yab Pwail
+open_file_label=Yabi
+download.title=Gam
+download_label=Gam
+bookmark.title=Neno matye (loki onyo yabi i dirica manyen)
+bookmark_label=Neno Matye
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+outline.title=Nyut ryeno rek pa Coc acoya
+outline_label=Ryeno rek me Coc acoya
+thumbs.title=Nyut Capa cing
+thumbs_label=Capa cing
+findbar_label=Nong
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Pot buk {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Capa cing e Pot buk {{page}}
+
+# Context menu
+
+# Find panel button title and messages
+find_previous.title=Nong en matime malubo kore pi lok
+find_next.title=Nong en matime malubo kore pi lok
+find_not_found=Phrase pe ononge
+
+# Error panel labels
+error_more_info=Ngec Mukene
+error_close=Lor
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Kwena: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Agiki onyo acaki {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Pwail: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Rek: {{line}}
+rendering_error=Bal otyeko time kun jalo pot buk.
+
+# Predefined zoom values
+page_scale_width=Bor wi Pot buk
+page_scale_fit=Pot buk Romo
+page_scale_auto=Dowogo ne matime pire kene
+page_scale_actual=Kit Mamite
+
+# Loading indicator messages
+loading_error_indicator=Bal
+loading_error=Bal otyeko time kun pango PDF.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Lok angea manok]
+request_password=I ung otyeko gwoko PDF:
+
diff --git a/lib/viewers/pdf/locale/af/viewer.properties b/lib/viewers/pdf/locale/af/viewer.properties
new file mode 100644
index 0000000..92d9c43
--- /dev/null
+++ b/lib/viewers/pdf/locale/af/viewer.properties
@@ -0,0 +1,157 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Vorige bladsy
+previous_label=Vorige
+next.title=Volgende bladsy
+next_label=Volgende
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Bladsy:
+page_of=van {{pageCount}}
+
+zoom_out.title=Zoem uit
+zoom_out_label=Zoem uit
+zoom_in.title=Zoem in
+zoom_in_label=Zoem in
+zoom.title=Zoem
+presentation_mode.title=Wissel na voorleggingsmodus
+presentation_mode_label=Voorleggingsmodus
+open_file.title=Open lêer
+open_file_label=Open
+print.title=Druk
+print_label=Druk
+download.title=Laai af
+download_label=Laai af
+bookmark.title=Huidige aansig (kopieer of open in nuwe venster)
+bookmark_label=Huidige aansig
+
+# Secondary toolbar and context menu
+tools.title=Nutsgoed
+tools_label=Nutsgoed
+first_page.title=Gaan na eerste bladsy
+first_page.label=Gaan na eerste bladsy
+first_page_label=Gaan na eerste bladsy
+last_page.title=Gaan na laaste bladsy
+last_page.label=Gaan na laaste bladsy
+last_page_label=Gaan na laaste bladsy
+page_rotate_cw.title=Roteer kloksgewys
+page_rotate_cw.label=Roteer kloksgewys
+page_rotate_cw_label=Roteer kloksgewys
+page_rotate_ccw.title=Roteer anti-kloksgewys
+page_rotate_ccw.label=Roteer anti-kloksgewys
+page_rotate_ccw_label=Roteer anti-kloksgewys
+
+
+# Document properties dialog box
+document_properties.title=Dokumenteienskappe…
+document_properties_label=Dokumenteienskappe…
+document_properties_file_name=Lêernaam:
+document_properties_file_size=Lêergrootte:
+document_properties_kb={{size_kb}} kG ({{size_b}} grepe)
+document_properties_mb={{size_mb}} MG ({{size_b}} grepe)
+document_properties_title=Titel:
+document_properties_author=Outeur:
+document_properties_subject=Onderwerp:
+document_properties_keywords=Sleutelwoorde:
+document_properties_creation_date=Skeppingsdatum:
+document_properties_modification_date=Wysigingsdatum:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Skepper:
+document_properties_producer=PDF-vervaardiger:
+document_properties_version=PDF-weergawe:
+document_properties_page_count=Aantal bladsye:
+document_properties_close=Sluit
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Sypaneel aan/af
+toggle_sidebar_label=Sypaneel aan/af
+outline.title=Wys dokumentoorsig
+outline_label=Dokumentoorsig
+thumbs.title=Wys duimnaels
+thumbs_label=Duimnaels
+findbar.title=Soek in dokument
+findbar_label=Vind
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Bladsy {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Duimnael van bladsy {{page}}
+
+# Find panel button title and messages
+find_label=Vind:
+find_previous.title=Vind die vorige voorkoms van die frase
+find_previous_label=Vorige
+find_next.title=Vind die volgende voorkoms van die frase
+find_next_label=Volgende
+find_highlight=Verlig alle
+find_match_case_label=Kassensitief
+find_reached_top=Bokant van dokument is bereik; gaan voort van onder af
+find_reached_bottom=Einde van dokument is bereik; gaan voort van bo af
+find_not_found=Frase nie gevind nie
+
+# Error panel labels
+error_more_info=Meer inligting
+error_less_info=Minder inligting
+error_close=Sluit
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (ID: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Boodskap: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stapel: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Lêer: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Lyn: {{line}}
+rendering_error='n Fout het voorgekom toe die bladsy weergegee is.
+
+# Predefined zoom values
+page_scale_width=Bladsywydte
+page_scale_fit=Pas bladsy
+page_scale_auto=Outomatiese zoem
+page_scale_actual=Werklike grootte
+
+# Loading indicator messages
+loading_error_indicator=Fout
+loading_error='n Fout het voorgekom met die laai van die PDF.
+invalid_file_error=Ongeldige of korrupte PDF-lêer.
+missing_file_error=PDF-lêer is weg.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}}-annotasie
+password_label=Gee die wagwoord om dié PDF-lêer mee te open.
+password_invalid=Ongeldige wagwoord. Probeer gerus weer.
+password_ok=OK
+password_cancel=Kanselleer
+
+printing_not_supported=Waarskuwing: Dié blaaier ondersteun nie drukwerk ten volle nie.
+printing_not_ready=Waarskuwing: Die PDF is nog nie volledig gelaai vir drukwerk nie.
+web_fonts_disabled=Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie.
+document_colors_disabled=PDF-dokumente word nie toegelaat om hul eie kleure te gebruik nie: 'Laat bladsye toe om hul eie kleure te kies' is gedeaktiveer in die blaaier.
diff --git a/lib/viewers/pdf/locale/ak/viewer.properties b/lib/viewers/pdf/locale/ak/viewer.properties
new file mode 100644
index 0000000..883c2ab
--- /dev/null
+++ b/lib/viewers/pdf/locale/ak/viewer.properties
@@ -0,0 +1,123 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Krataafa baako a etwa mu
+previous_label=Ekyiri-baako
+next.title=Krataafa a edi so baako
+next_label=Dea-ɛ-di-so-baako
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Krataafa:
+page_of=wɔ {{pageCount}}
+
+zoom_out.title=Zuum pue
+zoom_out_label=Zuum ba abɔnten
+zoom_in.title=Zuum kɔ mu
+zoom_in_label=Zuum kɔ mu
+zoom.title=Zuum
+presentation_mode.title=Sesa kɔ Yɛkyerɛ Tebea mu
+presentation_mode_label=Yɛkyerɛ Tebea
+open_file.title=Bue Fael
+open_file_label=Bue
+print.title=Prente
+print_label=Prente
+download.title=Twe
+download_label=Twe
+bookmark.title=Seisei nhwɛ (fa anaaso bue wɔ tokuro foforo mu)
+bookmark_label=Seisei nhwɛ
+
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_title=Ti asɛm:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Sɔ anaaso dum saedbaa
+toggle_sidebar_label=Sɔ anaaso dum saedbaa
+outline.title=Kyerɛ dɔkomɛnt bɔbea
+outline_label=Dɔkomɛnt bɔbea
+thumbs.title=Kyerɛ mfoniwaa
+thumbs_label=Mfoniwaa
+findbar.title=Hu wɔ dɔkomɛnt no mu
+findbar_label=Hu
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Krataafa {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Krataafa ne mfoniwaa {{page}}
+
+# Find panel button title and messages
+find_label=Hunu:
+find_previous.title=San hu fres wɔ ekyiri baako
+find_previous_label=Ekyiri baako
+find_next.title=San hu fres no wɔ enim baako
+find_next_label=Ndiso
+find_highlight=Hyɛ bibiara nso
+find_match_case_label=Fa susu kaase
+find_reached_top=Edu krataafa ne soro, atoa so efiri ase
+find_reached_bottom=Edu krataafa n'ewiei, atoa so efiri soro
+find_not_found=Ennhu fres
+
+# Error panel labels
+error_more_info=Infɔmehyɛn bio a wɔka ho
+error_less_info=Te infɔmehyɛn bio a wɔka ho so
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{vɛɛhyen}} (nsi: {{si}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Nkrato: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Staake: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fael: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Laen: {{line}}
+rendering_error=Mfomso bae wɔ bere a wɔ rekyerɛ krataafa no.
+
+# Predefined zoom values
+page_scale_width=Krataafa tɛtrɛtɛ
+page_scale_fit=Krataafa ehimtwa
+page_scale_auto=Zuum otomatik
+page_scale_actual=Kɛseyɛ ankasa
+
+# Loading indicator messages
+loading_error_indicator=Mfomso
+loading_error=Mfomso bae wɔ bere a wɔreloode PDF no.
+invalid_file_error=PDF fael no nndi mu anaaso ho atɔ kyima.
+missing_file_error=PDF fael no ayera.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Tɛkst-nyiano]
+password_ok=OK
+password_cancel=Twa-mu
+
+printing_not_supported=Kɔkɔbɔ: Brawsa yi nnhyɛ daa mma prent ho kwan.
+printing_not_ready=Kɔkɔbɔ: Wɔnntwee PDF fael no nyinara mmbaee ama wo ɛ tumi aprente.
+web_fonts_disabled=Ɔedum wɛb-mfɔnt: nntumi mmfa PDF mfɔnt a wɔhyɛ mu nndi dwuma.
+document_colors_disabled=Wɔmma ho kwan sɛ PDF adɔkomɛnt de wɔn ara wɔn ahosu bɛdi dwuma: wɔ adum 'Ma ho kwan ma nkrataafa mpaw wɔn ara wɔn ahosu' wɔ brawsa yi mu.
diff --git a/lib/viewers/pdf/locale/an/viewer.properties b/lib/viewers/pdf/locale/an/viewer.properties
new file mode 100644
index 0000000..2f31459
--- /dev/null
+++ b/lib/viewers/pdf/locale/an/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Pachina anterior
+previous_label=Anterior
+next.title=Pachina siguient
+next_label=Siguient
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Pachina:
+page_of=de {{pageCount}}
+
+zoom_out.title=Achiquir
+zoom_out_label=Achiquir
+zoom_in.title=Agrandir
+zoom_in_label=Agrandir
+zoom.title=Grandaria
+presentation_mode.title=Cambear t'o modo de presentación
+presentation_mode_label=Modo de presentación
+open_file.title=Ubrir o fichero
+open_file_label=Ubrir
+print.title=Imprentar
+print_label=Imprentar
+download.title=Descargar
+download_label=Descargar
+bookmark.title=Vista actual (copiar u ubrir en una nueva finestra)
+bookmark_label=Anvista actual
+
+# Secondary toolbar and context menu
+tools.title=Ferramientas
+tools_label=Ferramientas
+first_page.title=Ir ta la primer pachina
+first_page.label=Ir ta la primer pachina
+first_page_label=Ir ta la primer pachina
+last_page.title=Ir ta la zaguer pachina
+last_page.label=Ir ta la zaguera pachina
+last_page_label=Ir ta la zaguer pachina
+page_rotate_cw.title=Chirar enta la dreita
+page_rotate_cw.label=Chirar enta la dreita
+page_rotate_cw_label=Chira enta la dreita
+page_rotate_ccw.title=Chirar enta la zurda
+page_rotate_ccw.label=Chirar en sentiu antihorario
+page_rotate_ccw_label=Chirar enta la zurda
+
+hand_tool_enable.title=Activar a ferramienta man
+hand_tool_enable_label=Activar a ferramenta man
+hand_tool_disable.title=Desactivar a ferramienta man
+hand_tool_disable_label=Desactivar a ferramienta man
+
+# Document properties dialog box
+document_properties.title=Propiedatz d'o documento...
+document_properties_label=Propiedatz d'o documento...
+document_properties_file_name=Nombre de fichero:
+document_properties_file_size=Grandaria d'o fichero:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Titol:
+document_properties_author=Autor:
+document_properties_subject=Afer:
+document_properties_keywords=Parolas clau:
+document_properties_creation_date=Calendata de creyación:
+document_properties_modification_date=Calendata de modificación:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creyador:
+document_properties_producer=Creyador de PDF:
+document_properties_version=Versión de PDF:
+document_properties_page_count=Numero de pachinas:
+document_properties_close=Zarrar
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Amostrar u amagar a barra lateral
+toggle_sidebar_label=Amostrar a barra lateral
+outline.title=Amostrar o esquema d'o documento
+outline_label=Esquema d'o documento
+thumbs.title=Amostrar as miniaturas
+thumbs_label=Miniaturas
+findbar.title=Trobar en o documento
+findbar_label=Trobar
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Pachina {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura d'a pachina {{page}}
+
+# Find panel button title and messages
+find_label=Trobar:
+find_previous.title=Trobar l'anterior coincidencia d'a frase
+find_previous_label=Anterior
+find_next.title=Trobar a siguient coincidencia d'a frase
+find_next_label=Siguient
+find_highlight=Resaltar-lo tot
+find_match_case_label=Coincidencia de mayusclas/minusclas
+find_reached_top=S'ha plegau a l'inicio d'o documento, se contina dende baixo
+find_reached_bottom=S'ha plegau a la fin d'o documento, se contina dende alto
+find_not_found=No s'ha trobau a frase
+
+# Error panel labels
+error_more_info=Mas información
+error_less_info=Menos información
+error_close=Zarrar
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mensache: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Pila: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fichero: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linia: {{line}}
+rendering_error=Ha ocurriu una error en renderizar a pachina.
+
+# Predefined zoom values
+page_scale_width=Amplaria d'a pachina
+page_scale_fit=Achuste d'a pachina
+page_scale_auto=Grandaria automatica
+page_scale_actual=Grandaria actual
+
+# Loading indicator messages
+loading_error_indicator=Error
+loading_error=S'ha produciu una error en cargar o PDF.
+invalid_file_error=O PDF no ye valido u ye estorbau.
+missing_file_error=No i ha fichero PDF.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anotación {{type}}]
+password_label=Introduzca a clau ta ubrir iste fichero PDF.
+password_invalid=Clau invalida. Torna a intentar-lo.
+password_ok=Acceptar
+password_cancel=Cancelar
+
+printing_not_supported=Pare cuenta: Iste navegador no maneya totalment as impresions.
+printing_not_ready=Aviso: Encara no se ha cargau completament o PDF ta imprentar-lo.
+web_fonts_disabled=As fuents web son desactivadas: no se puet incrustar fichers PDF.
+document_colors_disabled=Os documentos PDF no pueden fer servir as suyas propias colors: 'Permitir que as pachinas triguen as suyas propias colors' ye desactivau en o navegador.
diff --git a/lib/viewers/pdf/locale/ar/metadata.inc b/lib/viewers/pdf/locale/ar/metadata.inc
deleted file mode 100644
index f1a7106..0000000
--- a/lib/viewers/pdf/locale/ar/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>ar</em:locale>
- <em:name>عارض PDF</em:name>
- <em:description>يستخدم HTML5 لعرض ملفات PDF مباشره من خلال Firefox.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/ar/viewer.properties b/lib/viewers/pdf/locale/ar/viewer.properties
index 988abec..29da886 100644
--- a/lib/viewers/pdf/locale/ar/viewer.properties
+++ b/lib/viewers/pdf/locale/ar/viewer.properties
@@ -1,108 +1,161 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=الصفحة السابقة
-previous_label=السابق
-next.title=الصفحة التاليه
-next_label=التالي
+previous_label=السابقة
+next.title=الصفحة التالية
+next_label=التالية
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
-page_label=الصفحة:
+page_label=صفحة:
page_of=من {{pageCount}}
-zoom_out.title=تصغير
-zoom_out_label=تصغير
-zoom_in.title=تكبير
-zoom_in_label=تكبير
-zoom.title=التكبير
-print.title=طباعة
-print_label=طباعة
-fullscreen.title=ملء الشاشة
-fullscreen_label=ملء الشاشة
-open_file.title=فتح الملف
-open_file_label=فتح
-download.title=تحميل
-download_label=تحميل
-bookmark.title=المشهد الحالي (نسخ أو فتح في نافذة جديدة)
-bookmark_label=المشهد الحالي
+zoom_out.title=بعّد
+zoom_out_label=بعّد
+zoom_in.title=قرّب
+zoom_in_label=قرّب
+zoom.title=التقريب
+presentation_mode.title=انتقل لوضع العرض التقديمي
+presentation_mode_label=وضع العرض التقديمي
+open_file.title=افتح ملفًا
+open_file_label=افتح
+print.title=اطبع
+print_label=اطبع
+download.title=نزّل
+download_label=نزّل
+bookmark.title=المنظور الحالي (انسخ أو افتح في نافذة جديدة)
+bookmark_label=المنظور الحالي
+
+# Secondary toolbar and context menu
+tools.title=الأدوات
+tools_label=الأدوات
+first_page.title=اذهب إلى الصفحة الأولى
+first_page.label=اذهب إلى الصفحة الأولى
+first_page_label=اذهب إلى الصفحة الأولى
+last_page.title=اذهب إلى الصفحة الأخيرة
+last_page.label=اذهب إلى الصفحة الأخيرة
+last_page_label=اذهب إلى الصفحة الأخيرة
+page_rotate_cw.title=أدر باتجاه عقارب الساعة
+page_rotate_cw.label=أدر باتجاه عقارب الساعة
+page_rotate_cw_label=أدر باتجاه عقارب الساعة
+page_rotate_ccw.title=أدر بعكس اتجاه عقارب الساعة
+page_rotate_ccw.label=أدر بعكس اتجاه عقارب الساعة
+page_rotate_ccw_label=أدر بعكس اتجاه عقارب الساعة
+
+hand_tool_enable.title=فعّل أداة اليد
+hand_tool_enable_label=فعّل أداة اليد
+hand_tool_disable.title=عطّل أداة اليد
+hand_tool_disable_label=عطّل أداة اليد
+
+# Document properties dialog box
+document_properties.title=خصائص المستند…
+document_properties_label=خصائص المستند…
+document_properties_file_name=اسم الملف:
+document_properties_file_size=حجم الملف:
+document_properties_kb={{size_kb}} ك.بايت ({{size_b}} بايت)
+document_properties_mb={{size_mb}} م.بايت ({{size_b}} بايت)
+document_properties_title=العنوان:
+document_properties_author=المؤلف:
+document_properties_subject=الموضوع:
+document_properties_keywords=الكلمات الأساسية:
+document_properties_creation_date=تاريخ الإنشاء:
+document_properties_modification_date=تاريخ التعديل:
+document_properties_date_string={{date}}، {{time}}
+document_properties_creator=المنشئ:
+document_properties_producer=منتج PDF:
+document_properties_version=إصدارة PDF:
+document_properties_page_count=عدد الصفحات:
+document_properties_close=أغلق
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_slider.title=تبديل الزلاق
-toggle_slider_label=تبديل الزلاق
-outline.title=إظهار ملخص المستند
-outline_label=ملخص المستند
-thumbs.title=إظهار الصور المصغرة
-thumbs_label=الصور المصغرة
-findbar.title=البحث في المستند
-findbar_label=بحث
+toggle_sidebar.title=بدّل الشريط الجانبي
+toggle_sidebar_label=بدّل الشريط الجانبي
+outline.title=اعرض مخطط المستند
+outline_label=مخطط المستند
+thumbs.title=اعرض مُصغرات
+thumbs_label=مُصغّرات
+findbar.title=ابحث في المستند
+findbar_label=ابحث
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
-thumb_page_title=الصفحة {{page}}
+thumb_page_title=صفحة {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=صورة مصغرة من الصفحة {{page}}
-
-# Context menu
-page_rotate_cw.label=تدوير مع عقارب الساعة
-page_rotate_ccw.label=تدوير عكس عقارب الساعة
+thumb_page_canvas=مصغّرة صفحة {{page}}
# Find panel button title and messages
-find=بحث
-find_terms_not_found=(لا يوجد)
+find_label=ابحث:
+find_previous.title=ابحث عن التّواجد السّابق للعبارة
+find_previous_label=السابق
+find_next.title=ابحث عن التّواجد التّالي للعبارة
+find_next_label=التالي
+find_highlight=أبرِز الكل
+find_match_case_label=طابق حالة الأحرف
+find_reached_top=تابعت من الأسفل بعدما وصلت إلى بداية المستند
+find_reached_bottom=تابعت من الأعلى بعدما وصلت إلى نهاية المستند
+find_not_found=لا وجود للعبارة
# Error panel labels
-error_more_info=مزيد من المعلومات
+error_more_info=معلومات أكثر
error_less_info=معلومات أقل
-error_close=إغلاق
-# LOCALIZATION NOTE (error_build): "{{build}}" will be replaced by the PDF.JS
-# build ID.
-error_build=بناء PDF.JS: {{build}}
+error_close=أغلق
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=‏PDF.js ن{{version}} ‏(بناء: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
-error_message=رسالة: {{message}}
+error_message=الرسالة: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
-error_stack=المكدس: {{stack}}
+error_stack=الرصّة: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=الملف: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=السطر: {{line}}
-rendering_error=حدث خطأ اثناء رسم الصفحة.
+rendering_error=حدث خطأ أثناء عرض الصفحة.
# Predefined zoom values
page_scale_width=عرض الصفحة
-page_scale_fit=تناسب الصفحة
+page_scale_fit=ملائمة الصفحة
page_scale_auto=تقريب تلقائي
page_scale_actual=الحجم الحقيقي
# Loading indicator messages
-loading_error_indicator=خطأ
-loading_error=حدث خطأ أثناء تحميل وثيقه الـPDF
+loading_error_indicator=عطل
+loading_error=حدث عطل أثناء تحميل ملف PDF.
+invalid_file_error=ملف PDF تالف أو غير صحيح
+missing_file_error=ملف PDF غير موجود
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[ملاحظة {{type}}]
-request_password=الـPDF محمي بكلمة مرور:
+text_annotation_type.alt=[تعليق {{type}}]
+password_label=أدخل لكلمة السر لفتح هذا الملف.
+password_invalid=كلمة سر خطأ. من فضلك أعد المحاولة.
+password_ok=حسنا
+password_cancel=ألغِ
-printing_not_supported=تحذير: الطباعة ليست مدعومة كليًا في هذا المتصفح.
+printing_not_supported=تحذير: لا يدعم هذا المتصفح الطباعة بشكل كامل.
+printing_not_ready=تحذير: ملف PDF لم يُحمّل كاملًا للطباعة.
+web_fonts_disabled=خطوط الوب مُعطّلة: تعذّر استخدام خطوط PDF المُضمّنة.
+document_colors_disabled=ليس مسموحًا لملفات PDF باستخدام ألوانها الخاصة: خيار 'اسمح للصفحات باختيار ألوانها الخاصة' ليس مُفعّلًا في المتصفح.
diff --git a/lib/viewers/pdf/locale/as/viewer.properties b/lib/viewers/pdf/locale/as/viewer.properties
new file mode 100644
index 0000000..fea0a2a
--- /dev/null
+++ b/lib/viewers/pdf/locale/as/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=পূৰ্বৱৰ্তী পৃষ্ঠা
+previous_label=পূৰ্বৱৰ্তী
+next.title=পৰৱৰ্তী পৃষ্ঠা
+next_label=পৰৱৰ্তী
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=পৃষ্ঠা:
+page_of=ৰ {{pageCount}}
+
+zoom_out.title=জুম আউট
+zoom_out_label=জুম আউট
+zoom_in.title=জুম ইন
+zoom_in_label=জুম ইন
+zoom.title=জুম কৰক
+presentation_mode.title=উপস্থাপন অৱস্থালে যাওক
+presentation_mode_label=উপস্থাপন অৱস্থা
+open_file.title=ফাইল খোলক
+open_file_label=খোলক
+print.title=প্ৰিন্ট কৰক
+print_label=প্ৰিন্ট কৰক
+download.title=ডাউনল'ড কৰক
+download_label=ডাউনল'ড কৰক
+bookmark.title=বৰ্তমান দৃশ্য (কপি কৰক অথবা নতুন উইন্ডোত খোলক)
+bookmark_label=বৰ্তমান দৃশ্য
+
+# Secondary toolbar and context menu
+tools.title=সঁজুলিসমূহ
+tools_label=সঁজুলিসমূহ
+first_page.title=প্ৰথম পৃষ্ঠাত যাওক
+first_page.label=প্ৰথম পৃষ্ঠাত যাওক
+first_page_label=প্ৰথম পৃষ্ঠাত যাওক
+last_page.title=সৰ্বশেষ পৃষ্ঠাত যাওক
+last_page.label=সৰ্বশেষ পৃষ্ঠাত যাওক
+last_page_label=সৰ্বশেষ পৃষ্ঠাত যাওক
+page_rotate_cw.title=ঘড়ীৰ দিশত ঘুৰাওক
+page_rotate_cw.label=ঘড়ীৰ দিশত ঘুৰাওক
+page_rotate_cw_label=ঘড়ীৰ দিশত ঘুৰাওক
+page_rotate_ccw.title=ঘড়ীৰ ওলোটা দিশত ঘুৰাওক
+page_rotate_ccw.label=ঘড়ীৰ ওলোটা দিশত ঘুৰাওক
+page_rotate_ccw_label=ঘড়ীৰ ওলোটা দিশত ঘুৰাওক
+
+hand_tool_enable.title=হাঁত সঁজুলি সামৰ্থবান কৰক
+hand_tool_enable_label=হাঁত সঁজুলি সামৰ্থবান কৰক
+hand_tool_disable.title=হাঁত সঁজুলি অসামৰ্থবান কৰক
+hand_tool_disable_label=হাঁত সঁজুলি অসামৰ্থবান কৰক
+
+# Document properties dialog box
+document_properties.title=দস্তাবেজৰ বৈশিষ্ট্যসমূহ…
+document_properties_label=দস্তাবেজৰ বৈশিষ্ট্যসমূহ…
+document_properties_file_name=ফাইল নাম:
+document_properties_file_size=ফাইলৰ আকাৰ:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=শীৰ্ষক:
+document_properties_author=লেখক:
+document_properties_subject=বিষয়:
+document_properties_keywords=কিৱাৰ্ডসমূহ:
+document_properties_creation_date=সৃষ্টিৰ তাৰিখ:
+document_properties_modification_date=পৰিবৰ্তনৰ তাৰিখ:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=সৃষ্টিকৰ্তা:
+document_properties_producer=PDF উৎপাদক:
+document_properties_version=PDF সংস্কৰণ:
+document_properties_page_count=পৃষ্ঠাৰ গণনা:
+document_properties_close=বন্ধ কৰক
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=কাষবাৰ টগল কৰক
+toggle_sidebar_label=কাষবাৰ টগল কৰক
+outline.title=দস্তাবেজ আউটলাইন দেখুৱাওক
+outline_label=দস্তাবেজ আউটলাইন
+attachments.title=এটাচমেন্টসমূহ দেখুৱাওক
+attachments_label=এটাচমেন্টসমূহ
+thumbs.title=থাম্বনেইলসমূহ দেখুৱাওক
+thumbs_label=থাম্বনেইলসমূহ
+findbar.title=দস্তাবেজত সন্ধান কৰক
+findbar_label=সন্ধান কৰক
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=পৃষ্ঠা {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=পৃষ্ঠাৰ থাম্বনেইল {{page}}
+
+# Find panel button title and messages
+find_label=সন্ধান কৰক:
+find_previous.title=বাক্যাংশৰ পূৰ্বৱৰ্তী উপস্থিতি সন্ধান কৰক
+find_previous_label=পূৰ্বৱৰ্তী
+find_next.title=বাক্যাংশৰ পৰৱৰ্তী উপস্থিতি সন্ধান কৰক
+find_next_label=পৰৱৰ্তী
+find_highlight=সকলো উজ্জ্বল কৰক
+find_match_case_label=ফলা মিলাওক
+find_reached_top=তলৰ পৰা আৰম্ভ কৰি, দস্তাবেজৰ ওপৰলৈ অহা হৈছে
+find_reached_bottom=ওপৰৰ পৰা আৰম্ভ কৰি, দস্তাবেজৰ তললৈ অহা হৈছে
+find_not_found=বাক্যাংশ পোৱা নগল
+
+# Error panel labels
+error_more_info=অধিক তথ্য
+error_less_info=কম তথ্য
+error_close=বন্ধ কৰক
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=বাৰ্তা: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=স্টেক: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ফাইল: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=শাৰী: {{line}}
+rendering_error=এই পৃষ্ঠা ৰেণ্ডাৰ কৰোতে এটা ত্ৰুটি দেখা দিলে।
+
+# Predefined zoom values
+page_scale_width=পৃষ্ঠাৰ প্ৰস্থ
+page_scale_fit=পৃষ্ঠা খাপ
+page_scale_auto=স্বচালিত জুম
+page_scale_actual=প্ৰকৃত আকাৰ
+
+# Loading indicator messages
+loading_error_indicator=ত্ৰুটি
+loading_error=PDF ল'ড কৰোতে এটা ত্ৰুটি দেখা দিলে।
+invalid_file_error=অবৈধ অথবা ক্ষতিগ্ৰস্থ PDF file।
+missing_file_error=সন্ধানহিন PDF ফাইল।
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} টোকা]
+password_label=এই PDF ফাইল খোলিবলৈ পাছৱাৰ্ড সুমুৱাওক।
+password_invalid=অবৈধ পাছৱাৰ্ড। অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক।
+password_ok=ঠিক আছে
+password_cancel=বাতিল কৰক
+
+printing_not_supported=সতৰ্কবাৰ্তা: প্ৰিন্টিং এই ব্ৰাউছাৰ দ্বাৰা সম্পূৰ্ণভাৱে সমৰ্থিত নহয়।
+printing_not_ready=সতৰ্কবাৰ্তা: PDF প্ৰিন্টিংৰ বাবে সম্পূৰ্ণভাৱে ল'ডেড নহয়।
+web_fonts_disabled=ৱেব ফন্টসমূহ অসামৰ্থবান কৰা আছে: অন্তৰ্ভুক্ত PDF ফন্টসমূহ ব্যৱহাৰ কৰিবলে অক্ষম।
+document_colors_disabled=PDF দস্তাবেজসমূহৰ সিহতৰ নিজস্ব ৰঙ ব্যৱহাৰ কৰাৰ অনুমতি নাই: ব্ৰাউছাৰত 'পৃষ্ঠাসমূহক সিহতৰ নিজস্ব ৰঙ নিৰ্বাচন কৰাৰ অনুমতি দিয়ক' অসামৰ্থবান কৰা আছে।
diff --git a/lib/viewers/pdf/locale/ast/viewer.properties b/lib/viewers/pdf/locale/ast/viewer.properties
new file mode 100644
index 0000000..92e936f
--- /dev/null
+++ b/lib/viewers/pdf/locale/ast/viewer.properties
@@ -0,0 +1,73 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+previous.title = Páxina anterior
+previous_label = Anterior
+next.title = Páxina siguiente
+next_label = Siguiente
+page_label = Páxina:
+page_of = de {{pageCount}}
+zoom_out.title = Reducir
+zoom_out_label = Reducir
+zoom_in.title = Aumentar
+zoom_in_label = Aumentar
+zoom.title = Tamañu
+print.title = Imprentar
+print_label = Imprentar
+open_file.title = Abrir ficheru
+open_file_label = Abrir
+download.title = Descargar
+download_label = Descargar
+bookmark.title = Vista actual (copiar o abrir nuna nueva ventana)
+bookmark_label = Vista actual
+outline.title = Amosar l'esquema del documentu
+outline_label = Esquema del documentu
+thumbs.title = Amosar miniatures
+thumbs_label = Miniatures
+thumb_page_title = Páxina {{page}}
+thumb_page_canvas = Miniatura de la páxina {{page}}
+error_more_info = Más información
+error_less_info = Menos información
+error_close = Zarrar
+error_message = Mensaxe: {{message}}
+error_stack = Pila: {{stack}}
+error_file = Ficheru: {{file}}
+error_line = Llinia: {{line}}
+rendering_error = Hebo un fallu al renderizar la páxina.
+page_scale_width = Anchor de la páxina
+page_scale_fit = Axuste de la páxina
+page_scale_auto = Tamañu automáticu
+page_scale_actual = Tamañu actual
+loading_error_indicator = Fallu
+loading_error = Hebo un fallu al cargar el PDF.
+request_password = El PDF ta protexíu por una contraseña:
+printing_not_supported = Avisu: Imprentar nun tien sofitu téunicu completu nesti navegador.
+presentation_mode_label =
+presentation_mode.title =
+page_rotate_cw.label =
+page_rotate_ccw.label =
+last_page.label = Dir a la cabera páxina
+invalid_file_error = Ficheru PDF inválidu o corruptu.
+first_page.label = Dir a la primer páxina
+findbar_label = Guetar
+findbar.title = Guetar nel documentu
+find_previous_label = Anterior
+find_previous.title = Alcontrar l'anterior apaición de la fras
+find_not_found = Frase non atopada
+find_next_label = Siguiente
+find_next.title = Alcontrar la siguiente apaición d'esta fras
+find_match_case_label = Coincidencia de mayús./minús.
+find_label = Guetar:
+find_highlight = Remarcar toos
+find_reached_top=Algamóse'l principiu del documentu, siguir dende'l final
+find_reached_bottom=Algamóse'l final del documentu, siguir dende'l principiu
+web_fonts_disabled = Les fontes web tán desactivaes: ye imposible usar les fontes PDF embebíes.
+toggle_sidebar_label = Camudar barra llateral
+toggle_sidebar.title = Camudar barra llateral
+missing_file_error = Nun hai ficheru PDF.
+error_version_info = PDF.js v{{version}} (build: {{build}})
+printing_not_ready = Avisu: Esti PDF nun se cargó completamente pa poder imprentase.
+text_annotation_type.alt = [Anotación {{type}}]
+invalid_password = Contraseña non válida.
+document_colors_disabled = Los documentos PDF nun tienen permitío usar los sos propios colores: 'Permitir a les páxines elexir los sos propios colores' ta desactivao nel navegador.
diff --git a/lib/viewers/pdf/locale/az/viewer.properties b/lib/viewers/pdf/locale/az/viewer.properties
new file mode 100644
index 0000000..3a1e195
--- /dev/null
+++ b/lib/viewers/pdf/locale/az/viewer.properties
@@ -0,0 +1,139 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Əvvəlki səhifə
+previous_label=Əvvəlkini tap
+next.title=Növbəti səhifə
+next_label=İrəli
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Səhifə:
+page_of=/ {{pageCount}}
+
+zoom_out.title=Uzaqlaş
+zoom_out_label=Uzaqlaş
+zoom_in.title=Yaxınlaş
+zoom_in_label=Yaxınlaş
+zoom.title=Yaxınlaşdırma
+presentation_mode.title=Təqdimat Rejiminə Keç
+presentation_mode_label=Təqdimat Rejimi
+open_file.title=Fayl Aç
+open_file_label=Aç
+print.title=Yazdır
+print_label=Yazdır
+download.title=Yüklə
+download_label=Yüklə
+bookmark.title=Hazırkı görünüş (köçür və ya yeni pəncərədə aç)
+bookmark_label=Hazırki görünüş
+
+# Secondary toolbar and context menu
+tools.title=Alətlər
+tools_label=Alətlər
+first_page.title=İlk Səhifəyə get
+first_page.label=İlk Səhifəyə get
+first_page_label=İlk Səhifəyə get
+last_page.title=Son Səhifəyə get
+last_page.label=Son Səhifəyə get
+last_page_label=Son Səhifəyə get
+page_rotate_cw.title=Saat İstiqamətində Fırlat
+page_rotate_cw.label=Saat İstiqamətində Fırlat
+page_rotate_cw_label=Saat İstiqamətində Fırlat
+page_rotate_ccw.title=Saat İstiqamətinin Əksinə Fırlat
+page_rotate_ccw.label=Saat İstiqamətinin Əksinə Fırlat
+page_rotate_ccw_label=Saat İstiqamətinin Əksinə Fırlat
+
+
+# Document properties dialog box
+document_properties_title=Başlık:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Yan Paneli Aç/Bağla
+toggle_sidebar_label=Yan Paneli Aç/Bağla
+outline.title=Sənəd struktunu göstər
+outline_label=Sənəd strukturu
+thumbs.title=Kiçik şəkilləri göstər
+thumbs_label=Kiçik şəkillər
+findbar.title=Sənəddə Tap
+findbar_label=Axtar
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Səhifə{{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas={{page}} səhifəsinin kiçik vəziyyəti
+
+# Find panel button title and messages
+find_label=Tap:
+find_previous.title=Bir öncəki uyğun gələn sözü tapır
+find_previous_label=Geri
+find_next.title=Bir sonrakı uyğun gələn sözü tapır
+find_next_label=İrəli
+find_highlight=İşarələ
+find_match_case_label=Böyük/kiçik hərfə həssaslıq
+find_reached_top=Sənədin yuxarısına çatdı, aşağıdan davam edir
+find_reached_bottom=Sənədin sonuna çatdı, yuxarıdan davam edir
+find_not_found=Uyğunlaşma tapılmadı
+
+# Error panel labels
+error_more_info=Daha çox məlumati
+error_less_info=Daha az məlumat
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (yığma: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=İsmarıc: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stek: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fayl: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Sətir: {{line}}
+rendering_error=Səhifə göstərilərkən səhv yarandı.
+
+# Predefined zoom values
+page_scale_width=Səhifə genişliyi
+page_scale_fit=Səhifəni sığdır
+page_scale_auto=Avtomatik yaxınlaşdır
+page_scale_actual=Hazırki Həcm
+
+# Loading indicator messages
+loading_error_indicator=Səhv
+loading_error=PDF yüklenərkən bir səhv yarandı.
+invalid_file_error=Səhv və ya zədələnmiş olmuş PDF fayl.
+missing_file_error=PDF fayl yoxdur.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotasiyası]
+password_label=Bu PDF faylı açmaq üçün şifrəni daxil edin.
+password_invalid=Şifrə yanlışdır. Bir daha sınayın.
+password_ok=OK
+password_cancel=Ləğv et
+
+printing_not_supported=Xəbərdarlıq: Çap bu brauzer tərəfindən tam olaraq dəstəklənmir.
+printing_not_ready=Xəbərdarlıq: PDF çap üçün tam yüklənməyib.
+web_fonts_disabled=Veb Şriftlər söndürülüb: yerləşdirilmiş PDF şriftlərini istifadə etmək mümkün deyil.
+document_colors_disabled=PDF sənədlərə öz rənglərini işlətməyə icazə verilmir: 'Səhifələrə öz rənglərini istifadə etməyə icazə vermə' səyyahda söndürülüb.
diff --git a/lib/viewers/pdf/locale/be/viewer.properties b/lib/viewers/pdf/locale/be/viewer.properties
new file mode 100644
index 0000000..031b1df
--- /dev/null
+++ b/lib/viewers/pdf/locale/be/viewer.properties
@@ -0,0 +1,105 @@
+previous.title = Папярэдняя старонка
+previous_label = Папярэдняя
+next.title = Наступная старонка
+next_label = Наступная
+page_label = Старонка:
+page_of = з {{pageCount}}
+zoom_out.title = Паменшыць
+zoom_out_label = Паменшыць
+zoom_in.title = Павялічыць
+zoom_in_label = Павялічыць
+zoom.title = Павялічэнне тэксту
+presentation_mode.title = Пераключыцца ў рэжым паказу
+presentation_mode_label = Рэжым паказу
+open_file.title = Адчыніць файл
+open_file_label = Адчыніць
+print.title = Друкаваць
+print_label = Друкаваць
+download.title = Загрузка
+download_label = Загрузка
+bookmark.title = Цяперашняя праява (скапіяваць або адчыніць у новым акне)
+bookmark_label = Цяперашняя праява
+tools.title = Прылады
+tools_label = Прылады
+first_page.title = Перайсці на першую старонку
+first_page.label = Перайсці на першую старонку
+first_page_label = Перайсці на першую старонку
+last_page.title = Перайсці на апошнюю старонку
+last_page.label = Перайсці на апошнюю старонку
+last_page_label = Перайсці на апошнюю старонку
+page_rotate_cw.title = Павярнуць па гадзіннікавай стрэлцы
+page_rotate_cw.label = Павярнуць па гадзіннікавай стрэлцы
+page_rotate_cw_label = Павярнуць па гадзіннікавай стрэлцы
+page_rotate_ccw.title = Павярнуць супраць гадзіннікавай стрэлкі
+page_rotate_ccw.label = Павярнуць супраць гадзіннікавай стрэлкі
+page_rotate_ccw_label = Павярнуць супраць гадзіннікавай стрэлкі
+hand_tool_enable.title = Дазволіць ручную прыладу
+hand_tool_enable_label = Дазволіць ручную прыладу
+hand_tool_disable.title = Забараніць ручную прыладу
+hand_tool_disable_label = Забараніць ручную прыладу
+document_properties.title = Уласцівасці дакумента…
+document_properties_label = Уласцівасці дакумента…
+document_properties_file_name = Назва файла:
+document_properties_file_size = Памер файла:
+document_properties_kb = {{size_kb}} КБ ({{size_b}} байт)
+document_properties_mb = {{size_mb}} МБ ({{size_b}} байт)
+document_properties_title = Загаловак:
+document_properties_author = Аўтар:
+document_properties_subject = Тэма:
+document_properties_keywords = Ключавыя словы:
+document_properties_creation_date = Дата стварэння:
+document_properties_modification_date = Дата змянення:
+document_properties_date_string = {{date}}, {{time}}
+document_properties_creator = Стваральнік:
+document_properties_producer = Вырабнік PDF:
+document_properties_version = Версія PDF:
+document_properties_page_count = Колькасць старонак:
+document_properties_close = Зачыніць
+toggle_sidebar.title = Пераключэнне палічкі
+toggle_sidebar_label = Пераключыць палічку
+outline.title = Паказ будовы дакумента
+outline_label = Будова дакумента
+attachments.title = Паказаць далучэнні
+attachments_label = Далучэнні
+thumbs.title = Паказ накідаў
+thumbs_label = Накіды
+findbar.title = Пошук у дакуменце
+findbar_label = Знайсці
+thumb_page_title = Старонка {{page}}
+thumb_page_canvas = Накід старонкі {{page}}
+find_label = Пошук:
+find_previous.title = Знайсці папярэдні выпадак выразу
+find_previous_label = Папярэдні
+find_next.title = Знайсці наступны выпадак выразу
+find_next_label = Наступны
+find_highlight = Падфарбаваць усе
+find_match_case_label = Адрозніваць вялікія/малыя літары
+find_reached_top = Дасягнуты пачатак дакумента, працяг з канца
+find_reached_bottom = Дасягнуты канец дакумента, працяг з пачатку
+find_not_found = Выраз не знойдзены
+error_more_info = Падрабязней
+error_less_info = Сцісла
+error_close = Закрыць
+error_version_info = PDF.js в{{version}} (пабудова: {{build}})
+error_message = Паведамленне: {{message}}
+error_stack = Стос: {{stack}}
+error_file = Файл: {{file}}
+error_line = Радок: {{line}}
+rendering_error = Здарылася памылка падчас адлюстравання старонкі.
+page_scale_width = Шырыня старонкі
+page_scale_fit = Уцісненне старонкі
+page_scale_auto = Самастойнае павялічэнне
+page_scale_actual = Сапраўдны памер
+loading_error_indicator = Памылка
+loading_error = Здарылася памылка падчас загрузкі PDF.
+invalid_file_error = Няспраўны або пашкоджаны файл PDF.
+missing_file_error = Адсутны файл PDF.
+text_annotation_type.alt = [{{type}} Annotation]
+password_label = Увядзіце пароль, каб адчыніць гэты файл PDF.
+password_invalid = Крывы пароль. Паспрабуйце зноў.
+password_ok = Добра
+password_cancel = Скасаваць
+printing_not_supported = Папярэджанне: друк не падтрымлівацца цалкам гэтым азіральнікам.
+printing_not_ready = Увага: PDF не сцягнуты цалкам для друкавання.
+web_fonts_disabled = Шрыфты Сеціва забаронены: немгчыма ўжываць укладзеныя шрыфты PDF.
+document_colors_disabled = Дакументам PDF не дазволена карыстацца сваімі ўласнымі колерамі: 'Дазволіць старонкам выбіраць свае ўласныя колеры' абяздзейнена ў азіральніку.
diff --git a/lib/viewers/pdf/locale/bg/viewer.properties b/lib/viewers/pdf/locale/bg/viewer.properties
new file mode 100644
index 0000000..fdec99c
--- /dev/null
+++ b/lib/viewers/pdf/locale/bg/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Предишна страница
+previous_label=Предишна
+next.title=Следваща страница
+next_label=Следваща
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Страница:
+page_of=от {{pageCount}}
+
+zoom_out.title=Отдалечаване
+zoom_out_label=Отдалечаване
+zoom_in.title=Приближаване
+zoom_in_label=Приближаване
+zoom.title=Мащабиране
+presentation_mode.title=Превключване към режим на представяне
+presentation_mode_label=Режим на представяне
+open_file.title=Отваряне на файл
+open_file_label=Отваряне
+print.title=Отпечатване
+print_label=Отпечатване
+download.title=Изтегляне
+download_label=Изтегляне
+bookmark.title=Текущ изглед (копиране или отваряне в нов прозорец)
+bookmark_label=Текущ изглед
+
+# Secondary toolbar and context menu
+tools.title=Инструменти
+tools_label=Инструменти
+first_page.title=Към първата страница
+first_page.label=Към първата страница
+first_page_label=Към първата страница
+last_page.title=Към последната страница
+last_page.label=Към последната страница
+last_page_label=Към последната страница
+page_rotate_cw.title=Превъртане по часовниковата стрелка
+page_rotate_cw.label=Превъртане по часовниковата стрелка
+page_rotate_cw_label=Превъртане по часовниковата стрелка
+page_rotate_ccw.title=Превъртане обратно на часовниковата стрелка
+page_rotate_ccw.label=Превъртане обратно на часовниковата стрелка
+page_rotate_ccw_label=Превъртане обратно на часовниковата стрелка
+
+hand_tool_enable.title=Активиране на инструмента ръка
+hand_tool_enable_label=Активиране на инструмента ръка
+hand_tool_disable.title=Деактивиране на инструмента ръка
+hand_tool_disable_label=Деактивиране на инструмента ръка
+
+# Document properties dialog box
+document_properties.title=Свойства на документа…
+document_properties_label=Свойства на документа…
+document_properties_file_name=Име на файл:
+document_properties_file_size=Големина на файл:
+document_properties_kb={{size_kb}} KiB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MiB ({{size_b}} bytes)
+document_properties_title=Заглавие:
+document_properties_author=Автор:
+document_properties_subject=Тема:
+document_properties_keywords=Ключови думи:
+document_properties_creation_date=Дата на създаване:
+document_properties_modification_date=Дата на промяна:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Създател:
+document_properties_producer=PDF произведен от:
+document_properties_version=PDF версия:
+document_properties_page_count=Брой страници:
+document_properties_close=Затваряне
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Превключване на страничната лента
+toggle_sidebar_label=Превключване на страничната лента
+outline.title=Показване на очертанията на документа
+outline_label=Очертание на документа
+thumbs.title=Показване на миниатюрите
+thumbs_label=Миниатюри
+findbar.title=Намиране в документа
+findbar_label=Търсене
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Страница {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Миниатюра на страница {{page}}
+
+# Find panel button title and messages
+find_label=Търсене:
+find_previous.title=Намиране на предното споменаване на тази фраза
+find_previous_label=Предишна
+find_next.title=Намиране на следващото споменаване на тази фраза
+find_next_label=Следваща
+find_highlight=Маркирай всички
+find_match_case_label=Точно съвпадения
+find_reached_top=Достигнато е началото на документа. Търсенето ще продължи до края му.
+find_reached_bottom=Достигнат е края на документа. Търсенето ще продължи от началото му.
+find_not_found=Фразата не е намерена
+
+# Error panel labels
+error_more_info=Повече информация
+error_less_info=По-малко информация
+error_close=Затваряне
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js версия {{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Съобщение: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Стек: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Файл: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Ред: {{line}}
+rendering_error=Грешка при изчертаване на страницата.
+
+# Predefined zoom values
+page_scale_width=Ширина на страницата
+page_scale_fit=Вместване в страницата
+page_scale_auto=Автоматично мащабиране
+page_scale_actual=Действителен размер
+
+# Loading indicator messages
+loading_error_indicator=Грешка
+loading_error=Получи се грешка при зареждане на PDF-а.
+invalid_file_error=Невалиден или повреден PDF файл
+missing_file_error=Липсващ PDF файл.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Анотация {{type}}]
+password_label=Въведете парола за отваряне на този PDF файл.
+password_invalid=Невалидна парола. Моля, опитайте отново.
+password_ok=Добре
+password_cancel=Отказ
+
+printing_not_supported=Внимание: Този браузър няма пълна поддръжка на отпечатване.
+printing_not_ready=Внимание: Този PDF файл не е напълно зареден за печат.
+web_fonts_disabled=Уеб-шрифтовете са забранени: разрешаване на използването на вградените PDF шрифтове.
+document_colors_disabled=На PDF-документите не е разрешено да използват собствени цветове: „Разрешаване на страниците да избират собствени цветове“ е деактивирано в браузъра.
diff --git a/lib/viewers/pdf/locale/bn-BD/viewer.properties b/lib/viewers/pdf/locale/bn-BD/viewer.properties
new file mode 100644
index 0000000..6577a36
--- /dev/null
+++ b/lib/viewers/pdf/locale/bn-BD/viewer.properties
@@ -0,0 +1,139 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=পূর্ববর্তী পৃষ্ঠা
+previous_label=পূর্ববর্তী
+next.title=পরবর্তী পৃষ্ঠা
+next_label=পরবর্তী
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=পৃষ্ঠা:
+page_of={{pageCount}} এর
+
+zoom_out.title=ছোট আকারে প্রদর্শন
+zoom_out_label=ছোট আকারে প্রদর্শন
+zoom_in.title=বড় আকারে প্রদর্শন
+zoom_in_label=বড় আকারে প্রদর্শন
+zoom.title=বড় আকারে প্রদর্শন
+presentation_mode.title=উপস্থাপনা মোডে স্যুইচ করুন
+presentation_mode_label=উপস্থাপনা মোড
+open_file.title=ফাইল খুলুন
+open_file_label=খুলুন
+print.title=মুদ্রণ
+print_label=মুদ্রণ
+download.title=ডাউনলোড
+download_label=ডাউনলোড
+bookmark.title=বর্তমান অবস্থা (অনুলিপি অথবা নতুন উইন্ডো তে খুলুন)
+bookmark_label=বর্তমান অবস্থা
+
+# Secondary toolbar and context menu
+tools.title=টুল
+tools_label=টুল
+first_page.title=প্রথম পাতায় যাও
+first_page.label=প্রথম পাতায় যাও
+first_page_label=প্রথম পাতায় যাও
+last_page.title=শেষ পাতায় যাও
+last_page.label=শেষ পাতায় যাও
+last_page_label=শেষ পাতায় যাও
+page_rotate_cw.title=ঘড়ির কাঁটার দিকে ঘোরাও
+page_rotate_cw.label=ঘড়ির কাঁটার দিকে ঘোরাও
+page_rotate_cw_label=ঘড়ির কাঁটার দিকে ঘোরাও
+page_rotate_ccw.title=ঘড়ির কাঁটার বিপরীতে ঘোরাও
+page_rotate_ccw.label=ঘড়ির কাঁটার বিপরীতে ঘোরাও
+page_rotate_ccw_label=ঘড়ির কাঁটার বিপরীতে ঘোরাও
+
+
+# Document properties dialog box
+document_properties_title=শিরোনাম:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=সাইডবার টগল করুন
+toggle_sidebar_label=সাইডবার টগল করুন
+outline.title=নথির রূপরেখা প্রদর্শন করুন
+outline_label=নথির রূপরেখা
+thumbs.title=থাম্বনেইল সমূহ প্রদর্শন করুন
+thumbs_label=থাম্বনেইল সমূহ
+findbar.title=নথির মধ্যে খুঁজুন
+findbar_label=অনুসন্ধান
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=পৃষ্ঠা {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas={{page}} পৃষ্ঠার থাম্বনেইল
+
+# Find panel button title and messages
+find_label=অনুসন্ধান:
+find_previous.title=বাক্যাংশের পূর্ববর্তী উপস্থিতি অনুসন্ধান
+find_previous_label=পূর্ববর্তী
+find_next.title=বাক্যাংশের পরবর্তী উপস্থিতি অনুসন্ধান
+find_next_label=পরবর্তী
+find_highlight=সব হাইলাইট করা হবে
+find_match_case_label=অক্ষরের ছাঁদ মেলানো
+find_reached_top=পৃষ্ঠার শুরুতে পৌছে গেছে, নীচ থেকে আরম্ভ করা হয়েছে
+find_reached_bottom=পৃষ্ঠার শেষে পৌছে গেছে, উপর থেকে আরম্ভ করা হয়েছে
+find_not_found=বাক্যাংশ পাওয়া যায়নি
+
+# Error panel labels
+error_more_info=আরও তথ্য
+error_less_info=কম তথ্য
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=বার্তা: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=নথি: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=লাইন: {{line}}
+rendering_error=পৃষ্ঠা উপস্থাপনার সময় ত্রুটি দেখা দিয়েছে।
+
+# Predefined zoom values
+page_scale_width=পৃষ্ঠার প্রস্থ
+page_scale_fit=পৃষ্ঠা ফিট করুন
+page_scale_auto=স্বয়ংক্রিয় জুম
+page_scale_actual=প্রকৃত আকার
+
+# Loading indicator messages
+loading_error_indicator=ত্রুটি
+loading_error=পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে।
+invalid_file_error=অকার্যকর অথবা ক্ষতিগ্রস্ত পিডিএফ ফাইল।
+missing_file_error=পিডিএফ ফাইল পাওয়া যাচ্ছে না।
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} টীকা]
+password_label=পিডিএফ ফাইলটি ওপেন করতে পাসওয়ার্ড দিন।
+password_invalid=ভুল পাসওয়ার্ড। অনুগ্রহ করে আবার চেষ্টা করুন।
+password_ok=ঠিক আছে
+password_cancel=বাতিল
+
+printing_not_supported=সতর্কতা: এই ব্রাউজারে মুদ্রণ সম্পূর্ণভাবে সমর্থিত নয়।
+printing_not_ready=সতর্কীকরণ: পিডিএফটি মুদ্রণের জন্য সম্পূর্ণ লোড হয়নি।
+web_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয়: সংযুক্ত পিডিএফ ফন্ট ব্যবহার করা যাচ্ছে না।
+document_colors_disabled=পিডিএফ ডকুমেন্টকে তাদের নিজস্ব রঙ ব্যবহারে অনুমতি নেই: 'পাতা তাদের নিজেস্ব রঙ নির্বাচন করতে অনুমতি দিন' এই ব্রাউজারে নিষ্ক্রিয় রয়েছে।
diff --git a/lib/viewers/pdf/locale/bn-IN/viewer.properties b/lib/viewers/pdf/locale/bn-IN/viewer.properties
new file mode 100644
index 0000000..42936f4
--- /dev/null
+++ b/lib/viewers/pdf/locale/bn-IN/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=পূর্ববর্তী পৃষ্ঠা
+previous_label=পূর্ববর্তী
+next.title=পরবর্তী পৃষ্ঠা
+next_label=পরবর্তী
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=পৃষ্ঠা:
+page_of=সর্বমোট {{pageCount}}
+
+zoom_out.title=ছোট মাপে প্রদর্শন
+zoom_out_label=ছোট মাপে প্রদর্শন
+zoom_in.title=বড় মাপে প্রদর্শন
+zoom_in_label=বড় মাপে প্রদর্শন
+zoom.title=প্রদর্শনের মাপ
+presentation_mode.title=উপস্থাপনা মোড স্যুইচ করুন
+presentation_mode_label=উপস্থাপনা মোড
+open_file.title=ফাইল খুলুন
+open_file_label=খুলুন
+print.title=প্রিন্ট করুন
+print_label=প্রিন্ট করুন
+download.title=ডাউনলোড করুন
+download_label=ডাউনলোড করুন
+bookmark.title=বর্তমান প্রদর্শন (কপি করুন অথবা নতুন উইন্ডোতে খুলুন)
+bookmark_label=বর্তমান প্রদর্শন
+
+# Secondary toolbar and context menu
+tools.title=সরঞ্জাম
+tools_label=সরঞ্জাম
+first_page.title=প্রথম পৃষ্ঠায় চলুন
+first_page.label=প্রথম পৃষ্ঠায় চলুন
+first_page_label=প্রথম পৃষ্ঠায় চলুন
+last_page.title=সর্বশেষ পৃষ্ঠায় চলুন
+last_page.label=সর্বশেষ পৃষ্ঠায় চলুন
+last_page_label=সর্বশেষ পৃষ্ঠায় চলুন
+page_rotate_cw.title=ডানদিকে ঘোরানো হবে
+page_rotate_cw.label=ডানদিকে ঘোরানো হবে
+page_rotate_cw_label=ডানদিকে ঘোরানো হবে
+page_rotate_ccw.title=বাঁদিকে ঘোরানো হবে
+page_rotate_ccw.label=বাঁদিকে ঘোরানো হবে
+page_rotate_ccw_label=বাঁদিকে ঘোরানো হবে
+
+hand_tool_enable.title=হ্যান্ড টুল সক্রিয় করুন
+hand_tool_enable_label=হ্যান্ড টুল সক্রিয় করুন
+hand_tool_disable.title=হ্যান্ড টুল নিস্ক্রিয় করুন
+hand_tool_disable_label=হ্যান্ড টুল নিস্ক্রিয় করুন
+
+# Document properties dialog box
+document_properties.title=নথির বৈশিষ্ট্য…
+document_properties_label=নথির বৈশিষ্ট্য…
+document_properties_file_name=ফাইলের নাম:
+document_properties_file_size=ফাইলের মাপ:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} মেগাবাইট ({{size_b}} bytes)
+document_properties_title=শিরোনাম:
+document_properties_author=লেখক:
+document_properties_subject=বিষয়:
+document_properties_keywords=নির্দেশক শব্দ:
+document_properties_creation_date=নির্মাণের তারিখ:
+document_properties_modification_date=পরিবর্তনের তারিখ:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=নির্মাতা:
+document_properties_producer=PDF নির্মাতা:
+document_properties_version=PDF সংস্করণ:
+document_properties_page_count=মোট পৃষ্ঠা:
+document_properties_close=বন্ধ করুন
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=সাইডবার টগল করুন
+toggle_sidebar_label=সাইডবার টগল করুন
+outline.title=নথির রূপরেখা প্রদর্শন
+outline_label=নথির রূপরেখা প্রদর্শন
+thumbs.title=থাম্ব-নেইল প্রদর্শন
+thumbs_label=থাম্ব-নেইল প্রদর্শন
+findbar.title=নথিতে খুঁজুন
+findbar_label=অনুসন্ধান করুন
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=পৃষ্ঠা {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=পৃষ্ঠা {{page}}-র থাম্ব-নেইল
+
+# Find panel button title and messages
+find_label=অনুসন্ধান:
+find_previous.title=চিহ্নিত পংক্তির পূর্ববর্তী উপস্থিতি অনুসন্ধান করুন
+find_previous_label=পূর্ববর্তী
+find_next.title=চিহ্নিত পংক্তির পরবর্তী উপস্থিতি অনুসন্ধান করুন
+find_next_label=পরবর্তী
+find_highlight=সমগ্র উজ্জ্বল করুন
+find_match_case_label=হরফের ছাঁদ মেলানো হবে
+find_reached_top=পৃষ্ঠার প্রারম্ভে পৌছে গেছে, নীচের অংশ থেকে আরম্ভ করা হবে
+find_reached_bottom=পৃষ্ঠার অন্তিম প্রান্তে পৌছে গেছে, প্রথম অংশ থেকে আরম্ভ করা হবে
+find_not_found=পংক্তি পাওয়া যায়নি
+
+# Error panel labels
+error_more_info=অতিরিক্ত তথ্য
+error_less_info=কম তথ্য
+error_close=বন্ধ করুন
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Message: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=File: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Line: {{line}}
+rendering_error=পৃষ্ঠা প্রদর্শনকালে একটি সমস্যা দেখা দিয়েছে।
+
+# Predefined zoom values
+page_scale_width=পৃষ্ঠার প্রস্থ অনুযায়ী
+page_scale_fit=পৃষ্ঠার মাপ অনুযায়ী
+page_scale_auto=স্বয়ংক্রিয় মাপ নির্ধারণ
+page_scale_actual=প্রকৃত মাপ
+
+# Loading indicator messages
+loading_error_indicator=ত্রুটি
+loading_error=PDF লোড করার সময় সমস্যা দেখা দিয়েছে।
+invalid_file_error=অবৈধ বা ক্ষতিগ্রস্ত পিডিএফ ফাইল।
+missing_file_error=অনুপস্থিত PDF ফাইল
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=এই PDF ফাইল খোলার জন্য পাসওয়ার্ড দিন।
+password_invalid=পাসওয়ার্ড সঠিক নয়। অনুগ্রহ করে পুনরায় প্রচেষ্টা করুন।
+password_ok=OK
+password_cancel=বাতিল করুন
+
+printing_not_supported=সতর্কবার্তা: এই ব্রাউজার দ্বারা প্রিন্ট ব্যবস্থা সম্পূর্ণরূপে সমর্থিত নয়।
+printing_not_ready=সতর্কবাণী: পিডিএফ সম্পূর্ণরূপে মুদ্রণের জন্য লোড করা হয় না.
+web_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয় করা হয়েছে: এমবেডেড পিডিএফ ফন্ট ব্যবহার করতে অক্ষম.
+document_colors_disabled=পিডিএফ নথি তাদের নিজস্ব রং ব্যবহার করার জন্য অনুমতিপ্রাপ্ত নয়: ব্রাউজারে নিষ্ক্রিয় করা হয়েছে য়েন 'পেজ তাদের নিজস্ব রং নির্বাচন করার অনুমতি প্রদান করা য়ায়।'
diff --git a/lib/viewers/pdf/locale/br/viewer.properties b/lib/viewers/pdf/locale/br/viewer.properties
new file mode 100644
index 0000000..de80639
--- /dev/null
+++ b/lib/viewers/pdf/locale/br/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Pajenn a-raok
+previous_label=A-raok
+next.title=Pajenn war-lerc'h
+next_label=War-lerc'h
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Pajenn :
+page_of=eus {{pageCount}}
+
+zoom_out.title=Zoum bihanaat
+zoom_out_label=Zoum bihanaat
+zoom_in.title=Zoum brasaat
+zoom_in_label=Zoum brasaat
+zoom.title=Zoum
+presentation_mode.title=Trec'haoliñ etrezek ar mod kinnigadenn
+presentation_mode_label=Mod kinnigadenn
+open_file.title=Digeriñ ur restr
+open_file_label=Digeriñ ur restr
+print.title=Moullañ
+print_label=Moullañ
+download.title=Pellgargañ
+download_label=Pellgargañ
+bookmark.title=Gwel bremanel (eilañ pe zigeriñ e-barzh ur prenestr nevez)
+bookmark_label=Gwel bremanel
+
+# Secondary toolbar and context menu
+tools.title=Ostilhoù
+tools_label=Ostilhoù
+first_page.title=Mont d'ar bajenn gentañ
+first_page.label=Mont d'ar bajenn gentañ
+first_page_label=Mont d'ar bajenn gentañ
+last_page.title=Mont d'ar bajenn diwezhañ
+last_page.label=Mont d'ar bajenn diwezhañ
+last_page_label=Mont d'ar bajenn diwezhañ
+page_rotate_cw.title=C'hwelañ gant roud ar bizied
+page_rotate_cw.label=C'hwelañ gant roud ar bizied
+page_rotate_cw_label=C'hwelañ gant roud ar bizied
+page_rotate_ccw.title=C'hwelañ gant roud gin ar bizied
+page_rotate_ccw.label=C'hwelañ gant roud gin ar bizied
+page_rotate_ccw_label=C'hwelañ gant roud gin ar bizied
+
+hand_tool_enable.title=Gweredekaat an ostilh "dorn"
+hand_tool_enable_label=Gweredekaat an ostilh "dorn"
+hand_tool_disable.title=Diweredekaat an ostilh "dorn"
+hand_tool_disable_label=Diweredekaat an ostilh "dorn"
+
+# Document properties dialog box
+document_properties.title=Perzhioù an teul…
+document_properties_label=Perzhioù an teul…
+document_properties_file_name=Anv restr :
+document_properties_file_size=Ment ar restr :
+document_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit)
+document_properties_mb={{size_mb}} Me ({{size_b}} eizhbit)
+document_properties_title=Titl :
+document_properties_author=Aozer :
+document_properties_subject=Danvez :
+document_properties_keywords=Gerioù-alc'hwez :
+document_properties_creation_date=Deiziad krouiñ :
+document_properties_modification_date=Deiziad kemmañ :
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Krouer :
+document_properties_producer=Kenderc'her PDF :
+document_properties_version=Handelv PDF :
+document_properties_page_count=Niver a bajennoù :
+document_properties_close=Serriñ
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez
+toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez
+outline.title=Diskouez ar sinedoù
+outline_label=Sinedoù an teuliad
+attachments.title=Diskouez ar c'henstagadurioù
+attachments_label=Kenstagadurioù
+thumbs.title=Diskouez ar melvennoù
+thumbs_label=Melvennoù
+findbar.title=Klask e-barzh an teuliad
+findbar_label=Klask
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Pajenn {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Melvenn ar bajenn {{page}}
+
+# Find panel button title and messages
+find_label=Kavout :
+find_previous.title=Kavout an tamm frazenn kent o klotañ ganti
+find_previous_label=Kent
+find_next.title=Kavout an tamm frazenn war-lerc'h o klotañ ganti
+find_next_label=War-lerc'h
+find_highlight=Usskediñ pep tra
+find_match_case_label=Teurel evezh ouzh ar pennlizherennoù
+find_reached_top=Tizhet eo bet derou ar bajenn, kenderc'hel diouzh an diaz
+find_reached_bottom=Tizhet eo bet dibenn ar bajenn, kenderc'hel diouzh ar c'hrec'h
+find_not_found=N'haller ket kavout ar frazenn
+
+# Error panel labels
+error_more_info=Muioc'h a ditouroù
+error_less_info=Nebeutoc'h a ditouroù
+error_close=Serriñ
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js handelv {{version}} (kempunadur : {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Kemennadenn : {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Torn : {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Restr : {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linenn : {{line}}
+rendering_error=Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajennad.
+
+# Predefined zoom values
+page_scale_width=Led ar bajenn
+page_scale_fit=Pajenn a-bezh
+page_scale_auto=Zoum emgefreek
+page_scale_actual=Ment wir
+
+# Loading indicator messages
+loading_error_indicator=Fazi
+loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF.
+invalid_file_error=Restr PDF didalvoudek pe kontronet.
+missing_file_error=Restr PDF o vankout.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Notennañ]
+password_label=Enankit ar ger-tremen evit digeriñ ar restr PDF-mañ.
+password_invalid=Ger-tremen didalvoudek. Klaskit en-dro mar plij.
+password_ok=Mat eo
+password_cancel=Nullañ
+
+printing_not_supported=Kemenn : N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ.
+printing_not_ready=Kemenn : N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn.
+web_fonts_disabled=Diweredekaet eo an nodrezhoù web : n'haller ket arverañ an nodrezhoù PDF enframmet.
+document_colors_disabled=N'eo ket aotreet an teuliadoù PDF da arverañ o livioù dezho : diweredekaet eo 'Aotren ar pajennoù da zibab o livioù dezho' e-barzh ar merdeer.
diff --git a/lib/viewers/pdf/locale/bs/viewer.properties b/lib/viewers/pdf/locale/bs/viewer.properties
new file mode 100644
index 0000000..a89bf7a
--- /dev/null
+++ b/lib/viewers/pdf/locale/bs/viewer.properties
@@ -0,0 +1,125 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Prethodna strana
+previous_label=Prethodna
+next.title=Sljedeća strna
+next_label=Sljedeća
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Strana:
+page_of=od {{pageCount}}
+
+zoom_out.title=Umanji
+zoom_out_label=Umanji
+zoom_in.title=Uvećaj
+zoom_in_label=Uvećaj
+zoom.title=Uvećanje
+print.title=Å tampaj
+print_label=Å tampaj
+presentation_mode.title=Prebaci se u prezentacijski režim
+presentation_mode_label=Prezentacijski režim
+open_file.title=Otvori fajl
+open_file_label=Otvori
+download.title=Preuzmi
+download_label=Preuzmi
+bookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru)
+bookmark_label=Trenutni prikaz
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Uključi/isključi bočnu traku
+toggle_sidebar_label=Uključi/isključi bočnu traku
+outline.title=Prikaži konture dokumenta
+outline_label=Konture dokumenta
+thumbs.title=Prikaži thumbnailove
+thumbs_label=Thumbnailovi
+findbar.title=Pronađi u dokumentu
+findbar_label=Pronađi
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Strana {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Thumbnail strane {{page}}
+
+# Context menu
+first_page.label=Idi na prvu stranu
+last_page.label=Idi na zadnju stranu
+page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu
+page_rotate_ccw.label=Rotiraj suprotno smjeru kazaljke na satu
+
+# Find panel button title and messages
+find_label=Pronađi:
+find_previous.title=Pronađi prethodno pojavljivanje fraze
+find_previous_label=Prethodno
+find_next.title=Pronađi sljedeće pojavljivanje fraze
+find_next_label=Sljedeće
+find_highlight=Označi sve
+find_match_case_label=Osjetljivost na karaktere
+find_reached_top=Dostigao sam vrh dokumenta, nastavljam sa dna
+find_reached_bottom=Dostigao sam kraj dokumenta, nastavljam sa vrha
+find_not_found=Fraza nije pronađena
+
+# Error panel labels
+error_more_info=Više informacija
+error_less_info=Manje informacija
+error_close=Zatvori
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Poruka: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fajl: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linija: {{line}}
+rendering_error=Došlo je do greške prilikom renderiranja strane.
+
+# Predefined zoom values
+page_scale_width=Å irina strane
+page_scale_fit=Uklopi stranu
+page_scale_auto=Automatsko uvećanje
+page_scale_actual=Stvarna veličina
+
+# Loading indicator messages
+# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
+loading_error_indicator=Greška
+loading_error=Došlo je do greške prilikom učitavanja PDF-a.
+invalid_file_error=Neispravan ili oštećen PDF fajl.
+missing_file_error=Nedostaje PDF fajl.
+
+# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# "{{[type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} pribilješka]
+request_password=PDF je zaštićen lozinkom:
+invalid_password=Pogrešna lozinka.
+
+printing_not_supported=Upozorenje: Štampanje nije u potpunosti podržano u ovom browseru.
+printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za štampanje.
+web_fonts_disabled=Web fontovi su onemogućeni: nemoguće koristiti ubačene PDF fontove.
+document_colors_disabled=PDF dokumentima nije dozvoljeno da koriste vlastite boje: \'Dozvoli stranicama da izaberu vlastite boje\' je deaktivirano u browseru.
diff --git a/lib/viewers/pdf/locale/ca/chrome.properties b/lib/viewers/pdf/locale/ca/chrome.properties
deleted file mode 100644
index 2fb6413..0000000
--- a/lib/viewers/pdf/locale/ca/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=No es pot visualitzar el docuement.
-open_with_different_viewer=Obri-ho amb un altre visor.
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/ca/metadata.inc b/lib/viewers/pdf/locale/ca/metadata.inc
deleted file mode 100644
index 30ca643..0000000
--- a/lib/viewers/pdf/locale/ca/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>ca</em:locale>
- <em:name>Visor d'arxius PDF</em:name>
- <em:description>HTML5 per veure documents</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/ca/viewer.properties b/lib/viewers/pdf/locale/ca/viewer.properties
index 84b515d..d55ef21 100644
--- a/lib/viewers/pdf/locale/ca/viewer.properties
+++ b/lib/viewers/pdf/locale/ca/viewer.properties
@@ -1,124 +1,161 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Main toolbar buttons (tooltips and alt text for images)
-previous.title=Pàgina anterior
-previous_label=Anterior
-next.title=Pàgina següent
-next_label=Següent
-
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Pàgina:
-page_of=de {{pageCount}}
-
-zoom_out.title=Reduir
-zoom_out_label=Reduir
-zoom_in.title=Ampliar
-zoom_in_label=Ampliar
-zoom.title=Ampliació
-print.title=Imprimir
-print_label=Imprimir
-fullscreen.title=Pantalla completa
-fullscreen_label=Pantalla completa
-presentation_mode.title=Canviar a mode de Presentació
-presentation_mode_label=Mode de Presentació
-open_file.title=Obrir arxiu
-open_file_label=Obrir
-download.title=Descarregar
-download_label=Descarregar
-bookmark.title=Vista actual (copiï o obri en una finestra nova)
-bookmark_label=Vista actual
-
-# Tooltips and alt text for side panel toolbar buttons
-# (the _label strings are alt text for the buttons, the .title strings are
-# tooltips)
-toggle_slider.title=Alternar lliscador
-toggle_slider_label=Alternar lliscador
-outline.title=Mostrar esquema del document
-outline_label=Esquema del document
-thumbs.title=Mostrar miniatures
-thumbs_label=Miniatures
-findbar.title=Cercar en el document
-findbar_label=Cercar
-
-# Thumbnails panel item (tooltip and alt text for images)
-# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
-# number.
-thumb_page_title=Pàgina {{page}}
-# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
-# number.
-thumb_page_canvas=Miniatura de la pàgina {{page}}
-
-# Find panel button title and messages
-find=Cercar
-find_terms_not_found=(No trobat)
-# Context menu
-first_page.label=Primera pàgina
-last_page.label=Darrera pàgina
-page_rotate_cw.label=Rotar sentit horari
-page_rotate_ccw.label=Rotar sentit anti-horari
-
-# Find panel button title and messages
-find_label=Cerca:
-find_previous.title=Trobar ocurrència anterior
-find_previous_label=Previ
-find_next.title=Trobar ocurrència posterior
-find_next_label=Següent
-find_highlight=Contrastar tot
-find_match_case_label=Majúscules i minúscules
-find_wrapped_to_bottom=Part superior assolida, continu a la part inferior
-find_wrapped_to_top=Final de pàgina finalitzada, continu a la part superior
-find_not_found=Frase no trobada
-
-# Error panel labels
-error_more_info=Més informació
-error_less_info=Menys informació
-error_close=Tancar
-# LOCALIZATION NOTE (error_build): "{{build}}" will be replaced by the PDF.JS
-# build ID.
-error_build=Compilació de PDF.JS: {{build}}
-# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
-# english string describing the error.
-error_message=Missatge: {{message}}
-# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
-# trace.
-error_stack=Pila: {{stack}}
-# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
-error_file=Arxiu: {{file}}
-# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=Línia: {{line}}
-rendering_error=Ha ocurregut un error mentre es renderitzava la pàgina.
-
-# Predefined zoom values
-page_scale_width=Ample de pàgina
-page_scale_fit=Ajustar a la pàgina
-page_scale_auto=Ampliació automàtica
-page_scale_actual=Tamany real
-
-# Loading indicator messages
-loading_error_indicator=Error
-loading_error=Ha ocorregut un error mentres es carregava el PDF.
-invalid_file_error=Invàlid o fitxer PDF corrupte.
-
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
-# "{{type}}" will be replaced with an annotation type from a list defined in
-# the PDF spec (32000-1:2008 Table 169 – Annotation types).
-# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[Anotació {{type}}]
-request_password=El PDF està protegit amb una contrasenya:
-
-printing_not_supported=Avís: La impressió no és compatible totalment en aquest navegador.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Pàgina anterior
+previous_label=Anterior
+next.title=Pàgina següent
+next_label=Següent
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Pàgina:
+page_of=de {{pageCount}}
+
+zoom_out.title=Allunya
+zoom_out_label=Allunya
+zoom_in.title=Apropa
+zoom_in_label=Apropa
+zoom.title=Escala
+presentation_mode.title=Canvia al mode de presentació
+presentation_mode_label=Mode de presentació
+open_file.title=Obre el fitxer
+open_file_label=Obre
+print.title=Imprimeix
+print_label=Imprimeix
+download.title=Baixa
+download_label=Baixa
+bookmark.title=Vista actual (copia o obre en una finestra nova)
+bookmark_label=Vista actual
+
+# Secondary toolbar and context menu
+tools.title=Eines
+tools_label=Eines
+first_page.title=Vés a la primera pàgina
+first_page.label=Vés a la primera pàgina
+first_page_label=Vés a la primera pàgina
+last_page.title=Vés a l'última pàgina
+last_page.label=Vés a l'última pàgina
+last_page_label=Vés a l'última pàgina
+page_rotate_cw.title=Gira cap a la dreta
+page_rotate_cw.label=Gira cap a la dreta
+page_rotate_cw_label=Gira cap a la dreta
+page_rotate_ccw.title=Gira cap a l'esquerra
+page_rotate_ccw.label=Gira cap a l'esquerra
+page_rotate_ccw_label=Gira cap a l'esquerra
+
+hand_tool_enable.title=Habilita l'eina de mà
+hand_tool_enable_label=Habilita l'eina de mà
+hand_tool_disable.title=Inhabilita l'eina de mà
+hand_tool_disable_label=Inhabilita l'eina de mà
+
+# Document properties dialog box
+document_properties.title=Propietats del document…
+document_properties_label=Propietats del document…
+document_properties_file_name=Nom del fitxer:
+document_properties_file_size=Mida del fitxer:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Títol:
+document_properties_author=Autor:
+document_properties_subject=Assumpte:
+document_properties_keywords=Paraules clau:
+document_properties_creation_date=Data de creació:
+document_properties_modification_date=Data de modificació:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creador:
+document_properties_producer=Generador de PDF:
+document_properties_version=Versió de PDF:
+document_properties_page_count=Nombre de pàgines:
+document_properties_close=Tanca
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Mostra/amaga la barra lateral
+toggle_sidebar_label=Mostra/amaga la barra lateral
+outline.title=Mostra el contorn del document
+outline_label=Contorn del document
+thumbs.title=Mostra les miniatures
+thumbs_label=Miniatures
+findbar.title=Cerca al document
+findbar_label=Cerca
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Pàgina {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura de la pàgina {{page}}
+
+# Find panel button title and messages
+find_label=Cerca:
+find_previous.title=Cerca l'anterior coincidència de l'expressió
+find_previous_label=Anterior
+find_next.title=Cerca la següent coincidència de l'expressió
+find_next_label=Següent
+find_highlight=Ressalta-ho tot
+find_match_case_label=Distingeix entre majúscules i minúscules
+find_reached_top=S'ha arribat al principi del document, es continua pel final
+find_reached_bottom=S'ha arribat al final del document, es continua pel principi
+find_not_found=No s'ha trobat l'expressió
+
+# Error panel labels
+error_more_info=Més informació
+error_less_info=Menys informació
+error_close=Tanca
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (muntatge: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Missatge: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Pila: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fitxer: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Línia: {{line}}
+rendering_error=S'ha produït un error mentre es renderitzava la pàgina
+
+# Predefined zoom values
+page_scale_width=Amplària de la pàgina
+page_scale_fit=Ajusta la pàgina
+page_scale_auto=Zoom automàtic
+page_scale_actual=Mida real
+
+# Loading indicator messages
+loading_error_indicator=Error
+loading_error=S'ha produït un error en carregar el PDF.
+invalid_file_error=El fitxer PDF no és vàlid o està malmès.
+missing_file_error=Falta el fitxer PDF.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anotació {{type}}]
+password_label=Introduïu la contrasenya per obrir aquest fitxer PDF.
+password_invalid=La contrasenya no és vàlida. Torneu-ho a provar.
+password_ok=D'acord
+password_cancel=Cancel·la
+
+printing_not_supported=Avís: la impressió no és plenament funcional en aquest navegador.
+printing_not_ready=Atenció: el PDF no s'ha acabat de carregar per imprimir-lo.
+web_fonts_disabled=Les fonts web estan inhabilitades: no es poden incrustar fitxers PDF.
+document_colors_disabled=Els documents PDF no poden usar els seus colors propis: «Permet a les pàgines triar els colors propis» es troba desactivat al navegador.
diff --git a/lib/viewers/pdf/locale/cs/metadata.inc b/lib/viewers/pdf/locale/cs/metadata.inc
deleted file mode 100644
index ed5c2a1..0000000
--- a/lib/viewers/pdf/locale/cs/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>cs</em:locale>
- <em:name>PDF Viewer</em:name>
- <em:description>Používá HTML5 pro zobrazení PDF souborů přímo ve Firefoxu.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/cs/viewer.properties b/lib/viewers/pdf/locale/cs/viewer.properties
index 83f12b2..7ff9ac9 100644
--- a/lib/viewers/pdf/locale/cs/viewer.properties
+++ b/lib/viewers/pdf/locale/cs/viewer.properties
@@ -1,58 +1,163 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-bookmark.title=Aktuální zobrazení (zkopírovat nebo otevřít v novém okně)
+# Main toolbar buttons (tooltips and alt text for images)
previous.title=Předchozí stránka
+previous_label=Předchozí
next.title=Další stránka
-print.title=Tisk
-download.title=Stáhnout
-zoom_out.title=Zmenšit
-zoom_in.title=Zvětšit
+next_label=Další
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Stránka:
+page_of=z {{pageCount}}
+
+zoom_out.title=Zmenší velikost
+zoom_out_label=Zmenšit
+zoom_in.title=Zvětší velikost
+zoom_in_label=Zvětšit
+zoom.title=Nastaví velikost
+presentation_mode.title=Přepne režimu prezentace
+presentation_mode_label=Režim prezentace
+open_file.title=Otevře soubor
+open_file_label=Otevřít
+print.title=Vytiskne dokument
+print_label=Tisk
+download.title=Stáhne dokument
+download_label=Stáhnout
+bookmark.title=Aktuální pohled (kopírovat nebo otevřít v novém okně)
+bookmark_label=Aktuální pohled
+
+# Secondary toolbar and context menu
+tools.title=Nástroje
+tools_label=Nástroje
+first_page.title=Přejde na první stránku
+first_page.label=Přejít na první stránku
+first_page_label=Přejít na první stránku
+last_page.title=Přejde na poslední stránku
+last_page.label=Přejít na poslední stránku
+last_page_label=Přejít na poslední stránku
+page_rotate_cw.title=Otočí po směru hodin
+page_rotate_cw.label=Otočit po směru hodin
+page_rotate_cw_label=Otočit po směru hodin
+page_rotate_ccw.title=Otočí proti směru hodin
+page_rotate_ccw.label=Otočit proti směru hodin
+page_rotate_ccw_label=Otočit proti směru hodin
+
+hand_tool_enable.title=Povolit nástroj ručička
+hand_tool_enable_label=Povolit nástroj ručička
+hand_tool_disable.title=Zakázat nástroj ručička
+hand_tool_disable_label=Zakázat nástroj ručička
+
+# Document properties dialog box
+document_properties.title=Vlastnosti dokumentu…
+document_properties_label=Vlastnosti dokumentu…
+document_properties_file_name=Název souboru:
+document_properties_file_size=Velikost souboru:
+document_properties_kb={{size_kb}} kB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Nadpis:
+document_properties_author=Autor:
+document_properties_subject=Subjekt:
+document_properties_keywords=Klíčová slova:
+document_properties_creation_date=Datum vytvoření:
+document_properties_modification_date=Datum úpravy:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Vytvořil:
+document_properties_producer=Tvůrce PDF:
+document_properties_version=Verze PDF:
+document_properties_page_count=Počet stránek:
+document_properties_close=Zavřít
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Postranní lišta
+toggle_sidebar_label=Postranní lišta
+outline.title=Zobrazí osnovu dokumentu
+outline_label=Osnova dokumentu
+attachments.title=Zobrazí přílohy
+attachments_label=Přílohy
+thumbs.title=Zobrazí náhledy
+thumbs_label=Náhledy
+findbar.title=Najde v dokumentu
+findbar_label=Najít
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Strana {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Náhled strany {{page}}
+
+# Find panel button title and messages
+find_label=Najít:
+find_previous.title=Najde předchozí výskyt hledaného spojení
+find_previous_label=Předchozí
+find_next.title=Najde další výskyt hledaného spojení
+find_next_label=Další
+find_highlight=Zvýraznit
+find_match_case_label=Rozlišovat velikost
+find_reached_top=Dosažen začátek dokumentu, pokračuje se od konce
+find_reached_bottom=Dosažen konec dokumentu, pokračuje se o začátku
+find_not_found=Hledané spojení nenalezeno
+
+# Error panel labels
error_more_info=Více informací
error_less_info=Méně informací
error_close=Zavřít
-error_build=PDF.JS Build: {{build}}
-error_message=Zpráva:{{message}}
-error_stack=Stack:{{stack}}
-error_file=Soubor:{{file}}
-error_line=Řádek:{{line}}
-page_scale_width=Šířka stránky
-page_scale_fit=Stránka
-page_scale_auto=Automatické přibližení
-page_scale_actual=Skutečná velikost
-toggle_slider.title=Přepnout posuvník
-thumbs.title=Zobrazit náhledy
-outline.title=Zobrazit osnovu dokumentu
-loading=Načítám... {{percent}}%
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (sestavení: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Zpráva: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Zásobník: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Soubor: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Řádka: {{line}}
+rendering_error=Při vykreslování stránky nastala chyba.
+
+# Predefined zoom values
+page_scale_width=Podle šířky
+page_scale_fit=Podle výšky
+page_scale_auto=Automatická velikost
+page_scale_actual=Aktuální velikost
+
+# Loading indicator messages
loading_error_indicator=Chyba
-loading_error=Došlo k chybě při načítání PDF.
-rendering_error=Došlo k chybě při vykreslování stránky.
-page_label=Stránka:
-page_of=z{{pageCount}}
-open_file.title=Otevřít soubor
-text_annotation_type=[{{type}}Anotace]
-toggle_slider_label=Přepnout posuvník
-thumbs_label=Náhledy
-outline_label=Přehled dokumentu
-bookmark_label=Aktuální zobrazení
-previous_label=Předchozí
-next_label=Další
-print_label=Tisk
-download_label=Stáhnout
-zoom_out_label=Zmenšit
-zoom_in_label=Přiblížit
-zoom.title=Zvětšit
-thumb_page_title=Stránka{{page}}
-thumb_page_canvas=Náhled stránky {{page}}
-request_password=PDF je chráněn heslem:
+loading_error=Při nahrávání PDF nastala chyba.
+invalid_file_error=Neplatný nebo chybný soubor PDF.
+missing_file_error=Chybí soubor PDF.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anotace typu {{type}}]
+password_label=Pro otevření PDF souboru vložte heslo.
+password_invalid=Neplatné heslo. Zkuste to znovu.
+password_ok=OK
+password_cancel=Zrušit
+
+printing_not_supported=Upozornění: Tisk není v tomto prohlížeči plně podporován.
+printing_not_ready=Upozornění: Dokument PDF není kompletně načten.
+web_fonts_disabled=Webová písma jsou zakázána, proto není možné použít vložená písma PDF.
+document_colors_disabled=PDF dokumenty nemají povoleny používání vlastních barev: volba \'Povolit stránkám používat vlastní barvy namísto výše zvolených\' je v prohlížeči deaktivována.
diff --git a/lib/viewers/pdf/locale/csb/viewer.properties b/lib/viewers/pdf/locale/csb/viewer.properties
new file mode 100644
index 0000000..293a353
--- /dev/null
+++ b/lib/viewers/pdf/locale/csb/viewer.properties
@@ -0,0 +1,134 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Pòprzédnô strona
+previous_label=Pòprzédnô
+next.title=Nôslédnô strona
+next_label=Nôslédnô
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Strona:
+page_of=z {{pageCount}}
+
+zoom_out.title=Zmniészë
+zoom_out_label=Zmniészë
+zoom_in.title=Zwikszë
+zoom_in_label=Wiôlgòsc
+zoom.title=Wiôlgòsc
+print.title=Drëkùjë
+print_label=Drëkùjë
+presentation_mode.title=Przéńdzë w trib prezentacje
+presentation_mode_label=Trib prezentacje
+open_file.title=Òtemkni lopk
+open_file_label=Òtemkni
+download.title=Zladënk
+download_label=Zladënk
+bookmark.title=Spamiãtôj wëzdrzatk (kòpérëje, abò òtemkni w nowim òknnie)
+bookmark_label=Aktualny wëzdrzatk
+
+find_label=Szëkôj:
+find_previous.title=Biéj do pòprzédnégò wënikù szëkbë
+find_previous_label=Pòprzédny
+find_next.title=Biéj do nôslédnégò wënikù szëkbë
+find_next_label=Nôslédny
+find_highlight=Pòdszkrzëni wszëtczé
+find_match_case_label=Rozeznôwôj miarã lëterów
+find_not_found=Nie nalôzł tekstu
+find_reached_bottom=Doszedł do kùńca dokùmentu, zaczinającë òd górë
+find_reached_top=Doszedł do pòczątkù dokùmentu, zaczinającë òd dołù
+
+toggle_sidebar.title=Pòsuwk wëbiérkù
+toggle_sidebar_label=Pòsuwk wëbiérkù
+
+outline.title=Wëskrzëni òbcéch dokùmentu
+outline_label=Òbcéch dokùmentu
+thumbs.title=Wëskrzëni miniaturë
+thumbs_label=Miniaturë
+findbar.title=Przeszëkôj dokùment
+findbar_label=Nalezë
+tools_label=Nôrzãdła
+first_page.title=Biéj do pierszi stronë
+first_page.label=Biéj do pierszi stronë
+last_page.label=Biéj do òstatny stronë
+invalid_file_error=Lëchi ôrt, abò pòpsëti lopk PDF.
+
+
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Strona {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura stronë {{page}}
+
+# Error panel labels
+error_more_info=Wicy infòrmacje
+error_less_info=Mni infòrmacje
+error_close=Close
+error_version_info=PDF.js v{{version}} (build: {{build}})
+
+
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Message: {{wiadło}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stóg}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=File: {{lopk}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Line: {{line}}
+rendering_error=Pòkôza sã fela przë renderowanim stronë.
+
+# Predefined zoom values
+page_scale_width=Szérzawa stronë
+page_scale_fit=Dopasëje stronã
+page_scale_auto=Aùtomatnô wiôlgòsc
+page_scale_actual=Naturalnô wiôlgòsc
+
+# Loading indicator messages
+# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
+loading_error_indicator=Fela
+loading_error=Pòkôza sã fela przë wczëtiwanim PDFù.
+
+# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# "{{[type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+
+request_password=PDF je zabezpieczony parolą:
+printing_not_supported = Òstrzéga: przezérnik nie je do kùńca wspieróny przez drëkôrze
+
+# Context menu
+page_rotate_cw.label=Òbkrãcë w prawò
+page_rotate_ccw.label=Òbkrãcë w lewò
+
+
+last_page.title=Biéj do pòprzédny stronë
+last_page_label=Biéj do pòprzédny stronë
+page_rotate_cw.title=Òbkrãcë w prawò
+page_rotate_cw_label=Òbkrãcë w prawò
+page_rotate_ccw.title=Òbkrãcë w lewò
+page_rotate_ccw_label=Òbkrãcë w lewò
+
+
+web_fonts_disabled=Sécowé czconczi są wëłączoné: włączë je, bë móc ùżiwac òsadzonëch czconków w lopkach PDF.
+
+
+missing_file_error=Felëje lopka PDF.
+printing_not_ready = Òstrzéga: lopk mùszi sã do kùńca wczëtac zanim gò mòże drëkòwac
+
+document_colors_disabled=Dokùmentë PDF nie mògą ù swòjich farwów: \'Pòzwòlë stronóm wëbierac swòje farwë\' je wëłączoné w przezérnikù.
+invalid_password=Lëchô parola.
+text_annotation_type.alt=[Adnotacjô {{type}}]
+
+tools.title=Tools
+first_page_label=Go to First Page
+
+
diff --git a/lib/viewers/pdf/locale/cy/viewer.properties b/lib/viewers/pdf/locale/cy/viewer.properties
new file mode 100644
index 0000000..15d2656
--- /dev/null
+++ b/lib/viewers/pdf/locale/cy/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Tudalen Flaenorol
+previous_label=Blaenorol
+next.title=Tudalen Nesaf
+next_label=Nesaf
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Tudalen:
+page_of=o {{pageCount}}
+
+zoom_out.title=Chwyddo Allan
+zoom_out_label=Chwyddo Allan
+zoom_in.title=Chwyddo Mewn
+zoom_in_label=Chwyddo Mewn
+zoom.title=Chwyddo
+presentation_mode.title=Newid i'r Modd Cyflwyno
+presentation_mode_label=Modd Cyflwyno
+open_file.title=Agor Ffeil
+open_file_label=Agor
+print.title=Argraffu
+print_label=Argraffu
+download.title=Llwyth
+download_label=Llwytho i Lawr
+bookmark.title=Golwg cyfredol (copïo neu agor ffenestr newydd)
+bookmark_label=Golwg Gyfredol
+
+# Secondary toolbar and context menu
+tools.title=Offer
+tools_label=Offer
+first_page.title=Mynd i'r Dudalen Gyntaf
+first_page.label=Mynd i'r Dudalen Gyntaf
+first_page_label=Mynd i'r Dudalen Gyntaf
+last_page.title=Mynd i'r Dudalen Olaf
+last_page.label=Mynd i'r Dudalen Olaf
+last_page_label=Mynd i'r Dudalen Olaf
+page_rotate_cw.title=Cylchdroi Clocwedd
+page_rotate_cw.label=Cylchdroi Clocwedd
+page_rotate_cw_label=Cylchdroi Clocwedd
+page_rotate_ccw.title=Cylchdroi Gwrthglocwedd
+page_rotate_ccw.label=Cylchdroi Gwrthglocwedd
+page_rotate_ccw_label=Cylchdroi Gwrthglocwedd
+
+hand_tool_enable.title=Galluogi offeryn llaw
+hand_tool_enable_label=Galluogi offeryn llaw
+hand_tool_disable.title=Analluogi offeryn llaw
+hand_tool_disable_label=Analluogi offeryn llaw
+
+# Document properties dialog box
+document_properties.title=Priodweddau Dogfen…
+document_properties_label=Priodweddau Dogfen…
+document_properties_file_name=Enw ffeil:
+document_properties_file_size=Maint ffeil:
+document_properties_kb={{size_kb}} KB ({{size_b}} beit)
+document_properties_mb={{size_mb}} MB ({{size_b}} beit)
+document_properties_title=Teitl:
+document_properties_author=Awdur:
+document_properties_subject=Pwnc:
+document_properties_keywords=Allweddair:
+document_properties_creation_date=Dyddiad Creu:
+document_properties_modification_date=Dyddiad Addasu:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Crewr:
+document_properties_producer=Cynhyrchydd PDF:
+document_properties_version=Fersiwn PDF:
+document_properties_page_count=Cyfrif Tudalen:
+document_properties_close=Cau
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Toglo'r Bar Ochr
+toggle_sidebar_label=Toglo'r Bar Ochr
+outline.title=Dangos Amlinell Dogfen
+outline_label=Amlinelliad Dogfen
+attachments.title=Dangos Atodiadau
+attachments_label=Atodiadau
+thumbs.title=Dangos Lluniau Bach
+thumbs_label=Lluniau Bach
+findbar.title=Canfod yn y Ddogfen
+findbar_label=Canfod
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Tudalen {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Llun Bach Tudalen {{page}}
+
+# Find panel button title and messages
+find_label=Canfod:
+find_previous.title=Canfod enghraifft flaenorol o'r ymadrodd
+find_previous_label=Blaenorol
+find_next.title=Canfod enghraifft nesaf yr ymadrodd
+find_next_label=Nesaf
+find_highlight=Amlygu popeth
+find_match_case_label=Cydweddu maint
+find_reached_top=Wedi cyrraedd brig y dudalen, parhau o'r gwaelod
+find_reached_bottom=Wedi cyrraedd diwedd y dudalen, parhau o'r brig
+find_not_found=Heb ganfod ymadrodd
+
+# Error panel labels
+error_more_info=Rhagor o Wybodaeth
+error_less_info=Llai o wybodaeth
+error_close=Cau
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Neges: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stac: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Ffeil: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Llinell: {{line}}
+rendering_error=Digwyddodd gwall wrth adeiladu'r dudalen.
+
+# Predefined zoom values
+page_scale_width=Lled Tudalen
+page_scale_fit=Ffit Tudalen
+page_scale_auto=Chwyddo Awtomatig
+page_scale_actual=Maint Gwirioneddol
+
+# Loading indicator messages
+loading_error_indicator=Gwall
+loading_error=Digwyddodd gwall wrth lwytho'r PDF.
+invalid_file_error=Ffeil PDF annilys neu llwgr.
+missing_file_error=Ffeil PDF coll.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anodiad {{type}} ]
+password_label=Rhowch gyfrinair i agor y PDF.
+password_invalid=Cyfrinair annilys. Ceisiwch eto.
+password_ok=Iawn
+password_cancel=Diddymu
+
+printing_not_supported=Rhybudd: Nid yw argraffu yn cael ei gynnal yn llawn gan y porwr.
+printing_not_ready=Rhybudd: Nid yw'r PDF wedi ei lwytho'n llawn ar gyfer argraffu.
+web_fonts_disabled=Ffontiau gwe wedi eu hanablu: methu defnyddio ffontiau PDF mewnblanedig.
+document_colors_disabled=Nid oes caniatâd i ddogfennau PDF i ddefnyddio eu lliwiau eu hunain: Mae 'Caniatáu i dudalennau ddefnyddio eu lliwiau eu hunain' wedi ei atal yn y porwr.
diff --git a/lib/viewers/pdf/locale/da/chrome.properties b/lib/viewers/pdf/locale/da/chrome.properties
deleted file mode 100644
index 24c943b..0000000
--- a/lib/viewers/pdf/locale/da/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notifikationsbar beskeder og knapper
-unsupported_feature=Denne PDF bliver måske ikke vist korrekt
-open_with_different_viewer=Åbn med en anden PDF-fremviser
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/da/metadata.inc b/lib/viewers/pdf/locale/da/metadata.inc
deleted file mode 100644
index 58b76b6..0000000
--- a/lib/viewers/pdf/locale/da/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>da</em:locale>
- <em:name>PDF Viewer</em:name>
- <em:description>Benytter HTML5 til at vise PDF-filer direkte i Firefox.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/da/viewer.properties b/lib/viewers/pdf/locale/da/viewer.properties
index 376affe..1aa292a 100644
--- a/lib/viewers/pdf/locale/da/viewer.properties
+++ b/lib/viewers/pdf/locale/da/viewer.properties
@@ -1,123 +1,161 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-# Værktøjslinje knapper (tooltups og billedtekster)
-previous.title=Forrige
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Forrige side
previous_label=Forrige
-next.title=Næste
+next.title=Næste side
next_label=Næste
-# Oversættelsesnote:
-# Disse tekststrenge bliver sammensat i formen "Side: X af Y"
-# Oversæt ikke "{{pageCount}}", det er en variabel og vil blive erstattet
-# med det egentlig antal sider i PDF filen
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
page_label=Side:
page_of=af {{pageCount}}
zoom_out.title=Zoom ud
zoom_out_label=Zoom ud
zoom_in.title=Zoom ind
zoom_in_label=Zoom ind
zoom.title=Zoom
-print_label=Udskriv
print.title=Udskriv
-fullscreen.title=Fuldskærm
-fullscreen_label=Fuldskærm
+print_label=Udskriv
+presentation_mode.title=Skift til præsentations-tilstand
+presentation_mode_label=Præsentations-tilstand
open_file.title=Åbn fil
open_file_label=Åbn
download.title=Hent
download_label=Hent
bookmark.title=Aktuel visning (kopier eller åbn i et nyt vindue)
bookmark_label=Aktuel visning
-# Tooltips of alternativ billedtekst til sidepanelet
-# (_label strengene er den alternative billedtekst, mens .title
-# strengene er tooltips
-toggle_slider.title=Skift slider
-toggle_slider_label=Skift slider
-outline.title=Vis dokumentoversigt
-outline_label=Dokumentoversigt
-thumbs.title=Vis thumbnails
-thumbs_label=Thumbnails
-findbar.title=Søg i dokumentet
-findbar_label=Søg
-
-# Thumbnails panelet (tooltips og alt. billedtekst)
-# Oversættelsesnote: "{{page}}" vil blive erstattet af det
-# egentlige sidetal
-thumb_page_title=Side {{page}}
-# Oversættelsesnote: "{{page}}" vil blive erstattet af det
-# egentlige sidetal
-thumb_page_canvas=Thumbnail af side {{page}}
-
-# Popup menu
+# Secondary toolbar and context menu
+tools.title=Værktøj
+tools_label=Værktøj
+first_page.title=Gå til første side
first_page.label=Gå til første side
+first_page_label=Gå til første side
+last_page.title=GÃ¥ til sidste side
last_page.label=GÃ¥ til sidste side
-page_rotate_cw.label=Rotér med uret
-page_rotate_ccw.label=Roéer mod uret
+last_page_label=GÃ¥ til sidste side
+page_rotate_cw.title=Roter med uret
+page_rotate_cw.label=Roter med uret
+page_rotate_cw_label=Roter med uret
+page_rotate_ccw.title=Roter mod uret
+page_rotate_ccw.label=Roter mod uret
+page_rotate_ccw_label=Roter mod uret
+
+hand_tool_enable.title=Aktiver håndværktøj
+hand_tool_enable_label=Aktiver håndværktøj
+hand_tool_disable.title=Deaktiver håndværktøj
+hand_tool_disable_label=Deaktiver håndværktøj
-# Søgepanelet samt knapper og beskeder
+# Document properties dialog box
+document_properties.title=Dokumentegenskaber…
+document_properties_label=Dokumentegenskaber…
+document_properties_file_name=Filnavn:
+document_properties_file_size=Filstørrelse:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Titel:
+document_properties_author=Forfatter:
+document_properties_subject=Emne:
+document_properties_keywords=Nøgleord:
+document_properties_creation_date=Oprettet:
+document_properties_modification_date=Redigeret:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Program:
+document_properties_producer=PDF-producent:
+document_properties_version=PDF-version:
+document_properties_page_count=Antal sider:
+document_properties_close=Luk
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Slå sidepanel til eller fra
+toggle_sidebar_label=Slå sidepanel til eller fra
+outline.title=Vis dokumentets disposition
+outline_label=Dokument-disposition
+thumbs.title=Vis miniaturer
+thumbs_label=Miniaturer
+findbar.title=Find i dokument
+findbar_label=Find
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Side {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniature af side {{page}}
+
+# Find panel button title and messages
find_label=Find:
find_previous.title=Find den forrige forekomst
find_previous_label=Forrige
find_next.title=Find den næste forekomst
find_next_label=Næste
-find_highlight=Fremhæv alle forekomster
+find_highlight=Fremhæv alle
find_match_case_label=Forskel på store og små bogstaver
find_reached_top=Toppen af siden blev nået, fortsatte fra bunden
find_reached_bottom=Bunden af siden blev nået, fortsatte fra toppen
find_not_found=Der blev ikke fundet noget
-# Fejlpanel
+# Error panel labels
error_more_info=Mere information
error_less_info=Mindre information
error_close=Luk
-# Oversættelsesnote: "{{version}}" og "{{build}}" vil blive erstattet af
-# PDF.JS versionen og build ID
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
-# Oversættelsesnote: "{{message}}" vil blive erstattet af
-# en (engelsk) fejlbesked
-error_message=Besked: {{message}}
-# Oversættelsesnote: "{{stack}}" vil blive erstattet af et stack trace
-#
-error_stack=Stak: {{stack}}
-# Oversættelsesnote: "{{file}}" vil blive erstattet af et filnavn
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Fejlmeddelelse: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Fil: {{file}}
-# Oversættelsesnote: "{{line}}" vil blive erstattet af et linjetal
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Linje: {{line}}
-rendering_error=Der skete en fejl under gengivelsen af PDF-filen
+rendering_error=Der opstod en fejl ved generering af siden.
-# Prædefinerede zoom værdier
+# Predefined zoom values
page_scale_width=Sidebredde
-page_scale_fit=Helside
+page_scale_fit=Tilpas til side
page_scale_auto=Automatisk zoom
page_scale_actual=Faktisk størrelse
-# Indlæsningsindikator (load ikon)
+# Loading indicator messages
loading_error_indicator=Fejl
-loading_error=Der skete en fejl under indlæsningen af PDF-filen
-invalid_file_error=Ugyldig eller beskadiget PDF-fil
-missing_file_error=Manglende PDF-fil
+loading_error=Der opstod en fejl ved indlæsning af PDF-filen.
+invalid_file_error=PDF-filen er ugyldig eller ødelagt.
+missing_file_error=Manglende PDF-fil.
-# Oversættelsesnote: Dette vil blive brugt som et tooltip
-# "{{type}}" vil blive ersattet af en kommentar type fra en liste
-# defineret i PDF specifikationen (32000-1:2008 Table 169 – Annotation types).
-# Nogle almindelige typer er f.eks.: "Check", "Text", "Comment" og "Note"
-text_annotation_type=[{{type}} Kommentar]
-request_password=PDF filen er beskyttet med et kodeord:
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}}kommentar]
+password_label=Angiv adgangskode til at åbne denne PDF-fil.
+password_invalid=Ugyldig adgangskode. Prøv igen.
+password_ok=OK
+password_cancel=Fortryd
-printing_not_supported=Advarsel: Denne browser er ikke fuldt understøttet ved udskrift.
-printing_not_ready=Advarsel: PDF-filen er ikke helt klar til udskrivning.
-web_fonts_disabled=Web skrifttyper er slået fra: kan ikke benytte de indlejrede skrifttyper.
-web_colors_disabled=Web farver are slået fra.
+printing_not_supported=Advarsel: Udskrivning er ikke fuldt understøttet af browseren.
+printing_not_ready=Advarsel: PDF-filen er ikke fuldt indlæst til udskrivning.
+web_fonts_disabled=Webskrifttyper er deaktiverede. De indlejrede skrifttyper i PDF-filen kan ikke anvendes.
+document_colors_disabled=PDF-dokumenter må ikke bruge deres egne farver: \'Tillad sider at vælge deres egne farver\' er deaktiveret i browseren.
diff --git a/lib/viewers/pdf/locale/de/metadata.inc b/lib/viewers/pdf/locale/de/metadata.inc
deleted file mode 100644
index d934291..0000000
--- a/lib/viewers/pdf/locale/de/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>de</em:locale>
- <em:name>PDF Viewer</em:name>
- <em:description>Nutzt HTML5 um PDFs direkt in Firefox anzuzeigen.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/de/viewer.properties b/lib/viewers/pdf/locale/de/viewer.properties
index d1be81f..7640b52 100644
--- a/lib/viewers/pdf/locale/de/viewer.properties
+++ b/lib/viewers/pdf/locale/de/viewer.properties
@@ -1,120 +1,163 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Eine Seite zurück
previous_label=Zurück
next.title=Eine Seite vor
next_label=Vor
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Seite:
page_of=von {{pageCount}}
zoom_out.title=Verkleinern
zoom_out_label=Verkleinern
zoom_in.title=Vergrößern
zoom_in_label=Vergrößern
zoom.title=Zoom
print.title=Drucken
print_label=Drucken
-presentation_mode.title=Zum Präsentationsmodus wechseln
-presentation_mode_label=Bildschirmpräsentation
+presentation_mode.title=In Präsentationsmodus wechseln
+presentation_mode_label=Präsentationsmodus
open_file.title=Datei öffnen
open_file_label=Öffnen
-download.title=Herunterladen
-download_label=Herunterladen
-bookmark.title=Aktuelle Ansicht (Kopieren oder in einem neuen Fenster öffnen)
+download.title=Dokument speichern
+download_label=Speichern
+bookmark.title=Aktuelle Ansicht (zum Kopieren oder Öffnen in einem neuen Fenster)
bookmark_label=Aktuelle Ansicht
+# Secondary toolbar and context menu
+tools.title=Werkzeuge
+tools_label=Werkzeuge
+first_page.title=Erste Seite anzeigen
+first_page.label=Erste Seite anzeigen
+first_page_label=Erste Seite anzeigen
+last_page.title=Letzte Seite anzeigen
+last_page.label=Letzte Seite anzeigen
+last_page_label=Letzte Seite anzeigen
+page_rotate_cw.title=Im Uhrzeigersinn drehen
+page_rotate_cw.label=Im Uhrzeigersinn drehen
+page_rotate_cw_label=Im Uhrzeigersinn drehen
+page_rotate_ccw.title=Gegen Uhrzeigersinn drehen
+page_rotate_ccw.label=Gegen Uhrzeigersinn drehen
+page_rotate_ccw_label=Gegen Uhrzeigersinn drehen
+
+hand_tool_enable.title=Hand-Werkzeug aktivieren
+hand_tool_enable_label=Hand-Werkzeug aktivieren
+hand_tool_disable.title=Hand-Werkzeug deaktivieren
+hand_tool_disable_label=Hand-Werkzeug deaktivieren
+
+# Document properties dialog box
+document_properties.title=Dokumenteigenschaften
+document_properties_label=Dokumenteigenschaften…
+document_properties_file_name=Dateiname:
+document_properties_file_size=Dateigröße:
+document_properties_kb={{size_kb}} KB ({{size_b}} Bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} Bytes)
+document_properties_title=Titel:
+document_properties_author=Autor:
+document_properties_subject=Thema:
+document_properties_keywords=Stichwörter:
+document_properties_creation_date=Erstelldatum:
+document_properties_modification_date=Bearbeitungsdatum:
+document_properties_date_string={{date}} {{time}}
+document_properties_creator=Anwendung:
+document_properties_producer=PDF erstellt mit:
+document_properties_version=PDF-Version:
+document_properties_page_count=Seitenzahl:
+document_properties_close=Schließen
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_slider.title=Seitenleiste anzeigen
-toggle_slider_label=Seitenleiste
-outline.title=Zeige Inhaltsverzeichnis
-outline_label=Inhaltsverzeichnis
-thumbs.title=Zeige Vorschaubilder
-thumbs_label=Vorschaubilder
-findbar.title=Im Dokument suchen
+toggle_sidebar.title=Sidebar umschalten
+toggle_sidebar_label=Sidebar umschalten
+outline.title=Dokumentstruktur anzeigen
+outline_label=Dokumentstruktur
+attachments.title=Anhänge anzeigen
+attachments_label=Anhänge
+thumbs.title=Miniaturansichten anzeigen
+thumbs_label=Miniaturansichten
+findbar.title=Dokument durchsuchen
findbar_label=Suchen
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Seite {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=Vorschau von Seite {{page}}
-
-# Context menu
-first_page.label=Erste Seite
-last_page.label=Letzte Seite
-page_rotate_cw.label=Im Uhrzeigersinn drehen
-page_rotate_ccw.label=Entgegen dem Uhrzeigersinn drehen
+thumb_page_canvas=Miniaturansicht von Seite {{page}}
# Find panel button title and messages
find_label=Suchen:
-find_previous.title=Das vorherige Auftreten des Ausdrucks suchen
-find_previous_label=Aufwärts
-find_next.title=Das nächste Auftreten des Ausdrucks suchen
-find_next_label=Abwärts
-find_highlight=Hervorheben
-find_match_case_label=Groß-/Kleinschreibung
-find_reached_top=Der Anfang des Dokuments wurde erreicht, Suche am Ende des Dokuments fortgesetzt
-find_reached_bottom=Das Ende des Dokuments wurde erreicht, Suche am Anfang des Dokuments fortgesetzt
-find_not_found=Ausdruck nicht gefunden
+find_previous.title=Vorheriges Auftreten des Suchbegriffs finden
+find_previous_label=Zurück
+find_next.title=Nächstes Auftreten des Suchbegriffs finden
+find_next_label=Weiter
+find_highlight=Alle hervorheben
+find_match_case_label=Groß-/Kleinschreibung beachten
+find_reached_top=Anfang des Dokuments erreicht, fahre am Ende fort
+find_reached_bottom=Ende des Dokuments erreicht, fahre am Anfang fort
+find_not_found=Suchbegriff nicht gefunden
# Error panel labels
-error_more_info=Mehr Info
-error_less_info=Weniger Info
+error_more_info=Mehr Informationen
+error_less_info=Weniger Informationen
error_close=Schließen
-# LOCALIZATION NOTE (error_build): "{{build}}" will be replaced by the PDF.JS
-# build ID.
-error_build=PDF.JS Build: {{build}}
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js Version {{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Nachricht: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
-error_stack=Stack: {{stack}}
+error_stack=Aufrufliste: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Datei: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Zeile: {{line}}
-rendering_error=Das PDF konnte nicht angezeigt werden.
+rendering_error=Beim Darstellen der Seite trat ein Fehler auf.
# Predefined zoom values
page_scale_width=Seitenbreite
-page_scale_fit=Ganze Seite
-page_scale_auto=Automatisch
-page_scale_actual=Originalgröße
+page_scale_fit=Seitengröße
+page_scale_auto=Automatischer Zoom
+page_scale_actual=Derzeitige Größe
# Loading indicator messages
loading_error_indicator=Fehler
-loading_error=Das PDF konnte nicht geladen werden.
-invalid_file_error=Ungültige oder beschädigte PDF-Datei.
+loading_error=Beim Laden der PDF-Datei trat ein Fehler auf.
+invalid_file_error=Ungültige oder beschädigte PDF-Datei
+missing_file_error=Fehlende PDF-Datei
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Annotation]
-request_password=Das PDF ist passwortgeschützt:
+text_annotation_type.alt=[Anlage: {{type}}]
+password_label=Geben Sie zum Öffnen der PDF-Datei deren Passwort ein.
+password_invalid=Falsches Passwort. Bitte versuchen Sie es erneut.
+password_ok=OK
+password_cancel=Abbrechen
-printing_not_supported=Warnung: Drucken wird durch diesen Browser nicht vollständig unterstützt.
-web_fonts_disabled=Webfonts sind deaktiviert: Eingebundene PDF-Schriftarten können nicht verwendet werden.
+printing_not_supported=Warnung: Die Drucken-Funktion wird durch diesen Browser nicht vollständig unterstützt.
+printing_not_ready=Warnung: Die PDF-Datei ist nicht vollständig geladen, dies ist für das Drucken aber empfohlen.
+web_fonts_disabled=Web-Schriftarten sind deaktiviert: Eingebettete PDF-Schriftarten konnten nicht geladen werden.
+document_colors_disabled=PDF-Dokumenten ist es nicht erlaubt, ihre eigenen Farben zu verwenden: \'Seiten das Verwenden von eigenen Farben erlauben\' ist im Browser deaktiviert.
diff --git a/lib/viewers/pdf/locale/el/viewer.properties b/lib/viewers/pdf/locale/el/viewer.properties
new file mode 100644
index 0000000..36723c2
--- /dev/null
+++ b/lib/viewers/pdf/locale/el/viewer.properties
@@ -0,0 +1,131 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Προηγούμενη σελίδα
+previous_label=Προηγούμενη
+next.title=Επόμενη σελίδα
+next_label=Επόμενη
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Σελίδα:
+page_of= {{pageCount}}
+
+zoom_out.title=Σμίκρυνση
+zoom_out_label=Σμίκρυνση
+zoom_in.title=Μεγέθυνση
+zoom_in_label=Μεγέθυνση
+zoom.title=Μεγέθυνση
+print.title=Εκτύπωση
+print_label=Εκτύπωση
+open_file.title=Άνοιγμα αρχείου
+open_file_label=Άνοιγμα
+download.title=Λήψη
+download_label=Λήψη
+bookmark.title=Τρέχουσα προβολή (αντίγραφο ή άνοιγμα σε νέο παράθυρο)
+bookmark_label=Τρέχουσα προβολή
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+outline.title=Προβολή διάρθρωσης κειμένου
+outline_label=Διάρθρωση κειμένου
+thumbs.title=Προβολή μικρογραφιών
+thumbs_label=Μικρογραφίες
+
+
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Σελίδα {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Μικρογραφία της σελίδας {{page}}
+
+first_page.label=Μετάβαση στην πρώτη σελίδα
+
+# Error panel labels
+error_more_info=Περισσότερες πληροφορίες
+error_less_info=Λιγότερες πληροφορίες
+error_close=Κλείσιμο
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Μήνυμα: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Αρχείο: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Line: {{line}}
+rendering_error=Προέκυψε σφάλμα κατά την ανάλυση της σελίδας.
+
+# Predefined zoom values
+page_scale_width=Πλάτος σελίδας
+page_scale_fit=Μέγεθος σελίδας
+page_scale_auto=Αυτόματη μεγέθυνση
+page_scale_actual=Πραγματικό μέγεθος
+
+
+# Context menu
+page_rotate_cw.label=Δεξιόστροφη περιστροφή
+page_rotate_ccw.label=Αριστερόστροφη περιστροφή
+
+presentation_mode.title=Μετάβαση σε λειτουργία παρουσίασης
+presentation_mode_label=Λειτουργία παρουσίασης
+
+# Loading indicator messages
+# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
+
+loading_error_indicator=Σφάλμα
+loading_error=Προέκυψε ένα σφάλμα κατά τη φόρτωση του PDF.
+
+request_password=Το PDF προστατεύεται από κωδικό:
+
+printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από αυτόν τον περιηγητή.
+
+
+
+findbar.title=Εύρεση στο έγγραφο
+findbar_label=Εύρεση
+
+
+# Find panel button title and messages
+find_label=Εύρεση:
+find_previous.title=Εύρεση της προηγούμενης εμφάνισης της φράσης
+find_previous_label=Προηγούμενο
+find_next.title=Εύρεση της επόμενης εμφάνισης της φράσης
+find_next_label=Επόμενο
+find_highlight=Επισήμανση όλων
+find_match_case_label=Ταίριασμα χαρακτήρα
+find_reached_top=Έλευση στην αρχή του εγγράφου, συνέχεια από το τέλος
+find_reached_bottom=Έλευση στο τέλος του εγγράφου, συνέχεια από την αρχή
+find_not_found=Η φράση δεν βρέθηκε
+
+invalid_file_error=Μη έγκυρο ή κατεστραμμένο αρχείο PDF.
+last_page.label=Μετάβαση στη τελευταία σελίδα
+
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+
+missing_file_error=Λείπει αρχείο PDF.
+
+
+toggle_sidebar.title=Εναλλαγή προβολής πλευρικής στήλης
+toggle_sidebar_label=Εναλλαγή προβολής πλευρικής στήλης
+
+web_fonts_disabled=Οι γραμματοσειρές Web απενεργοποιημένες: αδυναμία χρήσης των ενσωματωμένων γραμματοσειρών PDF.
+
+printing_not_ready=Προειδοποίηση: Το PDF δεν φορτώθηκε πλήρως για εκτύπωση.
+
+document_colors_disabled=Δεν επιτρέπεται στα έγγραφα PDF να χρησιμοποιούν τα δικά τους χρώματα: Η επιλογή \'Να επιτρέπεται η χρήση χρωμάτων της σελίδας\' δεν είναι ενεργή στην εφαρμογή.
+
+invalid_password=Μη έγκυρος κωδικός.
+text_annotation_type.alt=[{{type}} Annotation]
+
diff --git a/lib/viewers/pdf/locale/en-US/viewer.properties b/lib/viewers/pdf/locale/en-GB/viewer.properties
similarity index 69%
copy from lib/viewers/pdf/locale/en-US/viewer.properties
copy to lib/viewers/pdf/locale/en-GB/viewer.properties
index e0d25ac..bc408c7 100644
--- a/lib/viewers/pdf/locale/en-US/viewer.properties
+++ b/lib/viewers/pdf/locale/en-GB/viewer.properties
@@ -1,123 +1,161 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Previous Page
previous_label=Previous
next.title=Next Page
next_label=Next
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Page:
page_of=of {{pageCount}}
zoom_out.title=Zoom Out
zoom_out_label=Zoom Out
zoom_in.title=Zoom In
zoom_in_label=Zoom In
zoom.title=Zoom
print.title=Print
print_label=Print
presentation_mode.title=Switch to Presentation Mode
presentation_mode_label=Presentation Mode
open_file.title=Open File
open_file_label=Open
download.title=Download
download_label=Download
bookmark.title=Current view (copy or open in new window)
bookmark_label=Current View
+# Secondary toolbar and context menu
+tools.title=Tools
+tools_label=Tools
+first_page.title=Go to First Page
+first_page.label=Go to First Page
+first_page_label=Go to First Page
+last_page.title=Go to Last Page
+last_page.label=Go to Last Page
+last_page_label=Go to Last Page
+page_rotate_cw.title=Rotate Clockwise
+page_rotate_cw.label=Rotate Clockwise
+page_rotate_cw_label=Rotate Clockwise
+page_rotate_ccw.title=Rotate Counter-Clockwise
+page_rotate_ccw.label=Rotate Counter-Clockwise
+page_rotate_ccw_label=Rotate Counter-Clockwise
+
+hand_tool_enable.title=Enable hand tool
+hand_tool_enable_label=Enable hand tool
+hand_tool_disable.title=Disable hand tool
+hand_tool_disable_label=Disable hand tool
+
+# Document properties dialog box
+document_properties.title=Document Properties…
+document_properties_label=Document Properties…
+document_properties_file_name=File name:
+document_properties_file_size=File size:
+document_properties_kb={{size_kb}} kB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Title:
+document_properties_author=Author:
+document_properties_subject=Subject:
+document_properties_keywords=Keywords:
+document_properties_creation_date=Creation Date:
+document_properties_modification_date=Modification Date:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creator:
+document_properties_producer=PDF Producer:
+document_properties_version=PDF Version:
+document_properties_page_count=Page Count:
+document_properties_close=Close
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Toggle Sidebar
toggle_sidebar_label=Toggle Sidebar
outline.title=Show Document Outline
outline_label=Document Outline
thumbs.title=Show Thumbnails
thumbs_label=Thumbnails
findbar.title=Find in Document
findbar_label=Find
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Page {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Thumbnail of Page {{page}}
-# Context menu
-first_page.label=Go to First Page
-last_page.label=Go to Last Page
-page_rotate_cw.label=Rotate Clockwise
-page_rotate_ccw.label=Rotate Counterclockwise
-
# Find panel button title and messages
find_label=Find:
find_previous.title=Find the previous occurrence of the phrase
find_previous_label=Previous
find_next.title=Find the next occurrence of the phrase
find_next_label=Next
find_highlight=Highlight all
find_match_case_label=Match case
find_reached_top=Reached top of document, continued from bottom
find_reached_bottom=Reached end of document, continued from top
find_not_found=Phrase not found
# Error panel labels
error_more_info=More Information
error_less_info=Less Information
error_close=Close
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Message: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=File: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Line: {{line}}
rendering_error=An error occurred while rendering the page.
# Predefined zoom values
page_scale_width=Page Width
page_scale_fit=Page Fit
page_scale_auto=Automatic Zoom
page_scale_actual=Actual Size
# Loading indicator messages
loading_error_indicator=Error
loading_error=An error occurred while loading the PDF.
invalid_file_error=Invalid or corrupted PDF file.
missing_file_error=Missing PDF file.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Annotation]
-request_password=PDF is protected by a password:
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=Enter the password to open this PDF file.
+password_invalid=Invalid password. Please try again.
+password_ok=OK
+password_cancel=Cancel
printing_not_supported=Warning: Printing is not fully supported by this browser.
printing_not_ready=Warning: The PDF is not fully loaded for printing.
web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
-web_colors_disabled=Web colors are disabled.
+document_colors_disabled=PDF documents are not allowed to use their own colours: \'Allow pages to choose their own colours\' is deactivated in the browser.
diff --git a/lib/viewers/pdf/locale/en-US/chrome.properties b/lib/viewers/pdf/locale/en-US/chrome.properties
deleted file mode 100644
index 0b46919..0000000
--- a/lib/viewers/pdf/locale/en-US/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=This PDF document might not be displayed correctly.
-open_with_different_viewer=Open With Different Viewer
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/en-US/metadata.inc b/lib/viewers/pdf/locale/en-US/metadata.inc
deleted file mode 100644
index 8d9d94b..0000000
--- a/lib/viewers/pdf/locale/en-US/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>en-US</em:locale>
- <em:name>PDF Viewer</em:name>
- <em:description>Uses HTML5 to display PDF files directly in Firefox.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/en-US/viewer.properties b/lib/viewers/pdf/locale/en-US/viewer.properties
index e0d25ac..dadfe41 100644
--- a/lib/viewers/pdf/locale/en-US/viewer.properties
+++ b/lib/viewers/pdf/locale/en-US/viewer.properties
@@ -1,123 +1,163 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Previous Page
previous_label=Previous
next.title=Next Page
next_label=Next
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Page:
page_of=of {{pageCount}}
zoom_out.title=Zoom Out
zoom_out_label=Zoom Out
zoom_in.title=Zoom In
zoom_in_label=Zoom In
zoom.title=Zoom
-print.title=Print
-print_label=Print
presentation_mode.title=Switch to Presentation Mode
presentation_mode_label=Presentation Mode
open_file.title=Open File
open_file_label=Open
+print.title=Print
+print_label=Print
download.title=Download
download_label=Download
bookmark.title=Current view (copy or open in new window)
bookmark_label=Current View
+# Secondary toolbar and context menu
+tools.title=Tools
+tools_label=Tools
+first_page.title=Go to First Page
+first_page.label=Go to First Page
+first_page_label=Go to First Page
+last_page.title=Go to Last Page
+last_page.label=Go to Last Page
+last_page_label=Go to Last Page
+page_rotate_cw.title=Rotate Clockwise
+page_rotate_cw.label=Rotate Clockwise
+page_rotate_cw_label=Rotate Clockwise
+page_rotate_ccw.title=Rotate Counterclockwise
+page_rotate_ccw.label=Rotate Counterclockwise
+page_rotate_ccw_label=Rotate Counterclockwise
+
+hand_tool_enable.title=Enable hand tool
+hand_tool_enable_label=Enable hand tool
+hand_tool_disable.title=Disable hand tool
+hand_tool_disable_label=Disable hand tool
+
+# Document properties dialog box
+document_properties.title=Document Properties…
+document_properties_label=Document Properties…
+document_properties_file_name=File name:
+document_properties_file_size=File size:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Title:
+document_properties_author=Author:
+document_properties_subject=Subject:
+document_properties_keywords=Keywords:
+document_properties_creation_date=Creation Date:
+document_properties_modification_date=Modification Date:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creator:
+document_properties_producer=PDF Producer:
+document_properties_version=PDF Version:
+document_properties_page_count=Page Count:
+document_properties_close=Close
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Toggle Sidebar
toggle_sidebar_label=Toggle Sidebar
outline.title=Show Document Outline
outline_label=Document Outline
+attachments.title=Show Attachments
+attachments_label=Attachments
thumbs.title=Show Thumbnails
thumbs_label=Thumbnails
findbar.title=Find in Document
findbar_label=Find
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Page {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Thumbnail of Page {{page}}
-# Context menu
-first_page.label=Go to First Page
-last_page.label=Go to Last Page
-page_rotate_cw.label=Rotate Clockwise
-page_rotate_ccw.label=Rotate Counterclockwise
-
# Find panel button title and messages
find_label=Find:
find_previous.title=Find the previous occurrence of the phrase
find_previous_label=Previous
find_next.title=Find the next occurrence of the phrase
find_next_label=Next
find_highlight=Highlight all
find_match_case_label=Match case
find_reached_top=Reached top of document, continued from bottom
find_reached_bottom=Reached end of document, continued from top
find_not_found=Phrase not found
# Error panel labels
error_more_info=More Information
error_less_info=Less Information
error_close=Close
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Message: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=File: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Line: {{line}}
rendering_error=An error occurred while rendering the page.
# Predefined zoom values
page_scale_width=Page Width
page_scale_fit=Page Fit
page_scale_auto=Automatic Zoom
page_scale_actual=Actual Size
# Loading indicator messages
loading_error_indicator=Error
loading_error=An error occurred while loading the PDF.
invalid_file_error=Invalid or corrupted PDF file.
missing_file_error=Missing PDF file.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Annotation]
-request_password=PDF is protected by a password:
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=Enter the password to open this PDF file.
+password_invalid=Invalid password. Please try again.
+password_ok=OK
+password_cancel=Cancel
printing_not_supported=Warning: Printing is not fully supported by this browser.
printing_not_ready=Warning: The PDF is not fully loaded for printing.
web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
-web_colors_disabled=Web colors are disabled.
+document_colors_disabled=PDF documents are not allowed to use their own colors: \'Allow pages to choose their own colors\' is deactivated in the browser.
diff --git a/lib/viewers/pdf/locale/en-US/viewer.properties b/lib/viewers/pdf/locale/en-ZA/viewer.properties
similarity index 70%
copy from lib/viewers/pdf/locale/en-US/viewer.properties
copy to lib/viewers/pdf/locale/en-ZA/viewer.properties
index e0d25ac..5588ff1 100644
--- a/lib/viewers/pdf/locale/en-US/viewer.properties
+++ b/lib/viewers/pdf/locale/en-ZA/viewer.properties
@@ -1,123 +1,161 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Previous Page
previous_label=Previous
next.title=Next Page
next_label=Next
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Page:
page_of=of {{pageCount}}
zoom_out.title=Zoom Out
zoom_out_label=Zoom Out
zoom_in.title=Zoom In
zoom_in_label=Zoom In
zoom.title=Zoom
-print.title=Print
-print_label=Print
presentation_mode.title=Switch to Presentation Mode
presentation_mode_label=Presentation Mode
open_file.title=Open File
open_file_label=Open
+print.title=Print
+print_label=Print
download.title=Download
download_label=Download
bookmark.title=Current view (copy or open in new window)
bookmark_label=Current View
+# Secondary toolbar and context menu
+tools.title=Tools
+tools_label=Tools
+first_page.title=Go to First Page
+first_page.label=Go to First Page
+first_page_label=Go to First Page
+last_page.title=Go to Last Page
+last_page.label=Go to Last Page
+last_page_label=Go to Last Page
+page_rotate_cw.title=Rotate Clockwise
+page_rotate_cw.label=Rotate Clockwise
+page_rotate_cw_label=Rotate Clockwise
+page_rotate_ccw.title=Rotate Counterclockwise
+page_rotate_ccw.label=Rotate Counterclockwise
+page_rotate_ccw_label=Rotate Counterclockwise
+
+hand_tool_enable.title=Enable hand tool
+hand_tool_enable_label=Enable hand tool
+hand_tool_disable.title=Disable hand tool
+hand_tool_disable_label=Disable hand tool
+
+# Document properties dialog box
+document_properties.title=Document Properties…
+document_properties_label=Document Properties…
+document_properties_file_name=File name:
+document_properties_file_size=File size:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Title:
+document_properties_author=Author:
+document_properties_subject=Subject:
+document_properties_keywords=Keywords:
+document_properties_creation_date=Creation Date:
+document_properties_modification_date=Modification Date:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creator:
+document_properties_producer=PDF Producer:
+document_properties_version=PDF Version:
+document_properties_page_count=Page Count:
+document_properties_close=Close
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Toggle Sidebar
toggle_sidebar_label=Toggle Sidebar
outline.title=Show Document Outline
outline_label=Document Outline
thumbs.title=Show Thumbnails
thumbs_label=Thumbnails
findbar.title=Find in Document
findbar_label=Find
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Page {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Thumbnail of Page {{page}}
-# Context menu
-first_page.label=Go to First Page
-last_page.label=Go to Last Page
-page_rotate_cw.label=Rotate Clockwise
-page_rotate_ccw.label=Rotate Counterclockwise
-
# Find panel button title and messages
find_label=Find:
find_previous.title=Find the previous occurrence of the phrase
find_previous_label=Previous
find_next.title=Find the next occurrence of the phrase
find_next_label=Next
find_highlight=Highlight all
find_match_case_label=Match case
find_reached_top=Reached top of document, continued from bottom
find_reached_bottom=Reached end of document, continued from top
find_not_found=Phrase not found
# Error panel labels
error_more_info=More Information
error_less_info=Less Information
error_close=Close
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Message: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=File: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Line: {{line}}
rendering_error=An error occurred while rendering the page.
# Predefined zoom values
page_scale_width=Page Width
page_scale_fit=Page Fit
page_scale_auto=Automatic Zoom
page_scale_actual=Actual Size
# Loading indicator messages
loading_error_indicator=Error
loading_error=An error occurred while loading the PDF.
invalid_file_error=Invalid or corrupted PDF file.
missing_file_error=Missing PDF file.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Annotation]
-request_password=PDF is protected by a password:
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=Enter the password to open this PDF file.
+password_invalid=Invalid password. Please try again.
+password_ok=OK
+password_cancel=Cancel
printing_not_supported=Warning: Printing is not fully supported by this browser.
printing_not_ready=Warning: The PDF is not fully loaded for printing.
web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
-web_colors_disabled=Web colors are disabled.
+document_colors_disabled=PDF documents are not allowed to use their own colours: 'Allow pages to choose their own colours' is deactivated in the browser.
diff --git a/lib/viewers/pdf/locale/eo/viewer.properties b/lib/viewers/pdf/locale/eo/viewer.properties
new file mode 100644
index 0000000..78b8229
--- /dev/null
+++ b/lib/viewers/pdf/locale/eo/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Antaŭa paĝo
+previous_label=MalantaÅ­en
+next.title=Venonta paĝo
+next_label=AntaÅ­en
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Paĝo:
+page_of=el {{pageCount}}
+
+zoom_out.title=Malpligrandigi
+zoom_out_label=Malpligrandigi
+zoom_in.title=Pligrandigi
+zoom_in_label=Pligrandigi
+zoom.title=Pligrandigilo
+presentation_mode.title=Iri al prezenta reĝimo
+presentation_mode_label=Prezenta reĝimo
+open_file.title=Malfermi dosieron
+open_file_label=Malfermi
+print.title=Presi
+print_label=Presi
+download.title=Elŝuti
+download_label=Elŝuti
+bookmark.title=Nuna vido (kopii aÅ­ malfermi en nova fenestro)
+bookmark_label=Nuna vido
+
+# Secondary toolbar and context menu
+tools.title=Iloj
+tools_label=Iloj
+first_page.title=Iri al la unua paĝo
+first_page.label=Iri al la unua paĝo
+first_page_label=Iri al la unua paĝo
+last_page.title=Iri al la lasta paĝo
+last_page.label=Iri al la lasta paĝo
+last_page_label=Iri al la lasta paĝo
+page_rotate_cw.title=Rotaciigi dekstrume
+page_rotate_cw.label=Rotaciigi dekstrume
+page_rotate_cw_label=Rotaciigi dekstrume
+page_rotate_ccw.title=Rotaciigi maldekstrume
+page_rotate_ccw.label=Rotaciigi maldekstrume
+page_rotate_ccw_label=Rotaciigi maldekstrume
+
+hand_tool_enable.title=Aktivigi manan ilon
+hand_tool_enable_label=Aktivigi manan ilon
+hand_tool_disable.title=Malaktivigi manan ilon
+hand_tool_disable_label=Malaktivigi manan ilon
+
+# Document properties dialog box
+document_properties.title=Atributoj de dokumento…
+document_properties_label=Atributoj de dokumento…
+document_properties_file_name=Nomo de dosiero:
+document_properties_file_size=Grado de dosiero:
+document_properties_kb={{size_kb}} KO ({{size_b}} oktetoj)
+document_properties_mb={{size_mb}} MO ({{size_b}} oktetoj)
+document_properties_title=Titolo:
+document_properties_author=AÅ­toro:
+document_properties_subject=Temo:
+document_properties_keywords=Ŝlosilvorto:
+document_properties_creation_date=Dato de kreado:
+document_properties_modification_date=Dato de modifo:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Kreinto:
+document_properties_producer=Produktinto de PDF:
+document_properties_version=Versio de PDF:
+document_properties_page_count=Nombro de paĝoj:
+document_properties_close=Fermi
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Montri/kaŝi flankan strion
+toggle_sidebar_label=Montri/kaŝi flankan strion
+outline.title=Montri skemon de dokumento
+outline_label=Skemo de dokumento
+attachments.title=Montri kunsendaĵojn
+attachments_label=Kunsendaĵojn
+thumbs.title=Montri miniaturojn
+thumbs_label=Miniaturoj
+findbar.title=Serĉi en dokumento
+findbar_label=Serĉi
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Paĝo {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniaturo de paĝo {{page}}
+
+# Find panel button title and messages
+find_label=Serĉi:
+find_previous.title=Serĉi la antaŭan aperon de la frazo
+find_previous_label=MalantaÅ­en
+find_next.title=Serĉi la venontan aperon de la frazo
+find_next_label=AntaÅ­en
+find_highlight=Elstarigi ĉiujn
+find_match_case_label=Distingi inter majuskloj kaj minuskloj
+find_reached_top=Komenco de la dokumento atingita, daÅ­rigado ekde la fino
+find_reached_bottom=Fino de la dokumento atingita, daÅ­rigado ekde la komenco
+find_not_found=Frazo ne trovita
+
+# Error panel labels
+error_more_info=Pli da informo
+error_less_info=Mapli da informo
+error_close=Fermi
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mesaĝo: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stako: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Dosiero: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linio: {{line}}
+rendering_error=Okazis eraro dum la montrado de la paĝo.
+
+# Predefined zoom values
+page_scale_width=Larĝo de paĝo
+page_scale_fit=Adapti paĝon
+page_scale_auto=AÅ­tomata skalo
+page_scale_actual=Reala gandeco
+
+# Loading indicator messages
+loading_error_indicator=Eraro
+loading_error=Okazis eraro dum la ŝargado de la PDF dosiero.
+invalid_file_error=Nevalida aÅ­ difektita PDF dosiero.
+missing_file_error=Mankas dosiero PDF.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Prinoto: {{type}}]
+password_label=Tajpu pasvorton por malfermi tiun ĉi dosieron PDF.
+password_invalid=Nevalida pasvorto. Bonvolu provi denove.
+password_ok=Akcepti
+password_cancel=Nuligi
+
+printing_not_supported=Averto: tiu ĉi retesplorilo ne plene subtenas presadon.
+printing_not_ready=Warning: La PDF dosiero ne estas plene ŝargita por presado.
+web_fonts_disabled=Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn tiparojn de PDF.
+document_colors_disabled=Dokumentoj PDF ne rajtas havi siajn proprajn kolorojn: \'Permesi al paĝoj elekti siajn proprajn kolorojn\' estas malaktiva en la retesplorilo.
diff --git a/lib/viewers/pdf/locale/es-AR/viewer.properties b/lib/viewers/pdf/locale/es-AR/viewer.properties
new file mode 100644
index 0000000..c931a10
--- /dev/null
+++ b/lib/viewers/pdf/locale/es-AR/viewer.properties
@@ -0,0 +1,169 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Página anterior
+previous_label=Anterior
+next.title=Página siguiente
+next_label=Siguiente
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Página:
+page_of=de {{pageCount}}
+
+zoom_out.title=Alejar
+zoom_out_label=Alejar
+zoom_in.title=Acercar
+zoom_in_label=Acercar
+zoom.title=Zoom
+print.title=Imprimir
+print_label=Imprimir
+presentation_mode.title=Cambiar a modo presentación
+presentation_mode_label=Modo presentación
+open_file.title=Abrir archivo
+open_file_label=Abrir
+download.title=Descargar
+download_label=Descargar
+bookmark.title=Vista actual (copiar o abrir en nueva ventana)
+bookmark_label=Vista actual
+
+# Secondary toolbar and context menu
+tools.title=Herramientas
+tools_label=Herramientas
+first_page.title=Ir a primera página
+first_page.label=Ir a primera página
+first_page_label=Ir a primera página
+last_page.title=Ir a última página
+last_page.label=Ir a última página
+last_page_label=Ir a última página
+page_rotate_cw.title=Rotar horario
+page_rotate_cw.label=Rotar horario
+page_rotate_cw_label=Rotar horario
+page_rotate_ccw.title=Rotar antihorario
+page_rotate_ccw.label=Rotar antihorario
+page_rotate_ccw_label=Rotar antihorario
+
+hand_tool_enable.title=Habilitar herramienta mano
+hand_tool_enable_label=Habilitar herramienta mano
+hand_tool_disable.title=Deshabilitar herramienta mano
+hand_tool_disable_label=Deshabilitar herramienta mano
+
+# Document properties dialog box
+document_properties.title=Propiedades del documento…
+document_properties_label=Propiedades del documento…
+document_properties_file_name=Nombre de archivo:
+document_properties_file_size=Tamaño de archovo:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Título:
+document_properties_author=Autor:
+document_properties_subject=Asunto:
+document_properties_keywords=Palabras clave:
+document_properties_creation_date=Fecha de creación:
+document_properties_modification_date=Fecha de modificación:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creador:
+document_properties_producer=PDF Productor:
+document_properties_version=Versión de PDF:
+document_properties_page_count=Cantidad de páginas:
+document_properties_close=Cerrar
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Alternar barra lateral
+toggle_sidebar_label=Alternar barra lateral
+outline.title=Mostrar esquema del documento
+outline_label=Esquema del documento
+attachments.title=Mostrar adjuntos
+attachments_label=Adjuntos
+thumbs.title=Mostrar miniaturas
+thumbs_label=Miniaturas
+findbar.title=Buscar en documento
+findbar_label=Buscar
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Página {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura de página {{page}}
+
+# Context menu
+first_page.label=Ir a la primera página
+last_page.label=Ir a la última página
+page_rotate_cw.label=Rotar en sentido horario
+page_rotate_ccw.label=Rotar en sentido antihorario
+
+# Find panel button title and messages
+find_label=Buscar:
+find_previous.title=Buscar la aparición anterior de la frase
+find_previous_label=Anterior
+find_next.title=Buscar la siguiente aparición de la frase
+find_next_label=Siguiente
+find_highlight=Resaltar todo
+find_match_case_label=Coincidir mayúsculas
+find_reached_top=Inicio de documento alcanzado, continuando desde abajo
+find_reached_bottom=Fin de documento alcanzando, continuando desde arriba
+find_not_found=Frase no encontrada
+
+# Error panel labels
+error_more_info=Más información
+error_less_info=Menos información
+error_close=Cerrar
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mensaje: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Pila: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Archivo: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Línea: {{line}}
+rendering_error=Ocurrió un error al dibujar la página.
+
+# Predefined zoom values
+page_scale_width=Ancho de página
+page_scale_fit=Ajustar página
+page_scale_auto=Zoom automático
+page_scale_actual=Tamaño real
+
+# Loading indicator messages
+loading_error_indicator=Error
+loading_error=Ocurrió un error al cargar el PDF.
+invalid_file_error=Archivo PDF no válido o cocrrupto.
+missing_file_error=Archivo PDF faltante.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Anotación]
+password_label=Ingrese la contraseña para abrir este archivo PDF
+password_invalid=Contraseña inválida. Intente nuevamente.
+password_ok=Aceptar
+password_cancel=Cancelar
+
+printing_not_supported=Advertencia: La impresión no está totalmente soportada por este navegador.
+printing_not_ready=Advertencia: El PDF no está completamente cargado para impresión.
+web_fonts_disabled=Tipografía web deshabilitada: no se pueden usar tipos incrustados en PDF.
+document_colors_disabled=Los documentos PDF no tienen permitido usar sus propios colores: \'Permitir a las páginas elegir sus propios colores\' está desactivado en el navegador.
diff --git a/lib/viewers/pdf/locale/es-CL/viewer.properties b/lib/viewers/pdf/locale/es-CL/viewer.properties
new file mode 100644
index 0000000..a53d93c
--- /dev/null
+++ b/lib/viewers/pdf/locale/es-CL/viewer.properties
@@ -0,0 +1,128 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+previous.title = Página anterior
+previous_label = Anterior
+next.title = Página siguiente
+next_label = Siguiente
+page_label = Página:
+page_of = de {{pageCount}}
+zoom_out.title = Alejar
+zoom_out_label = Alejar
+zoom_in.title = Acercar
+zoom_in_label = Acercar
+zoom.title = Ampliación
+print.title = Imprimir
+print_label = Imprimir
+presentation_mode.title = Cambiar al modo de presentación
+presentation_mode_label = Modo de presentación
+open_file.title = Abrir archivo
+open_file_label = Abrir
+download.title = Descargar
+download_label = Descargar
+bookmark.title = Vista actual (copiar o abrir en nueva ventana)
+bookmark_label = Vista actual
+tools.title=Herramientas
+tools_label=Herramientas
+first_page.title=Ir a la primera página
+first_page.label=Ir a la primera página
+first_page_label=Ir a la primera página
+last_page.title=Ir a la última página
+last_page.label=Ir a la última página
+last_page_label=Ir a la última página
+page_rotate_cw.title=Girar a la derecha
+page_rotate_cw.label=Girar a la derecha
+page_rotate_cw_label=Girar a la derecha
+page_rotate_ccw.title=Girar a la izquierda
+page_rotate_ccw.label=Girar a la izquierda
+page_rotate_ccw_label=Girar a la izquierda
+
+hand_tool_enable.title=Activar herramienta de mano
+hand_tool_enable_label=Activar herramienta de mano
+hand_tool_disable.title=Desactivar herramienta de mano
+hand_tool_disable_label=Desactivar herramienta de mano
+
+document_properties.title=Propiedades del documento…
+document_properties_label=Propiedades del documento…
+document_properties_file_name=Nombre del archivo:
+document_properties_file_size=Tamaño del archivo:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Título:
+document_properties_author=Autor:
+document_properties_subject=Asunto:
+document_properties_keywords=Palabras clave:
+document_properties_creation_date=Fecha de creación:
+document_properties_modification_date=Fecha de modificación:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creador:
+document_properties_producer=Productor del PDF:
+document_properties_version=Versión de PDF:
+document_properties_page_count=Cantidad de páginas:
+document_properties_close=Cerrar
+
+toggle_sidebar.title=Barra lateral
+toggle_sidebar_label=Mostrar u ocultar la barra lateral
+outline.title = Mostrar esquema del documento
+outline_label = Esquema del documento
+attachments.title=Mostrar adjuntos
+attachments_label=Adjuntos
+thumbs.title = Mostrar miniaturas
+thumbs_label = Miniaturas
+findbar.title = Buscar en el documento
+findbar_label = Buscar
+thumb_page_title = Página {{page}}
+thumb_page_canvas = Miniatura de la página {{page}}
+first_page.label = Ir a la primera página
+last_page.label = Ir a la última página
+page_rotate_cw.label = Rotar en sentido de los punteros del reloj
+page_rotate_ccw.label = Rotar en sentido contrario a los punteros del reloj
+find_label = Buscar:
+find_previous.title = Encontrar la aparición anterior de la frase
+find_previous_label = Previo
+find_next.title = Encontrar la siguiente aparición de la frase
+find_next_label = Siguiente
+find_highlight = Destacar todos
+find_match_case_label = Coincidir mayús./minús.
+find_reached_top=Se alcanzó el inicio del documento, continuando desde el final
+find_reached_bottom=Se alcanzó el final del documento, continuando desde el inicio
+find_not_found = Frase no encontrada
+error_more_info = Más información
+error_less_info = Menos información
+error_close = Cerrar
+error_version_info=PDF.js v{{version}} (compilación: {{build}})
+error_message = Mensaje: {{message}}
+error_stack = Pila: {{stack}}
+error_file = Archivo: {{file}}
+error_line = Línea: {{line}}
+rendering_error = Ha ocurrido un error al renderizar la página.
+page_scale_width = Ancho de página
+page_scale_fit = Ajuste de página
+page_scale_auto = Aumento automático
+page_scale_actual = Tamaño actual
+loading_error_indicator = Error
+loading_error = Ha ocurrido un error al cargar el PDF.
+invalid_file_error = Archivo PDF inválido o corrupto.
+missing_file_error=Falta el archivo PDF.
+
+text_annotation_type.alt=[{{type}} Anotación]
+password_label=Ingrese la contraseña para abrir este archivo PDF.
+password_invalid=Contraseña inválida. Por favor, vuelva a intentarlo.
+password_ok=Aceptar
+password_cancel=Cancelar
+
+printing_not_supported = Advertencia: Imprimir no está soportado completamente por este navegador.
+printing_not_ready=Advertencia: El PDF no está completamente cargado para ser impreso.
+web_fonts_disabled=Las fuentes web están desactivadas: imposible usar las fuentes PDF embebidas.
+document_colors_disabled=Los documentos PDF no tienen permitido usar sus propios colores: \'Permitir a las páginas elegir sus propios colores\' está desactivado en el navegador.
diff --git a/lib/viewers/pdf/locale/es-ES/viewer.properties b/lib/viewers/pdf/locale/es-ES/viewer.properties
new file mode 100644
index 0000000..e0db6b0
--- /dev/null
+++ b/lib/viewers/pdf/locale/es-ES/viewer.properties
@@ -0,0 +1,109 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+previous.title = Página anterior
+previous_label = Anterior
+next.title = Página siguiente
+next_label = Siguiente
+page_label = Página:
+page_of = de {{pageCount}}
+zoom_out.title = Reducir
+zoom_out_label = Reducir
+zoom_in.title = Aumentar
+zoom_in_label = Aumentar
+zoom.title = Tamaño
+presentation_mode.title = Cambiar al modo presentación
+presentation_mode_label = Modo presentación
+open_file.title = Abrir archivo
+open_file_label = Abrir
+print.title = Imprimir
+print_label = Imprimir
+download.title = Descargar
+download_label = Descargar
+bookmark.title = Vista actual (copiar o abrir en una nueva ventana)
+bookmark_label = Vista actual
+tools.title = Herramientas
+tools_label = Herramientas
+first_page.title = Ir a la primera página
+first_page.label = Ir a la primera página
+first_page_label = Ir a la primera página
+last_page.title = Ir a la última página
+last_page.label = Ir a la última página
+last_page_label = Ir a la última página
+page_rotate_cw.title = Rotar en sentido horario
+page_rotate_cw.label = Rotar en sentido horario
+page_rotate_cw_label = Rotar en sentido horario
+page_rotate_ccw.title = Rotar en sentido antihorario
+page_rotate_ccw.label = Rotar en sentido antihorario
+page_rotate_ccw_label = Rotar en sentido antihorario
+hand_tool_enable.title = Activar herramienta mano
+hand_tool_enable_label = Activar herramienta mano
+hand_tool_disable.title = Desactivar herramienta mano
+hand_tool_disable_label = Desactivar herramienta mano
+document_properties.title = Propiedades del documento…
+document_properties_label = Propiedades del documento…
+document_properties_file_name = Nombre de archivo:
+document_properties_file_size = Tamaño de archivo:
+document_properties_kb = {{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb = {{size_mb}} MB ({{size_b}} bytes)
+document_properties_title = Título:
+document_properties_author = Autor:
+document_properties_subject = Asunto:
+document_properties_keywords = Palabras clave:
+document_properties_creation_date = Fecha de creación:
+document_properties_modification_date = Fecha de modificación:
+document_properties_date_string = {{date}}, {{time}}
+document_properties_creator = Creador:
+document_properties_producer = Productor PDF:
+document_properties_version = Versión PDF:
+document_properties_page_count = Número de páginas:
+document_properties_close = Cerrar
+toggle_sidebar.title = Cambiar barra lateral
+toggle_sidebar_label = Cambiar barra lateral
+outline.title = Mostrar el esquema del documento
+outline_label = Esquema del documento
+attachments.title = Mostrar adjuntos
+attachments_label = Adjuntos
+thumbs.title = Mostrar miniaturas
+thumbs_label = Miniaturas
+findbar.title = Buscar en el documento
+findbar_label = Buscar
+thumb_page_title = Página {{page}}
+thumb_page_canvas = Miniatura de la página {{page}}
+find_label = Buscar:
+find_previous.title = Encontrar la anterior aparición de la frase
+find_previous_label = Anterior
+find_next.title = Encontrar la siguiente aparición de esta frase
+find_next_label = Siguiente
+find_highlight = Resaltar todos
+find_match_case_label = Coincidencia de mayús./minús.
+find_reached_top = Se alcanzó el inicio del documento, se continúa desde el final
+find_reached_bottom = Se alcanzó el final del documento, se continúa desde el inicio
+find_not_found = Frase no encontrada
+error_more_info = Más información
+error_less_info = Menos información
+error_close = Cerrar
+error_version_info = PDF.js v{{version}} (build: {{build}})
+error_message = Mensaje: {{message}}
+error_stack = Pila: {{stack}}
+error_file = Archivo: {{file}}
+error_line = Línea: {{line}}
+rendering_error = Ocurrió un error al renderizar la página.
+page_scale_width = Anchura de la página
+page_scale_fit = Ajuste de la página
+page_scale_auto = Tamaño automático
+page_scale_actual = Tamaño actual
+loading_error_indicator = Error
+loading_error = Ocurrió un error al cargar el PDF.
+invalid_file_error = Fichero PDF no válido o corrupto.
+missing_file_error = No hay fichero PDF.
+text_annotation_type.alt = [Anotación {{type}}]
+password_label = Introduzca la contraseña para abrir este archivo PDF.
+password_invalid = Contraseña no válida. Vuelva a intentarlo.
+password_ok = Aceptar
+password_cancel = Cancelar
+printing_not_supported = Advertencia: Imprimir no está totalmente soportado por este navegador.
+printing_not_ready = Advertencia: Este PDF no se ha cargado completamente para poder imprimirse.
+web_fonts_disabled = Las tipografías web están desactivadas: es imposible usar las tipografías PDF embebidas.
+document_colors_disabled = Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador.
diff --git a/lib/viewers/pdf/locale/es-MX/viewer.properties b/lib/viewers/pdf/locale/es-MX/viewer.properties
new file mode 100644
index 0000000..a573bbf
--- /dev/null
+++ b/lib/viewers/pdf/locale/es-MX/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Página anterior
+previous_label=Anterior
+next.title=Página siguiente
+next_label=Siguiente
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Página:
+page_of=de {{pageCount}}
+
+zoom_out.title=Reducir
+zoom_out_label=Reducir
+zoom_in.title=Aumentar
+zoom_in_label=Aumentar
+zoom.title=Zoom
+presentation_mode.title=Cambiar al modo presentación
+presentation_mode_label=Modo presentación
+open_file.title=Abrir archivo
+open_file_label=Abrir
+print.title=Imprimir
+print_label=Imprimir
+download.title=Descargar
+download_label=Descargar
+bookmark.title=Vista actual (copia o abierta en ventana nueva)
+bookmark_label=Vista actual
+
+# Secondary toolbar and context menu
+tools.title=Herramientas
+tools_label=Herramientas
+first_page.title=Ir a la primera página
+first_page.label=Ir a la primera página
+first_page_label=Ir a la primera página
+last_page.title=Ir a la última página
+last_page.label=Ir a la última página
+last_page_label=Ir a la última página
+page_rotate_cw.title=Girar a la derecha
+page_rotate_cw.label=Girar a la derecha
+page_rotate_cw_label=Girar a la derecha
+page_rotate_ccw.title=Girar a la izquierda
+page_rotate_ccw.label=Girar a la izquierda
+page_rotate_ccw_label=Girar a la izquierda
+
+hand_tool_enable.title=Activar herramienta mano
+hand_tool_enable_label=Activar herramienta mano
+hand_tool_disable.title=Desactivar herramienta mano
+hand_tool_disable_label=Desactivar herramienta mano
+
+# Document properties dialog box
+document_properties.title=Propiedades del documento…
+document_properties_label=Propiedades del documento…
+document_properties_file_name=Nombre del archivo:
+document_properties_file_size=Tamaño del archivo:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Título:
+document_properties_author=Autor:
+document_properties_subject=Asunto:
+document_properties_keywords=Palabras claves:
+document_properties_creation_date=Fecha de creación:
+document_properties_modification_date=Fecha de modificación:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creador:
+document_properties_producer=Productor PDF:
+document_properties_version=Versión PDF:
+document_properties_page_count=Número de páginas:
+document_properties_close=Cerrar
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Cambiar barra lateral
+toggle_sidebar_label=Cambiar barra lateral
+outline.title=Mostrar esquema del documento
+outline_label=Esquema del documento
+thumbs.title=Mostrar miniaturas
+thumbs_label=Miniaturas
+findbar.title=Buscar en el documento
+findbar_label=Buscar
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Página {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura de la página {{page}}
+
+# Find panel button title and messages
+find_label=Encontrar:
+find_previous.title=Ir a la anterior frase encontrada
+find_previous_label=Anterior
+find_next.title=Ir a la siguiente frase encontrada
+find_next_label=Siguiente
+find_highlight=Resaltar todo
+find_match_case_label=Coincidir con mayúsculas y minúsculas
+find_reached_top=Se alcanzó el inicio del documento, se buscará al final
+find_reached_bottom=Se alcanzó el final del documento, se buscará al inicio
+find_not_found=No se encontró la frase
+
+# Error panel labels
+error_more_info=Más información
+error_less_info=Menos información
+error_close=Cerrar
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mensaje: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Pila: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Archivo: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Línea: {{line}}
+rendering_error=Un error ocurrió al renderizar la página.
+
+# Predefined zoom values
+page_scale_width=Ancho de página
+page_scale_fit=Ajustar página
+page_scale_auto=Zoom automático
+page_scale_actual=Tamaño real
+
+# Loading indicator messages
+loading_error_indicator=Error
+loading_error=Un error ocurrió al cargar el PDF.
+invalid_file_error=Archivo PDF invalido o dañado.
+missing_file_error=Archivo PDF no encontrado.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} anotación]
+password_label=Ingresa la contraseña para abrir este archivo PDF.
+password_invalid=Contraseña inválida. Por favor intenta de nuevo.
+password_ok=Aceptar
+password_cancel=Cancelar
+
+printing_not_supported=Advertencia: La impresión no esta completamente soportada por este navegador.
+printing_not_ready=Advertencia: El PDF no cargo completamente para impresión.
+web_fonts_disabled=Las fuentes web están desactivadas: es imposible usar las fuentes PDF embebidas.
+document_colors_disabled=Los documentos PDF no tienen permiso de usar sus propios colores: 'Permitir que las páginas elijan sus propios colores' esta desactivada en el navegador.
diff --git a/lib/viewers/pdf/locale/es/chrome.properties b/lib/viewers/pdf/locale/es/chrome.properties
deleted file mode 100644
index 31c3618..0000000
--- a/lib/viewers/pdf/locale/es/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=Es posible que este documento PDF no se muestre correctamente.
-open_with_different_viewer=Abrir con un visor diferente
-open_with_different_viewer.accessKey=a
diff --git a/lib/viewers/pdf/locale/es/metadata.inc b/lib/viewers/pdf/locale/es/metadata.inc
deleted file mode 100644
index 9cc5ed6..0000000
--- a/lib/viewers/pdf/locale/es/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>es</em:locale>
- <em:name>Visor de PDF</em:name>
- <em:description>Usa HTML5 para mostrar archivos PDF directamente en Firefox.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/et/viewer.properties b/lib/viewers/pdf/locale/et/viewer.properties
new file mode 100644
index 0000000..bc6b752
--- /dev/null
+++ b/lib/viewers/pdf/locale/et/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Eelmine lehekülg
+previous_label=Eelmine
+next.title=Järgmine lehekülg
+next_label=Järgmine
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Lehekülg:
+page_of=(kokku {{pageCount}})
+
+zoom_out.title=Vähenda
+zoom_out_label=Vähenda
+zoom_in.title=Suurenda
+zoom_in_label=Suurenda
+zoom.title=Suurendamine
+presentation_mode.title=Lülitu esitlusrežiimi
+presentation_mode_label=Esitlusrežiim
+open_file.title=Ava fail
+open_file_label=Ava
+print.title=Prindi
+print_label=Prindi
+download.title=Laadi alla
+download_label=Laadi alla
+bookmark.title=Praegune vaade (kopeeri või ava uues aknas)
+bookmark_label=Praegune vaade
+
+# Secondary toolbar and context menu
+tools.title=Tööriistad
+tools_label=Tööriistad
+first_page.title=Mine esimesele leheküljele
+first_page.label=Mine esimesele leheküljele
+first_page_label=Mine esimesele leheküljele
+last_page.title=Mine viimasele leheküljele
+last_page.label=Mine viimasele leheküljele
+last_page_label=Mine viimasele leheküljele
+page_rotate_cw.title=Pööra päripäeva
+page_rotate_cw.label=Pööra päripäeva
+page_rotate_cw_label=Pööra päripäeva
+page_rotate_ccw.title=Pööra vastupäeva
+page_rotate_ccw.label=Pööra vastupäeva
+page_rotate_ccw_label=Pööra vastupäeva
+
+hand_tool_enable.title=Luba sirvimine
+hand_tool_enable_label=Luba sirvimine
+hand_tool_disable.title=Keela sirvimine
+hand_tool_disable_label=Keela sirvimine
+
+# Document properties dialog box
+document_properties.title=Dokumendi omadused…
+document_properties_label=Dokumendi omadused…
+document_properties_file_name=Faili nimi:
+document_properties_file_size=Faili suurus:
+document_properties_kb={{size_kb}} KiB ({{size_b}} baiti)
+document_properties_mb={{size_mb}} MiB ({{size_b}} baiti)
+document_properties_title=Pealkiri:
+document_properties_author=Autor:
+document_properties_subject=Teema:
+document_properties_keywords=Märksõnad:
+document_properties_creation_date=Loodud:
+document_properties_modification_date=Muudetud:
+document_properties_date_string={{date}} {{time}}
+document_properties_creator=Looja:
+document_properties_producer=Generaator:
+document_properties_version=Generaatori versioon:
+document_properties_page_count=Lehekülgi:
+document_properties_close=Sulge
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Näita külgriba
+toggle_sidebar_label=Näita külgriba
+outline.title=Näita sisukorda
+outline_label=Näita sisukorda
+thumbs.title=Näita pisipilte
+thumbs_label=Pisipildid
+findbar.title=Leia dokumendist
+findbar_label=Leia
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title={{page}}. lehekülg
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas={{page}}. lehekülje pisipilt
+
+# Find panel button title and messages
+find_label=Leia:
+find_previous.title=Leia fraasi eelmine esinemiskoht
+find_previous_label=Eelmine
+find_next.title=Leia fraasi järgmine esinemiskoht
+find_next_label=Järgmine
+find_highlight=Too kõik esile
+find_match_case_label=Tõstutundlik
+find_reached_top=Jõuti dokumendi algusesse, jätkati lõpust
+find_reached_bottom=Jõuti dokumendi lõppu, jätkati algusest
+find_not_found=Fraasi ei leitud
+
+# Error panel labels
+error_more_info=Rohkem teavet
+error_less_info=Vähem teavet
+error_close=Sulge
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Teade: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fail: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Rida: {{line}}
+rendering_error=Lehe renderdamisel esines viga.
+
+# Predefined zoom values
+page_scale_width=Mahuta laiusele
+page_scale_fit=Mahuta leheküljele
+page_scale_auto=Automaatne suurendamine
+page_scale_actual=Tegelik suurus
+
+# Loading indicator messages
+loading_error_indicator=Viga
+loading_error=PDFi laadimisel esines viga.
+invalid_file_error=Vigane või rikutud PDF-fail.
+missing_file_error=PDF-fail puudub.
+
+# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=PDF-faili avamiseks sisesta parool.
+password_invalid=Vigane parool. Palun proovi uuesti.
+password_ok=Sobib
+password_cancel=Loobu
+
+printing_not_supported=Hoiatus: printimine pole selle brauseri poolt täielikult toetatud.
+printing_not_ready=Hoiatus: PDF pole printimiseks täielikult laaditud.
+web_fonts_disabled=Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada.
+document_colors_disabled=PDF-dokumentidel pole oma värvide kasutamine lubatud: \'Veebilehtedel on lubatud kasutada oma värve\' on brauseris deaktiveeritud.
diff --git a/lib/viewers/pdf/locale/eu/viewer.properties b/lib/viewers/pdf/locale/eu/viewer.properties
new file mode 100644
index 0000000..0829055
--- /dev/null
+++ b/lib/viewers/pdf/locale/eu/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Aurreko orria
+previous_label=Aurrekoa
+next.title=Hurrengo orria
+next_label=Hurrengoa
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Orria:
+page_of=/ {{pageCount}}
+
+zoom_out.title=Urrundu zooma
+zoom_out_label=Urrundu zooma
+zoom_in.title=Gerturatu zooma
+zoom_in_label=Gerturatu zooma
+zoom.title=Zooma
+presentation_mode.title=Aldatu aurkezpen modura
+presentation_mode_label=Arkezpen modua
+open_file.title=Ireki fitxategia
+open_file_label=Ireki
+print.title=Inprimatu
+print_label=Inprimatu
+download.title=Deskargatu
+download_label=Deskargatu
+bookmark.title=Uneko ikuspegia (kopiatu edo ireki leiho berrian)
+bookmark_label=Uneko ikuspegia
+
+# Secondary toolbar and context menu
+tools.title=Tresnak
+tools_label=Tresnak
+first_page.title=Joan lehen orrira
+first_page.label=Joan lehen orrira
+first_page_label=Joan lehen orrira
+last_page.title=Joan azken orrira
+last_page.label=Joan azken orrira
+last_page_label=Joan azken orrira
+page_rotate_cw.title=Biratu erlojuaren norantzan
+page_rotate_cw.label=Biratu erlojuaren norantzan
+page_rotate_cw_label=Biratu erlojuaren norantzan
+page_rotate_ccw.title=Biratu erlojuaren aurkako norantzan
+page_rotate_ccw.label=Biratu erlojuaren aurkako norantzan
+page_rotate_ccw_label=Biratu erlojuaren aurkako norantzan
+
+hand_tool_enable.title=Gaitu eskuaren tresna
+hand_tool_enable_label=Gaitu eskuaren tresna
+hand_tool_disable.title=Desgaitu eskuaren tresna
+hand_tool_disable_label=Desgaitu eskuaren tresna
+
+# Document properties dialog box
+document_properties.title=Dokumentuaren propietateak…
+document_properties_label=Dokumentuaren propietateak…
+document_properties_file_name=Fitxategi-izena:
+document_properties_file_size=Fitxategiaren tamaina:
+document_properties_kb={{size_kb}} KB ({{size_b}} byte)
+document_properties_mb={{size_mb}} MB ({{size_b}} byte)
+document_properties_title=Izenburua:
+document_properties_author=Egilea:
+document_properties_subject=Gaia:
+document_properties_keywords=Gako-hitzak:
+document_properties_creation_date=Sortze-data:
+document_properties_modification_date=Aldatze-data:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Sortzailea:
+document_properties_producer=PDFaren ekoizlea:
+document_properties_version=PDF bertsioa:
+document_properties_page_count=Orrialde kopurua:
+document_properties_close=Itxi
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Txandakatu alboko barra
+toggle_sidebar_label=Txandakatu alboko barra
+outline.title=Erakutsi dokumentuaren eskema
+outline_label=Dokumentuaren eskema
+attachments.title=Erakutsi eranskinak
+attachments_label=Eranskinak
+thumbs.title=Erakutsi koadro txikiak
+thumbs_label=Koadro txikiak
+findbar.title=Bilatu dokumentuan
+findbar_label=Bilatu
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title={{page}}. orria
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas={{page}}. orriaren koadro txikia
+
+# Find panel button title and messages
+find_label=Bilatu:
+find_previous.title=Bilatu esaldiaren aurreko parekatzea
+find_previous_label=Aurrekoa
+find_next.title=Bilatu esaldiaren hurrengo parekatzea
+find_next_label=Hurrengoa
+find_highlight=Nabarmendu guztia
+find_match_case_label=Bat etorri maiuskulekin/minuskulekin
+find_reached_top=Dokumentuaren hasierara heldu da, bukaeratik jarraitzen
+find_reached_bottom=Dokumentuaren bukaerara heldu da, hasieratik jarraitzen
+find_not_found=Esaldia ez da aurkitu
+
+# Error panel labels
+error_more_info=Informazio gehiago
+error_less_info=Informazio gutxiago
+error_close=Itxi
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (eraikuntza: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mezua: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Pila: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fitxategia: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Lerroa: {{line}}
+rendering_error=Errorea gertatu da orria errendatzean.
+
+# Predefined zoom values
+page_scale_width=Orriaren zabalera
+page_scale_fit=Doitu orrira
+page_scale_auto=Zoom automatikoa
+page_scale_actual=Benetako tamaina
+
+# Loading indicator messages
+loading_error_indicator=Errorea
+loading_error=Errorea gertatu da PDFa kargatzean.
+invalid_file_error=PDF fitxategi baliogabe edo hondatua.
+missing_file_error=PDF fitxategia falta da.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} ohartarazpena]
+password_label=Idatzi PDF fitxategi hau irekitzeko pasahitza.
+password_invalid=Pasahitz baliogabea. Saiatu berriro mesedez.
+password_ok=Ados
+password_cancel=Utzi
+
+printing_not_supported=Abisua: inprimatzeko euskarria ez da erabatekoa nabigatzaile honetan.
+printing_not_ready=Abisua: PDFa ez dago erabat kargatuta inprimatzeko.
+web_fonts_disabled=Webeko letra-tipoak desgaituta daude: ezin dira kapsulatutako PDF letra-tipoak erabili.
+document_colors_disabled=PDF dokumentuek ez dute beraien koloreak erabiltzeko baimenik: 'Baimendu orriak beraien letra-tipoak aukeratzea' desaktibatuta dago nabigatzailean.
diff --git a/lib/viewers/pdf/locale/fa/viewer.properties b/lib/viewers/pdf/locale/fa/viewer.properties
new file mode 100644
index 0000000..062f2c2
--- /dev/null
+++ b/lib/viewers/pdf/locale/fa/viewer.properties
@@ -0,0 +1,102 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=صفحهٔ قبلی
+next.title=صفحهٔ بعدی
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=صفحه:
+page_of=از {{pageCount}}
+
+zoom_out.title=کوچک‌نمایی
+zoom_out_label=کوچک‌نمایی
+zoom_in.title=بزرگ‌نمایی
+zoom_in_label=بزرگ‌نمایی
+zoom.title=زوم
+presentation_mode.title=تغییر به حالت ارائه
+presentation_mode_label=حالت ارائه
+open_file.title=باز کردن پرونده
+open_file_label=باز کردن
+print.title=چاپ
+print_label=چاپ
+download.title=بارگیری
+download_label=بارگیری
+bookmark.title=نمای فعلی (کپی کن، یا در پنجرۀ دیگری نشان بده)
+bookmark_label=نمای فعلی
+
+# Secondary toolbar and context menu
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+outline.title=نمایش طرح نوشتار
+outline_label=طرح نوشتار
+thumbs.title=نمایش تصاویر بندانگشتی
+thumbs_label=تصاویر بندانگشتی
+findbar_label=پیدا کردن
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=صفحه {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=تصویر بند‌ انگشتی صفحه {{page}}
+
+# Find panel button title and messages
+find_previous.title=پیدا کردن رخداد قبلی عبارت
+find_next.title=پیدا کردن رخداد بعدی عبارت
+find_not_found=عبارت پیدا نشد
+
+# Error panel labels
+error_more_info=اطلاعات بیشتر
+error_less_info=اطلاعات کمتر
+error_close=بستن
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=پیام: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=توده: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=پرونده: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=سطر: {{line}}
+rendering_error=هنگام بارگیری صفحه خطایی رخ داد.
+
+# Predefined zoom values
+page_scale_width=عرض صفحه
+page_scale_fit=اندازه کردن صفحه
+page_scale_auto=بزرگنمایی خودکار
+page_scale_actual=اندازه واقعی‌
+
+# Loading indicator messages
+loading_error_indicator=خطا
+loading_error=هنگام بارگیری پرونده (PDF) خطایی رخ داد.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
+password_ok=تأیید
+password_cancel=انصراف
+
+printing_not_supported=هشدار: قابلیت چاپ به‌طور کامل در این مرورگر پشتیبانی نمی‌شود.
diff --git a/lib/viewers/pdf/locale/ff/viewer.properties b/lib/viewers/pdf/locale/ff/viewer.properties
new file mode 100644
index 0000000..9720c3e
--- /dev/null
+++ b/lib/viewers/pdf/locale/ff/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Hello Ɓennungo
+previous_label=Ɓennuɗo
+next.title=Hello faango
+next_label=Yeeso
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Hello:
+page_of=e nder {{pageCount}}
+
+zoom_out.title=Lonngo Woɗɗa
+zoom_out_label=Lonngo Woɗɗa
+zoom_in.title=Lonngo Ara
+zoom_in_label=Lonngo Ara
+zoom.title=Lonngo
+presentation_mode.title=Faytu to Presentation Mode
+presentation_mode_label=Presentation Mode
+open_file.title=Uddit Fiilde
+open_file_label=Uddit
+print.title=Winndito
+print_label=Winndito
+download.title=Aawto
+download_label=Aawto
+bookmark.title=Jiytol gonangol (natto walla uddit e henorde)
+bookmark_label=Jiytol Gonangol
+
+# Secondary toolbar and context menu
+tools.title=Kuutorɗe
+tools_label=Kuutorɗe
+first_page.title=Yah to hello adanngo
+first_page.label=Yah to hello adanngo
+first_page_label=Yah to hello adanngo
+last_page.title=Yah to hello wattindiingo
+last_page.label=Yah to hello wattindiingo
+last_page_label=Yah to hello wattindiingo
+page_rotate_cw.title=Yiiltu Faya Ñaamo
+page_rotate_cw.label=Yiiltu Faya Ñaamo
+page_rotate_cw_label=Yiiltu Faya Ñaamo
+page_rotate_ccw.title=Yiiltu Faya Nano
+page_rotate_ccw.label=Yiiltu Faya Nano
+page_rotate_ccw_label=Yiiltu Faya Nano
+
+hand_tool_enable.title=Hurmin kuutorgal junngo
+hand_tool_enable_label=Hurmin kuutorgal junngo
+hand_tool_disable.title=DaaÆ´ kuutorgal junngo
+hand_tool_disable_label=DaaÆ´ kuutorgal junngo
+
+# Document properties dialog box
+document_properties.title=Keeroraaɗi Winndannde…
+document_properties_label=Keeroraaɗi Winndannde…
+document_properties_file_name=Innde fiilde:
+document_properties_file_size=Ɓetol fiilde:
+document_properties_kb={{size_kb}} KB ({{size_b}} bite)
+document_properties_mb={{size_mb}} MB ({{size_b}} bite)
+document_properties_title=Tiitoonde:
+document_properties_author=Binnduɗo:
+document_properties_subject=Toɓɓere:
+document_properties_keywords=Kelmekele jiytirɗe:
+document_properties_creation_date=Ñalnde Sosaa:
+document_properties_modification_date=Ñalnde Waylaa:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Cosɗo:
+document_properties_producer=Paggiiɗo PDF:
+document_properties_version=Yamre PDF:
+document_properties_page_count=Limoore Kelle:
+document_properties_close=Uddu
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Toggilo Palal Sawndo
+toggle_sidebar_label=Toggilo Palal Sawndo
+outline.title=Hollu Toɓɓe Fiilannde
+outline_label=Toɓɓe Fiilannde
+attachments.title=Hollu Ɗisanɗe
+attachments_label=Ɗisanɗe
+thumbs.title=Hollu Dooɓe
+thumbs_label=Dooɓe
+findbar.title=Yiylo e fiilannde
+findbar_label=Yiytu
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Hello {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Dooɓre Hello {{page}}
+
+# Find panel button title and messages
+find_label=Yiytu:
+find_previous.title=Yiylo cilol ɓennugol konngol ngol
+find_previous_label=Ɓennuɗo
+find_next.title=Yiylo cilol garowol konngol ngol
+find_next_label=Yeeso
+find_highlight=Jalbin fof
+find_match_case_label=Jaaɓnu darnde
+find_reached_top=Heɓii fuɗɗorde fiilannde, jokku faya les
+find_reached_bottom=Heɓii hoore fiilannde, jokku faya les
+find_not_found=Konngi njiyataa
+
+# Error panel labels
+error_more_info=Ɓeydu Humpito
+error_less_info=Ustu Humpito
+error_close=Uddu
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Ɓatakuure: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fiilde: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Gorol: {{line}}
+rendering_error=Juumre waɗii tuma nde yoŋkittoo hello.
+
+# Predefined zoom values
+page_scale_width=Njaajeendi Hello
+page_scale_fit=KeÆ´eendi Hello
+page_scale_auto=Loongorde Jaajol
+page_scale_actual=Ɓetol Jaati
+
+# Loading indicator messages
+loading_error_indicator=Juumre
+loading_error=Juumre waɗii tuma nde loowata PDF oo.
+invalid_file_error=Fiilde PDF moÆ´Æ´aani walla jiibii.
+missing_file_error=Fiilde PDF ena ŋakki.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Siiftannde]
+password_label=Naatu finnde ngam uddite ndee fiilde PDF.
+password_invalid=Finnde moƴƴaani. Tiiɗno eto kadi.
+password_ok=OK
+password_cancel=Haaytu
+
+printing_not_supported=Reentino: Winnditagol tammbitaaka no feewi e ndee wanngorde.
+printing_not_ready=Reentino: PDF oo loowaaki haa timmi ngam winnditagol.
+web_fonts_disabled=Ponte geese ko daaƴaaɗe: horiima huutoraade ponte PDF coomtoraaɗe.
+document_colors_disabled=Piilanɗe PDF njamiraaka yoo kuutoro goobuuji mum'en keeriiɗi: 'Yamir kello yoo kuutoro goobuuki keeriiɗi' koko daaƴaa e wanngorde ndee.
diff --git a/lib/viewers/pdf/locale/fi/chrome.properties b/lib/viewers/pdf/locale/fi/chrome.properties
deleted file mode 100644
index 529da81..0000000
--- a/lib/viewers/pdf/locale/fi/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=Tämä PDF-asiakirja ei ehkä näy oikeanlaisena.
-open_with_different_viewer=Avaa toisella ohjelmalla
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/fi/metadata.inc b/lib/viewers/pdf/locale/fi/metadata.inc
deleted file mode 100644
index 1b8d8b6..0000000
--- a/lib/viewers/pdf/locale/fi/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>fi</em:locale>
- <em:name>PDF Lukuohjelma</em:name>
- <em:description>Näyttää PDF tiedostot suoraan Firefox:ssa HTML5:n avulla.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/fi/viewer.properties b/lib/viewers/pdf/locale/fi/viewer.properties
index f8cb93f..5a5a87b 100644
--- a/lib/viewers/pdf/locale/fi/viewer.properties
+++ b/lib/viewers/pdf/locale/fi/viewer.properties
@@ -1,121 +1,161 @@
-# Copyright 2012 Mozilla Foundation
+# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Edellinen sivu
previous_label=Edellinen
next.title=Seuraava sivu
next_label=Seuraava
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Sivu:
page_of=/ {{pageCount}}
-zoom_out.title=Suurenna
-zoom_out_label=Suurenna
-zoom_in.title=Pienennä
-zoom_in_label=Pienennä
-zoom.title=Sivun suurennus
-print.title=Tulosta
-print_label=Tulosta
-presentation_mode.title=Esitystila
+zoom_out.title=Loitonna
+zoom_out_label=Loitonna
+zoom_in.title=Lähennä
+zoom_in_label=Lähennä
+zoom.title=Suurennus
+presentation_mode.title=Siirry esitystilaan
presentation_mode_label=Esitystila
open_file.title=Avaa tiedosto
open_file_label=Avaa
+print.title=Tulosta
+print_label=Tulosta
download.title=Lataa
download_label=Lataa
-bookmark.title=Nykyinen näkymä (kopioi tai avaa uuteen ikkunaan)
-bookmark_label=Nykyinen näkymä
+bookmark.title=Avoin ikkuna (kopioi tai avaa uuteen ikkunaan)
+bookmark_label=Avoin ikkuna
+
+# Secondary toolbar and context menu
+tools.title=Tools
+tools_label=Tools
+first_page.title=Siirry ensimmäiselle sivulle
+first_page.label=Siirry ensimmäiselle sivulle
+first_page_label=Siirry ensimmäiselle sivulle
+last_page.title=Siirry viimeiselle sivulle
+last_page.label=Siirry viimeiselle sivulle
+last_page_label=Siirry viimeiselle sivulle
+page_rotate_cw.title=Kierrä oikealle
+page_rotate_cw.label=Kierrä oikealle
+page_rotate_cw_label=Kierrä oikealle
+page_rotate_ccw.title=Kierrä vasemmalle
+page_rotate_ccw.label=Kierrä vasemmalle
+page_rotate_ccw_label=Kierrä vasemmalle
+
+hand_tool_enable.title=Käytä käsityökalua
+hand_tool_enable_label=Käytä käsityökalua
+hand_tool_disable.title=Poista käsityökalu käytöstä
+hand_tool_disable_label=Poista käsityökalu käytöstä
+
+# Document properties dialog box
+document_properties.title=Dokumentin ominaisuudet…
+document_properties_label=Dokumentin ominaisuudet…
+document_properties_file_name=Tiedostonimi:
+document_properties_file_size=Tiedoston koko:
+document_properties_kb={{size_kb}} kt ({{size_b}} tavua)
+document_properties_mb={{size_mb}} Mt ({{size_b}} tavua)
+document_properties_title=Otsikko:
+document_properties_author=Tekijä:
+document_properties_subject=Aihe:
+document_properties_keywords=Avainsanat:
+document_properties_creation_date=Luomispäivämäärä:
+document_properties_modification_date=Muokkauspäivämäärä:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Luoja:
+document_properties_producer=PDF-tuottaja:
+document_properties_version=PDF-versio:
+document_properties_page_count=Sivujen määrä:
+document_properties_close=Sulje
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Vaihda sivunäkymä
-toggle_sidebar_label=Vaihda sivunäkymä
-outline.title=Näytä asiakirjan jäsennys
-outline_label=Asiakirjan jäsennys
-thumbs.title=Näytä esikatselukuvat
-thumbs_label=Esikatselukuvat
-findbar.title=Etsi asiakirjasta
+toggle_sidebar.title=Näytä/piilota sivupaneeli
+toggle_sidebar_label=Näytä/piilota sivupaneeli
+outline.title=Näytä dokumentin rakenne
+outline_label=Dokumentin rakenne
+thumbs.title=Näytä pienoiskuvat
+thumbs_label=Pienoiskuvat
+findbar.title=Etsi dokumentista
findbar_label=Etsi
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Sivu {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=Sivun {{page}} esikatselukuva
-
-# Context menu
-first_page.label=Ensimmäinen sivu
-last_page.label=Viimeinen sivu
-page_rotate_cw.label=Kierrä myötäpäivään
-page_rotate_ccw.label=Kierrä vastapäivään
+thumb_page_canvas=Pienoiskuva sivusta {{page}}
# Find panel button title and messages
-find_label=Etsi
-find_previous.title=Etsi edellinen
+find_label=Etsi:
+find_previous.title=Etsi hakusanan edellinen osuma
find_previous_label=Edellinen
-find_next.title=Etsi seuraava
+find_next.title=Etsi hakusanan seuraava osuma
find_next_label=Seuraava
-find_highlight=Korosta kaikki hakutulokset
-find_match_case_label=Hae täysin samanlaisia
-find_reached_top=Asiakirjan alku saavutettiin, jatkettiin lopusta
-find_reached_bottom=Asiakirjan loppu saavutettiin, jatkettiin alusta
-find_not_found=Ei löytynyt
+find_highlight=Korosta kaikki
+find_match_case_label=Huomioi kirjainkoko
+find_reached_top=Päästiin dokumentin alkuun, jatketaan lopusta
+find_reached_bottom=Päästiin dokumentin loppuun, continued from top
+find_not_found=Hakusanaa ei löytynyt
# Error panel labels
-error_more_info=Enemmän tietoa
-error_less_info=Vähemmän tietoa
+error_more_info=Lisätietoja
+error_less_info=Lisätietoja
error_close=Sulje
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (rakennus: {{build}})
+error_version_info=PDF.js v{{version}} (kooste: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
-error_message=Viesti: {{message}}
+error_message=Virheilmoitus: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
-error_stack=Kutsupino: {{stack}}
+error_stack=Pino: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Tiedosto: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Rivi: {{line}}
-rendering_error=Virhe on tapahtunut sivua mallintaessa.
+rendering_error=Tapahtui virhe piirrettäessä sivua.
# Predefined zoom values
page_scale_width=Sivun leveys
-page_scale_fit=Sivun sovitus
-page_scale_auto=Automaatinen sivun suurennus
+page_scale_fit=Koko sivu
+page_scale_auto=Automaattinen suurennus
page_scale_actual=Todellinen koko
# Loading indicator messages
loading_error_indicator=Virhe
-loading_error=Virhe on tapahtunut PDF:ää ladattaessa.
-invalid_file_error=Virheellinen tai vioittunut PDF tiedosto.
-missing_file_error=PDF tiedostoa ei löytynyt.
+loading_error=Tapahtui virhe ladattaessa PDF-tiedostoa.
+invalid_file_error=Virheellinen tai vioittunut PDF-tiedosto.
+missing_file_error=Puuttuva PDF-tiedosto.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Selite]
-request_password=PDF on salasanasuojattu:
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=Kirjoita PDF-tiedoston salasana.
+password_invalid=Virheellinen salasana. Yritä uudestaan.
+password_ok=OK
+password_cancel=Peruuta
-printing_not_supported=Varoitus: Tämä selain ei täysin tue tulostusta.
-web_fonts_disabled=Web fontit ovat poissa käytöstä: upotettuja PDF fontteja ei voida käyttää.
+printing_not_supported=Varoitus: Selain ei tue kaikkia tulostustapoja.
+printing_not_ready=Varoitus: PDF-tiedosto ei ole vielä latautunut kokonaan, eikä sitä voi vielä tulostaa.
+web_fonts_disabled=Verkkosivujen omat kirjasinlajit on estetty: ei voida käyttää upotettuja PDF-kirjasinlajeja.
+document_colors_disabled=PDF-dokumenttien ei ole sallittua käyttää omia värejään: Asetusta \"Sivut saavat käyttää omia värejään oletusten sijaan\" ei ole valittu selaimen asetuksissa.
diff --git a/lib/viewers/pdf/locale/fr/chrome.properties b/lib/viewers/pdf/locale/fr/chrome.properties
deleted file mode 100644
index 2e354ff..0000000
--- a/lib/viewers/pdf/locale/fr/chrome.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-unsupported_feature=Il est possible que ce document PDF ne s'affiche pas correctement.
-open_with_different_viewer=Ouvrir avec un autre lecteur PDF
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/fr/metadata.inc b/lib/viewers/pdf/locale/fr/metadata.inc
deleted file mode 100644
index 874e93a..0000000
--- a/lib/viewers/pdf/locale/fr/metadata.inc
+++ /dev/null
@@ -1,7 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>fr</em:locale>
- <em:name>PDF Viewer</em:name>
- <em:description>Utilise HTML5 pour afficher les documents PDF directement dans Firefox.</em:description>
- </Description>
- </em:localized>
diff --git a/lib/viewers/pdf/locale/fr/viewer.properties b/lib/viewers/pdf/locale/fr/viewer.properties
index cdd1989..41d1860 100644
--- a/lib/viewers/pdf/locale/fr/viewer.properties
+++ b/lib/viewers/pdf/locale/fr/viewer.properties
@@ -1,122 +1,163 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Page précédente
previous_label=Précédent
next.title=Page suivante
next_label=Suivant
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Page :
page_of=sur {{pageCount}}
zoom_out.title=Zoom arrière
zoom_out_label=Zoom arrière
zoom_in.title=Zoom avant
zoom_in_label=Zoom avant
zoom.title=Zoom
-print.title=Imprimer
-print_label=Imprimer
presentation_mode.title=Basculer en mode présentation
presentation_mode_label=Mode présentation
open_file.title=Ouvrir le fichier
-open_file_label=Ouvrir
+open_file_label=Ouvrir le fichier
+print.title=Imprimer
+print_label=Imprimer
download.title=Télécharger
download_label=Télécharger
bookmark.title=Affichage courant (copier ou ouvrir dans une nouvelle fenêtre)
bookmark_label=Affichage actuel
+# Secondary toolbar and context menu
+tools.title=Outils
+tools_label=Outils
+first_page.title=Aller à la première page
+first_page.label=Aller à la première page
+first_page_label=Aller à la première page
+last_page.title=Aller à la dernière page
+last_page.label=Aller à la dernière page
+last_page_label=Aller à la dernière page
+page_rotate_cw.title=Rotation horaire
+page_rotate_cw.label=Rotation horaire
+page_rotate_cw_label=Rotation horaire
+page_rotate_ccw.title=Rotation anti-horaire
+page_rotate_ccw.label=Rotation anti-horaire
+page_rotate_ccw_label=Rotation anti-horaire
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Afficher/Masquer le panneau latéral
toggle_sidebar_label=Afficher/Masquer le panneau latéral
outline.title=Afficher les signets
outline_label=Signets du document
+attachments.title=Afficher les pièces jointes
+attachments_label=Pièces jointes
thumbs.title=Afficher les vignettes
thumbs_label=Vignettes
findbar.title=Rechercher dans le document
findbar_label=Rechercher
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Page {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Vignette de la page {{page}}
-# Context menu
-first_page.label=Aller à la première page
-last_page.label=Aller à la dernière page
-page_rotate_cw.label=Rotation horaire
-page_rotate_ccw.label=Rotation anti-horaire
+hand_tool_enable.title=Activer l'outil main
+hand_tool_enable_label=Activer l'outil main
+hand_tool_disable.title=Désactiver l'outil main
+hand_tool_disable_label=Désactiver l'outil main
+
+# Document properties dialog box
+document_properties.title=Propriétés du document…
+document_properties_label=Propriétés du document…
+document_properties_file_name=Nom du fichier :
+document_properties_file_size=Taille du fichier :
+document_properties_kb={{size_kb}} Ko ({{size_b}} octets)
+document_properties_mb={{size_mb}} Mo ({{size_b}} octets)
+document_properties_title=Titre :
+document_properties_author=Auteur :
+document_properties_subject=Sujet :
+document_properties_keywords=Mots-clés :
+document_properties_creation_date=Date de création :
+document_properties_modification_date=Modifié le :
+document_properties_date_string={{date}} à {{time}}
+document_properties_creator=Créé par :
+document_properties_producer=Outil de conversion PDF :
+document_properties_version=Version PDF :
+document_properties_page_count=Nombre de pages :
+document_properties_close=Fermer
# Find panel button title and messages
find_label=Rechercher :
find_previous.title=Trouver l'occurrence précédente de la phrase
find_previous_label=Précédent
find_next.title=Trouver la prochaine occurrence de la phrase
find_next_label=Suivant
find_highlight=Tout surligner
find_match_case_label=Respecter la casse
find_reached_top=Haut de la page atteint, poursuite depuis la fin
find_reached_bottom=Bas de la page atteint, poursuite au début
find_not_found=Phrase introuvable
# Error panel labels
error_more_info=Plus d'informations
error_less_info=Moins d'informations
error_close=Fermer
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (identifiant de compilation : {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Message : {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Pile : {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Fichier : {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Ligne : {{line}}
rendering_error=Une erreur s'est produite lors de l'affichage de la page.
# Predefined zoom values
page_scale_width=Pleine largeur
page_scale_fit=Page entière
page_scale_auto=Zoom automatique
page_scale_actual=Taille réelle
# Loading indicator messages
loading_error_indicator=Erreur
loading_error=Une erreur s'est produite lors du chargement du fichier PDF.
invalid_file_error=Fichier PDF invalide ou corrompu.
missing_file_error=Fichier PDF manquant.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[Annotation {{type}}]
-request_password=Le PDF est protégé par un mot de passe :
+text_annotation_type.alt=[Annotation {{type}}]
+password_label=Veuillez saisir le mot de passe pour ouvrir ce fichier PDF.
+password_invalid=Mot de passe incorrect. Veuillez réessayer.
+password_ok=OK
+password_cancel=Annuler
printing_not_supported=Attention : l'impression n'est pas totalement prise en charge par ce navigateur.
printing_not_ready=Attention : le PDF n'est pas entièrement chargé pour pouvoir l'imprimer.
web_fonts_disabled=Les polices web sont désactivées : impossible d'utiliser les polices intégrées au PDF.
+document_colors_disabled=Les documents PDF ne peuvent pas utiliser leurs propres couleurs : « Autoriser les pages web à utiliser leurs propres couleurs » est désactivé dans le navigateur.
diff --git a/lib/viewers/pdf/locale/fy-NL/viewer.properties b/lib/viewers/pdf/locale/fy-NL/viewer.properties
new file mode 100644
index 0000000..8110e86
--- /dev/null
+++ b/lib/viewers/pdf/locale/fy-NL/viewer.properties
@@ -0,0 +1,169 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Foarige side
+previous_label=Foarige
+next.title=Folgjende side
+next_label=Folgjende
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=side:
+page_of=fan {{pageCount}}
+
+zoom_out.title=Utzoome
+zoom_out_label=Utzoome
+zoom_in.title=Ynzoome
+zoom_in_label=Ynzoome
+zoom.title=Zoome
+print.title=Ofdrukke
+print_label=Ofdrukke
+presentation_mode.title=Wikselje nei presintaasjemoadus
+presentation_mode_label=Presintaasjemoadus
+open_file.title=Bestân iepenje
+open_file_label=Iepenje
+download.title=Ynlade
+download_label=Ynlade
+bookmark.title=Aktuele finster (kopiearje of iepenje yn nij finster)
+bookmark_label=Aktuele finster
+
+# Secondary toolbar and context menu
+tools.title=Ark
+tools_label=Ark
+first_page.title=Gean nei earste side
+first_page.label=Gean nei earste side
+first_page_label=Gean nei earste side
+last_page.title=Gean nei lêste side
+last_page.label=Gean nei lêste side
+last_page_label=Gean nei lêste v
+page_rotate_cw.title=Rjochtsom draaie
+page_rotate_cw.label=Rjochtsom draaie
+page_rotate_cw_label=Rjochtsom draaie
+page_rotate_ccw.title=Linksom draaie
+page_rotate_ccw.label=Linksom draaie
+page_rotate_ccw_label=Linksom draaie
+
+hand_tool_enable.title=Hânark ynskeakelje
+hand_tool_enable_label=Hânark ynskeakelje
+hand_tool_disable.title=Hânark úyskeakelje
+hand_tool_disable_label=Hânark úyskeakelje
+
+# Document properties dialog box
+document_properties.title=Dokuminteigenskippen…
+document_properties_label=Dokuminteigenskippen…
+document_properties_file_name=Bestânsnamme:
+document_properties_file_size=Bestânsgrutte:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Titel:
+document_properties_author=Auteur:
+document_properties_subject=Underwerp:
+document_properties_keywords=Kaaiwurden:
+document_properties_creation_date=Oanmaakdatum:
+document_properties_modification_date=Bewurkingsdatum:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Makker:
+document_properties_producer=PDF-makker:
+document_properties_version=PDF-ferzje:
+document_properties_page_count=Siden:
+document_properties_close=Slute
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Sidebalke yn-/útskeakelje
+toggle_sidebar_label=Sidebalke yn-/útskeakelje
+outline.title=Dokumint ynhâldsopjefte toane
+outline_label=Dokumint ynhâldsopjefte
+attachments.title=Bylagen toane
+attachments_label=Bylagen
+thumbs.title=Foarbylden toane
+thumbs_label=Foarbylden
+findbar.title=Sykje yn dokumint
+findbar_label=Sykje
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Side {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Foarbyld fan side {{page}}
+
+# Context menu
+first_page.label=Nei earste side gean
+last_page.label=Nei lêste side gean
+page_rotate_cw.label=Rjochtsom draaie
+page_rotate_ccw.label=Linksom draaie
+
+# Find panel button title and messages
+find_label=Sykje:
+find_previous.title=It foarige foarkommen fan de tekst sykje
+find_previous_label=Foarige
+find_next.title=It folgjende foarkommen fan de tekst sykje
+find_next_label=Folgjende
+find_highlight=Alles markearje
+find_match_case_label=Haadlettergefoelich
+find_reached_top=Boppekant fan dokumint berikt, trochgien fanôf ûnderkant
+find_reached_bottom=Ein fan dokumint berikt, trochgien fanôf boppekant
+find_not_found=Tekst net fûn
+
+# Error panel labels
+error_more_info=Mear ynformaasje
+error_less_info=Minder ynformaasje
+error_close=Slute
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Berjocht: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Bestân: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Rigel: {{line}}
+rendering_error=Der is in flater bard by it renderjen fan de side.
+
+# Predefined zoom values
+page_scale_width=Sidebreedte
+page_scale_fit=Hiele side
+page_scale_auto=Automatysk zoome
+page_scale_actual=Wurklike grutte
+
+# Loading indicator messages
+loading_error_indicator=Flater
+loading_error=Der is in flater bard by it laden fan de PDF.
+invalid_file_error=Ynfalide of korruptearre PDF-bestân.
+missing_file_error=PDF-bestân ûntbrekt.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=Jou it wachtwurd om dit PDF-bestân te iepenjen.
+password_invalid=Ferkeard wachtwurd. Probearje opnij.
+password_ok=OK
+password_cancel=Annulearje
+
+printing_not_supported=Warning: Printing is net folslein stipe troch dizze browser.
+printing_not_ready=Warning: PDF is net folslein laden om ôf te drukken.
+web_fonts_disabled=Weblettertypen binne útskeakele: gebrûk fan ynsluten PDF-lettertypen is net mooglik.
+document_colors_disabled=PDF-dokuminten binne net tastien om har eigen kleuren te brûken: \'Siden tastean har eigen kleuren te kiezen\' is útskeakele yn de browser.
diff --git a/lib/viewers/pdf/locale/ga-IE/viewer.properties b/lib/viewers/pdf/locale/ga-IE/viewer.properties
new file mode 100644
index 0000000..66c4876
--- /dev/null
+++ b/lib/viewers/pdf/locale/ga-IE/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=An Leathanach Roimhe Seo
+previous_label=Roimhe Seo
+next.title=An Chéad Leathanach Eile
+next_label=Ar Aghaidh
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Leathanach:
+page_of=as {{pageCount}}
+
+zoom_out.title=Súmáil Amach
+zoom_out_label=Súmáil Amach
+zoom_in.title=Súmáil Isteach
+zoom_in_label=Súmáil Isteach
+zoom.title=Súmáil
+presentation_mode.title=Úsáid an Mód Láithreoireachta
+presentation_mode_label=Mód Láithreoireachta
+open_file.title=Oscail Comhad
+open_file_label=Oscail
+print.title=Priontáil
+print_label=Priontáil
+download.title=Íosluchtaigh
+download_label=Íosluchtaigh
+bookmark.title=An t-amharc reatha (cóipeáil nó oscail i bhfuinneog nua)
+bookmark_label=An tAmharc Reatha
+
+# Secondary toolbar and context menu
+tools.title=Uirlisí
+tools_label=Uirlisí
+first_page.title=Go dtí an chéad leathanach
+first_page.label=Go dtí an chéad leathanach
+first_page_label=Go dtí an chéad leathanach
+last_page.title=Go dtí an leathanach deiridh
+last_page.label=Go dtí an leathanach deiridh
+last_page_label=Go dtí an leathanach deiridh
+page_rotate_cw.title=Rothlaigh ar deiseal
+page_rotate_cw.label=Rothlaigh ar deiseal
+page_rotate_cw_label=Rothlaigh ar deiseal
+page_rotate_ccw.title=Rothlaigh ar tuathal
+page_rotate_ccw.label=Rothlaigh ar tuathal
+page_rotate_ccw_label=Rothlaigh ar tuathal
+
+hand_tool_enable.title=Cumasaigh uirlis láimhe
+hand_tool_enable_label=Cumasaigh uirlis láimhe
+hand_tool_disable.title=Díchumasaigh uirlis láimhe
+hand_tool_disable_label=Díchumasaigh uirlis láimhe
+
+# Document properties dialog box
+document_properties.title=Airíonna na Cáipéise…
+document_properties_label=Airíonna na Cáipéise…
+document_properties_file_name=Ainm an chomhaid:
+document_properties_file_size=Méid an chomhaid:
+document_properties_kb={{size_kb}} kB ({{size_b}} beart)
+document_properties_mb={{size_mb}} MB ({{size_b}} beart)
+document_properties_title=Teideal:
+document_properties_author=Údar:
+document_properties_subject=Ábhar:
+document_properties_keywords=Eochairfhocail:
+document_properties_creation_date=Dáta Cruthaithe:
+document_properties_modification_date=Dáta Athraithe:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Cruthaitheoir:
+document_properties_producer=Cruthaitheoir an PDF:
+document_properties_version=Leagan PDF:
+document_properties_page_count=Líon Leathanach:
+document_properties_close=Dún
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Scoránaigh an Barra Taoibh
+toggle_sidebar_label=Scoránaigh an Barra Taoibh
+outline.title=Taispeáin Creatlach na Cáipéise
+outline_label=Creatlach na Cáipéise
+attachments.title=Taispeáin Iatáin
+attachments_label=Iatáin
+thumbs.title=Taispeáin Mionsamhlacha
+thumbs_label=Mionsamhlacha
+findbar.title=Aimsigh sa Cháipéis
+findbar_label=Aimsigh
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Leathanach {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Mionsamhail Leathanaigh {{page}}
+
+# Find panel button title and messages
+find_label=Aimsigh:
+find_previous.title=Aimsigh an sampla roimhe seo den nath seo
+find_previous_label=Roimhe seo
+find_next.title=Aimsigh an chéad sampla eile den nath sin
+find_next_label=Ar aghaidh
+find_highlight=Aibhsigh uile
+find_match_case_label=Cásíogair
+find_reached_top=Ag barr na cáipéise, ag leanúint ón mbun
+find_reached_bottom=Ag bun na cáipéise, ag leanúint ón mbarr
+find_not_found=Abairtín gan aimsiú
+
+# Error panel labels
+error_more_info=Tuilleadh Eolais
+error_less_info=Níos Lú Eolais
+error_close=Dún
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Teachtaireacht: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Cruach: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Comhad: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Líne: {{line}}
+rendering_error=Tharla earráid agus an leathanach á leagan amach.
+
+# Predefined zoom values
+page_scale_width=Leithead Leathanaigh
+page_scale_fit=Laghdaigh go dtí an Leathanach
+page_scale_auto=Súmáil Uathoibríoch
+page_scale_actual=Fíormhéid
+
+# Loading indicator messages
+loading_error_indicator=Earráid
+loading_error=Tharla earráid agus an cháipéis PDF á luchtú.
+invalid_file_error=Comhad neamhbhailí nó truaillithe PDF.
+missing_file_error=Comhad PDF ar iarraidh.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anótáil {{type}}]
+password_label=Cuir an focal faire isteach chun an comhad PDF seo a oscailt.
+password_invalid=Focal faire mícheart. Déan iarracht eile.
+password_ok=OK
+password_cancel=Cealaigh
+
+printing_not_supported=Rabhadh: Ní thacaíonn an brabhsálaí le priontáil go hiomlán.
+printing_not_ready=Rabhadh: Ní féidir an PDF a phriontáil go dtí go mbeidh an cháipéis iomlán luchtaithe.
+web_fonts_disabled=Tá clófhoirne Gréasáin díchumasaithe: ní féidir clófhoirne leabaithe PDF a úsáid.
+document_colors_disabled=Níl cead ag cáipéisí PDF a ndathanna féin a roghnú; tá 'Tabhair cead do leathanaigh a ndathanna féin a roghnú' díchumasaithe sa mbrabhsálaí.
diff --git a/lib/viewers/pdf/locale/gd/viewer.properties b/lib/viewers/pdf/locale/gd/viewer.properties
new file mode 100644
index 0000000..f535f06
--- /dev/null
+++ b/lib/viewers/pdf/locale/gd/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=An duilleag roimhe
+previous_label=Air ais
+next.title=An ath-dhuilleag
+next_label=Air adhart
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Duilleag:
+page_of=à {{pageCount}}
+
+zoom_out.title=Sùm a-mach
+zoom_out_label=Sùm a-mach
+zoom_in.title=Sùm a-steach
+zoom_in_label=Sùm a-steach
+zoom.title=Sùm
+presentation_mode.title=Gearr leum dhan mhodh taisbeanaidh
+presentation_mode_label=Am modh taisbeanaidh
+open_file.title=Fosgail faidhle
+open_file_label=Fosgail
+print.title=Clò-bhuail
+print_label=Clò-bhuail
+download.title=Luchdaich a-nuas
+download_label=Luchdaich a-nuas
+bookmark.title=An sealladh làithreach (dèan lethbhreac no fosgail e ann an uinneag ùr)
+bookmark_label=An sealladh làithreach
+
+# Secondary toolbar and context menu
+tools.title=Innealan
+tools_label=Innealan
+first_page.title=Rach gun chiad duilleag
+first_page.label=Rach gun chiad duilleag
+first_page_label=Rach gun chiad duilleag
+last_page.title=Rach gun duilleag mu dheireadh
+last_page.label=Rach gun duilleag mu dheireadh
+last_page_label=Rach gun duilleag mu dheireadh
+page_rotate_cw.title=Cuairtich gu deiseil
+page_rotate_cw.label=Cuairtich gu deiseil
+page_rotate_cw_label=Cuairtich gu deiseil
+page_rotate_ccw.title=Cuairtich gu tuathail
+page_rotate_ccw.label=Cuairtich gu tuathail
+page_rotate_ccw_label=Cuairtich gu tuathail
+
+hand_tool_enable.title=Cuir inneal na làimhe an comas
+hand_tool_enable_label=Cuir inneal na làimhe an comas
+hand_tool_disable.title=Cuir inneal na làimhe à comas
+hand_tool_disable_label=Cuir à comas inneal na làimhe
+
+# Document properties dialog box
+document_properties.title=Roghainnean na sgrìobhainne…
+document_properties_label=Roghainnean na sgrìobhainne…
+document_properties_file_name=Ainm an fhaidhle:
+document_properties_file_size=Meud an fhaidhle:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Tiotal:
+document_properties_author=Ùghdar:
+document_properties_subject=Cuspair:
+document_properties_keywords=Faclan-luirg:
+document_properties_creation_date=Latha a chruthachaidh:
+document_properties_modification_date=Latha atharrachaidh:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Cruthadair:
+document_properties_producer=Saothraiche a' PDF:
+document_properties_version=Tionndadh a' PDF:
+document_properties_page_count=Àireamh de dhuilleagan:
+document_properties_close=Dùin
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Toglaich am bàr-taoibh
+toggle_sidebar_label=Toglaich am bàr-taoibh
+outline.title=Seall an sgrìobhainn far loidhne
+outline_label=Oir-loidhne na sgrìobhainne
+attachments.title=Seall na ceanglachain
+attachments_label=Ceanglachain
+thumbs.title=Seall na dealbhagan
+thumbs_label=Dealbhagan
+findbar.title=Lorg san sgrìobhainn
+findbar_label=Lorg
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Duilleag a {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Dealbhag duilleag a {{page}}
+
+# Find panel button title and messages
+find_label=Lorg:
+find_previous.title=Lorg làthair roimhe na h-abairt seo
+find_previous_label=Air ais
+find_next.title=Lorg ath-làthair na h-abairt seo
+find_next_label=Air adhart
+find_highlight=Soillsich a h-uile
+find_match_case_label=Aire do litrichean mòra is beaga
+find_reached_top=Ràinig sinn barr na duilleige, a' leantainn air adhart o bhonn na duilleige
+find_reached_bottom=Ràinig sinn bonn na duilleige, a' leantainn air adhart o bharr na duilleige
+find_not_found=Cha deach an abairt a lorg
+
+# Error panel labels
+error_more_info=Barrachd fiosrachaidh
+error_less_info=Nas lugha de dh'fhiosrachadh
+error_close=Dùin
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Teachdaireachd: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stac: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Faidhle: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Loidhne: {{line}}
+rendering_error=Thachair mearachd rè reandaradh na duilleige.
+
+# Predefined zoom values
+page_scale_width=Leud na duilleige
+page_scale_fit=Freagair ri meud na duilleige
+page_scale_auto=Sùm fèin-obrachail
+page_scale_actual=Am fìor-mheud
+
+# Loading indicator messages
+loading_error_indicator=Mearachd
+loading_error=Thachair mearachd rè luchdadh a' PDF.
+invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte.
+missing_file_error=Faidhle PDF a tha a dhìth.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Nòtachadh {{type}}]
+password_label=Cuir a-steach am facal-faire gus am faidhle PDF seo fhosgladh.
+password_invalid=Tha am facal-faire cearr. Nach fheuch thu ris a-rithist?
+password_ok=Ceart ma-tha
+password_cancel=Sguir dheth
+
+printing_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur làn-taic ri clò-bhualadh.
+printing_not_ready=Rabhadh: Cha deach am PDF a luchdadh gu tur airson clò-bhualadh.
+web_fonts_disabled=Tha cruthan-clò lìn à comas: Chan urrainn dhuinn cruthan-clò PDF leabaichte a chleachdadh.
+document_colors_disabled=Chan fhaod sgrìobhainnean PDF na dathan aca fhèin a chleachdadh: Tha "Leig le duilleagan na dathan aca fhèin a chleachdadh" à comas sa bhrabhsair.
diff --git a/lib/viewers/pdf/locale/es/viewer.properties b/lib/viewers/pdf/locale/gl/viewer.properties
similarity index 51%
rename from lib/viewers/pdf/locale/es/viewer.properties
rename to lib/viewers/pdf/locale/gl/viewer.properties
index 059eed6..08729fe 100644
--- a/lib/viewers/pdf/locale/es/viewer.properties
+++ b/lib/viewers/pdf/locale/gl/viewer.properties
@@ -1,123 +1,124 @@
-# Copyright 2012 Mozilla Foundation
+# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
-previous.title=Página anterior
+previous.title=Páxina anterior
previous_label=Anterior
-next.title=Página siguiente
-next_label=Siguiente
+next.title=Seguinte páxina
+next_label=Seguinte
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
-page_label=Página:
+page_label=Páxina:
page_of=de {{pageCount}}
zoom_out.title=Reducir
zoom_out_label=Reducir
-zoom_in.title=Aumentar
-zoom_in_label=Aumentar
-zoom.title=Ampliación
+zoom_in.title=Ampliar
+zoom_in_label=Ampliar
+zoom.title=Zoom
print.title=Imprimir
print_label=Imprimir
-presentation_mode.title=Cambiar al modo de presentación
-presentation_mode_label=Modo de presentación
-open_file.title=Abrir un archivo
+presentation_mode.title=Cambiar ao modo presentación
+presentation_mode_label=Modo presentación
+open_file.title=Abrir ficheiro
open_file_label=Abrir
download.title=Descargar
download_label=Descargar
-bookmark.title=Vista actual (copie o abra en una ventana nueva)
+bookmark.title=Vista actual (copiar ou abrir nunha nova xanela)
bookmark_label=Vista actual
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Mostrar u ocultar la barra lateral
-toggle_sidebar_label=Conmutar la barra lateral
-outline.title=Mostrar el esquema del documento
-outline_label=Esquema del documento
-thumbs.title=Mostrar las miniaturas
+toggle_sidebar.title=Amosar/agochar a barra lateral
+toggle_sidebar_label=Amosar/agochar a barra lateral
+outline.title=Amosar esquema do documento
+outline_label=Esquema do documento
+thumbs.title=Amosar miniaturas
thumbs_label=Miniaturas
-findbar.title=Buscar en el documento
-findbar_label=Buscar
+findbar.title=Atopar no documento
+findbar_label=Atopar
+
+# Document outline messages
+no_outline=Ningún esquema dispoñíbel
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
-thumb_page_title=Página {{page}}
+thumb_page_title=Páxina {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=Miniatura de la página {{page}}
+thumb_page_canvas=Miniatura da páxina {{page}}
# Context menu
-first_page.label=Ir a la primera página
-last_page.label=Ir a la última página
-page_rotate_cw.label=Girar a la derecha
-page_rotate_ccw.label=Girar a la izquierda
+first_page.label=Ir á primeira páxina
+last_page.label=Ir á última páxina
+page_rotate_cw.label=Rotar no sentido das agullas do reloxo
+page_rotate_ccw.label=Rotar no sentido contrario ás agullas do reloxo
# Find panel button title and messages
-find_label=Buscar:
-find_previous.title=Ir a la frase encontrada anterior
+find_label=Atopar:
+find_previous.title=Atopar a anterior aparición da frase
find_previous_label=Anterior
-find_next.title=Ir a la frase encontrada siguiente
-find_next_label=Siguiente
-find_highlight=Resaltar todo
-find_match_case_label=Coincidir mayúsculas y minúsculas
-find_reached_top=Se alcanzó el inicio del documento, se continúa desde el final
-find_reached_bottom=Se alcanzó el final del documento, se continúa desde el inicio
-find_not_found=No se encontró la frase
+find_next.title=Atopar a seguinte aparición da frase
+find_next_label=Seguinte
+find_highlight=Realzar todo
+find_match_case_label=Diferenciar maiúsculas de minúsculas
+find_reached_top=Chegouse ao inicio do documento, continuar desde o final
+find_reached_bottom=Chegouse ao final do documento, continuar desde o inicio
+find_not_found=Non se atopou a frase
# Error panel labels
-error_more_info=Más información
+error_more_info=Máis información
error_less_info=Menos información
-error_close=Cerrar
+error_close=Pechar
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (compilación: {{build}})
+error_version_info=PDF.js v{{version}} (Identificador da compilación: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
-error_message=Mensaje: {{message}}
+error_message=Mensaxe: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Pila: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
-error_file=Archivo: {{file}}
+error_file=Ficheiro: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=Línea: {{line}}
-rendering_error=Ocurrió un error al renderizar la página.
+error_line=Liña: {{line}}
+rendering_error=Produciuse un erro ao representar a páxina.
# Predefined zoom values
-page_scale_width=Anchura de la página
-page_scale_fit=Ajustar a la página
-page_scale_auto=Ampliación automática
-page_scale_actual=Tamaño real
+page_scale_width=Largura da páxina
+page_scale_fit=Axuste de páxina
+page_scale_auto=Zoom automático
+page_scale_actual=Tamaño actual
# Loading indicator messages
-loading_error_indicator=Error
-loading_error=Ocurrió un error al cargar el PDF.
-invalid_file_error=El archivo PDF no es válido o está dañado.
-missing_file_error=Falta el archivo PDF.
+loading_error_indicator=Erro
+loading_error=Produciuse un erro ao cargar o PDF.
+invalid_file_error=Ficheiro PDF danado ou incorrecto.
+missing_file_error=Falta o ficheiro PDF.
# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type=[Anotación {{type}}]
-request_password=El archivo PDF está protegido por una contraseña:
+request_password=O PDF está protexido por un contrasinal:
-printing_not_supported=Aviso: Este navegador no es compatible completamente con la impresión.
-printing_not_ready=Aviso: El PDF no se ha cargado completamente para su impresión.
-web_fonts_disabled=Se han desactivado los tipos de letra web: no se pueden usar los tipos de letra incrustados en el PDF.
-web_colors_disabled=Se han desactivado los colores web.
+printing_not_supported=Aviso: A impresión non é compatíbel de todo con este navegador.
+web_fonts_disabled=Desactiváronse as fontes web: foi imposíbel usar as fontes incrustadas no PDF.
diff --git a/lib/viewers/pdf/locale/gu-IN/viewer.properties b/lib/viewers/pdf/locale/gu-IN/viewer.properties
new file mode 100644
index 0000000..0ad91f0
--- /dev/null
+++ b/lib/viewers/pdf/locale/gu-IN/viewer.properties
@@ -0,0 +1,108 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=પહેલાનુ પાનું
+previous_label=પહેલાનુ
+next.title=આગળનુ પાનું
+ next_label=આગળનું
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=પાનું:
+page_of={{pageCount}} નું
+zoom_out.title=મોટુ કરો
+zoom_out_label=મોટુ કરો
+zoom_in.title=નાનું કરો
+zoom_in_label=નાનું કરો
+zoom.title=નાનું મોટુ કરો
+print.title=છાપો
+print_label=છારો
+open_file.title=ફાઇલ ખોલો
+open_file_label=ખોલો
+download.title=ડાઉનલોડ
+download_label=ડાઉનલોડ
+bookmark.title=વર્તમાન દૃશ્ય (નવી વિન્ડોમાં નકલ કરો અથવા ખોલો)
+bookmark_label=વર્તમાન દૃશ્ય
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+outline.title=દસ્તાવેજ રૂપરેખા બતાવો
+outline_label=દસ્તાવેજ રૂપરેખા
+thumbs.title=થંબનેલ્સ બતાવો
+thumbs_label=થંબનેલ્સ
+
+# Document outline messages
+
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=પાનું {{page}}
+
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=પાનાં {{page}} નું થંબનેલ્સ
+# Error panel labels
+error_more_info=વધારે જાણકારી
+error_less_info=ઓછી જાણકારી
+error_close=બંધ કરો
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=સંદેશો: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=સ્ટેક: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ફાઇલ: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=વાક્ય: {{line}}
+rendering_error=ભૂલ ઉદ્ભવી જ્યારે પાનાંનુ રેન્ડ કરી રહ્યા હોય.
+# Predefined zoom values
+page_scale_width=પાનાની પહોળાઇ
+page_scale_fit=પાનું બંધબેસતુ
+page_scale_auto=આપમેળે નાનુંમોટુ કરો
+page_scale_actual=ચોક્કસ માપ
+# Loading indicator messages
+# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
+
+loading_error_indicator=ભૂલ
+loading_error=ભૂલ ઉદ્ભવી જ્યારે PDF ને લાવી રહ્યા હોય.
+# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# "{{[type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+
+printing_not_supported=ચેતવણી: છાપવાનું આ બ્રાઉઝર દ્દારા સંપૂર્ણપણે આધારભૂત નથી.
+
+error_version_info=PDF.js v{{version}} (build: {{build}})
+find_highlight=બધુ પ્રકાશિત કરો
+find_label=શોધો:
+find_match_case_label=કેસ બંધબેસાડો
+find_next.title=શબ્દસમૂહની આગળની ઘટનાને શોધો
+find_next_label=આગળનું
+find_not_found=શબ્દસમૂહ મળ્યુ નથી
+find_previous.title=શબ્દસમૂહની પાછલી ઘટનાને શોધો
+find_previous_label=પહેલાંનુ
+find_reached_bottom=દસ્તાવેજનાં અંતે પહોંચી ગયા, ઉપરથી ચાલુ કરેલ હતુ
+find_reached_top=દસ્તાવેજનાં ટોચે પહોંચી ગયા, તળિયેથી ચાલુ કરેલ હતુ
+findbar.title=દસ્તાવેજમાં શોધો
+findbar_label=શોધો
+first_page.label=પહેલાં પાનામાં જાવ
+invalid_file_error=અયોગ્ય અથવા ભાંગેલ PDF ફાઇલ.
+last_page.label=છેલ્લા પાનામાં જાવ
+missing_file_error=ગુમ થયેલ PDF ફાઇલ.
+page_rotate_ccw.label=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો
+page_rotate_cw.label=ઘડિયાળનાં કાંટાની જેમ ફેરવો
+presentation_mode.title=રજૂઆત સ્થિતિમાં જાવ
+presentation_mode_label=રજૂઆત સ્થિતિ
+printing_not_ready=Warning: PDF એ છાપવા માટે સંપૂર્ણપણે લાવેલ છે.
+toggle_sidebar.title=ટૉગલ બાજુપટ્ટી
+toggle_sidebar_label=ટૉગલ બાજુપટ્ટી
+web_fonts_disabled=વેબ ફોન્ટ નિષ્ક્રિય થયેલ છે: ઍમ્બેડ થયેલ PDF ફોન્ટને વાપરવાનું અસમર્થ.
+document_colors_disabled=PDF દસ્તાવેજો તેનાં પોતાના રંગોને વાપરવા પરવાનગી આપતા નથી: \'તેનાં પોતાનાં રંગોને પસંદ કરવા માટે પાનાંને પરવાનગી આપો\' બ્રાઉઝરમાં નિષ્ક્રિય થયેલ છે.
+text_annotation_type.alt=[{{type}} Annotation]
diff --git a/lib/viewers/pdf/locale/he/metadata.inc b/lib/viewers/pdf/locale/he/metadata.inc
deleted file mode 100644
index 3493c0b..0000000
--- a/lib/viewers/pdf/locale/he/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>he</em:locale>
- <em:name>קורא PDF</em:name>
- <em:description>הצגת קבצי PDF ישירות ב־Firefox באמצעות HTML5.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/he/viewer.properties b/lib/viewers/pdf/locale/he/viewer.properties
index ca3741c..078d401 100644
--- a/lib/viewers/pdf/locale/he/viewer.properties
+++ b/lib/viewers/pdf/locale/he/viewer.properties
@@ -1,59 +1,150 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-bookmark.title=דף נוכחי (העתקה או פתיחה בחלון חדש)
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Main toolbar buttons (tooltips and alt text for images)
previous.title=דף קודם
+previous_label=קודם
next.title=דף הבא
-print.title=הדפסה
-download.title=הורדה
+next_label=הבא
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=עמוד:
+page_of=מתוך {{pageCount}}
+
zoom_out.title=התרחקות
+zoom_out_label=התרחקות
zoom_in.title=התקרבות
-error_more_info=יותר מידע
+zoom_in_label=התקרבות
+zoom.title=מרחק מתצוגה
+presentation_mode.title=מעבר למצב מצגת
+presentation_mode_label=מצב מצגת
+open_file.title=פתיחת קובץ
+open_file_label=פתיחה
+print.title=הדפסה
+print_label=הדפסה
+download.title=הורדה
+download_label=הורדה
+bookmark.title=תצוגה נוכחית (העתקה או פתיחה בחלון חדש)
+bookmark_label=תצוגה נוכחית
+
+# Secondary toolbar and context menu
+tools.title=כלים
+tools_label=כלים
+first_page.title=מעבר לעמוד הראשון
+first_page.label=מעבר לעמוד הראשון
+first_page_label=מעבר לעמוד הראשון
+last_page.title=מעבר לעמוד האחרון
+last_page.label=מעבר לעמוד האחרון
+last_page_label=מעבר לעמוד האחרון
+page_rotate_cw.title=הטיה עם כיוון השעון
+page_rotate_cw.label=הטיה עם כיוון השעון
+page_rotate_cw_label=הטיה עם כיוון השעון
+page_rotate_ccw.title=הטיה כנגד כיוון השעון
+page_rotate_ccw.label=הטיה כנגד כיוון השעון
+page_rotate_ccw_label=הטיה כנגד כיוון השעון
+
+hand_tool_enable.title=הפעלת כלי היד
+hand_tool_enable_label=הפעלת כלי היד
+hand_tool_disable.title=נטרול כלי היד
+hand_tool_disable_label=נטרול כלי היד
+
+# Document properties dialog box
+document_properties.title=מאפייני מסמך…
+document_properties_label=מאפייני מסמך…
+document_properties_file_name=שם קובץ:
+document_properties_file_size=גודל הקובץ:
+document_properties_kb={{size_kb}} ק״ב ({{size_b}} בתים)
+document_properties_mb={{size_mb}} מ״ב ({{size_b}} בתים)
+document_properties_title=כותרת:
+document_properties_author=מחבר:
+document_properties_subject=נושא:
+document_properties_keywords=מילות מפתח:
+document_properties_creation_date=תאריך יצירה:
+document_properties_modification_date=תאריך שינוי:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=יוצר:
+document_properties_producer=יצרן PDF:
+document_properties_version=גרסת PDF:
+document_properties_page_count=מספר דפים:
+document_properties_close=סגירה
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=הצגה/הסתרה של סרגל הצד
+toggle_sidebar_label=הצגה/הסתרה של סרגל הצד
+outline.title=הצגת מתאר מסמך
+outline_label=מתאר מסמך
+thumbs.title=הצגת תצוגה מקדימה
+thumbs_label=תצוגה מקדימה
+findbar.title=חיפוש במסמך
+findbar_label=חיפוש
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=עמוד {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=תצוגה מקדימה של עמוד {{page}}
+
+# Find panel button title and messages
+find_label=חיפוש:
+find_previous.title=חיפוש מופע קודם של הביטוי
+find_previous_label=קודם
+find_next.title=חיפוש המופע הבא של הביטוי
+find_next_label=הבא
+find_highlight=הדגשת הכול
+find_match_case_label=התאמת אותיות
+find_reached_top=הגיע לראש הדף, ממשיך מלמטה
+find_reached_bottom=הגיע לסוף הדף, ממשיך מלמעלה
+find_not_found=ביטוי לא נמצא
+
+# Error panel labels
+error_more_info=מידע נוסף
error_less_info=פחות מידע
error_close=סגירה
-error_build=בניית PDF.JS‏: {{build}}
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js גרסה {{version}} (בנייה: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
error_message=הודעה: {{message}}
-error_stack=מחסנית: {{stack}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=תוכן מחסנית: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=קובץ: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=שורה: {{line}}
-page_scale_width=רוחב דף
-page_scale_fit=גודל דף
-page_scale_auto=התקרבות אוטומטית
-page_scale_actual=גודל אמיתי
-toggle_slider.title=מתג החלקה
-thumbs.title=הצגת תמונות ממוזערות
-outline.title=הצגת מתאר מסמך
-loading=בטעינה... {{percent}}%
-loading_error_indicator=שגיאה
-loading_error=אירעה שגיאה בעת טעינת קובץ PDF.
rendering_error=אירעה שגיאה בעת עיבוד הדף.
-page_label=דף:
-page_of=מתוך {{pageCount}}
-open_file.title=פתיחת קובץ
-text_annotation_type=[{{type}} Annotation]
-toggle_slider_label=מתג החלקה
-thumbs_label=תמונות ממוזערות
-outline_label=מתאר מסמך
-bookmark_label=תצוגה נוכחית
-previous_label=קודם
-next_label=הבא
-print_label=הדפסה
-download_label=הורדה
-zoom_out_label=התרחקות
-zoom_in_label=התקרבות
-zoom.title=מרחק מתצוגה
-thumb_page_title=דף {{page}}
-thumb_page_canvas=תמונה ממוזערת של דף {{page}}
-request_password=קובץ PDF מוגן בססמה:
-open_file_label=פתיחה
+
+# Predefined zoom values
+page_scale_width=רוחב העמוד
+page_scale_fit=התאמה לעמוד
+page_scale_auto=מרחק מתצוגה אוטומטי
+page_scale_actual=גודל אמתי
+
+# Loading indicator messages
+loading_error_indicator=שגיאה
+loading_error=אירעה שגיאה בעת טעינת ה־PDF.
+invalid_file_error=קובץ PDF פגום או לא תקין.
+missing_file_error=קובץ PDF חסר.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[הערת {{type}}]
+password_label=נא להכניס את הססמה לפתיחת קובץ PDF זה.
+password_invalid=ססמה שגויה. נא לנסות שנית.
+password_ok=אישור
+password_cancel=ביטול
+
+printing_not_supported=אזהרה: הדפסה אינה נתמכת במלואה בדפדפן זה.
+printing_not_ready=אזהרה: ה־PDF לא ניתן לחלוטין עד מצב שמאפשר הדפסה.
+web_fonts_disabled=גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים.
+document_colors_disabled=מסמכי PDF לא יכולים להשתמש בצבעים משלהם: האפשרות \\'לאפשר לעמודים לבחור צבעים משלהם\\' אינה פעילה בדפדפן.
\ No newline at end of file
diff --git a/lib/viewers/pdf/locale/hi-IN/viewer.properties b/lib/viewers/pdf/locale/hi-IN/viewer.properties
new file mode 100644
index 0000000..6ab2e7e
--- /dev/null
+++ b/lib/viewers/pdf/locale/hi-IN/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=पिछला पृष्ठ
+previous_label=पिछला
+next.title=अगला पृष्ठ
+next_label=आगे
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=पृष्ठ:
+page_of={{pageCount}} का
+
+zoom_out.title=छोटा करें
+zoom_out_label=छोटा करें
+zoom_in.title=बड़ा करें
+zoom_in_label=बड़ा करें
+zoom.title=बड़ा-छोटा करें
+presentation_mode.title=प्रस्तुति अवस्था में जाएँ
+presentation_mode_label=प्रस्तुति अवस्था
+open_file.title=फ़ाइल खोलें
+open_file_label=खोलें
+print.title=छापें
+print_label=छापें
+download.title=डाउनलोड
+download_label=डाउनलोड
+bookmark.title=मौजूदा दृश्य (नए विंडो में नक़ल लें या खोलें)
+bookmark_label=मौजूदा दृश्य
+
+# Secondary toolbar and context menu
+tools.title=औज़ार
+tools_label=औज़ार
+first_page.title=प्रथम पृष्ठ पर जाएँ
+first_page.label=प्रथम पृष्ठ पर जाएँ
+first_page_label=प्रथम पृष्ठ पर जाएँ
+last_page.title=अंतिम पृष्ठ पर जाएँ
+last_page.label=अंतिम पृष्ठ पर जाएँ
+last_page_label=अंतिम पृष्ठ पर जाएँ
+page_rotate_cw.title=घड़ी की दिशा में घुमाएँ
+page_rotate_cw.label=घड़ी की दिशा में घुमाएँ
+page_rotate_cw_label=घड़ी की दिशा में घुमाएँ
+page_rotate_ccw.title=घड़ी की दिशा से उल्टा घुमाएँ
+page_rotate_ccw.label=घड़ी की दिशा से उल्टा घुमाएँ
+page_rotate_ccw_label=घड़ी की दिशा से उल्टा घुमाएँ
+
+hand_tool_enable.title=हाथ औजार सक्रिय करें
+hand_tool_enable_label=हाथ औजार सक्रिय करें
+hand_tool_disable.title=हाथ औजार निष्क्रिय करना
+hand_tool_disable_label=हाथ औजार निष्क्रिय करना
+
+# Document properties dialog box
+document_properties.title=दस्तावेज़ विशेषता...
+document_properties_label=दस्तावेज़ विशेषता...
+document_properties_file_name=फ़ाइल नाम:
+document_properties_file_size=फाइल आकारः
+document_properties_kb={{size_kb}} KB ({{size_b}} बाइट)
+document_properties_mb={{size_mb}} MB ({{size_b}} बाइट)
+document_properties_title=शीर्षक:
+document_properties_author=लेखकः
+document_properties_subject=विषय:
+document_properties_keywords=कुंजी-शब्द:
+document_properties_creation_date=निर्माण दिनांक:
+document_properties_modification_date=संशोधन दिनांक:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=निर्माता:
+document_properties_producer=PDF उत्पादक:
+document_properties_version=PDF संस्करण:
+document_properties_page_count=पृष्ठ गिनती:
+document_properties_close=बंद करें
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=स्लाइडर टॉगल करें
+toggle_sidebar_label=स्लाइडर टॉगल करें
+outline.title=दस्तावेज़ आउटलाइन दिखाएँ
+outline_label=दस्तावेज़ आउटलाइन
+thumbs.title=लघुछवियाँ दिखाएँ
+thumbs_label=लघु छवि
+findbar.title=दस्तावेज़ में ढूँढ़ें
+findbar_label=ढूँढ़ें
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=पृष्ठ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=पृष्ठ {{page}} की लघु-छवि
+
+# Find panel button title and messages
+find_label=ढूंढें:
+find_previous.title=वाक्यांश की पिछली उपस्थिति ढूँढ़ें
+find_previous_label=पिछला
+find_next.title=वाक्यांश की अगली उपस्थिति ढूँढ़ें
+find_next_label=आगे
+find_highlight=सभी आलोकित करें
+find_match_case_label=मिलान स्थिति
+find_reached_top=पृष्ठ के ऊपर पहुंच गया, नीचे से जारी रखें
+find_reached_bottom=पृष्ठ के नीचे में जा पहुँचा, ऊपर से जारी
+find_not_found=वाक्यांश नहीं मिला
+
+# Error panel labels
+error_more_info=अधिक सूचना
+error_less_info=कम सूचना
+error_close=बंद करें
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=संदेश: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=स्टैक: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=फ़ाइल: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=पंक्ति: {{line}}
+rendering_error=पृष्ठ रेंडरिंग के दौरान त्रुटि आई.
+
+# Predefined zoom values
+page_scale_width=पृष्ठ चौड़ाई
+page_scale_fit=पृष्ठ फिट
+page_scale_auto=स्वचालित जूम
+page_scale_actual=वास्तविक आकार
+
+# Loading indicator messages
+loading_error_indicator=त्रुटि
+loading_error=पीडीएफ लोड करते समय एक त्रुटि हुई.
+invalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइल.
+missing_file_error=अनुपस्थित PDF फ़ाइल.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=इस पीडीएफ फ़ाइल को खोलने के लिए कृपया कूटशब्द भरें.
+password_invalid=अवैध कूटशब्द, कृपया फिर कोशिश करें.
+password_ok=ठीक
+password_cancel=रद्द करें
+
+printing_not_supported=चेतावनी: इस ब्राउज़र पर छपाई पूरी तरह से समर्थित नहीं है.
+printing_not_ready=चेतावनी: पीडीएफ छपाई के लिए पूरी तरह से लोड नहीं है.
+web_fonts_disabled=वेब फॉन्ट्स निष्क्रिय हैं: अंतःस्थापित PDF फॉन्टस के उपयोग में असमर्थ.
+document_colors_disabled=PDF दस्तावेज़ उनके अपने रंग को उपयोग करने के लिए अनुमति प्राप्त नहीं है: 'पृष्ठों को उनके अपने रंग को चुनने के लिए स्वीकृति दें कि वह उस ब्राउज़र में निष्क्रिय है.
diff --git a/lib/viewers/pdf/locale/hr/viewer.properties b/lib/viewers/pdf/locale/hr/viewer.properties
new file mode 100644
index 0000000..9c829b3
--- /dev/null
+++ b/lib/viewers/pdf/locale/hr/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Prethodna stranica
+previous_label=Prethodna
+next.title=Iduća stranica
+next_label=Iduća
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Stranica:
+page_of=od {{pageCount}}
+
+zoom_out.title=Uvećaj
+zoom_out_label=Smanji
+zoom_in.title=Uvaćaj
+zoom_in_label=Smanji
+zoom.title=Uvećanje
+presentation_mode.title=Prebaci u prezentacijski način rada
+presentation_mode_label=Prezentacijski način rada
+open_file.title=Otvori datoteku
+open_file_label=Otvori
+print.title=Ispis
+print_label=Ispis
+download.title=Preuzmi
+download_label=Preuzmi
+bookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru)
+bookmark_label=Trenutni prikaz
+
+# Secondary toolbar and context menu
+tools.title=Alati
+tools_label=Alati
+first_page.title=Idi na prvu stranicu
+first_page.label=Idi na prvu stranicu
+first_page_label=Idi na prvu stranicu
+last_page.title=Idi na posljednju stranicu
+last_page.label=Idi na posljednju stranicu
+last_page_label=Idi na posljednju stranicu
+page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu
+page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu
+page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu
+page_rotate_ccw.title=Rotiraj obrnutno od smjera kazaljke na satu
+page_rotate_ccw.label=Rotiraj obrnutno od smjera kazaljke na satu
+page_rotate_ccw_label=Rotiraj obrnutno od smjera kazaljke na satu
+
+hand_tool_enable.title=Omogući ručni alat
+hand_tool_enable_label=Omogući ručni alat
+hand_tool_disable.title=Onemogući ručni alat
+hand_tool_disable_label=Onemogući ručni alat
+
+# Document properties dialog box
+document_properties.title=Svojstva dokumenta...
+document_properties_label=Svojstva dokumenta...
+document_properties_file_name=Naziv datoteke:
+document_properties_file_size=Veličina datoteke:
+document_properties_kb={{size_kb}} KB ({{size_b}} bajtova)
+document_properties_mb={{size_mb}} MB ({{size_b}} bajtova)
+document_properties_title=Naslov:
+document_properties_author=Autor:
+document_properties_subject=Predmet:
+document_properties_keywords=Ključne riječi:
+document_properties_creation_date=Datum stvaranja:
+document_properties_modification_date=Datum promjene:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Stvaralac:
+document_properties_producer=PDF stvaratelj:
+document_properties_version=PDF inačica:
+document_properties_page_count=Broj stranica:
+document_properties_close=Zatvori
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Prikaži/sakrij bočnu traku
+toggle_sidebar_label=Prikaži/sakrij bočnu traku
+outline.title=Prikaži obris dokumenta
+outline_label=Obris dokumenta
+attachments.title=Prikaži privitke
+attachments_label=Privitci
+thumbs.title=Prikaži sličice
+thumbs_label=Sličice
+findbar.title=Traži u dokumentu
+findbar_label=Traži
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Stranica {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Sličica stranice {{page}}
+
+# Find panel button title and messages
+find_label=Traži:
+find_previous.title=Pronađi prethodno javljanje ovog izraza
+find_previous_label=Prethodno
+find_next.title=Pronađi iduće javljanje ovog izraza
+find_next_label=Iduće
+find_highlight=Istankni sve
+find_match_case_label=Slučaj podudaranja
+find_reached_top=Dosegnut vrh dokumenta, nastavak od dna
+find_reached_bottom=Dosegnut vrh dokumenta, nastavak od vrha
+find_not_found=Izraz nije pronađen
+
+# Error panel labels
+error_more_info=Više informacija
+error_less_info=Manje informacija
+error_close=Zatvori
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Poruka: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stog: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Datoteka: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Redak: {{line}}
+rendering_error=Došlo je do greške prilikom iscrtavanja stranice.
+
+# Predefined zoom values
+page_scale_width=Å irina stranice
+page_scale_fit=Pristajanje stranici
+page_scale_auto=Automatsko uvećanje
+page_scale_actual=Prava veličina
+
+# Loading indicator messages
+loading_error_indicator=Greška
+loading_error=Došlo je do greške pri učitavanju PDF-a.
+invalid_file_error=Kriva ili oštećena PDF datoteka.
+missing_file_error=Nedostaje PDF datoteka.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Bilješka]
+password_label=Upišite lozinku da biste otvorili ovu PDF datoteku.
+password_invalid=Neispravna lozinka. Pokušajte ponovo.
+password_ok=U redu
+password_cancel=Odustani
+
+printing_not_supported=Upozorenje: Ispisivanje nije potpuno podržano u ovom pregledniku.
+printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za ispis.
+web_fonts_disabled=Web fontovi su onemogućeni: nije moguće koristiti umetnute PDF fontove.
+document_colors_disabled=PDF dokumenti nemaju dopuštene koristiti vlastite boje: opcija 'Dopusti stranicama da koriste vlastite boje' je deaktivirana.
diff --git a/lib/viewers/pdf/locale/hu/viewer.properties b/lib/viewers/pdf/locale/hu/viewer.properties
new file mode 100644
index 0000000..12a764a
--- /dev/null
+++ b/lib/viewers/pdf/locale/hu/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Előző oldal
+previous_label=Előző
+next.title=Következő oldal
+next_label=Tovább
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Oldal:
+page_of=összesen: {{pageCount}}
+
+zoom_out.title=Kicsinyítés
+zoom_out_label=Kicsinyítés
+zoom_in.title=Nagyítás
+zoom_in_label=Nagyítás
+zoom.title=Nagyítás
+presentation_mode.title=Váltás bemutató módba
+presentation_mode_label=Bemutató mód
+open_file.title=Fájl megnyitása
+open_file_label=Megnyitás
+print.title=Nyomtatás
+print_label=Nyomtatás
+download.title=Letöltés
+download_label=Letöltés
+bookmark.title=Jelenlegi nézet (másolás vagy megnyitás új ablakban)
+bookmark_label=Aktuális nézet
+
+# Secondary toolbar and context menu
+tools.title=Eszközök
+tools_label=Eszközök
+first_page.title=Ugrás az első oldalra
+first_page.label=Ugrás az első oldalra
+first_page_label=Ugrás az első oldalra
+last_page.title=Ugrás az utolsó oldalra
+last_page.label=Ugrás az utolsó oldalra
+last_page_label=Ugrás az utolsó oldalra
+page_rotate_cw.title=Forgatás az óramutató járásával egyezően
+page_rotate_cw.label=Forgatás az óramutató járásával egyezően
+page_rotate_cw_label=Forgatás az óramutató járásával egyezően
+page_rotate_ccw.title=Forgatás az óramutató járásával ellentétesen
+page_rotate_ccw.label=Forgatás az óramutató járásával ellentétesen
+page_rotate_ccw_label=Forgatás az óramutató járásával ellentétesen
+
+hand_tool_enable.title=Kéz eszköz bekapcsolása
+hand_tool_enable_label=Kéz eszköz bekapcsolása
+hand_tool_disable.title=Kéz eszköz kikapcsolása
+hand_tool_disable_label=Kéz eszköz kikapcsolása
+
+# Document properties dialog box
+document_properties.title=Dokumentum tulajdonságai…
+document_properties_label=Dokumentum tulajdonságai…
+document_properties_file_name=Fájlnév:
+document_properties_file_size=Fájlméret:
+document_properties_kb={{size_kb}} KB ({{size_b}} bájt)
+document_properties_mb={{size_mb}} MB ({{size_b}} bájt)
+document_properties_title=Cím:
+document_properties_author=Szerző:
+document_properties_subject=Tárgy:
+document_properties_keywords=Kulcsszavak:
+document_properties_creation_date=Létrehozás dátuma:
+document_properties_modification_date=Módosítás dátuma:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Létrehozta:
+document_properties_producer=PDF előállító:
+document_properties_version=PDF verzió:
+document_properties_page_count=Oldalszám:
+document_properties_close=Bezárás
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Oldalsáv be/ki
+toggle_sidebar_label=Oldalsáv be/ki
+outline.title=Dokumentumvázlat megjelenítése
+outline_label=Dokumentumvázlat
+thumbs.title=Bélyegképek megjelenítése
+thumbs_label=Bélyegképek
+findbar.title=Keresés a dokumentumban
+findbar_label=Keresés
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title={{page}}. oldal
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas={{page}}. oldal bélyegképe
+
+# Find panel button title and messages
+find_label=Keresés:
+find_previous.title=A kifejezés előző előfordulásának keresése
+find_previous_label=Előző
+find_next.title=A kifejezés következő előfordulásának keresése
+find_next_label=Tovább
+find_highlight=Összes kiemelése
+find_match_case_label=Kis- és nagybetűk megkülönböztetése
+find_reached_top=A dokumentum eleje elérve, folytatás a végétől
+find_reached_bottom=A dokumentum vége elérve, folytatás az elejétől
+find_not_found=A kifejezés nem található
+
+# Error panel labels
+error_more_info=További információ
+error_less_info=Kevesebb információ
+error_close=Bezárás
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Üzenet: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Nyomkövetés: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fájl: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Sor: {{line}}
+rendering_error=Hiba történt az oldal feldolgozása közben.
+
+# Predefined zoom values
+page_scale_width=Oldalszélesség
+page_scale_fit=Teljes oldal
+page_scale_auto=Automatikus nagyítás
+page_scale_actual=Valódi méret
+
+# Loading indicator messages
+loading_error_indicator=Hiba
+loading_error=Hiba történt a PDF betöltésekor.
+invalid_file_error=Érvénytelen vagy sérült PDF fájl.
+missing_file_error=Hiányzó PDF fájl.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} megjegyzés]
+password_label=Adja meg a jelszót a PDF fájl megnyitásához.
+password_invalid=Helytelen jelszó. Próbálja újra.
+password_ok=OK
+password_cancel=Mégse
+
+printing_not_supported=Figyelmeztetés: Ez a böngésző nem teljesen támogatja a nyomtatást.
+printing_not_ready=Figyelmeztetés: A PDF nincs teljesen betöltve a nyomtatáshoz.
+web_fonts_disabled=Webes betűkészletek letiltva: nem használhatók a beágyazott PDF betűkészletek.
+document_colors_disabled=A PDF dokumentumok nem használhatják saját színeiket: „Az oldalak a saját maguk által kiválasztott színeket használhatják” beállítás ki van kapcsolva a böngészőben.
diff --git a/lib/viewers/pdf/locale/hy-AM/viewer.properties b/lib/viewers/pdf/locale/hy-AM/viewer.properties
new file mode 100644
index 0000000..01b8fde
--- /dev/null
+++ b/lib/viewers/pdf/locale/hy-AM/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Նախորդ էջը
+previous_label=Նախորդը
+next.title=Հաջորդ էջը
+next_label=Հաջորդը
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Ô·Õ».
+page_of={{pageCount}}-ից
+
+zoom_out.title=Փոքրացնել
+zoom_out_label=Փոքրացնել
+zoom_in.title=Խոշորացնել
+zoom_in_label=Խոշորացնել
+zoom.title=Մասշտաբը\u0020
+presentation_mode.title=Անցնել Ներկայացման եղանակին
+presentation_mode_label=Ներկայացման եղանակ
+open_file.title=Բացել Ֆայլ
+open_file_label=Բացել
+print.title=Տպել
+print_label=Տպել
+download.title=Ô²Õ¥Õ¼Õ¶Õ¥Õ¬
+download_label=Ô²Õ¥Õ¼Õ¶Õ¥Õ¬
+bookmark.title=Ընթացիկ տեսքով (պատճենել կամ բացել նոր պատուհանում)
+bookmark_label=Ընթացիկ տեսքը
+
+# Secondary toolbar and context menu
+tools.title=Գործիքներ
+tools_label=Գործիքներ
+first_page.title=Անցնել առաջին էջին
+first_page.label=Անցնել առաջին էջին
+first_page_label=Անցնել առաջին էջին
+last_page.title=Անցնել վերջին էջին
+last_page.label=Անցնել վերջին էջին
+last_page_label=Անցնել վերջին էջին
+page_rotate_cw.title=Պտտել ըստ ժամացույցի սլաքի
+page_rotate_cw.label=Պտտել ըստ ժամացույցի սլաքի
+page_rotate_cw_label=Պտտել ըստ ժամացույցի սլաքի
+page_rotate_ccw.title=Պտտել հակառակ ժամացույցի սլաքի
+page_rotate_ccw.label=Պտտել հակառակ ժամացույցի սլաքի
+page_rotate_ccw_label=Պտտել հակառակ ժամացույցի սլաքի
+
+hand_tool_enable.title=Միացնել ձեռքի գործիքը
+hand_tool_enable_label=Միացնել ձեռքի գործիքը
+hand_tool_disable.title=Անջատել ձեռքի գործիքը
+hand_tool_disable_label=ԱՆջատել ձեռքի գործիքը
+
+# Document properties dialog box
+document_properties.title=Փաստաթղթի հատկությունները...
+document_properties_label=Փաստաթղթի հատկությունները...
+document_properties_file_name=Ֆայլի անունը.
+document_properties_file_size=Ֆայլի չափը.
+document_properties_kb={{size_kb}} Ô¿Ô² ({{size_b}} Õ¢Õ¡ÕµÕ©)
+document_properties_mb={{size_mb}} ՄԲ ({{size_b}} բայթ)
+document_properties_title=Վերնագիր.
+document_properties_author=Հեղինակ․
+document_properties_subject=Վերնագիր.
+document_properties_keywords=Հիմնաբառ.
+document_properties_creation_date=Ստեղծելու ամսաթիվը.
+document_properties_modification_date=Փոփոխելու ամսաթիվը.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Ստեղծող.
+document_properties_producer=PDF-Õ« Õ°Õ¥Õ²Õ«Õ¶Õ¡Õ¯Õ¨.
+document_properties_version=PDF-ի տարբերակը.
+document_properties_page_count=Էջերի քանակը.
+document_properties_close=Փակել
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Բացել/Փակել Կողային վահանակը
+toggle_sidebar_label=Բացել/Փակել Կողային վահանակը
+outline.title=Ցուցադրել փաստաթղթի բովանդակությունը
+outline_label=Փաստաթղթի բովանդակությունը
+thumbs.title=Ցուցադրել Մանրապատկերը
+thumbs_label=Մանրապատկերը
+findbar.title=Գտնել փաստաթղթում
+findbar_label=Փնտրել
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Ô·Õ»Õ¨ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Էջի մանրապատկերը {{page}}
+
+# Find panel button title and messages
+find_label=Ô³Õ¿Õ¶Õ¥Õ¬`
+find_previous.title=Գտնել անրահայտության նախորդ հանդիպումը
+find_previous_label=Նախորդը
+find_next.title=Գտիր արտահայտության հաջորդ հանդիպումը
+find_next_label=Հաջորդը
+find_highlight=Նշագծել Բոլորը
+find_match_case_label=Մեծ(փոքր)ատառ հաշվի առնել
+find_reached_top=Հասել եք փաստաթղթի վերևին, կշարունակվի ներքևից
+find_reached_bottom=Հասել եք փաստաթղթի վերջին, կշարունակվի վերևից
+find_not_found=Արտահայտությունը չգտնվեց
+
+# Error panel labels
+error_more_info=Ավելի շատ տեղեկություն
+error_less_info=Քիչ տեղեկություն
+error_close=Փակել
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (կառուցումը. {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Գրությունը. {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Շեղջ. {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Ֆայլ. {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Տողը. {{line}}
+rendering_error=Սխալ՝ էջը ստեղծելիս:
+
+# Predefined zoom values
+page_scale_width=Էջի լայնքը
+page_scale_fit=Ձգել էջը
+page_scale_auto=Ինքնաշխատ
+page_scale_actual=Իրական չափը
+
+# Loading indicator messages
+loading_error_indicator=Սխալ
+loading_error=Սխալ՝ PDF ֆայլը բացելիս։
+invalid_file_error=Սխալ կամ բնասված PDF ֆայլ:
+missing_file_error=PDF ֆայլը բացակայում է:
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Ծանոթություն]
+password_label=Մուտքագրեք PDF-ի գաղտնաբառը:
+password_invalid=Գաղտնաբառը սխալ է: Կրկին փորձեք:
+password_ok=ԼԱՎ
+password_cancel=Չեղարկել
+
+printing_not_supported=Զգուշացում. Տպելը ամբողջությամբ չի աջակցվում դիտարկիչի կողմից։
+printing_not_ready=Զգուշացում. PDF-ը ամբողջությամբ չի բեռնավորվել տպելու համար:
+web_fonts_disabled=Վեբ-տառատեսակները անջատված են. հնարավոր չէ օգտագործել ներկառուցված PDF տառատեսակները:
+document_colors_disabled=PDF փաստաթղթերին թույլատրված չէ օգտագործել իրենց սեփական գույները: 'Թույլատրել էջերին ընտրել իրենց սեփական գույները' ընտրանքը անջատված է դիտարկիչում:
diff --git a/lib/viewers/pdf/locale/id/viewer.properties b/lib/viewers/pdf/locale/id/viewer.properties
new file mode 100644
index 0000000..698a2ba
--- /dev/null
+++ b/lib/viewers/pdf/locale/id/viewer.properties
@@ -0,0 +1,169 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Laman Sebelumnya
+previous_label=Sebelumnya
+next.title=Laman Selanjutnya
+next_label=Selanjutnya
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Laman:
+page_of=dari {{pageCount}}
+
+zoom_out.title=Perkecil
+zoom_out_label=Perkecil
+zoom_in.title=Perbesar
+zoom_in_label=Perbesar
+zoom.title=Perbesaran
+print.title=Cetak
+print_label=Cetak
+presentation_mode.title=Ganti ke Mode Presentasi
+presentation_mode_label=Mode Presentasi
+open_file.title=Buka Berkas
+open_file_label=Buka
+download.title=Unduh
+download_label=Unduh
+bookmark.title=Tampilan Sekarang (salin atau buka di jendela baru)
+bookmark_label=Tampilan Sekarang
+
+# Secondary toolbar and context menu
+tools.title=Alat
+tools_label=Alat
+first_page.title=Buka Halaman Pertama
+first_page.label=Buka Halaman Pertama
+first_page_label=Buka Halaman Pertama
+last_page.title=Buka Halaman Terakhir
+last_page.label=Buka Halaman Terakhir
+last_page_label=Buka Halaman Terakhir
+page_rotate_cw.title=Putar Searah Jarum Jam
+page_rotate_cw.label=Putar Searah Jarum Jam
+page_rotate_cw_label=Putar Searah Jarum Jam
+page_rotate_ccw.title=Putar Berlawanan Arah Jarum Jam
+page_rotate_ccw.label=Putar Berlawanan Arah Jarum Jam
+page_rotate_ccw_label=Putar Berlawanan Arah Jarum Jam
+
+hand_tool_enable.title=Aktifkan alat tangan
+hand_tool_enable_label=Aktifkan alat tangan
+hand_tool_disable.title=Nonaktifkan alat tangan
+hand_tool_disable_label=Nonaktifkan alat tangan
+
+# Document properties dialog box
+document_properties.title=Properti Dokumen…
+document_properties_label=Properti Dokumen…
+document_properties_file_name=Nama berkas:
+document_properties_file_size=Ukuran berkas:
+document_properties_kb={{size_kb}} KB ({{size_b}} byte)
+document_properties_mb={{size_mb}} MB ({{size_b}} byte)
+document_properties_title=Judul:
+document_properties_author=Penyusun:
+document_properties_subject=Subjek:
+document_properties_keywords=Kata Kunci:
+document_properties_creation_date=Tanggal Dibuat:
+document_properties_modification_date=Tanggal Dimodifikasi:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Pembuat:
+document_properties_producer=Pemroduksi PDF:
+document_properties_version=Versi PDF:
+document_properties_page_count=Jumlah Halaman:
+document_properties_close=Tutup
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping
+toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping
+outline.title=Buka Kerangka Dokumen
+outline_label=Kerangka Dokumen
+attachments.title=Tampilkan Lampiran
+attachments_label=Lampiran
+thumbs.title=Tampilkan Miniatur
+thumbs_label=Miniatur
+findbar.title=Temukan di Dokumen
+findbar_label=Temukan
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Laman {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatur Laman {{page}}
+
+# Context menu
+first_page.label=Ke Halaman Pertama
+last_page.label=Ke Halaman Terakhir
+page_rotate_cw.label=Putar Searah Jarum Jam
+page_rotate_ccw.label=Putar Berlawanan Arah Jarum Jam
+
+# Find panel button title and messages
+find_label=Temukan:
+find_previous.title=Temukan kata sebelumnya
+find_previous_label=Sebelumnya
+find_next.title=Temukan lebih lanjut
+find_next_label=Selanjutnya
+find_highlight=Sorot semu&anya
+find_match_case_label=Cocokkan BESAR/kecil
+find_reached_top=Sampai di awal dokumen, dilanjutkan dari bawah
+find_reached_bottom=Sampai di akhir dokumen, dilanjutkan dari atas
+find_not_found=Frasa tidak ditemukan
+
+# Error panel labels
+error_more_info=Lebih Banyak Informasi
+error_less_info=Lebih Sedikit Informasi
+error_close=Tutup
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Pesan: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Berkas: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Baris: {{line}}
+rendering_error=Galat terjadi saat merender laman.
+
+# Predefined zoom values
+page_scale_width=Lebar Laman
+page_scale_fit=Muat Laman
+page_scale_auto=Perbesaran Otomatis
+page_scale_actual=Ukuran Asli
+
+# Loading indicator messages
+loading_error_indicator=Galat
+loading_error=Galat terjadi saat memuat PDF.
+invalid_file_error=Berkas PDF tidak valid atau rusak.
+missing_file_error=Berkas PDF tidak ada.
+
+# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anotasi {{type}}]
+password_label=Masukkan sandi untuk membuka berkas PDF ini.
+password_invalid=Sandi tidak valid. Silakan coba lagi.
+password_ok=Oke
+password_cancel=Batal
+
+printing_not_supported=Peringatan: Pencetakan tidak didukung secara lengkap pada peramban ini.
+printing_not_ready=Peringatan: Berkas PDF masih belum dimuat secara lengkap untuk dapat dicetak.
+web_fonts_disabled=Font web dinonaktifkan: tidak dapat menggunakan font PDF yang tersemat.
+document_colors_disabled=Dokumen PDF tidak diizinkan untuk menggunakan warnanya sendiri karena setelan \'Izinkan laman memilih warna sendiri\’ dinonaktifkan pada pengaturan.
diff --git a/lib/viewers/pdf/locale/is/viewer.properties b/lib/viewers/pdf/locale/is/viewer.properties
new file mode 100644
index 0000000..27db046
--- /dev/null
+++ b/lib/viewers/pdf/locale/is/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Fyrri síða
+previous_label=Fyrri
+next.title=Næsta síða
+next_label=Næsti
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Síða:
+page_of=af {{pageCount}}
+
+zoom_out.title=Minnka
+zoom_out_label=Minnka
+zoom_in.title=Stækka
+zoom_in_label=Stækka
+zoom.title=Aðdráttur
+presentation_mode.title=Skipta yfir á kynningarham
+presentation_mode_label=Kynningarhamur
+open_file.title=Opna skrá
+open_file_label=Opna
+print.title=Prenta
+print_label=Prenta
+download.title=Hala niður
+download_label=Hala niður
+bookmark.title=Núverandi sýn (afritaðu eða opnaðu í nýjum glugga)
+bookmark_label=Núverandi sýn
+
+# Secondary toolbar and context menu
+tools.title=Verkfæri
+tools_label=Verkfæri
+first_page.title=Fara á fyrstu síðu
+first_page.label=Fara á fyrstu síðu
+first_page_label=Fara á fyrstu síðu
+last_page.title=Fara á síðustu síðu
+last_page.label=Fara á síðustu síðu
+last_page_label=Fara á síðustu síðu
+page_rotate_cw.title=Snúa réttsælis
+page_rotate_cw.label=Snúa réttsælis
+page_rotate_cw_label=Snúa réttsælis
+page_rotate_ccw.title=Snúa rangsælis
+page_rotate_ccw.label=Snúa rangsælis
+page_rotate_ccw_label=Snúa rangsælis
+
+hand_tool_enable.title=Virkja handarverkfæri
+hand_tool_enable_label=Virkja handarverkfæri
+hand_tool_disable.title=Gera handarverkfæri óvirkt
+hand_tool_disable_label=Gera handarverkfæri óvirkt
+
+# Document properties dialog box
+document_properties.title=Eiginleikar skjals…
+document_properties_label=Eiginleikar skjals…
+document_properties_file_name=Skráarnafn:
+document_properties_file_size=Skrárstærð:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Titill:
+document_properties_author=Hönnuður:
+document_properties_subject=Efni:
+document_properties_keywords=Stikkorð:
+document_properties_creation_date=Búið til:
+document_properties_modification_date=Dags breytingar:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Höfundur:
+document_properties_producer=PDF framleiðandi:
+document_properties_version=PDF útgáfa:
+document_properties_page_count=Blaðsíðufjöldi:
+document_properties_close=Loka
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Víxla hliðslá
+toggle_sidebar_label=Víxla hliðslá
+outline.title=Sýna efniskipan skjals
+outline_label=Efnisskipan skjals
+attachments.title=Sýna viðhengi
+attachments_label=Viðhengi
+thumbs.title=Sýna smámyndir
+thumbs_label=Smámyndir
+findbar.title=Leita í skjali
+findbar_label=Leita
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Síða {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Smámynd af síðu {{page}}
+
+# Find panel button title and messages
+find_label=Leita:
+find_previous.title=Leita að fyrra tilfelli þessara orða
+find_previous_label=Fyrri
+find_next.title=Leita að næsta tilfelli þessara orða
+find_next_label=Næsti
+find_highlight=Lita allt
+find_match_case_label=Passa við stafstöðu
+find_reached_top=Náði efst í skjal, held áfram neðst
+find_reached_bottom=Náði enda skjals, held áfram efst
+find_not_found=Fann ekki orðið
+
+# Error panel labels
+error_more_info=Meiri upplýsingar
+error_less_info=Minni upplýsingar
+error_close=Loka
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Skilaboð: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stafli: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Skrá: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Lína: {{line}}
+rendering_error=Upp kom villa við að birta síðuna.
+
+# Predefined zoom values
+page_scale_width=Síðubreidd
+page_scale_fit=Passa á síðu
+page_scale_auto=Sjálfvirkur aðdráttur
+page_scale_actual=Raunstærð
+
+# Loading indicator messages
+loading_error_indicator=Villa
+loading_error=Villa kom upp við að hlaða inn PDF.
+invalid_file_error=Ógild eða skemmd PDF skrá.
+missing_file_error=Vantar PDF skrá.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Skýring]
+password_label=Sláðu inn lykilorð til að opna þessa PDF skrá.
+password_invalid=Ógilt lykilorð. Reyndu aftur.
+password_ok=Í lagi\u0020
+password_cancel=Hætta við
+
+printing_not_supported=Aðvörun: Prentun er ekki með fyllilegan stuðning á þessum vafra.
+printing_not_ready=Aðvörun: Ekki er búið að hlaða inn allri PDF skránni fyrir prentun.
+web_fonts_disabled=Vef leturgerðir eru óvirkar: get ekki notað innbyggðar PDF leturgerðir.
+document_colors_disabled=PDF skjöl hafa ekki leyfi til að nota sína eigin liti: 'Leyfa síðum að velja eigin liti' er óvirkt í vafranum.
diff --git a/lib/viewers/pdf/locale/it/metadata.inc b/lib/viewers/pdf/locale/it/metadata.inc
deleted file mode 100644
index e09d807..0000000
--- a/lib/viewers/pdf/locale/it/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>it</em:locale>
- <em:name>PDF Viewer</em:name>
- <em:description>Usa HTML5 per visualizzare i file PDF direttamente in Firefox.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/it/viewer.properties b/lib/viewers/pdf/locale/it/viewer.properties
index 9622264..7457e21 100644
--- a/lib/viewers/pdf/locale/it/viewer.properties
+++ b/lib/viewers/pdf/locale/it/viewer.properties
@@ -1,44 +1,109 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-bookmark.title=Visualizzazione corrente (copia o apri in una nuova finestra)
-previous.title=Precedente
-next.title=Successiva
-print.title=Stampa
-download.title=Download
-zoom_out.title=Riduci Zoom
-zoom_in.title=Aumenta Zoom
-error_more_info=Più Informazioni
-error_less_info=Meno Informazioni
-error_close=Chiudi
-error_build=PDF.JS Build: {{build}}
-error_message=Messaggio: {{message}}
-error_stack=Stack: {{stack}}
-error_file=File: {{file}}
-error_line=Linea: {{line}}
-page_scale_width=Adatta alla Larghezza
-page_scale_fit=Adatta alla Pagina
-page_scale_auto=Zoom Automatico
-page_scale_actual=Dimensione Attuale
-toggle_slider.title=Visualizza Riquadro Laterale
-thumbs.title=Mostra Miniature
-outline.title=Mostra Indice Documento
-loading=Caricamento... {{percent}}%
-loading_error_indicator=Errore
-loading_error=È accaduto un errore durante il caricamento del PDF.
-rendering_error=È accaduto un errore durante il rendering della pagina.
-page_label=Pagina:
-page_of=di {{pageCount}}
-open_file.title=Apri File
-text_annotation_type=[{{type}} Annotazione]
+previous.title = Pagina precedente
+previous_label = Precedente
+next.title = Pagina successiva
+next_label = Successiva
+page_label = Pagina:
+page_of = di {{pageCount}}
+zoom_out.title = Riduci zoom
+zoom_out_label = Riduci zoom
+zoom_in.title = Aumenta zoom
+zoom_in_label = Aumenta zoom
+zoom.title = Zoom
+presentation_mode.title = Passa alla modalità presentazione
+presentation_mode_label = Modalità presentazione
+open_file.title = Apri file
+open_file_label = Apri file
+print.title = Stampa
+print_label = Stampa
+download.title = Scarica questo documento
+download_label = Download
+bookmark.title = Visualizzazione corrente (copia o apri in una nuova finestra)
+bookmark_label = Visualizzazione corrente
+tools.title = Strumenti
+tools_label = Strumenti
+first_page.title = Vai alla prima pagina
+first_page.label = Vai alla prima pagina
+first_page_label = Vai alla prima pagina
+last_page.title = Vai all’ultima pagina
+last_page.label = Vai all’ultima pagina
+last_page_label = Vai all’ultima pagina
+page_rotate_cw.title = Ruota in senso orario
+page_rotate_cw.label = Ruota in senso orario
+page_rotate_cw_label = Ruota in senso orario
+page_rotate_ccw.title = Ruota in senso antiorario
+page_rotate_ccw.label = Ruota in senso antiorario
+page_rotate_ccw_label = Ruota in senso antiorario
+hand_tool_enable.title = Attiva strumento mano
+hand_tool_enable_label = Attiva strumento mano
+hand_tool_disable.title = Disattiva strumento mano
+hand_tool_disable_label = Disattiva strumento mano
+document_properties.title = Proprietà del documento…
+document_properties_label = Proprietà del documento…
+document_properties_file_name = Nome file:
+document_properties_file_size = Dimensione file:
+document_properties_kb = {{size_kb}} kB ({{size_b}} byte)
+document_properties_mb = {{size_kb}} MB ({{size_b}} byte)
+document_properties_title = Titolo:
+document_properties_author = Autore:
+document_properties_subject = Oggetto:
+document_properties_keywords = Parole chiave:
+document_properties_creation_date = Data creazione:
+document_properties_modification_date = Data modifica:
+document_properties_date_string = {{date}}, {{time}}
+document_properties_creator = Autore originale:
+document_properties_producer = Produttore PDF:
+document_properties_version = Versione PDF:
+document_properties_page_count = Conteggio pagine:
+document_properties_close = Chiudi
+toggle_sidebar.title = Attiva/disattiva barra laterale
+toggle_sidebar_label = Attiva/disattiva barra laterale
+outline.title = Visualizza la struttura del documento
+outline_label = Struttura documento
+attachments.title = Visualizza allegati
+attachments_label = Allegati
+thumbs.title = Mostra le miniature
+thumbs_label = Miniature
+findbar.title = Trova nel documento
+findbar_label = Trova
+thumb_page_title = Pagina {{page}}
+thumb_page_canvas = Miniatura della pagina {{page}}
+find_label = Trova:
+find_previous.title = Trova l’occorrenza precedente del testo da cercare
+find_previous_label = Precedente
+find_next.title = Trova l’occorrenza successiva del testo da cercare
+find_next_label = Successivo
+find_highlight = Evidenzia
+find_match_case_label = Maiuscole/minuscole
+find_reached_top = Raggiunto l’inizio della pagina, continua dalla fine
+find_reached_bottom = Raggiunta la fine della pagina, continua dall’inizio
+find_not_found = Testo non trovato
+error_more_info = Più informazioni
+error_less_info = Meno informazioni
+error_close = Chiudi
+error_version_info = PDF.js v{{version}} (build: {{build}})
+error_message = Messaggio: {{message}}
+error_stack = Stack: {{stack}}
+error_file = File: {{file}}
+error_line = Riga: {{line}}
+rendering_error = Si è verificato un errore durante il rendering della pagina.
+page_scale_width = Larghezza pagina
+page_scale_fit = Adatta a una pagina
+page_scale_auto = Zoom automatico
+page_scale_actual = Dimensioni effettive
+loading_error_indicator = Errore
+loading_error = Si è verificato un errore durante il caricamento del PDF.
+invalid_file_error = File PDF non valido o danneggiato.
+missing_file_error = File PDF non disponibile.
+text_annotation_type.alt = [Annotazione: {{type}}]
+password_label = Inserire la password per aprire questo file PDF.
+password_invalid = Password non corretta. Riprovare.
+password_ok = OK
+password_cancel = Annulla
+printing_not_supported = Attenzione: la stampa non è completamente supportata da questo browser.
+printing_not_ready = Attenzione: il PDF non è ancora stato caricato completamente per la stampa.
+web_fonts_disabled = I web font risultano disattivati: impossibile utilizzare i caratteri inclusi nel PDF.
+document_colors_disabled = Non è possibile per i documenti PDF utilizzare i propri colori: l’opzione del browser “Permetti alle pagine di scegliere i propri colori invece di quelli impostati” è disattivata.
diff --git a/lib/viewers/pdf/locale/ja/chrome.properties b/lib/viewers/pdf/locale/ja/chrome.properties
deleted file mode 100644
index e9b4a5a..0000000
--- a/lib/viewers/pdf/locale/ja/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=この PDF 文書はサポートされていないため正しく表示できない可能性があります。
-open_with_different_viewer=ほかのビューアで開く
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/ja/metadata.inc b/lib/viewers/pdf/locale/ja/metadata.inc
deleted file mode 100644
index 7ca4746..0000000
--- a/lib/viewers/pdf/locale/ja/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>ja</em:locale>
- <em:name>PDF Viewer</em:name>
- <em:description>HTML5を使用して、Firefoxで直接PDFファイルを表示します。</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/ja/viewer.properties b/lib/viewers/pdf/locale/ja/viewer.properties
index 3a43dee..bfb46fe 100644
--- a/lib/viewers/pdf/locale/ja/viewer.properties
+++ b/lib/viewers/pdf/locale/ja/viewer.properties
@@ -1,123 +1,161 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Main toolbar buttons (tooltips and alt text for images)
-previous.title=前のページ
-previous_label=前へ
-next.title=次のページ
-next_label=次へ
-
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=ページ:
-page_of=of {{pageCount}}
-
-zoom_out.title=縮小
-zoom_out_label=縮小
-zoom_in.title=拡大
-zoom_in_label=拡大
-zoom.title=ズーム
-print.title=印刷
-print_label=印刷
-presentation_mode.title=プレゼンテーションモードに切り替えます
-presentation_mode_label=プレゼンテーションモード
-open_file.title=ファイルを開く
-open_file_label=開く
-download.title=ダウンロード
-download_label=ダウンロード
-bookmark.title=現在のビューをブックマーク
-bookmark_label=現在のビューをブックマーク
-
-# Tooltips and alt text for side panel toolbar buttons
-# (the _label strings are alt text for the buttons, the .title strings are
-# tooltips)
-toggle_sidebar.title=サイドバーの切り替え
-toggle_sidebar_label=サイドバーの切り替え
-outline.title=文書の目次
-outline_label=文書の目次
-thumbs.title=縮小版
-thumbs_label=縮小版
-findbar.title=検索
-findbar_label=検索
-
-# Thumbnails panel item (tooltip and alt text for images)
-# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
-# number.
-thumb_page_title={{page}} ページ
-# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
-# number.
-thumb_page_canvas=ページの縮小版 {{page}}
-
-# Context menu
-first_page.label=最初のページへ移動
-last_page.label=最後のページへ移動
-page_rotate_cw.label=右回転
-page_rotate_ccw.label=左回転
-
-# Find panel button title and messages
-find_label=検索:
-find_previous.title=指定文字列に一致する 1 つ前の部分を検索します
-find_previous_label=前へ
-find_next.title=指定文字列に一致する次の部分を検索します
-find_next_label=次へ
-find_highlight=すべて強調表示
-find_match_case_label=大文字/小文字を区別
-find_reached_top=文書先頭まで検索したので末尾に戻って検索しました。
-find_reached_bottom=文書末尾まで検索したので先頭に戻って検索しました。
-find_not_found=見つかりませんでした。
-
-# Error panel labels
-error_more_info=詳細情報
-error_less_info=詳細情報の非表示
-error_close=閉じる
-# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
-# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (ビルド: {{build}})
-# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
-# english string describing the error.
-error_message=メッセージ: {{message}}
-# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
-# trace.
-error_stack=スタック: {{stack}}
-# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
-error_file=ファイル: {{file}}
-# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=ライン: {{line}}
-rendering_error=ページのレンダリング中にエラーが発生しました
-
-# Predefined zoom values
-page_scale_width=幅に合わせる
-page_scale_fit=ページのサイズに合わせる
-page_scale_auto=自動ズーム
-page_scale_actual=実際のサイズ
-
-# Loading indicator messages
-loading_error_indicator=エラー
-loading_error=PDF の読み込み中にエラーが発生しました
-invalid_file_error=無効または破損した PDF ファイル
-missing_file_error=PDF ファイルが見つかりません。
-
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
-# "{{type}}" will be replaced with an annotation type from a list defined in
-# the PDF spec (32000-1:2008 Table 169 – Annotation types).
-# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} 注釈]
-request_password=PDF はパスワードによって保護されています
-
-printing_not_supported=警告:このブラウザでは印刷が完全にサポートされていません
-printing_not_ready=警告:PDF を印刷するための読み込みが終了していません
-web_fonts_disabled=Web フォントが無効になっています: 埋め込まれた PDF のフォントを使用することができません
-web_colors_disabled=Web カラーが無効になっています
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=前のページ
+previous_label=前へ
+next.title=次のページ
+next_label=次へ
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=ページ:
+page_of=/ {{pageCount}}
+
+zoom_out.title=縮小
+zoom_out_label=縮小
+zoom_in.title=拡大
+zoom_in_label=拡大
+zoom.title=拡大/縮小
+presentation_mode.title=プレゼンテーションモードに切り替えます
+presentation_mode_label=プレゼンテーションモード
+open_file.title=ファイルを開く
+open_file_label=開く
+print.title=印刷
+print_label=印刷
+download.title=ダウンロード
+download_label=ダウンロード
+bookmark.title=現在のビューをブックマーク
+bookmark_label=現在のビューをブックマーク
+
+# Secondary toolbar and context menu
+tools.title=ツール
+tools_label=ツール
+first_page.title=最初のページへ移動
+first_page.label=最初のページへ移動
+first_page_label=最初のページへ移動
+last_page.title=最後のページへ移動
+last_page.label=最後のページへ移動
+last_page_label=最後のページへ移動
+page_rotate_cw.title=右回転
+page_rotate_cw.label=右回転
+page_rotate_cw_label=右回転
+page_rotate_ccw.title=左回転
+page_rotate_ccw.label=左回転
+page_rotate_ccw_label=左回転
+
+hand_tool_enable.title=手のひらツールを有効にする
+hand_tool_enable_label=手のひらツールを有効にする
+hand_tool_disable.title=手のひらツールを無効にする
+hand_tool_disable_label=手のひらツールを無効にする
+
+# Document properties dialog box
+document_properties.title=文書のプロパティ...
+document_properties_label=文書のプロパティ...
+document_properties_file_name=ファイル名:
+document_properties_file_size=ファイルサイズ:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=タイトル:
+document_properties_author=作成者:
+document_properties_subject=件名:
+document_properties_keywords=キーワード:
+document_properties_creation_date=作成日:
+document_properties_modification_date=更新日:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=アプリケーション:
+document_properties_producer=PDF 変換:
+document_properties_version=PDF のバージョン:
+document_properties_page_count=ページ数:
+document_properties_close=閉じる
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=サイドバーの切り替え
+toggle_sidebar_label=サイドバーの切り替え
+outline.title=文書の目次
+outline_label=文書の目次
+thumbs.title=縮小版
+thumbs_label=縮小版
+findbar.title=検索
+findbar_label=検索
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title={{page}} ページ
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=ページの縮小版 {{page}}
+
+# Find panel button title and messages
+find_label=検索:
+find_previous.title=指定文字列に一致する 1 つ前の部分を検索します
+find_previous_label=前へ
+find_next.title=指定文字列に一致する次の部分を検索します
+find_next_label=次へ
+find_highlight=すべて強調表示
+find_match_case_label=大文字/小文字を区別
+find_reached_top=文書先頭まで検索したので末尾に戻って検索しました。
+find_reached_bottom=文書末尾まで検索したので先頭に戻って検索しました。
+find_not_found=見つかりませんでした。
+
+# Error panel labels
+error_more_info=詳細情報
+error_less_info=詳細情報の非表示
+error_close=閉じる
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (ビルド: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=メッセージ: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=スタック: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ファイル: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=ライン: {{line}}
+rendering_error=ページのレンダリング中にエラーが発生しました
+
+# Predefined zoom values
+page_scale_width=幅に合わせる
+page_scale_fit=ページのサイズに合わせる
+page_scale_auto=自動ズーム
+page_scale_actual=実際のサイズ
+
+# Loading indicator messages
+loading_error_indicator=エラー
+loading_error=PDF の読み込み中にエラーが発生しました
+invalid_file_error=無効または破損した PDF ファイル
+missing_file_error=PDF ファイルが見つかりません。
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} 注釈]
+password_label=この PDF ファイルを開くためのパスワードを入力してください。
+password_invalid=無効なパスワードです。もう一度やり直してください。
+password_ok=OK
+password_cancel=キャンセル
+
+printing_not_supported=警告: このブラウザでは印刷が完全にサポートされていません
+printing_not_ready=警告: PDF を印刷するための読み込みが終了していません
+web_fonts_disabled=Web フォントが無効になっています: 埋め込まれた PDF のフォントを使用することができません
+document_colors_disabled=PDF 文書は、Web ページが指定した配色を使用することができません: \'Web ページが指定した配色\' はブラウザで無効になっています。
diff --git a/lib/viewers/pdf/locale/ka/viewer.properties b/lib/viewers/pdf/locale/ka/viewer.properties
new file mode 100644
index 0000000..f6c68f5
--- /dev/null
+++ b/lib/viewers/pdf/locale/ka/viewer.properties
@@ -0,0 +1,124 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=წინა გვერდი
+previous_label=წინა
+next.title=შემდეგი გვერდი
+next_label=შემდეგი
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=გვერდი:
+page_of=of {{pageCount}}
+
+zoom_out.title=შემცირება
+zoom_out_label=გაზრდა
+zoom_in.title=შემცირება
+zoom_in_label=შემცირება
+zoom.title=მასშტაბი
+print.title=ამობეჭდვა
+print_label=ამობეჭდვა
+presentation_mode.title=გადართვა პრეზენტაციის რეჟიმზე
+presentation_mode_label=პრეზენტაციის რეჟიმი
+open_file.title=ფაილის გახსნა
+open_file_label=გახსნა
+download.title=ჩამოტვირთვა
+download_label=ჩამოტვირთვა
+bookmark.title=მიმდინარე ხედი (ასლი ან გახსნა ახალ სარკმელში)
+bookmark_label=მიმდინარე ხედი
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=სტენდის ჩვენება/დამალვა
+toggle_sidebar_label=სტენდის ჩვენება/დამალვა
+outline.title=დოკუმენტის სქემის ჩვენება
+outline_label=დოკუმენტის სქემა
+thumbs.title=მინიატურების ჩვენება
+thumbs_label=მინიატურები
+findbar.title=პოვნა დოკუმენტში
+findbar_label=პოვნა
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=გვერდი {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=მინიატურა გვერდისთვის {{page}}
+
+# Context menu
+first_page.label=გადასვლა პირველ გვერდზე
+last_page.label=გადასვლა ბოლო გვერდზე
+page_rotate_cw.label=დატრიალება
+page_rotate_ccw.label=უკუდატრიალება
+
+# Find panel button title and messages
+find_label=პოვნა:
+find_previous.title=კონტექსტის წინა თანხვედრის პოვნა
+find_previous_label=წინა
+find_next.title=კონტექსტის შემდეგი თანხვედრის პოვნა
+find_next_label=შემდეგი
+find_highlight=ყველას გამოყოფა
+find_match_case_label=მთავრულის გათვალისწინებით
+find_reached_top=დოკუმენტის თავი, გრძელდება დოკუმენტის ბოლოდან
+find_reached_bottom=დოკუმენტის ბოლო, გრძელდება დოკუმენტის თავიდან
+find_not_found=კონტექსტი ვერ მოიძებნა
+
+# Error panel labels
+error_more_info=დეტალების ჩვენება
+error_less_info=დეტალების დამალვა
+error_close=დახურვა
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (აგება: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=გზავნილი: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=მჭიდი: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ფაილი: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=სტრიქონი: {{line}}
+rendering_error=შეცდომა გვერდის ასახვისას.
+
+# Predefined zoom values
+page_scale_width=გვერდის სიგანეზე
+page_scale_fit=გვერდის შევსება
+page_scale_auto=თვითმასშტაბი
+page_scale_actual=რეალური ზომა
+
+# Loading indicator messages
+loading_error_indicator=შეცდომა
+loading_error=შეცდომა PDF ფაილის ჩატვირთვისას.
+invalid_file_error=უმართებლო ან დაზიანებული PDF ფაილი.
+missing_file_error=მცდარი PDF ფაილი.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} ანოტაცია]
+request_password=PDF დაცულია პაროლით:
+invalid_password=პაროლი მცდარია.
+
+printing_not_supported=გაფრთხილება: ამ ბრაუზერში ამობეჭდვის მხარდაჭერა არასრულია .
+printing_not_ready=გაფრთხილება: PDF ფაილი ამოსაბეჭდად სრულად არ ჩატვირთულა.
+web_fonts_disabled=ვებ შრიფტები ამორთულია: ჩადგმული PDF შრიფტებით სარგებლობა ვერ ხერხდება.
+document_colors_disabled=PDF დოკუმენტებს ეკრძალებათ საკუთარი ფერების გამოყენება: ბრაუზერში ამორთულია პარამეტრი - «გვერდებისთვის საკუთარი ფერებით სარგებლობის უფლება».
diff --git a/lib/viewers/pdf/locale/kk/viewer.properties b/lib/viewers/pdf/locale/kk/viewer.properties
new file mode 100644
index 0000000..7d02ae5
--- /dev/null
+++ b/lib/viewers/pdf/locale/kk/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Алдыңғы парақ
+previous_label=Алдыңғысы
+next.title=Келесі парақ
+next_label=Келесі
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Парақ:
+page_of={{pageCount}} ішінен
+
+zoom_out.title=Кішірейту
+zoom_out_label=Кішірейту
+zoom_in.title=Үлкейту
+zoom_in_label=Үлкейту
+zoom.title=Масштаб
+presentation_mode.title=Презентация режиміне ауысу
+presentation_mode_label=Презентация режимі
+open_file.title=Файлды ашу
+open_file_label=Ашу
+print.title=Баспаға шығару
+print_label=Баспаға шығару
+download.title=Жүктеп алу
+download_label=Жүктеп алу
+bookmark.title=Ағымдағы көрініс (көшіру не жаңа терезеде ашу)
+bookmark_label=Ағымдағы көрініс
+
+# Secondary toolbar and context menu
+tools.title=Саймандар
+tools_label=Саймандар
+first_page.title=Алғашқы параққа өту
+first_page.label=Алғашқы параққа өту
+first_page_label=Алғашқы параққа өту
+last_page.title=Соңғы параққа өту
+last_page.label=Соңғы параққа өту
+last_page_label=Соңғы параққа өту
+page_rotate_cw.title=Сағат тілі бағытымен айналдыру
+page_rotate_cw.label=Сағат тілі бағытымен бұру
+page_rotate_cw_label=Сағат тілі бағытымен бұру
+page_rotate_ccw.title=Сағат тілі бағытына қарсы бұру
+page_rotate_ccw.label=Сағат тілі бағытына қарсы бұру
+page_rotate_ccw_label=Сағат тілі бағытына қарсы бұру
+
+hand_tool_enable.title=Қол сайманын іске қосу
+hand_tool_enable_label=Қол сайманын іске қосу
+hand_tool_disable.title=Қол сайманын сөндіру
+hand_tool_disable_label=Қол сайманын сөндіру
+
+# Document properties dialog box
+document_properties.title=Құжат қасиеттері…
+document_properties_label=Құжат қасиеттері…
+document_properties_file_name=Файл аты:
+document_properties_file_size=Файл өлшемі:
+document_properties_kb={{size_kb}} КБ ({{size_b}} байт)
+document_properties_mb={{size_mb}} МБ ({{size_b}} байт)
+document_properties_title=Тақырыбы...
+document_properties_author=Авторы:
+document_properties_subject=Тақырыбы:
+document_properties_keywords=Кілт сөздер:
+document_properties_creation_date=Жасалған күні:
+document_properties_modification_date=Түзету күні:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Жасаған:
+document_properties_producer=PDF өндірген:
+document_properties_version=PDF нұсқасы:
+document_properties_page_count=Беттер саны:
+document_properties_close=Жабу
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Бүйір панелін көрсету/жасыру
+toggle_sidebar_label=Бүйір панелін көрсету/жасыру
+outline.title=Құжат құрамасын көрсету
+outline_label=Құжат құрамасы
+attachments.title=Салынымдарды көрсету
+attachments_label=Салынымдар
+thumbs.title=Кіші көріністерді көрсету
+thumbs_label=Кіші көріністер
+findbar.title=Құжаттан табу
+findbar_label=Табу
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title={{page}} парағы
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas={{page}} парағы үшін кіші көрінісі
+
+# Find panel button title and messages
+find_label=Табу:
+find_previous.title=Осы сөздердің мәтіннен алдыңғы кездесуін табу
+find_previous_label=Алдыңғысы
+find_next.title=Осы сөздердің мәтіннен келесі кездесуін табу
+find_next_label=Келесі
+find_highlight=Барлығын түспен ерекшелеу
+find_match_case_label=Регистрді ескеру
+find_reached_top=Құжаттың басына жеттік, соңынан бастап жалғастырамыз
+find_reached_bottom=Құжаттың соңына жеттік, басынан бастап жалғастырамыз
+find_not_found=Сөз(дер) табылмады
+
+# Error panel labels
+error_more_info=Көбірек ақпарат
+error_less_info=Азырақ ақпарат
+error_close=Жабу
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (жинақ: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Хабарлама: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Стек: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Файл: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Жол: {{line}}
+rendering_error=Парақты өңдеу кезінде қате кетті.
+
+# Predefined zoom values
+page_scale_width=Парақ ені
+page_scale_fit=Парақты сыйдыру
+page_scale_auto=Автомасштабтау
+page_scale_actual=Нақты өлшемі
+
+# Loading indicator messages
+loading_error_indicator=Қате
+loading_error=PDF жүктеу кезінде қате кетті.
+invalid_file_error=Зақымдалған немесе қате PDF файл.
+missing_file_error=PDF файлы жоқ.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} аңдатпасы]
+password_label=Бұл PDF файлын ашу үшін парольді енгізіңіз.
+password_invalid=Пароль дұрыс емес. Қайталап көріңіз.
+password_ok=ОК
+password_cancel=Бас тарту
+
+printing_not_supported=Ескерту: Баспаға шығаруды бұл браузер толығымен қолдамайды.
+printing_not_ready=Ескерту: Баспаға шығару үшін, бұл PDF толығымен жүктеліп алынбады.
+web_fonts_disabled=Веб қаріптері сөндірілген: құрамына енгізілген PDF қаріптерін қолдану мүмкін емес.
+document_colors_disabled=PDF құжаттарына өздік түстерді қолдану рұқсат етілмеген: бұл браузерде 'Веб-сайттарға өздерінің түстерін қолдануға рұқсат беру' мүмкіндігі сөндірулі тұр.
diff --git a/lib/viewers/pdf/locale/km/viewer.properties b/lib/viewers/pdf/locale/km/viewer.properties
new file mode 100644
index 0000000..45acd63
--- /dev/null
+++ b/lib/viewers/pdf/locale/km/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=ទំព័រ​មុន
+previous_label=មុន
+next.title=ទំព័រ​បន្ទាប់
+next_label=បន្ទាប់
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=ទំព័រ ៖
+page_of=នៃ {{pageCount}}
+
+zoom_out.title=​បង្រួម
+zoom_out_label=​បង្រួម
+zoom_in.title=​ពង្រីក
+zoom_in_label=​ពង្រីក
+zoom.title=ពង្រីក
+presentation_mode.title=ប្ដូរ​ទៅ​របៀប​បទ​បង្ហាញ
+presentation_mode_label=របៀប​បទ​បង្ហាញ
+open_file.title=បើក​ឯកសារ
+open_file_label=បើក
+print.title=បោះពុម្ព
+print_label=បោះពុម្ព
+download.title=ទាញ​យក
+download_label=ទាញ​យក
+bookmark.title=ទិដ្ឋភាព​បច្ចុប្បន្ន (ចម្លង ឬ​បើក​នៅ​ក្នុង​បង្អួច​ថ្មី)
+bookmark_label=ទិដ្ឋភាព​បច្ចុប្បន្ន
+
+# Secondary toolbar and context menu
+tools.title=ឧបករណ៍
+tools_label=ឧបករណ៍
+first_page.title=ទៅកាន់​ទំព័រ​ដំបូង​
+first_page.label=ទៅកាន់​ទំព័រ​ដំបូង​
+first_page_label=ទៅកាន់​ទំព័រ​ដំបូង​
+last_page.title=ទៅកាន់​ទំព័រ​ចុងក្រោយ​
+last_page.label=ទៅកាន់​ទំព័រ​ចុងក្រោយ​
+last_page_label=ទៅកាន់​ទំព័រ​ចុងក្រោយ
+page_rotate_cw.title=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា
+page_rotate_cw.label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា
+page_rotate_cw_label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា
+page_rotate_ccw.title=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​
+page_rotate_ccw.label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​
+page_rotate_ccw_label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​
+
+hand_tool_enable.title=បើក​ឧបករណ៍​ដោយ​ដៃ
+hand_tool_enable_label=បើក​ឧបករណ៍​ដោយ​ដៃ
+hand_tool_disable.title=បិទ​ឧបករណ៍​ប្រើ​ដៃ
+hand_tool_disable_label=បិទ​ឧបករណ៍​ប្រើ​ដៃ
+
+# Document properties dialog box
+document_properties.title=លក្ខណ​សម្បត្តិ​ឯកសារ…
+document_properties_label=លក្ខណ​សម្បត្តិ​ឯកសារ…
+document_properties_file_name=ឈ្មោះ​ឯកសារ៖
+document_properties_file_size=ទំហំ​ឯកសារ៖
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=ចំណងជើង ៖
+document_properties_author=អ្នក​និពន្ធ៖
+document_properties_subject=ប្រធានបទ៖
+document_properties_keywords=ពាក្យ​គន្លឹះ៖
+document_properties_creation_date=កាលបរិច្ឆេទ​បង្កើត៖
+document_properties_modification_date=កាលបរិច្ឆេទ​កែប្រែ៖
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=អ្នក​បង្កើត៖
+document_properties_producer=កម្មវិធី​បង្កើត PDF ៖
+document_properties_version=កំណែ PDF ៖
+document_properties_page_count=ចំនួន​ទំព័រ៖
+document_properties_close=បិទ
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=បិទ/បើក​គ្រាប់​រំកិល
+toggle_sidebar_label=បិទ/បើក​គ្រាប់​រំកិល
+outline.title=បង្ហាញ​គ្រោង​ឯកសារ
+outline_label=គ្រោង​ឯកសារ
+attachments.title=បង្ហាញ​ឯកសារ​ភ្ជាប់
+attachments_label=ឯកសារ​ភ្ជាប់
+thumbs.title=បង្ហាញ​រូបភាព​តូចៗ
+thumbs_label=រួបភាព​តូចៗ
+findbar.title=រក​នៅ​ក្នុង​ឯកសារ
+findbar_label=រក
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=ទំព័រ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=រូបភាព​តូច​របស់​ទំព័រ {{page}}
+
+# Find panel button title and messages
+find_label=រក ៖
+find_previous.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​មុន
+find_previous_label=មុន
+find_next.title=រក​ពាក្យ ឬ​ឃ្លា​ដែល​បាន​ជួប​បន្ទាប់
+find_next_label=បន្ទាប់
+find_highlight=បន្លិច​ទាំងអស់
+find_match_case_label=ករណី​ដំណូច
+find_reached_top=បាន​បន្ត​ពី​ខាង​ក្រោម ទៅ​ដល់​ខាង​​លើ​នៃ​ឯកសារ
+find_reached_bottom=បាន​បន្ត​ពី​ខាងលើ ទៅដល់​ចុង​​នៃ​ឯកសារ
+find_not_found=រក​មិន​ឃើញ​ពាក្យ ឬ​ឃ្លា
+
+# Error panel labels
+error_more_info=ព័ត៌មាន​បន្ថែម
+error_less_info=ព័ត៌មាន​តិចតួច
+error_close=បិទ
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=សារ ៖ {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=ជង់ ៖ {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ឯកសារ ៖ {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=ជួរ ៖ {{line}}
+rendering_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​បង្ហាញ​ទំព័រ ។
+
+# Predefined zoom values
+page_scale_width=ទទឹង​ទំព័រ
+page_scale_fit=សម​ទំព័រ
+page_scale_auto=ពង្រីក​ស្វ័យប្រវត្តិ
+page_scale_actual=ទំហំ​ជាក់ស្ដែង
+
+# Loading indicator messages
+loading_error_indicator=កំហុស
+loading_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​កំពុង​ផ្ទុក PDF ។
+invalid_file_error=ឯកសារ PDF ខូច ឬ​មិន​ត្រឹមត្រូវ ។
+missing_file_error=បាត់​ឯកសារ PDF
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} ចំណារ​ពន្យល់]
+password_label=បញ្ចូល​ពាក្យសម្ងាត់​ដើម្បី​បើក​ឯកសារ PDF នេះ។
+password_invalid=ពាក្យសម្ងាត់​មិន​ត្រឹមត្រូវ។ សូម​ព្យាយាម​ម្ដងទៀត។
+password_ok=យល់​ព្រម
+password_cancel=បោះបង់
+
+printing_not_supported=ការ​ព្រមាន ៖ កា​រ​បោះពុម្ព​មិន​ត្រូវ​បាន​គាំទ្រ​ពេញលេញ​ដោយ​កម្មវិធី​រុករក​នេះ​ទេ ។
+printing_not_ready=ព្រមាន៖ PDF មិន​ត្រូវ​បាន​ផ្ទុក​ទាំងស្រុង​ដើម្បី​បោះពុម្ព​ទេ។
+web_fonts_disabled=បាន​បិទ​ពុម្ពអក្សរ​បណ្ដាញ ៖ មិន​អាច​ប្រើ​ពុម្ពអក្សរ PDF ដែល​បាន​បង្កប់​បាន​ទេ ។
+document_colors_disabled=ឯកសារ PDF មិន​ត្រូវ​បាន​អនុញ្ញាត​ឲ្យ​ប្រើ​ពណ៌​ផ្ទាល់​របស់​វា​ទេ៖ 'អនុញ្ញាត​​ឲ្យ​ទំព័រ​ជ្រើស​ពណ៌​ផ្ទាល់​ខ្លួន' ត្រូវ​បាន​ធ្វើ​ឲ្យ​អសកម្ម​ក្នុង​​កម្មវិធី​រុករក។
diff --git a/lib/viewers/pdf/locale/kn/viewer.properties b/lib/viewers/pdf/locale/kn/viewer.properties
new file mode 100644
index 0000000..b37695a
--- /dev/null
+++ b/lib/viewers/pdf/locale/kn/viewer.properties
@@ -0,0 +1,123 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=ಹಿಂದಿನ ಪುಟ
+previous_label=ಹಿಂದಿನ
+next.title=ಮುಂದಿನ ಪುಟ
+next_label=ಮುಂದಿನ
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=ಪುಟ:
+page_of={{pageCount}} ರಲ್ಲಿ
+
+zoom_out.title=ಕಿರಿದಾಗಿಸು
+zoom_out_label=ಕಿರಿದಾಗಿಸಿ
+zoom_in.title=ಹಿರಿದಾಗಿಸು
+zoom_in_label=ಹಿರಿದಾಗಿಸಿ
+zoom.title=ಗಾತ್ರಬದಲಿಸು
+presentation_mode.title=ಪ್ರಸ್ತುತಿ (ಪ್ರಸೆಂಟೇಶನ್) ಕ್ರಮಕ್ಕೆ ಬದಲಾಯಿಸು
+presentation_mode_label=ಪ್ರಸ್ತುತಿ (ಪ್ರಸೆಂಟೇಶನ್) ಕ್ರಮ
+open_file.title=ಕಡತವನ್ನು ತೆರೆ
+open_file_label=ತೆರೆಯಿರಿ
+print.title=ಮುದ್ರಿಸು
+print_label=ಮುದ್ರಿಸಿ
+download.title=ಇಳಿಸು
+download_label=ಇಳಿಸಿಕೊಳ್ಳಿ
+bookmark.title=ಪ್ರಸಕ್ತ ನೋಟ (ಪ್ರತಿ ಮಾಡು ಅಥವ ಹೊಸ ಕಿಟಕಿಯಲ್ಲಿ ತೆರೆ)
+bookmark_label=ಪ್ರಸಕ್ತ ನೋಟ
+
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_title=ಶೀರ್ಷಿಕೆ:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=ಬದಿಪಟ್ಟಿಯನ್ನು ಹೊರಳಿಸು
+toggle_sidebar_label=ಬದಿಪಟ್ಟಿಯನ್ನು ಹೊರಳಿಸು
+outline.title=ದಸ್ತಾವೇಜಿನ ಹೊರರೇಖೆಯನ್ನು ತೋರಿಸು
+outline_label=ದಸ್ತಾವೇಜಿನ ಹೊರರೇಖೆ
+thumbs.title=ಚಿಕ್ಕಚಿತ್ರದಂತೆ ತೋರಿಸು
+thumbs_label=ಚಿಕ್ಕಚಿತ್ರಗಳು
+findbar.title=ದಸ್ತಾವೇಜಿನಲ್ಲಿ ಹುಡುಕು
+findbar_label=ಹುಡುಕು
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=ಪುಟ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=ಪುಟವನ್ನು ಚಿಕ್ಕಚಿತ್ರದಂತೆ ತೋರಿಸು {{page}}
+
+# Find panel button title and messages
+find_label=ಹುಡುಕು:
+find_previous.title=ವಾಕ್ಯದ ಹಿಂದಿನ ಇರುವಿಕೆಯನ್ನು ಹುಡುಕು
+find_previous_label=ಹಿಂದಿನ
+find_next.title=ವಾಕ್ಯದ ಮುಂದಿನ ಇರುವಿಕೆಯನ್ನು ಹುಡುಕು
+find_next_label=ಮುಂದಿನ
+find_highlight=ಎಲ್ಲವನ್ನು ಹೈಲೈಟ್ ಮಾಡು
+find_match_case_label=ಕೇಸನ್ನು ಹೊಂದಿಸು
+find_reached_top=ದಸ್ತಾವೇಜಿನ ಮೇಲ್ಭಾಗವನ್ನು ತಲುಪಿದೆ, ಕೆಳಗಿನಿಂದ ಆರಂಭಿಸು
+find_reached_bottom=ದಸ್ತಾವೇಜಿನ ಕೊನೆಯನ್ನು ತಲುಪಿದೆ, ಮೇಲಿನಿಂದ ಆರಂಭಿಸು
+find_not_found=ವಾಕ್ಯವು ಕಂಡು ಬಂದಿಲ್ಲ
+
+# Error panel labels
+error_more_info=ಹೆಚ್ಚಿನ ಮಾಹಿತಿ
+error_less_info=ಕಡಿಮೆ ಮಾಹಿತಿ
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=ಸಂದೇಶ: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=ರಾಶಿ: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ಕಡತ: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=ಸಾಲು: {{line}}
+rendering_error=ಪುಟವನ್ನು ನಿರೂಪಿಸುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ.
+
+# Predefined zoom values
+page_scale_width=ಪುಟದ ಅಗಲ
+page_scale_fit=ಪುಟದ ಸರಿಹೊಂದಿಕೆ
+page_scale_auto=ಸ್ವಯಂಚಾಲಿತ ಗಾತ್ರಬದಲಾವಣೆ
+page_scale_actual=ನಿಜವಾದ ಗಾತ್ರ
+
+# Loading indicator messages
+loading_error_indicator=ದೋಷ
+loading_error=PDF ಅನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ.
+invalid_file_error=ಅಮಾನ್ಯವಾದ ಅಥವ ಹಾಳಾದ PDF ಕಡತ.
+missing_file_error=PDF ಕಡತ ಇಲ್ಲ.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} ಟಿಪ್ಪಣಿ]
+password_ok=OK
+password_cancel=ರದ್ದು ಮಾಡು
+
+printing_not_supported=ಎಚ್ಚರಿಕೆ: ಈ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ಮುದ್ರಣಕ್ಕೆ ಸಂಪೂರ್ಣ ಬೆಂಬಲವಿಲ್ಲ.
+printing_not_ready=ಎಚ್ಚರಿಕೆ: PDF ಕಡತವು ಮುದ್ರಿಸಲು ಸಂಪೂರ್ಣವಾಗಿ ಲೋಡ್ ಆಗಿಲ್ಲ.
+web_fonts_disabled=ಜಾಲ ಅಕ್ಷರಶೈಲಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ: ಅಡಕಗೊಳಿಸಿದ PDF ಅಕ್ಷರಶೈಲಿಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.
+document_colors_disabled=PDF ದಸ್ತಾವೇಜುಗಳು ತಮ್ಮದೆ ಆದ ಬಣ್ಣಗಳನ್ನು ಬಳಸಲು ಅನುಮತಿ ಇರುವುದಿಲ್ಲ: 'ಪುಟಗಳು ತಮ್ಮದೆ ಆದ ಬಣ್ಣವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಅನುಮತಿಸು' ಅನ್ನು ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುತ್ತದೆ.
diff --git a/lib/viewers/pdf/locale/ko/chrome.properties b/lib/viewers/pdf/locale/ko/chrome.properties
deleted file mode 100644
index fcd2f8f..0000000
--- a/lib/viewers/pdf/locale/ko/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=이 PDF 문서는 제대로 표시되지 않을 수 있습니다.
-open_with_different_viewer=다른 뷰어로 열기
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/ko/metadata.inc b/lib/viewers/pdf/locale/ko/metadata.inc
deleted file mode 100644
index 04a8f07..0000000
--- a/lib/viewers/pdf/locale/ko/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>ko</em:locale>
- <em:name>PDF 뷰어</em:name>
- <em:description>Firefox가 PDF 파일을 HTML5를 이용하여 직접 보여줍니다.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/ko/viewer.properties b/lib/viewers/pdf/locale/ko/viewer.properties
index 240a151..f0bc908 100644
--- a/lib/viewers/pdf/locale/ko/viewer.properties
+++ b/lib/viewers/pdf/locale/ko/viewer.properties
@@ -1,123 +1,161 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
-previous.title=이전 쪽
+previous.title=이전 페이지
previous_label=이전
-next.title=다음 쪽
+next.title=다음 페이지
next_label=다음
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
-page_label=쪽:
-page_of=/ {{pageCount}}
+page_label=페이지:
+page_of=/{{pageCount}}
zoom_out.title=축소
zoom_out_label=축소
zoom_in.title=확대
zoom_in_label=확대
-zoom.title=확대 비율
-print.title=출력
-print_label=출력
-presentation_mode.title=프레젠테이션 모드로 전환
-presentation_mode_label=프레젠테이션 모드
+zoom.title=크기
+print.title=인쇄
+print_label=인쇄
+presentation_mode.title=발표 모드로 전환
+presentation_mode_label=발표 모드
open_file.title=파일 열기
open_file_label=열기
-download.title=내려받기
-download_label=내려받기
-bookmark.title=현 화면 (복사하거나 새 창에서 열기)
-bookmark_label=현 화면
+download.title=다운로드
+download_label=다운로드
+bookmark.title=지금 보이는 그대로 (복사하거나 새 창에 열기)
+bookmark_label=지금 보이는 그대로
+
+# Secondary toolbar and context menu
+tools.title=도구
+tools_label=도구
+first_page.title=첫 페이지로 이동
+first_page.label=첫 페이지로 이동
+first_page_label=첫 페이지로 이동
+last_page.title=마지막 페이지로 이동
+last_page.label=마지막 페이지로 이동
+last_page_label=마지막 페이지로 이동
+page_rotate_cw.title=시계방향으로 회전
+page_rotate_cw.label=시계방향으로 회전
+page_rotate_cw_label=시계방향으로 회전
+page_rotate_ccw.title=시계 반대방향으로 회전
+page_rotate_ccw.label=시계 반대방향으로 회전
+page_rotate_ccw_label=시계 반대방향으로 회전
+
+hand_tool_enable.title=손 도구 켜기
+hand_tool_enable_label=손 도구 켜기
+hand_tool_disable.title=손 도구 끄기
+hand_tool_disable_label=손 도구 끄기
+
+# Document properties dialog box
+document_properties.title=문서 속성…
+document_properties_label=문서 속성…
+document_properties_file_name=파일 이름:
+document_properties_file_size=파일 사이즈:
+document_properties_kb={{size_kb}} KB ({{size_b}}바이트)
+document_properties_mb={{size_mb}} MB ({{size_b}}바이트)
+document_properties_title=제목:
+document_properties_author=저자:
+document_properties_subject=주제:
+document_properties_keywords=키워드:
+document_properties_creation_date=생성일:
+document_properties_modification_date=수정일:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=생성자:
+document_properties_producer=PDF 생성기:
+document_properties_version=PDF 버전:
+document_properties_page_count=총 페이지:
+document_properties_close=닫기
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=사이드바 보이기/숨기기
-toggle_sidebar_label=사이드바 보이기/숨기기
-outline.title=문서 개요 보이기
+toggle_sidebar.title=탐색창 열고 닫기
+toggle_sidebar_label=탐색창 열고 닫기
+outline.title=문서 개요 보기
outline_label=문서 개요
-thumbs.title=쪽 작게 보기
-thumbs_label=쪽 작게 보기
-findbar.title=문서 내에서 찾기
-findbar_label=찾기
+thumbs.title=미리보기
+thumbs_label=미리보기
+findbar.title=검색
+findbar_label=검색
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
-thumb_page_title={{page}} 쪽
+thumb_page_title={{page}}쪽
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas={{page}}쪽의 썸네일
-
-# Context menu
-first_page.label=첫 쪽으로
-last_page.label=끝 쪽으로
-page_rotate_cw.label=시계방향 회전
-page_rotate_ccw.label=반시계방향 회전
+thumb_page_canvas={{page}}쪽 미리보기
# Find panel button title and messages
-find_label=찾기:
-find_previous.title=이전 구절 찾기
+find_label=검색:
+find_previous.title=지정 문자열에 일치하는 1개 부분을 검색
find_previous_label=이전
-find_next.title=다음 구절 찾기
+find_next.title=지정 문자열에 일치하는 다음 부분을 검색
find_next_label=다음
-find_highlight=모두 강조
-find_match_case_label=대/소문자까지 정확히
-find_reached_top=문서의 처음, 끝에서부터 계속
-find_reached_bottom=문서의 끝, 처음에서부터 계속
-find_not_found=구절을 찾을 수 없습니다
+find_highlight=모두 강조 표시
+find_match_case_label=대문자/소문자 구별
+find_reached_top=문서 처음까지 검색하고 끝으로 돌아와 검색했습니다.
+find_reached_bottom=문서 끝까지 검색하고 앞으로 돌아와 검색했습니다.
+find_not_found=검색 결과 없음
# Error panel labels
-error_more_info=더 보기
-error_less_info=간략히
+error_more_info=정보 더 보기
+error_less_info=정보 간단히 보기
error_close=닫기
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (build: {{build}})
+error_version_info=PDF.js v{{version}} (빌드: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=메시지: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=스택: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=파일: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=행: {{line}}
-rendering_error=쪽 렌더링 중 오류가 발생했습니다.
+error_line=줄 번호: {{line}}
+rendering_error=페이지를 렌더링하다 오류가 났습니다.
# Predefined zoom values
-page_scale_width=너비 맞춤
-page_scale_fit=쪽 맞춤
-page_scale_auto=자동 맞춤
-page_scale_actual=실제 크기
+page_scale_width=페이지 너비에 맞춤
+page_scale_fit=페이지에 맞춤
+page_scale_auto=알아서 맞춤
+page_scale_actual=실제 크기에 맞춤
# Loading indicator messages
loading_error_indicator=오류
-loading_error=PDF를 불러오던 중 오류가 발생했습니다.
-invalid_file_error=PDF 파일이 아니거나 깨진 파일입니다.
+loading_error=PDF를 읽는 중 오류가 생겼습니다.
+invalid_file_error=유효하지 않거나 파손된 PDF 파일
missing_file_error=PDF 파일이 없습니다.
# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
-# "{{type}}" will be replaced with an annotation type from a list defined in
+# "{{[type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Annotation]
-request_password=암호로 보호되는 PDF파일입니다:
+text_annotation_type.alt=[{{type}} 주석]
+password_label=이 PDF 파일을 열 수 있는 암호를 입력하십시오.
+password_invalid=잘못된 암호입니다. 다시 시도해 주십시오.
+password_ok=확인
+password_cancel=취소
-printing_not_supported=경고: 이 브라우져는 출력을 완전히는 지원하지 않습니다.
-printing_not_ready=경고: 이 PDF 파일은 완전히 적재되지 않았습니다.
-web_fonts_disabled=웹 폰트 사용이 비활성되었습니다: 내장 PDF 폰트를 사용할 수 없습니다.
-web_colors_disabled=웹 컬러가 비활성되었습니다.
+printing_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다.
+printing_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다.
+web_fonts_disabled=웹 폰트가 꺼져있음: 내장된 PDF 글꼴을 쓸 수 없습니다.
+document_colors_disabled=PDF 문서의 색상을 쓰지 못하게 되어 있음: \'웹 페이지 자체 색상 사용 허용\'이 브라우저에서 꺼져 있습니다.
diff --git a/lib/viewers/pdf/locale/ku/viewer.properties b/lib/viewers/pdf/locale/ku/viewer.properties
new file mode 100644
index 0000000..c614fa1
--- /dev/null
+++ b/lib/viewers/pdf/locale/ku/viewer.properties
@@ -0,0 +1,139 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Rûpela berê
+previous_label=Paşve
+next.title=Rûpela pêş
+next_label=Pêş
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Rûpel:
+page_of=/ {{pageCount}}
+
+zoom_out.title=Dûr bike
+zoom_out_label=Dûr bike
+zoom_in.title=Nêzîk bike
+zoom_in_label=Nêzîk bike
+zoom.title=Nêzîk Bike
+presentation_mode.title=Derbasî mûda pêşkêşkariyê bibe
+presentation_mode_label=Moda Pêşkêşkariyê
+open_file.title=Pelî veke
+open_file_label=Veke
+print.title=Çap bike
+print_label=Çap bike
+download.title=Jêbar bike
+download_label=Jêbar bike
+bookmark.title=Xuyakirina niha (kopî yan jî di pencereyeke nû de veke)
+bookmark_label=Xuyakirina niha
+
+# Secondary toolbar and context menu
+tools.title=Amûr
+tools_label=Amûr
+first_page.title=Here rûpela yekemîn
+first_page.label=Here rûpela yekemîn
+first_page_label=Here rûpela yekemîn
+last_page.title=Here rûpela dawîn
+last_page.label=Here rûpela dawîn
+last_page_label=Here rûpela dawîn
+page_rotate_cw.title=Bi aliyê saetê ve bizivirîne
+page_rotate_cw.label=Bi aliyê saetê ve bizivirîne
+page_rotate_cw_label=Bi aliyê saetê ve bizivirîne
+page_rotate_ccw.title=Berevajî aliyê saetê ve bizivirîne
+page_rotate_ccw.label=Berevajî aliyê saetê ve bizivirîne
+page_rotate_ccw_label=Berevajî aliyê saetê ve bizivirîne
+
+
+# Document properties dialog box
+document_properties_title=Sernav:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Darikê kêlekê veke/bigire
+toggle_sidebar_label=Darikê kêlekê veke/bigire
+outline.title=Şemaya belgeyê nîşan bide
+outline_label=Şemaya belgeyê
+thumbs.title=Wênekokan nîşan bide
+thumbs_label=Wênekok
+findbar.title=Di belgeyê de bibîne
+findbar_label=Bibîne
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Rûpel {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Wênekoka rûpelê {{page}}
+
+# Find panel button title and messages
+find_label=Bibîne:
+find_previous.title=Peyva berê bibîne
+find_previous_label=Paşve
+find_next.title=Peyya pêş bibîne
+find_next_label=Pêşve
+find_highlight=Tevî beloq bike
+find_match_case_label=Ji bo tîpên hûrdek-girdek bihîstyar
+find_reached_top=Gihîşt serê rûpelê, ji dawiya rûpelê bidomîne
+find_reached_bottom=Gihîşt dawiya rûpelê, ji serê rûpelê bidomîne
+find_not_found=Peyv nehat dîtin
+
+# Error panel labels
+error_more_info=Zêdetir agahî
+error_less_info=Zêdetir agahî
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js versiyon {{version}} (avanî: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Peyam: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Komik: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Pel: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Rêzik: {{line}}
+rendering_error=Di vehûrandina rûpelê de çewtî çêbû.
+
+# Predefined zoom values
+page_scale_width=Firehiya rûpelê
+page_scale_fit=Di rûpelê de bicî bike
+page_scale_auto=Xweber nêzîk bike
+page_scale_actual=Mezinahiya rastîn
+
+# Loading indicator messages
+loading_error_indicator=Xeletî
+loading_error=Dema ku PDF dihat barkirin çewtiyek çêbû.
+invalid_file_error=Pelê PDFê nederbasdar yan jî xirabe ye.
+missing_file_error=Pelê PDFê kêm e.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Nîşaneya {{type}}ê]
+password_label=Ji bo PDFê vekî şîfreyê binivîse.
+password_invalid=Şîfre çewt e. Tika ye dîsa biceribîne.
+password_ok=Temam
+password_cancel=Betal
+
+printing_not_supported=Hişyarî: Çapkirin ji hêla vê gerokê ve bi temamî nayê destekirin.
+printing_not_ready=Hişyarî: PDF bi temamî nehat barkirin û ji bo çapê ne amade ye.
+web_fonts_disabled=Fontên Webê neçalak in: Fontên PDFê yên veşartî nayên bikaranîn.
+document_colors_disabled=Destûr tune ye ku belgeyên PDFê rengên xwe bi kar bînin: Di gerokê de 'destûrê bide rûpelan ku rengên xwe bi kar bînin' nehatiye çalakirin.
diff --git a/lib/viewers/pdf/locale/lg/viewer.properties b/lib/viewers/pdf/locale/lg/viewer.properties
new file mode 100644
index 0000000..5c88487
--- /dev/null
+++ b/lib/viewers/pdf/locale/lg/viewer.properties
@@ -0,0 +1,103 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Omuko Ogubadewo
+next.title=Omuko Oguddako
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Omuko:
+page_of=ku {{pageCount}}
+
+zoom_out.title=Zimbulukusa
+zoom_out_label=Zimbulukusa
+zoom_in.title=Funza Munda
+zoom_in_label=Funza Munda
+zoom.title=Gezzamu
+open_file.title=Bikula Fayiro
+open_file_label=Ggulawo
+print.title=Fulumya
+print_label=Fulumya
+download.title=Tikula
+download_label=Tikula
+bookmark.title=Endabika eriwo (koppa oba gulawo mu diriisa epya)
+bookmark_label=Endabika Eriwo
+
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+outline.title=Laga Ensalo ze Kiwandiko
+outline_label=Ensalo ze Ekiwandiko
+thumbs.title=Laga Ekifanyi Mubufunze
+thumbs_label=Ekifanyi Mubufunze
+findbar_label=Zuula
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Omuko {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Ekifananyi kyo Omuko Mubufunze {{page}}
+
+# Find panel button title and messages
+find_previous.title=Zuula awayise mukweddamu mumiteddera
+find_next.title=Zuula ekidako mukweddamu mumiteddera
+find_highlight=Londa byonna
+find_not_found=Emiteddera tezuuliddwa
+
+# Error panel labels
+error_more_info=Ebisingawo
+error_less_info=Mubumpimpi
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Obubaaka: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Ebipangiddwa: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fayiro {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Layini: {{line}}
+rendering_error=Wabadewo ensobi muku tekawo omuko.
+
+# Predefined zoom values
+page_scale_width=Obugazi bwo Omuko
+page_scale_fit=Okutuka kwo Omuko
+page_scale_auto=Okwefunza no Kwegeza
+page_scale_actual=Obunene Obutufu
+
+# Loading indicator messages
+loading_error_indicator=Ensobi
+loading_error=Wabadewo ensobi mukutika PDF.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Enyonyola]
+password_ok=OK
+password_cancel=Sazaamu
+
+printing_not_supported=Okulaabula: Okulumya empapula tekuwagirwa enonyeso enno.
diff --git a/lib/viewers/pdf/locale/lij/viewer.properties b/lib/viewers/pdf/locale/lij/viewer.properties
new file mode 100644
index 0000000..dbab0a7
--- /dev/null
+++ b/lib/viewers/pdf/locale/lij/viewer.properties
@@ -0,0 +1,116 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+previous.title = Pàgina precedénte
+previous_label = Precedénte
+next.title = Pàgina dòppo
+next_label = Pròscima
+page_label = Pàgina:
+page_of = de {{pageCount}}
+zoom_out.title = Diminoìsci zoom
+zoom_out_label = Diminoìsci zoom
+zoom_in.title = Aoménta zoom
+zoom_in_label = Aoménta zoom
+zoom.title = Zoom
+print.title = Stànpa
+print_label = Stànpa
+open_file.title = Àrvi file
+open_file_label = Àrvi
+download.title = Descaregaménto
+download_label = Descaregaménto
+bookmark.title = Vixón corénte (còpia ò àrvi inte 'n nêuvo barcón)
+bookmark_label = Vixón corénte
+outline.title = Véddi strutûa documénto
+outline_label = Strutûa documénto
+thumbs.title = Móstra miniatûe
+thumbs_label = Miniatûe
+thumb_page_title = Pàgina {{page}}
+thumb_page_canvas = Miniatûa da pàgina {{page}}
+error_more_info = Ciù informaçioìn
+error_less_info = Mêno informaçioìn
+error_version_info = PDF.js v{{version}} (build: {{build}})
+error_close = Særa
+missing_file_error = O file PDF o no gh'é.
+toggle_sidebar.title = Atîva/dizatîva bâra de sciànco
+toggle_sidebar_label = Atîva/dizatîva bâra de sciànco
+error_message = Mesàggio: {{message}}
+error_stack = Stack: {{stack}}
+error_file = File: {{file}}
+error_line = Lìnia: {{line}}
+rendering_error = Gh'é stæto 'n'erô itno rendering da pàgina.
+page_scale_width = Larghéssa pàgina
+page_scale_fit = Adàtta a una pàgina
+page_scale_auto = Zoom aotomàtico
+page_scale_actual = Dimenscioìn efetîve
+loading_error_indicator = Erô
+loading_error = S'é verificòu 'n'erô itno caregaménto do PDF.
+printing_not_supported = Atençión: a stànpa a no l'é conpletaménte soportâ da sto navegatô.
+
+# Context menu
+page_rotate_cw.label=Gîa in sénso do reléuio
+page_rotate_ccw.label=Gîa in sénso do reléuio a-a revèrsa
+
+presentation_mode.title=Vànni into mòddo de prezentaçión
+presentation_mode_label=Mòddo de prezentaçión
+
+find_label = Trêuva:
+find_previous.title = Trêuva a ripetiçión precedénte do tèsto da çercâ
+find_previous_label = Precedénte
+find_next.title = Trêuva a ripetiçión dòppo do tèsto da çercâ
+find_next_label = Segoénte
+find_highlight = Evidénçia
+find_match_case_label = Maióscole/minóscole
+find_reached_bottom = Razónto l'inìçio da pàgina, contìnoa da-a fìn
+find_reached_top = Razónto a fìn da pàgina, contìnoa da l'inìçio
+find_not_found = Tèsto no trovòu
+findbar.title = Trêuva into documénto
+findbar_label = Trêuva
+first_page.label = Vànni a-a prìmma pàgina
+last_page.label = Vànni a l'ùrtima pàgina
+invalid_file_error = O file PDF o l'é no vàlido ò aroinòu.
+
+web_fonts_disabled = I font do web én dizativæ: inposcìbile adêuviâ i caràteri do PDF.
+printing_not_ready = Atençión: o PDF o no l'é ancón caregòu conpletaménte pe-a stànpa.
+
+document_colors_disabled = No l'é poscìbile adêuviâ i pròpi coî pe-i documénti PDF: l'opçión do navegatô 'Permètti a-e pàgine de çèrne i pròpi coî in càngio de quélli inpostæ' a l'é dizativâ.
+text_annotation_type.alt = [Anotaçión: {{type}}]
+
+first_page.title = Vànni a-a prìmma pàgina
+first_page_label = Vànni a-a prìmma pàgina
+last_page.title = Vànni a l'ùrtima pàgina
+last_page_label = Vànni a l'ùrtima pàgina
+page_rotate_ccw.title = Gîa into vèrso antiorâio
+page_rotate_ccw_label = Gîa into vèrso antiorâio
+page_rotate_cw.title = Gîa into vèrso orâio
+page_rotate_cw_label = Gîa into vèrso orâio
+tools.title = Struménti
+tools_label = Struménti
+password_label = Dìmme a paròlla segrêta pe arvî sto file PDF.
+password_invalid = Paròlla segrêta sbaliâ. Prêuva tórna.
+password_ok = Va bén
+password_cancel = Anùlla
+
+document_properties.title = Propietæ do documénto…
+document_properties_label = Propietæ do documénto…
+document_properties_file_name = Nómme file:
+document_properties_file_size = Dimensción file:
+document_properties_kb = {{size_kb}} kB ({{size_b}} byte)
+document_properties_mb = {{size_kb}} MB ({{size_b}} byte)
+document_properties_title = Tìtolo:
+document_properties_author = Aotô:
+document_properties_subject = Ogétto:
+document_properties_keywords = Paròlle ciâve:
+document_properties_creation_date = Dæta creaçión:
+document_properties_modification_date = Dæta cangiaménto:
+document_properties_date_string = {{date}}, {{time}}
+document_properties_creator = Aotô originâle:
+document_properties_producer = Produtô PDF:
+document_properties_version = Versción PDF:
+document_properties_page_count = Contézzo pàgine:
+document_properties_close = Særa
+
+hand_tool_enable.title = Atîva struménto màn
+hand_tool_enable_label = Atîva struménto màn
+hand_tool_disable.title = Dizatîva struménto màn
+hand_tool_disable_label = Dizatîva struménto màn
diff --git a/lib/viewers/pdf/locale/locale.properties b/lib/viewers/pdf/locale/locale.properties
index 1e50dab..9aded1b 100644
--- a/lib/viewers/pdf/locale/locale.properties
+++ b/lib/viewers/pdf/locale/locale.properties
@@ -1,63 +1,312 @@
+[ach]
+@import url(ach/viewer.properties)
+
+[af]
+@import url(af/viewer.properties)
+
+[ak]
+@import url(ak/viewer.properties)
+
+[an]
+@import url(an/viewer.properties)
+
[ar]
@import url(ar/viewer.properties)
+[as]
+@import url(as/viewer.properties)
+
+[ast]
+@import url(ast/viewer.properties)
+
+[az]
+@import url(az/viewer.properties)
+
+[be]
+@import url(be/viewer.properties)
+
+[bg]
+@import url(bg/viewer.properties)
+
+[bn-BD]
+@import url(bn-BD/viewer.properties)
+
+[bn-IN]
+@import url(bn-IN/viewer.properties)
+
+[br]
+@import url(br/viewer.properties)
+
+[bs]
+@import url(bs/viewer.properties)
+
[ca]
@import url(ca/viewer.properties)
[cs]
@import url(cs/viewer.properties)
+[csb]
+@import url(csb/viewer.properties)
+
+[cy]
+@import url(cy/viewer.properties)
+
[da]
@import url(da/viewer.properties)
[de]
@import url(de/viewer.properties)
+[el]
+@import url(el/viewer.properties)
+
+[en-GB]
+@import url(en-GB/viewer.properties)
+
[en-US]
@import url(en-US/viewer.properties)
-[es]
-@import url(es/viewer.properties)
+[en-ZA]
+@import url(en-ZA/viewer.properties)
+
+[eo]
+@import url(eo/viewer.properties)
+
+[es-AR]
+@import url(es-AR/viewer.properties)
+
+[es-CL]
+@import url(es-CL/viewer.properties)
+
+[es-ES]
+@import url(es-ES/viewer.properties)
+
+[es-MX]
+@import url(es-MX/viewer.properties)
+
+[et]
+@import url(et/viewer.properties)
+
+[eu]
+@import url(eu/viewer.properties)
+
+[fa]
+@import url(fa/viewer.properties)
+
+[ff]
+@import url(ff/viewer.properties)
[fi]
@import url(fi/viewer.properties)
[fr]
@import url(fr/viewer.properties)
+[fy-NL]
+@import url(fy-NL/viewer.properties)
+
+[ga-IE]
+@import url(ga-IE/viewer.properties)
+
+[gd]
+@import url(gd/viewer.properties)
+
+[gl]
+@import url(gl/viewer.properties)
+
+[gu-IN]
+@import url(gu-IN/viewer.properties)
+
[he]
@import url(he/viewer.properties)
+[hi-IN]
+@import url(hi-IN/viewer.properties)
+
+[hr]
+@import url(hr/viewer.properties)
+
+[hu]
+@import url(hu/viewer.properties)
+
+[hy-AM]
+@import url(hy-AM/viewer.properties)
+
+[id]
+@import url(id/viewer.properties)
+
+[is]
+@import url(is/viewer.properties)
+
[it]
@import url(it/viewer.properties)
[ja]
@import url(ja/viewer.properties)
+[ka]
+@import url(ka/viewer.properties)
+
+[kk]
+@import url(kk/viewer.properties)
+
+[km]
+@import url(km/viewer.properties)
+
+[kn]
+@import url(kn/viewer.properties)
+
+[ko]
+@import url(ko/viewer.properties)
+
+[ku]
+@import url(ku/viewer.properties)
+
+[lg]
+@import url(lg/viewer.properties)
+
+[lij]
+@import url(lij/viewer.properties)
+
+[lt]
+@import url(lt/viewer.properties)
+
+[lv]
+@import url(lv/viewer.properties)
+
+[mai]
+@import url(mai/viewer.properties)
+
+[mk]
+@import url(mk/viewer.properties)
+
+[ml]
+@import url(ml/viewer.properties)
+
+[mn]
+@import url(mn/viewer.properties)
+
+[mr]
+@import url(mr/viewer.properties)
+
+[ms]
+@import url(ms/viewer.properties)
+
+[my]
+@import url(my/viewer.properties)
+
+[nb-NO]
+@import url(nb-NO/viewer.properties)
+
[nl]
@import url(nl/viewer.properties)
+[nn-NO]
+@import url(nn-NO/viewer.properties)
+
+[nso]
+@import url(nso/viewer.properties)
+
+[oc]
+@import url(oc/viewer.properties)
+
+[or]
+@import url(or/viewer.properties)
+
+[pa-IN]
+@import url(pa-IN/viewer.properties)
+
[pl]
@import url(pl/viewer.properties)
[pt-BR]
@import url(pt-BR/viewer.properties)
+[pt-PT]
+@import url(pt-PT/viewer.properties)
+
+[rm]
+@import url(rm/viewer.properties)
+
[ro]
@import url(ro/viewer.properties)
[ru]
@import url(ru/viewer.properties)
+[rw]
+@import url(rw/viewer.properties)
+
+[sah]
+@import url(sah/viewer.properties)
+
+[si]
+@import url(si/viewer.properties)
+
+[sk]
+@import url(sk/viewer.properties)
+
+[sl]
+@import url(sl/viewer.properties)
+
+[son]
+@import url(son/viewer.properties)
+
+[sq]
+@import url(sq/viewer.properties)
+
[sr]
@import url(sr/viewer.properties)
-[sv]
-@import url(sv/viewer.properties)
+[sv-SE]
+@import url(sv-SE/viewer.properties)
+
+[sw]
+@import url(sw/viewer.properties)
+
+[ta]
+@import url(ta/viewer.properties)
+
+[ta-LK]
+@import url(ta-LK/viewer.properties)
+
+[te]
+@import url(te/viewer.properties)
+
+[th]
+@import url(th/viewer.properties)
+
+[tl]
+@import url(tl/viewer.properties)
+
+[tn]
+@import url(tn/viewer.properties)
+
+[tr]
+@import url(tr/viewer.properties)
+
+[uk]
+@import url(uk/viewer.properties)
+
+[ur]
+@import url(ur/viewer.properties)
+
+[vi]
+@import url(vi/viewer.properties)
+
+[wo]
+@import url(wo/viewer.properties)
+
+[xh]
+@import url(xh/viewer.properties)
[zh-CN]
@import url(zh-CN/viewer.properties)
[zh-TW]
@import url(zh-TW/viewer.properties)
+[zu]
+@import url(zu/viewer.properties)
+
diff --git a/lib/viewers/pdf/locale/lt/chrome.properties b/lib/viewers/pdf/locale/lt/chrome.properties
deleted file mode 100644
index 228012b..0000000
--- a/lib/viewers/pdf/locale/lt/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=PDF dokumentas gali būti atvaizduojamas neteisingai.
-open_with_different_viewer=Atidaryti su kita programa
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/lt/metadata.inc b/lib/viewers/pdf/locale/lt/metadata.inc
deleted file mode 100644
index e084157..0000000
--- a/lib/viewers/pdf/locale/lt/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>lt</em:locale>
- <em:name>PDF peržiūros programa</em:name>
- <em:description>PDF bylos vaizduojamos tiesiogiai, naudojant HTML5 Firefox naršyklėje.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/lt/viewer.properties b/lib/viewers/pdf/locale/lt/viewer.properties
index 2ad6406..fefb159 100644
--- a/lib/viewers/pdf/locale/lt/viewer.properties
+++ b/lib/viewers/pdf/locale/lt/viewer.properties
@@ -1,121 +1,161 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Ankstesnis puslapis
previous_label=Ankstesnis
-next.title=Sekantis puslapis
-next_label=Sekantis
+next.title=Kitas puslapis
+next_label=Kitas
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Puslapis:
page_of=iš {{pageCount}}
-zoom_out.title=Mažinti
-zoom_out_label=Mažinti
-zoom_in.title=Didinti
-zoom_in_label=Didinti
+zoom_out.title=Sumažinti
+zoom_out_label=Sumažinti
+zoom_in.title=Padidinti
+zoom_in_label=Padidinti
zoom.title=Mastelis
print.title=Spausdinti
print_label=Spausdinti
-presentation_mode.title=Įjungti pateikimo būseną
-presentation_mode_label=Pateikimo būsena
-open_file.title=Atverti bylą
+presentation_mode.title=Pereiti į pateikties veikseną
+presentation_mode_label=Pateikties veiksena
+open_file.title=Atverti failą
open_file_label=Atverti
-download.title=Atsiųsti
-download_label=Atsiųsti
-bookmark.title=Dabartinis rodymas (kopijuoti arba atidaryti naudojame lange)
-bookmark_label=Dabartinis rodymas
+download.title=Parsiųsti
+download_label=Parsiųsti
+bookmark.title=Esamojo rodinio saitas (kopijavimui ar atvėrimui kitame lange)
+bookmark_label=Esamasis rodinys
+
+# Secondary toolbar and context menu
+tools.title=Priemonės
+tools_label=Priemonės
+first_page.title=Eiti į pirmą puslapį
+first_page.label=Eiti į pirmą puslapį
+first_page_label=Eiti į pirmą puslapį
+last_page.title=Eiti į paskutinį puslapį
+last_page.label=Eiti į paskutinį puslapį
+last_page_label=Eiti į paskutinį puslapį
+page_rotate_cw.title=Pasukti pagal laikrodžio rodyklę
+page_rotate_cw.label=Pasukti pagal laikrodžio rodyklę
+page_rotate_cw_label=Pasukti pagal laikrodžio rodyklę
+page_rotate_ccw.title=Pasukti prieš laikrodžio rodyklę
+page_rotate_ccw.label=Pasukti prieš laikrodžio rodyklę
+page_rotate_ccw_label=Pasukti prieš laikrodžio rodyklę
+
+hand_tool_enable.title=Įgalinti vilkimo veikseną
+hand_tool_enable_label=Įgalinti vilkimo veikseną
+hand_tool_disable.title=Išjungti vilkimo veikseną
+hand_tool_disable_label=Išjungti vilkimo veikseną
+
+# Document properties dialog box
+document_properties.title=Dokumento savybės…
+document_properties_label=Dokumento savybės…
+document_properties_file_name=Failo vardas:
+document_properties_file_size=Failo dydis:
+document_properties_kb={{size_kb}} KB ({{size_b}} B)
+document_properties_mb={{size_mb}} MB ({{size_b}} B)
+document_properties_title=Antraštė:
+document_properties_author=Autorius:
+document_properties_subject=Tema:
+document_properties_keywords=Reikšminiai žodžiai:
+document_properties_creation_date=Sukūrimo data:
+document_properties_modification_date=Modifikavimo data:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Kūrėjas:
+document_properties_producer=PDF generatorius:
+document_properties_version=PDF versija:
+document_properties_page_count=Puslapių skaičius:
+document_properties_close=Užverti
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Perjungti šoninę juostą
-toggle_sidebar_label=Perjungti šoninę juostą
-outline.title=Rodyti dokumento turinį
-outline_label=Dokumento turinys
-thumbs.title=Rodyti miniatiūras
+toggle_sidebar.title=Rodyti / slėpti šoninį polangį
+toggle_sidebar_label=Å oninis polangis
+outline.title=Rodyti dokumento metmenis
+outline_label=Dokumento metmenys
+thumbs.title=Rodyti puslapių miniatiūras
thumbs_label=Miniatiūros
-findbar.title=Paieška dokumente
-findbar_label=Paieška
+findbar.title=Ieškoti dokumente
+findbar_label=Ieškoti
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
-thumb_page_title=Puslapis {{page}}
+thumb_page_title={{page}} puslapis
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=Miniatūra iš {{page}} puslapio
-
-# Context menu
-first_page.label=Nukreipimas į pirmą puslapį
-last_page.label=Nukreipimas į paskutinį puslapį
-page_rotate_cw.label=Sukimas pagal laikrodžio rodyklę
-page_rotate_ccw.label=Sukimas prieš laikrodžio rodyklę
+thumb_page_canvas={{page}} puslapio miniatiūra
# Find panel button title and messages
-find_label=Paieška:
-find_previous.title=Ankstesnis paieškos atitikmuo
+find_label=Ieškoti:
+find_previous.title=Ieškoti ankstesnio frazės egzemplioriaus
find_previous_label=Ankstesnis
-find_next.title=Sekantis paieškos atitikmuo
-find_next_label=Sekantis
-find_highlight=Pažymėti visus
+find_next.title=Ieškoti tolesnio frazės egzemplioriaus
+find_next_label=Tolesnis
+find_highlight=Viską paryškinti
find_match_case_label=Skirti didžiąsias ir mažąsias raides
-find_reached_top=Pasiektas dokumento viršus, pradėti nuo apačios
-find_reached_bottom=Pasiekta dokumento apačia, pradėti nuo viršaus
-find_not_found=Paieškos rezultatų nėra
+find_reached_top=Pasiekus dokumento pradžią, paieška pratęsta nuo pabaigos
+find_reached_bottom=Pasiekus dokumento pabaigą, paieška pratęsta nuo pradžios
+find_not_found=Ieškoma frazė nerasta
# Error panel labels
-error_more_info=Daugiau informacijos
-error_less_info=Mažiau informacijos
-error_close=Uždaryti
+error_more_info=IÅ¡samiau
+error_less_info=Glausčiau
+error_close=Užverti
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (build: {{build}})
+error_version_info=PDF.js v. {{version}} (darinys: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
-error_message=Žinutė: {{message}}
+error_message=Pranešimas: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Dėklas: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
-error_file=Byla: {{file}}
+error_file=Failas: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Eilutė: {{line}}
-rendering_error=Įvyko klaida atvaizduojant puslapį.
+rendering_error=Atvaizduojant puslapį, įvyko klaida.
# Predefined zoom values
-page_scale_width=Puslapio plotis
-page_scale_fit=Puslapio priderinimas
+page_scale_width=Priderinti prie lapo pločio
+page_scale_fit=Pritaikyti prie lapo dydžio
page_scale_auto=Automatinis mastelis
-page_scale_actual=Numatytas dydis
+page_scale_actual=Tikras dydis
# Loading indicator messages
loading_error_indicator=Klaida
-loading_error=PDF bylos įkelimo metu įvyko klaida.
-invalid_file_error=Neteisinga arba pažeista PDF byla.
-missing_file_error=Trūksta PDF bylos.
+loading_error=Įkeliant PDF failą, įvyko klaida.
+invalid_file_error=Tai nėra PDF failas arba jis yra sugadintas.
+missing_file_error=PDF failas nerastas.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Pastaba]
-request_password=PDF byla yra apsaugota slaptažodžiu:
+text_annotation_type.alt=[„{{type}}“ tipo anotacija]
+password_label=Įveskite slaptažodį šiam PDF failui atverti.
+password_invalid=Slaptažodis neteisingas. Bandykite dar kartą.
+password_ok=Gerai
+password_cancel=Atsisakyti
-printing_not_supported=Dėmesio: Naršyklė pilnai nepalaiko spausdinimo.
-web_fonts_disabled=Yra išjungti žiniatinklio šriftai: naudoti įterpus PDF šriftus nėra galima.
+printing_not_supported=Dėmesio! Spausdinimas šioje naršyklėje nėra pilnai realizuotas.
+printing_not_ready=Dėmesio! PDF failas dar nėra pilnai įkeltas spausdinimui.
+web_fonts_disabled=Neįgalinti saityno šriftai – šiame PDF faile esančių šriftų naudoti negalima.
+document_colors_disabled=PDF dokumentams neleidžiama nurodyti savo spalvų, nes išjungta naršyklės nuostata „Leisti tinklalapiams nurodyti spalvas“.
diff --git a/lib/viewers/pdf/locale/lv/viewer.properties b/lib/viewers/pdf/locale/lv/viewer.properties
new file mode 100644
index 0000000..f46f136
--- /dev/null
+++ b/lib/viewers/pdf/locale/lv/viewer.properties
@@ -0,0 +1,160 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Iepriekšējā lapa
+previous_label=Iepriekšējā
+next.title=Nākamā lapa
+next_label=Nākamā
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Lapa:
+page_of=no {{pageCount}}
+
+zoom_out.title=Attālināt
+zoom_out_label=Attālināt
+zoom_in.title=Pietuvināt
+zoom_in_label=Pietuvināt
+zoom.title=Palielinājums
+print.title=Drukāšana
+print_label=Drukāt
+presentation_mode.title=Pārslēgties uz Prezentācijas režīmu
+presentation_mode_label=Prezentācijas režīms
+open_file.title=Atvērt failu
+open_file_label=Atvērt
+download.title=Lejupielāde
+download_label=Lejupielādēt
+bookmark.title=Pašreizējais skats (kopēt vai atvērt jaunā logā)
+bookmark_label=Pašreizējais skats
+findbar.title=Meklēt dokumentā
+findbar_label=Meklēt
+attachments.title=Rādīt pielikumus
+attachments_label=Pielikumi
+
+
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Pārslēgt sānu joslu
+toggle_sidebar_label=Pārslēgt sānu joslu
+outline.title=Parādīt dokumenta saturu
+outline_label=Dokumenta saturs
+thumbs.title=Parādīt sīktēlus
+thumbs_label=Sīktēli
+
+# Find panel button title and messages
+find_label=Meklēt:
+find_previous.title=Atrast iepriekšējo
+find_previous_label=Iepriekšējā
+find_next.title=Atrast nākamo
+find_next_label=Nākamā
+find_highlight=Iekrāsot visas
+find_match_case_label=Lielo, mazo burtu jutīgs
+find_reached_top=Sasniegts dokumenta sākums, turpinām no beigām
+find_reached_bottom=Sasniegtas dokumenta beigas, turpinām no sākuma
+find_not_found=Frāze nav atrasta
+first_page.title=Iet uz pirmo lapu
+first_page.label=Iet uz pirmo lapu
+first_page_label=Iet uz pirmo lapu
+last_page.title=Iet uz pēdējo lapu
+last_page.label=Iet uz pēdējo lapu
+last_page_label=Iet uz pēdējo lapu
+tools.title=RÄ«ki
+tools_label=RÄ«ki
+page_rotate_cw.title=Pagriezt pa pulksteni
+page_rotate_cw.label=Pagriezt pa pulksteni
+page_rotate_cw_label=Pagriezt pa pulksteni
+page_rotate_ccw.title=Pagriezt pret pulksteni
+page_rotate_ccw.label=Pagriezt pret pulksteni
+page_rotate_ccw_label=Pagriezt pret pulksteni
+
+# Document properties dialog box
+document_properties.title=Dokumenta iestatījumi…
+document_properties_label=Dokumenta iestatījumi…
+document_properties_file_name=Faila nosaukums:
+document_properties_file_size=Faila izmērs:
+document_properties_kb={{size_kb}} KB ({{size_b}} biti)
+document_properties_mb={{size_mb}} MB ({{size_b}} biti)
+document_properties_title=Nosaukums:
+document_properties_author=Autors:
+document_properties_subject=Tēma:
+document_properties_keywords=Atslēgas vārdi:
+document_properties_creation_date=Izveides datums:
+document_properties_modification_date=LAbošanas datums:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Radītājs:
+document_properties_producer=PDF producents:
+document_properties_version=PDF versija:
+document_properties_page_count=Lapu skaits:
+document_properties_close=Aizvērt
+
+hand_tool_enable.title=Aktivēt rokas rīku
+hand_tool_enable_label=Aktivēt rokas rīku
+hand_tool_disable.title=Deaktivēt rokas rīku
+hand_tool_disable_label=Deaktivēt rokas rīku
+
+invalid_file_error=Nederīgs vai bojāts PDF fails.
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Lapa {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Lapas {{page}} sīktēls
+
+# Error panel labels
+error_more_info=Vairāk informācijas
+error_less_info=MAzāk informācijas
+error_close=Close
+
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Ziņojums: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Steks: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=File: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Rindiņa: {{line}}
+rendering_error=Attēlojot lapu radās kļūda
+missing_file_error=PDF fails nav atrasts.
+
+# Predefined zoom values
+page_scale_width=Lapas platumā
+page_scale_fit=Ietilpinot lapu
+page_scale_auto=Automātiskais izmērs
+page_scale_actual=Patiesais izmērs
+
+# Loading indicator messages
+# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
+loading_error_indicator=Kļūda
+loading_error=Ielādējot PDF notika kļūda.
+
+# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# "{{[type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} anotācija]
+
+text_annotation_type.alt=[{{type}} Anotācija]
+password_label=Ievadiet paroli, lai atvērtu PDF failu.
+password_invalid=Nepareiza parole, mēģiniet vēlreiz.
+password_ok=Labi
+password_cancel=Atcelt
+
+
+printing_not_supported=Uzmanību: Drukāšana no šī pārlūka darbojas tikai daļēji.
+web_fonts_disabled=Tīmekļa fonti nav aktivizēti: Nevar iegult PDF fontus.
+printing_not_ready=Uzmanību: PDF nav pilnībā ielādēts drukāšanai.
+document_colors_disabled=PDF dokumentiem nav atļauts izmantot pašiem savas krāsas: \'Atļaut lapām izvēlēties pašām savas krāsas\' ir deaktivēts pārlūkā.
+
diff --git a/lib/viewers/pdf/locale/mai/viewer.properties b/lib/viewers/pdf/locale/mai/viewer.properties
new file mode 100644
index 0000000..05d6c20
--- /dev/null
+++ b/lib/viewers/pdf/locale/mai/viewer.properties
@@ -0,0 +1,121 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=पछिला पृष्ठ
+previous_label=पछिला
+next.title=अगिला पृष्ठ
+next_label=आगाँ
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=पृष्ठ:
+page_of={{pageCount}} क
+
+zoom_out.title=छोट करू
+zoom_out_label=छोट करू
+zoom_in.title=पैघ करू
+zoom_in_label=जूम इन
+zoom.title=छोट-पैघ करू
+presentation_mode.title=प्रस्तुति अवस्थामे जाउ
+presentation_mode_label=प्रस्तुति अवस्था
+open_file.title=फाइल खोलू
+open_file_label=खोलू
+print.title=छापू
+print_label=छापू
+download.title=डाउनलोड
+download_label=डाउनलोड
+bookmark.title=मोजुदा दृश्य (नव विंडोमे नकल लिअ अथवा खोलू)
+bookmark_label=वर्तमान दृश्य
+
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_title=शीर्षक:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=स्लाइडर टागल
+toggle_sidebar_label=स्लाइडर टागल
+outline.title=दस्तावेज आउटलाइन देखाउ
+outline_label=दस्तावेज खाका
+thumbs.title=लघु-छवि देखाउ
+thumbs_label=लघु छवि
+findbar.title=दस्तावेजमे ढूँढू
+findbar_label=ताकू
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=पृष्ठ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=पृष्ठ {{page}} का लघु-चित्र
+
+# Find panel button title and messages
+find_label=ताकू:
+find_previous.title=खोजक पछिला उपस्थिति ताकू
+find_previous_label=पछिला
+find_next.title=खोजक अगिला उपस्थिति ताकू
+find_next_label=आगाँ
+find_highlight=सभटा आलोकित करू
+find_match_case_label=मिलान स्थिति
+find_reached_top=पृष्ठक शीर्ष जाए पहुँचल, तल सँ जारी
+find_reached_bottom=पृष्ठक तल मे जाए पहुँचल, शीर्ष सँ जारी
+find_not_found=वाकींश नहि भेटल
+
+# Error panel labels
+error_more_info=बेसी सूचना
+error_less_info=कम सूचना
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=संदेश: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=स्टैक: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=फ़ाइल: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=पंक्ति: {{line}}
+rendering_error=पृष्ठ रेंडरिंगक समय त्रुटि आएल.
+
+# Predefined zoom values
+page_scale_width=पृष्ठ चओड़ाइ
+page_scale_fit=पृष्ठ फिट
+page_scale_auto=स्वचालित जूम
+page_scale_actual=सही आकार
+
+# Loading indicator messages
+loading_error_indicator=त्रुटि
+loading_error=पीडीएफ लोड करैत समय एकटा त्रुटि भेल.
+invalid_file_error=अमान्य अथवा भ्रष्ट PDF फाइल.
+missing_file_error=अनुपस्थित PDF फाइल.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
+password_cancel=रद्द करू
+
+printing_not_supported=चेतावनी: ई ब्राउजर पर छपाइ पूर्ण तरह सँ समर्थित नहि अछि.
+printing_not_ready=चेतावनी: पीडीएफ छपाइक लेल पूर्ण तरह सँ लोड नहि अछि.
+web_fonts_disabled=वेब फॉन्ट्स निष्क्रिय अछि: अंतःस्थापित PDF फान्टसक उपयोगमे असमर्थ.
diff --git a/lib/viewers/pdf/locale/mk/viewer.properties b/lib/viewers/pdf/locale/mk/viewer.properties
new file mode 100644
index 0000000..18ded89
--- /dev/null
+++ b/lib/viewers/pdf/locale/mk/viewer.properties
@@ -0,0 +1,126 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Претходна страница
+previous_label=Претходна
+next.title=Следна страница
+next_label=Следна
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Страница:
+page_of=од {{pageCount}}
+
+zoom_out.title=Намалување
+zoom_out_label=Намали
+zoom_in.title=Зголемување
+zoom_in_label=Зголеми
+zoom.title=Променување на големина
+print.title=Печатење
+print_label=Печати
+open_file.title=Отварање датотека
+open_file_label=Отвори
+download.title=Преземање
+download_label=Преземи
+bookmark.title=Овој преглед (копирај или отвори во нов прозорец)
+bookmark_label=Овој преглед
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_slider.title=Вклучување на лизгач
+toggle_slider_label=Вклучи лизгач
+outline.title=Прикажување на содржина на документот
+outline_label=Содржина на документот
+thumbs.title=Прикажување на икони
+thumbs_label=Икони
+
+# Document outline messages
+no_outline=Нема содржина
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Страница {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Икона од страница {{page}}
+
+# Error panel labels
+error_more_info=Повеќе информации
+error_less_info=Помалку информации
+error_close=Затвори
+# LOCALIZATION NOTE (error_build): "{{build}}" will be replaced by the PDF.JS
+# build ID.
+error_build=PDF.JS Build: {{build}}
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Порака: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Датотека: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Линија: {{line}}
+rendering_error=Настана грешка при прикажувањето на страницата.
+
+# Predefined zoom values
+page_scale_width=Ширина на страница
+page_scale_fit=Цела страница
+page_scale_auto=Автоматска големина
+page_scale_actual=Вистинска големина
+
+loading_error_indicator=Грешка
+loading_error=Настана грешка при вчитувањето на PDF-от.
+
+# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# "{{[type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type=[{{type}} Забелешка]
+request_password=PDF-от е заштитен со лозинка:
+
+
+printing_not_supported=Предупредување: Печатењето не е целосно поддржано во овој прелистувач.
+
+find_highlight=Означи сѐ
+
+# Find panel button title and messages
+find_label=Најди:
+find_match_case_label=Токму така
+find_next.title=Најди ја следната појава на фразата
+find_next_label=Следно
+find_not_found=Фразата не е пронајдена
+find_previous.title=Најди ја предходната појава на фразата
+find_previous_label=Претходно
+find_reached_bottom=Барањето стигна до крајот на документот и почнува од почеток
+find_reached_top=Барањето стигна до почетокот на документот и почнува од крајот
+findbar.title=Најди во документот
+findbar_label=Најди
+
+# Context menu
+first_page.label=Оди до првата страница
+invalid_file_error=Невалидна или корумпирана PDF датотека.
+last_page.label=Оди до последната страница
+page_rotate_ccw.label=Ротирај спротивно од стрелките на часовникот
+page_rotate_cw.label=Ротирај по стрелките на часовникот
+presentation_mode.title=Премини во презентациски режим
+presentation_mode_label=Презентациски режим
+
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+missing_file_error=Недостасува PDF документ.
+printing_not_ready=Предупредување: PDF документот не е целосно вчитан за печатење.
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Вклучи странична лента
+toggle_sidebar_label=Вклучи странична лента
+web_fonts_disabled=Интернет фонтовите се оневозможени: не може да се користат вградените PDF фонтови.
diff --git a/lib/viewers/pdf/locale/ml/viewer.properties b/lib/viewers/pdf/locale/ml/viewer.properties
new file mode 100644
index 0000000..b92a8e2
--- /dev/null
+++ b/lib/viewers/pdf/locale/ml/viewer.properties
@@ -0,0 +1,139 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=മുമ്പുള്ള താള്‍
+previous_label=മുമ്പു്
+next.title=അടുത്ത താള്‍
+next_label=അടുത്തതു്
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=താള്‍:
+page_of={{pageCount}}
+
+zoom_out.title=ചെറുതാക്കുക
+zoom_out_label=ചെറുതാക്കുക
+zoom_in.title=വലുതാക്കുക
+zoom_in_label=വലുതാക്കുക
+zoom.title=വ്യാപ്തി മാറ്റുക
+presentation_mode.title=പ്രസന്റേഷന്‍ രീതിയിലേക്കു് മാറ്റുക
+presentation_mode_label=പ്രസന്റേഷന്‍ രീതി
+open_file.title=ഫയല്‍ തുറക്കുക
+open_file_label=തുറക്കുക
+print.title=പ്രിന്റ് ചെയ്യുക
+print_label=പ്രിന്റ് ചെയ്യുക
+download.title=ഡൌണ്‍ലോഡ് ചെയ്യുക
+download_label=ഡൌണ്‍ലോഡ് ചെയ്യുക
+bookmark.title=നിലവിലുള്ള കാഴ്ച (പുതിയ ജാലകത്തില്‍ പകര്‍ത്തുക അല്ലെങ്കില്‍ തുറക്കുക)
+bookmark_label=നിലവിലുള്ള കാഴ്ച
+
+# Secondary toolbar and context menu
+tools.title=ഉപകരണങ്ങള്‍
+tools_label=ഉപകരണങ്ങള്‍
+first_page.title=ആദ്യത്തെ താളിലേയ്ക്കു് പോകുക
+first_page.label=ആദ്യത്തെ താളിലേയ്ക്കു് പോകുക
+first_page_label=ആദ്യത്തെ താളിലേയ്ക്കു് പോകുക
+last_page.title=അവസാന താളിലേയ്ക്കു് പോകുക
+last_page.label=അവസാന താളിലേയ്ക്കു് പോകുക
+last_page_label=അവസാന താളിലേയ്ക്കു് പോകുക
+page_rotate_cw.title=ഘടികാരദിശയില്‍ കറക്കുക
+page_rotate_cw.label=ഘടികാരദിശയില്‍ കറക്കുക
+page_rotate_cw_label=ഘടികാരദിശയില്‍ കറക്കുക
+page_rotate_ccw.title=ഘടികാര ദിശയ്ക്കു് വിപരീതമായി കറക്കുക
+page_rotate_ccw.label=ഘടികാര ദിശയ്ക്കു് വിപരീതമായി കറക്കുക
+page_rotate_ccw_label=ഘടികാര ദിശയ്ക്കു് വിപരീതമായി കറക്കുക
+
+
+# Document properties dialog box
+document_properties_title=തലക്കെട്ട്‌
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=സൈഡ് ബാറിലേക്കു് മാറ്റുക
+toggle_sidebar_label=സൈഡ് ബാറിലേക്കു് മാറ്റുക
+outline.title=രേഖയുടെ ഔട്ട്ലൈന്‍ കാണിയ്ക്കുക
+outline_label=രേഖയുടെ ഔട്ട്ലൈന്‍
+thumbs.title=തംബ്നെയിലുകള്‍ കാണിയ്ക്കുക
+thumbs_label=തംബ്നെയിലുകള്‍
+findbar.title=രേഖയില്‍ കണ്ടുപിടിയ്ക്കുക
+findbar_label=കണ്ടെത്തുക
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=താള്‍ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas={{page}} താളിനുള്ള തംബ്നെയില്‍
+
+# Find panel button title and messages
+find_label=കണ്ടെത്തുക
+find_previous.title=വാചകം ഇതിനു മുന്‍പ്‌ ആവര്‍ത്തിച്ചത്‌ കണ്ടെത്തുക
+find_previous_label=മുമ്പു്
+find_next.title=വാചകം വീണ്ടും ആവര്‍ത്തിക്കുന്നത്‌ കണ്ടെത്തുക
+find_next_label=അടുത്തതു്
+find_highlight=എല്ലാം എടുത്തുകാണിയ്ക്കുക
+find_match_case_label=അക്ഷരങ്ങള്‍ ഒത്തുനോക്കുക
+find_reached_top=രേഖയുടെ മുകളില്‍ എത്തിയിരിക്കുന്നു, താഴെ നിന്നും തുടരുന്നു
+find_reached_bottom=രേഖയുടെ അവസാനം വരെ എത്തിയിരിക്കുന്നു, മുകളില്‍ നിന്നും തുടരുന്നു
+find_not_found=വാചകം കണ്ടെത്താനായില്ല
+
+# Error panel labels
+error_more_info=കൂടുതല്‍ വിവരം
+error_less_info=കുറച്ച് വിവരം
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=സന്ദേശം: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=സ്റ്റാക്ക്: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ഫയല്‍: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=വരി: {{line}}
+rendering_error=താള്‍ റെണ്ടര്‍ ചെയ്യുമ്പോള്‍‌ പിശകുണ്ടായിരിയ്ക്കുന്നു.
+
+# Predefined zoom values
+page_scale_width=താളിന്റെ വീതി
+page_scale_fit=താള്‍ പാകത്തിനാക്കുക
+page_scale_auto=സ്വയമായി വലുതാക്കുക
+page_scale_actual=യഥാര്‍ത്ഥ വ്യാപ്തി
+
+# Loading indicator messages
+loading_error_indicator=പിശക്
+loading_error=പിഡിഎഫ് ലഭ്യമാക്കുമ്പോള്‍ പിശക് ഉണ്ടായിരിയ്ക്കുന്നു.
+invalid_file_error=തെറ്റായ അല്ലെങ്കില്‍ തകരാറുള്ള പിഡിഎഫ് ഫയല്‍.
+missing_file_error=പിഡിഎഫ് ഫയല്‍ ലഭ്യമല്ല.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=ഈ പിഡിഎഫ് ഫയല്‍ തുറക്കുന്നതിനു് രഹസ്യവാക്ക് നല്‍കുക.
+password_invalid=തെറ്റായ രഹസ്യവാക്ക്, ദയവായി വീണ്ടും ശ്രമിയ്ക്കുക.
+password_ok=ശരി
+password_cancel=റദ്ദാക്കുക
+
+printing_not_supported=മുന്നറിയിപ്പു്: ഈ ബ്രൌസര്‍ പൂര്‍ണ്ണമായി പ്രിന്റിങ് പിന്തുണയ്ക്കുന്നില്ല.
+printing_not_ready=മുന്നറിയിപ്പു്: പ്രിന്റ് ചെയ്യുന്നതിനു് പിഡിഎഫ് പൂര്‍ണ്ണമായി ലഭ്യമല്ല.
+web_fonts_disabled=വെബിനുള്ള അക്ഷരസഞ്ചയങ്ങള്‍ പ്രവര്‍ത്തന രഹിതം: എംബഡ്ഡ് ചെയ്ത പിഡിഎഫ് അക്ഷരസഞ്ചയങ്ങള്‍ ഉപയോഗിയ്ക്കുവാന്‍ സാധ്യമല്ല.
+document_colors_disabled=സ്വന്തം നിറങ്ങള്‍ ഉപയോഗിയ്ക്കുവാന്‍ പിഡിഎഫ് രേഖകള്‍ക്കു് അനുവാദമില്ല: 'സ്വന്തം നിറങ്ങള്‍ ഉപയോഗിയ്ക്കുവാന്‍ താളുകളെ അനുവദിയ്ക്കുക' എന്നതു് ബ്രൌസറില്‍ നിര്‍ജീവമാണു്.
diff --git a/lib/viewers/pdf/locale/mn/viewer.properties b/lib/viewers/pdf/locale/mn/viewer.properties
new file mode 100644
index 0000000..f036644
--- /dev/null
+++ b/lib/viewers/pdf/locale/mn/viewer.properties
@@ -0,0 +1,65 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+
+zoom.title=Тэлэлт
+open_file.title=Файл нээ
+open_file_label=Нээ
+
+# Secondary toolbar and context menu
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+findbar_label=Ол
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+
+# Find panel button title and messages
+find_previous.title=Хайлтын өмнөх олдцыг харуулна
+find_next.title=Хайлтын дараагийн олдцыг харуулна
+find_not_found=Олдсонгүй
+
+# Error panel labels
+error_more_info=Нэмэлт мэдээлэл
+error_close=Хаа
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+
+# Predefined zoom values
+
+# Loading indicator messages
+loading_error_indicator=Алдаа
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+
diff --git a/lib/viewers/pdf/locale/mr/viewer.properties b/lib/viewers/pdf/locale/mr/viewer.properties
new file mode 100644
index 0000000..fafcf75
--- /dev/null
+++ b/lib/viewers/pdf/locale/mr/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=मागील पृष्ठ
+previous_label=मागील
+next.title=पुढील पृष्ठ
+next_label=पुढील
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=पृष्ठ:
+page_of=पैकी {{pageCount}}
+
+zoom_out.title=छोटे करा
+zoom_out_label=छोटे करा
+zoom_in.title=मोठे करा
+zoom_in_label=मोठे करा
+zoom.title=लहान किंवा मोठे करा
+presentation_mode.title=प्रस्तुतिकरण मोडचा वापर करा
+presentation_mode_label=प्रस्तुतिकरण मोड
+open_file.title=फाइल उघडा
+open_file_label=उघडा
+print.title=छपाई करा
+print_label=छपाई करा
+download.title=डाउनलोड करा
+download_label=डाउनलोड करा
+bookmark.title=सध्याचे अवलोकन (नविन पटलात प्रत बनवा किंवा उघडा)
+bookmark_label=सध्याचे अवलोकन
+
+# Secondary toolbar and context menu
+tools.title=साधने
+tools_label=साधने
+first_page.title=पहिल्या पानावर जा
+first_page.label=पहिल्या पानावर जा
+first_page_label=पहिल्या पानावर जा
+last_page.title=शेवटच्या पानावर जा
+last_page.label=शेवटच्या पानावर जा
+last_page_label=शेवटच्या पानावर जा
+page_rotate_cw.title=घड्याळाच्या काट्याच्या दिशेने फिरवा
+page_rotate_cw.label=घड्याळाच्या काट्याच्या दिशेने फिरवा
+page_rotate_cw_label=घड्याळाच्या काट्याच्या दिशेने फिरवा
+page_rotate_ccw.title=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा
+page_rotate_ccw.label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा
+page_rotate_ccw_label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा
+
+hand_tool_enable.title=हात साधन सुरू करा
+hand_tool_enable_label=हात साधन सुरू करा
+hand_tool_disable.title=हात साधन बंद करा
+hand_tool_disable_label=हात साधन बंद करा
+
+# Document properties dialog box
+document_properties.title=दस्तऐवज गुणधर्म…
+document_properties_label=दस्तऐवज गुणधर्म…
+document_properties_file_name=फाइलचे नाव:
+document_properties_file_size=फाइल आकार:
+document_properties_kb={{size_kb}} KB ({{size_b}} बाइट्स)
+document_properties_mb={{size_mb}} MB ({{size_b}} बाइट्स)
+document_properties_title=शिर्षक:
+document_properties_author=लेखक:
+document_properties_subject=विषय:
+document_properties_keywords=मुख्यशब्द:
+document_properties_creation_date=निर्माण दिनांक:
+document_properties_modification_date=दुरूस्ती दिनांक:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=निर्माता:
+document_properties_producer=PDF निर्माता:
+document_properties_version=PDF आवृत्ती:
+document_properties_page_count=पृष्ठ संख्या:
+document_properties_close=बंद करा
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=बाजूचीपट्टी टॉगल करा
+toggle_sidebar_label=बाजूचीपट्टी टॉगल करा
+outline.title=दस्तऐवज रूपरेषा दाखवा
+outline_label=दस्तऐवज रूपरेषा
+attachments.title=जोडपत्र दाखवा
+attachments_label=जोडपत्र
+thumbs.title=थंबनेल्स् दाखवा
+thumbs_label=थंबनेल्स्
+findbar.title=दस्तऐवजात शोधा
+findbar_label=शोधा
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=पृष्ठ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=पृष्ठाचे थंबनेल {{page}}
+
+# Find panel button title and messages
+find_label=शोधा:
+find_previous.title=वाकप्रयोगची मागील घटना शोधा
+find_previous_label=मागील
+find_next.title=वाकप्रयोगची पुढील घटना शोधा
+find_next_label=पुढील
+find_highlight=सर्व ठळक करा
+find_match_case_label=आकार जुळवा
+find_reached_top=दस्तऐवजाच्या शीर्षकास पोहचले, तळपासून पुढे
+find_reached_bottom=दस्तऐवजाच्या तळाला पोहचले, शीर्षकापासून पुढे
+find_not_found=वाकप्रयोग आढळले नाही
+
+# Error panel labels
+error_more_info=आणखी माहिती
+error_less_info=कमी माहिती
+error_close=बंद करा
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=संदेश: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=स्टॅक: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=फाइल: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=रेष: {{line}}
+rendering_error=पृष्ठ दाखवतेवेळी त्रुटी आढळली.
+
+# Predefined zoom values
+page_scale_width=पृष्ठाची रूंदी
+page_scale_fit=पृष्ठ बसवा
+page_scale_auto=स्वयं लाहन किंवा मोठे करणे
+page_scale_actual=प्रत्यक्ष आकार
+
+# Loading indicator messages
+loading_error_indicator=त्रुटी
+loading_error=PDF लोड करतेवेळी त्रुटी आढळली.
+invalid_file_error=अवैध किंवा दोषीत PDF फाइल.
+missing_file_error=न आढळणारी PDF फाइल.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} टिपण्णी]
+password_label=ही PDF फाइल उघडण्याकरिता पासवर्ड द्या.
+password_invalid=अवैध पासवर्ड. कृपया पुन्हा प्रयत्न करा.
+password_ok=ठीक आहे
+password_cancel=रद्द करा
+
+printing_not_supported=सावधानता: या ब्राउजरतर्फे छपाइ पूर्णपणे समर्थीत नाही.
+printing_not_ready=सावधानता: छपाईकरिता PDF पूर्णतया लोड झाले नाही.
+web_fonts_disabled=वेब फाँट्स असमर्थीत आहेत: एम्बेडेड PDF फाँट्स्चा वापर अशक्य.
+document_colors_disabled=PDF दस्ताएवजांना त्यांचे रंग वापरण्यास अनुमती नाही: ब्राउजरमध्ये ' पानांना त्यांचे रंग निवडण्यास अनुमती द्या' बंद केले आहे.
diff --git a/lib/viewers/pdf/locale/ms/viewer.properties b/lib/viewers/pdf/locale/ms/viewer.properties
new file mode 100644
index 0000000..e110e00
--- /dev/null
+++ b/lib/viewers/pdf/locale/ms/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Laman Sebelumnya
+previous_label=Terdahulu
+next.title=Laman seterusnya
+next_label=Berikut
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Laman:
+page_of=daripada {{pageCount}}
+
+zoom_out.title=Zum Keluar
+zoom_out_label=Zum Keluar
+zoom_in.title=Zum Masuk
+zoom_in_label=Zum Masuk
+zoom.title=Zum
+presentation_mode.title=Bertukar ke Mod Persembahan
+presentation_mode_label=Mod Persembahan
+open_file.title=Buka Fail
+open_file_label=Buka
+print.title=Cetak
+print_label=Cetak
+download.title=Muat turun
+download_label=Muat turun
+bookmark.title=Pandangan semasa (salinan atau dibuka dalam tetingkap baru)
+bookmark_label=Lihat semasa
+
+# Secondary toolbar and context menu
+tools.title=Alatan
+tools_label=Alatan
+first_page.title=Pergi ke Halaman Pertama
+first_page.label=Pergi ke Halaman Pertama
+first_page_label=Pergi ke Halaman Pertama
+last_page.title=Pergi ke Halaman Terakhir
+last_page.label=Pergi ke Halaman Terakhir
+last_page_label=Pergi ke Halaman Terakhir
+page_rotate_cw.title=Berputar ikut arah Jam
+page_rotate_cw.label=Berputar ikut arah Jam
+page_rotate_cw_label=Berputar ikut arah Jam
+page_rotate_ccw.title=Pusing berlawan arah jam
+page_rotate_ccw.label=Pusing berlawan arah jam
+page_rotate_ccw_label=Pusing berlawan arah jam
+
+hand_tool_enable.title=Bolehkan alatan tangan
+hand_tool_enable_label=Bolehkan alatan tangan
+hand_tool_disable.title=Lumpuhkan alatan tangan
+hand_tool_disable_label=Lumpuhkan alatan tangan
+
+# Document properties dialog box
+document_properties.title=Ciri Dokumen…
+document_properties_label=Ciri Dokumen…
+document_properties_file_name=Nama fail:
+document_properties_file_size=Saiz fail:
+document_properties_kb={{size_kb}} KB ({{size_b}} bait)
+document_properties_mb={{size_mb}} MB ({{size_b}} bait)
+document_properties_title=Tajuk:
+document_properties_author=Pengarang:
+document_properties_subject=Subjek:
+document_properties_keywords=Kata kunci:
+document_properties_creation_date=Masa Dicipta:
+document_properties_modification_date=Tarikh Ubahsuai:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Pencipta:
+document_properties_producer=Pengeluar PDF:
+document_properties_version=Versi PDF:
+document_properties_page_count=Kiraan Laman:
+document_properties_close=Tutup
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Togol Bar Sisi
+toggle_sidebar_label=Togol Bar Sisi
+outline.title=Tunjuk Rangka Dokumen
+outline_label=Rangka Dokument
+thumbs.title=Tunjuk Imej kecil
+thumbs_label=Imej kecil
+findbar.title=Cari didalam Dokumen
+findbar_label=Cari
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Halaman {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Halaman Imej kecil {{page}}
+
+# Find panel button title and messages
+find_label=Cari:
+find_previous.title=Cari teks frasa berkenaan yang terdahulu
+find_previous_label=Sebelumnya
+find_next.title=Cari teks frasa berkenaan yang berikut
+find_next_label=Berikut
+find_highlight=Serlahkan semua
+find_match_case_label=Kes Sepadan
+find_reached_top=Mencapai teratas daripada dokumen, sambungan daripada bawah
+find_reached_bottom=Mencapai terakhir daripada dokumen, sambungan daripada atas
+find_not_found=Frasa tidak ditemui
+
+# Error panel labels
+error_more_info=Maklumat lanjut
+error_less_info=Kurang Informasi
+error_close=Tutup
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mesej: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Timbun: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fail: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Garis: {{line}}
+rendering_error=Ralat berlaku ketika memberikan halaman.
+
+# Predefined zoom values
+page_scale_width=Lebar Halaman
+page_scale_fit=Muat Halaman
+page_scale_auto=Zoom Automatik
+page_scale_actual=Saiz Sebenar
+
+# Loading indicator messages
+loading_error_indicator=Ralat
+loading_error=Masalah berlaku semasa menuatkan sebuah PDF.
+invalid_file_error=Tidak sah atau fail PDF rosak.
+missing_file_error=Fail PDF Hilang.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Anotasi]
+password_label=Masukan kata kunci untuk membuka fail PDF ini.
+password_invalid=Kata laluan salah. Cuba lagi.
+password_ok=OK
+password_cancel=Batal
+
+printing_not_supported=Amaran: Cetakan ini tidak sepenuhnya disokong oleh pelayar ini.
+printing_not_ready=Amaran: PDF tidak sepenuhnya dimuatkan untuk dicetak.
+web_fonts_disabled=Fon web dilumpuhkan: tidak dapat fon PDF terbenam.
+document_colors_disabled=Dokumen PDF tidak dibenarkan untuk menggunakan warna sendiri: 'Benarkan muka surat untuk memilih warna sendiri' telah dinyahaktif dalam pelayar.
diff --git a/lib/viewers/pdf/locale/my/viewer.properties b/lib/viewers/pdf/locale/my/viewer.properties
new file mode 100644
index 0000000..c0442e9
--- /dev/null
+++ b/lib/viewers/pdf/locale/my/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=အရင် စာမျက်နှာ
+previous_label=အရင်နေရာ
+next.title=ရှေ့ စာမျက်နှာ
+next_label=နောက်တခု
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=စာမျက်နှာ -
+page_of=၏ {{pageCount}}
+
+zoom_out.title=ချုံ့ပါ
+zoom_out_label=ချုံ့ပါ
+zoom_in.title=ချဲ့ပါ
+zoom_in_label=ချဲ့ပါ
+zoom.title=ချုံ့/ချဲ့ပါ
+presentation_mode.title=Switch to Presentation Mode
+presentation_mode_label=Presentation Mode
+open_file.title=ဖိုင်အားဖွင့်ပါ။
+open_file_label=ဖွင့်ပါ
+print.title=ပုံနှိုပ်ပါ
+print_label=ပုံနှိုပ်ပါ
+download.title=ကူးဆွဲ
+download_label=ကူးဆွဲ
+bookmark.title=လက်ရှိ မြင်ကွင်း (ဝင်းဒိုးအသစ်မှာ ကူးပါ သို့မဟုတ် ဖွင့်ပါ)
+bookmark_label=လက်ရှိ မြင်ကွင်း
+
+# Secondary toolbar and context menu
+tools.title=ကိရိယာများ
+tools_label=ကိရိယာများ
+first_page.title=ပထမ စာမျက်နှာသို့
+first_page.label=ပထမ စာမျက်နှာသို့
+first_page_label=ပထမ စာမျက်နှာသို့
+last_page.title=နောက်ဆုံး စာမျက်နှာသို့
+last_page.label=နောက်ဆုံး စာမျက်နှာသို့
+last_page_label=နောက်ဆုံး စာမျက်နှာသို့
+page_rotate_cw.title=နာရီလက်တံ အတိုင်း
+page_rotate_cw.label=နာရီလက်တံ အတိုင်း
+page_rotate_cw_label=နာရီလက်တံ အတိုင်း
+page_rotate_ccw.title=နာရီလက်တံ ပြောင်းပြန်
+page_rotate_ccw.label=နာရီလက်တံ ပြောင်းပြန်
+page_rotate_ccw_label=နာရီလက်တံ ပြောင်းပြန်
+
+hand_tool_enable.title=လက်ကိုင် ကိရိယာအားသုံး
+hand_tool_enable_label=လက်ကိုင် ကိရိယာဖွင့်
+hand_tool_disable.title=လက်ကိုင် ကိရိယာအားပိတ်
+hand_tool_disable_label=လက်ကိုင်ကိရိယာ အားပိတ်
+
+# Document properties dialog box
+document_properties.title=မှတ်တမ်းမှတ်ရာ ဂုဏ်သတ္တိများ
+document_properties_label=မှတ်တမ်းမှတ်ရာ ဂုဏ်သတ္တိများ
+document_properties_file_name=ဖိုင် :
+document_properties_file_size=ဖိုင်ဆိုဒ် :
+document_properties_kb={{size_kb}} ကီလိုဘိုတ် ({size_kb}}ဘိုတ်)
+document_properties_mb={{size_mb}} မစ်ဂါဘိုတ် ({size_b}} ဘိုတ်)
+document_properties_title=ခေါင်းစဉ်‌ -
+document_properties_author=ရေးသားသူ:
+document_properties_subject=အကြောင်းအရာ:
+document_properties_keywords=သော့ချက် စာလုံး:
+document_properties_creation_date=ထုတ်လုပ်ရက်စွဲ:
+document_properties_modification_date=ပြင်ဆင်ရက်စွဲ:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=ဖန်တီးသူ:
+document_properties_producer=PDF ထုတ်လုပ်သူ:
+document_properties_version=PDF ဗားရှင်း:
+document_properties_page_count=စာမျက်နှာအရေအတွက်:
+document_properties_close=ပိတ်
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=ဘေးတန်းဖွင့်ပိတ်
+toggle_sidebar_label=ဖွင့်ပိတ် ဆလိုက်ဒါ
+outline.title=စာတမ်း မူကြမ်း ကိုပြပါ
+outline_label=စာတမ်း မူကြမ်း
+attachments.title=တွဲချက်များ ပြပါ
+attachments_label=တွဲထားချက်များ
+thumbs.title=ပုံရိပ်ငယ်များကို ပြပါ
+thumbs_label=ပုံရိပ်ငယ်များ
+findbar.title=Find in Document
+findbar_label=ရှာဖွေပါ
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=စာမျက်နှာ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=စာမျက်နှာရဲ့ ပုံရိပ်ငယ် {{page}}
+
+# Find panel button title and messages
+find_label=ရှာဖွေပါ -
+find_previous.title=စကားစုရဲ့ အရင် ​ဖြစ်ပွားမှုကို ရှာဖွေပါ
+find_previous_label=နောက်သို့
+find_next.title=စကားစုရဲ့ နောက်ထပ် ​ဖြစ်ပွားမှုကို ရှာဖွေပါ
+find_next_label=ရှေ့သို့
+find_highlight=အားလုံးကို မျဉ်းသားပါ
+find_match_case_label=စာလုံး တိုက်ဆိုင်ပါ
+find_reached_top=စာမျက်နှာထိပ် ရောက်နေပြီ၊ အဆုံးကနေ ပြန်စပါ
+find_reached_bottom=စာမျက်နှာအဆုံး ရောက်နေပြီ၊ ထိပ်ကနေ ပြန်စပါ
+find_not_found=စကားစု မတွေ့ရဘူး
+
+# Error panel labels
+error_more_info=နောက်ထပ်အချက်အလက်များ
+error_less_info=အနည်းငယ်မျှသော သတင်းအချက်အလက်
+error_close=ပိတ်
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=မက်ဆေ့ - {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=အထပ် - {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ဖိုင် {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=လိုင်း - {{line}}
+rendering_error=စာမျက်နှာကို ပုံဖော်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။
+
+# Predefined zoom values
+page_scale_width=စာမျက်နှာ အကျယ်
+page_scale_fit=စာမျက်နှာ ကွက်တိ
+page_scale_auto=အလိုအလျောက် ချုံ့ချဲ့
+page_scale_actual=အမှန်တကယ်ရှိတဲ့ အရွယ်
+
+# Loading indicator messages
+loading_error_indicator=အမှား
+loading_error=PDF ဖိုင် ကိုဆွဲတင်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။
+invalid_file_error=မရသော သို့ ပျက်နေသော PDF ဖိုင်
+missing_file_error=PDF ပျောက်ဆုံး
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} အဓိပ္ပာယ်ဖွင့်ဆိုချက်]
+password_label=PDF အားဖွင့်ရန် ပတ်စ်ဝတ်အားထည့်ပါ
+password_invalid=စာဝှက် မှားသည်။ ထပ်ကြိုးစားကြည့်ပါ။
+password_ok=OK
+password_cancel=ပယ်​ဖျက်ပါ
+
+printing_not_supported=သတိပေးချက်၊ပရင့်ထုတ်ခြင်းကိုဤဘယောက်ဆာသည် ပြည့်ဝစွာထောက်ပံ့မထားပါ ။
+printing_not_ready=သတိပေးချက်: ယခု PDF ဖိုင်သည် ပုံနှိပ်ရန် မပြည့်စုံပါ
+web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
+document_colors_disabled=PDF ဖိုင်အား ၎င်းဤ ကိုယ်ပိုင်အရောင်များကို အသုံးပြုခွင့်မပေးထားပါ ။ 'စာမျက်နှာအားလုံးအားအရောင်ရွေးချယ်ခွင့်' အား ယခု ဘယောက်ဆာတွင် ပိတ်ထားခြင်းကြောင့်ဖြစ် သှ်
diff --git a/lib/viewers/pdf/locale/nb-NO/viewer.properties b/lib/viewers/pdf/locale/nb-NO/viewer.properties
new file mode 100644
index 0000000..65ffce7
--- /dev/null
+++ b/lib/viewers/pdf/locale/nb-NO/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Forrige side
+previous_label=Forrige
+next.title=Neste side
+next_label=Neste
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Side:
+page_of=av {{pageCount}}
+
+zoom_out.title=Zoom ut
+zoom_out_label=Zoom ut
+zoom_in.title=Zoom inn
+zoom_in_label=Zoom inn
+zoom.title=Zoom
+presentation_mode.title=Bytt til presentasjonsmodus
+presentation_mode_label=Presentasjonsmodus
+open_file.title=Åpne fil
+open_file_label=Åpne
+print.title=Skriv ut
+print_label=Skriv ut
+download.title=Last ned
+download_label=Last ned
+bookmark.title=Nåværende visning (kopier eller åpne i et nytt vindu)
+bookmark_label=Nåværende visning
+
+# Secondary toolbar and context menu
+tools.title=Verktøy
+tools_label=Verktøy
+first_page.title=Gå til første side
+first_page.label=Gå til første side
+first_page_label=Gå til første side
+last_page.title=GÃ¥ til siste side
+last_page.label=GÃ¥ til siste side
+last_page_label=GÃ¥ til siste side
+page_rotate_cw.title=Roter med klokken
+page_rotate_cw.label=Roter med klokken
+page_rotate_cw_label=Roter med klokken
+page_rotate_ccw.title=Roter mot klokken
+page_rotate_ccw.label=Roter mot klokken
+page_rotate_ccw_label=Roter mot klokken
+
+hand_tool_enable.title=Slå på hånd-verktøy
+hand_tool_enable_label=Slå på hånd-verktøy
+hand_tool_disable.title=Slå av hånd-verktøy
+hand_tool_disable_label=Slå av hånd-verktøy
+
+# Document properties dialog box
+document_properties.title=Dokumentegenskaper …
+document_properties_label=Dokumentegenskaper …
+document_properties_file_name=Filnavn:
+document_properties_file_size=Filstørrelse:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Tittel:
+document_properties_author=Forfatter:
+document_properties_subject=Emne:
+document_properties_keywords=Nøkkelord:
+document_properties_creation_date=Opprettet dato:
+document_properties_modification_date=Endret dato:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Opprettet av:
+document_properties_producer=PDF-verktøy:
+document_properties_version=PDF-versjon:
+document_properties_page_count=Sideantall:
+document_properties_close=Lukk
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Slå av/på sidestolpe
+toggle_sidebar_label=Slå av/på sidestolpe
+outline.title=Vis dokumentdisposisjon
+outline_label=Dokumentdisposisjon
+thumbs.title=Vis miniatyrbilde
+thumbs_label=Miniatyrbilde
+findbar.title=Finn i dokumentet
+findbar_label=Finn
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Side {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatyrbilde av side {{page}}
+
+# Find panel button title and messages
+find_label=Finn:
+find_previous.title=Finn forrige forekomst av frasen
+find_previous_label=Forrige
+find_next.title=Finn neste forekomst av frasen
+find_next_label=Neste
+find_highlight=Uthev alle
+find_match_case_label=Skill store/små bokstaver
+find_reached_top=NÃ¥dde toppen av dokumentet, fortsetter fra bunnen
+find_reached_bottom=NÃ¥dde bunnen av dokumentet, fortsetter fra toppen
+find_not_found=Fant ikke teksten
+
+# Error panel labels
+error_more_info=Mer info
+error_less_info=Mindre info
+error_close=Lukk
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (bygg: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Melding: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stakk: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fil: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linje: {{line}}
+rendering_error=En feil oppstod ved opptegning av siden.
+
+# Predefined zoom values
+page_scale_width=Sidebredde
+page_scale_fit=Tilpass til siden
+page_scale_auto=Automatisk zoom
+page_scale_actual=Virkelig størrelse
+
+# Loading indicator messages
+loading_error_indicator=Feil
+loading_error=En feil oppstod ved lasting av PDF.
+invalid_file_error=Ugyldig eller skadet PDF-fil.
+missing_file_error=Manglende PDF-fil.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} annotasjon]
+password_label=Skriv inn passordet for å åpne denne PDF-filen.
+password_invalid=Ugyldig passord. Prøv igjen.
+password_ok=OK
+password_cancel=Avbryt
+
+printing_not_supported=Advarsel: Utskrift er ikke fullstendig støttet av denne nettleseren.
+printing_not_ready=Advarsel: PDF er ikke fullstendig innlastet for utskrift.
+web_fonts_disabled=Web-fonter er avslått: Kan ikke bruke innbundne PDF-fonter.
+document_colors_disabled=PDF-dokumenter tillates ikke å bruke deres egne farger: \'Tillat sider å velge egne farger\' er deaktivert i nettleseren.
diff --git a/lib/viewers/pdf/locale/nl/chrome.properties b/lib/viewers/pdf/locale/nl/chrome.properties
deleted file mode 100644
index 7906619..0000000
--- a/lib/viewers/pdf/locale/nl/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=Dit PDF-document wordt mogelijk niet juist weergegeven.
-open_with_different_viewer=Openen met andere PDF-lezer
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/nl/metadata.inc b/lib/viewers/pdf/locale/nl/metadata.inc
deleted file mode 100644
index 8f00155..0000000
--- a/lib/viewers/pdf/locale/nl/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>nl</em:locale>
- <em:name>PDF-viewer</em:name>
- <em:description>Gebruikt HTML5 om PDF-bestanden direct in Firefox te openen.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/nl/viewer.properties b/lib/viewers/pdf/locale/nl/viewer.properties
index 73aafa8..d5ed70a 100644
--- a/lib/viewers/pdf/locale/nl/viewer.properties
+++ b/lib/viewers/pdf/locale/nl/viewer.properties
@@ -1,122 +1,163 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Vorige pagina
previous_label=Vorige
next.title=Volgende pagina
next_label=Volgende
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Pagina:
page_of=van {{pageCount}}
zoom_out.title=Uitzoomen
zoom_out_label=Uitzoomen
zoom_in.title=Inzoomen
zoom_in_label=Inzoomen
zoom.title=Zoomen
-print.title=Afdrukken
-print_label=Afdrukken
-presentation_mode.title=Omschakelen naar presentatiemodus
+presentation_mode.title=Wisselen naar presentatiemodus
presentation_mode_label=Presentatiemodus
open_file.title=Bestand openen
open_file_label=Openen
+print.title=Afdrukken
+print_label=Afdrukken
download.title=Downloaden
download_label=Downloaden
bookmark.title=Huidige weergave (kopiëren of openen in nieuw venster)
bookmark_label=Huidige weergave
+# Secondary toolbar and context menu
+tools.title=Hulpmiddelen
+tools_label=Hulpmiddelen
+first_page.title=Naar eerste pagina gaan
+first_page.label=Naar eerste pagina gaan
+first_page_label=Naar eerste pagina gaan
+last_page.title=Naar laatste pagina gaan
+last_page.label=Naar laatste pagina gaan
+last_page_label=Naar laatste pagina gaan
+page_rotate_cw.title=Rechtsom draaien
+page_rotate_cw.label=Rechtsom draaien
+page_rotate_cw_label=Rechtsom draaien
+page_rotate_ccw.title=Linksom draaien
+page_rotate_ccw.label=Linksom draaien
+page_rotate_ccw_label=Linksom draaien
+
+hand_tool_enable.title=Handhulpmiddel inschakelen
+hand_tool_enable_label=Handhulpmiddel inschakelen
+hand_tool_disable.title=Handhulpmiddel uitschakelen
+hand_tool_disable_label=Handhulpmiddel uitschakelen
+
+# Document properties dialog box
+document_properties.title=Documenteigenschappen…
+document_properties_label=Documenteigenschappen…
+document_properties_file_name=Bestandsnaam:
+document_properties_file_size=Bestandsgrootte:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Titel:
+document_properties_author=Auteur:
+document_properties_subject=Onderwerp:
+document_properties_keywords=Trefwoorden:
+document_properties_creation_date=Aanmaakdatum:
+document_properties_modification_date=Wijzigingsdatum:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Auteur:
+document_properties_producer=PDF-producent:
+document_properties_version=PDF-versie:
+document_properties_page_count=Aantal pagina’s:
+document_properties_close=Sluiten
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Zijbalk tonen/verbergen
-toggle_sidebar_label=Zijbalk tonen/verbergen
-outline.title=Documentstructuur tonen
-outline_label=Documentstructuur
+toggle_sidebar.title=Zijbalk in-/uitschakelen
+toggle_sidebar_label=Zijbalk in-/uitschakelen
+outline.title=Documentoverzicht tonen
+outline_label=Documentoverzicht
+attachments.title=Bijlagen tonen
+attachments_label=Bijlagen
thumbs.title=Miniaturen tonen
thumbs_label=Miniaturen
findbar.title=Zoeken in document
findbar_label=Zoeken
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Pagina {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Miniatuur van pagina {{page}}
-# Context menu
-first_page.label=Naar de eerste pagina gaan
-last_page.label=Naar de laatste pagina gaan
-page_rotate_cw.label=Met de klok mee roteren
-page_rotate_ccw.label=Tegen de klok in roteren
-
# Find panel button title and messages
find_label=Zoeken:
find_previous.title=Het vorige voorkomen van de tekst zoeken
find_previous_label=Vorige
find_next.title=Het volgende voorkomen van de tekst zoeken
find_next_label=Volgende
find_highlight=Alles markeren
find_match_case_label=Hoofdlettergevoelig
-find_reached_top=Bovenkant van de pagina bereikt, doorgegaan vanaf de onderkant
-find_reached_bottom=Onderkant van de pagina bereikt, doorgegaan vanaf de bovenkant
+find_reached_top=Bovenkant van het document bereikt, doorgegaan vanaf de onderkant
+find_reached_bottom=Onderkant van het document bereikt, doorgegaan vanaf de bovenkant
find_not_found=Tekst niet gevonden
# Error panel labels
error_more_info=Meer informatie
error_less_info=Minder informatie
error_close=Sluiten
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js versie {{version}} (build {{build}})
+error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Bericht: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Bestand: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Regel: {{line}}
-rendering_error=Er is een probleem opgetreden bij het renderen van de pagina.
+rendering_error=Er is een fout opgetreden bij het weergeven van de pagina.
# Predefined zoom values
-page_scale_width=Paginabreed maken
-page_scale_fit=Passend maken
+page_scale_width=Paginabreedte
+page_scale_fit=Hele pagina
page_scale_auto=Automatisch zoomen
page_scale_actual=Werkelijke grootte
# Loading indicator messages
loading_error_indicator=Fout
-loading_error=Er is een fout opgetreden bij het laden van het PDF-bestand.
-invalid_file_error=Ongeldig of corrupt PDF-bestand.
-missing_file_error=Ontbrekend PDF-bestand.
+loading_error=Er is een fout opgetreden bij het laden van de PDF.
+invalid_file_error=Ongeldig of beschadigd PDF-bestand.
+missing_file_error=PDF-bestand ontbreekt.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}}-aantekening]
-request_password=Dit PDF-bestand is beveiligd met een wachtwoord:
+text_annotation_type.alt=[{{type}}-aantekening]
+password_label=Voer het wachtwoord in om dit PDF-bestand te openen.
+password_invalid=Ongeldig wachtwoord. Probeer het opnieuw.
+password_ok=OK
+password_cancel=Annuleren
printing_not_supported=Waarschuwing: afdrukken wordt niet volledig ondersteund door deze browser.
-printing_not_ready=Waarschuwing: het PDF-bestand is niet volledig geladen en kan daarom nog niet afgedrukt worden.
-web_fonts_disabled=Weblettertypen zijn uitgeschakeld: kan geen ingebakken PDF-lettertypen gebruiken.
+printing_not_ready=Warning: PDF is niet volledig geladen om af te drukken.
+web_fonts_disabled=Weblettertypen zijn uitgeschakeld: gebruik van ingebedde PDF-lettertypen is niet mogelijk.
+document_colors_disabled=PDF-documenten mogen hun eigen kleuren niet gebruiken: ‘Pagina’s toestaan om hun eigen kleuren te kiezen’ is uitgeschakeld in de browser.
diff --git a/lib/viewers/pdf/locale/nn-NO/viewer.properties b/lib/viewers/pdf/locale/nn-NO/viewer.properties
new file mode 100644
index 0000000..4dac5d3
--- /dev/null
+++ b/lib/viewers/pdf/locale/nn-NO/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Førre side
+previous_label=Førre
+next.title=Neste side
+next_label=Neste
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Side:
+page_of=av {{pageCount}}
+
+zoom_out.title=Zoom ut
+zoom_out_label=Zoom ut
+zoom_in.title=Zoom inn
+zoom_in_label=Zoom inn
+zoom.title=Zoom
+presentation_mode.title=Byt til presentasjonsmodus
+presentation_mode_label=Presentasjonsmodus
+open_file.title=Opna fil
+open_file_label=Opna
+print.title=Skriv ut
+print_label=Skriv ut
+download.title=Last ned
+download_label=Last ned
+bookmark.title=Gjeldande vising (kopier eller opna i nytt vindauge)
+bookmark_label=Gjeldande vising
+
+# Secondary toolbar and context menu
+tools.title=Verktøy
+tools_label=Verktøy
+first_page.title=Gå til første side
+first_page.label=Gå til første side
+first_page_label=Gå til første side
+last_page.title=GÃ¥ til siste side
+last_page.label=GÃ¥ til siste side
+last_page_label=GÃ¥ til siste side
+page_rotate_cw.title=Roter med klokka
+page_rotate_cw.label=Roter med klokka
+page_rotate_cw_label=Roter med klokka
+page_rotate_ccw.title=Roter mot klokka
+page_rotate_ccw.label=Roter mot klokka
+page_rotate_ccw_label=Roter mot klokka
+
+hand_tool_enable.title=Slå på handverktøy
+hand_tool_enable_label=Slå på handverktøy
+hand_tool_disable.title=Så av handverktøy
+hand_tool_disable_label=Slå av handverktøy
+
+# Document properties dialog box
+document_properties.title=Dokumenteigenskapar …
+document_properties_label=Dokumenteigenskapar …
+document_properties_file_name=Filnamn:
+document_properties_file_size=Filstorleik:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Dokumenteigenskapar …
+document_properties_author=Forfattar:
+document_properties_subject=Emne:
+document_properties_keywords=Nykelord:
+document_properties_creation_date=Dato oppretta:
+document_properties_modification_date=Dato endra:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Oppretta av:
+document_properties_producer=PDF-verktøy:
+document_properties_version=PDF-versjon:
+document_properties_page_count=Sidetal:
+document_properties_close=Lukk
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Slå av/på sidestolpe
+toggle_sidebar_label=Slå av/på sidestolpe
+outline.title=Vis dokumentdisposisjon
+outline_label=Dokumentdisposisjon
+attachments.title=Vis vedlegg
+attachments_label=Vedlegg
+thumbs.title=Vis miniatyrbilde
+thumbs_label=Miniatyrbilde
+findbar.title=Finn i dokumentet
+findbar_label=Finn
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Side {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatyrbilde av side {{page}}
+
+# Find panel button title and messages
+find_label=Finn:
+find_previous.title=Finn tidlegare førekomst av frasen
+find_previous_label=Førre
+find_next.title=Finn neste førekomst av frasen
+find_next_label=Neste
+find_highlight=Uthev alle
+find_match_case_label=Skil store/små bokstavar
+find_reached_top=Nådde toppen av dokumentet, held fram frå botnen
+find_reached_bottom=Nådde botnen av dokumentet, held fram frå toppen
+find_not_found=Fann ikkje teksten
+
+# Error panel labels
+error_more_info=Meir info
+error_less_info=Mindre info
+error_close=Lukk
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (bygg: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Melding: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stakk: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fil: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linje: {{line}}
+rendering_error=Ein feil oppstod ved oppteikning av sida.
+
+# Predefined zoom values
+page_scale_width=Sidebreidde
+page_scale_fit=Tilpass til sida
+page_scale_auto=Automatisk zoom
+page_scale_actual=Verkeleg storleik
+
+# Loading indicator messages
+loading_error_indicator=Feil
+loading_error=Ein feil oppstod ved lasting av PDF.
+invalid_file_error=Ugyldig eller korrupt PDF fil.
+missing_file_error=Manglande PDF-fil.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} annotasjon]
+password_label=Skriv inn passordet for å opna denne PDF-fila.
+password_invalid=Ugyldig passord. Prøv igjen.
+password_ok=OK
+password_cancel=Avbryt
+
+printing_not_supported=Åtvaring: Utskrift er ikkje fullstendig støtta av denne nettlesaren.
+printing_not_ready=Åtvaring: PDF ikkje fullstendig innlasta for utskrift.
+web_fonts_disabled=Vev-fontar er slått av: Kan ikkje bruka innbundne PDF-fontar.
+document_colors_disabled=PDF-dokument har ikkje løyve til å bruka eigne fargar: \'Tillat sider å velja eigne fargar\' er slått av i nettlesaren.
diff --git a/lib/viewers/pdf/locale/nso/viewer.properties b/lib/viewers/pdf/locale/nso/viewer.properties
new file mode 100644
index 0000000..09923f5
--- /dev/null
+++ b/lib/viewers/pdf/locale/nso/viewer.properties
@@ -0,0 +1,123 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Letlakala le fetilego
+previous_label=Fetilego
+next.title=Letlakala le latelago
+next_label=Latelago
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Letlakala:
+page_of=la {{pageCount}}
+
+zoom_out.title=Bušetša ka gare
+zoom_out_label=Bušetša ka gare
+zoom_in.title=Godišetša ka ntle
+zoom_in_label=Godišetša ka ntle
+zoom.title=Godiša
+print.title=Gatiša
+print_label=Gatiša
+presentation_mode.title=Fetogela go mokgwa wa tlhagišo
+presentation_mode_label=Mokgwa wa tlhagišo
+open_file.title=Bula faele
+open_file_label=Bula
+download.title=Laolla
+download_label=Laolla
+bookmark.title=Pono ya bjale (kopiša le go bula lefasetereng le leswa)
+bookmark_label=Tebelelo ya gona bjale
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Å ielanya para ya ka thoko
+toggle_sidebar_label=Å ielanya para ya ka thoko
+outline.title=Laetša kakaretšo ya tokumente
+outline_label=Kakaretšo ya tokumente
+thumbs.title=Laetša dikhutšofatšo
+thumbs_label=Dikhutšofatšo
+findbar.title=Hwetša go tokumente
+findbar_label=Hwetša
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Letlakala {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Khutšofatšo ya letlakala {{page}}
+
+# Context menu
+first_page.label=Eya letlakaleng la mathomo
+last_page.label=Eya letlakaleng la mafelelo
+page_rotate_cw.label=Dikološa go ya ka go la go ja
+page_rotate_ccw.label=Dikološa go ya go la ntsogošo
+
+# Find panel button title and messages
+find_label=Hwetša:
+find_previous.title=Hwetša tiragalo e fetilego ya sekafoko
+find_previous_label=Fetilego
+find_next.title=Hwetša tiragalo e latelago ya sekafoko
+find_next_label=Latelago
+find_highlight=Bonagatša tšohle
+find_match_case_label=Swantšha kheisi
+find_reached_top=Fihlile godimo ga tokumente, go tšwetšwe pele go tloga tlase
+find_reached_bottom=Fihlile mafelelong a tokumente, go tšwetšwe pele go tloga godimo
+find_not_found=Sekafoko ga sa hwetšwa
+
+# Error panel labels
+error_more_info=Tshedimošo e oketšegilego
+error_less_info=Tshedimošo ya tlasana
+error_close=Tswalela
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Molaetša: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Mokgobo: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Faele: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Mothaladi: {{line}}
+rendering_error=Go diregile phošo ge go be go gafelwa letlakala.
+
+# Predefined zoom values
+page_scale_width=Bophara bja letlakala
+page_scale_fit=Go lekana ga letlakala
+page_scale_auto=Kgodišo ya maitirišo
+page_scale_actual=Bogolo bja kgonthe
+
+# Loading indicator messages
+loading_error_indicator=Phošo
+loading_error=Go diregile phošo ge go hlahlelwa PDF.
+invalid_file_error=Faele ye e sa Å¡omego goba e senyegilego ya PDF.
+missing_file_error=Faele yeo e sego gona ya PDF.
+
+# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type=[{{type}} Tlhaloso]
+request_password=PDF e šireleditšwe ka lentšuphetišo:
+
+printing_not_supported=Temošo: Go gatiša ga go thekgwe ke praosara ye ka botlalo.
+printing_not_ready=Temošo: PDF ga ya hlahlelwa ka botlalo bakeng sa go gatišwa.
+web_fonts_disabled=Difonte tša wepe di šitišitšwe: ga e kgone go diriša difonte tša PDF tše khutišitšwego.
+web_colors_disabled=Mebala ya wepe e šitišitšwe.
diff --git a/lib/viewers/pdf/locale/oc/viewer.properties b/lib/viewers/pdf/locale/oc/viewer.properties
new file mode 100644
index 0000000..f80fcef
--- /dev/null
+++ b/lib/viewers/pdf/locale/oc/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Pagina precedenta
+previous_label=Precedent
+next.title=Pagina seguenta
+next_label=Seguent
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Pagina :
+page_of=sus {{pageCount}}
+
+zoom_out.title=Zoom arrièr
+zoom_out_label=Zoom arrièr
+zoom_in.title=Zoom avant
+zoom_in_label=Zoom avant
+zoom.title=Zoom
+presentation_mode.title=Bascuolar en mòde presentacion
+presentation_mode_label=Mòde Presentacion
+open_file.title=Dobrir lo fichièr
+open_file_label=Dobrir
+print.title=Imprimir
+print_label=Imprimir
+download.title=Telecargar
+download_label=Telecargar
+bookmark.title=Afichatge corrent (copiar o dobrir dins una fenèstra novèla)
+bookmark_label=Afichatge actual
+
+# Secondary toolbar and context menu
+tools.title=Aisinas
+tools_label=Aisinas
+first_page.title=Anar a la primièra pagina
+first_page.label=Anar a la primièra pagina
+first_page_label=Anar a la primièra pagina
+last_page.title=Anar a la darrièra pagina
+last_page.label=Anar a la darrièra pagina
+last_page_label=Anar a la darrièra pagina
+page_rotate_cw.title=Rotacion orària
+page_rotate_cw.label=Rotacion orària
+page_rotate_cw_label=Rotacion orària
+page_rotate_ccw.title=Rotacion antiorària
+page_rotate_ccw.label=Rotacion antiorària
+page_rotate_ccw_label=Rotacion antiorària
+
+hand_tool_enable.title=Activar l'aisina man
+hand_tool_enable_label=Activar l'aisina man
+hand_tool_disable.title=Desactivar l'aisina man
+hand_tool_disable_label=Desactivar l'aisina man
+
+# Document properties dialog box
+document_properties.title=Proprietats del document...
+document_properties_label=Proprietats del document...
+document_properties_file_name=Nom del fichièr :
+document_properties_file_size=Talha del fichièr :
+document_properties_kb={{size_kb}} Ko ({{size_b}} octets)
+document_properties_mb={{size_mb}} Mo ({{size_b}} octets)
+document_properties_title=Títol :
+document_properties_author=Autor :
+document_properties_subject=Subjècte :
+document_properties_keywords=Mots claus :
+document_properties_creation_date=Data de creacion :
+document_properties_modification_date=Data de modificacion :
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creator :
+document_properties_producer=Aisina de conversion PDF :
+document_properties_version=Version PDF :
+document_properties_page_count=Nombre de paginas :
+document_properties_close=Tampar
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Afichar/amagar lo panèl lateral
+toggle_sidebar_label=Afichar/amagar lo panèl lateral
+outline.title=Afichar los marcapaginas
+outline_label=Marcapaginas del document
+attachments.title=Visualizar las pèças juntas
+attachments_label=Pèças juntas
+thumbs.title=Afichar las vinhetas
+thumbs_label=Vinhetas
+findbar.title=Trobar dins lo document
+findbar_label=Recercar
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Pagina {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Vinheta de la pagina {{page}}
+
+# Find panel button title and messages
+find_label=Recercar
+find_previous.title=Tròba l'ocurréncia precedenta de la frasa
+find_previous_label=Precedent
+find_next.title=Tròba l'ocurréncia venenta de la frasa
+find_next_label=Seguent
+find_highlight=Suslinhar tot
+find_match_case_label=Respectar la cassa
+find_reached_top=Naut de la pagina atench, perseguida dempuèi lo bas
+find_reached_bottom=Bas de la pagina atench, perseguida al començament
+find_not_found=Frasa pas trobada
+
+# Error panel labels
+error_more_info=Mai de detalhs
+error_less_info=Mens d'informacions
+error_close=Tampar
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (identificant de compilacion : {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Messatge : {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Pila : {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fichièr : {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linha : {{line}}
+rendering_error=Una error s'es producha pendent l'afichatge de la pagina.
+
+# Predefined zoom values
+page_scale_width=Largor plena
+page_scale_fit=Pagina entièra
+page_scale_auto=Zoom automatic
+page_scale_actual=Talha vertadièra
+
+# Loading indicator messages
+loading_error_indicator=Error
+loading_error=Una error s'es producha pendent lo cargament del fichièr PDF.
+invalid_file_error=Fichièr PDF invalid o corromput.
+missing_file_error=Fichièr PDF mancant.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anotacion {{type}}]
+password_label=Picatz lo senhal per dobrir aqueste fichièr PDF.
+password_invalid=Senhal incorrècte. Tornatz ensajar.
+password_ok=D'acòrdi
+password_cancel=Anullar
+
+printing_not_supported=Atencion : l'estampatge es pas completament gerit per aqueste navigador.
+printing_not_ready=Atencion : lo PDF es pas entièrament cargat per lo poder imprimir.
+web_fonts_disabled=Las poliças web son desactivadas : impossible d'utilizar las poliças integradas al PDF.
+document_colors_disabled=Los documents PDF pòdon pas utilizar lors pròprias colors : « Autorizar las paginas web d'utilizar lors pròprias colors » es desactivat dins lo navigador.
diff --git a/lib/viewers/pdf/locale/or/viewer.properties b/lib/viewers/pdf/locale/or/viewer.properties
new file mode 100644
index 0000000..dfd4e3d
--- /dev/null
+++ b/lib/viewers/pdf/locale/or/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=ପୂର୍ବ ପୃଷ୍ଠା
+previous_label=ପୂର୍ବ
+next.title=ପର ପୃଷ୍ଠା
+next_label=ପର
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=ପୃଷ୍ଠା:
+page_of={{pageCount}} ର
+
+zoom_out.title=ଛୋଟ କରନ୍ତୁ
+zoom_out_label=ଛୋଟ କରନ୍ତୁ
+zoom_in.title=ବଡ଼ କରନ୍ତୁ
+zoom_in_label=ବଡ଼ କରନ୍ତୁ
+zoom.title=ଛୋଟ ବଡ଼ କରନ୍ତୁ
+presentation_mode.title=ଉପସ୍ଥାପନ ଧାରାକୁ ବଦଳାନ୍ତୁ
+presentation_mode_label=ଉପସ୍ଥାପନ ଧାରା
+open_file.title=ଫାଇଲ ଖୋଲନ୍ତୁ
+open_file_label=ଖୋଲନ୍ତୁ
+print.title=ମୁଦ୍ରଣ
+print_label=ମୁଦ୍ରଣ
+download.title=ଆହରଣ
+download_label=ଆହରଣ
+bookmark.title=ପ୍ରଚଳିତ ଦୃଶ୍ୟ (ନକଲ କରନ୍ତୁ କିମ୍ବା ଏକ ନୂତନ ୱିଣ୍ଡୋରେ ଖୋଲନ୍ତୁ)
+bookmark_label=ପ୍ରଚଳିତ ଦୃଶ୍ୟ
+
+# Secondary toolbar and context menu
+tools.title=ସାଧନଗୁଡ଼ିକ
+tools_label=ସାଧନଗୁଡ଼ିକ
+first_page.title=ପ୍ରଥମ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ
+first_page.label=ପ୍ରଥମ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ
+first_page_label=ପ୍ରଥମ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ
+last_page.title=ଶେଷ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ
+last_page.label=ଶେଷ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ
+last_page_label=ଶେଷ ପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ
+page_rotate_cw.title=ଦକ୍ଷିଣାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ
+page_rotate_cw.label=ଦକ୍ଷିଣାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ
+page_rotate_cw_label=ଦକ୍ଷିଣାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ
+page_rotate_ccw.title=ବାମାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ
+page_rotate_ccw.label=ବାମାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ
+page_rotate_ccw_label=ବାମାବର୍ତ୍ତୀ ଘୁରାନ୍ତୁ
+
+hand_tool_enable.title=ହସ୍ତକୃତ ସାଧନକୁ ସକ୍ରିୟ କରନ୍ତୁ
+hand_tool_enable_label=ହସ୍ତକୃତ ସାଧନକୁ ସକ୍ରିୟ କରନ୍ତୁ
+hand_tool_disable.title=ହସ୍ତକୃତ ସାଧନକୁ ନିଷ୍କ୍ରିୟ କରନ୍ତୁ
+hand_tool_disable_label=ହସ୍ତକୃତ ସାଧନକୁ ନିଷ୍କ୍ରିୟ କରନ୍ତୁ
+
+# Document properties dialog box
+document_properties.title=ଦଲିଲ ଗୁଣଧର୍ମ…
+document_properties_label=ଦଲିଲ ଗୁଣଧର୍ମ…
+document_properties_file_name=ଫାଇଲ ନାମ:
+document_properties_file_size=ଫାଇଲ ଆକାର:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=ଶୀର୍ଷକ:
+document_properties_author=ଲେଖକ:
+document_properties_subject=ବିଷୟ:
+document_properties_keywords=ସୂଚକ ଶବ୍ଦ:
+document_properties_creation_date=ନିର୍ମାଣ ତାରିଖ:
+document_properties_modification_date=ପରିବର୍ତ୍ତନ ତାରିଖ:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=ନିର୍ମାତା:
+document_properties_producer=PDF ପ୍ରଯୋଜକ:
+document_properties_version=PDF ସଂସ୍କରଣ:
+document_properties_page_count=ପୃଷ୍ଠା ଗଣନା:
+document_properties_close=ବନ୍ଦ କରନ୍ତୁ
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=ପାର୍ଶ୍ୱପଟିକୁ ଆଗପଛ କରନ୍ତୁ
+toggle_sidebar_label=ପାର୍ଶ୍ୱପଟିକୁ ଆଗପଛ କରନ୍ତୁ
+outline.title=ଦଲିଲ ସାରାଂଶ ଦର୍ଶାନ୍ତୁ
+outline_label=ଦଲିଲ ସାରାଂଶ
+attachments.title=ସଂଲଗ୍ନକଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ
+attachments_label=ସଲଗ୍ନକଗୁଡିକ
+thumbs.title=ସଂକ୍ଷିପ୍ତ ବିବରଣୀ ଦର୍ଶାନ୍ତୁ
+thumbs_label=ସଂକ୍ଷିପ୍ତ ବିବରଣୀ
+findbar.title=ଦଲିଲରେ ଖୋଜନ୍ତୁ
+findbar_label=ଖୋଜନ୍ତୁ
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=ପୃଷ୍ଠା {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=ପୃଷ୍ଠାର ସଂକ୍ଷିପ୍ତ ବିବରଣୀ {{page}}
+
+# Find panel button title and messages
+find_label=ଖୋଜନ୍ତୁ:
+find_previous.title=ଏହି ବାକ୍ୟାଂଶର ପୂର୍ବ ଉପସ୍ଥିତିକୁ ଖୋଜନ୍ତୁ
+find_previous_label=ପୂର୍ବବର୍ତ୍ତୀ
+find_next.title=ଏହି ବାକ୍ୟାଂଶର ପରବର୍ତ୍ତୀ ଉପସ୍ଥିତିକୁ ଖୋଜନ୍ତୁ
+find_next_label=ପରବର୍ତ୍ତୀ
+find_highlight=ସମସ୍ତଙ୍କୁ ଆଲୋକିତ କରନ୍ତୁ
+find_match_case_label=ଅକ୍ଷର ମେଳାନ୍ତୁ
+find_reached_top=ତଳୁ ଉପରକୁ ଗତି କରି ଦଲିଲର ଉପର ଭାଗରେ ପହଞ୍ଚି ଯାଇଛି
+find_reached_bottom=ଉପରୁ ତଳକୁ ଗତି କରି ଦଲିଲର ଶେଷ ଭାଗରେ ପହଞ୍ଚି ଯାଇଛି
+find_not_found=ବାକ୍ୟାଂଶ ମିଳିଲା ନାହିଁ
+
+# Error panel labels
+error_more_info=ଅଧିକ ସୂଚନା
+error_less_info=ସ୍ୱଳ୍ପ ସୂଚନା
+error_close=ବନ୍ଦ କରନ୍ତୁ
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=ସନ୍ଦେଶ: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=ଷ୍ଟାକ: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ଫାଇଲ: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=ଧାଡ଼ି: {{line}}
+rendering_error=ପୃଷ୍ଠା ଚିତ୍ରଣ କରିବା ସମୟରେ ତ୍ରୁଟି ଘଟିଲା।
+
+# Predefined zoom values
+page_scale_width=ପୃଷ୍ଠା ଓସାର
+page_scale_fit=ପୃଷ୍ଠା ମେଳନ
+page_scale_auto=ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଛୋଟବଡ଼ କରିବା
+page_scale_actual=ପ୍ରକୃତ ଆକାର
+
+# Loading indicator messages
+loading_error_indicator=ତ୍ରୁଟି
+loading_error=PDF ଧାରଣ କରିବା ସମୟରେ ଏକ ତ୍ରୁଟି ଘଟିଲା।
+invalid_file_error=ଅବୈଧ କିମ୍ବା ତ୍ରୁଟିଯୁକ୍ତ PDF ଫାଇଲ।
+missing_file_error=ହଜିଯାଇଥିବା PDF ଫାଇଲ।
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=ଏହି PDF ଫାଇଲକୁ ଖୋଲିବା ପାଇଁ ପ୍ରବେଶ ସଂକେତ ଭରଣ କରନ୍ତୁ।
+password_invalid=ଭୁଲ ପ୍ରବେଶ ସଂକେତ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।
+password_ok=ଠିକ ଅଛି
+password_cancel=ବାତିଲ କରନ୍ତୁ
+
+printing_not_supported=ଚେତାବନୀ: ଏହି ବ୍ରାଉଜର ଦ୍ୱାରା ମୁଦ୍ରଣ କ୍ରିୟା ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ସହାୟତା ପ୍ରାପ୍ତ ନୁହଁ।
+printing_not_ready=ଚେତାବନୀ: PDF ଟି ମୁଦ୍ରଣ ପାଇଁ ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ଧାରଣ ହୋଇ ନାହିଁ।
+web_fonts_disabled=ୱେବ ଅକ୍ଷରରୂପଗୁଡ଼ିକୁ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି: ସନ୍ନିହିତ PDF ଅକ୍ଷରରୂପଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବାରେ ଅସମର୍ଥ।
+document_colors_disabled=PDF ଦଲିଲଗୁଡ଼ିକ ସେମାନଙ୍କର ନିଜର ରଙ୍ଗ ବ୍ୟବହାର କରିବା ପାଇଁ ଅନୁମତି ପ୍ରାପ୍ତ ନୁହଁ: 'ସେମାନଙ୍କର ନିଜ ରଙ୍ଗ ବାଛିବା ପାଇଁ ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ' କୁ ବ୍ରାଉଜରରେ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି।
diff --git a/lib/viewers/pdf/locale/pa-IN/viewer.properties b/lib/viewers/pdf/locale/pa-IN/viewer.properties
new file mode 100644
index 0000000..6eb5ca1
--- /dev/null
+++ b/lib/viewers/pdf/locale/pa-IN/viewer.properties
@@ -0,0 +1,177 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=ਸਫ਼ਾ ਪਿੱਛੇ
+previous_label=ਪਿੱਛੇ
+next.title=ਸਫ਼ਾ ਅੱਗੇ
+next_label=ਅੱਗੇ
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=ਸਫ਼ਾ:
+page_of={{pageCount}} ਵਿੱਚੋਂ
+
+zoom_out.title=ਜ਼ੂਮ ਆਉਟ
+zoom_out_label=ਜ਼ੂਮ ਆਉਟ
+zoom_in.title=ਜ਼ੂਮ ਇਨ
+zoom_in_label=ਜ਼ੂਮ ਇਨ
+zoom.title=ਜ਼ੂਨ
+print.title=ਪਰਿੰਟ
+print_label=ਪਰਿੰਟ
+presentation_mode.title=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ ਵਿੱਚ ਜਾਓ
+presentation_mode_label=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ
+
+open_file.title=ਫਾਇਲ ਖੋਲ੍ਹੋ
+open_file_label=ਖੋਲ੍ਹੋ
+download.title=ਡਾਊਨਲੋਡ
+download_label=ਡਾਊਨਲੋਡ
+bookmark.title=ਮੌਜੂਦਾ ਝਲਕ (ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਕਾਪੀ ਕਰੋ ਜਾਂ ਖੋਲ੍ਹੋ)
+bookmark_label=ਮੌਜੂਦਾ ਝਲਕ
+
+# Secondary toolbar and context menu
+tools.title=ਟੂਲ
+tools_label=ਟੂਲ
+first_page.title=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
+first_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
+first_page_label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
+
+last_page.title=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
+last_page_label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
+page_rotate_cw.title=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ
+page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ
+page_rotate_cw_label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ
+page_rotate_ccw.title=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ
+page_rotate_ccw_label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ
+
+hand_tool_enable.title=ਹੱਥ ਟੂਲ ਚਾਲੂ
+hand_tool_enable_label=ਹੱਥ ਟੂਲ ਚਾਲੂ
+hand_tool_disable.title=ਹੱਥ ਟੂਲ ਬੰਦ
+hand_tool_disable_label=ਹੱਥ ਟੂਲ ਬੰਦ
+
+# Document properties dialog box
+document_properties.title=…ਦਸਤਾਵੇਜ਼ ਵਿਸ਼ੇਸ਼ਤਾ
+document_properties_label=…ਦਸਤਾਵੇਜ਼ ਵਿਸ਼ੇਸ਼ਤਾ
+document_properties_file_name=ਫਾਇਲ ਨਾਂ:
+document_properties_file_size=ਫਾਇਲ ਆਕਾਰ:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=ਟਾਈਟਲ:
+document_properties_author=ਲੇਖਕ:
+document_properties_subject=ਵਿਸ਼ਾ:
+document_properties_keywords=ਸ਼ਬਦ:
+document_properties_creation_date=ਬਣਾਉਣ ਮਿਤੀ:
+document_properties_modification_date=ਸੋਧ ਮਿਤੀ:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=ਨਿਰਮਾਤਾ:
+document_properties_producer=PDF ਪ੍ਰੋਡਿਊਸਰ:
+document_properties_version=PDF ਵਰਜਨ:
+document_properties_page_count=ਸਫ਼ਾ ਗਿਣਤੀ:
+document_properties_close=ਬੰਦ ਕਰੋ
+
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ
+toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ
+
+outline.title=ਦਸਤਾਵੇਜ਼ ਆਉਟਲਾਈਨ ਵੇਖਾਓ
+outline_label=ਦਸਤਾਵੇਜ਼ ਆਉਟਲਾਈਨ
+attachments.title=Show Attachments
+attachments_label=Attachments
+thumbs.title=ਥੰਮਨੇਲ ਵੇਖਾਓ
+thumbs_label=ਥੰਮਨੇਲ
+findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ
+findbar_label=ਲੱਭੋ
+
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=ਸਫ਼ਾ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas={{page}} ਸਫ਼ੇ ਦਾ ਥੰਮਨੇਲ
+
+
+# Context menu
+first_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
+last_page.label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
+page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਉ
+page_rotate_ccw.label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਉ
+
+# Find panel button title and messages
+find_label=ਲੱਭੋ:
+find_previous.title=ਵਾਕ ਦੀ ਪਿਛਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ
+find_previous_label=ਪਿੱਛੇ
+find_next.title=ਵਾਕ ਦੀ ਅਗਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ
+find_next_label=ਅੱਗੇ
+find_highlight=ਸਭ ਉਭਾਰੋ
+find_match_case_label=ਅੱਖਰ ਆਕਾਰ ਮਿਲਾਉ
+find_reached_top=ਦਸਤਾਵੇਜ਼ ਦੇ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਥੱਲੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ
+find_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਉੱਤੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ
+find_not_found=ਵਾਕ ਨਹੀਂ ਲੱਭਿਆ
+
+
+# Error panel labels
+error_more_info=ਹੋਰ ਜਾਣਕਾਰੀ
+error_less_info=ਘੱਟ ਜਾਣਕਾਰੀ
+error_close=ਬੰਦ ਕਰੋ
+
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (ਬਿਲਡ: {{build}}
+
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=ਸੁਨੇਹਾ: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=ਸਟੈਕ: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ਫਾਇਲ: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=ਲਾਈਨ: {{line}}
+rendering_error=ਸਫ਼ਾ ਰੈਡਰ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ।
+
+# Predefined zoom values
+page_scale_width=ਸਫ਼ਾ ਚੌੜਾਈ
+page_scale_fit=ਸਫ਼ਾ ਫਿੱਟ
+page_scale_auto=ਆਟੋਮੈਟਿਕ ਜ਼ੂਮ
+page_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ
+
+# Loading indicator messages
+# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
+loading_error_indicator=ਗਲਤੀ
+loading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ।
+invalid_file_error=ਗਲਤ ਜਾਂ ਨਿਕਾਰਾ PDF ਫਾਇਲ ਹੈ।
+missing_file_error=ਨਾ-ਮੌਜੂਦ PDF ਫਾਇਲ।
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} ਵਿਆਖਿਆ]
+password_label=ਇਹ PDF ਫਾਇਲ ਖੋਲ੍ਹਣ ਲਈ ਪਾਸਵਰਡ ਦਿਉ।
+password_invalid=ਗਲਤ ਪਾਸਵਰਡ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।
+password_ok=ਠੀਕ ਹੈ
+password_cancel=ਰੱਦ ਕਰੋ
+
+printing_not_supported=ਸਾਵਧਾਨ: ਇਹ ਬਰਾਊਜ਼ਰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।
+printing_not_ready=ਸਾਵਧਾਨ: ਪੀਡੀਐਫ(PDF) ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਨਹੀਂ ਹੈ।
+web_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ ਪੀਡੀਐਫ (PDF) ਫੋਂਟ ਵਰਤਨ ਲਈ ਅਸਮਰੱਥ ਹੈ।
+document_colors_disabled=PDF ਡੌਕੂਮੈਂਟ ਨੂੰ ਆਪਣੇ ਰੰਗ ਵਰਤਣ ਦੀ ਇਜ਼ਾਜ਼ਤ ਨਹੀਂ ਹੈ।: ਬਰਾਊਜ਼ਰ ਵਿੱਚ \'ਸਫ਼ਿਆਂ ਨੂੰ ਆਪਣੇ ਰੰਗ ਵਰਤਣ ਦਿਉ\' ਨੂੰ ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ।
diff --git a/lib/viewers/pdf/locale/pl/chrome.properties b/lib/viewers/pdf/locale/pl/chrome.properties
deleted file mode 100644
index 3bafa77..0000000
--- a/lib/viewers/pdf/locale/pl/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=Ten plik PDF może nie być poprawnie wyświetlony.
-open_with_different_viewer=Otwórz w innym programie.
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/pl/metadata.inc b/lib/viewers/pdf/locale/pl/metadata.inc
deleted file mode 100644
index 0cc701d..0000000
--- a/lib/viewers/pdf/locale/pl/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>pl</em:locale>
- <em:name>Przeglądarka PDF</em:name>
- <em:description>Używa HTML5 do wyświetlania plików PDF bezpośrednio w Firefoksie.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/pl/viewer.properties b/lib/viewers/pdf/locale/pl/viewer.properties
index 159d4e0..cef5c6b 100644
--- a/lib/viewers/pdf/locale/pl/viewer.properties
+++ b/lib/viewers/pdf/locale/pl/viewer.properties
@@ -1,123 +1,151 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Poprzednia strona
-previous_label=Wstecz
+previous_label=Poprzednia
next.title=Następna strona
-next_label=Dalej
+next_label=Następna
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Strona:
page_of=z {{pageCount}}
-zoom_out.title=Pomniejsz
+zoom_out.title=Pomniejszenie
zoom_out_label=Pomniejsz
-zoom_in.title=Powiększ
+zoom_in.title=Powiększenie
zoom_in_label=Powiększ
-zoom.title=Powiększenie
-print.title=Drukuj
-print_label=Drukuj
-presentation_mode.title=Przełącz do trybu prezentacji
+zoom.title=Skala
+presentation_mode.title=Przełącz na tryb prezentacji
presentation_mode_label=Tryb prezentacji
-open_file.title=Otwórz plik
+open_file.title=Otwieranie pliku
open_file_label=Otwórz
-download.title=Pobierz
+print.title=Drukowanie
+print_label=Drukuj
+download.title=Pobieranie
download_label=Pobierz
-bookmark.title=Aktualny widok (kopiuj lub otwórz w nowym oknie)
+bookmark.title=Aktualny widok (skopiuj lub otwórz w nowym oknie)
bookmark_label=Aktualny widok
+tools.title=Tools
+tools_label=Tools
+first_page.title=Przechodzenie do pierwszej strony
+first_page.label=Przejdź do pierwszej strony
+first_page_label=Przejdź do pierwszej strony
+last_page.title=Przechodzenie do ostatniej strony
+last_page.label=Przejdź do ostatniej strony
+last_page_label=Przejdź do ostatniej strony
+page_rotate_cw.title=Obracanie zgodnie z ruchem wskazówek zegara
+page_rotate_cw.label=Obróć zgodnie z ruchem wskazówek zegara
+page_rotate_cw_label=Obróć zgodnie z ruchem wskazówek zegara
+page_rotate_ccw.title=Obracanie przeciwnie do ruchu wskazówek zegara
+page_rotate_ccw.label=Obróć przeciwnie do ruchu wskazówek zegara
+page_rotate_ccw_label=Obróć przeciwnie do ruchu wskazówek zegara
+
+hand_tool_enable.title=Włączanie narzędzia rączka
+hand_tool_enable_label=Włącz narzędzie rączka
+hand_tool_disable.title=Wyłączanie narzędzia rączka
+hand_tool_disable_label=Wyłącz narzędzie rączka
+
+document_properties.title=Właściwości dokumentu…
+document_properties_label=Właściwości dokumentu…
+document_properties_file_name=Nazwa pliku:
+document_properties_file_size=Rozmiar pliku:
+document_properties_kb={{size_kb}} KB ({{size_b}} b)
+document_properties_mb={{size_mb}} MB ({{size_b}} b)
+document_properties_title=Tytuł:
+document_properties_author=Autor:
+document_properties_subject=Temat:
+document_properties_keywords=Słowa kluczowe:
+document_properties_creation_date=Data utworzenia:
+document_properties_modification_date=Data modyfikacji:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Utworzony przez:
+document_properties_producer=PDF wyprodukowany przez:
+document_properties_version=Wersja PDF:
+document_properties_page_count=Liczba stron:
+document_properties_close=Zamknij
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Pokaż/Ukryj panel boczny
-toggle_sidebar_label=Pokaż/Ukryj panel
-outline.title=Wyświetl konspekt dokumentu
-outline_label=Konspekt dokumentu
-thumbs.title=Wyświetl miniatury
-thumbs_label=Miniatury
-findbar.title=Szukaj w tekście
+toggle_sidebar.title=Przełączanie panelu bocznego
+toggle_sidebar_label=Przełącz panel boczny
+outline.title=Wyświetlanie zarysu dokumentu
+outline_label=Zarys dokumentu
+attachments.title=Wyświetlanie załączników
+attachments_label=Załączniki
+thumbs.title=Wyświetlanie miniaturek
+thumbs_label=Miniaturki
+findbar.title=Znajdź w dokumencie
findbar_label=Znajdź
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Strona {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=Miniatura strony {{page}}
-
-# Context menu
-first_page.label=Idź do pierwszej strony
-last_page.label=Idź do ostatniej strony
-page_rotate_cw.label=Obróć w prawo
-page_rotate_ccw.label=Obróć w lewo
+thumb_page_canvas=Miniaturka strony {{page}}
# Find panel button title and messages
find_label=Znajdź:
-find_previous.title=Znajdź poprzednie wystąpienie ostatnio szukanej frazy
+find_previous.title=Znajdź poprzednie wystąpienie tekstu
find_previous_label=Poprzednie
-find_next.title=Znajdź następne wystąpienie ostatnio szukanej frazy
+find_next.title=Znajdź następne wystąpienie tekstu
find_next_label=Następne
-find_highlight=Podświetl
-find_match_case_label=Rozróżniaj wielkość liter
-find_reached_top=Początek strony. Wyszukiwanie od końca.
-find_reached_bottom=Koniec strony. Wyszukiwanie od początku.
-find_not_found=Szukany tekst nie został odnaleziony.
+find_highlight=Podświetl wszystkie
+find_match_case_label=Rozróżniaj wielkość znaków
+find_reached_top=Osiągnięto początek dokumentu, kontynuacja od końca
+find_reached_bottom=Osiągnięto koniec dokumentu, kontynuacja od początku
+find_not_found=Tekst nieznaleziony
# Error panel labels
error_more_info=Więcej informacji
error_less_info=Mniej informacji
error_close=Zamknij
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=Wersja PDF.js: {{version}} (kompilacja: {{build}})
+error_version_info=PDF.js v{{version}} (kompilacja: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Wiadomość: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stos: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Plik: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=Linia: {{line}}
-rendering_error=Wystąpił błąd podczas wyświetlania strony.
+error_line=Wiersz: {{line}}
+rendering_error=Podczas renderowania strony wystąpił błąd.
# Predefined zoom values
page_scale_width=Szerokość strony
-page_scale_fit=Cała strona
-page_scale_auto=Automatyczne dopasowanie
-page_scale_actual=Rzeczywisty rozmiar
+page_scale_fit=Dopasowanie strony
+page_scale_auto=Skala automatyczna
+page_scale_actual=Rozmiar rzeczywisty
# Loading indicator messages
loading_error_indicator=Błąd
-loading_error=Wystąpił błąd podczas wczytywania pliku PDF.
-invalid_file_error=Błędny lub uszkodzony plik PDF.
-missing_file_error=Nie znaleziono pliku PDF.
+loading_error=Podczas wczytywania dokumentu PDF wystąpił błąd.
+invalid_file_error=Nieprawidłowy lub uszkodzony plik PDF.
+missing_file_error=Brak pliku PDF.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
-# the PDF spec (32000-1:2008 Table 169 - Annotation types).
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[Komentarz {{type}}]
-request_password=Plik PDF jest chroniony przez hasło:
+text_annotation_type.alt=[Adnotacja: {{type}}]
+password_label=Wprowadź hasło, aby otworzyć ten dokument PDF.
+password_invalid=Nieprawidłowe hasło. Proszę spróbować ponownie.
+password_ok=OK
+password_cancel=Anuluj
-printing_not_supported=Ostrzeżenie: Drukowanie nie jest w pełni obsługiwane przez tę przeglądarkę.
-printing_not_ready=Ostrzeżenie: Plik PDF nie jest całkowicie wczytany do drukowania.
-web_fonts_disabled=Web fonty są nieaktywne. Nie można korzystać z osadzonych czcionek w plikach PDF.
-web_colors_disabled=Kolory WWW są nieaktywne.
+printing_not_supported=Ostrzeżenie: Drukowanie nie jest w pełni wspierane przez przeglądarkę.
+printing_not_ready=Ostrzeżenie: Dokument PDF nie jest całkowicie wczytany, więc nie można go wydrukować.
+web_fonts_disabled=Czcionki sieciowe są wyłączone: nie można użyć osadzonych czcionek PDF.
+document_colors_disabled=Dokumenty PDF nie mogą używać własnych kolorów: Opcja „Pozwalaj stronom stosować inne kolory” w przeglądarce jest nieaktywna.
diff --git a/lib/viewers/pdf/locale/pt-BR/metadata.inc b/lib/viewers/pdf/locale/pt-BR/metadata.inc
deleted file mode 100644
index 179af8b..0000000
--- a/lib/viewers/pdf/locale/pt-BR/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>pt-BR</em:locale>
- <em:name>PDF Viewer</em:name>
- <em:description>Aprensenta PDFs no browser usando a tecnologia HTML5.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/pt-BR/viewer.properties b/lib/viewers/pdf/locale/pt-BR/viewer.properties
index 9f47b9c..a8e33b8 100644
--- a/lib/viewers/pdf/locale/pt-BR/viewer.properties
+++ b/lib/viewers/pdf/locale/pt-BR/viewer.properties
@@ -1,44 +1,161 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-bookmark.title=Marcar posição atual (bookmark)
+# Main toolbar buttons (tooltips and alt text for images)
previous.title=Página anterior
+previous_label=Anterior
next.title=Próxima página
+next_label=Próxima
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Página:
+page_of=de {{pageCount}}
+
+zoom_out.title=Diminuir zoom
+zoom_out_label=Diminuir zoom
+zoom_in.title=Aumentar zoom
+zoom_in_label=Aumentar zoom
+zoom.title=Zoom
+presentation_mode.title=Alternar para modo de apresentação
+presentation_mode_label=Modo de apresentação
+open_file.title=Abrir arquivo
+open_file_label=Abrir
print.title=Imprimir
-download.title=Baixar arquivo
-zoom_out.title=Diminuir Zoom
-zoom_in.title=Aumentar Zoom
+print_label=Imprimir
+download.title=Download
+download_label=Download
+bookmark.title=Visualização atual (copie ou abra em nova janela)
+bookmark_label=Visualização atual
+
+# Secondary toolbar and context menu
+tools.title=Ferramentas
+tools_label=Ferramentas
+first_page.title=Ir para a primeira página
+first_page.label=Ir para a primeira página
+first_page_label=Ir para a primeira página
+last_page.title=Ir para a última página
+last_page.label=Ir para a última página
+last_page_label=Ir para a última página
+page_rotate_cw.title=Girar no sentido horário
+page_rotate_cw.label=Girar no sentido horário
+page_rotate_cw_label=Girar no sentido horário
+page_rotate_ccw.title=Girar no sentido anti-horário
+page_rotate_ccw.label=Girar no sentido anti-horário
+page_rotate_ccw_label=Girar no sentido anti-horário
+
+hand_tool_enable.title=Ativar ferramenta da mão
+hand_tool_enable_label=Ativar ferramenta da mão
+hand_tool_disable.title=Desativar ferramenta da mão
+hand_tool_disable_label=Desativar ferramenta da mão
+
+# Document properties dialog box
+document_properties.title=Propriedades do documento…
+document_properties_label=Propriedades do documento…
+document_properties_file_name=Nome do arquivo:
+document_properties_file_size=Tamanho do arquivo:
+document_properties_kb={{size_kb}}\u202fKB ({{size_b}} bytes)
+document_properties_mb={{size_mb}}\u202fMB ({{size_b}} bytes)
+document_properties_title=Título:
+document_properties_author=Autor:
+document_properties_subject=Assunto:
+document_properties_keywords=Palavras-chave:
+document_properties_creation_date=Data da criação:
+document_properties_modification_date=Data da modificação:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Criação:
+document_properties_producer=Criador do PDF:
+document_properties_version=Versão do PDF:
+document_properties_page_count=Contagem de páginas:
+document_properties_close=Fechar
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Exibir/ocultar painel
+toggle_sidebar_label=Exibir/ocultar painel
+outline.title=Exibir estrutura de tópicos
+outline_label=Estrutura de tópicos do documento
+thumbs.title=Exibir miniaturas das páginas
+thumbs_label=Miniaturas
+findbar.title=Localizar no documento
+findbar_label=Localizar
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Página {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura da página {{page}}
+
+# Find panel button title and messages
+find_label=Localizar:
+find_previous.title=Localizar a ocorrência anterior do texto
+find_previous_label=Anterior
+find_next.title=Localizar a próxima ocorrência do texto
+find_next_label=Próxima
+find_highlight=Realçar tudo
+find_match_case_label=Diferenciar maiúsculas/minúsculas
+find_reached_top=Atingido o início do documento, continuando do fim
+find_reached_bottom=Atingido o fim do documento, continuando do início
+find_not_found=Texto não encontrado
+
+# Error panel labels
error_more_info=Mais informações
error_less_info=Menos informações
error_close=Fechar
-error_build=PDF.JS Versão: {{build}}
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
error_message=Mensagem: {{message}}
-error_stack=Pilha: {{stack}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Arquivo: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Linha: {{line}}
+rendering_error=Ocorreu um erro ao renderizar a página.
+
+# Predefined zoom values
page_scale_width=Largura da página
-page_scale_fit=Página inteira
+page_scale_fit=Ajustar à janela
page_scale_auto=Zoom automático
-page_scale_actual=Tamanho original
-toggle_slider.title=Abrir/fechar aba lateral
-thumbs.title=Mostrar miniaturas
-outline.title=Mostrar índice
-loading=Carregando... {{percent}}%
+page_scale_actual=Tamanho real
+
+# Loading indicator messages
loading_error_indicator=Erro
-loading_error=Um erro ocorreu ao carregar o arquivo.
-rendering_error=Um erro ocorreu ao apresentar a página.
-page_label=Página:
-page_of=de {{pageCount}}
-open_file.title=Abrir arquivo
-text_annotation_type=[{{type}} Anotações]
+loading_error=Ocorreu um erro ao carregar o PDF.
+invalid_file_error=Arquivo PDF corrompido ou inválido.
+missing_file_error=Arquivo PDF ausente.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anotação {{type}}]
+password_label=Forneça a senha para abrir este arquivo PDF.
+password_invalid=Senha inválida. Por favor, tente de novo.
+password_ok=OK
+password_cancel=Cancelar
+
+printing_not_supported=Alerta: a impressão não é totalmente suportada neste navegador.
+printing_not_ready=Alerta: o PDF não está totalmente carregado para impressão.
+web_fonts_disabled=Fontes da web estão desativadas: não é possível usar fontes incorporadas do PDF.
+document_colors_disabled=Documentos PDF não estão permitidos a usar suas próprias cores: “Páginas podem usar outras cores” está desativado no navegador.
diff --git a/lib/viewers/pdf/locale/pt-PT/viewer.properties b/lib/viewers/pdf/locale/pt-PT/viewer.properties
new file mode 100644
index 0000000..0ad9b8a
--- /dev/null
+++ b/lib/viewers/pdf/locale/pt-PT/viewer.properties
@@ -0,0 +1,166 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Página anterior
+previous_label=Anterior
+next.title=Página seguinte
+next_label=Seguinte
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Página:
+page_of=de {{pageCount}}
+
+zoom_out.title=Reduzir
+zoom_out_label=Reduzir
+zoom_in.title=Ampliar
+zoom_in_label=Ampliar
+zoom.title=Ampliação
+presentation_mode.title=Mudar para modo de apresentação
+presentation_mode_label=Modo de apresentação
+open_file.title=Abrir ficheiro
+open_file_label=Abrir
+print.title=Imprimir
+print_label=Imprimir
+download.title=Transferir
+download_label=Transferir
+bookmark.title=Vista atual (copiar ou abrir em nova janela)
+bookmark_label=Vista atual
+
+# Secondary toolbar and context menu
+tools.title=Ferramentas
+tools_label=Ferramentas
+first_page.title=Ir para a primeira página
+first_page.label=Ir para a primeira página
+first_page_label=Ir para a primeira página
+last_page.title=Ir para a última página
+last_page.label=Ir para a última página
+last_page_label=Ir para a última página
+page_rotate_cw.title=Rodar à direita
+page_rotate_cw.label=Rodar à direita
+page_rotate_cw_label=Rodar à direita
+page_rotate_ccw.title=Rodar à esquerda
+page_rotate_ccw.label=Rodar à esquerda
+page_rotate_ccw_label=Rodar à esquerda
+hand_tool_enable.title=Ativar ferramenta Mão
+hand_tool_enable_label=Ativar ferramenta Mão
+hand_tool_disable.title=Desativar ferramenta Mão
+hand_tool_disable_label=Desativar ferramenta Mão
+
+# Document properties dialog box
+document_properties.title=Propriedades do documento...
+document_properties_label=Propriedades do documento...
+document_properties_file_name=Nome do ficheiro:
+document_properties_file_size=Tamanho do ficheiro:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Título:
+document_properties_author=Autor:
+document_properties_subject=Assunto:
+document_properties_keywords=Palavras-chave:
+document_properties_creation_date=Data de criação:
+document_properties_modification_date=Data de modificação:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Criador:
+document_properties_producer=Produtor de PDF:
+document_properties_version=versão do PDF:
+document_properties_page_count=N.º de páginas:
+document_properties_close=Fechar
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Comutar barra lateral
+toggle_sidebar_label=Comutar barra lateral
+outline.title=Mostrar estrutura do documento
+outline_label=Estrutura do documento
+thumbs.title=Mostrar miniaturas
+thumbs_label=Miniaturas
+findbar.title=Localizar no documento
+findbar_label=Localizar
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Página {{page}}
+
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura da página {{page}}
+
+# Find panel button title and messages
+find_label=Localizar:
+find_previous.title=Localizar a ocorrência anterior
+find_previous_label=Anterior
+find_next.title=Localizar a ocorrência seguinte
+find_next_label=Seguinte
+find_highlight=Destacar tudo
+find_match_case_label=Correspondência
+find_reached_top=Início de documento atingido, a continuar do fim
+find_reached_bottom=Fim da página atingido, a continuar do início
+find_not_found=Frase não encontrada
+
+# Error panel labels
+error_more_info=Mais informação
+error_less_info=Menos informação
+error_close=Fechar
+
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (compilação: {{build}})
+
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mensagem: {{message}}
+
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Pilha: {{stack}}
+
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Ficheiro: {{file}}
+
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linha: {{line}}
+rendering_error=Ocorreu um erro ao processar a página.
+
+# Predefined zoom values
+page_scale_width=Ajustar à largura
+page_scale_fit=Ajustar à página
+page_scale_auto=Tamanho automático
+page_scale_actual=Tamanho real
+
+# Loading indicator messages
+loading_error_indicator=Erro
+loading_error=Ocorreu um erro ao carregar o PDF.
+invalid_file_error=Ficheiro PDF inválido ou danificado.
+missing_file_error=Ficheiro PDF inexistente.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anotação {{type}}]
+password_label=Introduza a senha para abrir este PDF.
+password_invalid=Senha inválida. Tente novamente.
+password_ok=OK
+password_cancel=Cancelar
+
+printing_not_supported=Aviso: a impressão não é totalmente suportada por este navegador.
+printing_not_ready=Aviso: o PDF ainda não está totalmente carregado.
+web_fonts_disabled=Os tipos de letra web estão desativados: não é possível utilizar os tipos de letra PDF incorporados.
+document_colors_disabled=Os documentos PDF não permitem a utilização das suas próprias cores: \'Autorizar as páginas a escolher as suas próprias cores\' está desativado no navegador.
diff --git a/lib/viewers/pdf/locale/rm/viewer.properties b/lib/viewers/pdf/locale/rm/viewer.properties
new file mode 100644
index 0000000..924f51e
--- /dev/null
+++ b/lib/viewers/pdf/locale/rm/viewer.properties
@@ -0,0 +1,153 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Pagina precedenta
+previous_label=Enavos
+next.title=Proxima pagina
+next_label=Enavant
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Pagina:
+page_of=da {{pageCount}}
+
+zoom_out.title=Empitschnir
+zoom_out_label=Empitschnir
+zoom_in.title=Engrondir
+zoom_in_label=Engrondir
+zoom.title=Zoom
+presentation_mode.title=Midar en il modus da preschentaziun
+presentation_mode_label=Modus da preschentaziun
+open_file.title=Avrir datoteca
+open_file_label=Avrir
+print.title=Stampar
+print_label=Stampar
+download.title=Telechargiar
+download_label=Telechargiar
+bookmark.title=Vista actuala (copiar u avrir en ina nova fanestra)
+bookmark_label=Vista actuala
+
+# Secondary toolbar and context menu
+tools.title=Utensils
+tools_label=Utensils
+first_page.title=Siglir a l'emprima pagina
+first_page.label=Siglir a l'emprima pagina
+first_page_label=Siglir a l'emprima pagina
+last_page.title=Siglir a la davosa pagina
+last_page.label=Siglir a la davosa pagina
+last_page_label=Siglir a la davosa pagina
+page_rotate_cw.title=Rotar en direcziun da l'ura
+page_rotate_cw.label=Rotar en direcziun da l'ura
+page_rotate_cw_label=Rotar en direcziun da l'ura
+page_rotate_ccw.title=Rotar en direcziun cuntraria a l'ura
+page_rotate_ccw.label=Rotar en direcziun cuntraria a l'ura
+page_rotate_ccw_label=Rotar en direcziun cuntraria a l'ura
+
+hand_tool_enable.title=Activar l'utensil da maun
+hand_tool_enable_label=Activar l'utensil da maun
+hand_tool_disable.title=Deactivar l'utensil da maun
+hand_tool_disable_label=Deactivar l'utensil da maun
+
+# Document properties dialog box
+document_properties.title=Caracteristicas dal document…
+document_properties_label=Caracteristicas dal document…
+document_properties_file_name=Num da la datoteca:
+document_properties_file_size=Grondezza da la datoteca:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Titel:
+document_properties_author=Autur:
+document_properties_subject=Tema:
+document_properties_keywords=Chavazzins:
+document_properties_creation_date=Data da creaziun:
+document_properties_modification_date=Data da modificaziun:
+document_properties_date_string={{date}} {{time}}
+document_properties_creator=Creà da:
+document_properties_producer=Creà il PDF cun:
+document_properties_version=Versiun da PDF:
+document_properties_page_count=Dumber da paginas:
+document_properties_close=Serrar
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Activar/deactivar la trav laterala
+toggle_sidebar_label=Activar/deactivar la trav laterala
+outline.title=Mussar la structura da la pagina
+outline_label=Structura da la pagina
+attachments.title=Mussar agiuntas
+attachments_label=Agiuntas
+thumbs.title=Mussar las miniaturas
+thumbs_label=Miniaturas
+findbar.title=Tschertgar en il document
+findbar_label=Tschertgar
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Pagina {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura da la pagina {{page}}
+
+# Find panel button title and messages
+find_label=Tschertgar:
+find_previous.title=Tschertgar la posiziun precedenta da l'expressiun
+find_previous_label=Enavos
+find_next.title=Tschertgar la proxima posiziun da l'expressiun
+find_next_label=Enavant
+find_highlight=Relevar tuts
+find_match_case_label=Resguardar maiusclas/minusclas
+find_reached_top=Il cumenzament dal document è cuntanschì, la tschertga cuntinuescha a la fin dal document
+find_reached_bottom=La fin dal document è cuntanschì, la tschertga cuntinuescha al cumenzament dal document
+find_not_found=Impussibel da chattar l'expressiun
+
+# Error panel labels
+error_more_info=Dapli infurmaziuns
+error_less_info=Damain infurmaziuns
+error_close=Serrar
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Messadi: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Datoteca: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Lingia: {{line}}
+rendering_error=Ina errur è cumparida cun visualisar questa pagina.
+
+# Predefined zoom values
+page_scale_width=Ladezza da la pagina
+page_scale_fit=Entira pagina
+page_scale_auto=Zoom automatic
+page_scale_actual=Grondezza actuala
+
+# Loading indicator messages
+loading_error_indicator=Errur
+loading_error=Ina errur è cumparida cun chargiar il PDF.
+invalid_file_error=Datoteca PDF nunvalida u donnegiada.
+missing_file_error=Datoteca PDF manconta.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Annotaziun da {{type}}]
+password_label=Endatescha il pled-clav per avrir questa datoteca da PDF.
+password_invalid=Pled-clav nunvalid. Emprova anc ina giada.
+password_ok=OK
+password_cancel=Interrumper
+
+printing_not_supported=Attenziun: Il stampar na funcziunescha anc betg dal tut en quest navigatur.
+printing_not_ready=Attenziun: Il PDF n'è betg chargià cumplettamain per stampar.
+web_fonts_disabled=Scrittiras dal web èn deactivadas: impussibel dad utilisar las scrittiras integradas en il PDF.
+document_colors_disabled=Documents da PDF na pon betg utilisar lur atgnas colurs: \'Permetter a las paginas d'utilisar lur atgnas colurs empè da las colurs tschernidas survart\' è deactivà en il navigatur.
diff --git a/lib/viewers/pdf/locale/ro/metadata.inc b/lib/viewers/pdf/locale/ro/metadata.inc
deleted file mode 100644
index e2c72ec..0000000
--- a/lib/viewers/pdf/locale/ro/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>ro</em:locale>
- <em:name>Cititor PDF</em:name>
- <em:description>Afișează fișierele PDF direct în Firefox.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/ro/viewer.properties b/lib/viewers/pdf/locale/ro/viewer.properties
index 985be8d..20d2d95 100644
--- a/lib/viewers/pdf/locale/ro/viewer.properties
+++ b/lib/viewers/pdf/locale/ro/viewer.properties
@@ -1,55 +1,163 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-bookmark.title=Vederea curentă (copiază sau deschide în fereastră nouă)
+# Main toolbar buttons (tooltips and alt text for images)
previous.title=Pagina precedentă
+previous_label=Înapoi
next.title=Pagina următoare
+next_label=Înainte
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Pagină:
+page_of=din {{pageCount}}
+
+zoom_out.title=Depărtează
+zoom_out_label=Depărtează
+zoom_in.title=Apropie
+zoom_in_label=Apropie
+zoom.title=Panoramează
+presentation_mode.title=Schimbă la modul de prezentare
+presentation_mode_label=Mod de prezentare
+open_file.title=Deschide un fișier
+open_file_label=Deschide
print.title=Tipărește
+print_label=Tipărește
download.title=Descarcă
-zoom_out.title=Micșorează
-zoom_in.title=Mărește
-error_more_info=Detaliat
-error_less_info=Sumarizat
+download_label=Descarcă
+bookmark.title=Vizualizare curentă (copiați sau deschideți într-o fereastră nouă)
+bookmark_label=Vizualizare curentă
+
+# Secondary toolbar and context menu
+tools.title=Unelte
+tools_label=Unelte
+first_page.title=Mergi la prima pagină
+first_page.label=Mergeți la prima pagină
+first_page_label=Mergi la prima pagină
+last_page.title=Mergi la ultima pagină
+last_page.label=Mergi la ultima pagină
+last_page_label=Mergi la ultima pagină
+page_rotate_cw.title=Rotește în sensul acelor de ceasornic
+page_rotate_cw.label=Rotește în sensul acelor de ceasornic
+page_rotate_cw_label=Rotește în sensul acelor de ceasornic
+page_rotate_ccw.title=Rotește în sens invers al acelor de ceasornic
+page_rotate_ccw.label=Rotate Counter-Clockwise
+page_rotate_ccw_label=Rotește în sens invers acelor de ceasornic
+
+hand_tool_enable.title=Activează instrumentul mână
+hand_tool_enable_label=Activează instrumentul mână
+hand_tool_disable.title=Dezactivează instrumentul mână
+hand_tool_disable_label=Dezactivează instrumentul mână
+
+# Document properties dialog box
+document_properties.title=Proprietățile documentului…
+document_properties_label=Proprietățile documentului…
+document_properties_file_name=Nume fișier:
+document_properties_file_size=Dimensiune fișier:
+document_properties_kb={{size_kb}} KB ({{size_b}} biți)
+document_properties_mb={{size_mb}} MB ({{size_b}} biți)
+document_properties_title=Titlu:
+document_properties_author=Autor:
+document_properties_subject=Subiect:
+document_properties_keywords=Cuvinte cheie:
+document_properties_creation_date=Data creării:
+document_properties_modification_date=Data modificării:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Autor:
+document_properties_producer=Producător PDF:
+document_properties_version=Versiune PDF:
+document_properties_page_count=Număr de pagini:
+document_properties_close=Închidere
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Comută bara laterală
+toggle_sidebar_label=Comută bara laterală
+outline.title=Arată schița documentului
+outline_label=Schiță document
+attachments.title=Afișează atașamentele
+attachments_label=Atașamente
+thumbs.title=Arată miniaturi
+thumbs_label=Miniaturi
+findbar.title=Caută în document
+findbar_label=Căutați
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Pagina {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura paginii {{page}}
+
+# Find panel button title and messages
+find_label=Caută:
+find_previous.title=Găsește instanța anterioară în frază
+find_previous_label=Anterior
+find_next.title=Găstește următoarea instanță în frază
+find_next_label=Următor
+find_highlight=Evidențiază aparițiile
+find_match_case_label=Potrivire litere
+find_reached_top=Am ajuns la începutul documentului, continuă de la sfârșit
+find_reached_bottom=Am ajuns la sfârșitul documentului, continuă de la început
+find_not_found=Nu s-a găsit textul
+
+# Error panel labels
+error_more_info=Mai multe informații
+error_less_info=Mai puțină informație
error_close=Închide
-error_build=PDF.JS Build: {{build}}
-error_message=Message: {{message}}
-error_stack=Stack: {{stack}}
-error_file=File: {{file}}
-error_line=Line: {{line}}
-page_scale_width=După lățime
-page_scale_fit=Toată pagina
-page_scale_auto=Mărime automată
-page_scale_actual=Mărime originală
-toggle_slider.title=Vedere de ansamblu
-thumbs.title=Miniaturi
-outline.title=Cuprins
-loading=Încărcare... {{percent}}%
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (varianta: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mesaj: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stivă: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Fișier: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linie: {{line}}
+rendering_error=A intervenit o eroare la afișarea paginii.
+
+# Predefined zoom values
+page_scale_width=Lățime pagină
+page_scale_fit=Potrivire la pagină
+page_scale_auto=Dimensiune automată
+page_scale_actual=Dimensiune reală
+
+# Loading indicator messages
loading_error_indicator=Eroare
-loading_error=S-a produs o eroare în timpul încărcării documentului.
-rendering_error=S-a produs o eroare în timpul procesării paginii.
-page_label=Pagina:
-page_of=din {{pageCount}}
-open_file.title=Deschide fișier
-text_annotation_type=[Adnotare {{type}}]
-toggle_slider_label=Vedere de ansamblu
-thumbs_label=Miniaturi
-outline_label=Cuprins
-bookmark_label=Vederea curentă
-previous_label=Înapoi
-next_label=Înainte
-print_label=Tipărește
-download_label=Descarcă
-zoom_out_label=Micșorează
-zoom_in_label=Mărește
-zoom.title=Mărime
+loading_error=A intervenit o eroare la încărcarea fișierului PDF.
+invalid_file_error=Fișier PDF invalid sau deteriorat.
+missing_file_error=Fișier PDF lipsă.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Adnotare]
+password_label=Introduceți parola pentru a deschide acest fişier PDF.
+password_invalid=Parolă greșită. Vă rugăm încercați din nou.
+password_ok=OK
+password_cancel=Renunță
+
+printing_not_supported=Atenție: Tipărirea nu este suportată în totalitate de acest navigator.
+printing_not_ready=Avertisment: Fișierul PDF nu este încărcat complet pentru tipărire.
+web_fonts_disabled=Fonturile web sunt dezactivate: nu pot utiliza fonturile PDF încorporate.
+document_colors_disabled=Documentele PDF nu sunt autorizate să folosească propriile culori: 'Permite paginilor să aleagă propriile culori' este dezactivată în navigator.
diff --git a/lib/viewers/pdf/locale/ru/metadata.inc b/lib/viewers/pdf/locale/ru/metadata.inc
deleted file mode 100644
index 410814c..0000000
--- a/lib/viewers/pdf/locale/ru/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>ru</em:locale>
- <em:name>PDF Viewer</em:name>
- <em:description>Показывает файлы PDF непосредственно в Firefox используя HTML5.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/ru/viewer.properties b/lib/viewers/pdf/locale/ru/viewer.properties
index 0465fd8..b2de0fe 100644
--- a/lib/viewers/pdf/locale/ru/viewer.properties
+++ b/lib/viewers/pdf/locale/ru/viewer.properties
@@ -1,62 +1,109 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-bookmark.title=Ссылка на текущий вид (скопировать или открыть в новом окне)
-previous.title=Предыдущая страница
-next.title=Следующая страница
-print.title=Печать
-download.title=Загрузить
-zoom_out.title=Уменьшить
-zoom_in.title=Увеличить
-error_more_info=Детали
-error_less_info=Скрыть детали
-error_close=Закрыть
-error_build=PDF.JS компиляция: {{build}}
-error_message=Сообщение: {{message}}
-error_stack=Стeк: {{stack}}
-error_file=Файл: {{file}}
-error_line=Строка: {{line}}
-page_scale_width=По ширине страницы
-page_scale_fit=Во всю страницу
-page_scale_auto=Авто
-page_scale_actual=Настоящий размер
-toggle_slider.title=Открыть/закрыть вспомогательную панель
-thumbs.title=Показать уменьшенные изображения
-outline.title=Показать содержание документа
-loading=Загрузка... {{percent}}%
-loading_error_indicator=Ошибка
-loading_error=Произошла ошибка во время загрузки PDF.
-rendering_error=Произошла ошибка во время создания страницы.
-page_label=Страница:
-page_of=из {{pageCount}}
-open_file.title=Открыть файл
-text_annotation_type=[Аннотация {{type}}]
-toggle_slider_label=Вспомогательная панель
-thumbs_label=Уменьшенные изображения
-outline_label=Содержание документа
-bookmark_label=Текущий вид
-previous_label=Предыдущая
-next_label=Следующая
-print_label=Печать
-download_label=Загрузить
-zoom_out_label=Уменьшить
-zoom_in_label=Увеличить
-zoom.title=Масштаб
-thumb_page_title=Страница {{page}}
-thumb_page_canvas=Уменьшенное изображение страницы {{page}}
-request_password=PDF защищён паролем:
-fullscreen.title=Полный экран
-fullscreen_label=Полный экран
-page_rotate_cw.label=Повернуть по часовой стрелке
-page_rotate_ccw.label=Повернуть против часовой стрелки
+previous.title = Предыдущая страница
+previous_label = Предыдущая
+next.title = Следующая страница
+next_label = Следующая
+page_label = Страница:
+page_of = из {{pageCount}}
+zoom_out.title = Уменьшить
+zoom_out_label = Уменьшить
+zoom_in.title = Увеличить
+zoom_in_label = Увеличить
+zoom.title = Масштаб
+presentation_mode.title = Перейти в режим презентации
+presentation_mode_label = Режим презентации
+open_file.title = Открыть файл
+open_file_label = Открыть
+print.title = Печать
+print_label = Печать
+download.title = Загрузить
+download_label = Загрузить
+bookmark.title = Ссылка на текущий вид (скопировать или открыть в новом окне)
+bookmark_label = Текущий вид
+tools.title = Инструменты
+tools_label = Инструменты
+first_page.title = Перейти на первую страницу
+first_page.label = Перейти на первую страницу
+first_page_label = Перейти на первую страницу
+last_page.title = Перейти на последнюю страницу
+last_page.label = Перейти на последнюю страницу
+last_page_label = Перейти на последнюю страницу
+page_rotate_cw.title = Повернуть по часовой стрелке
+page_rotate_cw.label = Повернуть по часовой стрелке
+page_rotate_cw_label = Повернуть по часовой стрелке
+page_rotate_ccw.title = Повернуть против часовой стрелки
+page_rotate_ccw.label = Повернуть против часовой стрелки
+page_rotate_ccw_label = Повернуть против часовой стрелки
+hand_tool_enable.title = Включить Инструмент «Рука»
+hand_tool_enable_label = Включить Инструмент «Рука»
+hand_tool_disable.title = Отключить Инструмент «Рука»
+hand_tool_disable_label = Отключить Инструмент «Рука»
+document_properties.title = Свойства документа…
+document_properties_label = Свойства документа…
+document_properties_file_name = Имя файла:
+document_properties_file_size = Размер файла:
+document_properties_kb = {{size_kb}} КБ ({{size_b}} байт)
+document_properties_mb = {{size_mb}} МБ ({{size_b}} байт)
+document_properties_title = Заголовок:
+document_properties_author = Автор:
+document_properties_subject = Тема:
+document_properties_keywords = Ключевые слова:
+document_properties_creation_date = Дата создания:
+document_properties_modification_date = Дата изменения:
+document_properties_date_string = {{date}}, {{time}}
+document_properties_creator = Приложение:
+document_properties_producer = Производитель PDF:
+document_properties_version = Версия PDF:
+document_properties_page_count = Число страниц:
+document_properties_close = Закрыть
+toggle_sidebar.title = Открыть/закрыть боковую панель
+toggle_sidebar_label = Открыть/закрыть боковую панель
+outline.title = Показать содержание документа
+outline_label = Содержание документа
+attachments.title = Показать вложения
+attachments_label = Вложения
+thumbs.title = Показать миниатюры
+thumbs_label = Миниатюры
+findbar.title = Найти в документе
+findbar_label = Найти
+thumb_page_title = Страница {{page}}
+thumb_page_canvas = Миниатюра страницы {{page}}
+find_label = Найти:
+find_previous.title = Найти предыдущее вхождение фразы в текст
+find_previous_label = Назад
+find_next.title = Найти следующее вхождение фразы в текст
+find_next_label = Далее
+find_highlight = Подсветить все
+find_match_case_label = С учётом регистра
+find_reached_top = Достигнут верх документа, продолжено снизу
+find_reached_bottom = Достигнут конец документа, продолжено сверху
+find_not_found = Фраза не найдена
+error_more_info = Детали
+error_less_info = Скрыть детали
+error_close = Закрыть
+error_version_info = PDF.js v{{version}} (сборка: {{build}})
+error_message = Сообщение: {{message}}
+error_stack = Стeк: {{stack}}
+error_file = Файл: {{file}}
+error_line = Строка: {{line}}
+rendering_error = При создании страницы произошла ошибка.
+page_scale_width = По ширине страницы
+page_scale_fit = По размеру страницы
+page_scale_auto = Автоматически
+page_scale_actual = Реальный размер
+loading_error_indicator = Ошибка
+loading_error = При загрузке PDF произошла ошибка.
+invalid_file_error = Некорректный или повреждённый PDF-файл.
+missing_file_error = PDF-файл отсутствует.
+text_annotation_type.alt = [Аннотация {{type}}]
+password_label = Введите пароль, чтобы открыть этот PDF-файл.
+password_invalid = Неверный пароль. Пожалуйста, попробуйте снова.
+password_ok = OK
+password_cancel = Отмена
+printing_not_supported = Предупреждение: В этом браузере не полностью поддерживается печать.
+printing_not_ready = Предупреждение: PDF не полностью загружен для печати.
+web_fonts_disabled = Веб-шрифты отключены: невозможно использовать встроенные PDF-шрифты.
+document_colors_disabled = PDF-документам не разрешено использовать свои цвета: в браузере отключён параметр «Разрешить веб-сайтам использовать свои цвета».
diff --git a/lib/viewers/pdf/locale/en-US/viewer.properties b/lib/viewers/pdf/locale/rw/viewer.properties
similarity index 92%
copy from lib/viewers/pdf/locale/en-US/viewer.properties
copy to lib/viewers/pdf/locale/rw/viewer.properties
index e0d25ac..993c484 100644
--- a/lib/viewers/pdf/locale/en-US/viewer.properties
+++ b/lib/viewers/pdf/locale/rw/viewer.properties
@@ -1,123 +1,123 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Previous Page
previous_label=Previous
next.title=Next Page
next_label=Next
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Page:
page_of=of {{pageCount}}
zoom_out.title=Zoom Out
zoom_out_label=Zoom Out
zoom_in.title=Zoom In
zoom_in_label=Zoom In
-zoom.title=Zoom
+zoom.title=Ihindurangano
print.title=Print
print_label=Print
presentation_mode.title=Switch to Presentation Mode
presentation_mode_label=Presentation Mode
-open_file.title=Open File
-open_file_label=Open
+open_file.title=Gufungura Dosiye
+open_file_label=Gufungura
download.title=Download
download_label=Download
bookmark.title=Current view (copy or open in new window)
bookmark_label=Current View
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Toggle Sidebar
toggle_sidebar_label=Toggle Sidebar
outline.title=Show Document Outline
outline_label=Document Outline
thumbs.title=Show Thumbnails
thumbs_label=Thumbnails
findbar.title=Find in Document
-findbar_label=Find
+findbar_label=Gushakisha
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Page {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Thumbnail of Page {{page}}
# Context menu
first_page.label=Go to First Page
last_page.label=Go to Last Page
page_rotate_cw.label=Rotate Clockwise
page_rotate_ccw.label=Rotate Counterclockwise
# Find panel button title and messages
-find_label=Find:
-find_previous.title=Find the previous occurrence of the phrase
+find_label="Gushaka:"
+find_previous.title=Gushaka aho uyu murongo ugaruka mbere y'aha
find_previous_label=Previous
-find_next.title=Find the next occurrence of the phrase
+find_next.title=Gushaka aho uyu murongo wongera kugaruka
find_next_label=Next
find_highlight=Highlight all
find_match_case_label=Match case
find_reached_top=Reached top of document, continued from bottom
find_reached_bottom=Reached end of document, continued from top
-find_not_found=Phrase not found
+find_not_found=Umurongo ntubonetse
# Error panel labels
error_more_info=More Information
error_less_info=Less Information
-error_close=Close
+error_close=Gufunga
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Message: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=File: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Line: {{line}}
rendering_error=An error occurred while rendering the page.
# Predefined zoom values
page_scale_width=Page Width
page_scale_fit=Page Fit
page_scale_auto=Automatic Zoom
page_scale_actual=Actual Size
# Loading indicator messages
-loading_error_indicator=Error
+loading_error_indicator=Ikosa
loading_error=An error occurred while loading the PDF.
invalid_file_error=Invalid or corrupted PDF file.
missing_file_error=Missing PDF file.
# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type=[{{type}} Annotation]
request_password=PDF is protected by a password:
printing_not_supported=Warning: Printing is not fully supported by this browser.
printing_not_ready=Warning: The PDF is not fully loaded for printing.
web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
web_colors_disabled=Web colors are disabled.
diff --git a/lib/viewers/pdf/locale/sah/viewer.properties b/lib/viewers/pdf/locale/sah/viewer.properties
new file mode 100644
index 0000000..49d1f49
--- /dev/null
+++ b/lib/viewers/pdf/locale/sah/viewer.properties
@@ -0,0 +1,122 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Инники сирэй
+previous_label=Иннинээҕи
+next.title=Аныгыскы сирэй
+next_label=Аныгыскы
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Сирэй:
+page_of=мантан {{pageCount}}
+
+zoom_out.title=Куччат
+zoom_out_label=Куччат
+zoom_in.title=Улаатыннар
+zoom_in_label=Улаатыннар
+zoom.title=Улаатыннар
+presentation_mode.title=Көрдөрөр эрэсиимҥэ
+presentation_mode_label=Көрдөрөр эрэсиим
+open_file.title=Билэни арый
+open_file_label=Ас
+print.title=Бэчээт
+print_label=Бэчээт
+download.title=Хачайдааһын
+download_label=Хачайдааһын
+bookmark.title=Билиҥҥи көстүүтэ (хатылаа эбэтэр саҥа түннүккэ арый)
+bookmark_label=Билиҥҥи көстүүтэ
+
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_title=Баһа:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Ойоҕос хапталы арый/сап
+toggle_sidebar_label=Ойоҕос хапталы арый/сап
+outline.title=Дөкүмүөн иһинээҕитин көрдөр
+outline_label=Дөкүмүөн иһинээҕитэ
+thumbs.title=Ойуучааннары көрдөр
+thumbs_label=Ойуучааннар
+findbar.title=Дөкүмүөнтэн бул
+findbar_label=Бул
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Сирэй {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Сирэй ойуучаана {{page}}
+
+# Find panel button title and messages
+find_label=Бул:
+find_previous.title=Этии тиэкискэ бу иннинээҕи киириитин бул
+find_previous_label=Иннинээҕи
+find_next.title=Этии тиэкискэ бу кэннинээҕи киириитин бул
+find_next_label=Аныгыскы
+find_highlight=Барытын сырдатан көрдөр
+find_match_case_label=Буукуба улаханын-кыратын араар
+find_reached_top=Сирэй үрдүгэр тиийдиҥ, салгыыта аллара
+find_reached_bottom=Сирэй бүттэ, үөһэ салҕанна
+find_not_found=Этии көстүбэтэ
+
+# Error panel labels
+error_more_info=Сиһилии
+error_less_info=Сиһилиитин кистээ
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (хомуйуута: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Этии: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Стeк: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Билэ: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Устуруока: {{line}}
+rendering_error=Сирэйи айарга алҕас таҕыста.
+
+# Predefined zoom values
+page_scale_width=Сирэй кэтитинэн
+page_scale_fit=Сирэй кээмэйинэн
+page_scale_auto=Аптамаатынан
+page_scale_actual=Дьиҥнээх кээмэйэ
+
+# Loading indicator messages
+loading_error_indicator=Алҕас
+loading_error=PDF-билэни хачайдыырга алҕас таҕыста.
+invalid_file_error=Туох эрэ алҕастаах эбэтэр алдьаммыт PDF-билэ.
+missing_file_error=PDF-билэ суох.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} туһунан]
+password_cancel=Салҕаама
+
+printing_not_supported=Сэрэтии: Бу браузер бэчээттиири толору өйөөбөт.
+printing_not_ready=Сэрэтии: PDF бэчээттииргэ толору хачайдана илик.
+web_fonts_disabled=Ситим-бичиктэр араарыллыахтара: PDF бичиктэрэ кыайан көстүбэттэр.
+document_colors_disabled=PDF-дөкүмүөүннэргэ бэйэлэрин өҥнөрүн туттар көҥүллэммэтэ: "Ситим-сирдэр бэйэлэрин өҥнөрүн тутталларын көҥүллүүргэ" диэн браузерга арахса сылдьар эбит.
diff --git a/lib/viewers/pdf/locale/si/viewer.properties b/lib/viewers/pdf/locale/si/viewer.properties
new file mode 100644
index 0000000..01145ce
--- /dev/null
+++ b/lib/viewers/pdf/locale/si/viewer.properties
@@ -0,0 +1,102 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=මීට පෙර පිටුව
+next.title=මීළඟ පිටුව
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=පිටුව:
+page_of={{pageCount}} කින්
+
+zoom_out.title=කුඩා කරන්න
+zoom_out_label=කුඩා කරන්න
+zoom_in.title=විශාල කරන්න
+zoom_in_label=විශාල කරන්න
+zoom.title=විශාලණය
+open_file.title=ගොනුව විවෘත කරන්න
+open_file_label=විවෘත කරන්න
+print.title=මුද්‍රණය
+print_label=මුද්‍රණය
+download.title=බාගන්න
+download_label=බාගන්න
+bookmark.title=දැනට ඇති දසුන (පිටපත් කරන්න හෝ නව කවුළුවක විවෘත කරන්න)
+bookmark_label=දැනට ඇති දසුන
+
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_title=සිරස්තලය:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+outline.title=ලේඛනයේ පිට මායිම පෙන්වන්න
+outline_label=ලේඛනයේ පිට මායිම
+thumbs.title=සිඟිති රූ පෙන්වන්න
+thumbs_label=සිඟිති රූ
+findbar_label=සොයන්න
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=පිටුව {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=පිටුවෙ සිඟිත රූව {{page}}
+
+# Find panel button title and messages
+find_previous.title=මේ වාක්‍ය ඛණ්ඩය මීට පෙර යෙදුණු ස්ථානය සොයන්න
+find_next.title=මේ වාක්‍ය ඛණ්ඩය මීළඟට යෙදෙන ස්ථානය සොයන්න
+find_not_found=ඔබ සෙව් වචන හමු නොවීය
+
+# Error panel labels
+error_more_info=බොහෝ තොරතුරු
+error_less_info=අවම තොරතුරු
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=පණිවිඩය: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ගොනුව: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=පේළිය: {{line}}
+rendering_error=පිටුව රෙන්ඩර් විමේදි ගැටලුවක් හට ගැනුණි.
+
+# Predefined zoom values
+page_scale_width=පිටුවේ පළල
+page_scale_fit=පිටුවට සුදුසු ලෙස
+page_scale_auto=ස්වයංක්‍රීය විශාලණය
+page_scale_actual=නියමිත ප්‍රමාණය
+
+# Loading indicator messages
+loading_error_indicator=දෝෂය
+loading_error=PDF පූරණය විමේදි දෝෂයක් හට ගැනුණි.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} විස්තරය]
+password_ok=හරි
+password_cancel=එපා
+
diff --git a/lib/viewers/pdf/locale/sk/viewer.properties b/lib/viewers/pdf/locale/sk/viewer.properties
new file mode 100644
index 0000000..78cb61b
--- /dev/null
+++ b/lib/viewers/pdf/locale/sk/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Predchádzajúca strana
+previous_label=Predchádzajúca
+next.title=Nasledujúca strana
+next_label=Nasledujúca
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Strana:
+page_of=z {{pageCount}}
+
+zoom_out.title=Vzdialiť
+zoom_out_label=Vzdialiť
+zoom_in.title=Priblížiť
+zoom_in_label=Priblížiť
+zoom.title=Lupa
+presentation_mode.title=Prepnúť na režim Prezentácia
+presentation_mode_label=Režim Prezentácia
+open_file.title=Otvoriť súbor
+open_file_label=Otvoriť
+print.title=Tlačiť
+print_label=Tlačiť
+download.title=Prevziať
+download_label=Prevziať
+bookmark.title=Aktuálne zobrazenie (kopírovať alebo otvoriť v novom okne)
+bookmark_label=Aktuálne zobrazenie
+
+# Secondary toolbar and context menu
+tools.title=Nástroje
+tools_label=Nástroje
+first_page.title=Prejsť na prvú stranu
+first_page.label=Prejsť na prvú stranu
+first_page_label=Prejsť na prvú stranu
+last_page.title=Prejsť na poslednú stranu
+last_page.label=Prejsť na poslednú stranu
+last_page_label=Prejsť na poslednú stranu
+page_rotate_cw.title=Otočiť v smere hodinových ručičiek
+page_rotate_cw.label=Otočiť v smere hodinových ručičiek
+page_rotate_cw_label=Otočiť v smere hodinových ručičiek
+page_rotate_ccw.title=Otočiť proti smeru hodinových ručičiek
+page_rotate_ccw.label=Otočiť proti smeru hodinových ručičiek
+page_rotate_ccw_label=Otočiť proti smeru hodinových ručičiek
+
+hand_tool_enable.title=Zapnúť nástroj Ruka
+hand_tool_enable_label=Zapnúť nástroj Ruka
+hand_tool_disable.title=Vypnúť nástroj Ruka
+hand_tool_disable_label=Vypnúť nástroj Ruka
+
+# Document properties dialog box
+document_properties.title=Vlastnosti dokumentu…
+document_properties_label=Vlastnosti dokumentu…
+document_properties_file_name=Názov súboru:
+document_properties_file_size=Veľkosť súboru:
+document_properties_kb={{size_kb}} kB ({{size_b}} bajtov)
+document_properties_mb={{size_mb}} MB ({{size_b}} bajtov)
+document_properties_title=Názov:
+document_properties_author=Autor:
+document_properties_subject=Predmet:
+document_properties_keywords=Kľúčové slová:
+document_properties_creation_date=Dátum vytvorenia:
+document_properties_modification_date=Dátum úpravy:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Vytvoril:
+document_properties_producer=Tvorca PDF:
+document_properties_version=Verzia PDF:
+document_properties_page_count=Počet strán:
+document_properties_close=Zavrieť
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Prepnúť bočný panel
+toggle_sidebar_label=Prepnúť bočný panel
+outline.title=Zobraziť prehľad dokumentu
+outline_label=Prehľad dokumentu
+attachments.title=Zobraziť prílohy
+attachments_label=Prílohy
+thumbs.title=Zobraziť miniatúry
+thumbs_label=Miniatúry
+findbar.title=Hľadať v dokumente
+findbar_label=Hľadať
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Strana {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatúra strany {{page}}
+
+# Find panel button title and messages
+find_label=Hľadať:
+find_previous.title=Vyhľadať predchádzajúci výskyt reťazca
+find_previous_label=Predchádzajúce
+find_next.title=Vyhľadať ďalší výskyt reťazca
+find_next_label=Ďalšie
+find_highlight=Zvýrazniť všetky
+find_match_case_label=Rozlišovať malé/veľké písmená
+find_reached_top=Bol dosiahnutý začiatok stránky, pokračuje sa od konca
+find_reached_bottom=Bol dosiahnutý koniec stránky, pokračuje sa od začiatku
+find_not_found=Výraz nebol nájdený
+
+# Error panel labels
+error_more_info=Viac informácií
+error_less_info=Menej informácií
+error_close=Zavrieť
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (zostavenie: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Správa: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Zásobník: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Súbor: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Riadok: {{line}}
+rendering_error=Pri vykresľovaní stránky sa vyskytla chyba.
+
+# Predefined zoom values
+page_scale_width=Na šírku strany
+page_scale_fit=Na veľkosť strany
+page_scale_auto=Automatická veľkosť
+page_scale_actual=Skutočná veľkosť
+
+# Loading indicator messages
+loading_error_indicator=Chyba
+loading_error=Počas načítavania dokumentu PDF sa vyskytla chyba.
+invalid_file_error=Neplatný alebo poškodený súbor PDF.
+missing_file_error=Chýbajúci súbor PDF.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anotácia typu {{type}}]
+password_label=Ak chcete otvoriť tento súbor PDF, zadajte jeho heslo.
+password_invalid=Heslo nie je platné. Skúste to znova.
+password_ok=OK
+password_cancel=Zrušiť
+
+printing_not_supported=Upozornenie: tlač nie je v tomto prehliadači plne podporovaná.
+printing_not_ready=Upozornenie: súbor PDF nie je plne načítaný pre tlač.
+web_fonts_disabled=Webové písma sú vypnuté: nie je možné použiť písma vložené do súboru PDF.
+document_colors_disabled=Dokumenty PDF nemajú povolené používať vlastné farby, pretože voľba \'Povoliť stránkam používať vlastné farby\' je v nastaveniach prehliadača vypnutá.
diff --git a/lib/viewers/pdf/locale/sl/viewer.properties b/lib/viewers/pdf/locale/sl/viewer.properties
new file mode 100644
index 0000000..5678b94
--- /dev/null
+++ b/lib/viewers/pdf/locale/sl/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Prejšnja stran
+previous_label=Nazaj
+next.title=Naslednja stran
+next_label=Naprej
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Stran:
+page_of=od {{pageCount}}
+
+zoom_out.title=Pomanjšaj
+zoom_out_label=Pomanjšaj
+zoom_in.title=Povečaj
+zoom_in_label=Povečaj
+zoom.title=Povečava
+presentation_mode.title=Preklopi v način predstavitve
+presentation_mode_label=Način predstavitve
+open_file.title=Odpri datoteko
+open_file_label=Odpri
+print.title=Natisni
+print_label=Natisni
+download.title=Prenesi
+download_label=Prenesi
+bookmark.title=Trenutni pogled (kopiraj ali odpri v novem oknu)
+bookmark_label=Trenutni pogled
+
+# Secondary toolbar and context menu
+tools.title=Orodja
+tools_label=Orodja
+first_page.title=Pojdi na prvo stran
+first_page.label=Pojdi na prvo stran
+first_page_label=Pojdi na prvo stran
+last_page.title=Pojdi na zadnjo stran
+last_page.label=Pojdi na zadnjo stran
+last_page_label=Pojdi na zadnjo stran
+page_rotate_cw.title=Zavrti v smeri urninega kazalca
+page_rotate_cw.label=Zavrti v smeri urninega kazalca
+page_rotate_cw_label=Zavrti v smeri urninega kazalca
+page_rotate_ccw.title=Zavrti v nasprotni smeri urninega kazalca
+page_rotate_ccw.label=Zavrti v nasprotni smeri urninega kazalca
+page_rotate_ccw_label=Zavrti v nasprotni smeri urninega kazalca
+
+hand_tool_enable.title=Omogoči roko
+hand_tool_enable_label=Omogoči roko
+hand_tool_disable.title=Onemogoči roko
+hand_tool_disable_label=Onemogoči roko
+
+# Document properties dialog box
+document_properties.title=Lastnosti dokumenta …
+document_properties_label=Lastnosti dokumenta …
+document_properties_file_name=Ime datoteke:
+document_properties_file_size=Velikost datoteke:
+document_properties_kb={{size_kb}} KB ({{size_b}} bajtov)
+document_properties_mb={{size_mb}} MB ({{size_b}} bajtov)
+document_properties_title=Ime:
+document_properties_author=Avtor:
+document_properties_subject=Tema:
+document_properties_keywords=Ključne besede:
+document_properties_creation_date=Datum nastanka:
+document_properties_modification_date=Datum spremembe:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Ustvaril:
+document_properties_producer=Izdelovalec PDF:
+document_properties_version=Različica PDF:
+document_properties_page_count=Å tevilo strani:
+document_properties_close=Zapri
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Preklopi stransko vrstico
+toggle_sidebar_label=Preklopi stransko vrstico
+outline.title=Prikaži oris dokumenta
+outline_label=Oris dokumenta
+thumbs.title=Prikaži sličice
+thumbs_label=Sličice
+findbar.title=Iskanje po dokumentu
+findbar_label=Iskanje
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Stran {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Sličica strani {{page}}
+
+# Find panel button title and messages
+find_label=Najdi:
+find_previous.title=Najdi prejšnjo ponovitev iskanega
+find_previous_label=Najdi nazaj
+find_next.title=Najdi naslednjo ponovitev iskanega
+find_next_label=Najdi naprej
+find_highlight=Označi vse
+find_match_case_label=Razlikuj velike/male črke
+find_reached_top=Dosežen začetek dokumenta iz smeri konca
+find_reached_bottom=Doseženo konec dokumenta iz smeri začetka
+find_not_found=Iskanega ni mogoče najti
+
+# Error panel labels
+error_more_info=Več informacij
+error_less_info=Manj informacij
+error_close=Zapri
+# LOCALIZATION NOTE (error_build): "{{build}}" will be replaced by the PDF.JS
+# build ID.
+error_version_info=PDF.js r{{version}} (graditev: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Sporočilo: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Sklad: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Datoteka: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Vrstica: {{line}}
+rendering_error=Med pripravljanjem strani je prišlo do napake!
+
+# Predefined zoom values
+page_scale_width=Å irina strani
+page_scale_fit=Prilagodi stran
+page_scale_auto=Samodejno
+page_scale_actual=Dejanska velikost
+
+# Loading indicator messages
+loading_error_indicator=Napaka
+loading_error=Med nalaganjem datoteke PDF je prišlo do napake.
+invalid_file_error=Neveljavna ali pokvarjena datoteka PDF.
+missing_file_error=Ni datoteke PDF.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Opomba vrste {{type}}]
+password_label=Vnesite geslo za odpiranje te datoteke PDF.
+password_invalid=Neveljavno geslo. Poskusite znova.
+password_ok=V redu
+password_cancel=Prekliči
+
+printing_not_supported=Opozorilo: ta brskalnik ne podpira vseh možnosti tiskanja.
+printing_not_ready=Opozorilo: PDF ni v celoti naložen za tiskanje.
+web_fonts_disabled=Spletne pisave so onemogočene: vgradnih pisav za PDF ni mogoče uporabiti.
+document_colors_disabled=Dokumenti PDF ne smejo uporabljati svojih lastnih barv: možnost \'Dovoli stranem uporabo lastnih barv\' je v brskalniku onemogočena.
diff --git a/lib/viewers/pdf/locale/son/viewer.properties b/lib/viewers/pdf/locale/son/viewer.properties
new file mode 100644
index 0000000..109e3d1
--- /dev/null
+++ b/lib/viewers/pdf/locale/son/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Moo bisante
+previous_label=Bisante
+next.title=Jinehere moo
+next_label=Jine
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=&Moo:
+page_of={{pageCount}} ga
+
+zoom_out.title=Nakasandi
+zoom_out_label=Nakasandi
+zoom_in.title=Bebbeerandi
+zoom_in_label=Bebbeerandi
+zoom.title=Bebbeerandi
+presentation_mode.title=Bere cebeyan alhaali
+presentation_mode_label=Cebeyan alhaali
+open_file.title=Tuku feeri
+open_file_label=Feeri
+print.title=Kar
+print_label=Kar
+download.title=Zumandi
+download_label=Zumandi
+bookmark.title=Sohõ gunarro (bere wala feeri zanfun taaga ra)
+bookmark_label=Sohõ gunaroo
+
+# Secondary toolbar and context menu
+tools.title=Goyjinawey
+tools_label=Goyjinawey
+first_page.title=Koy moo jinaa ga
+first_page.label=Koy moo jinaa ga
+first_page_label=Koy moo jinaa ga
+last_page.title=Koy moo koraa ga
+last_page.label=Koy moo koraa ga
+last_page_label=Koy moo koraa ga
+page_rotate_cw.title=Kuubi kanbe guma here
+page_rotate_cw.label=Kuubi kanbe guma here
+page_rotate_cw_label=Kuubi kanbe guma here
+page_rotate_ccw.title=Kuubi kanbe wowa here
+page_rotate_ccw.label=Kuubi kanbe wowa here
+page_rotate_ccw_label=Kuubi kanbe wowa here
+
+hand_tool_enable.title=Kanbe goyjinay tunandi
+hand_tool_enable_label=Kanbe goyjinay tunandi
+hand_tool_disable.title=Kanbe joyjinay kaa
+hand_tool_disable_label=Kanbe goyjinay kaa
+
+# Document properties dialog box
+document_properties.title=Takadda mayrawey…
+document_properties_label=Takadda mayrawey…
+document_properties_file_name=Tuku maa:
+document_properties_file_size=Tuku adadu:
+document_properties_kb=KB {{size_kb}} (cebsu-ize {{size_b}})
+document_properties_mb=MB {{size_kb}} (cebsu-ize {{size_b}})
+document_properties_title=Tiiramaa:
+document_properties_author=Hantumkaw:
+document_properties_subject=Dalil:
+document_properties_keywords=Kufalkalimawey:
+document_properties_creation_date=Teeyan han:
+document_properties_modification_date=Barmayan han:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Teekaw:
+document_properties_producer=PDF berandikaw:
+document_properties_version=PDF dumi:
+document_properties_page_count=Moo hinna:
+document_properties_close=Daabu
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Kanjari ceraw zuu
+toggle_sidebar_label=Kanjari ceraw zuu
+outline.title=Takadda filla-boŋ cebe
+outline_label=Takadda filla-boŋ
+thumbs.title=Kabeboy biyey cebe
+thumbs_label=Kabeboy biyey
+findbar.title=Ceeci takaddaa ra
+findbar_label=Ceeci
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title={{page}} moo
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Kabeboy bii {{page}} moo Å¡e
+
+# Find panel button title and messages
+find_label=Ceeci:
+find_previous.title=Kalimaɲaŋoo bangayri bisantaa ceeci
+find_previous_label=Bisante
+find_next.title=Kalimaɲaŋoo hiino bangayroo ceeci
+find_next_label=Jine
+find_highlight=Ikul Å¡ilbay
+find_match_case_label=Harfu-beeriyan hawgay
+find_reached_top=A too moŋoo boŋoo, koy jine ka šinitin nda cewoo
+find_reached_bottom=A too moɲoo cewoo, koy jine šintioo ga
+find_not_found=Kalimaɲaa mana duwandi
+
+# Error panel labels
+error_more_info=Alhabar tontoni
+error_less_info=Alhabar tontoni
+error_close=Daabu
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Alhabar: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Dekeri: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Tuku: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Žeeri: {{line}}
+rendering_error=Firka bangay kaŋ moɲoo goo ma willandi.
+
+# Predefined zoom values
+page_scale_width=Mooo hayyan
+page_scale_fit=Moo sawayan
+page_scale_auto=Boŋše azzaati barmayyan
+page_scale_actual=Adadu cimi
+
+# Loading indicator messages
+loading_error_indicator=Firka
+loading_error=Firka bangay kaŋ PDF goo ma zumandi.
+invalid_file_error=PDF tuku laala wala laybante.
+missing_file_error=PDF tuku kumante.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt={{type}} maasa-caw]
+password_label=Å ennikufal dam ka PDF tukoo woo feeri.
+password_invalid=Å ennikufal laalo. Ceeci koyne taare.
+password_ok=Ayyo
+password_cancel=Naŋ
+
+printing_not_supported=Yaamar: Karyan Å¡i tee ka timme nda ceecikaa woo.
+printing_not_ready=Yaamar: PDF Å¡i zunbu ka timme karyan Å¡e.
+web_fonts_disabled=Interneti Å¡igirawey kay: Å¡i hin ka goy nda PDF Å¡igira hurantey.
+document_colors_disabled=PDF takaddawey ši duu fondo ka ngey boŋ noonawey zaa: 'Naŋ moɲey ma ngey boŋ noonawey suuba' ši dira ceecikaa ga.
diff --git a/lib/viewers/pdf/locale/sq/viewer.properties b/lib/viewers/pdf/locale/sq/viewer.properties
new file mode 100644
index 0000000..4647ca6
--- /dev/null
+++ b/lib/viewers/pdf/locale/sq/viewer.properties
@@ -0,0 +1,160 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Faqja e Mëparshme
+previous_label=E mëparshmja
+next.title=Faqja Pasuese
+next_label=Pasuesja
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Faqja:
+page_of=nga {{pageCount}}
+
+zoom_out.title=Zoom Out
+zoom_out_label=Zoom Out
+zoom_in.title=Zoom In
+zoom_in_label=Zoom In
+zoom.title=Zoom
+print.title=Shtype
+print_label=Shtypeni
+presentation_mode.title=Kalo te Mënyra Paraqitje
+presentation_mode_label=Mënyra Paraqitje
+open_file.title=Hapni Kartelë
+open_file_label=Hapeni
+download.title=Shkarkim
+download_label=Shkarkojeni
+bookmark.title=Pamja e tanishme (kopjojeni ose hapeni në dritare të re)
+bookmark_label=Pamja e Tanishme
+
+# Secondary toolbar and context menu
+tools.title=Mjete
+tools_label=Mjete
+first_page.title=Shkoni te Faqja e Parë
+first_page.label=Shkoni te Faqja e Parë
+first_page_label=Shkoni te Faqja e Parë
+last_page.title=Shkoni te Faqja e Fundit
+last_page.label=Shkoni te Faqja e Fundit
+last_page_label=Shkoni te Faqja e Fundit
+page_rotate_cw.title=Rrotullojeni Në Kahun Orar
+page_rotate_cw.label=Rrotullojeni Në Kahun Orar
+page_rotate_cw_label=Rrotullojeni Në Kahun Orar
+page_rotate_ccw.title=Rrotullojeni Në Kahun Kundërorar
+page_rotate_ccw.label=Rrotullojeni Në Kahun Kundërorar
+page_rotate_ccw_label=Rrotullojeni Në Kahun Kundërorar
+
+hand_tool_enable.title=Aktivizoni mjet dore
+hand_tool_enable_label=Aktivizoni mjet dore
+hand_tool_disable.title=Çaktivizoni mjet dore
+hand_tool_disable_label=Çaktivizoni mjet dore
+
+# Document properties dialog box
+document_properties.title=Veti Dokumenti…
+document_properties_label=Veti Dokumenti…
+document_properties_file_name=Emër kartele:
+document_properties_file_size=Madhësi kartele:
+document_properties_kb={{size_kb}} KB ({{size_b}} bajte)
+document_properties_mb={{size_mb}} MB ({{size_b}} bajte)
+document_properties_title=Titull:
+document_properties_author=Autor:
+document_properties_subject=Subjekt:
+document_properties_keywords=Fjalëkyçe:
+document_properties_creation_date=Datë Krijimi:
+document_properties_modification_date=Datë Ndryshimi:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Krijues:
+document_properties_producer=Prodhues PDF-je:
+document_properties_version=Version PDF-je:
+document_properties_page_count=Numër Faqesh:
+document_properties_close=Mbylle
+
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Shfaqni/Fshihni Anështyllën
+toggle_sidebar_label=Shfaqni/Fshihni Anështyllën
+
+outline.title=Shfaq Përvijim Dokumenti
+outline_label=Shfaq Përvijim Dokumenti
+thumbs.title=Shfaq Miniatura
+thumbs_label=Miniatura
+findbar.title=Gjej në Dokument
+findbar_label=Gjej
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Faqja {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniaturë e Faqes {{page}}
+
+# Context menu
+first_page.label=Kalo te Faqja e Parë
+last_page.label=Kalo te Faqja e Fundit
+page_rotate_cw.label=Rrotulloje Në Kahun Orar
+page_rotate_ccw.label=Rrotulloje Në Kahun Antiorar
+
+# Find panel button title and messages
+find_label=Gjej:
+find_previous.title=Gjeni hasjen e mëparshme të togfjalëshit
+find_previous_label=E mëparshmja
+find_next.title=Gjeni hasjen pasuese të togfjalëshit
+find_next_label=Pasuesja
+find_highlight=Theksoji të gjitha
+find_match_case_label=Siç është shkruar
+find_reached_top=U mbërrit në krye të dokumentit, vazhduar prej fundit
+find_reached_bottom=U mbërrit në fund të dokumentit, vazhduar prej kreut
+find_not_found=Nuk u gjet togfjalëshi
+
+# Error panel labels
+error_more_info=Më Tepër të Dhëna
+error_less_info=Më Pak të Dhëna
+error_close=Mbylle
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mesazh: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Kartelë: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Rresht: {{line}}
+rendering_error=Ndodhi një gabim gjatë riprodhimit të faqes.
+
+# Predefined zoom values
+page_scale_width=Gjerësi Faqeje
+page_scale_fit=Sa Nxë Faqja
+page_scale_auto=Zoom i Vetvetishëm
+page_scale_actual=Madhësia Faktike
+
+# Loading indicator messages
+# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
+loading_error_indicator=Gabim
+loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së.
+invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar.
+missing_file_error=Kartelë PDF që mungon.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Nënvizim {{type}}]
+password_label=Jepni fjalëkalimin që të hapet kjo kartelë PDF.
+password_invalid=Fjalëkalim i pavlefshëm. Ju lutemi, riprovoni.
+password_ok=OK
+password_cancel=Anuloje
+
+printing_not_supported=Kujdes: Shtypja nuk mbulohet plotësisht nga ky shfletues.
+printing_not_ready=Kujdes: PDF-ja nuk është ngarkuar plotësisht që ta shtypni.
+web_fonts_disabled=Shkronjat Web janë të çaktivizuara: i pazoti të përdorë shkronja të trupëzuara në PDF.
+document_colors_disabled=Dokumenteve PDF nuk u është lejuar të përdorin ngjyrat e veta: \'Lejoji faqet t&apos;i zgjedhin vetë ngjyrat\', te shfletuesi, është e çaktivizuar.
diff --git a/lib/viewers/pdf/locale/sr/metadata.inc b/lib/viewers/pdf/locale/sr/metadata.inc
deleted file mode 100644
index c8ab2d8..0000000
--- a/lib/viewers/pdf/locale/sr/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>sr</em:locale>
- <em:name>ПДФ читач</em:name>
- <em:description>Користи ХТМЛ5 да би приказао ПДФ датотеке директно у Фајерфоксу.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/sr/viewer.properties b/lib/viewers/pdf/locale/sr/viewer.properties
index 7ec9bfd..e525e89 100644
--- a/lib/viewers/pdf/locale/sr/viewer.properties
+++ b/lib/viewers/pdf/locale/sr/viewer.properties
@@ -1,55 +1,163 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-bookmark.title=Тренутни приказ (Умножити или отворити у новом прозору)
-previous.title=Предходна страна
-next.title=Следећа страна
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Претходна страница
+previous_label=Претходна
+next.title=Следећа страница
+next_label=Следећа
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Страница:
+page_of=од {{pageCount}}
+
+zoom_out.title=Умањи
+zoom_out_label=Умањи
+zoom_in.title=Увеличај
+zoom_in_label=Увеличај
+zoom.title=Зумирање
+presentation_mode.title=Промени на приказ у режиму презентације
+presentation_mode_label=Режим презентације
+open_file.title=Отвори датотеку
+open_file_label=Отвори
print.title=Штампај
+print_label=Штампај
download.title=Преузми
-zoom_out.title=Умањи
-zoom_in.title=Увећај
+download_label=Преузми
+bookmark.title=Тренутни приказ(копирај или отвори нови прозор)
+bookmark_label=Тренутни приказ
+
+# Secondary toolbar and context menu
+tools.title=Алатке
+tools_label=Алатке
+first_page.title=Иди на прву страницу
+first_page.label=Иди на прву страницу
+first_page_label=Иди на прву страницу
+last_page.title=Иди на последњу страницу
+last_page.label=Иди на последњу страницу
+last_page_label=Иди на последњу страницу
+page_rotate_cw.title=Ротирај у смеру казаљке на сату
+page_rotate_cw.label=Ротирај у смеру казаљке на сату
+page_rotate_cw_label=Ротирај у смеру казаљке на сату
+page_rotate_ccw.title=Ротирај у смеру супротном од казаљке на сату
+page_rotate_ccw.label=Ротирај у смеру супротном од казаљке на сату
+page_rotate_ccw_label=Ротирај у смеру супротном од казаљке на сату
+
+hand_tool_enable.title=Омогући алатку за померање
+hand_tool_enable_label=Омогући алатку за померање
+hand_tool_disable.title=Онемогући алатку за померање
+hand_tool_disable_label=Онемогући алатку за померање
+
+# Document properties dialog box
+document_properties.title=Параметри документа…
+document_properties_label=Параметри документа…
+document_properties_file_name=Име датотеке:
+document_properties_file_size=Величина датотеке:
+document_properties_kb={{size_kb}} KB ({{size_b}} B)
+document_properties_mb={{size_mb}} MB ({{size_b}} B)
+document_properties_title=Наслов:
+document_properties_author=Аутор:
+document_properties_subject=Тема:
+document_properties_keywords=Кључне речи:
+document_properties_creation_date=Датум креирања:
+document_properties_modification_date=Датум модификације:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Стваралац:
+document_properties_producer=PDF произвођач:
+document_properties_version=PDF верзија:
+document_properties_page_count=Број страница:
+document_properties_close=Затвори
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Прикажи додатну палету
+toggle_sidebar_label=Прикажи додатну палету
+outline.title=Прикажи контуру документа
+outline_label=Контура документа
+attachments.title=Прикажи прилоге
+attachments_label=Прилози
+thumbs.title=Прикажи сличице
+thumbs_label=Сличице
+findbar.title=Пронађи у документу
+findbar_label=Пронађи
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Страница {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Сличица од странице {{page}}
+
+# Find panel button title and messages
+find_label=Пронађи:
+find_previous.title=Пронађи претходну појаву фразе
+find_previous_label=Претходна
+find_next.title=Пронађи следећу појаву фразе
+find_next_label=Следећа
+find_highlight=Истакнути све
+find_match_case_label=Подударања
+find_reached_top=Достигнут врх документа, наставио са дна
+find_reached_bottom=Достигнуто дно документа, наставио са врха
+find_not_found=Фраза није пронађена
+
+# Error panel labels
error_more_info=Више информација
error_less_info=Мање информација
error_close=Затвори
-error_build=PDF.JS Build: {{build}}
-error_message=Message: {{message}}
-error_stack=Stack: {{stack}}
-error_file=File: {{file}}
-error_line=Line: {{line}}
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Порука: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Стек: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Датотека: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Линија: {{line}}
+rendering_error=Дошло је до грешке приликом рендеровања ове странице.
+
+# Predefined zoom values
page_scale_width=Ширина странице
-page_scale_fit=Уклопи
-page_scale_auto=Увећај аутоматски
+page_scale_fit=Уклапање странице
+page_scale_auto=Аутоматско увеличавање
page_scale_actual=Стварна величина
-toggle_slider.title=Клизач
-thumbs.title=Прикажи у сличицама
-outline.title=Прикажи у линијама
-loading=Учитавање... {{percent}}%
+
+# Loading indicator messages
loading_error_indicator=Грешка
-loading_error=Дошло је до грешке током учитавања ПДФ-а.
-rendering_error=Дошло је до грешке приликом приказивања стране.
-page_label=Страна:
-page_of=од {{pageCount}}
-open_file.title=Отвори датотеку
-text_annotation_type=[{{type}} Annotation]
-toggle_slider_label=Клизач
-thumbs_label=Сличице
-outline_label=Документи у линијама
-bookmark_label=Тренутни приказ
-previous_label=Предходна
-next_label=Следећа
-print_label=Штампај
-download_label=Преузми
-zoom_out_label=Умањи
-zoom_in_label=Увећај
-zoom.title=Скала
+loading_error=Дошло је до грешке приликом учитавање PDF.
+invalid_file_error=PDF датотека је оштећена или је неисправна.
+missing_file_error=PDF датотека није пронађена.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} коментар]
+password_label=_Унесите лозинку да бисте отворили овај PDF докуменат.
+password_invalid=Неисправна лозинка. Покушајте поново.
+password_ok=У реду
+password_cancel=Откажи
+
+printing_not_supported=Упозорење: Штампање није у потпуности подржано у овом прегледачу.
+printing_not_ready=Упозорење: PDF није у потпуности учитан за штампу.
+web_fonts_disabled=Веб фонтови су онемогућени: не могу користити уграђене PDF фонтове.
+document_colors_disabled=PDF документи не могу да користе сопствене боје: \'Дозволи страницама да одаберу своје боје\' је деактивирано у прегледачу.
diff --git a/lib/viewers/pdf/locale/sv/viewer.properties b/lib/viewers/pdf/locale/sv-SE/viewer.properties
similarity index 53%
rename from lib/viewers/pdf/locale/sv/viewer.properties
rename to lib/viewers/pdf/locale/sv-SE/viewer.properties
index c019111..b4f3629 100644
--- a/lib/viewers/pdf/locale/sv/viewer.properties
+++ b/lib/viewers/pdf/locale/sv-SE/viewer.properties
@@ -1,123 +1,163 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Föregående sida
previous_label=Föregående
next.title=Nästa sida
next_label=Nästa
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Sida:
page_of=av {{pageCount}}
zoom_out.title=Zooma ut
zoom_out_label=Zooma ut
zoom_in.title=Zooma in
zoom_in_label=Zooma in
-zoom.title=Zooma
-print.title=Skriv ut
-print_label=Skriv ut
-presentation_mode.title=Presentationsläge
+zoom.title=Zoom
+presentation_mode.title=Byt till presentationsläge
presentation_mode_label=Presentationsläge
open_file.title=Öppna fil
open_file_label=Öppna
-download.title=Ladda ner
-download_label=Ladda ner
+print.title=Skriv ut
+print_label=Skriv ut
+download.title=Hämta
+download_label=Hämta
bookmark.title=Aktuell vy (kopiera eller öppna i nytt fönster)
bookmark_label=Aktuell vy
+# Secondary toolbar and context menu
+tools.title=Verktyg
+tools_label=Verktyg
+first_page.title=Gå till första sidan
+first_page.label=Gå till första sidan
+first_page_label=Gå till första sidan
+last_page.title=GÃ¥ till sista sidan
+last_page.label=GÃ¥ till sista sidan
+last_page_label=GÃ¥ till sista sidan
+page_rotate_cw.title=Rotera medurs
+page_rotate_cw.label=Rotera medurs
+page_rotate_cw_label=Rotera medurs
+page_rotate_ccw.title=Rotera moturs
+page_rotate_ccw.label=Rotera moturs
+page_rotate_ccw_label=Rotera moturs
+
+hand_tool_enable.title=Aktivera handverktyg
+hand_tool_enable_label=Aktivera handverktyg
+hand_tool_disable.title=Inaktivera handverktyg
+hand_tool_disable_label=Inaktivera handverktyg
+
+# Document properties dialog box
+document_properties.title=Dokumentegenskaper…
+document_properties_label=Dokumentegenskaper…
+document_properties_file_name=Filnamn:
+document_properties_file_size=Filstorlek:
+document_properties_kb={{size_kb}} kB ({{size_b}} byte)
+document_properties_mb={{size_mb}} MB ({{size_b}} byte)
+document_properties_title=Titel:
+document_properties_author=Författare:
+document_properties_subject=Ämne:
+document_properties_keywords=Nyckelord:
+document_properties_creation_date=Skapades:
+document_properties_modification_date=Ändrades:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Skapare:
+document_properties_producer=PDF-producent:
+document_properties_version=PDF-version:
+document_properties_page_count=Sidantal:
+document_properties_close=Stäng
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Visa/Dölj sidopanel
-toggle_sidebar_label=Visa/Dölj sidopanel
-outline.title=Visa bokmärken
-outline_label=Bokmärken
-thumbs.title=Visa sidminiatyrer
-thumbs_label=Sidminiatyrer
-findbar.title=Sök i dokumentet
+toggle_sidebar.title=Visa/dölj sidofält
+toggle_sidebar_label=Visa/dölj sidofält
+outline.title=Visa dokumentöversikt
+outline_label=Dokumentöversikt
+attachments.title=Visa bifogade filer
+attachments_label=Bifogade filer
+thumbs.title=Visa miniatyrer
+thumbs_label=Miniatyrer
+findbar.title=Sök i dokument
findbar_label=Sök
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Sida {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Miniatyr av sida {{page}}
-# Context menu
-first_page.label=Gå till första sidan
-last_page.label=GÃ¥ till sista sidan
-page_rotate_cw.label=Rotera medurs
-page_rotate_ccw.label=Rotera moturs
-
# Find panel button title and messages
find_label=Sök:
find_previous.title=Hitta föregående förekomst av frasen
find_previous_label=Föregående
find_next.title=Hitta nästa förekomst av frasen
find_next_label=Nästa
find_highlight=Markera alla
-find_match_case_label=Matcha VERSALER/gemener
-find_reached_top=Kommit till början av dokumentet, börjat om
-find_reached_bottom=Kommit till slutet av dokumentet, börjat om
+find_match_case_label=Matcha versal/gemen
+find_reached_top=Nådde början av dokumentet, började från slutet
+find_reached_bottom=Nådde slutet på dokumentet, började från början
find_not_found=Frasen hittades inte
# Error panel labels
error_more_info=Mer information
error_less_info=Mindre information
error_close=Stäng
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (bygge: {{build}})
+error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Meddelande: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Fil: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Rad: {{line}}
-rendering_error=Ett fel inträffade när sidan renderades.
+rendering_error=Ett fel uppstod vid visning av sidan.
# Predefined zoom values
page_scale_width=Sidbredd
-page_scale_fit=Helsida
+page_scale_fit=Anpassa sida
page_scale_auto=Automatisk zoom
-page_scale_actual=Faktisk storlek
+page_scale_actual=Verklig storlek
# Loading indicator messages
loading_error_indicator=Fel
-loading_error=Ett fel inträffade när PDF-filen laddades.
+loading_error=Ett fel uppstod vid laddning av PDF-filen.
invalid_file_error=Ogiltig eller korrupt PDF-fil.
-missing_file_error=PDF-filen saknas.
+missing_file_error=Saknad PDF-fil.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}}-anteckning]
-request_password=PDF-filen är lösenordsskyddad:
+text_annotation_type.alt=[{{type}}-annotering]
+password_label=Skriv in lösenordet för att öppna PDF-filen.
+password_invalid=Ogiltigt lösenord. Försök igen.
+password_ok=OK
+password_cancel=Avbryt
-printing_not_supported=Varning: Utskrifter stöds inte fullt ut av denna webbläsare.
-printing_not_ready=Varning: Hela PDF-filen måste laddas innan utskrift kan ske.
-web_fonts_disabled=Webbtypsnitt är inaktiverade: Typsnitt inbäddade i PDF-filer kan ej användas.
-web_colors_disabled=Webbfärger är inaktiverade.
+printing_not_supported=Varning: Utskrifter stöds inte helt av den här webbläsaren.
+printing_not_ready=Varning: PDF:en är inte klar för utskrift.
+web_fonts_disabled=Webbtypsnitt är inaktiverade: kan inte använda inbäddade PDF-typsnitt.
+document_colors_disabled=PDF-dokument tillåts inte använda egna färger: \'Låt sidor använda egna färger\' är inaktiverat i webbläsaren.
diff --git a/lib/viewers/pdf/locale/sv/chrome.properties b/lib/viewers/pdf/locale/sv/chrome.properties
deleted file mode 100644
index fe6415d..0000000
--- a/lib/viewers/pdf/locale/sv/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=Detta PDF-dokument kanske inte visas korrekt.
-open_with_different_viewer=Öppna med ett annat program
-open_with_different_viewer.accessKey=ö
diff --git a/lib/viewers/pdf/locale/sv/metadata.inc b/lib/viewers/pdf/locale/sv/metadata.inc
deleted file mode 100644
index ec82bc1..0000000
--- a/lib/viewers/pdf/locale/sv/metadata.inc
+++ /dev/null
@@ -1,7 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>sv</em:locale>
- <em:name>PDF-läsare</em:name>
- <em:description>Använder HTML5 för att visa PDF-filer direkt i Firefox.</em:description>
- </Description>
- </em:localized>
diff --git a/lib/viewers/pdf/locale/sw/viewer.properties b/lib/viewers/pdf/locale/sw/viewer.properties
new file mode 100644
index 0000000..8f9f7dd
--- /dev/null
+++ b/lib/viewers/pdf/locale/sw/viewer.properties
@@ -0,0 +1,121 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Ukurasa Uliotangulia
+previous_label=Iliyotangulia
+next.title=Ukurasa Ufuatao
+next_label=Ifuatayo
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Ukurasa:
+page_of=ya {{Hesabu ya ukurasa}}
+
+zoom_out.title=Kuza Nje
+zoom_out_label=Kuza Nje
+zoom_in.title=Kuza Ndani
+zoom_in_label=Kuza Ndani
+zoom.title=Kuza
+presentation_mode.title=Badili kwa Hali ya Uwasilishaji
+presentation_mode_label=Hali ya Uwasilishaji
+open_file.title=Fungua Faili
+open_file_label=Fungua
+print.title=Chapisha
+print_label=Chapisha
+download.title=Pakua
+download_label=Pakua
+bookmark.title=Mwonekano wa sasa (nakili au ufungue katika dirisha mpya)
+bookmark_label=Mwonekano wa Sasa
+
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_title=Kichwa:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Kibiano cha Upau wa Kando
+toggle_sidebar_label=Kibiano cha Upau wa Kando
+outline.title=Onyesha Ufupisho wa Waraka
+outline_label=Ufupisho wa Waraka
+thumbs.title=Onyesha Kijipicha
+thumbs_label=Vijipicha
+findbar.title=Pata katika Waraka
+findbar_label=Tafuta
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Ukurasa {{ukurasa}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Kijipicha cha ukurasa {{ukurasa}}
+
+# Find panel button title and messages
+find_label=Tafuta:
+find_previous.title=Tafuta tukio kabla ya msemo huu
+find_previous_label=Iliyotangulia
+find_next.title=Tafuta tukio linalofuata la msemo
+find_next_label=Ifuatayo
+find_highlight=Angazia yote
+find_match_case_label=Linganisha herufi
+find_reached_top=Imefika juu ya waraka, imeendelea kutoka chini
+find_reached_bottom=Imefika mwisho wa waraka, imeendelea kutoka juu
+find_not_found=Msemo hukupatikana
+
+# Error panel labels
+error_more_info=Maelezo Zaidi
+error_less_info=Maelezo Kidogo
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (jenga: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Ujumbe: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Panganya: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Faili: {{faili}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Laini: {{laini}}
+rendering_error=Hitilafu lilitokea wajati wa kutoa ukurasa
+
+# Predefined zoom values
+page_scale_width=Upana wa Ukurasa
+page_scale_fit=Usawa wa Ukurasa
+page_scale_auto=Ukuzaji wa Kiotomatiki
+page_scale_actual=Ukubwa Halisi
+
+# Loading indicator messages
+loading_error_indicator=Hitilafu
+loading_error=Hitilafu lilitokea wakati wa kupakia PDF.
+invalid_file_error=Faili ya PDF isiyohalali au potofu.
+missing_file_error=Faili ya PDF isiyopo.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Ufafanuzi]
+password_ok=SAWA
+password_cancel=Ghairi
+
+printing_not_supported=Onyo: Uchapishaji hauauniwi kabisa kwa kivinjari hiki.
+web_fonts_disabled=Fonti za tovuti zimelemazwa: haziwezi kutumia fonti za PDF zilizopachikwa.
diff --git a/lib/viewers/pdf/locale/ta-LK/viewer.properties b/lib/viewers/pdf/locale/ta-LK/viewer.properties
new file mode 100644
index 0000000..7abed1b
--- /dev/null
+++ b/lib/viewers/pdf/locale/ta-LK/viewer.properties
@@ -0,0 +1,50 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# Main toolbar buttons (tooltips and alt text for images)
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+
+zoom.title=அளவு
+open_file.title=கோப்பினைத் திறக்க
+open_file_label=திறக்க
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+
+# Context menu
+
+# Find panel button title and messages
+find_previous.title=இந்த சொற்றொடரின் முன்னைய நிகழ்வை தேடு
+find_next.title=இந்த சொற்றொடரின் அடுத்த நிகழ்வைத் தேடு
+
+# Error panel labels
+error_close=மூடுக
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+
+# Predefined zoom values
+
+# Loading indicator messages
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+
diff --git a/lib/viewers/pdf/locale/ta/viewer.properties b/lib/viewers/pdf/locale/ta/viewer.properties
new file mode 100644
index 0000000..8643a68
--- /dev/null
+++ b/lib/viewers/pdf/locale/ta/viewer.properties
@@ -0,0 +1,163 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=முந்தைய பக்கம்
+previous_label=முந்தையது
+next.title=அடுத்த பக்கம்
+next_label=அடுத்து
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=பக்கம்:
+page_of=இல் {{pageCount}}
+
+zoom_out.title=சிறிதாக்கு
+zoom_out_label=சிறிதாக்கு
+zoom_in.title=பெரிதாக்கு
+zoom_in_label=பெரிதாக்கு
+zoom.title=பெரிதாக்கு
+presentation_mode.title=விளக்ககாட்சி பயன்முறைக்கு மாறு
+presentation_mode_label=விளக்ககாட்சி பயன்முறை
+open_file.title=கோப்பினை திற
+open_file_label=திற
+print.title=அச்சிடு
+print_label=அச்சிடு
+download.title=பதிவிறக்கு
+download_label=பதிவிறக்கு
+bookmark.title=தற்போதைய காட்சி (புதிய சாளரத்திற்கு நகலெடு அல்லது புதிய சாளரத்தில் திற)
+bookmark_label=தற்போதைய காட்சி
+
+# Secondary toolbar and context menu
+tools.title=கருவிகள்
+tools_label=கருவிகள்
+first_page.title=முதல் பக்கத்திற்கு செல்லவும்
+first_page.label=முதல் பக்கத்திற்கு செல்லவும்
+first_page_label=முதல் பக்கத்திற்கு செல்லவும்
+last_page.title=கடைசி பக்கத்திற்கு செல்லவும்
+last_page.label=கடைசி பக்கத்திற்கு செல்லவும்
+last_page_label=கடைசி பக்கத்திற்கு செல்லவும்
+page_rotate_cw.title=வலஞ்சுழியாக சுழற்று
+page_rotate_cw.label=வலஞ்சுழியாக சுழற்று
+page_rotate_cw_label=வலஞ்சுழியாக சுழற்று
+page_rotate_ccw.title=இடஞ்சுழியாக சுழற்று
+page_rotate_ccw.label=இடஞ்சுழியாக சுழற்று
+page_rotate_ccw_label=இடஞ்சுழியாக சுழற்று
+
+hand_tool_enable.title=கை கருவியை செயலாக்கு
+hand_tool_enable_label=கை கருவியை செயலாக்கு
+hand_tool_disable.title=கை கருவியை முடக்கு
+hand_tool_disable_label=கை கருவியை முடக்கு
+
+# Document properties dialog box
+document_properties.title=ஆவண பண்புகள்...
+document_properties_label=ஆவண பண்புகள்...
+document_properties_file_name=கோப்பு பெயர்:
+document_properties_file_size=கோப்பின் அளவு:
+document_properties_kb={{size_kb}} கிபை ({{size_b}} பைட்டுகள்)
+document_properties_mb={{size_mb}} மெபை ({{size_b}} பைட்டுகள்)
+document_properties_title=தலைப்பு:
+document_properties_author=எழுதியவர்
+document_properties_subject=பொருள்:
+document_properties_keywords=முக்கிய வார்த்தைகள்:
+document_properties_creation_date=படைத்த தேதி :
+document_properties_modification_date=திருத்திய தேதி:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=உருவாக்குபவர்:
+document_properties_producer=பிடிஎஃப் தயாரிப்பாளர்:
+document_properties_version=PDF பதிப்பு:
+document_properties_page_count=பக்க எண்ணிக்கை:
+document_properties_close=மூடுக
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=பக்கப் பட்டியை நிலைமாற்று
+toggle_sidebar_label=பக்கப் பட்டியை நிலைமாற்று
+outline.title=ஆவண வெளிவரையைக் காண்பி
+outline_label=ஆவண வெளிவரை
+attachments.title=இணைப்புகளை காண்பி
+attachments_label=இணைப்புகள்
+thumbs.title=சிறுபடங்களைக் காண்பி
+thumbs_label=சிறுபடங்கள்
+findbar.title=ஆவணத்தில் கண்டறி
+findbar_label=கண்டுபிடி
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=பக்கம் {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=பக்கத்தின் சிறுபடம் {{page}}
+
+# Find panel button title and messages
+find_label=கண்டறி:
+find_previous.title=இந்த சொற்றொடரின் முந்தைய நிகழ்வை தேடு
+find_previous_label=முந்தையது
+find_next.title=இந்த சொற்றொடரின் அடுத்த நிகழ்வை தேடு
+find_next_label=அடுத்து
+find_highlight=அனைத்தையும் தனிப்படுத்து
+find_match_case_label=பேரெழுத்தாக்கத்தை உணர்
+find_reached_top=ஆவணத்தின் மேல் பகுதியை அடைந்தது, அடிப்பக்கத்திலிருந்து தொடர்ந்தது
+find_reached_bottom=ஆவணத்தின் முடிவை அடைந்தது, மேலிருந்து தொடர்ந்தது
+find_not_found=சொற்றொடர் காணவில்லை
+
+# Error panel labels
+error_more_info=கூடுதல் தகவல்
+error_less_info=குறைந்த தகவல்
+error_close=மூடுக
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=செய்தி: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=ஸ்டேக்: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=கோப்பு: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=வரி: {{line}}
+rendering_error=இந்தப் பக்கத்தை காட்சிப்படுத்தும் போது ஒரு பிழை ஏற்பட்டது.
+
+# Predefined zoom values
+page_scale_width=பக்க அகலம்
+page_scale_fit=பக்கப் பொருத்தம்
+page_scale_auto=தானியக்க பெரிதாக்கல்
+page_scale_actual=உண்மையான அளவு
+
+# Loading indicator messages
+loading_error_indicator=பிழை
+loading_error=PDF ஐ ஏற்றும் போது ஒரு பிழை ஏற்பட்டது.
+invalid_file_error=செல்லுபடியாகாத அல்லது சிதைந்த PDF கோப்பு.
+missing_file_error=PDF கோப்பு காணவில்லை.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} விளக்கம்]
+password_label=இந்த PDF கோப்பை திறக்க கடவுச்சொல்லை உள்ளிடவும்.
+password_invalid=செல்லுபடியாகாத கடவுச்சொல், தயை செய்து மீண்டும் முயற்சி செய்க.
+password_ok=சரி
+password_cancel=இரத்து
+
+printing_not_supported=எச்சரிக்கை: இந்த உலாவி அச்சிடுதலை முழுமையாக ஆதரிக்கவில்லை.
+printing_not_ready=எச்சரிக்கை: PDF அச்சிட முழுவதுமாக ஏற்றப்படவில்லை.
+web_fonts_disabled=வலை எழுத்துருக்கள் முடக்கப்பட்டுள்ளன: உட்பொதிக்கப்பட்ட PDF எழுத்துருக்களைப் பயன்படுத்த முடியவில்லை.
+document_colors_disabled=PDF ஆவணங்களுக்கு அவற்றின் சொந்த நிறங்களைப் பயன்படுத்த அனுமதியில்லை: உலாவியில் 'பக்கங்கள் தங்கள் சொந்த நிறங்களைத் தேர்வு செய்துகொள்ள அனுமதி' என்னும் விருப்பம் முடக்கப்பட்டுள்ளது.
diff --git a/lib/viewers/pdf/locale/te/viewer.properties b/lib/viewers/pdf/locale/te/viewer.properties
new file mode 100644
index 0000000..f6bcdfa
--- /dev/null
+++ b/lib/viewers/pdf/locale/te/viewer.properties
@@ -0,0 +1,145 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=క్రితం పేజీ
+previous_label=క్రితం
+next.title=తరువాత పేజీ
+next_label=తరువాత
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=పేజీ:
+page_of=మొత్తం {{pageCount}} లో
+
+zoom_out.title=జూమ్ తగ్గించు
+zoom_out_label=జూమ్ తగ్గించు
+zoom_in.title=జూమ్ చేయి
+zoom_in_label=జూమ్ చేయి
+zoom.title=జూమ్
+presentation_mode.title=ప్రదర్శనా రీతికి మారు
+presentation_mode_label=ప్రదర్శనా రీతి
+open_file.title=ఫైల్ తెరువు
+open_file_label=తెరువు
+print.title=ముద్రించు
+print_label=ముద్రించు
+download.title=డౌనులోడు
+download_label=డౌనులోడు
+bookmark.title=ప్రస్తుత దర్శనం (నకలుతీయి లేదా కొత్త విండోనందు తెరువుము)
+bookmark_label=ప్రస్తుత దర్శనం
+
+# Secondary toolbar and context menu
+tools.title=పనిముట్లు
+tools_label=పనిముట్లు
+first_page.title=మొదటి పేజీకి వెళ్ళు
+first_page.label=మొదటి పేజీకి వెళ్ళు
+first_page_label=మొదటి పేజీకి వెళ్ళు
+last_page.title=చివరి పేజీకి వెళ్ళు
+last_page.label=చివరి పేజీకి వెళ్ళు
+last_page_label=చివరి పేజీకి వెళ్ళు
+page_rotate_cw.title=సవ్యదిశలో తిప్పుము
+page_rotate_cw.label=సవ్యదిశలో తిప్పుము
+page_rotate_cw_label=సవ్యదిశలో తిప్పుము
+page_rotate_ccw.title=అపసవ్యదిశలో తిప్పుము
+page_rotate_ccw.label=అపసవ్యదిశలో తిప్పుము
+page_rotate_ccw_label=అపసవ్యదిశలో తిప్పుము
+
+
+# Document properties dialog box
+document_properties_title=శీర్షిక:
+document_properties_subject=విషయం:
+document_properties_keywords=కీపదాలు:
+document_properties_date_string={{date}}, {{time}}
+document_properties_page_count=పేజీల సంఖ్య:
+document_properties_close=మూసివేయి
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=పక్కపట్టీ మార్చు
+toggle_sidebar_label=పక్కపట్టీ మార్చు
+outline.title=పత్రము అవుట్‌లైన్ చూపు
+outline_label=పత్రము అవుట్‌లైన్
+thumbs.title=థంబ్‌నైల్స్ చూపు
+thumbs_label=థంబ్‌నైల్స్
+findbar.title=ఈ పత్రమునందు కనుగొనుము
+findbar_label=కనుగొను
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=పేజీ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=పేజీ {{page}} యొక్క థంబ్‌నైల్
+
+# Find panel button title and messages
+find_label=కనుగొను:
+find_previous.title=పదంయొక్క ముందలి సంభవాన్ని కనుగొను
+find_previous_label=మునుపటి
+find_next.title=పదం యొక్క తర్వాతి సంభవాన్ని కనుగొను
+find_next_label=తరువాత
+find_highlight=అన్నిటిని ఉద్దీపనం చేయుము
+find_match_case_label=అక్షరములతేడాతో పోల్చుము
+find_reached_top=పేజీ పైకి చేరుకున్నది, క్రింది నుండి కొనసాగించండి
+find_reached_bottom=పేజీ చివరకు చేరుకున్నది, పైనుండి కొనసాగించండి
+find_not_found=పదం కనబడలేదు
+
+# Error panel labels
+error_more_info=మరింత సమాచారం
+error_less_info=తక్కువ సమాచారం
+error_close=మూసివేయి
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=సందేశం: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=స్టాక్: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=ఫైలు: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=వరుస: {{line}}
+rendering_error=పేజీను రెండర్ చేయుటలో వొక దోషం యెదురైంది.
+
+# Predefined zoom values
+page_scale_width=పేజీ వెడల్పు
+page_scale_fit=పేజీ అమర్పు
+page_scale_auto=స్వయంచాలక జూమ్
+page_scale_actual=యథార్ధ పరిమాణం
+
+# Loading indicator messages
+loading_error_indicator=దోషం
+loading_error=PDF లోడవుచున్నప్పుడు వొక దోషం యెదురైంది.
+invalid_file_error=చెల్లని లేదా పాడైన PDF ఫైలు.
+missing_file_error=దొరకని PDF ఫైలు.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} టీకా]
+password_label=ఈ PDF ఫైల్ తెరుచుటకు సంకేతపదం ప్రవేశపెట్టుము
+password_invalid=సంకేతపదం చెల్లదు. దయచేసి మళ్ళీ ప్రయత్నించండి.
+password_ok=సరే
+password_cancel=రద్దుచేయి
+
+printing_not_supported=హెచ్చరిక: ఈ విహారిణి చేత ముద్రణ పూర్తిగా తోడ్పాటునీయబడుట లేదు
+printing_not_ready=హెచ్చరిక: ముద్రణ కొరకు ఈ PDF పూర్తిగా లోడవలేదు.
+web_fonts_disabled=వెబ్ ఫాంట్లు అచేతనపరచ బడెను: ఎంబెడెడ్ PDF ఫాంట్లు వుపయోగించలేక పోయింది.
+document_colors_disabled=PDF పత్రాలు వాటి స్వంత రంగులను వుపయోగించుకొనుటకు అనుమతించబడవు: విహరణి నందు 'పేజీలను వాటి స్వంత రంగులను యెంచుకొనుటకు అనుమతించు' అనునది అచేతనం చేయబడివుంది.
diff --git a/lib/viewers/pdf/locale/th/viewer.properties b/lib/viewers/pdf/locale/th/viewer.properties
new file mode 100644
index 0000000..5d4d915
--- /dev/null
+++ b/lib/viewers/pdf/locale/th/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=หน้าก่อนหน้า
+previous_label=ก่อนหน้า
+next.title=หน้าถัดไป
+next_label=ถัดไป
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=หน้า:
+page_of=จาก {{pageCount}}
+
+zoom_out.title=ย่อ
+zoom_out_label=ย่อ Out
+zoom_in.title=ขยาย
+zoom_in_label=ขยาย
+zoom.title=ย่อ-ขยาย
+presentation_mode.title=สลับเข้าสู่รูปแบบการนำเสนอ
+presentation_mode_label=รูปแบบการนำเสนอ
+open_file.title=เปิดแฟ้ม
+open_file_label=เปิด
+print.title=พิมพ์
+print_label=พิมพ์
+download.title=ดาวน์โหลด
+download_label=ดาวน์โหลด
+bookmark.title=มุมมองปัจจุบัน (คัดลอกหรือเปิดในหน้าต่างใหม่)
+bookmark_label=มุมมองปัจจุบัน
+
+# Secondary toolbar and context menu
+tools.title=เครื่องมือ
+tools_label=เครื่องมือ
+first_page.title=ไปยังหน้าแรก
+first_page.label=ไปยังหน้าแรก
+first_page_label=ไปยังหน้าแรก
+last_page.title=ไปยังหน้าสุดท้าย
+last_page.label=ไปยังหน้าสุดท้าย
+last_page_label=ไปยังหน้าสุดท้าย
+page_rotate_cw.title=หมุนตามเข็มนาฬิกา
+page_rotate_cw.label=หมุนตามเข็มนาฬิกา
+page_rotate_cw_label=หมุนตามเข็มนาฬิกา
+page_rotate_ccw.title=หมุนทวนเข็มนาฬิกา
+page_rotate_ccw.label=หมุนทวนเข็มนาฬิกา
+page_rotate_ccw_label=หมุนทวนเข็มนาฬิกา
+
+hand_tool_enable.title=เปิดใช้งานเครื่องมือรูปมือ
+hand_tool_enable_label=เปิดใช้งานเครื่องมือรูปมือ
+hand_tool_disable.title=ปิดใช้งานเครื่องมือรูปมือ
+hand_tool_disable_label=ปิดใช้งานเครื่องมือรูปมือ
+
+# Document properties dialog box
+document_properties.title=คุณสมบัติเอกสาร…
+document_properties_label=คุณสมบัติเอกสาร…
+document_properties_file_name=ชื่อแฟ้ม :
+document_properties_file_size=ขนาดแฟ้ม :
+document_properties_kb={{size_kb}} กิโลไบต์ ({{size_b}} ไบต์)
+document_properties_mb={{size_mb}} เมกะไบต์ ({{size_b}} ไบต์)
+document_properties_title=หัวเรื่อง :
+document_properties_author=ผู้แต่ง :
+document_properties_subject=หัวข้อ :
+document_properties_keywords=คำสำคัญ :
+document_properties_creation_date=วันที่สร้าง :
+document_properties_modification_date=วันที่แก้ไข :
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=สร้างโดย :
+document_properties_producer=ผู้ผลิต PDF :
+document_properties_version=รุ่น PDF :
+document_properties_page_count=จำนวนหน้า :
+document_properties_close=ปิด
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=สลับแถบข้าง
+toggle_sidebar_label=สลับแถบข้าง
+outline.title=แสดงโครงเอกสาร
+outline_label=โครงเอกสาร
+thumbs.title=แสดงภาพขนาดย่อ
+thumbs_label=ภาพขนาดย่อ
+findbar.title=ค้นหาในเอกสาร
+findbar_label=ค้นหา
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=หน้า {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=ภาพขนาดย่อของหน้า {{page}}
+
+# Find panel button title and messages
+find_label=ค้นหา:
+find_previous.title=หาตำแหน่งก่อนหน้าของคำค้น
+find_previous_label=ก่อนหน้า
+find_next.title=หาตำแหน่งถัดไปของคำค้น
+find_next_label=ถัดไป
+find_highlight=เน้นสีทั้งหมด
+find_match_case_label=ตัวพิมพ์ตรงกัน
+find_reached_top=ค้นหาถึงจุดเริ่มต้นของหน้า เริ่มค้นต่อจากด้านล่าง
+find_reached_bottom=ค้นหาถึงจุดสิ้นสุดหน้า เริ่มค้นต่อจากด้านบน
+find_not_found=ไม่พบวลีที่ต้องการ
+
+# Error panel labels
+error_more_info=ข้อมูลเพิ่มเติม
+error_less_info=ข้อมูลน้อย
+error_close=ปิด
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=ข้อความ: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=สแต็ก: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=แฟ้ม: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=บรรทัด: {{line}}
+rendering_error=เกิดข้อผิดพลาดขณะกำลังคำนวณการแสดงผลของหน้า
+
+# Predefined zoom values
+page_scale_width=ความกว้างหน้า
+page_scale_fit=พอดีหน้า
+page_scale_auto=ย่อ-ขยายอัตโนมัติ
+page_scale_actual=ขนาดเท่าจริง
+
+# Loading indicator messages
+loading_error_indicator=ข้อผิดพลาด
+loading_error=เกิดข้อผิดพลาดขณะกำลังโหลด PDF
+invalid_file_error=แฟ้ม PDF ไม่ถูกต้องหรือไม่สมบูรณ์
+missing_file_error=แฟ้ม PDF หาย
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[คำอธิบายประกอบ {{type}}]
+password_label=ใส่รหัสผ่านเพื่อเปิดไฟล์ PDF นี้
+password_invalid=รหัสผ่านไม่ถูกต้อง โปรดลองอีกครั้ง
+password_ok=ตกลง
+password_cancel=ยกเลิก
+
+printing_not_supported=คำเตือน: เบราเซอร์นี้ไม่ได้สนับสนุนการพิมพ์อย่างเต็มที่
+printing_not_ready=คำเตือน: PDF ไม่ได้รับการโหลดอย่างเต็มที่สำหรับการพิมพ์
+web_fonts_disabled=แบบอักษรเว็บถูกปิดการใช้งาน: ไม่สามารถใช้แบบอักษรฝังตัวใน PDF
+document_colors_disabled=เอกสาร PDF ไม่ได้รับอนุญาตให้ใช้สีของตัวเอง: 'อนุญาตให้หน้าเอกสารสามารถเลือกสีของตัวเอง' ถูกปิดใช้งานในเบราเซอร์
diff --git a/lib/viewers/pdf/locale/tl/viewer.properties b/lib/viewers/pdf/locale/tl/viewer.properties
new file mode 100644
index 0000000..07d86eb
--- /dev/null
+++ b/lib/viewers/pdf/locale/tl/viewer.properties
@@ -0,0 +1,83 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Naunang Pahina
+next.title=Sunod na Pahina
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Pahina:
+page_of=ng {{bilangngPahina}}
+
+open_file.title=Magbukas ng file
+open_file_label=Buksan
+bookmark.title=Kasalukuyang tingin (kopyahin o buksan sa bagong window)
+bookmark_label=Kasalukuyang tingin
+
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_title=Pamagat:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+outline.title=Ipakita ang banghay ng dokumento
+outline_label=Banghay ng dokumento
+thumbs.title=Ipakita ang mga Thumbnails
+findbar_label=Hanapin
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Pahina {{pahina}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Thumbnail ng Pahina {{pahina}}
+
+# Find panel button title and messages
+
+# Error panel labels
+error_more_info=Maraming Inpormasyon
+error_less_info=Maikling Inpormasyon
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mensahe: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linya: { { linya } }
+rendering_error=May naganap na pagkakamali habang pagsasalin sa pahina.
+
+# Predefined zoom values
+page_scale_width=Haba ng Pahina
+page_scale_fit=ang pahina ay angkop
+page_scale_auto=awtomatikong pag-imbulog
+
+# Loading indicator messages
+loading_error=May maling nangyari habang kinakarga ang PDF.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+password_ok=OK
+
diff --git a/lib/viewers/pdf/locale/tn/viewer.properties b/lib/viewers/pdf/locale/tn/viewer.properties
new file mode 100644
index 0000000..805a688
--- /dev/null
+++ b/lib/viewers/pdf/locale/tn/viewer.properties
@@ -0,0 +1,72 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Tsebe:
+
+zoom.title=Zuma/gogela
+open_file.title=Bula Faele
+open_file_label=Bula
+
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_file_name=Leina la faele:
+document_properties_title=Leina:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+findbar_label=Batla
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+
+# Find panel button title and messages
+find_previous.title=Batla tiragalo e e fetileng ya setlhopha sa mafoko
+find_next.title=Batla tiragalo e e latelang ya setlhopha sa mafoko
+find_not_found=Setlhopha sa mafoko ga se a bonwa
+
+# Error panel labels
+error_more_info=Tshedimosetso e Nngwe
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+
+# Predefined zoom values
+
+# Loading indicator messages
+loading_error_indicator=Phoso
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+password_ok=Siame
+password_cancel=Khansela
+
diff --git a/lib/viewers/pdf/locale/tr/chrome.properties b/lib/viewers/pdf/locale/tr/chrome.properties
deleted file mode 100644
index 0d4f10d..0000000
--- a/lib/viewers/pdf/locale/tr/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=Bu PDF Dosyası düzgün görüntülenemeyebilir.
-open_with_different_viewer=Lütfen başka bir gösterici deneyin
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/tr/metadata.inc b/lib/viewers/pdf/locale/tr/metadata.inc
deleted file mode 100644
index 13bc253..0000000
--- a/lib/viewers/pdf/locale/tr/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>tr</em:locale>
- <em:name>PDF Gösterici</em:name>
- <em:description>Firefox içerisinde PDFleri göstermek için HTML5 kullanır.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/tr/viewer.properties b/lib/viewers/pdf/locale/tr/viewer.properties
index a9d69dd..6eefe27 100644
--- a/lib/viewers/pdf/locale/tr/viewer.properties
+++ b/lib/viewers/pdf/locale/tr/viewer.properties
@@ -1,121 +1,163 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
-previous.title=Önceki Sayfa
+previous.title=Önceki sayfa
previous_label=Önceki
-next.title=Sonraki Sayfa
+next.title=Sonraki sayfa
next_label=Sonraki
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Sayfa:
-page_of=- {{pageCount}}
+page_of=/ {{pageCount}}
-zoom_out.title=Uzaklaş
-zoom_out_label=Uzaklaş
-zoom_in.title=Yakınlaş
-zoom_in_label=Yakınlaş
-zoom.title=Yakınlaştır
-print.title=Yazdır
-print_label=Yazdır
-presentation_mode.title=Sunum moduna geçiş yap
+zoom_out.title=Uzaklaș
+zoom_out_label=Uzaklaș
+zoom_in.title=Yaklaş
+zoom_in_label=Yaklaş
+zoom.title=Yakınlaştırma
+presentation_mode.title=Sunum moduna geç
presentation_mode_label=Sunum Modu
-open_file.title=Dosya Aç
+open_file.title=Dosya aç
open_file_label=Aç
+print.title=Yazdır
+print_label=Yazdır
download.title=Ä°ndir
download_label=Ä°ndir
-bookmark.title=Mevcut görünüm (kopyala yada yeni sayfada aç)
-bookmark_label=Mevcut Görünüm
+bookmark.title=Geçerli görünüm (kopyala veya yeni pencerede aç)
+bookmark_label=Geçerli görünüm
+
+# Secondary toolbar and context menu
+tools.title=Araçlar
+tools_label=Araçlar
+first_page.title=Ä°lk sayfaya git
+first_page.label=Ä°lk sayfaya git
+first_page_label=Ä°lk sayfaya git
+last_page.title=Son sayfaya git
+last_page.label=Son sayfaya git
+last_page_label=Son sayfaya git
+page_rotate_cw.title=Saat yönünde döndür
+page_rotate_cw.label=Saat yönünde döndür
+page_rotate_cw_label=Saat yönünde döndür
+page_rotate_ccw.title=Saat yönünün tersine döndür
+page_rotate_ccw.label=Saat yönünün tersine döndür
+page_rotate_ccw_label=Saat yönünün tersine döndür
+
+hand_tool_enable.title=El aracını etkinleştir
+hand_tool_enable_label=El aracını etkinleştir
+hand_tool_disable.title=El aracını kapat
+hand_tool_disable_label=El aracını kapat
+
+# Document properties dialog box
+document_properties.title=Belge özellikleri…
+document_properties_label=Belge özellikleri…
+document_properties_file_name=Dosya adı:
+document_properties_file_size=Dosya boyutu:
+document_properties_kb={{size_kb}} KB ({{size_b}} bayt)
+document_properties_mb={{size_mb}} MB ({{size_b}} bayt)
+document_properties_title=Başlık:
+document_properties_author=Yazar:
+document_properties_subject=Konu:
+document_properties_keywords=Anahtar kelimeler:
+document_properties_creation_date=Oluturma tarihi:
+document_properties_modification_date=Değiştirme tarihi:
+document_properties_date_string={{date}} {{time}}
+document_properties_creator=Oluşturan:
+document_properties_producer=PDF üreticisi:
+document_properties_version=PDF sürümü:
+document_properties_page_count=Sayfa sayısı:
+document_properties_close=Kapat
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Yan Menü Aç/Kapa
-toggle_sidebar_label=Yan Menü
-outline.title=Sayfa kenarlıklarını döster
-outline_label=Sayfa Kenarlıkları
-thumbs.title=Önizleme resimlerini göster
-thumbs_label=Önizleme
-findbar.title=Döküman içerisinde bul
+toggle_sidebar.title=Kenar çubuğunu aç/kapat
+toggle_sidebar_label=Kenar çubuğunu aç/kapat
+outline.title=Belge şemasını göster
+outline_label=Belge şeması
+attachments.title=Ekleri göster
+attachments_label=Ekler
+thumbs.title=Küçük resimleri göster
+thumbs_label=Küçük resimler
+findbar.title=Belgede bul
findbar_label=Bul
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Sayfa {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas={{page}} sayfasının ön izlemesi
-
-# Context menu
-first_page.label=Ä°lk Sayfaya Git
-last_page.label=Son Sayfaya Git
-page_rotate_cw.label=Sağa Çevir
-page_rotate_ccw.label=Sola Çevir
+thumb_page_canvas={{page}}. sayfanın küçük hâli
# Find panel button title and messages
find_label=Bul:
-find_previous.title=Önceki cümleyi bul
+find_previous.title=Önceki eşleşmeyi bul
find_previous_label=Önceki
-find_next.title=Sonraki cümleyi bul
+find_next.title=Sonraki eşleşmeyi bul
find_next_label=Sonraki
-find_highlight=Hepsini belirt
-find_match_case_label=harf eşleme
-find_reached_top=Dosyanın en üstüne varıldı. Sonundan devam ediliyor
-find_reached_bottom=Dosyanın sonuna varıldı. Başından devam ediliyor
-find_not_found=Aramanızla eşleşen sonuç yok
+find_highlight=Tümünü vurgula
+find_match_case_label=Büyük-küçük harf eşleştir
+find_reached_top=Belgenin başına ulaşıldı, sonundan devam edildi
+find_reached_bottom=Belgenin sonuna ulaşıldı, başından devam edildi
+find_not_found=Eşleşme bulunamadı
# Error panel labels
-error_more_info=Daha falza bilgi
-error_less_info=daha az bilgi
+error_more_info=Daha fazla bilgi
+error_less_info=Daha az bilgi
error_close=Kapat
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (build: {{build}})
+error_version_info=PDF.js sürüm {{version}} (yapı: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
-error_message=Mesaj: {{message}}
+error_message=Ä°leti: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Yığın: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Dosya: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Satır: {{line}}
-rendering_error=Sayfa oluşturulurken bir hata meydana geldi.
+rendering_error=Sayfa yorumlanırken bir hata oluştu.
# Predefined zoom values
-page_scale_width=Sayfa Genişliği
-page_scale_fit=Sayfayı Sığdır
-page_scale_auto=Otomatik Yakınlaşma
+page_scale_width=Sayfa genişliği
+page_scale_fit=Sayfayı sığdır
+page_scale_auto=Otomatik yakınlaştır
page_scale_actual=Gerçek boyut
# Loading indicator messages
loading_error_indicator=Hata
-loading_error=PDF yüklenirken hata.
-invalid_file_error=Geçersiz yada bozuk dosya.
-missing_file_error=PDF dosyası bulunamadı.
+loading_error=PDF yüklenirken bir hata oluştu.
+invalid_file_error=Geçersiz veya bozulmuş PDF dosyası.
+missing_file_error=PDF dosyası eksik.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Not]
-request_password=PDF Şifre ile korunmakta:
+text_annotation_type.alt=[{{type}} işareti]
+password_label=Bu PDF dosyasını açmak için parolasını girin.
+password_invalid=Geçersiz parola. Lütfen tekrar deneyin.
+password_ok=Tamam
+password_cancel=Ä°ptal
-printing_not_supported=Uyarı: Yazdırma işlemi bu tarayıcı ile tam desteklenmiyor.
-web_fonts_disabled=Web Fontları devre dışı. Web fontlar yüklenemiyor.
+printing_not_supported=Uyarı: Yazdırma bu tarayıcı tarafından tam olarak desteklenmemektedir.
+printing_not_ready=Uyarı: PDF tamamen yüklenmedi ve yazdırmaya hazır değil.
+web_fonts_disabled=Web fontları devre dışı: Gömülü PDF fontları kullanılamıyor.
+document_colors_disabled=PDF belgelerinin kendi renklerini kullanması için izin verilmiyor: 'Sayfalara kendi renklerini seçmesi için izin ver' tarayıcıda etkinleştirilmemiş.
diff --git a/lib/viewers/pdf/locale/uk/viewer.properties b/lib/viewers/pdf/locale/uk/viewer.properties
new file mode 100644
index 0000000..040b94e
--- /dev/null
+++ b/lib/viewers/pdf/locale/uk/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Попередня сторінка
+previous_label=Попередня
+next.title=Наступна сторінка
+next_label=Наступна
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Сторінка:
+page_of=з {{pageCount}}
+
+zoom_out.title=Зменшити
+zoom_out_label=Зменшити
+zoom_in.title=Збільшити
+zoom_in_label=Збільшити
+zoom.title=Масштаб
+presentation_mode.title=Перейти в режим презентації
+presentation_mode_label=Режим презентації
+open_file.title=Відкрити файл
+open_file_label=Відкрити
+print.title=Друк
+print_label=Друк
+download.title=Завантажити
+download_label=Завантажити
+bookmark.title=Поточний вигляд (копіювати чи відкрити у новому вікні)
+bookmark_label=Поточний вигляд
+
+# Secondary toolbar and context menu
+tools.title=Tools
+tools_label=Tools
+first_page.title=Йти на першу сторінку
+first_page.label=Йти на першу сторінку
+first_page_label=Йти на першу сторінку
+last_page.title=Йти на останню сторінку
+last_page.label=Йти на останню сторінку
+last_page_label=Йти на останню сторінку
+page_rotate_cw.title=Обернути за годинниковою стрілкою
+page_rotate_cw.label=Обернути за годинниковою стрілкою
+page_rotate_cw_label=Обернути за годинниковою стрілкою
+page_rotate_ccw.title=Обернути проти годинникової стрілки
+page_rotate_ccw.label=Обернути проти годинникової стрілки
+page_rotate_ccw_label=Обернути проти годинникової стрілки
+
+hand_tool_enable.title=Увімкнути інструмент «Рука»
+hand_tool_enable_label=Увімкнути інструмент «Рука»
+hand_tool_disable.title=Вимкнути інструмент «Рука»
+hand_tool_disable_label=Вимкнути інструмент «Рука»
+
+# Document properties dialog box
+document_properties.title=Властивості документа…
+document_properties_label=Властивості документа…
+document_properties_file_name=Назва файла:
+document_properties_file_size=Розмір файла:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Заголовок:
+document_properties_author=Автор:
+document_properties_subject=Тема:
+document_properties_keywords=Ключові слова:
+document_properties_creation_date=Дата створення:
+document_properties_modification_date=Дата модифікації:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Створено:
+document_properties_producer=Виробник PDF:
+document_properties_version=Версія PDF:
+document_properties_page_count=Кількість сторінок:
+document_properties_close=Закрити
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Перемкнути бічну панель
+toggle_sidebar_label=Перемкнути бічну панель
+outline.title=Показувати схему документа
+outline_label=Схема документа
+thumbs.title=Показувати ескізи
+thumbs_label=Ескізи
+findbar.title=Шукати в документі
+findbar_label=Пошук
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Сторінка {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Ескіз сторінки {{page}}
+
+# Find panel button title and messages
+find_label=Знайти:
+find_previous.title=Знайти попереднє входження фрази
+find_previous_label=Попереднє
+find_next.title=Знайти наступне входження фрази
+find_next_label=Наступне
+find_highlight=Підсвітити все
+find_match_case_label=З урахуванням регістру
+find_reached_top=Досягнуто початку документу, продовжено з кінця
+find_reached_bottom=Досягнуто кінця документу, продовжено з початку
+find_not_found=Фразу не знайдено
+
+# Error panel labels
+error_more_info=Більше інформації
+error_less_info=Менше інформації
+error_close=Закрити
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Повідомлення: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Стек: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Файл: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Рядок: {{line}}
+rendering_error=Під час рендеру сторінки сталась помилка.
+
+# Predefined zoom values
+page_scale_width=За шириною
+page_scale_fit=Умістити
+page_scale_auto=Авто-масштаб
+page_scale_actual=Дійсний розмір
+
+# Loading indicator messages
+loading_error_indicator=Помилка
+loading_error=Під час завантаження PDF сталась помилка.
+invalid_file_error=Недійсний або пошкоджений PDF-файл.
+missing_file_error=Відсутній PDF-файл.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}}-аннотація]
+password_label=Введіть пароль для відкриття цього PDF-файла.
+password_invalid=Невірний пароль. Спробуйте ще.
+password_ok=Гаразд
+password_cancel=Скасувати
+
+printing_not_supported=Попередження: Цей браузер не повністю підтримує друк.
+printing_not_ready=Попередження: The PDF це повністю завантажений для друку.
+web_fonts_disabled=Веб-шрифти вимкнено: неможливо використати вбудовані у PDF шрифти.
+document_colors_disabled=PDF-документам не дозволено використовувати свої власні кольори: в браузері вимкнено «Дозволити сторінкам використовувати свої власні кольори».
diff --git a/lib/viewers/pdf/locale/ur/viewer.properties b/lib/viewers/pdf/locale/ur/viewer.properties
new file mode 100644
index 0000000..c52220f
--- /dev/null
+++ b/lib/viewers/pdf/locale/ur/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=پچھلا صفحہ
+previous_label=پچھلا
+next.title=اگلا صفحہ
+next_label=آگے
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=صفحہ:
+page_of={{pageCount}} کا
+
+zoom_out.title=باہر زوم کریں
+zoom_out_label=باہر زوم کریں
+zoom_in.title=اندر زوم کریں
+zoom_in_label=اندر زوم کریں
+zoom.title=زوم
+presentation_mode.title=پیشکش موڈ میں چلے جائیں
+presentation_mode_label=پیشکش موڈ
+open_file.title=مسل کھولیں
+open_file_label=کھولیں
+print.title=چھاپیں
+print_label=چھاپیں
+download.title=ڈاؤن لوڈ
+download_label=ڈاؤن لوڈ
+bookmark.title=حالیہ نظارہ (نۓ دریچہ میں نقل کریں یا کھولیں)
+bookmark_label=حالیہ نظارہ
+
+# Secondary toolbar and context menu
+tools.title=آلات
+tools_label=آلات
+first_page.title=پہلے صفحہ پر جائیں
+first_page.label=پہلے صفحہ پر جائیں
+first_page_label=پہلے صفحہ پر جائیں
+last_page.title=آخری صفحہ پر جائیں
+last_page.label=آخری صفحہ پر جائیں
+last_page_label=آخری صفحہ پر جائیں
+page_rotate_cw.title=گھڑی وار گھمائیں
+page_rotate_cw.label=گھڑی وار گھمائیں
+page_rotate_cw_label=گھڑی وار گھمائیں
+page_rotate_ccw.title=ضد گھڑی وار گھمائیں
+page_rotate_ccw.label=ضد گھڑی وار گھمائیں
+page_rotate_ccw_label=ضد گھڑی وار گھمائیں
+
+hand_tool_enable.title=ہاتھ ٹول اہل بنائیں
+hand_tool_enable_label=ہاتھ ٹول اہل بنائیں
+hand_tool_disable.title=ہاتھ ٹول nنااہل بنائیں
+hand_tool_disable_label=ہاتھ ٹول نااہل بنائیں
+
+# Document properties dialog box
+document_properties.title=دستاویز خواص…
+document_properties_label=دستاویز خواص…
+document_properties_file_name=نام مسل:
+document_properties_file_size=مسل سائز:
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=عنوان:
+document_properties_author=تخلیق کار:
+document_properties_subject=موضوع:
+document_properties_keywords=کلیدی الفاظ:
+document_properties_creation_date=تخلیق کی تاریخ:
+document_properties_modification_date=ترمیم کی تاریخ:
+document_properties_date_string={{date}}، {{time}}
+document_properties_creator=تخلیق کار:
+document_properties_producer=PDF پیدا کار:
+document_properties_version=PDF ورژن:
+document_properties_page_count=صفحہ شمار:
+document_properties_close=بند کریں
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=سلائیڈ ٹوگل کریں
+toggle_sidebar_label=سلائیڈ ٹوگل کریں
+outline.title=دستاویز آؤٹ لائن دکھائیں
+outline_label=دستاویز آؤٹ لائن
+thumbs.title=تھمبنیل دکھائیں
+thumbs_label=مجمل
+findbar.title=دستاویز میں ڈھونڈیں
+findbar_label=ڈھونڈیں
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=صفحہ {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=صفحے کا مجمل {{page}}
+
+# Find panel button title and messages
+find_label=ڈھونڈیں:
+find_previous.title=فقرے کا پچھلا وقوع ڈھونڈیں
+find_previous_label=پچھلا
+find_next.title=فقرے کا اگلہ وقوع ڈھونڈیں
+find_next_label=آگے
+find_highlight=تمام نمایاں کریں
+find_match_case_label=حروف مشابہ کریں
+find_reached_top=صفحہ کے شروع پر پہنچ گیا، نیچے سے جاری کیا
+find_reached_bottom=صفحہ کے اختتام پر پہنچ گیا، اوپر سے جاری کیا
+find_not_found=فقرا نہیں ملا
+
+# Error panel labels
+error_more_info=مزید معلومات
+error_less_info=کم معلومات
+error_close=بند کریں
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=پیغام: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=سٹیک: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=مسل: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=لائن: {{line}}
+rendering_error=صفحہ بناتے ہوئے نقص آ گیا۔
+
+# Predefined zoom values
+page_scale_width=صفحہ چوڑائی
+page_scale_fit=صفحہ فٹنگ
+page_scale_auto=خودکار زوم
+page_scale_actual=اصل سائز
+
+# Loading indicator messages
+loading_error_indicator=نقص
+loading_error=PDF لوڈ کرتے وقت نقص آ گیا۔
+invalid_file_error=ناجائز یا خراب PDF مسل
+missing_file_error=PDF مسل غائب ہے۔
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} نوٹ]
+password_label=PDF مسل کھولنے کے لیے پاس ورڈ داخل کریں.
+password_invalid=ناجائز پاس ورڈ. براےؑ کرم دوبارہ کوشش کریں.
+password_ok=سہی
+password_cancel=منسوخ کریں
+
+printing_not_supported=تنبیہ:چھاپنا اس براؤزر پر پوری طرح معاونت شدہ نہیں ہے۔
+printing_not_ready=تنبیہ: PDF چھپائی کے لیے پوری طرح لوڈ نہیں ہوئی۔
+web_fonts_disabled=ویب فانٹ نا اہل ہیں: شامل PDF فانٹ استعمال کرنے میں ناکام۔
+document_colors_disabled=PDF دستاویزات کو اپنے رنگ استعمال کرنے کی اجازت نہیں: 'صفحات کو اپنے رنگ چنیں' کی اِجازت براؤزر میں بے عمل ہے۔
diff --git a/lib/viewers/pdf/locale/vi/chrome.properties b/lib/viewers/pdf/locale/vi/chrome.properties
deleted file mode 100644
index 0770f7a..0000000
--- a/lib/viewers/pdf/locale/vi/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=Tài liệu PDF có thể hiện thị không chính xác.
-open_with_different_viewer=Mở với chương trình xem khác
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/vi/metadata.inc b/lib/viewers/pdf/locale/vi/metadata.inc
deleted file mode 100644
index 0c8653c..0000000
--- a/lib/viewers/pdf/locale/vi/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>vi-VN</em:locale>
- <em:name>Trình Xem PDF</em:name>
- <em:description>Dùng HTML5 để hiện trị PDF trực giao trên FireFox.</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/vi/viewer.properties b/lib/viewers/pdf/locale/vi/viewer.properties
index fa47323..15acc8e 100644
--- a/lib/viewers/pdf/locale/vi/viewer.properties
+++ b/lib/viewers/pdf/locale/vi/viewer.properties
@@ -1,123 +1,143 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Trang Trước
previous_label=Trước
-next.title=Trang Tiếp
+next.title=Trang Sau
next_label=Tiếp
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
page_label=Trang:
-page_of=trên {{pageCount}}
+page_of=thuộc về {{pageCount}}
-zoom_out.title=Phóng to
-zoom_out_label=Phóng to
-zoom_in.title=Thu nhỏ
-zoom_in_label=Thu nhỏ
+zoom_out.title=Thu nhỏ
+zoom_out_label=Thu nhỏ
+zoom_in.title=Phóng to
+zoom_in_label=Phóng to
zoom.title=Thu phóng
+presentation_mode.title=Chuyển sang chế độ trình chiếu
+presentation_mode_label=Chế độ trình chiếu
+open_file.title=Mở Tập Tin
+open_file_label=Mở tập tin
print.title=In
print_label=In
-presentation_mode.title=Chuyển sang chế độ thuyết trình
-presentation_mode_label=Chế độ Thuyết trình
-open_file.title=Mở Tệp
-open_file_label=Tệp
download.title=Tải xuống
download_label=Tải xuống
-bookmark.title=Đánh dấu (sao chép hoặc mở cửa sổ mới)
-bookmark_label=Đánh dấu
+bookmark.title=Góc nhìn hiện tại (copy hoặc mở trong cửa sổ mới)
+bookmark_label=Chế độ xem hiện tại
+
+# Secondary toolbar and context menu
+tools.title=Công cụ
+page_rotate_cw.title=Xoay theo chiều kim đồng hồ
+page_rotate_cw.label=Xoay theo chiều kim đồng hồ
+page_rotate_cw_label=Xoay theo chiều kim đồng hồ
+page_rotate_ccw.title=Xoay ngược chiều kim đồng hồ
+page_rotate_ccw.label=Xoay ngược chiều kim đồng hồ
+page_rotate_ccw_label=Xoay ngược chiều kim đồng hồ
+
+
+# Document properties dialog box
+document_properties_file_size=Kích thước tập tin:
+document_properties_title=Tiêu đề:
+document_properties_author=Tác giả:
+document_properties_subject=Chủ đề:
+document_properties_keywords=Từ khóa:
+document_properties_creation_date=Ngày tạo:
+document_properties_modification_date=Ngày sửa đổi:
+document_properties_producer=Nhà sản xuất PDF:
+document_properties_version=Phiên bản PDF:
+document_properties_page_count=Tổng số trang:
+document_properties_close=Ðóng
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Đóng bật thanh lề
-toggle_sidebar_label=Bật tắt thanh lề
-outline.title=Hiện thị giản lược tài liệu
-outline_label=Giản lược
-thumbs.title=hiện tài liệu ở dạng ảnh thu nhỏ
-thumbs_label=Ảnh thu nhỏ
-findbar.title=Tìm trong văn bản
-findbar_label=Tìm kiếm
+toggle_sidebar.title=Bật/Tắt Thanh Lề
+toggle_sidebar_label=Bật/Tắt Thanh Lề
+outline.title=Hiển thị bản phác tài liệu
+outline_label=Bản phác họa Tài liệu
+thumbs.title=Hiển thị Thumbnails
+thumbs_label=Thumbnails (hình biểu diễn nhỏ)
+findbar.title=Tìm trong tài liệu
+findbar_label=Tìm
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
-thumb_page_title=Page {{page}}
+thumb_page_title=Trang {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=Thumbnail of Page {{page}}
-
-# Context menu
-first_page.label=Đến trang đầu tiên
-last_page.label=Đến trang cuối cùng
-page_rotate_cw.label=Quay sang phải
-page_rotate_ccw.label=Quay sang trái
+thumb_page_canvas=Hình ảnh thu nhỏ của trang {{page}}
# Find panel button title and messages
-find_label=Tìm:
-find_previous.title=Tìm kiếm câu xuất hiện phía trước
-find_previous_label=Về trước
-find_next.title=Tìm kiếm câu xuất hiện phía sau
-find_next_label=Tiếp theo
-find_highlight=Tô sáng toàn bộ
-find_match_case_label=Giống chữ
-find_reached_top=Đến cuối đầu tài liệu, tiếp tục từ cuối
-find_reached_bottom=Đến cuối tài liệu, tiếp tục từ đầu
-find_not_found=Không tìm thấy
+find_label=Tìm kiếm:
+find_previous.title=Tìm cụm từ ở phần trước
+find_previous_label=Trước
+find_next.title=Tìm cụm từ ở phần sau
+find_next_label=Tiếp
+find_highlight=Tô sáng tất cả
+find_match_case_label=Phân biệt chữ hoa, chữ thường
+find_reached_top=Đã đến phần đầu tài liệu, quay trở lại từ cuối
+find_reached_bottom=Đã đến phần cuối của tài liệu, quay trở lại từ đầu
+find_not_found=Không tìm thấy cụm từ
# Error panel labels
-error_more_info=Thông tim thêm
-error_less_info=Thông tin giản lược
+error_more_info=Thông tin thêm
+error_less_info=Hiển thị ít thông tin hơn
error_close=Đóng
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (dịch: {{build}})
+error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
-error_message=Thông báo: {{message}}
+error_message=Thông điệp: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
-error_stack=Ngăn xếp: {{stack}}
+error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Tệp: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Dòng: {{line}}
-rendering_error=An error occurred while rendering the page.
+rendering_error=Lỗi khi hiển thị trang.
# Predefined zoom values
-page_scale_width=Ngang
-page_scale_fit=Xem Toàn Trang
-page_scale_auto=Tự Động
+page_scale_width=Chiều rộng trang
+page_scale_fit=Độ vừa của trang
+page_scale_auto=Tự động thu/phóng
page_scale_actual=Kích thước thực
# Loading indicator messages
loading_error_indicator=Lỗi
-loading_error=Lỗi khi mở tệp PDF.
-invalid_file_error=Tệp PDF bị hỏng hoặc lỗi.
-missing_file_error=Thiếu tệp tin PDF.
+loading_error=Lỗi khi tải tài liệu PDF.
+invalid_file_error=Tập tin PDF hỏng hoặc không hợp lệ.
+missing_file_error=Thiếu tập tin PDF.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Đánh dấu]
-request_password=PDF được bảo vệ bởi mật mã:
+text_annotation_type.alt=[{{type}} Chú thích]
+password_label=Nhập mật khẩu để mở tập tin PDF này.
+password_invalid=Mật khẩu không đúng. Vui lòng thử lại.
+password_ok=OK
+password_cancel=Hủy bỏ
-printing_not_supported=Chú ý: Công việc in ẩn không được hỗ trợ bởi trình duyệt.
-printing_not_ready=Chú ý: Tệp PDF không sẵn sàng cho in ấn.
-web_fonts_disabled=Phồng chữ cho Web bị vô tác dụng: không thể dùng phông chữ kèm theo tệp PDF.
-web_colors_disabled=Màu cho Wev bị vô tác dụng.
+printing_not_supported=Cảnh báo: In ấn không được hỗ trợ đầy đủ ở trình duyệt này.
+printing_not_ready=Cảnh báo: PDF chưa được tải hết để in.
+web_fonts_disabled=Phông chữ Web bị vô hiệu hóa: không thể sử dụng các phông chữ PDF được nhúng.
+document_colors_disabled=Tài liệu PDF không được cho phép dùng màu riêng: 'Cho phép trang chọn màu riêng' đã bị tắt trên trình duyệt.
diff --git a/lib/viewers/pdf/locale/wo/viewer.properties b/lib/viewers/pdf/locale/wo/viewer.properties
new file mode 100644
index 0000000..94965ab
--- /dev/null
+++ b/lib/viewers/pdf/locale/wo/viewer.properties
@@ -0,0 +1,116 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Xët wi jiitu
+previous_label=Bi jiitu
+next.title=Xët wi ci topp
+next_label=Bi ci topp
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Xët:
+page_of=ci {{pageCount}}
+
+zoom_out.title=Wàññi
+zoom_out_label=Wàññi
+zoom_in.title=Yaatal
+zoom_in_label=Yaatal
+zoom.title=Yambalaŋ
+presentation_mode.title=Wañarñil ci anamu wone
+presentation_mode_label=Anamu Wone
+open_file.title=Ubbi benn dencukaay
+open_file_label=Ubbi
+print.title=Móol
+print_label=Móol
+download.title=Yeb yi
+download_label=Yeb yi
+bookmark.title=Wone bi taxaw (duppi walla ubbi palanteer bu bees)
+bookmark_label=Wone bi feeñ
+
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_title=Bopp:
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+outline.title=Wone takku yi
+outline_label=Takku jukki yi
+thumbs.title=Wone nataal yu ndaw yi
+thumbs_label=Nataal yu ndaw yi
+findbar.title=Gis ci biir jukki bi
+findbar_label=Wut
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Xët {{xët}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Wiñet bu xët{{xët}}
+
+# Find panel button title and messages
+find_label=Wut:
+find_previous.title=Seet beneen kaddu bu ni mel te jiitu
+find_previous_label=Bi jiitu
+find_next.title=Seet beneen kaddu bu ni mel
+find_next_label=Bi ci topp
+find_highlight=Melaxal lépp
+find_match_case_label=Sàmm jëmmalin wi
+find_reached_top=Jot nañu ndorteel xët wi, kontine dale ko ci suuf
+find_reached_bottom=Jot nañu jeexitalu xët wi, kontine ci ndorte
+find_not_found=Gisiñu kaddu gi
+
+# Error panel labels
+error_more_info=Xibaar yu gën bari
+error_less_info=Xibaar yu gën bari
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Bataaxal: {{bataaxal}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Juug: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Dencukaay: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Rëdd : {{line}}
+rendering_error=Am njumte bu am bi xët bi di wonewu.
+
+# Predefined zoom values
+page_scale_width=Yaatuwaay bu mët
+page_scale_fit=Xët lëmm
+page_scale_auto=Yambalaŋ ci saa si
+page_scale_actual=Dayo bi am
+
+# Loading indicator messages
+loading_error_indicator=Njumte
+loading_error=Am na njumte ci yebum dencukaay PDF bi.
+invalid_file_error=Dencukaay PDF bi baaxul walla mu sankar.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Karmat {{type}}]
+password_ok=OK
+password_cancel=Neenal
+
+printing_not_supported=Artu: Joowkat bii nanguwul lool mool.
diff --git a/lib/viewers/pdf/locale/xh/viewer.properties b/lib/viewers/pdf/locale/xh/viewer.properties
new file mode 100644
index 0000000..8a3bdb9
--- /dev/null
+++ b/lib/viewers/pdf/locale/xh/viewer.properties
@@ -0,0 +1,161 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Iphepha langaphambili
+previous_label=Okwangaphambili
+next.title=Iphepha elilandelayo
+next_label=Okulandelayo
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Iphepha:
+page_of=kwali- {{pageCount}}
+
+zoom_out.title=Bhekelisela Kudana
+zoom_out_label=Bhekelisela Kudana
+zoom_in.title=Sondeza Kufuphi
+zoom_in_label=Sondeza Kufuphi
+zoom.title=Yandisa / Nciphisa
+presentation_mode.title=Tshintshela kwimo yonikezelo
+presentation_mode_label=Imo yonikezelo
+open_file.title=Vula Ifayile
+open_file_label=Vula
+print.title=Printa
+print_label=Printa
+download.title=Khuphela
+download_label=Khuphela
+bookmark.title=Imbonakalo ekhoyo (kopa okanye vula kwifestile entsha)
+bookmark_label=Imbonakalo ekhoyo
+
+# Secondary toolbar and context menu
+tools.title=Izixhobo zemiyalelo
+tools_label=Izixhobo zemiyalelo
+first_page.title=Yiya kwiphepha lokuqala
+first_page.label=Yiya kwiphepha lokuqala
+first_page_label=Yiya kwiphepha lokuqala
+last_page.title=Yiya kwiphepha lokugqibela
+last_page.label=Yiya kwiphepha lokugqibela
+last_page_label=Yiya kwiphepha lokugqibela
+page_rotate_cw.title=Jikelisa ngasekunene
+page_rotate_cw.label=Jikelisa ngasekunene
+page_rotate_cw_label=Jikelisa ngasekunene
+page_rotate_ccw.title=Jikelisa ngasekhohlo
+page_rotate_ccw.label=Jikelisa ngasekhohlo
+page_rotate_ccw_label=Jikelisa ngasekhohlo
+
+hand_tool_enable.title=Yenza isixhobo sesandla sisebenze
+hand_tool_enable_label=Yenza isixhobo sesandla sisebenze
+hand_tool_disable.title=Yenza isixhobo sesandla singasebenzi
+hand_tool_disable_label=Yenza isixhobo sesandla singasebenzi
+
+# Document properties dialog box
+document_properties.title=Iipropati zoxwebhu…
+document_properties_label=Iipropati zoxwebhu…
+document_properties_file_name=Igama lefayile:
+document_properties_file_size=Isayizi yefayile:
+document_properties_kb={{size_kb}} KB ({{size_b}} iibhayiti)
+document_properties_mb={{size_mb}} MB ({{size_b}} iibhayiti)
+document_properties_title=Umxholo:
+document_properties_author=Umbhali:
+document_properties_subject=Umbandela:
+document_properties_keywords=Amagama aphambili:
+document_properties_creation_date=Umhla wokwenziwa kwayo:
+document_properties_modification_date=Umhla wokulungiswa kwayo:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Umntu oyenzileyo:
+document_properties_producer=Umvelisi we-PDF:
+document_properties_version=Uhlelo lwe-PDF:
+document_properties_page_count=Inani lamaphepha:
+document_properties_close=Vala
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Togola ngebha eseCaleni
+toggle_sidebar_label=Togola ngebha eseCaleni
+outline.title=Bonisa isishwankathelo soxwebhu
+outline_label=Isishwankathelo soxwebhu
+thumbs.title=Bonisa ukrobiso kumfanekiso
+thumbs_label=Ukrobiso kumfanekiso
+findbar.title=Fumana kuXwebhu
+findbar_label=Fumana
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Iphepha {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Ukrobiso kumfanekiso wephepha {{page}}
+
+# Find panel button title and messages
+find_label=Fumanisa:
+find_previous.title=Fumanisa isenzeko sangaphambili sebinzana lamagama
+find_previous_label=Okwangaphambili
+find_next.title=Fumanisa isenzeko esilandelayo sebinzana lamagama
+find_next_label=Okulandelayo
+find_highlight=Qaqambisa konke
+find_match_case_label=Tshatisa ngobukhulu bukanobumba
+find_reached_top=Ufike ngaphezulu ephepheni, kusukwa ngezantsi
+find_reached_bottom=Ufike ekupheleni kwephepha, kusukwa ngaphezulu
+find_not_found=Ibinzana alifunyenwanga
+
+# Error panel labels
+error_more_info=Inkcazelo Engakumbi
+error_less_info=Inkcazelo Encinane
+error_close=Vala
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=I-PDF.js v{{uhlelo}} (yakha: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Umyalezo: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Imfumba: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Ifayile: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Umgca: {{line}}
+rendering_error=Imposiso yenzekile xa bekunikezelwa iphepha.
+
+# Predefined zoom values
+page_scale_width=Ububanzi bephepha
+page_scale_fit=Ukulinganiswa kwephepha
+page_scale_auto=Ukwandisa/Ukunciphisa Ngokwayo
+page_scale_actual=Ubungakanani bokwenene
+
+# Loading indicator messages
+loading_error_indicator=Imposiso
+loading_error=Imposiso yenzekile xa kulayishwa i-PDF.
+invalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo.
+missing_file_error=Ifayile ye-PDF edukileyo.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Ubhalo-nqaku]
+password_label=Faka ipasiwedi ukuze uvule le fayile yePDF.
+password_invalid=Ipasiwedi ayisebenzi. Nceda uzame kwakhona.
+password_ok=KULUNGILE
+password_cancel=Rhoxisa
+
+printing_not_supported=Isilumkiso: Ukuprinta akuxhaswa ngokupheleleyo yile bhrawuza.
+printing_not_ready=Isilumkiso: IPDF ayihlohlwanga ngokupheleleyo ukwenzela ukuprinta.
+web_fonts_disabled=Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa iifonti ze-PDF ezincanyathelisiweyo.
+document_colors_disabled=Amaxwebhu ePDF akavumelekanga ukuba asebenzise imibala yawo: 'Ukuvumela amaphepha ukuba asebenzise eyawo imibala' kuvaliwe ukuba kungasebenzi kwibhrawuza.
diff --git a/lib/viewers/pdf/locale/zh-CN/chrome.properties b/lib/viewers/pdf/locale/zh-CN/chrome.properties
deleted file mode 100644
index fac9eda..0000000
--- a/lib/viewers/pdf/locale/zh-CN/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome notification bar messages and buttons
-unsupported_feature=该 PDF 文档可能无法被正确显示
-open_with_different_viewer=使用另一个 PDF 查看器打开
-open_with_different_viewer.accessKey=o
diff --git a/lib/viewers/pdf/locale/zh-CN/metadata.inc b/lib/viewers/pdf/locale/zh-CN/metadata.inc
deleted file mode 100644
index 04be27c..0000000
--- a/lib/viewers/pdf/locale/zh-CN/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>zh-CN</em:locale>
- <em:name>PDF 查看器</em:name>
- <em:description>使用 HTML5 来支持在 Firefox 中直接显示 PDF 文件。</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/zh-CN/viewer.properties b/lib/viewers/pdf/locale/zh-CN/viewer.properties
index 5b045b2..878c5f2 100644
--- a/lib/viewers/pdf/locale/zh-CN/viewer.properties
+++ b/lib/viewers/pdf/locale/zh-CN/viewer.properties
@@ -1,121 +1,163 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=上一页
-previous_label=向上
+previous_label=上一页
next.title=下一页
-next_label=向下
+next_label=下一页
# LOCALIZATION NOTE (page_label, page_of):
# These strings are concatenated to form the "Page: X of Y" string.
# Do not translate "{{pageCount}}", it will be substituted with a number
# representing the total number of pages.
-page_label=页码:
+page_label=页面:
page_of=/ {{pageCount}}
zoom_out.title=缩小
zoom_out_label=缩小
zoom_in.title=放大
zoom_in_label=放大
zoom.title=缩放
-print.title=打印
-print_label=打印
-presentation_mode.title=切换至幻灯模式
-presentation_mode_label=幻灯模式
+presentation_mode.title=切换到演示模式
+presentation_mode_label=演示模式
open_file.title=打开文件
open_file_label=打开
+print.title=打印
+print_label=打印
download.title=下载
download_label=下载
bookmark.title=当前视图(复制或在新窗口中打开)
bookmark_label=当前视图
+# Secondary toolbar and context menu
+tools.title=工具
+tools_label=工具
+first_page.title=转到第一页
+first_page.label=转到第一页
+first_page_label=转到第一页
+last_page.title=转到最后一页
+last_page.label=转到最后一页
+last_page_label=转到最后一页
+page_rotate_cw.title=顺时针旋转
+page_rotate_cw.label=顺时针旋转
+page_rotate_cw_label=顺时针旋转
+page_rotate_ccw.title=逆时针旋转
+page_rotate_ccw.label=逆时针旋转
+page_rotate_ccw_label=逆时针旋转
+
+hand_tool_enable.title=启用手形工具
+hand_tool_enable_label=启用手形工具
+hand_tool_disable.title=禁用手形工具
+hand_tool_disable_label=禁用手形工具
+
+# Document properties dialog box
+document_properties.title=文档属性…
+document_properties_label=文档属性…
+document_properties_file_name=文件名:
+document_properties_file_size=文件大小:
+document_properties_kb={{size_kb}} KB ({{size_b}} 字节)
+document_properties_mb={{size_mb}} MB ({{size_b}} 字节)
+document_properties_title=标题:
+document_properties_author=作者:
+document_properties_subject=主题:
+document_properties_keywords=关键词:
+document_properties_creation_date=创建日期:
+document_properties_modification_date=修改日期:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=创建者:
+document_properties_producer=PDF 制作者:
+document_properties_version=PDF 版本:
+document_properties_page_count=页数:
+document_properties_close=关闭
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=切换侧栏
toggle_sidebar_label=切换侧栏
outline.title=显示文档大纲
outline_label=文档大纲
+attachments.title=显示附件
+attachments_label=附件
thumbs.title=显示缩略图
thumbs_label=缩略图
-findbar.title=在该文档内查找
+findbar.title=在文档中查找
findbar_label=查找
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=页码 {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=页面 {{page}} 的缩略图
-# Context menu
-first_page.label=转到第一页
-last_page.label=转到结尾页
-page_rotate_cw.label=顺时针旋转
-page_rotate_ccw.label=逆时针旋转
-
# Find panel button title and messages
-find_label=查找:
-find_previous.title=查找该短语上一次出现的位置
-find_previous_label=上一个
-find_next.title=查找该短语下一次出现的位置
-find_next_label=下一个
-find_highlight=全部高亮
+find_label=查找:
+find_previous.title=查找词语上一次出现的位置
+find_previous_label=上一页
+find_next.title=查找词语后一次出现的位置
+find_next_label=下一页
+find_highlight=全部高亮显示
find_match_case_label=区分大小写
-find_reached_top=已查找至文档的开始位置,将从文档末尾继续查找
-find_reached_bottom=已查找至文档的末尾位置,将从文档的开始位置继续查找
-find_not_found=找不到
+find_reached_top=到达文档开头,从末尾继续
+find_reached_bottom=到达文档末尾,从开头继续
+find_not_found=词语未找到
# Error panel labels
error_more_info=更多信息
-error_less_info=简略信息
+error_less_info=更少信息
error_close=关闭
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (构建版本: {{build}})
+error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
-error_message=错误信息: {{message}}
+error_message=信息:{{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
-error_stack=堆栈: {{stack}}
+error_stack=堆栈:{{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
-error_file=文件: {{file}}
+error_file=文件:{{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=行数: {{line}}
-rendering_error=渲染页面时出错。
+error_line=行号:{{line}}
+rendering_error=渲染页面时发生错误。
# Predefined zoom values
-page_scale_width=符合页宽
-page_scale_fit=符合页面
+page_scale_width=适合页宽
+page_scale_fit=适合页面
page_scale_auto=自动缩放
page_scale_actual=实际大小
# Loading indicator messages
loading_error_indicator=错误
-loading_error=加载 PDF 文件时出错。
-invalid_file_error=PDF 文件无效或已损坏。
-missing_file_error=缺失 PDF 文件。
+loading_error=载入PDF时发生错误。
+invalid_file_error=无效或损坏的PDF文件。
+missing_file_error=缺少PDF文件。
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} 注解]
-request_password=该 PDF 文档受密码保护:
+text_annotation_type.alt=[{{type}} 注解]
+password_label=输入密码以打开此 PDF 文件。
+password_invalid=密码无效。请重试。
+password_ok=确定
+password_cancel=取消
-printing_not_supported=警告:该浏览器不能完全支持打印。
-web_fonts_disabled=Web 页面字体已被禁用,无法使用嵌入到 PDF 中的字体。
+printing_not_supported=警告:打印功能不完全支持此浏览器。
+printing_not_ready=警告:该 PDF 未完全加载以供打印。
+web_fonts_disabled=Web 字体已被禁用:无法使用嵌入的PDF字体。
+document_colors_disabled=不允许 PDF 文档使用自己的颜色:浏览器中“允许页面选择自己的颜色”的选项已停用。
diff --git a/lib/viewers/pdf/locale/zh-TW/chrome.properties b/lib/viewers/pdf/locale/zh-TW/chrome.properties
deleted file mode 100644
index e5db21c..0000000
--- a/lib/viewers/pdf/locale/zh-TW/chrome.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Chrome 通知欄的訊息及按鍵
-unsupported_feature=本 PDF 文件可能無法正常顯示。
-open_with_different_viewer=使用其他檢視器打開文件
-open_with_different_viewer.accessKey=o
\ No newline at end of file
diff --git a/lib/viewers/pdf/locale/zh-TW/metadata.inc b/lib/viewers/pdf/locale/zh-TW/metadata.inc
deleted file mode 100644
index 6ef722b..0000000
--- a/lib/viewers/pdf/locale/zh-TW/metadata.inc
+++ /dev/null
@@ -1,8 +0,0 @@
- <em:localized>
- <Description>
- <em:locale>zh-TW</em:locale>
- <em:name>PDF 瀏覽器</em:name>
- <em:description>利用 HTML5 技術在 Firefox 中直接顯示 PDF 格式檔案。</em:description>
- </Description>
- </em:localized>
-
diff --git a/lib/viewers/pdf/locale/zh-TW/viewer.properties b/lib/viewers/pdf/locale/zh-TW/viewer.properties
index 95a886e..cd0f8a0 100644
--- a/lib/viewers/pdf/locale/zh-TW/viewer.properties
+++ b/lib/viewers/pdf/locale/zh-TW/viewer.properties
@@ -1,113 +1,164 @@
-# Copyright 2012 Mozilla Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# 主工具列按鍵 (工具提示和圖像的替代文字)
-previous.title=上一頁
-previous_label=上一頁
-next.title=下一頁
-next_label=下一頁
-
-# 本地化提示 (page_label, page_of):
-# 這些字符串會連接成 "Page: X of Y" 的表示方式。
-# 不要翻譯 "{{pageCount}}" , 因為它用來表示總頁數。
-page_label=第
-page_of=頁,共 {{pageCount}} 頁
-
-zoom_out.title=縮小
-zoom_out_label=縮小
-zoom_in.title=放大
-zoom_in_label=放大
-zoom.title=縮放
-print.title=列印
-print_label=列印
-presentation_mode.title=切換到簡報模式
-presentation_mode_label=簡報模式
-open_file.title=開啟檔案
-open_file_label=開啟
-download.title=下載
-download_label=下載
-bookmark.title=目前檢視(複製或在新視窗中開啟)
-bookmark_label=目前檢視
-
-# 側邊欄工具列按鍵 (工具提示和圖像的替代文字)
-# (_label 字符串是按鍵的替代文字, .title 字符串是工具提示)
-toggle_sidebar.title=切換側邊欄
-toggle_sidebar_label=切換側邊欄
-outline.title=顯示文件綱要
-outline_label=文件綱要
-thumbs.title=顯示縮圖
-thumbs_label=縮圖
-findbar.title=在文件中搜尋
-findbar_label=搜索
-
-# 縮圖面板項目 (工具提示和圖像的替代文字)
-# 本地化提示 (thumb_page_title): "{{page}}" 會被頁數取代。
-thumb_page_title=第 {{page}} 頁
-# 本地化提示 (thumb_page_canvas): "{{page}}" 會被頁數取代。
-thumb_page_canvas=第 {{page}} 頁的縮圖
-
-# 右鍵菜單
-page_rotate_cw.label=順時針旋轉
-page_rotate_ccw.label=逆時針旋轉
-
-# 搜尋面板按鍵文字及訊息
-find_label=搜尋:
-find_previous.title=尋找上一個出現的詞組
-find_previous_label=上一個
-find_next.title=尋找下一個出現的詞組
-find_next_label=下一個
-find_highlight=全部以高亮顯示
-find_match_case_label=區分大小寫
-find_reached_top=到達文件頂端,由末端繼續搜尋
-find_reached_bottom=到達文件末端,由頂端繼續搜尋
-find_not_found=找不到詞組
-
-# 錯誤面板標籤
-error_more_info=更多資訊
-error_less_info=更少資訊
-error_close=關閉
-# 本地化提示 (error_version_info): "{{version}}" and "{{build}}" 會被PDF.JS版本編號及組建編號取代。
-error_version_info=PDF.js v{{version}} (組建: {{build}})
-# 本地化提示 (error_message): "{{message}}" 會被英文的錯誤描述取代。
-error_message=錯誤信息:{{message}}
-# 本地化提示 (error_stack): "{{stack}}" 會被錯誤堆疊取代。
-error_stack=堆疊:{{stack}}
-# 本地化提示 (error_file): "{{file}}" 會被檔案名稱取代。
-error_file=檔案:{{file}}
-# 本地化提示 (error_line): "{{line}}" 會被行數取代。
-error_line=行數:{{line}}
-rendering_error=渲染頁面時發生錯誤。
-
-# 預設的縮放值
-page_scale_width=符合頁寬
-page_scale_fit=符合頁面
-page_scale_auto=自動縮放
-page_scale_actual=實際大小
-
-# 載入指示訊息
-loading_error_indicator=錯誤
-loading_error=載入PDF檔案時發生錯誤。
-invalid_file_error=無效或受損的PDF檔案。
-missing_file_error=遺失PDF檔案。
-
-# 其他標籤和訊息
-# "{{type}}" 用來表示PDF格式規範 (32000-1:2008 Table 169 – Annotation types) 入面所定義的註解種類。
-# 一些常見的類型有: "Check"、 "Text"、 "Comment"、 "Note"
-text_annotation_type=[{{type}} 註解]
-request_password=PDF檔案受密碼保護:
-
-printing_not_supported=警告:這個瀏覽器不完全支援列印。
-printing_not_ready=警告:PDF檔案未完全加載以進行打印。
-web_fonts_disabled=禁止使用網路字型:無法使用嵌入PDF檔案的字型。
-web_colors_disabled=網絡顏色已被停用。
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=上一頁
+previous_label=上一頁
+next.title=下一頁
+next_label=下一頁
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=頁:
+page_of=/ {{pageCount}}
+
+zoom_out.title=縮小
+zoom_out_label=縮小
+zoom_in.title=放大
+zoom_in_label=放大
+zoom.title=縮放
+presentation_mode.title=切換至簡報模式
+presentation_mode_label=簡報模式
+open_file.title=開啟檔案
+open_file_label=開啟
+print.title=列印
+print_label=列印
+download.title=下載
+download_label=下載
+bookmark.title=目前檢視的內容(複製或開啟於新視窗)
+bookmark_label=目前檢視
+
+# Secondary toolbar and context menu
+tools.title=工具
+tools_label=工具
+first_page.title=跳到第一頁
+first_page.label=跳到第一頁
+first_page_label=跳到第一頁
+last_page.title=跳到最後一頁
+last_page.label=跳到最後一頁
+last_page_label=跳到最後一頁
+page_rotate_cw.title=順時針旋轉
+page_rotate_cw.label=順時針旋轉
+page_rotate_cw_label=順時針旋轉
+page_rotate_ccw.title=逆時針旋轉
+page_rotate_ccw.label=逆時針旋轉
+page_rotate_ccw_label=逆時針旋轉
+
+hand_tool_enable.title=啟用掌型工具
+hand_tool_enable_label=啟用掌型工具
+hand_tool_disable.title=停用掌型工具
+hand_tool_disable_label=停用掌型工具
+
+# Document properties dialog box
+document_properties.title=文件內容…
+document_properties_label=文件內容…
+document_properties_file_name=檔案名稱:
+document_properties_file_size=檔案大小:
+document_properties_kb={{size_kb}} KB({{size_b}} 位元組)
+document_properties_mb={{size_kb}} MB({{size_b}} 位元組)
+document_properties_title=標題:
+document_properties_author=作者:
+document_properties_subject=主旨:
+document_properties_keywords=關鍵字:
+document_properties_creation_date=建立日期:
+document_properties_modification_date=修改日期:
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=建立者:
+document_properties_producer=PDF 產生器:
+document_properties_version=PDF 版本:
+document_properties_page_count=頁數:
+document_properties_close=關閉
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=切換側邊欄
+toggle_sidebar_label=切換側邊欄
+outline.title=顯示文件大綱
+outline_label=文件大綱
+attachments.title=顯示附件
+attachments_label=附件
+thumbs.title=顯示縮圖
+thumbs_label=縮圖
+findbar.title=在文件中尋找
+findbar_label=尋找
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=頁 {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=頁 {{page}} 的縮圖
+
+# Find panel button title and messages
+find_label=尋找:
+find_previous.title=尋找文字前次出現的位置
+find_previous_label=上一個
+find_next.title=尋找文字下次出現的位置
+find_next_label=下一個
+find_highlight=全部強調標示
+find_match_case_label=區分大小寫
+find_reached_top=已搜尋至文件頂端,自底端繼續搜尋
+find_reached_bottom=已搜尋至文件底端,自頂端繼續搜尋
+find_not_found=找不到指定文字
+
+# Error panel labels
+error_more_info=更多資訊
+error_less_info=更少資訊
+error_close=關閉
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=訊息: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=堆疊: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=檔案: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=行: {{line}}
+rendering_error=描繪頁面時發生錯誤。
+
+# Predefined zoom values
+page_scale_width=頁面寬度
+page_scale_fit=縮放至頁面大小
+page_scale_auto=自動縮放
+page_scale_actual=實際大小
+
+# Loading indicator messages
+loading_error_indicator=錯誤
+loading_error=載入 PDF 時發生錯誤。
+invalid_file_error=無效或毀損的 PDF 檔案。
+missing_file_error=找不到 PDF 檔案。
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} 註解]
+password_label=請輸入用來開啟此 PDF 檔案的密碼。
+password_invalid=密碼不正確,請再試一次。
+password_ok=確定
+password_cancel=取消
+
+printing_not_supported=警告: 此瀏覽器未完整支援列印功能。
+printing_not_ready=警告: 此 PDF 未完成下載以供列印。
+web_fonts_disabled=已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。
+document_colors_disabled=瀏覽器的「優先使用網頁指定的色彩」未被勾選,PDF 文件無法使用自己的色彩。
+
diff --git a/lib/viewers/pdf/locale/zu/viewer.properties b/lib/viewers/pdf/locale/zu/viewer.properties
new file mode 100644
index 0000000..bd7a08f
--- /dev/null
+++ b/lib/viewers/pdf/locale/zu/viewer.properties
@@ -0,0 +1,124 @@
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Ikhasi eledlule
+previous_label=Okudlule
+next.title=Ikhasi elilandelayo
+next_label=Okulandelayo
+
+# LOCALIZATION NOTE (page_label, page_of):
+# These strings are concatenated to form the "Page: X of Y" string.
+# Do not translate "{{pageCount}}", it will be substituted with a number
+# representing the total number of pages.
+page_label=Ikhasi:
+page_of=kwe-{{pageCount}}
+
+zoom_out.title=Hlehlisela emuva
+zoom_out_label=Hlehlisela emuva
+zoom_in.title=Sondeza eduze
+zoom_in_label=Sondeza eduze
+zoom.title=Lwiza
+print.title=Phrinta
+print_label=Phrinta
+presentation_mode.title=Guqulela kwindlela yesethulo
+presentation_mode_label=Indlelo yesethulo
+open_file.title=Vula ifayela
+open_file_label=Vula
+download.title=Landa
+download_label=Landa
+bookmark.title=Ukubuka kwamanje (kopisha noma vula kwifasitela elisha)
+bookmark_label=Ukubuka kwamanje
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=I-toggle yebha yaseceleni
+toggle_sidebar_label=i-toggle yebha yaseceleni
+outline.title=Bonisa umugqa waseceleni wedokhumenti
+outline_label=Umugqa waseceleni wedokhumenti
+thumbs.title=Bonisa izithombe ezincane
+thumbs_label=Izithonjana
+findbar.title=Thola kwidokhumenti
+findbar_label=Thola
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Ikhasi {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Isithonjana sekhasi {{page}}
+
+# Context menu
+first_page.label=Yiya kwikhasi lokuqala
+last_page.label=Yiya kwikhasi lokugcina
+page_rotate_cw.label=Jikisela ngendlela yewashi
+page_rotate_ccw.label=Jikisela kwelokudla
+
+# Find panel button title and messages
+find_label=Thola
+find_previous.title=Thola indawo eyandulelayo okuvela kuyo lomshwana
+find_previous_label=Okudlulile
+find_next.title=Thola enye indawo okuvela kuyo lomshwana
+find_next_label=Okulandelayo
+find_highlight=Gqamisa konke
+find_match_case_label=Fanisa ikheyisi
+find_reached_top=Finyelele phezulu kwidokhumenti, qhubeka kusukaphansi
+find_reached_bottom=Ifinyelele ekupheleni kwedokhumenti, qhubeka kusukaphezulu
+find_not_found=Umshwana awutholakali
+
+# Error panel labels
+error_more_info=Ukwaziswa Okwengeziwe
+error_less_info=Ukwazi okuncane
+error_close=Vala
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Umlayezo: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Isitaki: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Ifayela: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Umugqa: {{line}}
+rendering_error=Iphutha lenzekile uma kunikwa ikhasi.
+
+# Predefined zoom values
+page_scale_width=Ububanzi bekhasi
+page_scale_fit=Ukulingana kwekhasi
+page_scale_auto=Ukulwiza okuzenzekalelayo
+page_scale_actual=Usayizi Wangempela
+
+# Loading indicator messages
+loading_error_indicator=Iphutha
+loading_error=Kwenzeke iphutha uma kulayishwa i-PDF.
+invalid_file_error=Ifayela le-PDF elingavumelekile noma elonakele.
+missing_file_error=Ifayela le-PDF elilahlekile.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Amazwibela e-{{type}}]
+request_password=I-PDF ivikeleke ngephasiwedi
+invalid_password=Iphasiwedi Engavumelekile.
+
+printing_not_supported=Isixwayiso: Ukuphrinta akuxhasiwe yilesisiphequluli ngokugcwele.
+printing_not_ready=Isixwayiso: I-PDF ayikalayishwa ngokuphelele yiPhrinta.
+web_fonts_disabled=Amafonti e-webhu akutshaziwe: ayikwazi ukusebenzisa amafonti abekiwe e-PDF.
+document_colors_disabled=Amadokhumenti we-PDF awavumelekile ukusebenzisa imibalo yayo: 'Vumela amakhasi ukukhetha imibala yayo' ayisebenzi kusiphequluli.
diff --git a/lib/viewers/pdf/pdf.js b/lib/viewers/pdf/pdf.js
index aee23e5..49a59eb 100644
--- a/lib/viewers/pdf/pdf.js
+++ b/lib/viewers/pdf/pdf.js
@@ -1,1660 +1,160 @@
-var PDFJS={version:"0.8.120",build:"d1cea4a"};
-(function(){var pb,qb;function da(d){bc>=Zc&&(Ia("Info: "+d),PDFJS.LogManager.notify("info",d))}function Y(d){bc>=Ib&&(Ia("Warning: "+d),PDFJS.LogManager.notify("warn",d))}function w(d){if(1<arguments.length){var a=["Error:"];a.push.apply(a,arguments);Ia.apply(null,a);d=[].join.call(arguments," ")}else Ia("Error: "+d);var a=Ia,b;try{throw Error();}catch(c){b=c.stack?c.stack.split("\n").slice(2).join("\n"):""}a(b);PDFJS.LogManager.notify("error",d);throw Error(d);}function oa(d){Y("TODO: "+d)}function $c(d,
-a){if(!a)return d;if(0<=a.indexOf(":"))return a;if("/"==a.charAt(0)){var b=d.indexOf("://"),b=d.indexOf("/",b+3);return d.substring(0,b)+a}var c=d.length,b=d.lastIndexOf("#"),c=0<=b?b:c,b=d.lastIndexOf("?",c),b=d.lastIndexOf("/",0<=b?b:c);return d.substring(0,b+1)+a}function la(d,a){d||w(a)}function fa(d,a,b){Object.defineProperty(d,a,{value:b,enumerable:!0,configurable:!0,writable:!1});return b}function ib(d){for(var a="",b=d.length,c=0;c<b;++c)a+=String.fromCharCode(d[c]);return a}function va(d){for(var a=
-d.length,b=new Uint8Array(a),c=0;c<a;++c)b[c]=d.charCodeAt(c)&255;return b}function Ja(d){var a,b=d.length,c="";if("\u00fe"===d[0]&&"\u00ff"===d[1])for(a=2;a<b;a+=2)c+=String.fromCharCode(d.charCodeAt(a)<<8|d.charCodeAt(a+1));else for(a=0;a<b;++a)var e=ad[d.charCodeAt(a)],c=c+(e?String.fromCharCode(e):d.charAt(a));return c}function zb(d){for(var a in d)return!1;return!0}function Ka(d){return"boolean"==typeof d}function N(d){return"number"==typeof d&&(d|0)==d}function La(d){return"number"==typeof d}
-function za(d){return"string"==typeof d}function V(d){return d instanceof Wa}function ea(d,a){return d instanceof Aa&&(!a||d.cmd==a)}function W(d,a){if(!(d instanceof Ma))return!1;if(!a)return!0;var b=d.get("Type");return V(b)&&b.name==a}function U(d){return d instanceof Array}function ra(d){return"object"==typeof d&&null!==d&&void 0!==d&&"getChar"in d}function Jb(d){return"object"==typeof d&&null!==d&&void 0!==d&&"byteLength"in d}function Ea(d){return d instanceof Kb}function cc(d){if("object"!=
-typeof d)return!1;if(!W(d))if(ra(d))d=d.dict;else return!1;return d.has("FunctionType")}function Ba(d,a){var b=document.createElement("canvas");b.width=d;b.height=a;return b}function Lb(d){d.mozCurrentTransform||(d._scaleX=d._scaleX||1,d._scaleY=d._scaleY||1,d._originalSave=d.save,d._originalRestore=d.restore,d._originalRotate=d.rotate,d._originalScale=d.scale,d._originalTranslate=d.translate,d._originalTransform=d.transform,d._originalSetTransform=d.setTransform,d._transformMatrix=[d._scaleX,0,0,
-d._scaleY,0,0],d._transformStack=[],Object.defineProperty(d,"mozCurrentTransform",{get:function(){return this._transformMatrix}}),Object.defineProperty(d,"mozCurrentTransformInverse",{get:function(){var a=this._transformMatrix,b=a[0],c=a[1],e=a[2],f=a[3],g=a[4],a=a[5],h=b*f-c*e,l=c*e-b*f;return[f/h,c/l,e/l,b/h,(f*g-e*a)/l,(c*g-b*a)/h]}}),d.save=function(){var a=this._transformMatrix;this._transformStack.push(a);this._transformMatrix=a.slice(0,6);this._originalSave()},d.restore=function(){var a=this._transformStack.pop();
-a&&(this._transformMatrix=a,this._originalRestore())},d.translate=function(a,b){var c=this._transformMatrix;c[4]=c[0]*a+c[2]*b+c[4];c[5]=c[1]*a+c[3]*b+c[5];this._originalTranslate(a,b)},d.scale=function(a,b){var c=this._transformMatrix;c[0]*=a;c[1]*=a;c[2]*=b;c[3]*=b;this._originalScale(a,b)},d.transform=function(a,b,c,e,f,g){var h=this._transformMatrix;this._transformMatrix=[h[0]*a+h[2]*b,h[1]*a+h[3]*b,h[0]*c+h[2]*e,h[1]*c+h[3]*e,h[0]*f+h[2]*g+h[4],h[1]*f+h[3]*g+h[5]];d._originalTransform(a,b,c,
-e,f,g)},d.setTransform=function(a,b,c,e,f,g){this._transformMatrix=[a,b,c,e,f,g];d._originalSetTransform(a,b,c,e,f,g)},d.rotate=function(a){var b=Math.cos(a),c=Math.sin(a),e=this._transformMatrix;this._transformMatrix=[e[0]*b+e[2]*c,e[1]*b+e[3]*c,e[0]*-c+e[2]*b,e[1]*-c+e[3]*b,e[4],e[5]];this._originalRotate(a)})}function Mb(d){d=va(d);for(var a=d.length,b=0;b<a;++b)d[b]|=128;return Fa(d,"euc-jp")}function Nb(d){return Fa(va(d),"euc-jp")}function Ab(d){return Fa(va(d),"shift_jis")}function Ob(d){return Fa(va(d),
-"big5")}function Pb(d){return 31>=d||127<=d&&d<Bb||d>=Xa&&d<Xa+Bb}function Cb(d,a){for(var b=a.charsToGlyphs(d),c="",e=0,f=b.length;e<f;e++){var g=b[e];if(g){g=g.unicode;g in Qb&&(g=Qb[g]);var h=g.length,l;if(!(l=1>=h)){l=g.charCodeAt(0);var p=rb[13];l>=p.begin&&l<p.end?l=!0:(p=rb[11],l=l>=p.begin&&l<p.end?!0:!1);l=!l}if(!l){l="";for(h-=1;0<=h;h--)l+=g[h];g=l}c+=g}}return c}function bd(d,a,b){var c=new Image;c.onload=function(){b.resolve(d,c)};c.src="data:image/jpeg;base64,"+window.btoa(a)}function jb(d,
-a){this.name=d;this.comObj=a;this.callbackIndex=1;var b=this.callbacks={},c=this.actionHandler={};c.console_log=[function(a){Ia.apply(null,a)}];c.console_error="console"in ma?[function(a){ma.console.error.apply(null,a)}]:[function(a){Ia.apply(null,a)}];c._warn=[function(a){Y(a)}];a.onmessage=function(e){var f=e.data;if(f.isReply)if(e=f.callbackId,f.callbackId in b){var g=b[e];delete b[e];g(f.data)}else w("Cannot resolve callback "+e);else f.action in c?(e=c[f.action],f.callbackId?(g=new E,g.then(function(c){a.postMessage({isReply:!0,
-callbackId:f.callbackId,data:c})}),e[0].call(e[1],f.data,g)):e[0].call(e[1],f.data)):w("Unkown action from worker: "+f.action)}}var Rb=function(){function d(a,b){this.url=a;b=b||{};this.httpHeaders=b.httpHeaders||{};this.getXhr=b.getXhr||function(){return new XMLHttpRequest};this.currXhrId=0;this.pendingRequests={};this.loadedRequests={}}d.prototype={requestRange:function(a,b,c){a={begin:a,end:b};for(var e in c)a[e]=c[e];return this.request(a)},requestFull:function(a){return this.request(a)},request:function(a){var b=
-this.getXhr(),c=this.currXhrId++,e=this.pendingRequests[c]={xhr:b};b.open("GET",this.url);for(var f in this.httpHeaders){var g=this.httpHeaders[f];"undefined"!==typeof g&&b.setRequestHeader(f,g)}"begin"in a&&"end"in a?(b.setRequestHeader("Range","bytes="+(a.begin+"-"+(a.end-1))),e.expectedStatus=206):e.expectedStatus=200;b.mozResponseType=b.responseType="arraybuffer";a.onProgress&&(b.onprogress=a.onProgress);a.onError&&(b.onerror=function(c){a.onError(b.status)});b.onreadystatechange=this.onStateChange.bind(this,
-c);e.onHeadersReceived=a.onHeadersReceived;e.onDone=a.onDone;e.onError=a.onError;b.send(null);return c},onStateChange:function(a,b){var c=this.pendingRequests[a];if(c){var e=c.xhr;2<=e.readyState&&c.onHeadersReceived&&(c.onHeadersReceived(),delete c.onHeadersReceived);if(4===e.readyState&&a in this.pendingRequests)if(delete this.pendingRequests[a],0===e.status){if(c.onError)c.onError(e.status)}else if(!(200===e.status&&206===c.expectedStatus)&&e.status!==c.expectedStatus){if(c.onError)c.onError(e.status)}else{this.loadedRequests[a]=
-!0;var f;f=e.mozResponseArrayBuffer||e.mozResponse||e.responseArrayBuffer||e.response;if("string"===typeof f){for(var g=f.length,h=new Uint8Array(g),l=0;l<g;l++)h[l]=f.charCodeAt(l)&255;f=h}if(206===e.status)e=e.getResponseHeader("Content-Range"),e=/bytes (\d+)-(\d+)\/(\d+)/.exec(e),e=parseInt(e[1],10),c.onDone({begin:e,chunk:f});else c.onDone({begin:0,chunk:f})}}},hasPendingRequests:function(){for(var a in this.pendingRequests)return!0;return!1},getRequestXhr:function(a){return this.pendingRequests[a].xhr},
-isPendingRequest:function(a){return a in this.pendingRequests},isLoadedRequest:function(a){return a in this.loadedRequests},abortAllRequests:function(){for(var a in this.pendingRequests)this.abortRequest(a|0)},abortRequest:function(a){var b=this.pendingRequests[a].xhr;delete this.pendingRequests[a];b.abort()}};return d}(),cd=function(){function d(a,b){this.bytes=new Uint8Array(a);this.pos=this.start=0;this.end=a;this.chunkSize=b;this.loadedChunks=[];this.numChunksLoaded=0;this.numChunks=Math.ceil(a/
-b)}d.prototype={getMissingChunks:function(){for(var a=[],b=0,c=this.numChunks;b<c;++b)b in this.loadedChunks||a.push(b);return a},allChunksLoaded:function(){return this.numChunksLoaded===this.numChunks},onReceiveData:function(a,b){var c=a+b.byteLength;0===a%this.chunkSize||w("Bad begin offset: "+a);var e=this.bytes.length;0===c%this.chunkSize||c===e||w("Bad end offset: "+c);this.bytes.set(new Uint8Array(b),a);e=this.chunkSize;c=Math.floor((c-1)/e)+1;for(b=Math.floor(a/e);b<c;++b)b in this.loadedChunks||
-(this.loadedChunks[b]=!0,++this.numChunksLoaded)},ensureRange:function(a,b){if(!(a>=b))for(var c=this.chunkSize,e=Math.floor((b-1)/c)+1,c=Math.floor(a/c);c<e;++c)if(!(c in this.loadedChunks))throw new Na(a,b);},nextEmptyChunk:function(a){for(var b=a,c=this.numChunks;b<c;++b)if(!(b in this.loadedChunks))return b;for(b=0;b<a;++b)if(!(b in this.loadedChunks))return b;return null},hasChunk:function(a){return a in this.loadedChunks},get length(){return this.end-this.start},getByte:function(){var a=this.pos;
-if(a>=this.end)return null;this.ensureRange(a,a+1);return this.bytes[this.pos++]},getBytes:function(a){var b=this.bytes,c=this.pos,e=this.end;if(!a)return this.ensureRange(c,e),b.subarray(c,e);a=c+a;a>e&&(a=e);this.ensureRange(c,a);this.pos=a;return b.subarray(c,a)},getByteRange:function(a,b){this.ensureRange(a,b);return this.bytes.subarray(a,b)},lookChar:function(){var a=this.pos;if(a>=this.end)return null;this.ensureRange(a,a+1);return String.fromCharCode(this.bytes[a])},getChar:function(){var a=
-this.pos;if(a>=this.end)return null;this.ensureRange(a,a+1);return String.fromCharCode(this.bytes[this.pos++])},skip:function(a){a||(a=1);this.pos+=a},reset:function(){this.pos=this.start},moveStart:function(){this.start=this.pos},makeSubStream:function(a,b,c){function e(){}e.prototype=Object.create(this);var f=new e;f.pos=f.start=a;f.end=a+b||this.end;f.dict=c;return f},isStream:!0};return d}(),dd=function(){function d(a,b,c,e){this.stream=new cd(a,b);this.length=a;this.chunkSize=b;this.url=c;this.disableAutoFetch=
-e.disableAutoFetch;var f=this.msgHandler=e.msgHandler;e.chunkedViewerLoading?(f.on("OnDataRange",this.onReceiveData.bind(this)),this.sendRequest=function(a,c){f.send("RequestDataRange",{begin:a,end:c})}):(this.networkManager=new Rb(this.url,{getXhr:function(){return new XMLHttpRequest},httpHeaders:e.httpHeaders}),this.sendRequest=function(a,c){this.networkManager.requestRange(a,c,{onDone:this.onReceiveData.bind(this)})});this.currRequestId=0;this.chunksNeededByRequest={};this.requestsByChunk={};this.callbacksByRequest=
-{};this.loadedStream=new E}d.prototype={onLoadedStream:function(){return this.loadedStream},requestAllChunks:function(){for(var a=this.stream.getMissingChunks(),b=[],c=0,e=a.length;c<e;++c){var f=a[c];f in this.requestsByChunk||(this.requestsByChunk[f]=[],b.push(f))}a=this.groupChunks(b);c=0;for(e=a.length;c<e;++c)f=a[c],b=f.beginChunk*this.chunkSize,f=Math.min(f.endChunk*this.chunkSize,this.length),this.sendRequest(b,f);return this.loadedStream},getStream:function(){return this.stream},requestRange:function(a,
-b,c){b=Math.min(b,this.length);var e=this.getBeginChunk(a),f=this.getEndChunk(b);a=this.currRequestId++;for(this.chunksNeededByRequest[a]=b={};e<f;++e)this.stream.hasChunk(e)||(b[e]=!0);if(zb(b))c();else{this.callbacksByRequest[a]=c;c=[];for(e in b)e|=0,e in this.requestsByChunk||(this.requestsByChunk[e]=[],c.push(e)),this.requestsByChunk[e].push(a);if(c.length){c=this.groupChunks(c);for(e=0;e<c.length;++e)b=c[e],a=b.beginChunk*this.chunkSize,b=Math.min(b.endChunk*this.chunkSize,this.length),this.sendRequest(a,
-b)}}},groupChunks:function(a){for(var b=[],c,e,f=0;f<a.length;++f){var g=a[f];c||(c=g);e&&e+1!==g&&(b.push({beginChunk:c,endChunk:e+1}),c=g);f+1===a.length&&b.push({beginChunk:c,endChunk:g+1});e=g}return b},onReceiveData:function(a){var b=a.chunk;a=a.begin;var c=a+b.byteLength,e=this.getBeginChunk(a),c=this.getEndChunk(c);this.stream.onReceiveData(a,b);this.stream.allChunksLoaded()&&this.loadedStream.resolve(this.stream);a=[];for(b=e;b<c;++b){var f=this.requestsByChunk[b]||[];delete this.requestsByChunk[b];
-for(e=0;e<f.length;++e){var g=f[e],h=this.chunksNeededByRequest[g];b in h&&delete h[b];zb(h)&&a.push(g)}}if(!this.disableAutoFetch&&zb(this.requestsByChunk)){var l;1===this.stream.numChunksLoaded?(b=this.stream.numChunks-1,this.stream.hasChunk(b)||(l=b)):l=this.stream.nextEmptyChunk(c);N(l)&&(l*=this.chunkSize,this.requestRange(l,l+this.chunkSize,function(){}))}for(e=0;e<a.length;++e)g=a[e],l=this.callbacksByRequest[g],delete this.callbacksByRequest[g],l();this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*
-this.chunkSize,total:this.length})},getBeginChunk:function(a){return Math.floor(a/this.chunkSize)},getEndChunk:function(a){return 0===a%this.chunkSize?a/this.chunkSize:Math.floor((a-1)/this.chunkSize)+1}};return d}(),dc=function(){function d(){throw Error("Cannot initialize BaseManagerManager");}d.prototype={onLoadedStream:function(){throw new sb;},ensureModel:function(a,b){return this.ensure(this.pdfModel,a,b)},ensureXRef:function(a,b){return this.ensure(this.pdfModel.xref,a,b)},ensureCatalog:function(a,
-b){return this.ensure(this.pdfModel.catalog,a,b)},getPage:function(a){return this.pdfModel.getPage(a)},ensure:function(a,b,c){return new sb},requestRange:function(a,b){return new sb},requestLoadedStream:function(){return new sb}};return d}(),uc=function(){function d(a,b){var c=new wa(a);this.pdfModel=new Sb(this,c,b);this.loadedStream=new E;this.loadedStream.resolve(c)}d.prototype=Object.create(dc.prototype);d.prototype.constructor=d;d.prototype.ensure=function(a,b,c){var e=new E;try{var f=a[b],g;
-g="function"===typeof f?f.apply(a,c):f;e.resolve(g)}catch(h){console.log(h.stack),e.reject(h)}return e};d.prototype.requestRange=function(a,b){var c=new E;c.resolve();return c};d.prototype.requestLoadedStream=function(){};d.prototype.onLoadedStream=function(){return this.loadedStream};return d}(),vc=function(){function d(b,c){this.msgHandler=c;this.streamManager=new dd(b.length,a,b.url,{msgHandler:c,httpHeaders:b.httpHeaders,chunkedViewerLoading:b.chunkedViewerLoading,disableAutoFetch:b.disableAutoFetch});
-this.pdfModel=new Sb(this,this.streamManager.getStream(),b.password)}var a=65536;d.prototype=Object.create(dc.prototype);d.prototype.constructor=d;d.prototype.ensure=function(a,c,e){var f=new E;this.ensureHelper(f,a,c,e);return f};d.prototype.ensureHelper=function(a,c,e,f){try{var g,h=c[e];g="function"===typeof h?h.apply(c,f):h;a.resolve(g)}catch(l){l instanceof Na?this.streamManager.requestRange(l.begin,l.end,function(){this.ensureHelper(a,c,e,f)}.bind(this)):(console.log(l.stack),a.reject(l))}};
-d.prototype.requestRange=function(a,c){var e=new E;this.streamManager.requestRange(a,c,function(){e.resolve()});return e};d.prototype.requestLoadedStream=function(){this.streamManager.requestAllChunks()};d.prototype.onLoadedStream=function(){return this.streamManager.onLoadedStream()};return d}(),ma="undefined"===typeof window?this:window,wc="undefined"==typeof window,Ib=1,Zc=5,bc=Ib;ma.PDFJS||(ma.PDFJS={});ma.PDFJS.pdfBug=!1;var fd=function(){function d(a){var c=a.get("AP");if(W(c)){var e,c=c.get("N");
-W(c)?(a=a.get("AS"))&&c.has(a.name)&&(e=c.get(a.name)):e=c;return e}}function a(a,c,e,f,g){this.pdfManager=a;this.pageIndex=e;this.pageDict=f;this.xref=c;this.ref=g;this.idCounters={font:0,obj:0}}a.prototype={getPageProp:function(a){return this.pageDict.get(a)},inheritPageProp:function(a){for(var c=this.pageDict,e=c.get(a);void 0===e;){c=c.get("Parent");if(!c)break;e=c.get(a)}return e},get content(){return this.getPageProp("Contents")},get resources(){return fa(this,"resources",this.inheritPageProp("Resources"))},
-get mediaBox(){var a=this.inheritPageProp("MediaBox");if(!U(a)||4!==a.length)a=[0,0,612,792];return fa(this,"mediaBox",a)},get view(){var a=this.mediaBox,c=this.inheritPageProp("CropBox");if(!U(c)||4!==c.length)return fa(this,"view",a);c=M.intersect(c,a);return!c?fa(this,"view",a):fa(this,"view",c)},get annotations(){return fa(this,"annotations",this.inheritPageProp("Annots"))},get rotate(){var a=this.inheritPageProp("Rotate")||0;0!==a%90?a=0:360<=a?a%=360:0>a&&(a=(a%360+360)%360);return fa(this,
-"rotate",a)},getContentStream:function(){var a=this.content;if(U(a)){var c=this.xref,e,f=a.length,g=[];for(e=0;e<f;++e)g.push(c.fetchIfRef(a[e]));a=new ed(g)}else a=ra(a)?a:new xc;return a},getOperatorList:function(a){var c=new E,e=new E,f=new E,g=this.pdfManager,h=g.ensure(this,"getContentStream",[]),l=g.ensure(this,"resources"),p=new Tb(g,this.xref,a,this.pageIndex,"p"+this.pageIndex+"_",this.idCounters);E.all([h,l]).then(function(a){g.ensure(p,"getOperatorList",[a[0],a[1]]).then(function(a){a.then(function(a){e.resolve(a)})})});
-g.ensure(this,"getAnnotationsForDraw",[]).then(function(a){g.ensure(p,"getAnnotationsOperatorList",[a]).then(function(a){a.then(function(a){f.resolve(a)})})});E.all([e,f]).then(function(a){var b=a[0],e=b.queue;a=a[1];var h=a.queue;M.concatenateToArray(e.fnArray,h.fnArray);M.concatenateToArray(e.argsArray,h.argsArray);Tb.optimizeQueue(e);M.extendObj(b.dependencies,a.dependencies);c.resolve(b)});return c},extractTextContent:function(){var a={on:function(){},send:function(){}},c=this,e=new E,f=this.pdfManager,
-g=f.ensure(this,"getContentStream",[]),h=new E;f.ensure(this,"resources").then(function(a){f.ensure(c.xref,"fetchIfRef",[a]).then(function(a){h.resolve(a)})});E.all([g,h]).then(function(h){var g=h[0];h=h[1];(new Tb(f,c.xref,a,c.pageIndex,"p"+c.pageIndex+"_",c.idCounters)).getTextContent(g,h).then(function(a){e.resolve({bidiTexts:a})})});return e},getLinks:function(){var a=[],c=this.getAnnotations(),e,f=c.length;for(e=0;e<f;++e)"Link"==c[e].type&&a.push(c[e]);return a},getAnnotations:function(){for(var a=
-this.getAnnotationsBase(),c=[],e=0,f=a.length;e<f;++e)c.push(a[e].item);return c},getAnnotationsForDraw:function(){for(var a=this.getAnnotationsBase(),c=[],e=0,f=a.length;e<f;++e){var g=a[e].item,h=a[e].dict;g.annotationFlags=h.get("F");var l=d(h);l&&"Text"!==g.type&&(g.appearance=l,l=l.dict,g.resources=l.get("Resources"),g.bbox=l.get("BBox")||[0,0,1,1],g.matrix=l.get("Matrix")||[1,0,0,1,0,0]);l=h.get("BS");if(W(l)&&!g.appearance){var p=l.has("W")?l.get("W"):1;0!==p&&(g.border={width:p,type:l.get("S")||
-"S",rgb:h.get("C")||[0,0,1]})}c.push(g)}return c},getAnnotationsBase:function(){function a(c,b){for(var e=c;e&&!e.has(b);)e=e.get("Parent");return!e?null:e.get(b)}function c(a){if(!a)return!1;var c=a.indexOf(":");if(0>c)return!1;switch(a.substr(0,c)){case "http":case "https":case "ftp":case "mailto":return!0;default:return!1}}var e=this.xref,f=this.annotations||[],g,h=f.length,l=[];for(g=0;g<h;++g){var p=f[g],k=e.fetchIfRef(p);if(W(k)){var m=k.get("Subtype");if(V(m)){var r={};r.type=m.name;var n=
-k.get("Rect");r.rect=M.normalizeRect(n);n=!0;switch(m.name){case "Link":if(m=k.get("A"))switch(m.get("S").name){case "URI":p=m.get("URI");c(p)||(p="");r.url=p;break;case "GoTo":r.dest=m.get("D");break;case "GoToR":p=m.get("F");W(p)&&(p=p.get("F")||"");c(p)||(p="");r.url=p;r.dest=m.get("D");break;default:oa("unrecognized link type: "+m.get("S").name)}else k.has("Dest")&&(m=k.get("Dest"),r.dest=V(m)?m.name:m);break;case "Widget":m=a(k,"FT");if(!V(m))break;if("Sig"===m.name){n=!1;break}r.fieldType=m.name;
-for(var m=[],q=k;q;){var t=q.get("Parent"),s=q.getRaw("Parent");if(q=q.get("T"))m.unshift(Ja(q));else{var q=t.get("Kids"),u,v;u=0;for(v=q.length;u<v;u++){var A=q[u];if(A.num==p.num&&A.gen==p.gen)break}m.unshift("`"+u)}q=t;p=s}r.fullName=m.join(".");m=Ja(k.get("TU")||"");r.alternativeText=m;m=a(k,"DA")||"";if(m=/([\d\.]+)\sTf/.exec(m))r.fontSize=parseFloat(m[1]);r.textAlignment=a(k,"Q");r.flags=a(k,"Ff")||0;break;case "Text":m=k.get("Contents");p=k.get("T");r.content=Ja(m||"");r.title=Ja(p||"");r.name=
-!k.has("Name")?"Note":k.get("Name").name;break;default:d(k)||oa("unimplemented annotation type: "+m.name)}n&&l.push({item:r,dict:k})}}}return l}};return a}(),Sb=function(){function d(c,b,g){ra(b)?a.call(this,c,b,g):Jb(b)?a.call(this,c,new wa(b),g):w("PDFDocument: Unknown argument type")}function a(a,c,b){la(0<c.length,"stream must have data");this.pdfManager=a;this.stream=c;this.xref=new gd(this.stream,b)}function b(a,c,b,h){var l=a.pos,p=a.end,k="";l+b>p&&(b=p-l);for(p=0;p<b;++p)k+=a.getChar();a.pos=
-l;c=h?k.lastIndexOf(c):k.indexOf(c);if(-1==c)return!1;a.pos+=c;return!0}var c={get entries(){return fa(this,"entries",{Title:za,Author:za,Subject:za,Keywords:za,Creator:za,Producer:za,CreationDate:za,ModDate:za,Trapped:V})}};d.prototype={parse:function(a){this.setup(a);this.acroForm=this.catalog.catDict.get("AcroForm")},get linearization(){var a=this.stream.length,c=!1;if(a)try{c=new hd(this.stream),c.length!=a&&(c=!1)}catch(b){if(b instanceof Na)throw b;Y("The linearization data is not available or unreadable pdf data is found");
-c=!1}return fa(this,"linearization",c)},get startXRef(){var a=this.stream,c=0;if(this.linearization)a.reset(),b(a,"endobj",1024)&&(c=a.pos+6);else{for(var g=!1,h=a.end;!g&&0<h;)h-=1015,0>h&&(h=0),a.pos=h,g=b(a,"startxref",1024,!0);if(g){a.skip(9);do c=a.getChar();while(Ca.isSpace(c));for(g="";9>=c-0;)g+=c,c=a.getChar();c=parseInt(g,10);isNaN(c)&&(c=0)}}return fa(this,"startXRef",c)},get mainXRefEntriesOffset(){var a=0,c=this.linearization;c&&(a=c.mainXRefEntriesOffset);return fa(this,"mainXRefEntriesOffset",
-a)},checkHeader:function(){var a=this.stream;a.reset();if(b(a,"%PDF-",1024)){a.moveStart();for(var c="",g;" "<(g=a.getChar())&&!(12<=c.length);)c+=g;this.pdfFormatVersion=c.substring(5)}},parseStartXRef:function(){this.xref.setStartXRef(this.startXRef)},setup:function(a){this.xref.parse(a);this.catalog=new id(this.pdfManager,this.xref)},get numPages(){var a=this.linearization;return fa(this,"numPages",a?a.numPages:this.catalog.numPages)},get documentInfo(){var a={PDFFormatVersion:this.pdfFormatVersion,
-IsAcroFormPresent:!!this.acroForm};if(this.xref.trailer.has("Info")){var b=this.xref.trailer.get("Info"),g=c.entries,h;for(h in g)if(b.has(h)){var l=b.get(h);g[h](l)?a[h]="string"!==typeof l?l:Ja(l):da('Bad value in document info for "'+h+'"')}}return fa(this,"documentInfo",a)},get fingerprint(){var a=this.xref,c;if(a.trailer.has("ID"))c="",a.trailer.get("ID")[0].split("").forEach(function(a){c+=Number(a.charCodeAt(0)).toString(16)});else{a=this.stream.bytes.subarray(0,100);a=Ya(a,0,a.length);c="";
-for(var b=0,h=a.length;b<h;b++)c+=Number(a[b]).toString(16)}return fa(this,"fingerprint",c)},traversePages:function(){this.catalog.traversePages()},getPage:function(a){return this.catalog.getPage(a)}};return d}(),Ia=function(){return"console"in ma&&"log"in ma.console?ma.console.log.bind(ma.console):function(){}}();PDFJS.LogManager=function(){var d=[];return{addLogger:function(a){d.push(a)},notify:function(a,b){for(var c=0,e=d.length;c<e;c++){var f=d[c];if(f[a])f[a](b)}}}}();var Ub=function(){function d(a,
-b){this.name="PasswordException";this.message=a;this.code=b}d.prototype=Error();return d.constructor=d}(),jd=function(){function d(a,b){this.name="UnknownErrorException";this.message=a;this.details=b}d.prototype=Error();return d.constructor=d}(),yc=function(){function d(a){this.name="InvalidPDFException";this.message=a}d.prototype=Error();return d.constructor=d}(),zc=function(){function d(a){this.name="MissingPDFException";this.message=a}d.prototype=Error();return d.constructor=d}(),sb=function(){function d(a){this.message=
-a}d.prototype=Error();d.prototype.name="NotImplementedException";return d.constructor=d}(),Na=function(){function d(a,b){this.begin=a;this.end=b;this.message="Missing data [begin, end)"}d.prototype=Error();d.prototype.name="MissingDataException";return d.constructor=d}(),Ac=function(){function d(a){this.message=a}d.prototype=Error();d.prototype.name="XRefParseException";return d.constructor=d}(),Vb=[1,0,0,1,0,0],M=PDFJS.Util=function(){function d(){}d.makeCssRgb=function(a){return"rgb("+a[0]+","+
-a[1]+","+a[2]+")"};d.makeCssCmyk=function(a){var b=new eb;d.makeCssCmyk=function(a){a=b.getRgb(a,0);return d.makeCssRgb(a)};return d.makeCssCmyk(a)};d.transform=function(a,b){return[a[0]*b[0]+a[2]*b[1],a[1]*b[0]+a[3]*b[1],a[0]*b[2]+a[2]*b[3],a[1]*b[2]+a[3]*b[3],a[0]*b[4]+a[2]*b[5]+a[4],a[1]*b[4]+a[3]*b[5]+a[5]]};d.applyTransform=function(a,b){return[a[0]*b[0]+a[1]*b[2]+b[4],a[0]*b[1]+a[1]*b[3]+b[5]]};d.applyInverseTransform=function(a,b){var c=b[0]*b[3]-b[1]*b[2];return[(a[0]*b[3]-a[1]*b[2]+b[2]*
-b[5]-b[4]*b[3])/c,(-a[0]*b[1]+a[1]*b[0]+b[4]*b[1]-b[5]*b[0])/c]};d.getAxialAlignedBoundingBox=function(a,b){var c=d.applyTransform(a,b),e=d.applyTransform(a.slice(2,4),b),f=d.applyTransform([a[0],a[3]],b),g=d.applyTransform([a[2],a[1]],b);return[Math.min(c[0],e[0],f[0],g[0]),Math.min(c[1],e[1],f[1],g[1]),Math.max(c[0],e[0],f[0],g[0]),Math.max(c[1],e[1],f[1],g[1])]};d.inverseTransform=function(a){var b=a[0]*a[3]-a[1]*a[2];return[a[3]/b,-a[1]/b,-a[2]/b,a[0]/b,(a[2]*a[5]-a[4]*a[3])/b,(a[4]*a[1]-a[5]*
-a[0])/b]};d.apply3dTransform=function(a,b){return[a[0]*b[0]+a[1]*b[1]+a[2]*b[2],a[3]*b[0]+a[4]*b[1]+a[5]*b[2],a[6]*b[0]+a[7]*b[1]+a[8]*b[2]]};d.singularValueDecompose2dScale=function(a){var b=[a[0],a[2],a[1],a[3]],c=a[0]*b[0]+a[1]*b[2],e=a[2]*b[1]+a[3]*b[3],f=(c+e)/2;a=Math.sqrt((c+e)*(c+e)-4*(c*e-(a[2]*b[0]+a[3]*b[2])*(a[0]*b[1]+a[1]*b[3])))/2;b=f-a||1;return[Math.sqrt(f+a||1),Math.sqrt(b)]};d.normalizeRect=function(a){var b=a.slice(0);a[0]>a[2]&&(b[0]=a[2],b[2]=a[0]);a[1]>a[3]&&(b[1]=a[3],b[3]=
-a[1]);return b};d.intersect=function(a,b){function c(a,c){return a-c}var e=[a[0],a[2],b[0],b[2]].sort(c),f=[a[1],a[3],b[1],b[3]].sort(c),g=[];a=d.normalizeRect(a);b=d.normalizeRect(b);if(e[0]===a[0]&&e[1]===b[0]||e[0]===b[0]&&e[1]===a[0])g[0]=e[1],g[2]=e[2];else return!1;if(f[0]===a[1]&&f[1]===b[1]||f[0]===b[1]&&f[1]===a[1])g[1]=f[1],g[3]=f[2];else return!1;return g};d.sign=function(a){return 0>a?-1:1};d.concatenateToArray=function(a,b){Array.prototype.push.apply(a,b)};d.prependToArray=function(a,
-b){Array.prototype.unshift.apply(a,b)};d.extendObj=function(a,b){for(var c in b)a[c]=b[c]};return d}();PDFJS.PageViewport=function(){function d(a,b,c,e,f){this.viewBox=a;this.scale=b;this.rotation=c;this.offsetX=e;this.offsetY=f;var g=(a[2]+a[0])/2,h=(a[3]+a[1])/2,l,p,k;switch(c%360){case -180:case 180:c=-1;p=l=0;k=1;break;case -270:case 90:c=0;p=l=1;k=0;break;case -90:case 270:c=0;p=l=-1;k=0;break;default:c=1,p=l=0,k=-1}var d;0===c?(e=Math.abs(h-a[1])*b+e,f=Math.abs(g-a[0])*b+f,d=Math.abs(a[3]-a[1])*
-b,a=Math.abs(a[2]-a[0])*b):(e=Math.abs(g-a[0])*b+e,f=Math.abs(h-a[1])*b+f,d=Math.abs(a[2]-a[0])*b,a=Math.abs(a[3]-a[1])*b);this.transform=[c*b,l*b,p*b,k*b,e-c*b*g-p*b*h,f-l*b*g-k*b*h];this.width=d;this.height=a;this.fontScale=b}d.prototype={clone:function(a){a=a||{};var b="scale"in a?a.scale:this.scale;a="rotation"in a?a.rotation:this.rotation;return new d(this.viewBox.slice(),b,a,this.offsetX,this.offsetY)},convertToViewportPoint:function(a,b){return M.applyTransform([a,b],this.transform)},convertToViewportRectangle:function(a){var b=
-M.applyTransform([a[0],a[1]],this.transform);a=M.applyTransform([a[2],a[3]],this.transform);return[b[0],b[1],a[0],a[1]]},convertToPdfPoint:function(a,b){return M.applyInverseTransform([a,b],this.transform)}};return d}();var ad=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,
-8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364],E=PDFJS.Promise=function(){function d(b,c){this.name=b;this.isRejected=!1;this.exception=this.error=null;null!==c&&void 0!==c?(this.isResolved=!0,this._data=c,this.hasData=!0):(this.isResolved=!1,this._data=a);this.callbacks=[];this.errbacks=[];this.progressbacks=[]}var a={};d.all=function(a){var c=new d,e=a.length,f=[];if(0===e)return c.resolve(f),c;
-for(var g=0,h=a.length;g<h;++g)a[g].then(function(a){return function(b){f[a]=b;e--;0===e&&c.resolve(f)}}(g));return c};d.prototype={hasData:!1,set data(b){if(void 0!==b&&(this._data!==a&&w("Promise "+this.name+": Cannot set the data of a promise twice"),this._data=b,this.hasData=!0,this.onDataCallback))this.onDataCallback(b)},get data(){this._data===a&&w("Promise "+this.name+": Cannot get data that isn't set");return this._data},onData:function(b){this._data!==a?b(this._data):this.onDataCallback=
-b},resolve:function(a){this.isResolved&&w("A Promise can be resolved only once "+this.name);this.isRejected&&w("The Promise was already rejected "+this.name);this.isResolved=!0;this.data="undefined"!==typeof a?a:null;for(var c=this.callbacks,e=0,f=c.length;e<f;e++)c[e].call(null,a)},progress:function(a){for(var c=this.progressbacks,e=0,f=c.length;e<f;e++)c[e].call(null,a)},reject:function(a,c){this.isRejected&&w("A Promise can be rejected only once "+this.name);this.isResolved&&w("The Promise was already resolved "+
-this.name);this.isRejected=!0;this.error=a||null;this.exception=c||null;for(var e=this.errbacks,f=0,g=e.length;f<g;f++)e[f].call(null,a,c)},then:function(a,c,e){a||f("Requiring callback"+this.name);if(this.isResolved)a.call(null,this.data);else if(this.isRejected&&c){var f=this.error;c.call(null,f,this.exception)}else this.callbacks.push(a),c&&this.errbacks.push(c);e&&this.progressbacks.push(e)}};return d}(),kd=function(){function d(){this.started={};this.times=[];this.enabled=!0}d.prototype={time:function(a){if(this.enabled){if(a in
-this.started)throw"Timer is already running for "+a;this.started[a]=Date.now()}},timeEnd:function(a){if(this.enabled){if(!(a in this.started))throw"Timer has not been started for "+a;this.times.push({name:a,start:this.started[a],end:Date.now()});delete this.started[a]}},toString:function(){for(var a=this.times,b="",c=0,e=0,f=a.length;e<f;++e){var g=a[e].name;g.length>c&&(c=g.length)}e=0;for(f=a.length;e<f;++e){for(var h=a[e],g=h.end-h.start,h=h.name;h.length<c;)h+=" ";b+=h+" "+g+"ms\n"}return b}};
-return d}();PDFJS.createBlob=function(d,a){if("function"===typeof Blob)return new Blob([d],{type:a});var b=new MozBlobBuilder;b.append(d);return b.getBlob(a)};PDFJS.getDocument=function(d,a){var b,c,e;"string"===typeof d?d={url:d}:Jb(d)?d={data:d}:"object"!==typeof d&&w("Invalid parameter in getDocument, need either Uint8Array, string or a parameter object");!d.url&&!d.data&&w("Invalid parameter array, need either .data or .url");var f={};for(b in d)f[b]="url"===b&&"undefined"!==typeof window?$c(window.location.href,
-d[b]):d[b];b=new PDFJS.Promise;c=new PDFJS.Promise;e=new ld(b,c,a);b.then(function(){e.fetchDocument(f)});return c};var md=function(){function d(a,b){this.pdfInfo=a;this.transport=b}d.prototype={get numPages(){return this.pdfInfo.numPages},get fingerprint(){return this.pdfInfo.fingerprint},get embeddedFontsUsed(){return this.transport.embeddedFontsUsed},getPage:function(a){return this.transport.getPage(a)},getDestinations:function(){return this.transport.getDestinations()},getJavaScript:function(){var a=
-new PDFJS.Promise;a.resolve(this.pdfInfo.javaScript);return a},getOutline:function(){var a=new PDFJS.Promise;a.resolve(this.pdfInfo.outline);return a},getMetadata:function(){var a=new PDFJS.Promise,b=this.pdfInfo.metadata;a.resolve({info:this.pdfInfo.info,metadata:b?new PDFJS.Metadata(b):null});return a},isEncrypted:function(){var a=new PDFJS.Promise;a.resolve(this.pdfInfo.encrypted);return a},getData:function(){var a=new PDFJS.Promise;this.transport.getData(a);return a},dataLoaded:function(){return this.transport.dataLoaded()},
-destroy:function(){this.transport.destroy()}};return d}(),nd=function(){function d(a,b){this.pageInfo=a;this.transport=b;this.stats=new kd;this.stats.enabled=!!ma.PDFJS.enableStats;this.commonObjs=b.commonObjs;this.objs=new Bc;this.cleanupAfterRender=this.renderInProgress=!1}d.prototype={get pageNumber(){return this.pageInfo.pageIndex+1},get rotate(){return this.pageInfo.rotate},get ref(){return this.pageInfo.ref},get view(){return this.pageInfo.view},getViewport:function(a,b){2>arguments.length&&
-(b=this.rotate);return new PDFJS.PageViewport(this.view,a,b,0,0)},getAnnotations:function(){if(this.annotationsPromise)return this.annotationsPromise;var a=new PDFJS.Promise;this.annotationsPromise=a;this.transport.getAnnotations(this.pageInfo.pageIndex);return a},render:function(a){function b(a){e.renderInProgress=!1;if(e.destroyed||e.cleanupAfterRender)delete e.displayReadyPromise,delete e.operatorList,e.objs.clear();a?c.reject(a):c.resolve()}this.renderInProgress=!0;var c=new E;this.stats.time("Overall");
-this.displayReadyPromise||(this.displayReadyPromise=new E,this.destroyed=!1,this.stats.time("Page Request"),this.transport.messageHandler.send("RenderPageRequest",{pageIndex:this.pageNumber-1}));var e=this,f=a.continueCallback;this.displayReadyPromise.then(function(){if(e.destroyed)b();else{var c=new Cc(a.canvasContext,this.commonObjs,this.objs,a.textLayer,a.imageLayer);try{this.display(c,a.viewport,b,f)}catch(h){b(h)}}}.bind(this),function(a){b(a)});return c},startRenderingFromOperatorList:function(a,
-b){var c=this;this.operatorList=a;var e=function(){setTimeout(function(){c.displayReadyPromise.resolve()})};this.ensureFonts(b,function(){e()})},ensureFonts:function(a,b){this.stats.time("Font Loading");for(var c=[],e=0,f=a.length;e<f;e++){var g=this.commonObjs.getData(a[e]);g.error?Y("Error during font loading: "+g.error):(g.coded||(this.transport.embeddedFontsUsed=!0),c.push(g))}kb.bind(c,function(a){this.stats.timeEnd("Font Loading");b.call(this)}.bind(this))},display:function(a,b,c,e){function f(){l=
-a.executeOperatorList(h,l,d,k);l==p&&(a.endDrawing(),g.timeEnd("Rendering"),g.timeEnd("Overall"),c&&c())}var g=this.stats;g.time("Rendering");var h=this.operatorList;a.beginDrawing(b,h.transparency);var l=0,p=h.fnArray.length,k=null;PDFJS.pdfBug&&("StepperManager"in ma&&ma.StepperManager.enabled)&&(k=ma.StepperManager.create(this.pageNumber-1),k.init(h),k.nextBreakPoint=k.getNextBreakPoint());var d;d=e?function(){e(f)}:f;d()},getTextContent:function(){var a=new PDFJS.Promise;this.transport.messageHandler.send("GetTextContent",
-{pageIndex:this.pageNumber-1},function(b){a.resolve(b)});return a},getOperationList:function(){var a=new PDFJS.Promise;a.resolve({dependencyFontsID:null,operatorList:null});return a},destroy:function(){this.destroyed=!0;this.renderInProgress||(delete this.operatorList,delete this.displayReadyPromise,this.objs.clear())}};return d}(),ld=function(){function d(a,b,c){this.pdfDataRangeTransport=c;this.workerReadyPromise=b;this.commonObjs=new Bc;this.pageCache=[];this.pagePromises=[];this.embeddedFontsUsed=
-!1;if(!ma.PDFJS.disableWorker&&"undefined"!==typeof Worker){b=PDFJS.workerSrc;"undefined"===typeof b&&w("No PDFJS.workerSrc specified");try{var e=new Worker(b),f=new jb("main",e);this.messageHandler=f;f.on("test",function(c){c?(this.worker=e,this.setupMessageHandler(f)):(ma.PDFJS.disableWorker=!0,this.setupFakeWorker());a.resolve()}.bind(this));var g=new Uint8Array(1);f.send("test",g);return}catch(h){da("The worker has been disabled.")}}ma.PDFJS.disableWorker=!0;this.setupFakeWorker();a.resolve()}
-d.prototype={destroy:function(){this.pageCache=[];this.pagePromises=[];var a=this;this.messageHandler.send("Terminate",null,function(){a.worker&&a.worker.terminate()})},setupFakeWorker:function(){Y("Setting up fake worker.");var a={postMessage:function(c){a.onmessage({data:c})},terminate:function(){}},b=new jb("main",a);this.setupMessageHandler(b);Dc.setup(b)},setupMessageHandler:function(a){this.messageHandler=a;var b=this.pdfDataRangeTransport;b&&(b.addListener(function(c,b){a.send("OnDataRange",
-{begin:c,chunk:b})}),a.on("RequestDataRange",function(a){b.requestDataRange(a.begin,a.end)},this));a.on("GetDoc",function(a){this.pdfDocument=a=new md(a.pdfInfo,this);this.workerReadyPromise.resolve(a)},this);a.on("NeedPassword",function(a){this.workerReadyPromise.reject(a.exception.message,a.exception)},this);a.on("IncorrectPassword",function(a){this.workerReadyPromise.reject(a.exception.message,a.exception)},this);a.on("InvalidPDF",function(a){this.workerReadyPromise.reject(a.exception.name,a.exception)},
-this);a.on("MissingPDF",function(a){this.workerReadyPromise.reject(a.exception.message,a.exception)},this);a.on("UnknownError",function(a){this.workerReadyPromise.reject(a.exception.message,a.exception)},this);a.on("GetPage",function(a){a=a.pageInfo;var b=new nd(a,this);this.pageCache[a.pageIndex]=b;this.pagePromises[a.pageIndex].resolve(b)},this);a.on("GetAnnotations",function(a){this.pageCache[a.pageIndex].annotationsPromise.resolve(a.annotations)},this);a.on("RenderPage",function(a){var b=this.pageCache[a.pageIndex],
-f=a.depFonts;b.stats.timeEnd("Page Request");b.startRenderingFromOperatorList(a.operatorList,f)},this);a.on("commonobj",function(a){var b=a[0],f=a[1];if(!this.commonObjs.hasData(b))switch(f){case "Font":a=a[2];a="error"in a?new Db(a.error):new Wb(a);this.commonObjs.resolve(b,a);break;default:w("Got unknown common object type "+f)}},this);a.on("obj",function(a){var b=a[0],f=a[2],g=this.pageCache[a[1]];if(!g.objs.hasData(b))switch(f){case "JpegStream":a=a[3];bd(b,a,g.objs);break;case "Image":a=a[3];
-g.objs.resolve(b,a);"data"in a&&8E6<a.data.length&&(g.cleanupAfterRender=!0);break;default:w("Got unknown object type "+f)}},this);a.on("DocProgress",function(a){this.workerReadyPromise.progress({loaded:a.loaded,total:a.total})},this);a.on("DocError",function(a){this.workerReadyPromise.reject(a)},this);a.on("PageError",function(a){var b=this.pageCache[a.pageNum-1];b.displayReadyPromise?b.displayReadyPromise.reject(a.error):w(a.error)},this);a.on("JpegDecode",function(a,b){var f=a[0],g=a[1];3!=g&&
-1!=g&&w("Only 3 component or 1 component can be returned");var h=new Image;h.onload=function(){var a=h.width,c=h.height,f=a*c,d=4*f,f=new Uint8Array(f*g),r=Ba(a,c).getContext("2d");r.drawImage(h,0,0);r=r.getImageData(0,0,a,c).data;if(3==g)for(var n=0,q=0;n<d;n+=4,q+=3)f[q]=r[n],f[q+1]=r[n+1],f[q+2]=r[n+2];else if(1==g)for(q=n=0;n<d;n+=4,q++)f[q]=r[n];b.resolve({data:f,width:a,height:c})}.bind(this);f="data:image/jpeg;base64,"+window.btoa(f);h.src=f})},fetchDocument:function(a){a.disableAutoFetch=
-PDFJS.disableAutoFetch;a.chunkedViewerLoading=!!this.pdfDataRangeTransport;this.messageHandler.send("GetDocRequest",{source:a,disableRange:PDFJS.disableRange})},getData:function(a){this.messageHandler.send("GetData",null,function(b){a.resolve(b)})},dataLoaded:function(){var a=new PDFJS.Promise;this.messageHandler.send("DataLoaded",null,function(b){a.resolve(b)});return a},getPage:function(a,b){var c=a-1;if(c in this.pagePromises)return this.pagePromises[c];b=new PDFJS.Promise("Page "+a);this.pagePromises[c]=
-b;this.messageHandler.send("GetPageRequest",{pageIndex:c});return b},getAnnotations:function(a){this.messageHandler.send("GetAnnotationsRequest",{pageIndex:a})},getDestinations:function(){var a=new PDFJS.Promise;this.messageHandler.send("GetDestinations",null,function(b){a.resolve(b)});return a}};return d}();qb=0;var od=function(){function d(a){this.alphaIsShape=!1;this.fontSize=0;this.fontSizeScale=1;this.textMatrix=Vb;this.fontMatrix=xa;this.wordSpacing=this.charSpacing=this.lineY=this.lineX=this.y=
-this.x=this.leading=0;this.textHScale=1;this.textRenderingMode=qb;this.textRise=0;this.fillColorSpace=new Za;this.fillColorSpaceObj=null;this.strokeColorSpace=new Za;this.strokeColorObj=this.fillColorObj=this.strokeColorSpaceObj=null;this.strokeColor=this.fillColor="#000000";this.lineWidth=this.strokeAlpha=this.fillAlpha=1;this.paintFormXObjectDepth=0;this.old=a}d.prototype={clone:function(){return Object.create(this)},setCurrentPoint:function(a,b){this.x=a;this.y=b}};return d}(),Cc=function(){function d(a,
-c,b,e,f){this.ctx=a;this.current=new od;this.stateStack=[];this.xobjs=this.res=this.pendingClip=null;this.commonObjs=c;this.objs=b;this.textLayer=e;this.imageLayer=f;this.groupStack=[];a&&Lb(a)}function a(a,c,b,e,f){var g=0,d,q,t,s,u=3;for(d=0;d<b;d++)for(q=t=0;q<c;q++)t||(s=a[g++],t=128),!(s&t)===e&&(f[u]=0),u+=4,t>>=1}function b(a,c,b,e){b="createImageData"in a?a.createImageData(b,e):a.getImageData(0,0,b,e);e=b.data;if("set"in e)e.set(c);else for(var f=0,g=e.length;f<g;f++)e[f]=c[f];a.putImageData(b,
-0,0)}var c=["butt","round","square"],e=["miter","round","bevel"],f={},g={};d.prototype={slowCommands:{stroke:!0,closeStroke:!0,fill:!0,eoFill:!0,fillStroke:!0,eoFillStroke:!0,closeFillStroke:!0,closeEOFillStroke:!0,showText:!0,showSpacedText:!0,setStrokeColorSpace:!0,setFillColorSpace:!0,setStrokeColor:!0,setStrokeColorN:!0,setFillColor:!0,setFillColorN:!0,setStrokeGray:!0,setFillGray:!0,setStrokeRGBColor:!0,setFillRGBColor:!0,setStrokeCMYKColor:!0,setFillCMYKColor:!0,paintJpegXObject:!0,paintImageXObject:!0,
-paintInlineImageXObject:!0,paintInlineImageXObjectGroup:!0,paintImageMaskXObject:!0,paintImageMaskXObjectGroup:!0,shadingFill:!0},beginDrawing:function(a,c){var b=this.ctx.canvas.width,e=this.ctx.canvas.height;c?this.ctx.clearRect(0,0,b,e):(this.ctx.mozOpaque=!0,this.ctx.save(),this.ctx.fillStyle="rgb(255, 255, 255)",this.ctx.fillRect(0,0,b,e),this.ctx.restore());b=a.transform;this.ctx.save();this.ctx.transform.apply(this.ctx,b);this.textLayer&&this.textLayer.beginLayout();this.imageLayer&&this.imageLayer.beginLayout()},
-executeOperatorList:function(a,c,b,e){var f=a.argsArray;a=a.fnArray;c=c||0;var g=f.length;if(g==c)return c;for(var d=Date.now()+15,q=this.commonObjs,t=this.objs,s,u=this.slowCommands;;){if(e&&c===e.nextBreakPoint)return e.breakIt(c,b),c;s=a[c];if("dependency"!==s)this[s].apply(this,f[c]);else for(var v=f[c],A=0,T=v.length;A<T;A++){var Z=v[A],$="g_"==Z.substring(0,2);if(!$&&!t.isResolved(Z))return t.get(Z,b),c;if($&&!q.isResolved(Z))return q.get(Z,b),c}c++;if(c==g)return c;if(b&&u[s]&&Date.now()>d)return setTimeout(b,
-0),c}},endDrawing:function(){this.ctx.restore();this.textLayer&&this.textLayer.endLayout();this.imageLayer&&this.imageLayer.endLayout()},setLineWidth:function(a){this.current.lineWidth=a;this.ctx.lineWidth=a},setLineCap:function(a){this.ctx.lineCap=c[a]},setLineJoin:function(a){this.ctx.lineJoin=e[a]},setMiterLimit:function(a){this.ctx.miterLimit=a},setDash:function(a,c){var b=this.ctx;"setLineDash"in b?(b.setLineDash(a),b.lineDashOffset=c):(b.mozDash=a,b.mozDashOffset=c)},setRenderingIntent:function(a){},
-setFlatness:function(a){},setGState:function(a){for(var c=0,b=a.length;c<b;c++){var e=a[c],f=e[1];switch(e[0]){case "LW":this.setLineWidth(f);break;case "LC":this.setLineCap(f);break;case "LJ":this.setLineJoin(f);break;case "ML":this.setMiterLimit(f);break;case "D":this.setDash(f[0],f[1]);break;case "RI":this.setRenderingIntent(f);break;case "FL":this.setFlatness(f);break;case "Font":this.setFont(e[1],e[2]);break;case "CA":this.current.strokeAlpha=e[1];break;case "ca":this.current.fillAlpha=e[1];
-this.ctx.globalAlpha=e[1];break;case "BM":f&&f.name&&"Normal"!==f.name?(e=f.name.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()}).substring(1),this.ctx.globalCompositeOperation=e,this.ctx.globalCompositeOperation!==e&&Y('globalCompositeOperation "'+e+'" is not supported')):this.ctx.globalCompositeOperation="source-over"}}},save:function(){this.ctx.save();var a=this.current;this.stateStack.push(a);this.current=a.clone()},restore:function(){"textClipLayers"in this&&this.completeTextClipping();
-var a=this.stateStack.pop();a&&(this.current=a,this.ctx.restore())},transform:function(a,c,b,e,f,g){this.ctx.transform(a,c,b,e,f,g)},moveTo:function(a,c){this.ctx.moveTo(a,c);this.current.setCurrentPoint(a,c)},lineTo:function(a,c){this.ctx.lineTo(a,c);this.current.setCurrentPoint(a,c)},curveTo:function(a,c,b,e,f,g){this.ctx.bezierCurveTo(a,c,b,e,f,g);this.current.setCurrentPoint(f,g)},curveTo2:function(a,c,b,e){var f=this.current;this.ctx.bezierCurveTo(f.x,f.y,a,c,b,e);f.setCurrentPoint(b,e)},curveTo3:function(a,
-c,b,e){this.curveTo(a,c,b,e,b,e);this.current.setCurrentPoint(b,e)},closePath:function(){this.ctx.closePath()},rectangle:function(a,c,b,e){this.ctx.rect(a,c,b,e)},stroke:function(a){a="undefined"!==typeof a?a:!0;var c=this.ctx,b=this.current.strokeColor;0===this.current.lineWidth&&(c.lineWidth=this.getSinglePixelWidth());c.globalAlpha=this.current.strokeAlpha;b&&b.hasOwnProperty("type")&&"Pattern"===b.type?(c.save(),c.strokeStyle=b.getPattern(c),c.stroke(),c.restore()):c.stroke();a&&this.consumePath();
-c.globalAlpha=this.current.fillAlpha},closeStroke:function(){this.closePath();this.stroke()},fill:function(a){a="undefined"!==typeof a?a:!0;var c=this.ctx,b=this.current.fillColor;b&&b.hasOwnProperty("type")&&"Pattern"===b.type?(c.save(),c.fillStyle=b.getPattern(c),c.fill(),c.restore()):c.fill();a&&this.consumePath()},eoFill:function(){var a=this.setEOFillRule();this.fill();this.restoreFillRule(a)},fillStroke:function(){this.fill(!1);this.stroke(!1);this.consumePath()},eoFillStroke:function(){var a=
-this.setEOFillRule();this.fillStroke();this.restoreFillRule(a)},closeFillStroke:function(){this.closePath();this.fillStroke()},closeEOFillStroke:function(){var a=this.setEOFillRule();this.closePath();this.fillStroke();this.restoreFillRule(a)},endPath:function(){this.consumePath()},clip:function(){this.pendingClip=f},eoClip:function(){this.pendingClip=g},beginText:function(){this.current.textMatrix=Vb;this.current.x=this.current.lineX=0;this.current.y=this.current.lineY=0},endText:function(){"textClipLayers"in
-this&&this.swapImageForTextClipping()},getCurrentTextClipping:function(){var a=this.ctx,c=a.mozCurrentTransform;if("textClipLayers"in this){var b=this.textClipLayers.maskCtx;b.setTransform.apply(b,c);b.font=a.font;return b}var e=Ba(a.canvas.width,a.canvas.height),b=e.getContext("2d");b.setTransform.apply(b,c);b.font=a.font;this.textClipLayers={maskCanvas:e,maskCtx:b};return b},swapImageForTextClipping:function(){var a=this.ctx,c=a.canvas.width,b=a.canvas.height;a.save();a.setTransform(1,0,0,1,0,0);
-var e=a.getImageData(0,0,c,b);this.textClipLayers.imageData=e;a.clearRect(0,0,c,b);a.restore()},completeTextClipping:function(){var a=this.ctx,c=this.textClipLayers.maskCtx;c.setTransform(1,0,0,1,0,0);c.globalCompositeOperation="source-in";c.drawImage(a.canvas,0,0);a.save();a.setTransform(1,0,0,1,0,0);a.putImageData(this.textClipLayers.imageData,0,0);a.drawImage(this.textClipLayers.maskCanvas,0,0);a.restore();delete this.textClipLayers},setCharSpacing:function(a){this.current.charSpacing=a},setWordSpacing:function(a){this.current.wordSpacing=
-a},setHScale:function(a){this.current.textHScale=a/100},setLeading:function(a){this.current.leading=-a},setFont:function(a,c){var b=this.commonObjs.get(a),e=this.current;b||w("Can't find font for "+a);e.fontMatrix=b.fontMatrix?b.fontMatrix:xa;(0===e.fontMatrix[0]||0===e.fontMatrix[3])&&Y("Invalid font matrix for font "+a);0>c?(c=-c,e.fontDirection=-1):e.fontDirection=1;this.current.font=b;this.current.fontSize=c;if(!b.coded){var e=b.black?b.bold?"bolder":"bold":b.bold?"bold":"normal",f=b.italic?"italic":
-"normal",b='"'+(b.loadedName||"sans-serif")+'", '+b.fallbackName,g=16<=c?c:16;this.current.fontSizeScale=16!=g?1:c/16;this.ctx.font=f+" "+e+" "+g+"px "+b}},setTextRenderingMode:function(a){this.current.textRenderingMode=a},setTextRise:function(a){this.current.textRise=a},moveText:function(a,c){this.current.x=this.current.lineX+=a;this.current.y=this.current.lineY+=c},setLeadingMoveText:function(a,c){this.setLeading(-c);this.moveText(a,c)},setTextMatrix:function(a,c,b,e,f,g){this.current.textMatrix=
-[a,c,b,e,f,g];this.current.x=this.current.lineX=0;this.current.y=this.current.lineY=0},nextLine:function(){this.moveText(0,this.current.leading)},applyTextTransforms:function(){var a=this.ctx,c=this.current;a.transform.apply(a,c.textMatrix);a.translate(c.x,c.y+c.textRise);0<c.fontDirection?a.scale(c.textHScale,-1):a.scale(-c.textHScale,1)},createTextGeometry:function(){var a={},c=this.current.font,b=this.ctx.mozCurrentTransform;if(b){var e=M.applyTransform([0,0],b),b=M.applyTransform([1,1],b);a.x=
-e[0];a.y=e[1];a.hScale=b[0]-e[0];a.vScale=b[1]-e[1]}a.spaceWidth=c.spaceWidth;a.fontName=c.loadedName;a.fontFamily=c.fallbackName;a.fontSize=this.current.fontSize;return a},showText:function(a,c){var b=this.ctx,e=this.current,f=e.font,g=f.charsToGlyphs(a),d=e.fontSize,q=e.fontSizeScale,t=e.charSpacing,s=e.wordSpacing,u=e.textHScale*e.fontDirection,v=e.fontMatrix||xa,A=g.length,T,Z=this.textLayer&&!c?!0:!1,$=e.textRenderingMode,B=0,L=f.vertical,ia=f.defaultVMetrics;if(f.coded){b.save();b.transform.apply(b,
-e.textMatrix);b.translate(e.x,e.y);b.scale(u,1);Z&&(this.save(),b.scale(1,-1),T=this.createTextGeometry(),this.restore());for(var X=0;X<A;++X){var y=g[X];if(null===y)this.ctx.translate(s,0),e.x+=s*u;else{this.save();b.scale(d,d);b.transform.apply(b,v);this.executeOperatorList(y.operatorList);this.restore();var H=(M.applyTransform([y.width,0],v)[0]*d+t)*e.fontDirection;b.translate(H,0);e.x+=H*u;B+=H}}}else{b.save();this.applyTextTransforms();var X=e.lineWidth,v=e.textMatrix[0],ja=e.textMatrix[1],v=
-Math.sqrt(v*v+ja*ja),X=0===v||0===X?this.getSinglePixelWidth():X/v;Z&&(T=this.createTextGeometry());1!=q&&(b.scale(q,q),X/=q);b.lineWidth=X;for(X=v=0;X<A;++X)if(y=g[X],null===y)v+=e.fontDirection*s;else{ja=y.fontChar;H=y.vmetric||ia;if(L)var x=y.vmetric?H[1]:0.5*y.width,x=-x*d*e.fontMatrix[0],z=H[2]*d*e.fontMatrix[0];var H=H?-H[0]:y.width,H=H*d*e.fontMatrix[0]+t*e.fontDirection,w=y.accent,J,G,K;if(!y.disabled){L?(y=x/q,J=(v+z)/q):(y=v/q,J=0);w&&(G=y+w.offset.x/q,K=J-w.offset.y/q);switch($){default:case qb:case 4:b.fillText(ja,
-y,J);w&&b.fillText(w.fontChar,G,K);break;case 1:case 5:b.strokeText(ja,y,J);w&&b.strokeText(w.fontChar,G,K);break;case 2:case 6:b.fillText(ja,y,J),b.strokeText(ja,y,J),w&&(b.fillText(w.fontChar,G,K),b.strokeText(w.fontChar,G,K));case 3:case 7:}if($&4){var Q=this.getCurrentTextClipping();Q.fillText(ja,y,J);w&&Q.fillText(w.fontChar,G,K)}}v+=H;B+=H}L?e.y-=v*u:e.x+=v*u}b.restore();Z&&(T.canvasWidth=B,L&&(H=f.defaultVMetrics,T.x+=H[1]*d*e.fontMatrix[0]/q*T.hScale,T.y+=H[2]*d*e.fontMatrix[0]/q*T.vScale),
-this.textLayer.appendText(T));return B},showSpacedText:function(a){var c=this.ctx,b=this.current,e=b.font,f=b.fontSize,g=0.001*b.textHScale*b.fontDirection,d=a.length,q,t=0,s=this.textLayer?!0:!1,u=e.vertical,v=0;s&&(c.save(),this.applyTextTransforms(),q=this.createTextGeometry(),c.restore());for(c=0;c<d;++c){var A=a[c];La(A)?(A=-A*f*g,u?b.y+=A:b.x+=A,s&&(v+=A)):za(A)?(A=this.showText(A,!0),s&&(t+=v+A,v=0)):w("TJ array element "+A+" is not string or num")}s&&(q.canvasWidth=t,u&&(a=b.fontSizeScale,
-e=e.defaultVMetrics,q.x+=e[1]*f*b.fontMatrix[0]/a*q.hScale,q.y+=e[2]*f*b.fontMatrix[0]/a*q.vScale),this.textLayer.appendText(q))},nextLineShowText:function(a){this.nextLine();this.showText(a)},nextLineSetSpacingShowText:function(a,c,b){this.setWordSpacing(a);this.setCharSpacing(c);this.nextLineShowText(b)},setCharWidth:function(a,c){},setCharWidthAndBounds:function(a,c,b,e,f,g){this.rectangle(b,e,f-b,g-e);this.clip();this.endPath()},setStrokeColorSpace:function(a){this.current.strokeColorSpace=ha.fromIR(a)},
-setFillColorSpace:function(a){this.current.fillColorSpace=ha.fromIR(a)},setStrokeColor:function(){var a=this.current.strokeColorSpace.getRgb(arguments,0),a=M.makeCssRgb(a);this.ctx.strokeStyle=a;this.current.strokeColor=a},getColorN_Pattern:function(a,c){if("TilingPattern"==a[0]){var b=a[1],e=c.base,f;e&&(f=e.getRgb(b,0));b=new Ec(a,f,this.ctx,this.objs,this.commonObjs)}else"RadialAxial"==a[0]||"Dummy"==a[0]?b=Eb.shadingFromIR(a):w("Unkown IR type "+a[0]);return b},setStrokeColorN:function(){var a=
-this.current.strokeColorSpace;"Pattern"==a.name?this.current.strokeColor=this.getColorN_Pattern(arguments,a):this.setStrokeColor.apply(this,arguments)},setFillColor:function(){var a=this.current.fillColorSpace.getRgb(arguments,0),a=M.makeCssRgb(a);this.ctx.fillStyle=a;this.current.fillColor=a},setFillColorN:function(){var a=this.current.fillColorSpace;"Pattern"==a.name?this.current.fillColor=this.getColorN_Pattern(arguments,a):this.setFillColor.apply(this,arguments)},setStrokeGray:function(a){this.current.strokeColorSpace instanceof
-Za||(this.current.strokeColorSpace=new Za);var c=this.current.strokeColorSpace.getRgb(arguments,0),c=M.makeCssRgb(c);this.ctx.strokeStyle=c;this.current.strokeColor=c},setFillGray:function(a){this.current.fillColorSpace instanceof Za||(this.current.fillColorSpace=new Za);var c=this.current.fillColorSpace.getRgb(arguments,0),c=M.makeCssRgb(c);this.ctx.fillStyle=c;this.current.fillColor=c},setStrokeRGBColor:function(a,c,b){this.current.strokeColorSpace instanceof Qa||(this.current.strokeColorSpace=
-new Qa);var e=this.current.strokeColorSpace.getRgb(arguments,0),e=M.makeCssRgb(e);this.ctx.strokeStyle=e;this.current.strokeColor=e},setFillRGBColor:function(a,c,b){this.current.fillColorSpace instanceof Qa||(this.current.fillColorSpace=new Qa);var e=this.current.fillColorSpace.getRgb(arguments,0),e=M.makeCssRgb(e);this.ctx.fillStyle=e;this.current.fillColor=e},setStrokeCMYKColor:function(a,c,b,e){this.current.strokeColorSpace instanceof eb||(this.current.strokeColorSpace=new eb);var f=M.makeCssCmyk(arguments);
-this.ctx.strokeStyle=f;this.current.strokeColor=f},setFillCMYKColor:function(a,c,b,e){this.current.fillColorSpace instanceof eb||(this.current.fillColorSpace=new eb);var f=M.makeCssCmyk(arguments);this.ctx.fillStyle=f;this.current.fillColor=f},shadingFill:function(a){var c=this.ctx;this.save();a=Eb.shadingFromIR(a);c.fillStyle=a.getPattern(c);var b=c.mozCurrentTransformInverse;if(b){var c=c.canvas,e=c.width,f=c.height,c=M.applyTransform([0,0],b);a=M.applyTransform([0,f],b);var g=M.applyTransform([e,
-0],b),d=M.applyTransform([e,f],b),b=Math.min(c[0],a[0],g[0],d[0]),e=Math.min(c[1],a[1],g[1],d[1]),f=Math.max(c[0],a[0],g[0],d[0]),c=Math.max(c[1],a[1],g[1],d[1]);this.ctx.fillRect(b,e,f-b,c-e)}else this.ctx.fillRect(-1E10,-1E10,2E10,2E10);this.restore()},beginInlineImage:function(){w("Should not call beginInlineImage")},beginImageData:function(){w("Should not call beginImageData")},paintFormXObjectBegin:function(a,c){this.save();this.current.paintFormXObjectDepth++;a&&(U(a)&&6==a.length)&&this.transform.apply(this,
-a);c&&(U(c)&&4==c.length)&&(this.rectangle(c[0],c[1],c[2]-c[0],c[3]-c[1]),this.clip(),this.endPath())},paintFormXObjectEnd:function(){var a=this.current.paintFormXObjectDepth;do this.restore();while(this.current.paintFormXObjectDepth>=a)},beginGroup:function(a){this.save();var c=this.ctx;a.isolated||da("TODO: Support non-isolated groups.");a.knockout&&oa("Support knockout groups.");var b=c.mozCurrentTransform;a.matrix&&c.transform.apply(c,a.matrix);a.bbox||w("Bounding box is required.");var e=M.getAxialAlignedBoundingBox(a.bbox,
-c.mozCurrentTransform);a=Math.max(Math.ceil(e[2]-e[0]),1);var f=Math.max(Math.ceil(e[3]-e[1]),1);a=Ba(a,f).getContext("2d");Lb(a);f=e[0];e=e[1];a.translate(-f,-e);a.transform.apply(a,b);c.setTransform(1,0,0,1,0,0);c.translate(f,e);b="strokeStyle fillStyle fillRule globalAlpha lineWidth lineCap lineJoin miterLimit globalCompositeOperation font".split(" ");e=0;for(f=b.length;e<f;e++){var g=b[e];g in c&&(a[g]=c[g])}"setLineDash"in c?(a.setLineDash(c.getLineDash()),a.lineDashOffset=c.lineDashOffset):
-"mozDash"in c&&(a.mozDash=c.mozDash,a.mozDashOffset=c.mozDashOffset);this.ctx=a;this.setGState([["SMask","None"],["BM","Normal"],["ca",1],["CA",1]]);this.groupStack.push(c)},endGroup:function(a){a=this.ctx;this.ctx=this.groupStack.pop();"imageSmoothingEnabled"in this.ctx?this.ctx.imageSmoothingEnabled=!1:this.ctx.mozImageSmoothingEnabled=!1;this.ctx.drawImage(a.canvas,0,0);this.restore()},beginAnnotation:function(a,c,b,e){this.save();if(a&&U(a)&&4==a.length){var f=a[2]-a[0],g=a[3]-a[1];if(e){this.save();
-var d=e.rgb;this.setStrokeRGBColor(d[0],d[1],d[2]);this.setLineWidth(e.width);this.rectangle(a[0],a[1],f,g);this.stroke();this.restore()}this.rectangle(a[0],a[1],f,g);this.clip();this.endPath()}this.transform.apply(this,c);this.transform.apply(this,b)},endAnnotation:function(){this.restore()},paintJpegXObject:function(a,c,b){var e=this.objs.get(a);e||w("Dependent image isn't ready yet");this.save();var f=this.ctx;f.scale(1/c,-1/b);f.drawImage(e,0,0,e.width,e.height,0,-b,c,b);this.imageLayer&&(e=f.mozCurrentTransformInverse,
-f=this.getCanvasPosition(0,0),this.imageLayer.appendImage({objId:a,left:f[0],top:f[1],width:c/e[0],height:b/e[3]}));this.restore()},paintImageMaskXObject:function(c,b,e,f){var g=Ba(e,f).getContext("2d"),d=this.current.fillColor;g.fillStyle=d&&d.hasOwnProperty("type")&&"Pattern"===d.type?d.getPattern(g):d;g.fillRect(0,0,e,f);g=g.getImageData(0,0,e,f);a(c,e,f,b,g.data);this.paintInlineImageXObject(g)},paintImageMaskXObjectGroup:function(c){for(var b=this.ctx,e=0,f=0,g,d,n=0,q=c.length;n<q;n++){var t=
-c[n],s=t.width,u=t.height;if(s>e||u>f){e=Math.max(s,e);f=Math.max(u,f);g=Ba(e,f);d=g.getContext("2d");var v=this.current.fillColor;d.fillStyle=v&&v.hasOwnProperty("type")&&"Pattern"===v.type?v.getPattern(d):v}d.fillRect(0,0,s,u);v=d.getImageData(0,0,s,u);a(t.data,s,u,t.inverseDecode,v.data);d.putImageData(v,0,0);b.save();b.transform.apply(b,t.transform);b.scale(1,-1);b.drawImage(g,0,0,s,u,0,-1,1,1);b.restore()}},paintImageXObject:function(a){(a=this.objs.get(a))||w("Dependent image isn't ready yet");
-this.paintInlineImageXObject(a)},paintInlineImageXObject:function(a){var c=a.width,e=a.height,f=this.ctx;this.save();f.scale(1/c,-1/e);var g=f.mozCurrentTransformInverse,d=Math.max(Math.abs(g[0]),1),n=Math.max(Math.abs(g[3]),1),q=Ba(c,e),t=q.getContext("2d");if(2<d||2<n){for(var q=a.data,t=c,s=e,q=new Uint8Array(q);2<d||2<n;){if(2<n){for(var u=4*t,v=0,A=0,T=0;T<s-1;T+=2){for(var Z=0;Z<t;Z++){var $=q[v+3],B=q[v+3+u];if($===B)q[A]=q[v]+q[v+u]>>1,q[A+1]=q[v+1]+q[v+1+u]>>1,q[A+2]=q[v+2]+q[v+2+u]>>1,q[A+
-3]=$;else if($<B){var L=256-B+$;q[A]=q[v]*L+(q[v+u]<<8)>>9;q[A+1]=q[v+1]*L+(q[v+1+u]<<8)>>9;q[A+2]=q[v+2]*L+(q[v+2+u]<<8)>>9;q[A+3]=B}else L=256-$+B,q[A]=(q[v]<<8)+q[v+u]*L>>9,q[A+1]=(q[v+1]<<8)+q[v+1+u]*L>>9,q[A+2]=(q[v+2]<<8)+q[v+2+u]*L>>9,q[A+3]=$;v+=4;A+=4}v+=u}if(s&1)for(T=0;T<u;T++)q[A++]=q[v++];s=s+1>>1;n/=2}if(2<d){for(T=A=v=0;T<s;T++){for(Z=0;Z<t-1;Z+=2)$=q[v+3],B=q[v+7],$===B?(q[A]=q[v]+q[v+4]>>1,q[A+1]=q[v+1]+q[v+5]>>1,q[A+2]=q[v+2]+q[v+6]>>1,q[A+3]=$):$<B?(L=256-B+$,q[A]=q[v]*L+(q[v+4]<<
-8)>>9,q[A+1]=q[v+1]*L+(q[v+5]<<8)>>9,q[A+2]=q[v+2]*L+(q[v+6]<<8)>>9,q[A+3]=B):(L=256-$+B,q[A]=(q[v]<<8)+q[v+4]*L>>9,q[A+1]=(q[v+1]<<8)+q[v+5]*L>>9,q[A+2]=(q[v+2]<<8)+q[v+6]*L>>9,q[A+3]=$),v+=8,A+=4;t&1&&(q[A++]=q[v++],q[A++]=q[v++],q[A++]=q[v++],q[A++]=q[v++])}t=t+1>>1;d/=2}}d=Ba(t,s);n=d.getContext("2d");b(n,q.subarray(0,4*t*s),t,s);q=d;f.drawImage(q,0,0,q.width,q.height,0,-e,c,e)}else"undefined"!==typeof ImageData&&a instanceof ImageData?t.putImageData(a,0,0):b(t,a.data,c,e),f.drawImage(q,0,-e);
-this.imageLayer&&(f=this.getCanvasPosition(0,-e),this.imageLayer.appendImage({imgData:a,left:f[0],top:f[1],width:c/g[0],height:e/g[3]}));this.restore()},paintInlineImageXObjectGroup:function(a,c){var e=this.ctx,f=a.width,g=a.height,d=Ba(f,g),n=d.getContext("2d");b(n,a.data,f,g);for(var n=0,q=c.length;n<q;n++){var t=c[n];e.save();e.transform.apply(e,t.transform);e.scale(1,-1);e.drawImage(d,t.x,t.y,t.w,t.h,0,-1,1,1);this.imageLayer&&(t=this.getCanvasPosition(t.x,t.y),this.imageLayer.appendImage({imgData:a,
-left:t[0],top:t[1],width:f,height:g}));e.restore()}},markPoint:function(a){},markPointProps:function(a,c){},beginMarkedContent:function(a){},beginMarkedContentProps:function(a,c){},endMarkedContent:function(){},beginCompat:function(){},endCompat:function(){},consumePath:function(){if(this.pendingClip){var a=null;this.pendingClip==g&&(a=this.setEOFillRule());this.ctx.clip();this.pendingClip=null;null!==a&&this.restoreFillRule(a)}this.ctx.beginPath()},setEOFillRule:function(){var a=this.ctx.mozFillRule;
-this.ctx.mozFillRule="evenodd";return a},restoreFillRule:function(a){this.ctx.mozFillRule=a},getSinglePixelWidth:function(a){a=this.ctx.mozCurrentTransformInverse;return Math.sqrt(Math.max(a[0]*a[0]+a[1]*a[1],a[2]*a[2]+a[3]*a[3]))},getCanvasPosition:function(a,c){var b=this.ctx.mozCurrentTransform;return[b[0]*a+b[2]*c+b[4],b[1]*a+b[3]*c+b[5]]}};return d}(),Wa=function(){function d(a){this.name=a}d.prototype={};return d}(),Aa=function(){function d(a){this.cmd=a}d.prototype={};var a={};d.get=function(b){var c=
-a[b];return c?c:a[b]=new d(b)};return d}(),Ma=function(){function d(b){this.map=Object.create(null);this.xref=b;this.__nonSerializable__=a}var a=function(){return a};d.prototype={assignXref:function(a){this.xref=a},get:function(a,c,e){var f,g=this.xref;if("undefined"!=typeof(f=this.map[a])||a in this.map||"undefined"==typeof c||"undefined"!=typeof(f=this.map[c])||c in this.map||"undefined"==typeof e)return g?g.fetchIfRef(f):f;f=this.map[e]||null;return g?g.fetchIfRef(f):f},getRaw:function(a){return this.map[a]},
-getAll:function(){var a={},c;for(c in this.map){var e=this.get(c);a[c]=e instanceof d?e.getAll():e}return a},set:function(a,c){this.map[a]=c},has:function(a){return a in this.map},forEach:function(a){for(var c in this.map)a(c,this.get(c))}};return d}(),Kb=function(){function d(a,b){this.num=a;this.gen=b}d.prototype={};return d}(),Fc=function(){function d(){this.dict={}}d.prototype={has:function(a){return!!this.dict["R"+a.num+"."+a.gen]},put:function(a){this.dict["R"+a.num+"."+a.gen]=a}};return d}(),
-id=function(){function d(a,b){this.pdfManager=a;this.xref=b;this.catDict=b.getCatalogObj();la(W(this.catDict),"catalog object is not a dictionary");this.traversePagesQueue=[{pagesDict:this.toplevelPagesDict,posInKids:0}];this.pagePromises=[];this.currPageIndex=0}d.prototype={get metadata(){var a=this.catDict.getRaw("Metadata");if(!Ea(a))return fa(this,"metadata",null);var a=this.xref.fetch(a,!(!this.xref.encrypt?0:this.xref.encrypt.encryptMetadata)),b;if(a&&W(a.dict)){var c=a.dict.get("Type"),e=a.dict.get("Subtype");
-if(V(c)&&V(e)&&"Metadata"===c.name&&"XML"===e.name)try{var f=ib(a.getBytes());b=decodeURIComponent(escape(f))}catch(g){da("Skipping invalid metadata.")}}return fa(this,"metadata",b)},get toplevelPagesDict(){var a=this.catDict.get("Pages");la(W(a),"invalid top-level pages dictionary");return fa(this,"toplevelPagesDict",a)},get documentOutline(){var a=this.xref,b=this.catDict.get("Outlines"),c={items:[]};if(W(b)){var b=b.getRaw("First"),e=new Fc;if(Ea(b)){var f=[{obj:b,parent:c}];for(e.put(b);0<f.length;){var g=
-f.shift(),h=a.fetchIfRef(g.obj);if(null!==h){h.has("Title")||w("Invalid outline item");(b=h.get("A"))?b=b.get("D"):h.has("Dest")&&(b=h.getRaw("Dest"),V(b)&&(b=b.name));var l=h.get("Title"),l={dest:b,title:Ja(l),color:h.get("C")||[0,0,0],count:h.get("Count"),bold:!!(h.get("F")&2),italic:!!(h.get("F")&1),items:[]};g.parent.items.push(l);b=h.getRaw("First");Ea(b)&&!e.has(b)&&(f.push({obj:b,parent:l}),e.put(b));b=h.getRaw("Next");Ea(b)&&!e.has(b)&&(f.push({obj:b,parent:g.parent}),e.put(b))}}}}b=0<c.items.length?
-c.items:null;return fa(this,"documentOutline",b)},get numPages(){var a=this.toplevelPagesDict.get("Count");la(N(a),"page count in top level pages object is not an integer");return fa(this,"num",a)},get destinations(){var a=this.xref,b={},c,e,f=this.catDict.get("Names");f?c=f.getRaw("Dests"):this.catDict.has("Dests")&&(e=this.catDict.get("Dests"));e&&e.forEach(function(a,c){c&&(b[a]=W(c)?c.get("D"):c)});if(c){var a=(new Gc(c,a)).getAll(),g;for(g in a)a.hasOwnProperty(g)&&(b[g]=W(a[g])?a[g].get("D"):
-a[g])}return fa(this,"destinations",b)},get javaScript(){var a=this.xref,b=this.catDict.get("Names"),c=[];if(b&&b.has("JavaScript")){var a=(new Gc(b.getRaw("JavaScript"),a)).getAll(),e;for(e in a)if(a.hasOwnProperty(e)&&(b=a[e],W(b))){var f=b.get("S");if(V(f)&&"JavaScript"===f.name&&(b=b.get("JS"),za(b)||ra(b)))ra(b)&&(b=ib(b.getBytes())),c.push(Ja(b))}}return fa(this,"javaScript",c)},getPage:function(a){a in this.pagePromises||(this.pagePromises[a]=new E);return this.pagePromises[a]},traversePages:function(){for(var a=
-this.traversePagesQueue;a.length;){var b=a[a.length-1],c=b.pagesDict.get("Kids");U(c)||w("page dictionary kids object is not an array");if(b.posInKids>=c.length)a.pop();else{var e=c[b.posInKids];Ea(e)||w("page dictionary kid is not a reference");var f=this.xref.fetch(e);W(f,"Page")||W(f)&&!f.has("Kids")?(c=this.currPageIndex++,e=new fd(this.pdfManager,this.xref,c,f,e),c in this.pagePromises||(this.pagePromises[c]=new E),this.pagePromises[c].resolve(e)):(W(f)||w("page dictionary kid reference points to wrong type of object"),
-a.push({pagesDict:f,posInKids:0}));++b.posInKids}}}};return d}(),gd=function(){function d(a,b){this.stream=a;this.entries=[];this.xrefstms={};this.cache=[];this.password=b}d.prototype={setStartXRef:function(a){this.startXRefQueue=[a]},parse:function(a){a?(Y("Indexing all PDF objects"),a=this.indexObjects()):a=this.readXRef();a.assignXref(this);this.trailer=a;var b=a.get("Encrypt");if(b){var c=a.get("ID");this.encrypt=new pd(b,c&&c.length?c[0]:"",this.password)}(this.root=a.get("Root"))||w("Invalid root reference")},
-processXRefTable:function(a){"tableState"in this||(this.tableState={entryNum:0,streamPos:a.lexer.stream.pos,parserBuf1:a.buf1,parserBuf2:a.buf2});var b=this.readXRefTable(a);ea(b,"trailer")||w("Invalid XRef table: could not find trailer dictionary");a=a.getObj();W(a)||w("Invalid XRef table: could not parse trailer dictionary");delete this.tableState;return a},readXRefTable:function(a){var b=a.lexer.stream,c=this.tableState;b.pos=c.streamPos;a.buf1=c.parserBuf1;a.buf2=c.parserBuf2;for(var e;;){if(!("firstEntryNum"in
-c)||!("entryCount"in c)){if(ea(e=a.getObj(),"trailer"))break;c.firstEntryNum=e;c.entryCount=a.getObj()}var f=c.firstEntryNum,g=c.entryCount;(!N(f)||!N(g))&&w("Invalid XRef table: wrong types in subsection header");for(var h=c.entryNum;h<g;h++){c.streamPos=b.pos;c.entryNum=h;c.parserBuf1=a.buf1;c.parserBuf2=a.buf2;var l={};l.offset=a.getObj();l.gen=a.getObj();var d=a.getObj();ea(d,"f")?l.free=!0:ea(d,"n")&&(l.uncompressed=!0);if(!N(l.offset)||!N(l.gen)||!l.free&&!l.uncompressed)console.log(l.offset,
-l.gen,l.free,l.uncompressed),w("Invalid entry in XRef subsection: "+f+", "+g);this.entries[h+f]||(this.entries[h+f]=l)}c.entryNum=0;c.streamPos=b.pos;c.parserBuf1=a.buf1;c.parserBuf2=a.buf2;delete c.firstEntryNum;delete c.entryCount}this.entries[0]&&!this.entries[0].free&&w("Invalid XRef table: unexpected first object");return e},processXRefStream:function(a){if(!("streamState"in this)){var b=a.parameters,c=b.get("W"),e=b.get("Index");e||(e=[0,b.get("Size")]);this.streamState={entryRanges:e,byteWidths:c,
-entryNum:0,streamPos:a.pos}}this.readXRefStream(a);delete this.streamState;return a.parameters},readXRefStream:function(a){var b,c,e=this.streamState;a.pos=e.streamPos;b=e.byteWidths;for(var f=b[0],g=b[1],h=b[2],l=e.entryRanges;0<l.length;){var d=l[0],k=l[1];(!N(d)||!N(k))&&w("Invalid XRef range fields: "+d+", "+k);(!N(f)||!N(g)||!N(h))&&w("Invalid XRef entry fields length: "+d+", "+k);for(b=e.entryNum;b<k;++b){e.entryNum=b;e.streamPos=a.pos;var m=0,r=0,n=0;for(c=0;c<f;++c)m=m<<8|a.getByte();0===
-f&&(m=1);for(c=0;c<g;++c)r=r<<8|a.getByte();for(c=0;c<h;++c)n=n<<8|a.getByte();c={};c.offset=r;c.gen=n;switch(m){case 0:c.free=!0;break;case 1:c.uncompressed=!0;break;case 2:break;default:w("Invalid XRef entry type: "+m)}this.entries[d+b]||(this.entries[d+b]=c)}e.entryNum=0;e.streamPos=a.pos;l.splice(0,2)}},indexObjects:function(){function a(a,c){for(var b="",e=a[c];13!==e&&10!==e&&!(++c>=a.length);)b+=String.fromCharCode(e),e=a[c];return b}function b(a,c,b){for(var e=b.length,f=a.length,g=0;c<f;){for(var h=
-0;h<e&&a[c+h]==b[h];)++h;if(h>=e)break;c++;g++}return g}var c=new Uint8Array([116,114,97,105,108,101,114]),e=new Uint8Array([115,116,97,114,116,120,114,101,102]),f=new Uint8Array([101,110,100,111,98,106]),g=new Uint8Array([47,88,82,101,102]),h=this.stream;h.pos=0;for(var l=h.getBytes(),d=h.start,k=l.length,m=[],r=[];d<k;){var n=l[d];if(32===n||9===n||13===n||10===n)++d;else if(37===n){do++d,n=l[d];while(13!==n&&10!==n)}else{var n=a(l,d),q;if("xref"===n)d+=b(l,d,c),m.push(d),d+=b(l,d,e);else if(q=
-/^(\d+)\s+(\d+)\s+obj\b/.exec(n)){this.entries[q[1]]={offset:d,gen:q[2]|0,uncompressed:!0};n=b(l,d,f)+7;q=l.subarray(d,d+n);var t=b(q,0,g);t<n&&64>q[t+5]&&(r.push(d),this.xrefstms[d]=1);d+=n}else d+=n.length+1}}c=0;for(e=r.length;c<e;++c)this.startXRefQueue.push(r[c]),this.readXRef(!0);for(var s,c=0,e=m.length;c<e;++c)if(h.pos=m[c],r=new $a(new Ca(h),!0,null),f=r.getObj(),ea(f,"trailer")&&W(s=r.getObj())&&s.has("ID"))return s;if(s)return s;throw new yc("Invalid PDF structure");},readXRef:function(a){var b=
-this.stream;try{for(;this.startXRefQueue.length;){b.pos=this.startXRefQueue[0];var c=new $a(new Ca(b),!0,null),e=c.getObj(),f;if(ea(e,"xref")){if(f=this.processXRefTable(c),this.topDict||(this.topDict=f),e=f.get("XRefStm"),N(e)){var g=e;g in this.xrefstms||(this.xrefstms[g]=1,this.startXRefQueue.push(g))}}else N(e)&&((!N(c.getObj())||!ea(c.getObj(),"obj")||!ra(e=c.getObj()))&&w("Invalid XRef stream"),f=this.processXRefStream(e),this.topDict||(this.topDict=f),f||w("Failed to read XRef stream"));e=
-f.get("Prev");N(e)?this.startXRefQueue.push(e):Ea(e)&&this.startXRefQueue.push(e.num);this.startXRefQueue.shift()}return this.topDict}catch(h){if(h instanceof Na)throw h;Ia("(while reading XRef): "+h)}if(!a)throw new Ac;},getEntry:function(a){a=this.entries[a];return null===a?null:a.free||!a.offset?null:a},fetchIfRef:function(a){return!Ea(a)?a:this.fetch(a)},fetch:function(a,b){la(Ea(a),"ref object is not a reference");var c=a.num,e;if(c in this.cache)return e=this.cache[c],e instanceof wa?e.makeSubStream(e.start,
-e.length,e.dict):e;e=this.getEntry(c);if(null===e)return this.cache[c]=e;var f=a.gen,g;if(e.uncompressed){e.gen!=f&&w("inconsistent generation in XRef");g=this.stream.makeSubStream(e.offset);g=new $a(new Ca(g),!0,this);var h=g.getObj(),l=g.getObj(),d=g.getObj();(!N(h)||h!=c||!N(l)||l!=f||!ea(d))&&w("bad XRef entry");if(!ea(d,"obj")){if(0===d.cmd.indexOf("obj")&&(c=parseInt(d.cmd.substring(3),10),!isNaN(c)))return c;w("bad XRef entry")}if(this.encrypt&&!b)try{e=g.getObj(this.encrypt.createCipherTransform(c,
-f))}catch(k){return this.fetch(a,!0)}else e=g.getObj();!ra(e)||e instanceof tb?this.cache[c]=e:e instanceof wa?(e=e.makeSubStream(e.start,e.length,e.dict),this.cache[c]=e):"readBlock"in e&&(e.getBytes(),e=e.makeSubStream(0,e.bufferLength,e.dict),this.cache[c]=e);return e}f=e.offset;g=this.fetch(new Kb(f,0));ra(g)||w("bad ObjStm stream");c=g.parameters.get("First");h=g.parameters.get("N");(!N(c)||!N(h))&&w("invalid first and n parameters for ObjStm stream");g=new $a(new Ca(g),!1,this);g.allowStreams=
-!0;for(var d=[],m=[],l=0;l<h;++l)c=g.getObj(),N(c)||w("invalid object number in the ObjStm stream: "+c),m.push(c),c=g.getObj(),N(c)||w("invalid object offset in the ObjStm stream: "+c);for(l=0;l<h;++l){d.push(g.getObj());var c=m[l],r=this.entries[c];r&&(r.offset===f&&r.gen===l)&&(this.cache[c]=d[l])}(e=d[e.gen])||w("bad XRef entry for compressed object");return e},getCatalogObj:function(){return this.root}};return d}(),Gc=function(){function d(a,b){this.root=a;this.xref=b}d.prototype={getAll:function(){var a=
-{};if(!this.root)return a;var b=this.xref,c=new Fc;c.put(this.root);for(var e=[this.root];0<e.length;){var f,g;f=b.fetchIfRef(e.shift());if(W(f))if(f.has("Kids")){var h=f.get("Kids");f=0;for(g=h.length;f<g;f++){var l=h[f];c.has(l)&&w("invalid destinations");e.push(l);c.put(l)}}else if(h=f.get("Names")){f=0;for(g=h.length;f<g;f+=2)a[h[f]]=b.fetchIfRef(h[f+1])}}return a}};return d}(),Bc=function(){function d(){this.objs={}}d.prototype={ensureObj:function(a,b){return this.objs[a]?this.objs[a]:this.objs[a]=
-new E(a,b)},get:function(a,b){if(b)return this.ensureObj(a).then(b),null;var c=this.objs[a];(!c||!c.isResolved)&&w("Requesting object that isn't resolved yet "+a);return c.data},resolve:function(a,b){var c=this.objs;c[a]?c[a].resolve(b):this.ensureObj(a,b)},onData:function(a,b){this.ensureObj(a).onData(b)},isResolved:function(a){var b=this.objs;return b[a]?b[a].isResolved:!1},hasData:function(a){var b=this.objs;return b[a]?b[a].hasData:!1},getData:function(a){var b=this.objs;return!b[a]||!b[a].hasData?
-null:b[a].data},setData:function(a,b){this.ensureObj(a).data=b},clear:function(){this.objs={}}};return d}(),ab=function(){return{getSampleArray:function(d,a,b,c){for(var e=1,f=0,g=d.length;f<g;f++)e*=d[f];e*=a;d=[];var g=a=0,h=1/(Math.pow(2,b)-1);c=c.getBytes((e*b+7)/8);for(var l=0,f=0;f<e;f++){for(;a<b;)g<<=8,g|=c[l++],a+=8;a-=b;d.push((g>>a)*h);g&=(1<<a)-1}return d},getIR:function(d,a){var b=a.dict;b||(b=a);var c=[this.constructSampled,null,this.constructInterpolated,this.constructStiched,this.constructPostScript],
-e=b.get("FunctionType");(c=c[e])||w("Unknown type of function");return c.call(this,a,b,d)},fromIR:function(d){switch(d[0]){case 0:return this.constructSampledFromIR(d);case 2:return this.constructInterpolatedFromIR(d);case 3:return this.constructStichedFromIR(d);default:return this.constructPostScriptFromIR(d)}},parse:function(d,a){var b=this.getIR(d,a);return this.fromIR(b)},constructSampled:function(d,a){function b(a){for(var c=a.length,b=[],e=0,f=0;f<c;f+=2)b[e]=[a[f],a[f+1]],++e;return b}var c=
-a.get("Domain"),e=a.get("Range");(!c||!e)&&w("No domain or range");var f=c.length/2,g=e.length/2,c=b(c),e=b(e),h=a.get("Size"),l=a.get("BitsPerSample"),p=a.get("Order")||1;1!==p&&oa("No support for cubic spline interpolation: "+p);p=a.get("Encode");if(!p)for(var p=[],k=0;k<f;++k)p.push(0),p.push(h[k]-1);var p=b(p),k=(k=a.get("Decode"))?b(k):e,m=this.getSampleArray(h,g,l,d);return[0,f,c,p,k,m,h,g,Math.pow(2,l)-1,e]},constructSampledFromIR:function(d){return function(a){var b=d[1],c=d[2],e=d[3],f=d[4],
-g=d[5],h=d[6],l=d[7],p=d[9];b!=a.length&&w("Incorrect number of arguments: "+b+" != "+a.length);for(var k=1<<b,m=new Float64Array(k),r=new Uint32Array(k),n=0;n<k;n++)m[n]=1;for(var q=l,t=1,s=0;s<b;++s){for(var n=c[s][0],u=c[s][1],v=Math.min(Math.max(a[s],n),u),A=e[s][0]+(v-n)*((e[s][1]-e[s][0])/(u-n)),u=h[s],A=Math.min(Math.max(A,0),u-1),n=A<u-1?Math.floor(A):A-1,v=n+1-A,A=A-n,T=n*q,Z=T+q,n=0;n<k;n++)n&t?(m[n]*=A,r[n]+=Z):(m[n]*=v,r[n]+=T);q*=u;t<<=1}a=new Float64Array(l);for(n=0;n<l;++n){for(s=b=
-0;s<k;s++)b+=g[r[s]+n]*m[s];b=f[n][0]+(b-0)*((f[n][1]-f[n][0])/1);a[n]=Math.min(Math.max(b,p[n][0]),p[n][1])}return a}},constructInterpolated:function(d,a){var b=a.get("C0")||[0],c=a.get("C1")||[1],e=a.get("N");(!U(b)||!U(c))&&w("Illegal dictionary for interpolated function");for(var f=b.length,g=[],h=0;h<f;++h)g.push(c[h]-b[h]);return[2,b,g,e]},constructInterpolatedFromIR:function(d){var a=d[1],b=d[2],c=d[3],e=b.length;return function(f){f=1==c?f[0]:Math.pow(f[0],c);for(var g=[],h=0;h<e;++h)g.push(a[h]+
-f*b[h]);return g}},constructStiched:function(d,a,b){(d=a.get("Domain"))||w("No domain");1!=d.length/2&&w("Bad domain for stiched function");for(var c=a.get("Functions"),e=[],f=0,g=c.length;f<g;++f)e.push(ab.getIR(b,b.fetchIfRef(c[f])));b=a.get("Bounds");a=a.get("Encode");return[3,d,b,a,e]},constructStichedFromIR:function(d){var a=d[1],b=d[2],c=d[3];d=d[4];for(var e=[],f=0,g=d.length;f<g;f++)e.push(ab.fromIR(d[f]));return function(f){f=f[0];var g=a[0],d=a[1];f>d?f=d:f<g&&(f=g);g=0;for(d=b.length;g<
-d&&!(f<b[g]);++g);d=a[0];0<g&&(d=b[g-1]);var k=a[1];g<b.length&&(k=b[g]);var m=c[2*g];return e[g]([m+(f-d)*(c[2*g+1]-m)/(k-d)])}},constructPostScript:function(d,a,b){b=a.get("Domain");a=a.get("Range");b||w("No domain.");a||w("No range.");d=new qd(d);d=(new rd(d)).parse();return[4,b,a,d]},constructPostScriptFromIR:function(d){var a=d[1],b=d[2],c=b.length/2,e=new sd(d[3]),f=new td;return function(g){for(var h=[],d=0,p=a.length/2;d<p;++d)h.push(g[d]);g=h.join("_");if(f.has(g))return f.get(g);h=e.execute(h);
-p=[];for(d=c-1;0<=d;--d){var k=h.pop(),m=2*d;k<b[m]?k=b[m]:k>b[m+1]&&(k=b[m+1]);p[d]=k}f.set(g,p);return p}}}}(),td=function(){function d(){this.cache={};this.total=0}d.prototype={has:function(a){return a in this.cache},get:function(a){return this.cache[a]},set:function(a,b){1024>this.total&&(this.cache[a]=b,this.total++)}};return d}(),ud=function(){function d(a){this.stack=a||[]}d.prototype={push:function(a){100<=this.stack.length&&w("PostScript function stack overflow.");this.stack.push(a)},pop:function(){0>=
-this.stack.length&&w("PostScript function stack underflow.");return this.stack.pop()},copy:function(a){100<=this.stack.length+a&&w("PostScript function stack overflow.");var b=this.stack,c=b.length-a;for(a-=1;0<=a;a--,c++)b.push(b[c])},index:function(a){this.push(this.stack[this.stack.length-a-1])},roll:function(a,b){var c=this.stack,e=c.length-a,f=c.length-1,g=e+(b-Math.floor(b/a)*a),h,d,p;h=e;for(d=f;h<d;h++,d--)p=c[h],c[h]=c[d],c[d]=p;h=e;for(d=g-1;h<d;h++,d--)p=c[h],c[h]=c[d],c[d]=p;h=g;for(d=
-f;h<d;h++,d--)p=c[h],c[h]=c[d],c[d]=p}};return d}(),sd=function(){function d(a,b){this.operators=a;this.operands=b}d.prototype={execute:function(a){a=new ud(a);for(var b=0,c=this.operators,e=c.length,f,g;b<e;)if(f=c[b++],"number"==typeof f)a.push(f);else switch(f){case "jz":g=a.pop();(f=a.pop())||(b=g);break;case "j":b=f=a.pop();break;case "abs":f=a.pop();a.push(Math.abs(f));break;case "add":g=a.pop();f=a.pop();a.push(f+g);break;case "and":g=a.pop();f=a.pop();Ka(f)&&Ka(g)?a.push(f&&g):a.push(f&g);
-break;case "atan":f=a.pop();a.push(Math.atan(f));break;case "bitshift":g=a.pop();f=a.pop();0<f?a.push(f<<g):a.push(f>>g);break;case "ceiling":f=a.pop();a.push(Math.ceil(f));break;case "copy":f=a.pop();a.copy(f);break;case "cos":f=a.pop();a.push(Math.cos(f));break;case "cvi":f=a.pop()|0;a.push(f);break;case "cvr":break;case "div":g=a.pop();f=a.pop();a.push(f/g);break;case "dup":a.copy(1);break;case "eq":g=a.pop();f=a.pop();a.push(f==g);break;case "exch":a.roll(2,1);break;case "exp":g=a.pop();f=a.pop();
-a.push(Math.pow(f,g));break;case "false":a.push(!1);break;case "floor":f=a.pop();a.push(Math.floor(f));break;case "ge":g=a.pop();f=a.pop();a.push(f>=g);break;case "gt":g=a.pop();f=a.pop();a.push(f>g);break;case "idiv":g=a.pop();f=a.pop();a.push(f/g|0);break;case "index":f=a.pop();a.index(f);break;case "le":g=a.pop();f=a.pop();a.push(f<=g);break;case "ln":f=a.pop();a.push(Math.log(f));break;case "log":f=a.pop();a.push(Math.log(f)/Math.LN10);break;case "lt":g=a.pop();f=a.pop();a.push(f<g);break;case "mod":g=
-a.pop();f=a.pop();a.push(f%g);break;case "mul":g=a.pop();f=a.pop();a.push(f*g);break;case "ne":g=a.pop();f=a.pop();a.push(f!=g);break;case "neg":a.pop();a.push(-g);break;case "not":f=a.pop();Ka(f)&&Ka(g)?a.push(f&&g):a.push(f&g);break;case "or":g=a.pop();f=a.pop();Ka(f)&&Ka(g)?a.push(f||g):a.push(f|g);break;case "pop":a.pop();break;case "roll":g=a.pop();f=a.pop();a.roll(f,g);break;case "round":f=a.pop();a.push(Math.round(f));break;case "sin":f=a.pop();a.push(Math.sin(f));break;case "sqrt":f=a.pop();
-a.push(Math.sqrt(f));break;case "sub":g=a.pop();f=a.pop();a.push(f-g);break;case "true":a.push(!0);break;case "truncate":f=a.pop();f=0>f?Math.ceil(f):Math.floor(f);a.push(f);break;case "xor":g=a.pop();f=a.pop();Ka(f)&&Ka(g)?a.push(f!=g):a.push(f^g);break;default:w("Unknown operator "+f)}return a.stack}};return d}(),rd=function(){function d(a){this.lexer=a;this.operators=[];this.prev=this.token=null}d.prototype={nextToken:function(){this.prev=this.token;this.token=this.lexer.getToken()},accept:function(a){return this.token.type==
-a?(this.nextToken(),!0):!1},expect:function(a){if(this.accept(a))return!0;w("Unexpected symbol: found "+this.token.type+" expected "+a+".")},parse:function(){this.nextToken();this.expect(ba.LBRACE);this.parseBlock();this.expect(ba.RBRACE);return this.operators},parseBlock:function(){for(;;)if(this.accept(ba.NUMBER))this.operators.push(this.prev.value);else if(this.accept(ba.OPERATOR))this.operators.push(this.prev.value);else if(this.accept(ba.LBRACE))this.parseCondition();else break},parseCondition:function(){var a=
-this.operators.length;this.operators.push(null,null);this.parseBlock();this.expect(ba.RBRACE);if(this.accept(ba.IF))this.operators[a]=this.operators.length,this.operators[a+1]="jz";else if(this.accept(ba.LBRACE)){var b=this.operators.length;this.operators.push(null,null);var c=this.operators.length;this.parseBlock();this.expect(ba.RBRACE);this.expect(ba.IFELSE);this.operators[b]=this.operators.length;this.operators[b+1]="j";this.operators[a]=c;this.operators[a+1]="jz"}else w("PS Function: error parsing conditional.")}};
-return d}(),ba={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5},lb=function(){function d(a,c){this.type=a;this.value=c}var a={};d.getOperator=function(b){var c=a[b];return c?c:a[b]=new d(ba.OPERATOR,b)};d.LBRACE=new d(ba.LBRACE,"{");d.RBRACE=new d(ba.RBRACE,"}");d.IF=new d(ba.IF,"IF");d.IFELSE=new d(ba.IFELSE,"IFELSE");return d}(),qd=function(){function d(a){this.stream=a}d.prototype={getToken:function(){for(var a,b=!1,c=this.stream;;){if(!(a=c.getChar()))return ka;if(b){if("\n"==a||"\r"==a)b=
-!1}else if("%"==a)b=!0;else if(!Ca.isSpace(a))break}switch(a){case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":case "8":case "9":case "+":case "-":case ".":return new lb(ba.NUMBER,this.getNumber(a));case "{":return lb.LBRACE;case "}":return lb.RBRACE}for(b=a.toLowerCase();;){a=c.lookChar();if(null===a)break;a=a.toLowerCase();if("a"<=a&&"z">=a)b+=a;else break;c.skip()}switch(b){case "if":return lb.IF;case "ifelse":return lb.IFELSE;default:return lb.getOperator(b)}},getNumber:function(a){for(var b=
-a,c=this.stream;;){a=c.lookChar();if("0"<=a&&"9">=a||"-"==a||"."==a)b+=a;else break;c.skip()}a=parseFloat(b);isNaN(a)&&w("Invalid floating point number: "+a);return a}};return d}(),vd=".notdef space exclam quotedbl numbersign dollar percent ampersand quoteright parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore quoteleft a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde exclamdown cent sterling fraction yen florin section currency quotesingle quotedblleft guillemotleft guilsinglleft guilsinglright fi fl endash dagger daggerdbl periodcentered paragraph bullet quotesinglbase quotedblbase quotedblright guillemotright ellipsis perthousand questiondown grave acute circumflex tilde macron breve dotaccent dieresis ring cedilla hungarumlaut ogonek caron emdash AE ordfeminine Lslash Oslash OE ordmasculine ae dotlessi lslash oslash oe germandbls onesuperior logicalnot mu trademark Eth onehalf plusminus Thorn onequarter divide brokenbar degree thorn threequarters twosuperior registered minus eth multiply threesuperior copyright Aacute Acircumflex Adieresis Agrave Aring Atilde Ccedilla Eacute Ecircumflex Edieresis Egrave Iacute Icircumflex Idieresis Igrave Ntilde Oacute Ocircumflex Odieresis Ograve Otilde Scaron Uacute Ucircumflex Udieresis Ugrave Yacute Ydieresis Zcaron aacute acircumflex adieresis agrave aring atilde ccedilla eacute ecircumflex edieresis egrave iacute icircumflex idieresis igrave ntilde oacute ocircumflex odieresis ograve otilde scaron uacute ucircumflex udieresis ugrave yacute ydieresis zcaron".split(" "),
-wd=".notdef space exclamsmall Hungarumlautsmall dollaroldstyle dollarsuperior ampersandsmall Acutesmall parenleftsuperior parenrightsuperior twodotenleader onedotenleader comma hyphen period fraction zerooldstyle oneoldstyle twooldstyle threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle eightoldstyle nineoldstyle colon semicolon commasuperior threequartersemdash periodsuperior questionsmall asuperior bsuperior centsuperior dsuperior esuperior isuperior lsuperior msuperior nsuperior osuperior rsuperior ssuperior tsuperior ff fi fl ffi ffl parenleftinferior parenrightinferior Circumflexsmall hyphensuperior Gravesmall Asmall Bsmall Csmall Dsmall Esmall Fsmall Gsmall Hsmall Ismall Jsmall Ksmall Lsmall Msmall Nsmall Osmall Psmall Qsmall Rsmall Ssmall Tsmall Usmall Vsmall Wsmall Xsmall Ysmall Zsmall colonmonetary onefitted rupiah Tildesmall exclamdownsmall centoldstyle Lslashsmall Scaronsmall Zcaronsmall Dieresissmall Brevesmall Caronsmall Dotaccentsmall Macronsmall figuredash hypheninferior Ogoneksmall Ringsmall Cedillasmall onequarter onehalf threequarters questiondownsmall oneeighth threeeighths fiveeighths seveneighths onethird twothirds zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior centinferior dollarinferior periodinferior commainferior Agravesmall Aacutesmall Acircumflexsmall Atildesmall Adieresissmall Aringsmall AEsmall Ccedillasmall Egravesmall Eacutesmall Ecircumflexsmall Edieresissmall Igravesmall Iacutesmall Icircumflexsmall Idieresissmall Ethsmall Ntildesmall Ogravesmall Oacutesmall Ocircumflexsmall Otildesmall Odieresissmall OEsmall Oslashsmall Ugravesmall Uacutesmall Ucircumflexsmall Udieresissmall Yacutesmall Thornsmall Ydieresissmall".split(" "),
-xd=".notdef space dollaroldstyle dollarsuperior parenleftsuperior parenrightsuperior twodotenleader onedotenleader comma hyphen period fraction zerooldstyle oneoldstyle twooldstyle threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle eightoldstyle nineoldstyle colon semicolon commasuperior threequartersemdash periodsuperior asuperior bsuperior centsuperior dsuperior esuperior isuperior lsuperior msuperior nsuperior osuperior rsuperior ssuperior tsuperior ff fi fl ffi ffl parenleftinferior parenrightinferior hyphensuperior colonmonetary onefitted rupiah centoldstyle figuredash hypheninferior onequarter onehalf threequarters oneeighth threeeighths fiveeighths seveneighths onethird twothirds zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior centinferior dollarinferior periodinferior commainferior".split(" "),
-yd={"Adobe-Japan1":[[32,160],{f:12,c:33},[45,8209],{f:46,c:46},165,{f:2,c:93},[95,818],[96,768],{f:27,c:97},166,125,[732,771],[700,8217],92,[699,8216],124,[126,8764],{f:3,c:161},8260,402,0,164,8220,171,{f:2,c:8249},{f:2,c:64257},[8210,8211],0,0,[183,8729],0,8226,8218,8222,8221,187,0,0,191,{f:2,c:769},[175,772],{f:3,c:774},778,[184,807],779,808,780,[822,8212],198,170,321,216,338,186,230,305,322,248,339,223,173,169,172,174,0,0,{f:2,c:178},181,185,{f:3,c:188},{f:6,c:192},{f:16,c:199},0,{f:6,c:217},{f:6,
-c:224},{f:16,c:231},0,{f:7,c:249},352,376,381,[773,8254],353,8482,382,0,8194,{f:59,c:33},165,{f:31,c:93},65512,{f:2,c:125},0,{f:63,c:65377},{s:243},[8195,12288],{f:2,c:12289},65292,65294,12539,{f:2,c:65306},65311,65281,{f:2,c:12443},180,65344,168,65342,65507,65343,{f:2,c:12541},{f:2,c:12445},12291,20189,{f:3,c:12293},12540,8213,8208,65295,65340,[12316,65374],8214,65372,8230,8229,{s:4},{f:2,c:65288},{f:2,c:12308},65339,65341,65371,65373,{f:10,c:12296},65291,[8722,65293],177,215,247,65309,8800,65308,
-65310,{f:2,c:8806},8734,8756,9794,9792,176,{f:2,c:8242},8451,65509,65284,{f:2,c:65504},65285,65283,65286,65290,65312,167,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8251,12306,8594,{f:2,c:8592},8595,12307,8712,8715,{f:2,c:8838},{f:2,c:8834},8746,8745,{f:2,c:8743},65506,8658,8660,8704,8707,8736,8869,8978,8706,8711,8801,8786,{f:2,c:8810},8730,8765,8733,8757,{f:2,c:8747},8491,8240,9839,9837,9834,{f:2,c:8224},182,9711,{f:10,c:65296},{f:26,c:65313},{f:26,c:65345},{f:83,c:12353},{f:86,
-c:12449},{f:17,c:913},{f:7,c:931},{f:17,c:945},{f:7,c:963},{f:6,c:1040},1025,{f:32,c:1046},1105,{f:26,c:1078},20124,21782,23043,38463,21696,24859,25384,23030,36898,33909,33564,31312,24746,25569,28197,26093,33894,33446,39925,26771,22311,26017,25201,23451,22992,34427,39156,32098,32190,39822,25110,31903,34999,23433,24245,25353,26263,26696,38343,38797,26447,20197,20234,20301,20381,20553,22258,22839,22996,23041,23561,24799,24847,24944,26131,26885,28858,30031,30064,31227,32173,32239,32963,33806,[12176,
-34915],35586,36949,36986,21307,20117,20133,22495,32946,37057,30959,[12032,19968],22769,28322,36920,31282,33576,33419,39983,20801,21360,21693,21729,22240,23035,24341,39154,28139,32996,34093,38498,38512,38560,38907,21515,21491,23431,28879,[12155,32701],36802,[12204,38632],21359,40284,31418,19985,30867,[12165,33276],28198,22040,21764,27421,34074,39995,23013,21417,28006,[12128,29916],38287,22082,20113,36939,38642,33615,39180,21473,21942,23344,24433,26144,26355,26628,27704,27891,27945,29787,30408,31310,
-38964,33521,34907,35424,37613,28082,30123,30410,39365,24742,35585,36234,38322,27022,21421,20870,22290,22576,22852,23476,24310,24616,25513,25588,27839,28436,28814,28948,29017,29141,29503,32257,33398,33489,34199,36960,37467,40219,22633,26044,27738,29989,20985,22830,22885,24448,24540,25276,26106,27178,27431,27572,29579,32705,35158,40236,40206,[12009,40644],23713,27798,33659,20740,23627,25014,33222,26742,29281,[12036,20057],20474,21368,24681,28201,31311,[12211,38899],19979,21270,20206,20309,20285,20385,
-20339,21152,21487,22025,22799,23233,23478,23521,31185,26247,26524,26550,27468,27827,[12117,28779],29634,31117,[12146,31166],31292,31623,33457,33499,33540,33655,33775,33747,34662,35506,22057,36008,36838,36942,38686,34442,20420,23784,25105,[12123,29273],30011,33253,33469,34558,36032,38597,39187,39381,20171,20250,35299,22238,22602,22730,24315,24555,24618,24724,24674,25040,25106,25296,25913,39745,26214,26800,28023,28784,30028,30342,32117,33445,34809,38283,38542,[12185,35997],20977,21182,22806,21683,23475,
-23830,24936,27010,28079,30861,33995,34903,35442,37799,39608,28012,39336,34521,22435,26623,34510,37390,21123,22151,21508,24275,25313,25785,26684,26680,27579,29554,30906,31339,35226,[12179,35282],36203,36611,37101,38307,38548,[12208,38761],23398,23731,27005,{f:2,c:38989},25499,31520,27179,27263,26806,39949,28511,21106,21917,24688,25324,27963,28167,28369,33883,35088,36676,19988,39993,21494,26907,27194,38788,26666,20828,31427,33970,37340,37772,22107,40232,26658,33541,33841,31909,21E3,33477,[12129,29926],
-20094,20355,20896,23506,21002,21208,21223,24059,21914,22570,23014,23436,23448,23515,[12082,24178],24185,24739,24863,24931,25022,25563,25954,26577,26707,26874,27454,27475,27735,28450,28567,28485,29872,[12130,29976],30435,30475,31487,31649,31777,32233,[12152,32566],32752,32925,33382,33694,35251,35532,36011,36996,37969,38291,38289,38306,38501,38867,39208,33304,20024,21547,23736,24012,29609,30284,30524,23721,32747,36107,38593,38929,38996,39E3,20225,20238,21361,21916,22120,22522,22855,23305,23492,23696,
-24076,24190,24524,25582,26426,26071,26082,26399,26827,26820,27231,24112,27589,27671,27773,30079,31048,23395,31232,32E3,24509,35215,35352,36020,36215,36556,36637,39138,39438,[12004,12225,39740],[12018,20096],20605,20736,22931,23452,25135,25216,25836,27450,29344,30097,31047,32681,34811,35516,35696,25516,33738,38816,21513,21507,21931,26708,27224,35440,30759,26485,[12233,40653],21364,23458,33050,34384,36870,19992,20037,20167,20241,21450,21560,23470,[12088,24339],24613,25937,26429,27714,27762,27875,28792,
-29699,31350,31406,31496,32026,31998,32102,26087,[12124,29275],21435,23621,24040,25298,25312,25369,28192,34394,35377,36317,37624,28417,31142,[12226,39770],20136,{f:2,c:20139},20379,20384,20689,20807,31478,20849,20982,21332,21281,21375,21483,21932,22659,23777,24375,24394,24623,24656,24685,25375,25945,27211,27841,29378,29421,30703,33016,33029,33288,34126,37111,37857,38911,39255,39514,20208,20957,23597,26241,26989,23616,26354,26997,[12127,29577],26704,31873,20677,21220,22343,[12081,24062],37670,[12100,
-26020],27427,27453,29748,31105,31165,31563,32202,33465,33740,34943,35167,35641,36817,[12198,37329],21535,37504,20061,20534,21477,21306,29399,29590,30697,33510,36527,39366,39368,39378,20855,24858,34398,21936,31354,20598,23507,36935,38533,20018,27355,37351,23633,23624,25496,31391,27795,38772,36705,31402,29066,38536,31874,26647,32368,26705,37740,21234,21531,34219,35347,32676,36557,37089,21350,34952,31041,20418,20670,21009,20804,21843,22317,29674,22411,22865,24418,24452,24693,24950,24935,25001,25522,
-25658,25964,26223,26690,28179,30054,31293,31995,32076,32153,32331,32619,33550,33610,34509,35336,35427,35686,36605,38938,40335,33464,36814,39912,21127,25119,25731,28608,38553,26689,20625,[12107,27424],27770,28500,[12147,31348],32080,[12174,34880],35363,[12105,26376],20214,20537,20518,20581,20860,21048,21091,21927,22287,22533,23244,24314,25010,25080,25331,25458,26908,27177,29309,[12125,29356],29486,30740,30831,32121,30476,32937,[12178,35211],35609,36066,36562,36963,37749,38522,38997,39443,40568,20803,
-21407,21427,24187,24358,28187,28304,[12126,29572],29694,32067,33335,[12180,35328],35578,38480,20046,20491,21476,21628,22266,22993,23396,[12080,24049],24235,24359,[12094,25144],25925,26543,28246,29392,31946,34996,32929,32993,33776,[11969,34382],35463,36328,37431,38599,39015,[12238,40723],20116,20114,20237,21320,21577,21566,23087,24460,24481,24735,26791,27278,29786,30849,35486,35492,35703,37264,20062,39881,20132,20348,20399,20505,20502,20809,20844,21151,21177,21246,21402,[12061,21475],21521,21518,21897,
-22353,22434,22909,23380,23389,23439,[12079,24037],24039,24055,24184,24195,24218,24247,24344,24658,24908,25239,25304,25511,25915,26114,26179,26356,26477,26657,26775,27083,27743,27946,28009,28207,28317,30002,30343,30828,31295,31968,32005,32024,32094,32177,32789,32771,32943,32945,33108,33167,33322,33618,[12175,34892],34913,35611,36002,36092,37066,37237,37489,30783,37628,38308,38477,38917,[12217,39321],[12220,39640],40251,21083,21163,21495,21512,22741,25335,28640,35946,36703,40633,20811,21051,21578,22269,
-31296,37239,40288,[12234,40658],29508,28425,33136,29969,24573,24794,[12219,39592],29403,36796,27492,38915,20170,22256,22372,22718,23130,24680,25031,26127,26118,26681,26801,28151,30165,32058,[12169,33390],39746,20123,20304,21449,21766,23919,24038,24046,26619,27801,29811,30722,35408,37782,35039,22352,24231,25387,20661,20652,20877,26368,21705,22622,22971,23472,24425,25165,25505,26685,27507,28168,28797,37319,29312,30741,30758,31085,25998,32048,33756,35009,36617,38555,21092,22312,26448,32618,36001,20916,
-22338,38442,22586,27018,32948,21682,23822,22524,30869,40442,20316,21066,21643,25662,26152,26388,26613,31364,31574,32034,37679,26716,39853,31545,21273,20874,21047,23519,25334,25774,25830,26413,27578,34217,38609,30352,39894,25420,37638,39851,[12139,30399],26194,19977,20632,21442,[12077,23665],24808,25746,25955,26719,29158,29642,29987,31639,32386,34453,35715,36059,37240,39184,26028,26283,27531,20181,20180,20282,20351,21050,21496,21490,21987,22235,[12064,22763],22987,22985,23039,[12070,23376],23629,24066,
-24107,24535,24605,25351,[12096,25903],23388,26031,26045,26088,26525,[12108,27490],27515,[12114,27663],29509,31049,31169,[12151,31992],32025,32043,32930,33026,[12164,33267],35222,35422,35433,35430,35468,35566,36039,36060,38604,39164,[12013,27503],20107,20284,20365,20816,23383,23546,24904,25345,26178,27425,28363,27835,29246,29885,30164,30913,[12144,31034],[12157,32780],[12159,32819],[12163,33258],33940,36766,27728,[12229,40575],24335,35672,40235,31482,36600,23437,38635,19971,21489,22519,22833,23241,
-23460,24713,28287,28422,30142,36074,23455,34048,31712,20594,26612,33437,23649,34122,32286,33294,20889,23556,25448,36198,26012,29038,31038,32023,32773,35613,[12190,36554],36974,34503,37034,20511,21242,23610,26451,28796,29237,37196,37320,37675,33509,23490,24369,24825,20027,21462,23432,[12095,25163],26417,27530,29417,29664,31278,33131,36259,37202,[12216,39318],20754,21463,21610,23551,25480,27193,32172,38656,22234,21454,21608,23447,23601,24030,20462,24833,25342,27954,31168,31179,32066,32333,32722,33261,
-[12168,33311],33936,34886,35186,35728,36468,36655,36913,37195,37228,38598,37276,20160,20303,20805,[12055,21313],24467,25102,26580,27713,28171,29539,32294,37325,37507,21460,22809,23487,28113,31069,32302,31899,22654,29087,20986,34899,36848,20426,23803,26149,30636,31459,33308,39423,20934,24490,26092,26991,27529,28147,28310,28516,30462,32020,24033,36981,37255,38918,20966,21021,25152,26257,26329,28186,24246,32210,32626,26360,34223,34295,35576,21161,21465,[12069,22899],24207,24464,24661,37604,38500,20663,
-20767,21213,21280,21319,21484,21736,21830,21809,22039,22888,22974,23100,23477,23558,[12073,23567],23569,23578,24196,24202,24288,24432,25215,25220,25307,25484,25463,26119,26124,26157,26230,26494,26786,27167,27189,27836,28040,28169,28248,28988,28966,29031,30151,30465,30813,30977,31077,31216,31456,31505,31911,32057,32918,33750,33931,34121,34909,35059,35359,35388,35412,35443,35937,36062,37284,37478,37758,37912,38556,38808,19978,19976,19998,20055,20887,21104,22478,22580,22732,23330,24120,24773,25854,26465,
-26454,27972,29366,30067,31331,33976,35698,37304,37664,22065,22516,39166,25325,26893,27542,29165,32340,32887,[12170,33394],35302,[12215,39135],34645,36785,23611,20280,20449,20405,21767,23072,23517,23529,[12092,24515],24910,25391,26032,26187,26862,27035,28024,28145,30003,30137,30495,31070,31206,32051,[12162,33251],33455,34218,35242,35386,[12189,36523],[12191,36763],36914,37341,38663,[12040,20154],20161,20995,22645,22764,23563,29978,23613,33102,35338,36805,38499,38765,31525,35535,38920,37218,22259,21416,
-36887,21561,22402,24101,25512,[12116,27700],28810,30561,31883,32736,34928,36930,37204,37648,37656,38543,29790,39620,23815,23913,25968,26530,36264,38619,25454,26441,26905,33733,38935,38592,35070,28548,25722,[12072,23544],19990,28716,30045,26159,20932,21046,21218,22995,24449,24615,25104,25919,25972,26143,26228,26866,26646,27491,28165,29298,[12131,29983],30427,31934,32854,22768,35069,[11972,35199],35488,35475,35531,36893,37266,[11992,38738],38745,[12011,25993],31246,33030,38587,24109,24796,25114,26021,
-26132,26512,[12143,30707],31309,31821,32318,33034,36012,[12186,36196],36321,36447,30889,20999,25305,25509,25666,25240,35373,31363,31680,35500,38634,32118,[12166,33292],34633,20185,20808,21315,21344,23459,23554,23574,24029,25126,25159,25776,26643,26676,27849,27973,27927,26579,28508,29006,29053,26059,31359,31661,32218,32330,32680,33146,[12167,33307],33337,34214,35438,36046,36341,36984,36983,37549,37521,38275,39854,21069,21892,28472,28982,20840,31109,32341,33203,31950,22092,22609,23720,25514,26366,26365,
-26970,29401,30095,30094,30990,31062,31199,31895,32032,32068,34311,35380,38459,36961,[12239,40736],20711,21109,21452,21474,20489,21930,22766,22863,29245,23435,23652,21277,24803,24819,25436,25475,25407,25531,25805,26089,26361,24035,27085,27133,28437,29157,20105,30185,30456,31379,31967,32207,32156,32865,33609,33624,33900,33980,34299,35013,[12187,36208],36865,36973,37783,38684,39442,20687,22679,24974,33235,34101,36104,36896,20419,20596,21063,21363,24687,25417,26463,28204,[12188,36275],36895,20439,23646,
-36042,26063,32154,21330,34966,20854,25539,23384,23403,23562,25613,26449,36956,20182,22810,22826,27760,35409,21822,22549,22949,24816,25171,26561,33333,26965,38464,39364,39464,20307,22534,23550,32784,23729,24111,24453,24608,24907,25140,26367,27888,28382,32974,33151,33492,34955,36024,36864,36910,38538,40667,39899,20195,21488,[12068,22823],31532,37261,38988,40441,28381,28711,21331,21828,23429,25176,25246,25299,27810,28655,29730,35351,37944,28609,35582,33592,20967,34552,21482,21481,20294,36948,[12192,
-36784],22890,33073,24061,31466,36799,26842,[12181,35895],29432,40008,27197,35504,20025,21336,22022,22374,25285,25506,26086,27470,28129,28251,28845,30701,31471,31658,32187,32829,32966,34507,35477,37723,22243,22727,24382,26029,26262,27264,27573,30007,35527,20516,30693,22320,24347,24677,26234,27744,30196,31258,32622,33268,34584,36933,39347,31689,30044,[12149,31481],31569,33988,36880,31209,31378,33590,23265,30528,20013,20210,23449,24544,25277,26172,26609,27880,[12173,34411],34935,35387,37198,37619,39376,
-27159,28710,29482,33511,33879,36015,19969,20806,20939,21899,23541,24086,24115,24193,24340,24373,24427,24500,25074,25361,26274,26397,28526,29266,30010,30522,32884,33081,33144,34678,35519,35548,36229,36339,37530,[11985,12199,38263],38914,[12227,40165],21189,25431,30452,26389,27784,29645,36035,37806,38515,27941,22684,26894,27084,36861,37786,30171,36890,22618,26626,25524,27131,20291,28460,26584,36795,34086,32180,37716,26943,28528,22378,22775,23340,32044,[12118,29226],21514,37347,40372,20141,20302,20572,
-20597,21059,35998,21576,22564,23450,24093,24213,24237,24311,24351,24716,25269,25402,25552,26799,27712,30855,31118,31243,32224,33351,35330,35558,36420,36883,37048,37165,37336,[12237,40718],27877,25688,25826,25973,28404,30340,31515,36969,37841,28346,21746,24505,25764,36685,36845,37444,20856,22635,22825,23637,24215,28155,32399,29980,36028,36578,39003,28857,20253,27583,28593,[12133,3E4],38651,20814,21520,22581,22615,22956,23648,24466,[12099,26007],26460,28193,30331,33759,36077,36884,37117,37709,30757,
-30778,21162,24230,[12063,22303],22900,24594,20498,20826,20908,20941,[12049,20992],21776,22612,22616,22871,23445,23798,23947,24764,25237,25645,26481,26691,26812,26847,30423,28120,28271,28059,28783,29128,24403,30168,31095,31561,31572,31570,31958,32113,21040,33891,34153,34276,35342,35588,[12182,35910],36367,36867,36879,37913,38518,38957,39472,38360,20685,21205,21516,22530,23566,24999,25758,27934,30643,31461,33012,33796,36947,37509,23776,40199,21311,24471,24499,28060,29305,30563,31167,31716,27602,29420,
-35501,26627,27233,20984,31361,26932,23626,40182,33515,23493,[12195,37193],28702,22136,23663,24775,25958,27788,35930,36929,38931,21585,26311,37389,22856,37027,20869,20045,20970,34201,35598,28760,25466,37707,26978,39348,32260,30071,21335,26976,36575,38627,27741,[12038,20108],23612,24336,36841,21250,36049,[12161,32905],34425,24319,[12103,26085],20083,[12042,20837],22914,23615,38894,20219,22922,24525,35469,28641,31152,31074,23527,33905,29483,29105,24180,24565,25467,25754,29123,31896,20035,24316,20043,
-22492,22178,24745,28611,32013,33021,33075,33215,36786,35223,34468,24052,25226,25773,35207,26487,27874,27966,29750,30772,23110,32629,33453,[12218,39340],20467,24259,25309,25490,25943,26479,30403,29260,32972,32954,36649,37197,20493,22521,23186,26757,26995,29028,29437,36023,22770,36064,38506,36889,34687,31204,30695,33833,20271,21093,21338,25293,26575,27850,[12137,30333],31636,31893,33334,34180,36843,26333,28448,29190,32283,33707,39361,[12008,40614],20989,31665,30834,31672,32903,31560,27368,24161,32908,
-30033,30048,[12043,20843],37474,28300,30330,37271,39658,20240,32624,25244,31567,38309,40169,22138,22617,34532,38588,20276,21028,21322,21453,21467,24070,25644,26001,26495,27710,27726,29256,29359,29677,30036,32321,33324,34281,36009,31684,[12196,37318],29033,38930,39151,25405,26217,30058,30436,30928,34115,34542,21290,21329,21542,22915,24199,24444,24754,25161,25209,25259,26E3,[12112,27604],27852,30130,[12138,30382],30865,31192,32203,32631,32933,34987,35513,36027,36991,[12206,38750],[12214,39131],27147,
-31800,20633,23614,24494,26503,27608,29749,30473,32654,[12240,40763],26570,31255,21305,[12134,30091],39661,24422,33181,33777,32920,24380,24517,30050,31558,36924,26727,23019,23195,32016,30334,35628,20469,24426,27161,27703,28418,29922,31080,34920,35413,35961,24287,25551,30149,31186,33495,37672,37618,33948,34541,39981,21697,24428,25996,27996,28693,36007,36051,38971,25935,29942,19981,20184,22496,22827,23142,23500,20904,24067,24220,24598,25206,25975,26023,26222,28014,[12119,29238],31526,33104,33178,33433,
-35676,36E3,36070,36212,[12201,38428],38468,20398,25771,27494,33310,33889,34154,37096,23553,26963,[12213,39080],33914,34135,20239,21103,24489,24133,26381,31119,33145,35079,35206,28149,24343,25173,27832,20175,29289,39826,20998,21563,22132,22707,24996,25198,28954,22894,31881,31966,32027,38640,[12098,25991],32862,19993,20341,20853,22592,24163,24179,24330,26564,20006,34109,38281,38491,[12150,31859],[12212,38913],20731,22721,30294,30887,21029,30629,34065,31622,20559,22793,[12122,29255],31687,32232,36794,
-36820,36941,20415,21193,23081,24321,38829,20445,33303,37610,22275,25429,27497,29995,35036,36628,31298,21215,22675,24917,25098,26286,[11935,27597],31807,33769,20515,20472,21253,21574,22577,22857,23453,23792,23791,23849,24214,25265,25447,25918,[12101,26041],26379,27861,27873,28921,30770,32299,32990,33459,33804,34028,34562,35090,35370,35914,37030,37586,39165,40179,40300,20047,20129,20621,21078,22346,22952,24125,{f:2,c:24536},25151,26292,26395,26576,26834,20882,32033,32938,33192,35584,35980,36031,37502,
-38450,21536,38956,21271,20693,[12056,21340],22696,25778,26420,29287,30566,31302,37350,21187,27809,27526,22528,24140,22868,26412,32763,20961,30406,25705,30952,39764,[12231,40635],22475,22969,26151,26522,27598,21737,27097,24149,33180,26517,39850,26622,40018,26717,20134,20451,[12060,21448],25273,26411,27819,36804,20397,32365,40639,19975,24930,28288,28459,34067,21619,26410,39749,[11922,24051],31637,23724,23494,34588,28234,34001,31252,33032,22937,31885,[11936,27665],30496,21209,22818,28961,29279,[12141,
-30683],38695,40289,26891,23167,23064,20901,21517,21629,26126,30431,36855,37528,40180,23018,29277,28357,20813,26825,32191,32236,[12207,38754],40634,25720,27169,33538,22916,23391,[12113,27611],29467,30450,32178,32791,33945,20786,[12106,26408],40665,[12140,30446],26466,21247,39173,23588,25147,31870,36016,21839,24758,32011,[12200,38272],21249,20063,20918,22812,29242,32822,37326,24357,[12142,30690],21380,24441,32004,34220,35379,36493,38742,26611,34222,37971,24841,24840,27833,30290,35565,36664,21807,20305,
-20778,21191,21451,23461,24189,24736,24962,25558,26377,26586,28263,28044,{f:2,c:29494},30001,31056,35029,35480,36938,[12194,37009],37109,38596,34701,[12067,22805],20104,20313,19982,35465,36671,38928,20653,24188,22934,23481,24248,25562,25594,25793,26332,26954,27096,27915,28342,29076,[12132,29992],31407,[12154,32650],32768,33865,33993,35201,35617,36362,36965,38525,39178,24958,25233,27442,27779,28020,32716,32764,28096,32645,34746,35064,26469,33713,38972,38647,27931,32097,33853,37226,20081,21365,23888,
-27396,28651,34253,34349,35239,21033,21519,23653,26446,26792,29702,29827,30178,35023,35041,[12197,37324],38626,38520,24459,29575,[12148,31435],33870,25504,30053,21129,27969,28316,29705,30041,30827,31890,38534,[12015,31452],[12243,40845],20406,24942,26053,34396,20102,20142,20698,20001,20940,23534,26009,26753,28092,29471,30274,30637,31260,31975,33391,35538,36988,37327,38517,38936,[12050,21147],32209,20523,21400,26519,28107,29136,29747,33256,36650,38563,40023,40607,29792,22593,28057,32047,39006,20196,
-20278,20363,20919,21169,23994,24604,29618,31036,33491,37428,38583,38646,38666,40599,40802,26278,27508,21015,21155,28872,35010,24265,24651,24976,28451,29001,31806,32244,32879,34030,36899,37676,21570,39791,27347,28809,36034,36335,38706,21172,23105,24266,24324,26391,27004,27028,28010,28431,29282,29436,31725,[12156,32769],32894,34635,37070,20845,40595,31108,32907,37682,35542,20525,21644,35441,27498,36036,33031,24785,26528,40434,20121,20120,39952,35435,34241,34152,26880,28286,30871,33109,24332,19984,19989,
-20010,20017,[12034,20022],20028,[12035,20031],20034,20054,20056,20098,[12037,20101],35947,20106,33298,24333,20110,{f:2,c:20126},[12039,20128],20130,20144,20147,20150,20174,20173,20164,20166,20162,20183,20190,20205,20191,20215,20233,20314,20272,20315,20317,20311,20295,20342,20360,20367,20376,20347,20329,20336,20369,20335,20358,20374,20760,20436,20447,20430,20440,20443,20433,20442,20432,{f:2,c:20452},20506,20520,20500,20522,20517,20485,20252,20470,20513,20521,20524,20478,20463,20497,20486,20547,20551,
-26371,20565,20560,20552,20570,20566,20588,20600,20608,20634,20613,20660,20658,{f:2,c:20681},20659,20674,20694,20702,20709,20717,20707,20718,20729,20725,20745,{f:2,c:20737},20758,20757,20756,20762,20769,20794,20791,20796,20795,[12041,20799],[11918,20800],20818,20812,20820,20834,31480,{f:2,c:20841},20846,20864,[12044,20866],22232,20876,20873,20879,20881,20883,20885,[12045,20886],20900,20902,20898,{f:2,c:20905},[12046,20907],20915,{f:2,c:20913},20912,20917,20925,20933,20937,20955,[12047,20960],34389,
-20969,20973,20976,[12048,20981],20990,20996,21003,21012,21006,21031,21034,21038,21043,21049,21071,21060,{f:2,c:21067},21086,21076,21098,21108,21097,21107,21119,21117,21133,21140,21138,21105,21128,21137,36776,36775,{f:2,c:21164},21180,21173,21185,21197,21207,21214,21219,21222,39149,21216,21235,21237,21240,[12051,21241],21254,21256,30008,21261,21264,21263,[12052,21269],[12053,21274],21283,21295,21297,21299,[12054,21304],21312,21318,21317,19991,21321,21325,20950,21342,[12057,21353],21358,22808,21371,
-21367,[12058,21378],21398,21408,21414,21413,21422,21424,[12059,21430],21443,31762,38617,21471,26364,29166,21486,21480,21485,21498,21505,21565,21568,{f:2,c:21548},21564,21550,21558,21545,21533,21582,21647,21621,21646,21599,21617,21623,21616,21650,21627,21632,21622,21636,21648,21638,21703,21666,21688,21669,21676,21700,21704,21672,21675,21698,21668,21694,21692,21720,{f:2,c:21733},21775,21780,21757,21742,21741,21754,21730,21817,21824,21859,21836,21806,21852,21829,{f:2,c:21846},21816,21811,21853,21913,
-21888,21679,21898,21919,21883,21886,21912,21918,21934,21884,21891,21929,21895,21928,21978,21957,21983,21956,21980,21988,21972,22036,22007,22038,22014,22013,22043,22009,22094,22096,29151,22068,22070,22066,22072,22123,22116,22063,22124,22122,22150,22144,22154,22176,22164,22159,22181,22190,22198,22196,22210,22204,22209,22211,22208,22216,22222,22225,22227,[12062,22231],22254,22265,22272,22271,22276,22281,22280,22283,22285,22291,22296,22294,21959,22300,22310,{f:2,c:22327},22350,22331,22336,22351,22377,
-22464,22408,22369,22399,22409,22419,22432,22451,22436,22442,22448,22467,22470,22484,{f:2,c:22482},22538,22486,22499,22539,22553,22557,22642,22561,22626,22603,22640,27584,22610,22589,22649,22661,22713,22687,22699,22714,22750,22715,22712,22702,22725,22739,22737,22743,22745,22744,22757,22748,22756,22751,22767,22778,22777,{f:3,c:22779},[12065,22786],[12066,22794],22800,22811,26790,22821,{f:2,c:22828},22834,22840,22846,31442,22869,22864,22862,22874,22872,22882,22880,22887,22892,22889,22904,22913,22941,
-20318,20395,22947,22962,22982,23016,23004,22925,{f:2,c:23001},23077,23071,23057,23068,23049,23066,23104,23148,23113,{f:2,c:23093},23138,23146,23194,23228,23230,23243,23234,23229,23267,23255,23270,23273,23254,{f:2,c:23290},23308,23307,23318,23346,23248,23338,23350,23358,23363,23365,23360,23377,23381,{f:2,c:23386},23397,23401,23408,23411,23413,23416,25992,23418,[12071,23424],23427,23462,23480,23491,23495,23497,23508,23504,23524,23526,23522,23518,23525,23531,23536,23542,23539,23557,{f:2,c:23559},23565,
-23571,23584,[11920,12074,23586],23592,[12075,23608],23609,23617,23622,23630,23635,23632,23631,23409,23660,[12076,23662],20066,23670,23673,23692,23697,23700,22939,23723,23739,23734,23740,23735,23749,23742,23751,23769,23785,23805,23802,23789,23948,23786,23819,23829,23831,23900,23839,23835,23825,23828,23842,23834,23833,23832,23884,23890,23886,23883,23916,23923,23926,23943,23940,23938,23970,23965,23980,23982,23997,23952,23991,23996,24009,24013,24019,24018,24022,[12078,24027],24043,24050,24053,24075,24090,
-24089,24081,24091,{f:2,c:24118},24132,24131,24128,24142,24151,24148,24159,24162,24164,24135,{f:2,c:24181},[11923,12083,24186],40636,[12084,24191],24224,{f:2,c:24257},24264,24272,24271,24278,24291,24285,{f:2,c:24282},24290,24289,{f:2,c:24296},24300,24305,24307,24304,[12085,24308],24312,[12086,24318],24323,24329,24413,24412,[12087,24331],24337,24342,24361,24365,24376,24385,24392,24396,24398,24367,[11924,24401],{f:2,c:24406},24409,[12090,24417],24429,[12091,24435],24439,24451,24450,24447,24458,24456,
-24465,24455,24478,24473,24472,24480,24488,24493,24508,24534,24571,24548,24568,24561,24541,24755,24575,24609,24672,24601,24592,24617,24590,24625,24603,24597,24619,24614,24591,24634,24666,24641,24682,24695,24671,24650,24646,24653,24675,24643,24676,24642,24684,24683,24665,24705,24717,24807,24707,24730,24708,24731,{f:2,c:24726},24722,24743,24715,24801,24760,24800,24787,24756,24560,24765,24774,24757,24792,24909,24853,24838,{f:2,c:24822},24832,24820,24826,24835,24865,24827,24817,{f:2,c:24845},24903,24894,
-24872,24871,24906,24895,24892,24876,24884,24893,24898,24900,24947,24951,{f:3,c:24920},24939,24948,24943,24933,24945,24927,24925,24915,24949,24985,24982,24967,25004,24980,24986,24970,24977,25003,25006,25036,25034,25033,25079,25032,25027,25030,25018,25035,32633,25037,25062,25059,25078,25082,25076,25087,25085,25084,25086,25088,[12093,25096],25097,25101,25100,25108,25115,25118,25121,25130,25134,25136,{f:2,c:25138},25153,25166,25182,25187,25179,25184,25192,25212,25218,25225,25214,{f:2,c:25234},25238,25300,
-25219,25236,25303,25297,25275,25295,25343,25286,25812,25288,25308,25292,25290,25282,25287,25243,25289,25356,25326,25329,25383,25346,25352,25327,25333,25424,25406,25421,25628,25423,25494,25486,25472,25515,25462,25507,25487,25481,25503,25525,25451,25449,25534,25577,25536,25542,25571,25545,25554,25590,25540,25622,25652,25606,25619,25638,25654,25885,25623,25640,25615,25703,25711,25718,25678,25898,25749,25747,25765,25769,25736,25788,25818,25810,25797,25799,25787,25816,25794,25841,25831,33289,{f:2,c:25824},
-25260,25827,25839,25900,25846,25844,25842,25850,25856,25853,25880,25884,25861,25892,25891,25899,[12097,25908],[11929,25909],25911,25910,25912,30027,25928,25942,25941,25933,25944,25950,25949,25970,25976,{f:2,c:25986},35722,26011,26015,26027,26039,26051,26054,26049,26052,26060,26066,26075,26073,[12102,26080],[11931,26081],26097,26482,26122,26115,26107,26483,{f:2,c:26165},26164,26140,26191,26180,26185,26177,26206,26205,26212,{f:2,c:26215},26207,26210,26224,26243,26248,26254,26249,26244,26264,26269,26305,
-26297,26313,26302,26300,26308,26296,26326,26330,26336,26175,26342,26345,[12104,26352],26357,26359,26383,26390,26398,{f:2,c:26406},38712,26414,26431,26422,26433,26424,26423,26438,26462,26464,26457,{f:2,c:26467},26505,26480,26537,26492,26474,26508,26507,26534,26529,26501,26551,26607,26548,26604,26547,26601,26552,26596,26590,26589,26594,26606,26553,26574,26566,26599,27292,26654,26694,26665,26688,26701,26674,26702,26803,26667,26713,26723,26743,26751,26783,26767,26797,26772,26781,26779,26755,27310,26809,
-26740,26805,26784,26810,26895,26765,26750,26881,26826,26888,26840,26914,26918,26849,26892,26829,26836,26855,26837,26934,26898,26884,26839,26851,26917,26873,26848,26863,26920,26922,26906,26915,26913,26822,27001,26999,26972,27E3,26987,26964,27006,26990,26937,26996,26941,26969,26928,26977,26974,26973,27009,26986,27058,27054,27088,27071,27073,27091,27070,27086,23528,27082,27101,27067,27075,27047,27182,27025,27040,27036,27029,27060,27102,27112,27138,27163,27135,27402,27129,27122,27111,27141,27057,27166,
-27117,27156,27115,27146,27154,27329,27171,27155,27204,27148,27250,27190,27256,27207,27234,27225,27238,27208,27192,27170,27280,27277,27296,27268,{f:2,c:27298},27287,34327,27323,27331,27330,27320,27315,27308,27358,27345,27359,27306,27354,27370,27387,27397,34326,27386,27410,27414,39729,27423,27448,27447,30428,27449,39150,27463,27459,27465,27472,27481,27476,27483,27487,27489,27512,[12109,27513],{f:2,c:27519},27524,27523,27533,27544,27541,27550,27556,{f:2,c:27562},27567,27570,27569,[12110,27571],27575,
-27580,27590,[12111,27595],27603,27615,27628,27627,27635,27631,40638,27656,27667,[12115,27668],27675,27684,27683,27742,27733,27746,27754,27778,27789,27802,27777,27803,27774,27752,27763,27794,27792,27844,27889,27859,27837,27863,27845,27869,27822,27825,27838,27834,27867,27887,27865,27882,27935,34893,27958,27947,27965,27960,27929,27957,27955,27922,27916,28003,28051,28004,27994,28025,27993,28046,28053,28644,28037,28153,28181,28170,28085,28103,28134,28088,28102,28140,28126,28108,28136,28114,28101,28154,
-28121,28132,28117,28138,28142,28205,28270,28206,28185,28274,28255,28222,28195,28267,28203,28278,28237,28191,28227,28218,28238,28196,28415,28189,28216,28290,28330,28312,28361,28343,28371,28349,28335,28356,28338,{f:2,c:28372},28303,28325,28354,28319,28481,28433,28748,28396,28408,28414,28479,28402,28465,28399,28466,28364,28478,28435,28407,28550,28538,28536,28545,28544,28527,28507,28659,28525,28546,28540,28504,28558,28561,28610,28518,28595,28579,28577,28580,28601,28614,28586,28639,28629,28652,28628,28632,
-28657,28654,28635,28681,28683,28666,28689,28673,28687,28670,28699,28698,28532,28701,28696,28703,28720,28734,28722,28753,28771,28825,28818,28847,28913,28844,28856,28851,28846,28895,28875,28893,28889,28937,28925,28956,28953,29029,29013,29064,29030,29026,29004,29014,29036,29071,29179,29060,29077,29096,29100,29143,29113,29118,29138,29129,29140,29134,29152,29164,29159,29173,29180,29177,29183,29197,29200,29211,29224,29229,29228,29232,29234,[12120,29243],29244,[12121,29247],29248,29254,29259,29272,29300,
-29310,29314,29313,29319,29330,29334,29346,29351,29369,29362,29379,29382,29380,29390,29394,29410,{f:2,c:29408},29433,29431,20495,29463,29450,29468,29462,29469,29492,29487,29481,29477,29502,{f:2,c:29518},40664,29527,29546,29544,29552,29560,29557,29563,29562,29640,29619,29646,29627,29632,29669,29678,29662,29858,29701,29807,29733,29688,29746,29754,29781,29759,29791,29785,29761,29788,29801,29808,29795,29802,29814,29822,29835,29854,29863,29898,29903,29908,29681,29920,29923,29927,29929,29934,29938,{f:2,
-c:29936},29944,29943,29956,29955,29957,29964,29966,29965,29973,29971,29982,29990,29996,30012,30020,30029,30026,30025,30043,30022,30042,30057,30052,30055,30059,30061,30072,30070,{f:2,c:30086},30068,30090,30089,30082,30100,30106,30109,30117,30115,30146,30131,30147,30133,30141,30136,30140,30129,30157,30154,30162,30169,30179,30174,{f:2,c:30206},30204,30209,30192,30202,{f:2,c:30194},30219,30221,30217,30239,30247,{f:3,c:30240},30244,30260,30256,30267,{f:2,c:30279},30278,30300,30296,{f:2,c:30305},{f:3,c:30312},
-30311,30316,30320,30322,[12136,30326],30328,30332,30336,30339,30344,30347,30350,30358,30355,{f:2,c:30361},30384,30388,{f:3,c:30392},30402,30413,30422,30418,30430,30433,30437,30439,30442,34351,30459,30472,30471,30468,30505,30500,30494,{f:2,c:30501},30491,{f:2,c:30519},30535,30554,30568,30571,30555,30565,30591,30590,30585,30606,30603,30609,30624,30622,30640,30646,30649,30655,{f:2,c:30652},30651,30663,30669,30679,30682,30684,30691,30702,30716,30732,30738,31014,30752,31018,30789,30862,30836,30854,30844,
-30874,30860,30883,30901,30890,30895,30929,30918,30923,30932,30910,30908,30917,30922,30956,30951,30938,30973,30964,30983,30994,30993,31001,31020,31019,31040,31072,31063,31071,31066,31061,31059,31098,31103,31114,31133,31143,40779,31146,31150,31155,{f:2,c:31161},31177,31189,31207,31212,31201,31203,31240,31245,{f:2,c:31256},31264,31263,31104,31281,31291,31294,31287,31299,31319,31305,{f:2,c:31329},31337,40861,31344,31353,31357,31368,31383,31381,31384,31382,31401,31432,31408,31414,31429,31428,31423,36995,
-31431,31434,31437,31439,31445,31443,{f:2,c:31449},31453,{f:2,c:31457},31462,31469,31472,31490,31503,31498,31494,31539,{f:2,c:31512},31518,31541,31528,31542,31568,31610,31492,31565,31499,31564,31557,31605,31589,31604,31591,{f:2,c:31600},31596,31598,31645,31640,31647,31629,31644,31642,31627,31634,31631,31581,31641,31691,31681,31692,31695,31668,31686,31709,31721,31761,31764,31718,31717,31840,31744,31751,31763,31731,31735,31767,31757,31734,31779,31783,31786,31775,31799,31787,31805,31820,31811,31828,31823,
-31808,31824,31832,31839,31844,31830,31845,31852,31861,31875,31888,31908,31917,31906,31915,31905,31912,31923,31922,31921,31918,31929,31933,31936,31941,31938,31960,31954,31964,31970,39739,31983,31986,31988,31990,31994,32006,32002,32028,32021,32010,32069,32075,32046,32050,32063,32053,32070,32115,32086,32078,32114,32104,32110,32079,32099,32147,32137,32091,32143,32125,32155,32186,32174,32163,32181,32199,32189,32171,32317,32162,32175,32220,32184,32159,32176,32216,32221,32228,32222,32251,32242,32225,32261,
-32266,32291,32289,32274,32305,32287,32265,32267,32290,32326,32358,32315,32309,32313,32323,32311,32306,32314,32359,32349,32342,32350,{f:2,c:32345},32377,32362,32361,32380,32379,32387,32213,32381,36782,32383,{f:2,c:32392},32396,32402,32400,{f:2,c:32403},32406,32398,{f:2,c:32411},32568,32570,32581,{f:3,c:32588},32592,[12153,32593],32597,32596,32600,{f:2,c:32607},{f:2,c:32616},32615,32632,32642,32646,32643,32648,32647,32652,32660,32670,32669,32666,32675,32687,32690,32697,32686,32694,32696,35697,{f:2,
-c:32709},32714,32725,32724,32737,32742,32745,32755,32761,39132,32774,32772,32779,[12158,32786],{f:2,c:32792},32796,32801,32808,32831,32827,32842,32838,32850,32856,32858,32863,32866,32872,32883,32882,32880,32886,32889,32893,[12160,32895],32900,32902,32901,32923,32915,32922,32941,20880,32940,32987,32997,32985,32989,32964,32986,32982,33033,33007,33009,33051,33065,33059,33071,33099,38539,33094,33086,33107,33105,33020,33137,33134,{f:2,c:33125},33140,33155,33160,33162,33152,33154,33184,33173,33188,33187,
-33119,33171,33193,33200,33205,33214,33208,33213,33216,33218,33210,33225,33229,33233,33241,33240,33224,33242,{f:2,c:33247},33255,{f:2,c:33274},33278,{f:2,c:33281},33285,33287,33290,33293,33296,33302,33321,33323,33336,33331,33344,33369,33368,33373,33370,33375,33380,33378,33384,{f:2,c:33386},33326,33393,33399,[12171,33400],33406,33421,33426,33451,33439,33467,33452,33505,33507,33503,33490,33524,33523,33530,33683,33539,33531,33529,33502,33542,33500,33545,33497,33589,33588,33558,33586,33585,33600,33593,
-33616,33605,33583,33579,{f:2,c:33559},33669,33690,33706,33695,33698,33686,33571,33678,33671,33674,33660,33717,33651,33653,33696,33673,33704,33780,33811,33771,33742,33789,33795,33752,33803,33729,33783,33799,33760,33778,33805,33826,33824,33725,33848,34054,33787,33901,33834,33852,34138,33924,33911,33899,33965,33902,33922,33897,33862,33836,33903,33913,33845,33994,33890,33977,33983,33951,34009,33997,33979,34010,34E3,33985,33990,34006,33953,34081,34047,34036,{f:2,c:34071},34092,34079,34069,34068,34044,
-34112,34147,34136,34120,34113,34306,34123,34133,34176,34212,34184,34193,34186,34216,34157,34196,34203,34282,34183,34204,34167,34174,34192,34249,34234,34255,34233,34256,34261,34269,34277,34268,34297,34314,34323,34315,34302,34298,34310,34338,34330,34352,34367,[12172,34381],20053,34388,34399,34407,34417,34451,34467,{f:2,c:34473},{f:2,c:34443},34486,34479,34500,34502,34480,34505,34851,34475,34516,34526,34537,34540,34527,34523,34543,34578,34566,34568,34560,34563,34555,34577,34569,34573,34553,34570,34612,
-34623,34615,34619,34597,34601,34586,34656,34655,34680,34636,34638,34676,34647,34664,34670,34649,34643,34659,34666,34821,34722,34719,34690,34735,34763,34749,34752,34768,38614,34731,34756,34739,34759,34758,34747,34799,34802,34784,34831,34829,34814,{f:2,c:34806},34830,34770,34833,34838,34837,34850,34849,34865,34870,34873,34855,34875,34884,34882,34898,34905,34910,34914,34923,34945,34942,34974,34933,34941,34997,34930,34946,34967,34962,34990,34969,34978,34957,34980,34992,35007,34993,{f:2,c:35011},35028,
-{f:2,c:35032},35037,35065,35074,35068,35060,35048,35058,35076,35084,35082,35091,35139,35102,35109,{f:2,c:35114},35137,35140,35131,35126,35128,35148,35101,35168,35166,35174,35172,35181,35178,35183,35188,35191,[12177,35198],35203,35208,35210,35219,35224,35233,35241,35238,35244,35247,35250,35258,35261,{f:2,c:35263},35290,{f:2,c:35292},35303,35316,35320,35331,35350,35344,35340,35355,35357,35365,35382,35393,35419,35410,35398,35400,35452,35437,35436,35426,35461,35458,35460,35496,35489,35473,{f:2,c:35493},
-35482,35491,35524,35533,35522,35546,35563,35571,35559,35556,35569,35604,35552,35554,35575,35550,35547,35596,35591,35610,35553,35606,35600,35607,35616,35635,38827,35622,35627,35646,35624,35649,35660,35663,35662,35657,35670,35675,35674,35691,35679,35692,35695,35700,35709,35712,35724,35726,{f:2,c:35730},35734,{f:2,c:35737},35898,35905,35903,35912,35916,35918,35920,[12183,35925],35938,35948,[12184,35960],35962,35970,35977,35973,35978,{f:2,c:35981},35988,35964,35992,25117,36013,36010,36029,{f:2,c:36018},
-36014,36022,36040,36033,36068,36067,36058,36093,{f:2,c:36090},{f:2,c:36100},36106,36103,36111,36109,36112,40782,36115,36045,36116,36118,36199,36205,36209,36211,36225,36249,36290,36286,36282,36303,36314,36310,36300,36315,36299,{f:2,c:36330},36319,36323,36348,{f:2,c:36360},36351,{f:2,c:36381},36368,36383,36418,36405,36400,36404,36426,36423,36425,36428,36432,36424,36441,36452,36448,36394,36451,36437,36470,36466,36476,36481,36487,36485,36484,36491,36490,36499,36497,36500,36505,36522,36513,36524,36528,
-36550,36529,36542,36549,36552,36555,36571,36579,36604,36603,36587,36606,36618,36613,36629,36626,36633,36627,36636,36639,36635,36620,36646,36659,36667,36665,36677,36674,36670,36684,36681,36678,36686,36695,36700,{f:3,c:36706},36764,36767,36771,36781,36783,36791,36826,36837,36834,36842,36847,36999,36852,36869,{f:2,c:36857},36881,36885,36897,36877,36894,36886,36875,36903,36918,36917,36921,36856,{f:4,c:36943},36878,36937,36926,36950,36952,36958,36968,36975,36982,38568,36978,36994,36989,36993,36992,37002,
-37001,37007,37032,37039,37041,37045,37090,37092,25160,37083,37122,37138,37145,37170,37168,37194,37206,37208,37219,37221,37225,37235,37234,37259,37257,37250,37282,37291,37295,37290,37301,37300,37306,{f:2,c:37312},37321,37323,37328,37334,37343,37345,37339,37372,{f:2,c:37365},37406,37375,37396,37420,37397,37393,37470,37463,37445,37449,37476,37448,37525,37439,37451,37456,37532,37526,37523,37531,37466,37583,37561,37559,37609,37647,37626,37700,37678,37657,37666,37658,37667,37690,37685,37691,37724,37728,
-37756,37742,37718,37808,{f:2,c:37804},37780,37817,{f:2,c:37846},37864,37861,37848,37827,37853,37840,37832,37860,37914,37908,37907,37891,37895,37904,37942,37931,37941,37921,37946,37953,37970,37956,37979,37984,37986,37982,37994,37417,38E3,38005,38007,38013,37978,38012,38014,38017,38015,38274,38279,38282,38292,38294,{f:2,c:38296},38304,38312,38311,38317,38332,38331,38329,38334,38346,28662,38339,38349,38348,38357,38356,38358,38364,38369,38373,38370,38433,38440,{f:2,c:38446},38466,38476,38479,38475,38519,
-38492,38494,38493,38495,38502,38514,38508,38541,38552,38549,38551,38570,38567,{f:2,c:38577},38576,38580,[12202,38582],38584,[12203,38585],38606,38603,38601,38605,35149,38620,38669,38613,38649,38660,38662,38664,38675,38670,38673,38671,38678,38681,38692,38698,38704,38713,{f:2,c:38717},38724,38726,38728,38722,38729,38748,38752,38756,38758,38760,21202,38763,38769,38777,38789,38780,38785,38778,38790,38795,{f:2,c:38799},38812,38824,38822,38819,{f:2,c:38835},38851,38854,38856,[12209,38859],38876,[12210,
-38893],40783,38898,31455,38902,38901,38927,38924,38968,38948,38945,38967,38973,38982,38991,38987,39019,{f:3,c:39023},39028,39027,39082,39087,39089,39094,39108,39107,39110,39145,39147,39171,39177,39186,39188,39192,39201,{f:2,c:39197},39204,39200,39212,39214,{f:2,c:39229},39234,39241,39237,39248,39243,{f:2,c:39249},39244,39253,{f:2,c:39319},39333,{f:2,c:39341},39356,39391,39387,39389,39384,39377,{f:2,c:39405},{f:2,c:39409},39419,39416,39425,39439,39429,39394,39449,39467,39479,39493,39490,39488,39491,
-39486,39509,39501,39515,39511,39519,39522,39525,39524,39529,39531,39530,39597,39600,39612,39616,39631,39633,{f:2,c:39635},39646,[12221,39647],{f:2,c:39650},39654,39663,39659,39662,39668,39665,39671,39675,39686,39704,39706,39711,{f:2,c:39714},[12222,39717],{f:4,c:39719},39726,[12223,39727],[12224,39730],39748,39747,39759,{f:2,c:39757},39761,39768,39796,39827,39811,39825,{f:2,c:39830},{f:2,c:39839},39848,39860,39872,39882,39865,39878,39887,{f:2,c:39889},39907,39906,39908,39892,39905,39994,39922,39921,
-39920,39957,39956,39945,39955,39948,39942,39944,39954,39946,39940,39982,39963,39973,39972,39969,39984,40007,39986,40006,39998,40026,40032,40039,40054,40056,40167,40172,40176,40201,40200,40171,40195,40198,40234,40230,40367,40227,40223,40260,40213,40210,40257,40255,40254,40262,40264,{f:2,c:40285},40292,40273,40272,40281,40306,40329,40327,40363,40303,40314,40346,40356,40361,40370,40388,40385,40379,40376,40378,40390,40399,40386,40409,40403,40440,40422,40429,40431,40445,{f:2,c:40474},40478,[12228,40565],
-40569,40573,40577,40584,{f:2,c:40587},40594,40597,40593,40605,[12230,40613],40617,40632,40618,40621,38753,40652,{f:3,c:40654},40660,40668,40670,40669,40672,40677,40680,40687,40692,{f:2,c:40694},[12235,40697],{f:2,c:40699},[12236,40701],{f:2,c:40711},30391,40725,40737,40748,40766,[12241,40778],[12242,40786],40788,40803,{f:3,c:40799},{f:2,c:40806},40812,40810,40823,40818,40822,40853,[12244,40860],[12245,40864],22575,27079,36953,29796,0,{f:76,c:9472},{f:20,c:9312},{f:10,c:8544},13129,13076,0,13133,0,
-13095,0,13110,13137,0,13069,13094,0,13099,13130,0,{f:3,c:13212},{f:2,c:13198},13252,13217,12317,12319,8470,13261,0,{f:5,c:12964},{f:2,c:12849},12857,13182,13181,13180,8750,8721,{s:3},8735,8895,0,0,21854,{s:7},167133,0,0,28976,0,40407,{s:4},64054,0,0,22169,15694,{s:4},20448,0,0,36544,0,194797,{s:4},153716,32363,33606,167670,{s:3},40572,0,0,26171,0,40628,{s:4},26629,{s:5},23650,0,194780,0,32353,0,0,64070,{s:5},34083,37292,{s:7},34796,{s:8},25620,0,0,39506,{s:4},64074,0,194692,{s:4},31774,{s:6},64016,
-25681,0,0,63980,22625,39002,0,194679,{s:3},31153,0,28678,{s:9},22218,{s:3},21085,0,28497,37297,{s:10},64106,{s:6},38960,0,40629,{s:9},33802,63939,{f:2,c:63890},63897,0,34847,194575,0,194771,194584,{s:7},137754,23643,{s:4},25890,0,0,26618,0,26766,0,148432,194848,{s:21},34110,{s:15},30562,{s:12},65075,0,{f:2,c:65073},{s:4},65072,{f:2,c:65077},{f:2,c:65081},0,0,{f:2,c:65079},{f:2,c:65087},{f:2,c:65085},{f:4,c:65089},{f:2,c:65083},{s:41},{f:3,c:12436},0,0,22099,{s:41},65508,65287,65282,0,9665,9655,8681,
-8679,8678,8680,9634,9831,9825,9828,9826,13216,13218,{f:2,c:13220},13207,8467,13208,13235,13234,13233,13232,{f:3,c:13189},13259,13200,13268,13206,13090,13078,13080,13077,13059,13091,13143,13122,13113,13115,13056,13105,13127,13086,13098,0,13183,8481,9742,12342,12320,{s:3},{f:9,c:9352},{f:20,c:9332},12881,{f:10,c:8560},{f:10,c:12882},{f:26,c:9372},12867,12861,12863,12852,12856,12851,12860,12866,12862,12854,12853,12859,12864,12858,12976,12973,12969,12975,12948,12970,12952,12971,12946,12945,12947,12972,
-12974,12950,{s:8},{f:3,c:9131},0,{f:3,c:9127},0,13260,13061,0,0,13215,13219,13222,0,0,12958,{f:2,c:13192},13256,8749,0,12848,{f:6,c:12842},12855,12865,10145,{s:3},9673,9824,9829,9827,9830,{f:4,c:9728},9758,{f:2,c:9756},9759,12953,9450,{f:2,c:8554},{s:3},{f:8,c:9601},9615,9614,9613,9612,9611,9610,9609,{f:2,c:9620},{f:2,c:9581},9584,9583,9552,9566,9578,9569,{f:2,c:9698},9701,9700,0,0,{f:3,c:9585},{s:20},20956,29081,{f:9,c:10102},{s:3},{f:2,c:8570},{s:3},8575,8458,8457,0,0,12292,8646,{f:2,c:8644},0,
-{f:4,c:12535},0,0,12957,{s:3},13179,{s:3},13107,13134,{s:30},32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,[12033,20008],20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,0,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,0,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,
-23488,29999,23512,0,23582,23718,23738,23797,23847,23891,0,23874,23917,{f:2,c:23992},24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26121,26158,0,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,0,26470,26555,26706,26560,0,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,
-28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,{f:2,c:28998},0,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,0,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,{f:3,c:64024},31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,0,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,
-33972,34131,34137,34155,64031,34224,{f:2,c:64032},34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,0,64037,36967,37086,64038,37141,37159,37338,37335,37342,{f:2,c:37357},{f:2,c:37348},37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,{f:2,c:37495},37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,0,64041,38557,38575,
-38707,38715,38723,38733,38735,[12205,38737],0,38999,39013,{f:2,c:64042},39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,0,92,{s:634},8364,8486,0,0,64256,{f:2,c:64259},257,299,363,275,333,256,298,362,274,332,{f:4,c:8539},{f:2,c:8531},8304,{f:6,c:8308},{f:10,c:8320},461,282,0,7868,463,0,296,465,0,467,366,360,462,283,0,7869,464,0,297,466,0,468,367,361,593,8049,8048,509,0,596,0,0,601,0,0,602,0,0,603,8051,8050,0,331,629,652,0,0,658,643,720,{s:682},
-{f:10,c:12832},{s:108},{f:4,c:12892},{f:15,c:12977},{s:50},{f:26,c:9424},{f:26,c:9398},{s:48},{f:47,c:13008},0,{f:10,c:12928},12944,{f:6,c:12938},0,12959,{s:6},{f:2,c:12960},12955,12954,12963,12962,12951,0,12956,12949,{s:6},9676,{s:11},10111,{f:10,c:9451},{s:510},8414,{s:815},13274,{s:3},8448,13250,0,0,8453,0,13169,0,0,13197,13211,{s:3},{f:2,c:13271},{s:3},{f:2,c:13057},13060,13062,0,13064,0,13063,13066,0,13065,0,13067,0,13068,{f:6,c:13070},0,13079,0,13081,0,{f:4,c:13082},{f:3,c:13087},13092,0,13093,
-0,0,{f:2,c:13096},0,13101,0,0,{f:3,c:13102},13106,0,0,{f:2,c:13108},13116,{s:3},13111,0,13112,13114,13117,13121,{f:3,c:13118},{f:4,c:13123},13128,{f:2,c:13131},{f:2,c:13135},0,0,13138,13140,0,0,13139,{f:2,c:13141},{s:132},8501,976,8714,8463,0,981,987,977,0,{f:2,c:9832},9836,{s:5},12347,0,{f:3,c:12339},8252,8265,{s:5},8723,0,8771,{f:2,c:8818},{s:6},{f:2,c:12312},{f:2,c:65375},{s:10},9115,{f:2,c:9117},9120,{s:4},9121,{f:2,c:9123},9126,{s:12},[9116,9119,9122,9125,9130],{s:8},9986,0,0,12349,0,12447,0,
-0,8709,8864,8854,8856,8853,8855,{s:4},9664,9654,{s:4},8656,8596,{f:2,c:8600},{f:2,c:8598},8652,8651,{s:10},12336,8967,{s:8},10048,10047,{s:7},9643,0,9642,0,10010,{s:12},9702,{s:4},10070,{s:379},{f:2,c:65093},{s:679},64103,64098,32227,[12232,40643],28331,64082,64061,64069,64062,27114,28212,64096,64071,64056,64066,64078,34395,64105,64052,64099,25581,25802,30799,64084,63856,64077,64097,64072,64076,{f:2,c:64091},64081,64067,64090,28041,29376,0,194885,64086,64080,64049,64059,24034,64063,64101,21373,64055,
-64095,24501,64064,0,64083,0,64085,64104,64068,64089,26202,64053,64075,64100,64065,64048,0,64057,64051,27493,64058,27599,64050,25150,64079,63773,63964,63798,28122,63952,26310,27511,64087,37706,0,37636,{s:120},133390,{s:120},35999,11991,[11965,158033],{s:5},37555,38321,0,0,194812,{s:13},194965,{s:8},194794,0,26478,11974,0,194594,{s:13},13314,0,0,26083,{s:4},134071,{s:10},171339,0,194611,24378,{s:8},11945,0,20465,{s:7},63753,{s:7},11964,0,0,194732,26435,{s:3},133732,35329,25142,0,0,21555,23067,{s:3},
-25221,0,0,194819,{s:6},21567,{s:9},27506,{s:4},29986,19256,0,0,24063,{s:6},194827,29626,134047,{s:3},194600,0,194849,{s:5},194623,{s:16},194675,{f:2,c:11916},23577,{s:3},131083,23426,194642,{s:5},11997,[11999,39136],[11998,169599],14221,0,[11927,14586],0,194887,0,[11909,20155],131490,{s:7},13599,0,194738,0,0,[11971,35200],{s:4},31237,{s:4},35498,0,32085,0,28568,{s:7},25591,30246,{s:4},[11978,163767],{s:5},146686,{s:5},13351,0,0,33067,0,0,194842,{s:5},11950,{s:5},194714,{s:3},194831,{s:19},22305,135741,
-194586,0,64003,{s:7},21534,15240,20839,{s:4},63839,{s:9},20023,{s:13},[11946,150804],24421,23020,194658,0,24217,{s:46},13416,{s:8},21200,{s:9},26625,0,195024,195039,{s:5},153215,0,0,11959,{s:4},36534,63775,{s:3},63875,{s:5},31867,63906,0,63898,0,[11961,32770],157360,{s:4},[11911,132648],0,0,131210,194604,[11915,13630],{s:4},21589,0,22841,0,0,23414,194669,23572,14306,23782,0,20040,0,0,194742,{s:4},158105,25371,0,0,26211,0,194779,0,0,27126,27014,{s:3},27596,0,28183,0,0,27818,{s:3},[11942,20012],0,0,
-29935,30069,30188,30286,16305,30570,30633,{s:6},31571,0,0,16996,{s:3},194924,0,0,32328,{s:5},11955,{s:4},33089,17491,0,[11966,33401],[11967,64094],[11968,64093],0,20857,33626,{s:3},17701,0,34292,131248,{s:4},34429,0,13358,35014,{s:6},18406,{s:8},36808,{s:19},166279,0,0,167447,0,0,38969,{s:6},39432,{s:4},39903,{s:10},148206,{s:5},21385,0,64017,194785,0,146622,132625,0,{f:2,c:19972},19999,20011,{f:2,c:20015},{f:2,c:20032},20036,[11907,20058],20095,20109,20118,20153,20176,20192,20221,20223,20235,20245,
-20320,20283,20297,20308,20346,{f:2,c:20349},20375,20414,20431,20477,{f:2,c:20480},20496,20507,20519,20526,20567,20582,20586,20539,20623,20630,20636,20684,20710,20713,20719,20744,20747,20752,20763,20766,20831,20897,20924,0,20974,20980,20993,[11913,20994],21011,21065,21089,21094,21139,21192,21232,{f:2,c:21258},21310,21324,21323,21345,21356,21419,21466,21478,21493,21543,21581,21606,21611,21620,21645,21654,21665,21677,21689,21695,21702,21709,21774,21803,21813,21834,21856,0,21896,21902,22024,{f:2,c:22030},
-22071,22079,22089,22091,22095,22118,22121,22127,{f:2,c:22129},22165,22170,{f:2,c:22188},22193,22217,22237,22244,22282,22293,22307,22319,{f:2,c:22323},22348,22384,22412,22428,22456,22502,22509,{f:2,c:22517},22527,22537,22560,22578,22652,22656,22697,22734,22736,22740,22746,22761,22796,22820,22831,22881,22893,22986,22994,23005,{f:2,c:23011},23044,23052,23075,23111,23125,23139,23149,23166,23198,23207,23212,23219,23264,23296,23321,23333,23341,23361,23420,{f:2,c:23422},23434,[11919,23587],23595,23600,23651,
-23657,23676,23755,23762,23796,23844,23846,23875,23878,23882,23954,23956,23961,23968,24024,24032,24056,24064,24082,{f:2,c:24084},24088,24110,24152,{f:2,c:24171},24232,24234,{f:2,c:24254},0,24274,24327,24334,{f:2,c:24348},24354,24360,24374,24379,24384,[12089,24400],24408,24420,24457,24476,24487,24484,24495,24504,[11926,24516],24521,24545,24553,24557,24572,24599,24602,24627,24673,24703,24734,24740,24752,24779,24795,24824,{f:3,c:24850},24860,24956,24973,24991,25E3,25026,25055,25109,25129,25155,25158,
-[11928,25164],25169,25174,25284,25340,25354,25357,25368,25401,{f:2,c:25410},25445,25460,25469,25476,25479,25488,25502,25553,25564,25609,25616,25634,25684,25691,25709,25723,{f:2,c:25790},25829,25847,25851,25860,25878,25881,25927,25959,25985,25989,26050,26096,26098,26156,26188,{f:2,c:26203},26209,26219,0,26276,26312,26348,26373,26387,26419,26440,26444,26486,26491,26544,26546,26617,26583,26585,26608,26668,{f:2,c:26672},26715,26738,26741,26746,26756,26789,26802,26832,26838,26856,26861,{f:2,c:26864},26876,
-26897,26899,26933,26939,26967,26979,26994,{f:2,c:27007},27046,27053,27063,{f:2,c:27094},27137,27151,27157,27176,27188,27198,27205,{f:2,c:27216},27222,27227,27267,27273,27281,{f:3,c:27293},27356,27367,27372,27422,27428,27445,27462,27478,27488,27522,27582,27617,27633,27664,27699,[11937,27701],11938,27737,27766,27771,27781,27797,27804,27856,27860,27862,27872,{f:2,c:27883},27886,27914,27918,27921,27950,27991,27998,28005,28034,28095,28100,28106,28118,28137,28194,28241,28359,28362,28366,28413,28442,28458,
-28463,28467,28506,28510,28514,28541,28555,28557,28562,28564,28570,{f:2,c:28583},28598,28634,28638,0,28729,28732,0,28756,{f:2,c:28765},28772,[11939,28780],28798,28801,28821,28855,{f:2,c:28883},28888,28892,28935,28960,28977,29002,29010,29024,29049,29074,0,29131,29139,29142,29184,29213,29227,29240,29249,29267,{f:2,c:29269},29276,29325,[11944,29357],29364,29383,29435,{f:2,c:29444},29480,29489,29507,29548,29564,29571,{f:2,c:29573},29589,{f:3,c:29598},29606,29611,29621,29623,29628,29647,29657,29673,29684,
-29693,29700,29706,{f:2,c:29722},29732,29736,29740,{f:3,c:29743},29753,29764,29767,29771,29773,29777,29783,29798,29803,29809,29824,{f:3,c:29829},29840,29848,29852,29856,29859,29864,29867,29877,29887,29896,29914,29918,30030,30073,30081,30096,[12135,30098],30099,30132,30180,30201,30208,30218,{f:2,c:30229},30233,30238,30253,30261,30275,30283,30309,30317,30319,30321,30324,{f:2,c:30372},30405,30412,30444,30460,30516,30518,30556,{f:2,c:30559},30578,30589,30613,30634,30694,30704,30708,30726,30754,{f:2,c:30765},
-30768,30773,30824,30878,30920,30924,30926,30948,{f:2,c:30944},30962,30967,30971,31025,0,[11949,31035],31037,31045,{f:2,c:31067},31115,31126,31128,[12145,31160],31163,31178,31194,31235,31241,31249,31262,31277,31289,31301,31308,31325,0,31341,31352,31392,31395,31411,{f:2,c:31419},31430,31495,31508,31527,31537,31559,31566,31584,31593,31597,31602,31633,31663,31703,31705,31755,31759,31776,31782,31793,31798,31825,31833,31847,31854,31856,31932,31935,{f:2,c:31944},31959,31961,31965,31979,{f:3,c:32007},32019,
-32029,32035,32065,32083,32089,32093,32122,32134,{f:2,c:32139},32204,32235,32241,32249,32264,32273,32277,32288,32327,32354,32366,32371,32397,32401,32408,32580,32591,[11947,11954,32594],[11953,32595],32609,32657,32703,32718,32735,32741,32748,{f:2,c:32750},32762,32782,32785,32788,32804,32806,32826,32828,32864,32881,32885,32926,32934,32939,{f:2,c:32983},33046,33048,33082,33098,33100,33153,33156,33204,33231,33273,33283,33313,33330,33332,33350,33355,33359,33422,33454,33463,33470,33478,33534,33603,33617,
-33621,33670,33677,33682,33688,33705,{f:2,c:33727},33770,33807,33809,33866,33910,33960,33967,33984,33986,34032,34045,34060,34100,34142,34191,34231,34254,34221,34322,34345,34386,34403,34412,34415,34426,34445,34449,34456,{f:2,c:34471},34554,34557,34571,34579,34585,34590,34600,34622,34673,34696,34713,{f:2,c:34732},34741,34774,34795,34797,34817,0,34822,34827,34836,34844,34902,34911,[11970,34916],34968,34986,{f:2,c:35005},35018,35026,35035,{f:2,c:35056},35078,{f:3,c:35096},35111,35120,35134,35195,35284,
-35286,35301,35313,35335,35343,35349,35362,35406,35455,35572,35615,35639,{f:2,c:35651},35668,35740,35742,35911,35924,35955,36004,36057,36065,36088,36094,36123,36201,36204,36228,36237,36245,36262,36294,36302,36324,36332,36384,36427,36460,36464,36474,36498,36526,36531,36561,36564,36601,36631,36662,36774,[12193,36789],[11981,36790],0,36832,36836,36854,36866,36908,36932,37E3,37013,37017,37019,37026,37044,37079,37085,37108,37143,37148,37169,37178,37181,37192,37211,37217,37220,37262,37278,37288,{f:2,c:37293},
-37298,37308,37360,37367,37371,37383,37416,37427,37432,37443,37447,37455,37472,37570,{f:2,c:37579},37599,37645,37653,37663,37671,37703,37714,0,37738,37741,37787,37818,37801,37825,37834,37858,37882,37885,37903,37940,37951,37973,37995,38002,[11986,38264],38310,38313,0,38324,38333,38362,[11983,11990,38429],38465,38488,38532,38564,38569,38610,195060,38622,38633,38641,38658,38665,38746,38755,38766,38771,38810,38818,{f:2,c:38837},38873,38878,38900,38922,38926,38942,38947,38955,38974,{f:2,c:38994},39001,
-39020,39096,39098,39103,39112,39141,{f:2,c:39218},39232,39245,39260,39263,39345,{f:2,c:39353},39369,39426,39446,39460,39463,{f:2,c:39469},39478,39480,39498,39510,{f:2,c:39605},39673,39683,39712,{f:2,c:39731},39795,39801,39847,39873,39879,39895,39911,39915,39927,39930,39933,39947,39975,39978,39990,40001,40019,40035,40048,40055,40194,40258,40263,40291,40297,40316,40318,40333,40369,40387,40391,40406,40415,40427,40436,40469,40477,40612,40616,40620,40679,40686,40720,40722,40727,40729,40751,40759,40761,
-40769,40773,40791,40808,40817,40821,40848,40852,40866,0,13317,194564,22048,24267,11925,0,144954,0,28665,28390,29107,[11940,64073],{s:4},[11980,64102],0,23986,0,20435,20697,20720,20931,22134,27220,27905,28112,28226,28377,29668,29729,30060,30801,34805,144382,29608,15091,13531,17420,16010,0,0,19432,0,16090,15138,0,17786,16531,0,18021,16643,17043,18094,13448,140809,{f:3,c:63584},63610,63615,{s:23},{f:2,c:8836},{f:2,c:8842},8713,0,{f:2,c:8965},{s:9},{f:2,c:8741},{s:14},8802,0,8773,8776,{f:2,c:8822},{s:4},
-8487,{s:209},{f:2,c:8922},8533,8984,{f:2,c:7742},{f:2,c:504},470,472,474,476,260,728,317,346,350,356,377,379,261,731,318,347,711,351,357,378,733,380,340,258,313,262,268,280,270,323,327,336,344,368,354,341,259,314,263,269,281,271,273,324,328,337,345,369,355,729,264,284,292,308,348,364,265,285,293,309,349,365,625,651,638,620,622,633,648,598,627,637,642,656,635,621,607,626,669,654,609,624,641,295,661,660,614,664,450,595,599,644,608,403,616,649,600,604,606,592,623,650,612,594,653,613,674,673,597,657,
-634,615,865,712,716,721,8255,783,{f:5,c:741},0,0,805,812,825,796,{f:2,c:799},829,809,815,734,804,816,828,820,{f:2,c:797},{f:2,c:792},810,{f:2,c:826},794,{s:3},{f:2,c:610},618,628,630,632,640,655,665,668,671,688,690,695,704,{f:2,c:736},{s:6},8862,{s:287},12348,12543,0,{f:2,c:12310},9838,9835,{f:2,c:10548},10687,0,12448,0,{f:2,c:10746},{s:13},962,{f:10,c:9461},{f:2,c:9750},9649,{f:10,c:12784},0,{f:6,c:12794},{f:15,c:9150},0,0,10003,0,9251,9166,{f:4,c:9680},{f:2,c:8263},0,8273,8258,{f:16,c:12688},{s:13},
-{f:2,c:9136},{f:12,c:9842},{f:2,c:12441},8413,{s:450},20296,20319,20330,20332,20494,20504,20545,20722,20688,20742,20739,20789,20821,20823,13493,20938,20962,21079,21196,21206,21243,21276,21347,21405,21522,21631,21640,21840,21889,21933,21966,22075,22174,22185,22195,22391,22396,135963,22479,22500,22628,22665,136302,22738,22752,34369,22923,22930,22979,23059,23143,23159,23172,23236,137405,23421,23443,23570,64060,136884,23674,23695,23711,23715,23722,23760,138804,23821,23879,23937,23972,23975,24011,24158,
-24313,24320,24322,24355,24381,24404,24445,24589,24596,24600,24629,24647,24733,24788,24797,24875,25020,25017,25122,25178,25199,25302,25468,25573,25721,25796,25808,25897,26013,26170,26146,26155,26160,26163,26184,143812,{f:2,c:26231},26253,26299,26331,26344,26439,26497,26515,26520,26523,26620,26653,26787,26890,26953,144836,26946,26980,27045,27087,15286,15299,27113,27125,145215,27195,145251,27284,27301,15375,27419,27436,27495,27561,27565,27607,27647,27653,27764,27800,27899,27846,27953,27961,27967,27992,
-28052,28074,28123,28125,28228,28254,28337,28353,28432,28505,28513,28542,28556,28576,28604,28615,28618,28656,28750,28789,28836,28900,28971,28958,28974,29009,29032,29061,29063,29114,29124,29205,15935,29339,149489,29479,29520,29542,29602,29739,29766,29794,29805,29862,29865,29897,29951,29975,16242,30158,30210,30216,30308,30337,30365,30378,30390,30414,30420,30438,30449,30474,30489,{f:2,c:30541},30586,30592,30612,30688,152718,30787,30830,30896,152846,30893,30976,31004,31022,31028,31046,31097,31176,153457,
-31188,31198,31211,31213,31365,154052,31438,31485,31506,31533,31547,31599,31745,31795,155041,31853,31865,31887,31892,31904,31957,32049,32092,32131,32166,32194,32296,32663,32731,32821,32823,32970,32992,33011,33120,{f:2,c:33127},33133,33211,33226,33239,17499,33376,33396,158463,33441,{f:2,c:33443},33449,33471,33493,33533,33536,33570,33581,33594,33607,33661,33703,33743,33745,33761,33793,33798,33887,33904,33907,33925,33950,33978,159296,34098,34078,34095,34148,34170,34188,34210,34251,34285,34303,{f:2,c:34308},
-34320,159988,34328,34360,34391,34402,17821,34421,34488,34556,34695,17898,34826,34832,35022,161412,35122,35129,35136,35220,35318,35399,35421,35425,35445,35536,35654,35673,35689,35741,35913,35944,36271,36305,36311,36387,36413,36475,164471,18500,36602,36638,36653,36692,164813,36840,36846,36872,36909,37015,37043,37054,{f:2,c:37060},37063,37103,37140,37142,{f:2,c:37154},37167,37172,37251,37361,37705,{f:2,c:37732},37795,37855,37892,37939,37962,37987,38001,38286,38303,38316,38326,38347,38352,38355,18864,
-38366,38565,38639,38734,38805,38830,38842,38849,38857,38875,38998,39143,39256,39427,39617,39619,39630,39638,39682,39688,19479,39725,39774,39782,39812,39818,39838,39886,39909,39928,39971,{f:2,c:40015},40037,{f:2,c:40221},40259,40274,40330,40342,40384,40364,40380,172432,40423,40455,40606,40623,40855,131209,19970,19983,19986,20009,20014,20039,131234,20049,13318,131236,20073,20125,13356,20156,20163,20168,20203,20186,20209,20213,20246,20324,20279,20286,20312,131603,{f:2,c:20343},20354,20357,20454,20402,
-20421,20427,20434,13418,20466,20499,20508,20558,20563,20579,20643,20616,{f:2,c:20626},20629,20650,131883,20657,{f:2,c:20666},20676,20679,20723,131969,20686,131953,20692,20705,13458,132089,20759,132170,20832,132361,20851,20867,20875,13500,20888,20899,20909,13511,132566,20979,21010,21014,132943,21077,21084,21100,21111,21124,21122,133127,21144,133178,21156,{f:2,c:21178},21194,21201,133305,21239,21301,21314,133500,133533,21351,21370,21412,21428,133843,21431,21440,133917,{f:2,c:13661},21461,13667,21492,
-21540,21544,13678,21571,21602,21612,21653,21664,21670,21678,21687,21690,21699,134469,21740,21743,21745,21747,{f:2,c:21760},21769,21820,21825,13734,21831,13736,21860,134625,21885,21890,21905,13765,21970,134805,134765,21951,21961,21964,21969,21981,13786,21986,134756,21993,22056,135007,22023,22032,22064,13812,22077,22080,22087,22110,22112,22125,13829,22152,22156,22173,22184,22194,22213,22221,22239,22248,{f:2,c:22262},135681,135765,22313,135803,{f:2,c:22341},22349,135796,22376,22383,{f:3,c:22387},22395,
-135908,135895,22426,{f:2,c:22429},22440,22487,135933,22476,135990,136004,22494,22512,13898,22520,22523,22525,22532,22558,22567,22585,136132,22601,22604,22631,{f:2,c:22666},22669,{f:2,c:22671},22676,22685,22698,22705,136301,22723,22733,22754,{f:2,c:22771},{f:2,c:22789},22797,22804,136663,13969,22845,13977,22854,13974,158761,22879,136775,{f:2,c:22901},22908,22943,22958,22972,22984,22989,23006,23015,23022,136966,137026,14031,23053,23063,23079,23085,23141,23162,23179,23196,{f:2,c:23199},23202,23217,23221,
-23226,23231,23258,23260,23269,23280,23278,23285,23304,23319,23348,23372,23378,23400,23407,23425,23428,137667,23446,23468,{f:2,c:14177},23502,23510,14188,14187,23537,23549,14197,23555,23593,138326,23647,{f:2,c:23655},23664,138541,138565,138616,138594,23688,23690,14273,138657,138652,23712,23714,23719,138642,23725,23733,138679,23753,138720,138803,23814,23824,23851,23837,23840,23857,23865,14312,23905,23914,14324,23920,139038,14333,23944,14336,23959,23984,23988,139126,24017,24023,139258,24036,24041,14383,
-14390,14400,24095,24126,24137,14428,24150,14433,{f:2,c:24173},139643,24229,24236,24249,24262,24281,140062,24317,24328,140205,24350,24391,24419,24434,24446,24463,24482,24519,24523,{f:3,c:24530},24546,{f:2,c:24558},24563,14615,24610,24612,14618,24652,24725,24744,141043,24753,24766,24776,24793,24814,24821,24848,24857,24862,24890,14703,24897,24902,24928,141403,{f:2,c:24978},24983,24997,25005,141483,25045,25053,25077,141711,25123,25170,25185,25188,25211,25197,25203,25241,25301,142008,25341,25347,25360,
-{f:2,c:142159},25394,25397,{f:2,c:25403},25409,25412,25422,142150,25433,142365,142246,25452,25497,142372,25492,25533,{f:2,c:25556},25568,{f:2,c:25579},25586,25630,25637,25641,25647,25690,25693,25715,25725,25735,25745,25759,{f:2,c:25803},25813,25815,142817,25828,25855,14958,25871,25876,14963,25886,25906,25924,25940,25963,25978,25988,25994,26034,26037,26040,26047,26057,26068,15062,26105,26108,26116,26120,26145,26154,26181,26193,26190,15082,143811,143861,143798,26218,{f:2,c:26220},26235,26240,26256,
-26258,15118,26285,26289,26293,15130,15132,15063,26369,26386,144242,26393,144339,144338,26445,26452,26461,144336,144356,144341,26484,144346,26514,144351,33635,26640,26563,26568,26578,26587,26615,144458,144465,144459,26648,26655,26669,144485,26675,26683,26686,26693,26697,26700,26709,26711,15223,26731,26734,26748,26754,26768,26774,15213,{f:3,c:26776},26780,{f:2,c:26794},26804,26811,26875,144612,144730,26819,26821,26828,26841,{f:2,c:26852},26860,26871,26883,26887,15239,144788,15245,26950,26985,26988,
-27002,27026,15268,27030,27056,27066,27068,27072,27089,144953,144967,144952,27107,{f:2,c:27118},27123,15309,27124,27134,27153,27162,27165,145180,{f:2,c:27186},27199,27209,27258,27214,27218,27236,145164,27275,15344,27297,145252,27307,27325,27334,27348,27344,27357,145407,145383,{f:3,c:27377},27389,145444,27403,{f:3,c:27407},145469,27415,15398,27439,27466,27480,27500,27509,[11934,27514],27521,27547,27566,146072,27581,{f:3,c:27591},27610,{f:2,c:27622},27630,27650,27658,27662,27702,146559,27725,27739,27757,
-27780,27785,15555,27796,27799,27821,27842,15570,27868,27881,27885,146688,27904,27940,{f:2,c:27942},27751,27951,27964,27995,28E3,28016,{f:2,c:28032},28042,28045,28049,28056,146752,146938,146937,146899,28075,28078,28084,28098,27956,28104,28110,28127,28150,28214,28190,15633,28210,{f:2,c:28232},{f:2,c:28235},28239,{f:2,c:28243},28247,28259,15646,28307,28327,28340,28355,28469,28395,28409,28411,28426,28428,28440,28453,28470,28476,147326,28498,28503,28512,28520,28560,28566,28606,28575,28581,28591,15716,
-{f:2,c:28616},28649,147606,28668,28672,28682,28707,147715,28730,28739,28743,28747,15770,28773,28777,28782,28790,28806,28823,147910,28831,28849,147966,28908,28874,28881,28931,28934,28936,28940,15808,28975,29008,29011,29022,15828,29078,29056,29083,29088,29090,{f:2,c:29102},148412,29145,29148,29191,15877,29236,29241,29250,29271,29283,149033,{f:2,c:29294},29304,29311,29326,149157,29358,29360,29377,15968,29388,15974,15976,29427,29434,29447,29458,{f:2,c:29464},16003,29497,29484,29491,29501,29522,16020,
-29547,149654,{f:2,c:29550},29553,29569,29578,29588,29592,29596,29605,29625,29631,29637,29643,29665,29671,29689,29715,29690,29697,29779,29760,29763,29778,29789,29825,29832,150093,29842,29847,29849,29857,29861,29866,29881,29883,29882,29910,29912,29931,150358,29946,150383,29984,29988,29994,16215,150550,{f:2,c:30013},30016,30024,30032,30034,30066,30065,30074,{f:2,c:30077},30092,16245,30114,16247,30128,30135,{f:2,c:30143},30150,30159,30163,30173,{f:2,c:30175},30183,30190,30193,30211,30232,30215,30223,
-16302,151054,30227,{f:2,c:30235},151095,30245,30248,30268,30259,151146,16329,30273,151179,30281,30293,16343,30318,30357,30369,30368,{f:2,c:30375},30383,151626,30409,151637,30440,151842,30487,30490,30509,30517,151977,16441,152037,152013,30552,152094,30588,152140,16472,30618,30623,30626,30628,{f:2,c:30686},30692,30698,30700,30715,152622,30725,30729,30733,30745,30764,30791,30826,152793,30858,30868,30884,30877,30879,30907,30933,30950,{f:2,c:30969},30974,152999,30992,31003,31013,31050,31064,16645,31079,
-31090,31125,31137,31145,31156,31170,31175,{f:2,c:31180},31190,16712,153513,153524,16719,31242,31253,31259,16739,31288,31303,31318,31321,31324,31327,31335,31338,31349,31362,31370,31376,31404,154068,16820,31417,31422,16831,31436,31464,31476,154340,154339,154353,31549,31530,{f:2,c:31534},16870,16883,31615,31553,16878,31573,31609,31588,31590,31603,154546,16903,31632,31643,16910,31669,31676,31685,31690,154699,154724,31700,31702,31706,31722,31728,31747,31758,31813,31818,31831,31838,31841,31849,31855,155182,
-155222,155237,31910,155234,{f:2,c:31926},155352,31940,155330,31949,155368,155427,31974,155484,31989,32003,17094,32018,32030,155616,155604,{f:2,c:32061},32064,32071,155660,155643,17110,32090,32106,32112,17117,32127,155671,32136,32151,155744,32157,32167,32170,32182,32192,32215,32217,32230,17154,155885,64088,32272,32279,32285,32295,32300,32325,32373,32382,{f:2,c:32390},17195,32410,17219,32572,32571,32574,32579,13505,156272,156294,{f:2,c:32611},32621,{f:2,c:32637},32656,20859,146702,32662,32668,32685,
-156674,32707,32719,32739,32754,32778,32776,32790,32812,32816,32835,32870,32891,32921,32924,32932,32935,32952,157310,32965,32981,32998,33037,33013,33019,17390,33077,33054,17392,33060,33063,33068,157469,33085,17416,33129,17431,17436,33157,17442,33176,33202,33217,33219,33238,33243,157917,33252,157930,33260,33277,33279,158063,33284,158173,33305,33314,158238,33340,33353,33349,158296,17526,17530,33367,158348,33372,33379,158391,17553,33405,33407,33411,33418,33427,{f:2,c:33447},33458,33460,33466,33468,33506,
-33512,33527,{f:2,c:33543},33548,33620,33563,33565,33584,33596,33604,33623,17598,17620,17587,{f:2,c:33684},33691,33693,33737,33744,33748,33757,33765,33785,33813,158835,33815,33849,33871,{f:2,c:33873},{f:2,c:33881},33884,158941,33893,33912,33916,33921,17677,33943,33958,33982,17672,{f:2,c:33998},34003,159333,34023,34026,34031,34033,34042,34075,{f:2,c:34084},34091,34127,34159,17731,34129,{f:2,c:34145},159636,34171,34173,34175,34177,34182,34195,34205,34207,159736,{f:2,c:159734},34236,34247,34250,{f:2,
-c:34264},34271,34273,34278,34294,34304,34321,34334,34337,34340,34343,160013,34361,34364,160057,34368,34387,34390,34423,34439,34441,{f:2,c:34460},34481,34483,34497,34499,34513,34517,34519,34531,34534,17848,34565,34567,34574,34576,34591,34593,34595,34609,34618,34624,34627,34641,34648,{f:2,c:34660},34674,34684,160731,160730,34727,34697,34699,34707,34720,160766,17893,34750,160784,34753,34766,34783,160841,34787,{f:2,c:34789},34794,34835,34856,34862,34866,34876,17935,34890,34904,161301,161300,34921,161329,
-34927,34976,35004,35008,161427,35025,35027,17985,35073,161550,35127,161571,35138,35141,35145,161618,35170,35209,35216,35231,35248,35255,35288,35307,18081,35315,35325,35327,18095,35345,35348,162181,35361,35381,35390,35397,35405,35416,35502,35472,35511,35543,35580,162436,35594,35589,35597,35612,35629,18188,35665,35678,35702,35713,35723,{f:2,c:35732},35897,162739,35901,162750,162759,35909,35919,35927,35945,35949,163E3,35987,35986,35993,18276,35995,36054,36053,163232,36081,163344,36105,36110,36296,36313,
-36364,18429,36349,36358,163978,36372,36374,{f:2,c:36385},36391,164027,18454,36406,36409,36436,36450,36461,36463,36504,36510,36533,36539,164482,18510,164595,36608,36616,36651,36672,36682,36696,164876,36772,36788,164949,36801,36806,64036,36810,36813,36819,36821,36849,36853,36859,36876,36919,165227,36931,36957,{f:2,c:165320},36997,37004,37008,37025,18613,37040,37046,37059,37064,165591,37084,37087,165626,37110,37106,37120,37099,{f:2,c:37118},37124,37126,37144,37150,37175,37177,{f:2,c:37190},37207,37209,
-37236,37241,37253,37299,37302,{f:2,c:37315},166217,166214,37356,37377,{f:2,c:37398},166251,37442,37450,37462,37473,37477,37480,166280,{f:2,c:37500},37503,37513,37517,37527,37529,37535,37547,{f:2,c:166330},37554,{f:2,c:37567},37574,37582,37605,37649,166430,166441,37623,37673,166513,166467,37713,37722,37739,37745,37747,37793,166553,166605,37768,37771,37775,37790,37877,166628,166621,37873,37831,37852,37863,37897,{f:2,c:37910},37883,37938,37947,166849,166895,37997,37999,38265,38278,{f:2,c:38284},167184,
-167281,38344,167419,167455,38444,{f:2,c:38451},167478,38460,38497,167561,38530,167659,38554,167730,18919,38579,38586,38589,18938,167928,38616,38618,38621,18948,38676,38691,18985,38710,38721,38727,38743,38747,38762,168608,168625,38806,38814,{f:2,c:38833},38846,38860,38865,38868,38872,38881,38897,38916,38925,38932,38934,19132,169104,{f:2,c:38962},38949,38983,39014,39083,39085,39088,169423,39095,{f:2,c:39099},39106,39111,39115,39137,39139,39146,{f:2,c:39152},39155,39176,19259,169712,{f:2,c:39190},169753,
-{f:3,c:39194},169808,39217,{f:3,c:39226},39233,39238,39246,39264,39331,39334,39357,39359,39363,39380,39385,39390,170182,39408,39417,39420,39434,39441,39450,39456,39473,39492,39500,39512,19394,39599,19402,39607,19410,39609,170610,39622,39632,39634,39637,39648,39653,39657,39692,39696,39698,39702,39708,39723,39741,19488,39755,39779,39781,{f:2,c:39787},{f:2,c:39798},39846,39852,171483,39858,39864,39870,39923,39896,39901,39914,39919,39918,171541,171658,171593,39958,{f:3,c:39960},39965,39970,39977,171716,
-39985,39991,40005,40028,171753,{f:2,c:40009},171739,40020,40024,40027,40029,40031,{f:3,c:40041},{f:2,c:40045},40050,40053,40058,40166,40178,40203,[171982,171991],40209,{f:2,c:40215},172079,19652,172058,40242,19665,40266,40287,40290,172281,172162,40307,{f:2,c:40310},40324,40345,40353,40383,40373,40377,40381,40393,40410,40416,40419,19719,40458,40450,40461,40476,40571,139800,40576,40581,40603,172940,40637,173111,40671,40703,40706,19831,40707,40762,40765,40774,40787,40789,40792,173553,40797,173570,40809,
-40813,40816,173746,11948,13844,14509,15820,16348,17854,17936,19326,19512,19681,19980,{f:2,c:20003},20089,20211,20236,20249,20267,20270,20273,20356,20382,20407,20484,20492,20556,20575,20578,20599,20622,20638,20642,20675,20712,20721,20734,20743,{f:3,c:20748},20787,20792,20852,20868,20920,20922,20936,20943,20945,{f:2,c:20947},20952,20959,20997,21030,21032,21035,{f:2,c:21041},21045,21052,21082,21088,21102,{f:2,c:21112},21130,21132,21217,21225,21233,21251,21265,21279,21293,21298,21309,21349,21357,21369,
-21374,21396,21401,21418,21423,21434,21441,{f:2,c:21444},21472,21523,21546,21553,{f:2,c:21556},21580,21671,21674,21681,21691,21710,21738,21756,21765,21768,21781,21799,21802,21814,21841,21862,21903,21906,21908,21924,21938,21955,21958,21971,21979,21996,21998,22001,22006,22008,22021,22029,{f:2,c:22033},22060,22069,22073,22093,22100,22149,22175,22182,22199,22220,22223,22233,22241,22251,22253,22257,22279,22284,{f:2,c:22298},22301,22316,22318,{f:2,c:22333},22367,22379,22381,22394,22403,22423,22446,22485,
-22503,22541,22566,22605,22607,22623,22637,22655,22657,22680,22716,22815,22819,22873,22905,22935,22959,22963,23007,23025,23032,23218,23224,23274,23286,23323,23325,23329,23352,23479,23511,23520,23583,23594,23596,23606,23641,23644,23661,23773,23809,23860,23869,23897,23934,23939,24007,24057,24104,24114,24117,24155,24168,24170,24183,24192,24203,24243,24253,24273,{f:2,c:24276},24397,24492,24554,24583,24649,24660,24679,24763,24772,24829,24842,24854,24874,24886,24926,24932,24955,24957,24959,24989,25016,25052,
-25058,25061,25064,25092,25095,25137,25145,25149,25210,25232,25256,25306,25332,25366,25386,25398,25414,25419,25427,25457,25461,25471,25474,25482,{f:2,c:25518},25578,{f:2,c:25592},25618,25624,25632,25636,25642,25653,25661,25663,25682,25695,25716,25744,{f:2,c:25752},25772,25779,25837,25840,25883,25887,25902,25929,25952,26002,26005,26036,26046,26056,26062,26064,26079,26238,{f:2,c:26251},26291,26304,26319,26405,26421,26453,26496,26511,26513,26532,26545,26549,26558,26664,26758,26859,26869,26903,26931,26936,
-26971,26981,27048,27051,27055,27109,27121,27210,27221,27239,27249,27311,{f:2,c:27336},27395,27451,27455,{f:2,c:27517},27568,27639,27641,27652,27657,27661,27692,27722,27730,27732,27769,27820,27828,27858,28001,28028,28089,28144,28229,28275,28283,28285,28297,28348,{f:2,c:28378},28454,28457,28464,28551,28573,28590,28599,28685,28704,28745,28824,28848,{f:2,c:28885},28997,29106,29172,29207,29215,29251,{f:2,c:29263},29274,29280,29288,29303,29316,29385,29413,29428,29442,29451,29470,29474,{f:2,c:29498},29517,
-29528,29543,29810,29871,29919,29924,29940,29947,29974,29985,30015,30046,30105,30116,30145,30148,30156,30167,30172,30177,30191,30212,30220,30237,30258,30264,30277,30282,30303,30381,30397,30425,30443,30448,30457,30464,30478,30498,30504,30511,30521,30526,30533,30538,30543,30558,30564,30567,30572,30596,{f:2,c:30604},30614,30631,30639,30647,30654,30665,30673,30681,30705,30775,30812,30846,30872,30881,30897,30899,30921,30931,30988,31007,{f:2,c:31015},31039,31042,31060,31083,31100,31147,31172,31210,31234,
-31244,31280,31290,31300,31360,31366,31380,31413,31421,31486,31531,31607,31648,31660,31664,31720,31730,31736,31740,31742,31753,31784,31791,31810,{f:2,c:31826},{f:3,c:31835},31858,31869,31879,31902,31930,31943,31955,31962,32060,32077,32130,32133,32141,32145,32158,32179,32185,32208,32229,{f:2,c:32245},32303,32310,32324,32367,32376,32385,32573,32603,32605,32613,32625,{f:2,c:32639},32651,32674,{f:3,c:32765},32775,32781,32798,32825,32904,32910,32975,32980,33005,33008,33015,33018,33022,33027,33047,33072,
-33111,33135,33139,33163,33168,33179,33182,33227,33237,{f:2,c:33245},33249,33263,33270,33280,33291,{f:2,c:33299},33306,33338,33348,33389,33412,33417,33425,33450,33456,33488,33514,33519,33526,33622,33656,33784,33788,33880,33939,33969,33981,34043,34118,34134,34141,34181,34200,34370,34374,34496,34580,34594,34606,34617,34653,34683,34700,34702,{f:2,c:34711},34718,34723,34734,34751,34761,34778,34840,34843,34861,34874,34885,34891,34894,34901,34906,34926,{f:3,c:34970},35021,35040,35055,{f:2,c:35086},35110,
-35125,35162,35164,35179,35184,35196,35237,35253,35260,35285,35401,35415,35431,35454,35462,35478,35510,35529,35537,35549,35564,35573,35590,35599,35601,35653,35666,35693,35704,35708,35710,35717,35743,35915,35923,35963,36026,36037,36041,36050,36076,36085,36087,36097,36099,36119,36124,36206,36241,36255,36267,36274,36309,36327,{f:2,c:36337},36340,36353,36363,36390,36401,{f:2,c:36416},36429,36431,36444,36449,36457,36465,36469,36471,36489,36496,36501,36506,36519,36521,36525,36584,36592,36615,36632,36645,
-36647,36652,36661,36666,36675,36679,36689,36693,{f:3,c:36768},36773,36868,36891,36911,36940,36955,36976,36980,36985,37003,37016,37024,37042,37053,37065,37104,37125,37157,37210,37223,37242,37258,37265,37269,37296,37307,37309,37314,37317,37376,37385,37411,37494,37518,37551,{f:2,c:37563},37569,37571,37573,37576,37652,37683,37686,37720,37759,37762,37770,37819,37836,37862,37881,37890,{f:2,c:37901},37934,37964,38280,38305,38335,38342,38345,{f:2,c:38353},38368,38372,38374,38436,38449,38456,38461,38484,38516,
-38523,38527,38529,38531,38537,38550,38574,38659,38683,{f:2,c:38689},38696,38705,38759,38774,38781,38783,38809,38815,38828,38841,38861,38880,38895,38919,38950,38958,{f:2,c:39010},39092,39109,39170,39185,39189,39221,39240,39252,39262,39393,39436,39440,39459,39489,39505,{f:2,c:39613},39681,39689,39691,{f:2,c:39693},39705,39733,39752,39765,39784,39808,39814,39824,39837,39856,39871,39880,39935,39938,39964,39989,40004,40022,40033,40040,40240,40253,40298,40315,40421,40425,40435,40570,{f:3,c:40578},40624,
-40676,40688,40690,40713,40719,40724,40731,40738,40742,{f:2,c:40746},40756,40794,40815,40862,40869,131317,151044,151538,163187,194581,194630,194713,194726,194789,195038,13790,{s:4},172722,0,0,131416,{s:4},132529,0,0,132844,{s:6},134488,{s:21},154060,{s:9},14756,14776,142914,0,0,14940,0,0,143339,0,0,162228,0,15044,15051,{s:5},14981,{s:8},15347,27384,{s:5},15665,{s:9},147531,0,15936,14497,{s:34},158878,{s:12},18207,162876,{s:4},18462,{s:71},39709,39724,20482,20958,21255,23532,63784,26142,63785,28746,
-64021,21857,27706,31328,156492,34819,38315,38741,171581,173594],"Adobe-Korea1":[{f:95,c:32},8361,8208,169,0,0,[12288,12644],{f:2,c:12289},12539,8229,[8230,8943],168,12291,{f:2,c:8211},8214,65340,65374,{f:2,c:8216},{f:2,c:8220},{f:2,c:12308},{f:10,c:12296},177,215,247,8800,{f:2,c:8804},8734,8756,176,{f:2,c:8242},8451,8491,{f:2,c:65504},65509,9794,9792,8736,8869,8978,8706,8711,8801,8786,167,8251,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8594,{f:2,c:8592},{f:2,c:8595},12307,171,
-187,8730,8765,8733,8757,{f:2,c:8747},8712,8715,{f:2,c:8838},{f:2,c:8834},8746,8745,{f:2,c:8743},65506,8658,8660,8704,8707,180,732,711,728,733,730,729,184,731,161,191,8758,8750,8721,8719,164,8457,8240,9665,9664,9655,9654,9828,{f:2,c:9824},9829,9831,9827,9673,9672,9635,{f:2,c:9680},9618,{f:2,c:9636},9640,9639,9638,9641,9832,9743,9742,9756,9758,182,{f:2,c:8224},8597,8599,8601,8598,8600,9837,{f:2,c:9833},9836,12927,12828,8470,13255,8482,13250,13272,8481,{f:59,c:65281},65510,{f:33,c:65341},65507,{f:51,
-c:12593},{f:42,c:12645},{f:10,c:8560},{f:10,c:8544},{f:17,c:913},{f:7,c:931},{f:17,c:945},{f:7,c:963},9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,9490,9489,9498,9497,9494,9493,9486,9485,{f:2,c:9502},{f:2,c:9505},{f:2,c:9510},{f:2,c:9513},{f:2,c:9517},{f:2,c:9521},{f:2,c:9525},{f:2,c:9529},{f:2,c:9533},{f:2,c:9536},{f:8,c:9539},{f:3,c:13205},8467,13208,13252,{f:4,c:13219},{f:10,c:13209},
-13258,{f:3,c:13197},13263,{f:2,c:13192},13256,{f:2,c:13223},{f:10,c:13232},{f:5,c:13184},{f:6,c:13242},{f:5,c:13200},8486,{f:2,c:13248},{f:3,c:13194},13270,13253,{f:3,c:13229},13275,{f:4,c:13225},13277,13264,13267,13251,13257,13276,13254,198,208,170,294,306,319,321,216,338,186,222,358,330,{f:28,c:12896},{f:26,c:9424},{f:15,c:9312},189,{f:2,c:8531},188,190,{f:4,c:8539},230,273,240,295,305,307,312,320,322,248,339,223,254,359,331,329,{f:28,c:12800},{f:26,c:9372},{f:15,c:9332},185,{f:2,c:178},8308,8319,
-{f:4,c:8321},{f:83,c:12353},{f:86,c:12449},{f:6,c:1040},1025,{f:32,c:1046},1105,{f:26,c:1078},{f:2,c:44032},44036,{f:4,c:44039},{f:8,c:44048},{f:5,c:44057},44064,44068,{f:2,c:44076},{f:3,c:44079},{f:2,c:44088},44092,44096,44107,44109,44116,44120,44124,{f:2,c:44144},44148,{f:2,c:44151},44154,{f:2,c:44160},{f:4,c:44163},{f:4,c:44169},44176,44180,{f:2,c:44188},{f:3,c:44191},{f:3,c:44200},44204,{f:2,c:44207},{f:2,c:44216},{f:3,c:44219},44225,44228,44232,44236,44245,44247,{f:2,c:44256},44260,{f:2,c:44263},
-44266,44268,{f:3,c:44271},44275,{f:2,c:44277},{f:2,c:44284},44288,44292,44294,{f:2,c:44300},44303,44305,44312,44316,44320,44329,{f:2,c:44332},{f:2,c:44340},44344,44348,{f:2,c:44356},44359,44361,44368,44372,44376,44385,44387,{f:2,c:44396},44400,{f:4,c:44403},{f:3,c:44411},44415,{f:2,c:44417},{f:2,c:44424},44428,44432,{f:2,c:44444},44452,44471,{f:2,c:44480},44484,44488,{f:2,c:44496},44499,44508,44512,44516,{f:2,c:44536},44540,{f:3,c:44543},{f:2,c:44552},44555,44557,44564,{f:2,c:44592},44596,{f:2,c:44599},
-44602,{f:2,c:44608},44611,{f:2,c:44613},44618,{f:3,c:44620},44624,44628,44630,{f:2,c:44636},{f:3,c:44639},44645,{f:2,c:44648},44652,44656,{f:2,c:44664},{f:3,c:44667},{f:2,c:44676},44684,{f:3,c:44732},44736,44740,{f:2,c:44748},{f:3,c:44751},{f:2,c:44760},44764,44776,44779,44781,44788,44792,44796,{f:2,c:44807},44813,44816,{f:2,c:44844},44848,44850,44852,{f:2,c:44860},44863,{f:3,c:44865},{f:2,c:44872},44880,{f:2,c:44892},{f:2,c:44900},44921,44928,44932,44936,{f:2,c:44944},44949,44956,{f:2,c:44984},44988,
-44992,{f:3,c:44999},45003,{f:2,c:45005},45012,45020,{f:2,c:45032},{f:2,c:45040},45044,45048,{f:2,c:45056},45060,45068,45072,45076,{f:2,c:45084},45096,{f:2,c:45124},45128,45130,45132,45134,{f:3,c:45139},45143,45145,45149,{f:2,c:45180},45184,45188,{f:2,c:45196},45199,45201,{f:3,c:45208},45212,{f:4,c:45215},{f:2,c:45224},{f:5,c:45227},45233,{f:3,c:45235},45240,45244,{f:2,c:45252},{f:3,c:45255},{f:2,c:45264},45268,45272,45280,45285,{f:2,c:45320},{f:2,c:45323},45328,{f:2,c:45330},{f:2,c:45336},{f:3,c:45339},
-{f:3,c:45347},45352,45356,{f:2,c:45364},{f:3,c:45367},{f:2,c:45376},45380,45384,{f:2,c:45392},{f:2,c:45396},45400,45404,45408,{f:2,c:45432},45436,45440,45442,{f:2,c:45448},45451,45453,{f:3,c:45458},45464,45468,45480,45516,45520,45524,{f:2,c:45532},45535,{f:2,c:45544},45548,45552,45561,45563,45565,{f:2,c:45572},45576,{f:2,c:45579},{f:2,c:45588},45591,45593,45600,45620,45628,45656,45660,45664,{f:2,c:45672},{f:2,c:45684},45692,{f:2,c:45700},45705,{f:2,c:45712},45716,{f:3,c:45720},{f:2,c:45728},45731,
-{f:2,c:45733},45738,45740,45744,45748,{f:2,c:45768},45772,45776,45778,{f:2,c:45784},45787,45789,45794,{f:3,c:45796},45800,{f:5,c:45803},{f:3,c:45811},{f:5,c:45815},{f:3,c:45823},45828,45832,{f:2,c:45840},{f:3,c:45843},45852,{f:3,c:45908},45912,{f:2,c:45915},{f:2,c:45918},{f:2,c:45924},45927,45929,45931,45934,{f:2,c:45936},45940,45944,{f:2,c:45952},{f:3,c:45955},45964,45968,45972,{f:2,c:45984},45992,45996,{f:2,c:46020},46024,{f:2,c:46027},46030,46032,{f:2,c:46036},46039,46041,46043,46045,46048,46052,
-46056,46076,46096,46104,46108,46112,{f:2,c:46120},46123,46132,{f:2,c:46160},46164,46168,{f:2,c:46176},46179,46181,46188,46208,46216,46237,46244,46248,46252,46261,46263,46265,46272,46276,46280,46288,46293,{f:2,c:46300},46304,{f:2,c:46307},46310,{f:2,c:46316},46319,46321,46328,{f:2,c:46356},46360,{f:2,c:46363},{f:2,c:46372},{f:4,c:46375},{f:2,c:46384},46388,46392,{f:2,c:46400},{f:3,c:46403},{f:3,c:46411},46416,46420,{f:2,c:46428},{f:3,c:46431},{f:2,c:46496},46500,46504,{f:2,c:46506},{f:2,c:46512},{f:3,
-c:46515},{f:3,c:46523},46528,46532,{f:2,c:46540},{f:3,c:46543},46552,46572,{f:2,c:46608},46612,46616,46629,46636,46644,46664,46692,46696,{f:2,c:46748},46752,46756,{f:2,c:46763},46769,46804,46832,46836,46840,{f:2,c:46848},46853,{f:2,c:46888},46892,{f:2,c:46895},{f:2,c:46904},46907,46916,46920,46924,{f:2,c:46932},46944,46948,46952,{f:2,c:46960},46963,46965,{f:2,c:46972},46976,46980,{f:2,c:46988},{f:4,c:46991},{f:4,c:46998},47004,47008,{f:2,c:47016},{f:3,c:47019},{f:2,c:47028},47032,47047,47049,{f:2,
-c:47084},47088,47092,{f:2,c:47100},{f:3,c:47103},{f:3,c:47111},47116,47120,{f:2,c:47128},47131,47133,{f:2,c:47140},47144,47148,{f:2,c:47156},{f:3,c:47159},47168,47172,47185,47187,{f:2,c:47196},47200,47204,{f:2,c:47212},47215,47217,47224,47228,47245,47272,47280,47284,47288,{f:2,c:47296},47299,47301,47308,47312,47316,47325,47327,47329,{f:2,c:47336},47340,47344,{f:2,c:47352},47355,47357,47364,47384,47392,{f:2,c:47420},47424,47428,47436,47439,47441,{f:2,c:47448},47452,47456,{f:2,c:47464},47467,47469,
-{f:2,c:47476},47480,47484,{f:2,c:47492},47495,{f:2,c:47497},{f:2,c:47501},{f:2,c:47532},47536,47540,{f:2,c:47548},47551,47553,{f:2,c:47560},47564,{f:5,c:47566},{f:2,c:47576},47579,{f:2,c:47581},47585,{f:3,c:47587},47592,47596,{f:2,c:47604},{f:4,c:47607},{f:2,c:47616},47624,47637,{f:2,c:47672},47676,47680,47682,{f:2,c:47688},47691,{f:2,c:47693},{f:3,c:47699},47704,47708,{f:2,c:47716},{f:3,c:47719},{f:2,c:47728},47732,47736,{f:3,c:47747},47751,47756,{f:2,c:47784},{f:2,c:47787},47792,47794,{f:2,c:47800},
-47803,47805,47812,47816,{f:2,c:47832},47868,47872,47876,47885,47887,47889,47896,47900,47904,47913,47915,{f:3,c:47924},47928,{f:4,c:47931},{f:2,c:47940},47943,47945,47949,{f:2,c:47951},47956,47960,47969,47971,47980,48008,48012,48016,48036,48040,48044,48052,48055,48064,48068,48072,48080,48083,{f:2,c:48120},48124,{f:2,c:48127},48130,{f:2,c:48136},{f:3,c:48139},48143,48145,{f:5,c:48148},{f:5,c:48155},{f:2,c:48164},48167,48169,48173,{f:2,c:48176},48180,48184,{f:2,c:48192},{f:3,c:48195},48201,{f:2,c:48204},
-48208,48221,{f:2,c:48260},48264,{f:2,c:48267},48270,{f:2,c:48276},48279,{f:2,c:48281},{f:2,c:48288},48292,{f:2,c:48295},{f:2,c:48304},{f:3,c:48307},{f:2,c:48316},48320,48324,48333,{f:3,c:48335},48341,48344,48348,{f:3,c:48372},48376,48380,{f:2,c:48388},48391,48393,48400,48404,48420,48428,48448,{f:2,c:48456},48460,48464,{f:2,c:48472},48484,48488,{f:2,c:48512},48516,{f:4,c:48519},{f:2,c:48528},48531,48533,{f:2,c:48537},48540,48548,48560,48568,{f:2,c:48596},48600,48604,48617,48624,48628,48632,48640,48643,
-48645,{f:2,c:48652},48656,48660,{f:2,c:48668},48671,{f:2,c:48708},48712,48716,48718,{f:2,c:48724},48727,{f:3,c:48729},{f:2,c:48736},48740,48744,48746,{f:2,c:48752},{f:3,c:48755},{f:3,c:48763},48768,48772,{f:2,c:48780},{f:3,c:48783},{f:2,c:48792},48808,{f:2,c:48848},48852,{f:2,c:48855},48864,{f:3,c:48867},48876,48897,{f:2,c:48904},{f:2,c:48920},{f:3,c:48923},{f:2,c:48960},48964,48968,{f:2,c:48976},48981,49044,49072,49093,{f:2,c:49100},49104,49108,49116,49119,49121,49212,49233,49240,49244,49248,{f:2,
-c:49256},{f:2,c:49296},49300,49304,{f:2,c:49312},49315,49317,{f:2,c:49324},{f:2,c:49327},{f:4,c:49331},{f:2,c:49340},{f:3,c:49343},49349,{f:2,c:49352},49356,49360,{f:2,c:49368},{f:3,c:49371},{f:2,c:49380},49384,49388,{f:2,c:49396},49399,49401,49408,49412,49416,49424,49429,{f:5,c:49436},{f:2,c:49443},{f:2,c:49446},{f:2,c:49452},{f:3,c:49455},49462,{f:2,c:49464},49468,49472,{f:2,c:49480},{f:3,c:49483},{f:2,c:49492},49496,49500,{f:2,c:49508},{f:3,c:49511},49520,49524,49528,49541,{f:3,c:49548},49552,
-49556,49558,{f:2,c:49564},49567,49569,49573,{f:2,c:49576},49580,49584,49597,49604,49608,49612,49620,{f:2,c:49623},49632,49636,49640,{f:2,c:49648},49651,{f:2,c:49660},49664,49668,{f:2,c:49676},49679,49681,{f:2,c:49688},49692,{f:2,c:49695},{f:2,c:49704},49707,49709,49711,{f:2,c:49713},49716,49736,{f:2,c:49744},49748,49752,49760,49765,{f:2,c:49772},49776,49780,{f:2,c:49788},49791,49793,{f:2,c:49800},49808,49816,49819,49821,{f:2,c:49828},49832,{f:2,c:49836},{f:2,c:49844},49847,49849,{f:2,c:49884},49888,
-{f:2,c:49891},{f:3,c:49899},49903,49905,49910,{f:2,c:49912},{f:2,c:49915},49920,{f:2,c:49928},{f:2,c:49932},{f:3,c:49939},49944,49948,{f:2,c:49956},{f:2,c:49960},49989,{f:2,c:50024},50028,50032,50034,{f:2,c:50040},{f:2,c:50044},50052,50056,50060,50112,{f:2,c:50136},50140,{f:2,c:50143},50146,{f:2,c:50152},50157,{f:2,c:50164},50168,50184,50192,50212,50220,50224,50228,{f:2,c:50236},50248,{f:2,c:50276},50280,50284,{f:2,c:50292},50297,50304,50324,50332,50360,50364,50409,{f:2,c:50416},50420,50424,50426,
-{f:3,c:50431},50444,50448,50452,50460,{f:2,c:50472},50476,50480,{f:2,c:50488},50491,50493,{f:2,c:50500},{f:3,c:50504},{f:3,c:50508},{f:3,c:50515},{f:3,c:50519},{f:2,c:50525},{f:2,c:50528},50532,50536,{f:2,c:50544},{f:3,c:50547},{f:2,c:50556},50560,50564,50567,{f:2,c:50572},50575,50577,50581,{f:2,c:50583},50588,50592,50601,{f:2,c:50612},{f:2,c:50616},{f:4,c:50619},{f:7,c:50628},50636,50638,{f:2,c:50640},50644,50648,{f:2,c:50656},50659,50661,{f:3,c:50668},50672,50676,{f:2,c:50678},{f:6,c:50684},{f:4,
-c:50693},50700,50704,{f:2,c:50712},{f:2,c:50715},{f:2,c:50724},50728,{f:3,c:50732},50736,{f:3,c:50739},50743,50745,50747,{f:2,c:50752},50756,50760,{f:2,c:50768},{f:3,c:50771},{f:2,c:50780},50784,50796,50799,50801,{f:2,c:50808},50812,50816,{f:2,c:50824},50827,50829,{f:2,c:50836},50840,50844,{f:2,c:50852},50855,50857,{f:2,c:50864},50868,{f:3,c:50872},{f:2,c:50880},50883,50885,{f:2,c:50892},50896,50900,{f:2,c:50908},{f:2,c:50912},{f:2,c:50920},50924,50928,{f:2,c:50936},50941,{f:2,c:50948},50952,50956,
-{f:2,c:50964},50967,50969,{f:2,c:50976},50980,50984,{f:2,c:50992},50995,50997,50999,{f:2,c:51004},51008,51012,51018,{f:2,c:51020},51023,{f:8,c:51025},51036,51040,51048,51051,{f:2,c:51060},51064,{f:3,c:51068},{f:3,c:51075},{f:4,c:51079},51086,{f:2,c:51088},51092,{f:3,c:51094},51098,{f:2,c:51104},{f:4,c:51107},{f:2,c:51116},51120,51124,{f:2,c:51132},{f:3,c:51135},{f:2,c:51144},51148,51150,51152,51160,51165,51172,51176,51180,{f:2,c:51200},51204,51208,51210,{f:2,c:51216},51219,{f:2,c:51221},{f:2,c:51228},
-51232,51236,{f:2,c:51244},51247,51249,51256,51260,51264,{f:2,c:51272},{f:2,c:51276},51284,{f:2,c:51312},51316,51320,51322,{f:2,c:51328},51331,{f:3,c:51333},{f:3,c:51339},51348,51357,51359,51361,51368,{f:2,c:51388},51396,51400,51404,{f:2,c:51412},51415,51417,{f:2,c:51424},51428,51445,{f:2,c:51452},51456,{f:3,c:51460},{f:2,c:51468},51471,51473,51480,51500,51508,{f:2,c:51536},51540,51544,{f:2,c:51552},51555,51564,51568,51572,51580,{f:2,c:51592},51596,51600,{f:2,c:51608},51611,51613,{f:2,c:51648},51652,
-{f:2,c:51655},51658,{f:2,c:51664},51667,{f:2,c:51669},{f:2,c:51673},{f:2,c:51676},51680,51682,51684,51687,{f:2,c:51692},{f:3,c:51695},{f:2,c:51704},51708,51712,{f:2,c:51720},{f:3,c:51723},51732,51736,51753,{f:2,c:51788},51792,51796,{f:2,c:51804},{f:3,c:51807},51816,51837,51844,51864,{f:2,c:51900},51904,51908,{f:2,c:51916},51919,51921,51923,{f:2,c:51928},51936,51948,51956,51976,51984,51988,51992,{f:2,c:52E3},52033,{f:2,c:52040},52044,52048,{f:2,c:52056},52061,52068,{f:2,c:52088},52124,52152,52180,
-52196,52199,52201,{f:2,c:52236},52240,52244,{f:2,c:52252},{f:2,c:52257},{f:3,c:52263},52268,52270,52272,{f:2,c:52280},{f:4,c:52283},{f:2,c:52292},52296,52300,{f:2,c:52308},{f:3,c:52311},52320,52324,52326,52328,52336,52341,{f:2,c:52376},52380,52384,{f:2,c:52392},{f:3,c:52395},{f:2,c:52404},52408,52412,{f:2,c:52420},52423,52425,52432,52436,52452,52460,52464,52481,{f:2,c:52488},52492,52496,{f:2,c:52504},52507,52509,52516,52520,52524,52537,52572,52576,52580,{f:2,c:52588},52591,52593,52600,52616,{f:2,
-c:52628},52632,52636,{f:2,c:52644},52647,52649,52656,52676,52684,52688,52712,52716,52720,{f:2,c:52728},52731,52733,52740,52744,52748,52756,52761,{f:2,c:52768},52772,52776,{f:2,c:52784},52787,52789,{f:2,c:52824},52828,{f:3,c:52831},{f:2,c:52840},52843,52845,{f:2,c:52852},52856,52860,{f:2,c:52868},52871,52873,{f:2,c:52880},52884,52888,{f:2,c:52896},{f:3,c:52899},{f:2,c:52908},52929,{f:2,c:52964},52968,{f:2,c:52971},{f:2,c:52980},{f:3,c:52983},{f:2,c:52992},52996,53E3,{f:2,c:53008},53011,53013,53020,
-53024,53028,{f:2,c:53036},{f:3,c:53039},53048,{f:2,c:53076},53080,53084,{f:2,c:53092},53095,53097,{f:2,c:53104},53108,53112,53120,53125,53132,53153,53160,53168,53188,{f:2,c:53216},53220,53224,{f:2,c:53232},53235,53237,53244,53248,53252,53265,53272,53293,{f:2,c:53300},53304,53308,{f:2,c:53316},53319,53321,53328,53332,53336,53344,{f:2,c:53356},53360,53364,{f:2,c:53372},53377,{f:2,c:53412},53416,53420,{f:2,c:53428},53431,53433,{f:2,c:53440},53444,{f:2,c:53448},{f:2,c:53456},{f:3,c:53459},{f:2,c:53468},
-53472,53476,{f:2,c:53484},{f:3,c:53487},53496,53517,{f:2,c:53552},53556,53560,53562,{f:2,c:53568},{f:3,c:53571},{f:2,c:53580},53584,53588,{f:2,c:53596},53599,53601,53608,53612,53628,53636,53640,{f:2,c:53664},53668,53672,{f:2,c:53680},53683,53685,53690,53692,53696,53720,53748,53752,53767,53769,53776,{f:2,c:53804},53808,53812,{f:2,c:53820},53823,53825,53832,53852,53860,{f:2,c:53888},53892,53896,{f:2,c:53904},53909,53916,53920,53924,53932,53937,{f:2,c:53944},53948,{f:2,c:53951},53954,{f:2,c:53960},53963,
-53972,53976,53980,{f:2,c:53988},{f:2,c:54E3},54004,54008,{f:2,c:54016},54019,54021,{f:3,c:54028},54032,54036,54038,{f:2,c:54044},{f:3,c:54047},54053,{f:2,c:54056},54060,54064,{f:2,c:54072},{f:3,c:54075},{f:2,c:54084},{f:2,c:54140},54144,54148,{f:2,c:54156},{f:3,c:54159},{f:2,c:54168},54172,54176,{f:2,c:54184},54187,54189,54196,54200,54204,{f:2,c:54212},{f:2,c:54216},54224,54232,54241,54243,{f:2,c:54252},54256,54260,{f:2,c:54268},54271,54273,54280,54301,54336,54340,54364,54368,54372,54381,54383,{f:2,
-c:54392},54396,{f:2,c:54399},54402,{f:2,c:54408},54411,54413,54420,54441,54476,54480,54484,54492,54495,54504,54508,54512,54520,54523,54525,54532,54536,54540,{f:2,c:54548},54551,{f:2,c:54588},54592,54596,{f:2,c:54604},54607,54609,{f:2,c:54616},54620,54624,54629,{f:2,c:54632},54635,54637,{f:2,c:54644},54648,54652,{f:2,c:54660},{f:3,c:54663},54672,54693,{f:2,c:54728},54732,54736,54738,{f:2,c:54744},54747,54749,{f:2,c:54756},54760,54764,{f:2,c:54772},54775,54777,{f:2,c:54784},54788,54792,{f:2,c:54800},
-{f:3,c:54803},54812,54816,54820,54829,{f:2,c:54840},54844,54848,54853,{f:2,c:54856},54859,54861,54865,{f:2,c:54868},54872,54876,54887,54889,{f:2,c:54896},54900,54915,54917,{f:2,c:54924},54928,54932,54941,54943,54945,54952,54956,54960,54969,54971,{f:2,c:54980},54984,54988,54993,54996,54999,55001,55008,55012,55016,55024,55029,{f:2,c:55036},55040,55044,55057,{f:2,c:55064},55068,55072,{f:2,c:55080},55083,55085,{f:2,c:55092},55096,55100,55108,55111,55113,{f:2,c:55120},55124,{f:4,c:55126},{f:2,c:55136},
-55139,55141,55145,55148,55152,55156,{f:2,c:55164},55169,{f:2,c:55176},55180,55184,{f:2,c:55192},55195,55197,20285,20339,20551,20729,21152,21487,21621,21733,22025,23233,23478,26247,{f:2,c:26550},26607,27468,29634,30146,31292,33499,33540,34903,34952,35382,[36040,63747],36303,36603,36838,39381,21051,21364,21508,24682,24932,27580,29647,33050,35258,[12179,35282],38307,20355,21002,22718,22904,23014,[12082,24178],24185,25031,25536,26438,26604,26751,28567,30286,30475,30965,31240,31487,31777,32925,[12169,
-33390],33393,35563,38291,20075,21917,26359,28212,30883,31469,33883,35088,34638,38824,21208,22350,22570,23884,24863,25022,25121,25954,26577,27204,28187,[12130,29976],30131,30435,30640,32058,37039,{f:2,c:37969},40853,21283,23724,30002,32987,37440,38296,21083,22536,23004,23713,23831,24247,24378,24394,24951,27743,30074,30086,31968,32115,32177,32652,33108,33313,34193,35137,35611,37628,[38477,64009],40007,20171,20215,20491,20977,22607,24887,24894,24936,25913,27114,28433,30117,30342,30422,31623,33445,33995,
-37799,38283,21888,23458,22353,31923,32697,37301,20520,21435,23621,24040,25298,25454,25818,25831,28192,28844,31067,36317,36382,36989,37445,37624,20094,20214,20581,[12081,24062],24314,24838,26967,33137,34388,36423,37749,39467,20062,20625,26480,26688,20745,21133,21138,27298,30652,37392,40660,21163,24623,36850,20552,25001,25581,25802,26684,27268,28608,33160,35233,38548,22533,29309,[12125,29356],29956,32121,32365,32937,[12178,35211,64010],35700,36963,40273,25225,27770,28500,32080,32570,35363,20860,24906,
-31645,35609,37463,37772,20140,20435,20510,20670,20742,21185,21197,21375,22384,22659,24218,24465,24950,25004,25806,25964,26223,26299,[26356,63745],26775,28039,28805,28913,29855,29861,29898,30169,30828,30956,31455,31478,32069,32147,32789,32831,33051,33686,35686,36629,36885,37857,38915,38968,39514,39912,20418,21843,22586,[22865,63753],23395,23622,24760,25106,26690,26800,26856,28330,30028,30328,30926,31293,31995,32363,32380,35336,35489,35903,38542,40388,21476,21481,21578,21617,22266,22993,23396,23611,
-24235,25335,25911,25925,25970,26272,26543,27073,27837,30204,30352,30590,31295,32660,32771,32929,33167,33510,33533,33776,34241,34865,34996,35493,36764,37678,38599,39015,[12220,39640],[12238,40723],21741,26011,26354,26767,31296,[12181,35895],40288,22256,22372,23825,26118,26801,26829,28414,29736,34974,39908,27752,[12219,39592],20379,20844,20849,21151,23380,[12079,24037],24656,24685,25329,25511,25915,29657,31354,34467,36002,38799,[20018,63749],23521,[12093,25096],26524,[12128,29916],31185,33747,35463,
-35506,36328,36942,37707,38982,[24275,64011],27112,34303,37101,20896,23448,23532,24931,26874,27454,28748,29743,29912,31649,32592,33733,35264,36011,38364,39208,21038,24669,25324,36866,20362,20809,21281,22745,24291,26336,27960,28826,29378,29654,31568,33009,37979,21350,25499,32619,20054,20608,22602,22750,24618,24871,25296,27088,39745,23439,32024,32945,36703,20132,20689,21676,21932,23308,23968,24039,25898,25934,26657,27211,29409,30350,30703,32094,32761,33184,34126,34527,36611,36686,37066,39171,39509,39851,
-19992,20037,20061,20167,20465,20855,21246,21312,[12061,21475],[21477,63750],21646,22036,22389,22434,23495,23943,24272,25084,25304,25937,26552,26601,27083,27472,27590,27628,27714,28317,28792,29399,29590,29699,30655,30697,31350,32127,32777,[12165,33276],33285,33290,33503,34914,35635,36092,36544,36881,37041,37476,37558,39378,39493,40169,40407,[12244,40860,63751,63752],22283,23616,33738,38816,38827,40628,21531,31384,32676,35033,36557,37089,22528,23624,25496,31391,23470,[12088,24339],31353,31406,33422,
-36524,20518,21048,21240,21367,22280,25331,25458,27402,28099,30519,21413,29527,34152,36470,38357,26426,27331,28528,35437,36556,39243,26231,27512,36020,[12225,39740],21483,22317,22862,25542,27131,29674,30789,31418,31429,31998,33909,35215,36211,36917,38312,21243,22343,30023,31584,33740,37406,27224,20811,21067,21127,25119,26840,26997,38553,20677,21156,21220,25027,[12100,26020],26681,27135,29822,31563,33465,33771,35250,35641,36817,39241,20170,22935,25810,26129,27278,29748,31105,31165,33449,{f:2,c:34942},
-35167,37670,20235,21450,24613,25201,27762,32026,32102,20120,20834,30684,32943,20225,20238,20854,20864,21980,22120,22331,22522,22524,22804,22855,22931,23492,23696,23822,[12080,24049],24190,24524,25216,26071,26083,{f:2,c:26398},26462,26827,26820,27231,27450,27683,27773,27778,28103,29592,29734,29738,29826,29859,30072,30079,30849,30959,31041,{f:2,c:31047},31098,31637,32E3,32186,32648,32774,32813,32908,35352,35663,[35912,63744],36215,37665,37668,39138,39249,{f:2,c:39438},39525,40594,32202,20342,21513,
-25326,26708,[12198,37329,63754],21931,20794,23068,25062,[25295,63835],25343,37027,[35582,63837],26262,29014,38627,25423,25466,21335,26511,26976,28275,30007,32013,34930,22218,23064,20035,20839,[22856,63756],26608,32784,[12069,22899,63873],[24180,63886],[25754,63889],[31178,63893],[24565,63907],24684,25288,[25467,63908],[23527,63839,63914],23511,21162,22900,24361,[24594,63840],29785,39377,28611,33215,36786,24817,33126,[23615,63933],23273,35365,[26491,63944],[32016,63951],33021,23612,[27877,63971],[21311,
-63979],[28346,63980],22810,[33590,63998],[20025,63838],20150,20294,21934,22296,22727,24406,26039,26086,27264,27573,28237,30701,31471,31774,32222,34507,34962,37170,37723,25787,28606,29562,30136,36948,21846,22349,25018,25812,26311,28129,28251,28525,28601,30192,32835,33213,34113,35203,35527,35674,37663,27795,30035,31572,36367,36957,21776,22530,22616,24162,25095,25758,26848,30070,[31958,64003],34739,40680,20195,22408,22382,[12068,22823],23565,23729,24118,24453,25140,25825,29619,33274,34955,36024,38538,
-40667,[23429,64004],24503,24755,20498,[12049,20992],21040,22294,22581,22615,23566,23648,23798,23947,[24230,64001],24466,24764,25361,25481,25623,26691,26873,27330,28120,28193,28372,28644,29182,30428,30585,31153,31291,33796,35241,36077,36339,36424,36867,36884,36947,37117,37709,38518,38876,27602,28678,29272,29346,29544,30563,31167,31716,32411,[35712,63834],22697,24775,25958,26109,26302,27788,28958,29129,35930,38931,20077,31361,20189,20908,20941,21205,21516,24999,26481,26704,26847,[27934,64005],28540,
-30140,30643,31461,33012,33891,37509,20828,[12099,26007],26460,26515,30168,31431,33651,[12182,35910],36887,38957,23663,33216,33434,36929,36975,37389,24471,23965,27225,29128,30331,31561,34276,35588,37159,39472,[21895,63755],[25078,63757],[30313,63758],[32645,63759],[34367,63760],[34746,63761],[35064,63762],[37007,63763],[27931,63765],[28889,63766],[29662,63767],32097,[33853,63768],[37226,63769],[39409,63770],[20098,63771],[21365,63772],[27396,63773],27410,28734,[29211,63774],[34349,63775],[40478,63776],
-21068,36771,[23888,63777],25829,25900,27414,[28651,63778],31811,32412,[34253,63779],[35172,63780],35261,[25289,63781],[33240,63782],[34847,63783],[24266,63784],[26391,63785],[28010,63786],[29436,63787],29701,29807,34690,[37086,63788],[20358,63789],23821,24480,33802,[20919,63790],[25504,63861],[30053,63862],[20142,63863],20486,[20841,63864],[20937,63865],[26753,63866],27153,31918,31921,[31975,63867],[33391,63868],[35538,63869],36635,[37327,63870],20406,20791,[21237,63871],[21570,63872],[24300,63874],
-24942,25150,[26053,63875],27354,[28670,63876],[31018,63877],34268,34851,[38317,63878],39522,[39530,63879],[40599,63880],[40654,63881],[12050,21147,63882],[26310,63883],[27511,63884],28701,31019,[36706,63885],38722,[24976,63887],[25088,63888],25891,[28451,63890],[29001,63891],[29833,63892],[32244,63894],[32879,63895],[34030,63897],[36646,63896],[36899,63898],[37706,63899],20925,[21015,63900],[21155,63901],27916,[28872,63903],[35010,63904],[24265,63906],25986,[27566,63909],28610,[31806,63910],[29557,
-63911],[20196,63912],20278,[22265,63913],23738,[23994,63915],[24604,63916],[29618,63917],31533,[32666,63919],32718,[32838,63920],36894,[37428,63921],[38646,63922],[38728,63923],[38936,63924],40801,[20363,63925],28583,[31150,63926],[37300,63927],[38583,63928],[21214,63791],25736,[25796,63792],[27347,63793],28510,28696,[29200,63794],[30439,63795],[12156,32769,63796],[34310,63797],[34396,63798],[36335,63799],36613,[38706,63800],[39791,63801],[40442,63802],[12228,40565],[30860,63803],[31103,63804],[32160,
-63805],[33737,63806],[37636,63807],[12229,40575,63808],40595,[35542,63809],[22751,63810],[24324,63811],26407,28711,29903,[31840,63812],[32894,63813],20769,28712,[29282,63814],[30922,63815],[36034,63816],36058,36084,[38647,63817],[20102,63930],[20698,63931],[23534,63932],24278,[26009,63934],[29134,63936],[30274,63937],30637,32842,[34044,63938],[36988,63939],39719,[12243,40845,63940],[22744,63818],23105,[23650,63819],[27155,63820],[28122,63821],[28431,63822],30267,[32047,63823],[32311,63824],34078,
-35128,37860,[38475,63825],[21129,63943],26066,[26611,63945],27060,[27969,63946],[28316,63947],28687,[29705,63948],29792,[30041,63949],30244,[30827,63950],35628,[39006,63952],[20845,63953],[25134,63954],[38520,63955],20374,[20523,63956],[23833,63957],[28138,63958],32184,[36650,63959],[24459,63960],[24900,63961],[26647,63962],[38534,63964],[21202,63826],[32907,63827],[20956,63828],[20940,63829],26974,[31260,63830],[32190,63831],[33777,63832],[38517,63833],20442,[21033,63965],21400,[21519,63966],21774,
-[23653,63967],24743,[26446,63969],[26792,63970],28012,29313,29432,[29702,63972],29827,[30178,63973],31852,[32633,63974],32696,33673,[35023,63975],[35041,63976],[12197,37324,63977],37328,[38626,63978],39881,[21533,63981],28542,[29136,63982],[29848,63983],[34298,63984],36522,[38563,63985],[40023,63986],[40607,63987],[26519,63988],[28107,63989],29747,[33256,63990],38678,30764,[12148,31435,63991],[31520,63992],[31890,63993],25705,29802,30194,30908,30952,[12218,39340],39764,[12231,40635],23518,24149,28448,
-33180,33707,37E3,19975,21325,23081,24018,24398,24930,25405,26217,26364,28415,28459,28771,30622,33836,34067,34875,36627,39237,39995,21788,25273,26411,27819,33545,35178,38778,20129,22916,{f:2,c:24536},26395,32178,32596,33426,33579,33725,36638,37017,22475,22969,23186,23504,26151,26522,26757,27599,29028,32629,36023,36067,36993,39749,33032,35978,38476,39488,[12230,40613],23391,27667,29467,30450,30431,33804,20906,35219,20813,20885,21193,26825,27796,30468,30496,32191,32236,[12207,38754],40629,28357,34065,
-20901,21517,21629,26126,26269,26919,28319,[12139,30399],30609,33559,33986,34719,37225,37528,40180,34946,20398,20882,21215,22982,24125,24917,{f:2,c:25720},26286,26576,27169,27597,[12113,27611],29279,29281,29761,30520,[12141,30683],32791,33468,33541,35584,35624,35980,[12106,26408],27792,29287,[12140,30446],30566,31302,40361,27519,27794,22818,26406,33945,21359,22675,22937,24287,25551,26164,26483,28218,29483,31447,33495,37672,21209,24043,25006,25035,25098,25287,25771,[12102,26080],26969,27494,[12111,
-27595],28961,29687,30045,32326,33310,33538,34154,35491,36031,38695,40289,22696,40664,20497,21006,21563,21839,[12098,25991],27766,{f:2,c:32010},32862,34442,[12200,38272],38639,21247,27797,29289,21619,23194,23614,23883,24396,24494,26410,26806,26979,28220,28228,30473,[12150,31859],32654,34183,35598,36855,38753,40692,23735,24758,24845,25003,25935,{f:2,c:26107},27665,27887,29599,29641,32225,38292,23494,34588,35600,21085,21338,25293,25615,25778,26420,27192,27850,29632,29854,31636,31893,32283,33162,33334,
-34180,36843,38649,39361,20276,21322,21453,21467,25292,25644,25856,26001,27075,27886,28504,29677,30036,30242,30436,30460,30928,[30971,63844],31020,32070,33324,34784,36820,38930,39151,21187,25300,25765,28196,28497,30332,36299,37297,37474,39662,39747,20515,20621,22346,22952,23592,24135,24439,25151,25918,[12101,26041],26049,26121,26507,27036,28354,30917,32033,32938,33152,33323,33459,33953,34444,35370,35607,37030,38450,40848,20493,20467,22521,24472,25308,25490,26479,28227,28953,30403,32972,32986,{f:2,
-c:35060},35097,36064,36649,37197,38506,20271,20336,24091,26575,26658,[12137,30333],30334,39748,24161,27146,29033,29140,30058,32321,34115,34281,39132,20240,31567,32624,38309,20961,24070,26805,27710,27726,27867,29359,31684,33539,27861,29754,20731,21128,22721,25816,27287,29863,30294,30887,34327,38370,38713,21342,24321,35722,36776,36783,37002,21029,30629,40009,40712,19993,20482,20853,23643,24183,26142,26170,26564,26821,28851,29953,30149,31177,31453,36647,39200,39432,20445,22561,22577,23542,26222,27493,
-27921,28282,28541,29668,29995,33769,35036,35091,35676,36628,20239,20693,21264,[12056,21340],23443,[24489,63846],26381,31119,33145,33583,34068,35079,35206,36665,[36667,64007],39333,39954,26412,20086,20472,22857,23553,{f:2,c:23791},25447,26834,28925,29090,29739,32299,34028,34562,36898,37586,40179,[19981,63847],20184,20463,20613,21078,21103,21542,21648,22496,22827,23142,23386,23413,23500,24220,25206,25975,26023,28014,28325,[12119,29238],31526,31807,[12152,32566],{f:2,c:33104},33178,33344,33433,33705,
-35331,36E3,36070,36091,36212,36282,37096,37340,[12201,38428],38468,39385,40167,[21271,63843],20998,21545,22132,22707,22868,22894,24575,24996,25198,26128,27774,28954,30406,31881,31966,32027,33452,36033,38640,20315,24343,24447,25282,23849,26379,26842,30844,32323,40300,19989,20633,[12052,21269],21290,21329,22915,23138,24199,24754,24970,25161,25209,26E3,26503,27047,[12112,27604],{f:3,c:27606},27832,29749,30202,30738,30865,31189,31192,31875,32203,32737,32933,33086,33218,33778,34586,35048,35513,35692,36027,
-37145,[12206,38750],[12214,39131],[12240,40763],22188,23338,24428,25996,27315,27567,27996,28657,28693,29277,29613,36007,36051,38971,24977,27703,32856,39425,20045,20107,20123,20181,20282,20284,20351,20447,20735,21490,21496,21766,21987,22235,[12064,22763],22882,23057,23531,23546,23556,24051,24107,24473,24605,25448,26012,26031,26614,26619,26797,27515,27801,27863,28195,28681,29509,30722,31038,31040,31072,31169,31721,32023,32114,32902,33293,33678,34001,34503,35039,35408,35422,35613,36060,36198,36781,37034,
-39164,39391,40605,21066,26388,20632,21034,[12077,23665],25955,27733,29642,29987,30109,31639,33948,37240,38704,20087,25746,[27578,63856],29022,34217,19977,26441,26862,28183,33439,34072,34923,25591,28545,37394,39087,19978,20663,20687,20767,21830,21930,22039,23360,23577,23776,24120,24202,24224,24258,24819,26705,27233,28248,29245,29248,[29376,63994],30456,31077,31665,32724,35059,35316,35443,35937,36062,38684,[22622,63852],29885,36093,21959,31329,[32034,63850],[12170,33394],29298,[12131,29983],29989,31513,
-22661,22779,23996,24207,24246,24464,24661,25234,25471,25933,26257,26329,26360,26646,26866,29312,29790,31598,32110,32214,32626,32997,33298,34223,35199,35475,36893,37604,[12233,40653],[12239,40736],[12067,22805],22893,24109,24796,26132,26227,26512,27728,28101,28511,[12143,30707],30889,33990,37323,37675,20185,20682,20808,21892,23307,23459,25159,25982,26059,28210,29053,29697,29764,29831,29887,30316,31146,32218,32341,32680,33146,33203,33337,34330,34796,35445,36323,36984,37521,37925,39245,39854,21352,23633,
-26964,27844,27945,28203,[12166,33292],34203,35131,35373,[35498,63855,63905],38634,40807,21089,26297,27570,32406,34814,36109,38275,38493,25885,28041,29166,22478,22995,23468,24615,24826,25104,26143,26207,29481,29689,30427,[30465,63853],31596,32854,32882,33125,35488,37266,19990,21218,27506,27927,31237,31545,32048,36016,21484,22063,22609,23477,[12073,23567],23569,24034,25152,25475,25620,26157,26803,27836,28040,28335,28703,28836,29138,29990,30095,30094,30233,31505,31712,31787,32032,32057,34092,34157,34311,
-35380,36877,36961,37045,37559,38902,39479,20439,23660,26463,28049,31903,32396,35606,36118,36895,23403,24061,25613,33984,36956,39137,[29575,63841,63963],23435,24730,26494,28126,35359,35494,36865,38924,21047,28753,30862,37782,34928,37335,20462,21463,22013,22234,22402,22781,23234,23432,23723,23744,24101,24833,25101,[12095,25163],25480,25628,25910,[25976,63849],27193,27530,[12116,27700],27929,28465,29159,29417,29560,29703,29874,30246,30561,31168,31319,31466,31929,32143,32172,32353,32670,33065,33585,33936,
-34010,34282,34966,35504,35728,36664,36930,36995,37228,37526,37561,38539,{f:2,c:38567},38614,38656,38920,[12216,39318],39635,39706,21460,22654,22809,23408,23487,28113,28506,29087,29729,29881,32901,33789,24033,24455,24490,24642,26092,26642,26991,27219,27529,27957,28147,29667,30462,30636,31565,32020,33059,33308,33600,34036,34147,35426,35524,37255,37662,38918,39348,25100,34899,36848,37477,23815,23847,23913,29791,33181,34664,28629,[25342,63859],32722,35126,35186,19998,20056,20711,21213,21319,25215,26119,
-32361,34821,38494,20365,21273,22070,22987,23204,[12075,23608],23630,23629,24066,24337,24643,26045,26159,26178,26558,26612,29468,[12142,30690],[12144,31034],32709,33940,33997,35222,35430,35433,35553,[12183,35925],35962,22516,23508,24335,24687,25325,26893,27542,28252,29060,31698,34645,[35672,63996],36606,[12215,39135],39166,20280,20353,20449,21627,23072,23480,24892,26032,26216,29180,30003,31070,32051,33102,[12162,33251],33688,34218,34254,34563,35338,[12189,36523],[12191,36763],36805,22833,23460,23526,
-24713,23529,23563,[12092,24515],27777,28145,28683,29978,33455,35574,[20160,63997],[12055,21313],38617,[12114,27663],20126,20420,20818,21854,23077,23784,25105,[12123,29273],33469,33706,34558,34905,35357,38463,38597,39187,40201,40285,22538,23731,23997,24132,[24801,63929],24853,25569,[27138,63764,63836,63935],28197,37122,37716,38990,39952,40823,23433,23736,25353,26191,26696,30524,38593,38797,38996,39839,26017,35585,36555,38332,21813,23721,24022,24245,26263,30284,33780,38343,22739,25276,29390,40232,20208,
-22830,24591,26171,27523,31207,40230,21395,21696,22467,23830,24859,26326,28079,30861,33406,38552,38724,21380,25212,25494,28082,32266,33099,38989,27387,32588,40367,40474,20063,20539,20918,22812,24825,25590,26928,29242,32822,37326,24369,32004,[33509,63860],33903,33979,34277,36493,20335,22756,23363,24665,25562,25880,25965,26264,26954,27171,27915,28673,29036,30162,30221,31155,31344,[12154,32650],35140,35731,37312,38525,39178,22276,24481,26044,28417,30208,31142,35486,39341,[12226,39770],40812,20740,25014,
-25233,27277,33222,20547,22576,24422,28937,[12180,35328],35578,23420,34326,20474,20796,22196,22852,25513,28153,23978,26989,20870,20104,20313,22914,27487,27741,29877,30998,33287,33349,33593,36671,36701,39192,20134,22495,24441,[26131,63968],30123,32377,35695,36870,39515,22181,22567,23032,23071,23476,24310,25424,25403,26941,27783,27839,28046,28051,28149,28436,28895,28982,29017,29123,29141,30799,30831,31605,32227,32303,34893,36575,37467,40182,24709,28037,29105,38321,21421,26579,28814,28976,29744,33398,
-33490,38331,39653,40573,26308,29121,[33865,63854],22603,23992,24433,26144,26254,27001,27054,27704,27891,28214,28481,28634,28699,28719,29008,29151,29552,29787,29908,30408,31310,32403,33521,35424,36814,37704,38681,20034,20522,21E3,21473,26355,27757,28618,29450,30591,31330,33454,34269,34306,35028,35427,35709,35947,37555,38675,38928,20116,20237,20425,20658,21320,21566,21555,21978,22626,22714,22887,23067,23524,24735,25034,25942,26111,26212,26791,27738,28595,28879,29100,29522,31613,34568,35492,39986,40711,
-23627,27779,29508,[12127,29577],37434,28331,29797,30239,31337,32277,34314,20800,22725,25793,29934,29973,30320,32705,37013,38605,39252,28198,[12129,29926],{f:2,c:31401},33253,34521,34680,35355,23113,23436,23451,26785,26880,28003,29609,29715,29740,30871,32233,32747,33048,33109,33694,35916,[38446,63942],38929,[12104,26352],24448,26106,26505,27754,29579,20525,23043,27498,30702,22806,23916,24013,29477,30031,20709,20985,22575,22829,22934,23002,23525,23970,25303,25622,25747,25854,26332,27208,29183,29796,
-31368,31407,32327,32350,32768,33136,34799,35201,35616,36953,36992,39250,24958,27442,28020,32287,35109,36785,20433,20653,20887,21191,22471,22665,23481,24248,24898,27029,28044,28263,28342,29076,29794,[12132,29992],29996,32883,33592,33993,36362,37780,37854,20110,20305,20598,20778,[12060,21448],21451,21491,23431,23507,23588,24858,24962,26100,[12124,29275],29591,29760,30402,31056,31121,31161,32006,[12155,32701],33419,34261,34398,36802,36935,37109,37354,38533,[12204,38632],38633,21206,24423,26093,26161,
-26671,29020,31286,37057,38922,20113,27218,27550,28560,29065,32792,33464,34131,36939,38549,38642,38907,34074,39729,20112,29066,38596,20803,21407,21729,22291,22290,22435,23195,23236,23491,24616,24895,25588,27781,27961,28274,28304,29232,29503,29783,33489,34945,36677,36960,38498,39E3,40219,[12105,26376],36234,37470,20301,20553,20702,21361,22285,22996,23041,23561,24944,26256,28205,29234,29771,32239,32963,33806,33894,34111,34655,34907,35096,35586,36949,[12209,38859],39759,20083,20369,20754,20842,21807,
-21929,23418,23461,{f:2,c:24188},24254,24736,24799,{f:2,c:24840},25540,25912,26377,26580,26586,{f:2,c:26977},27833,27943,28216,28641,{f:2,c:29494},29788,30001,30290,32173,33278,33848,35029,35480,35547,35565,36400,36418,36938,36926,36986,[12195,37193],37321,37742,22537,27603,[12161,32905],32946,20801,22891,23609,28516,29607,32996,36103,37399,38287,[12160,32895],25102,28700,32104,34701,22432,24681,24903,27575,35518,37504,38577,[12036,20057],21535,28139,34093,38512,[12211,38899],39150,25558,27875,[12194,
-37009],20957,25033,33210,40441,20381,20506,20736,23452,24847,25087,25836,26885,27589,30097,30691,32681,33380,34191,34811,[12176,34915],35516,35696,37291,[12038,20108],20197,20234,22839,23016,24050,24347,24411,24609,29246,29669,[30064,63842],30157,31227,[12157,32780],[12159,32819],32900,33505,33617,36029,36019,36999,39156,39180,28727,30410,32714,32716,32764,35610,[12040,20154],20161,20995,21360,[21693,63902],22240,23035,23493,24341,24525,28270,32106,33589,34451,35469,38765,38775,[12032,19968],20314,
-20350,22777,[12103,26085],28322,36920,37808,39353,20219,22764,22922,23001,24641,31252,33615,36035,[12042,20837],21316,20173,21097,23381,33471,20180,[21050,63999],21672,22985,23039,[12070,23376],23383,23388,24675,24904,28363,[28825,63995],29038,29574,29943,30133,30913,32043,32773,[12163,33258],33576,34071,34249,35566,36039,38604,20316,21242,22204,26027,26152,28796,28856,29237,32189,33421,37196,38592,40306,23409,26855,27544,28538,30430,23697,26283,28507,31668,31786,34870,38620,19976,20183,21280,22580,
-22715,22767,22892,23559,24115,24196,24373,25484,26290,26454,27167,27299,27404,28479,29254,29520,29835,31456,31911,33144,33247,33255,33674,33900,34083,34196,34255,35037,36115,37292,[12199,38263],38556,20877,21705,22312,23472,25165,26448,26685,26771,28221,28371,28797,32289,35009,36001,36617,40779,40782,29229,31631,35533,37658,20295,20302,20786,21632,22992,24213,25269,26485,26990,27159,27822,28186,29401,29482,30141,31672,32053,33511,33785,33879,34295,35419,36015,36487,36889,37048,38606,40799,21219,21514,
-23265,23490,25688,25973,28404,29380,30340,31309,31515,31821,32318,32735,33659,35627,36042,[12186,36196],36321,36447,36842,36857,36969,37841,20291,20346,20659,20840,20856,21069,21098,22625,22652,22880,23560,23637,24283,24731,25136,26643,27583,27656,28593,29006,29728,[12133,3E4],30008,30033,30322,31564,31627,31661,31686,32399,35438,36670,36681,37439,37523,37666,37931,38651,39002,39019,39198,[20999,64E3],25130,25240,27993,30308,31434,31680,32118,21344,23742,24215,28472,28857,31896,38673,39822,40670,
-25509,25722,34678,19969,20117,20141,20572,20597,21576,22979,23450,24128,24237,24311,24449,24773,25402,25919,25972,26060,26230,26232,26622,26984,27273,27491,27712,28096,28136,28191,28254,28702,28833,29582,29693,30010,30555,30855,31118,31243,31357,31934,32142,33351,35330,35562,35998,37165,37194,37336,37478,37580,37664,38662,38742,38748,38914,[12237,40718],21046,21137,21884,22564,24093,24351,24716,25552,26799,28639,31085,31532,33229,34234,35069,35576,36420,37261,38500,38555,38717,38988,[12241,40778],
-20430,20806,20939,21161,22066,24340,24427,25514,25805,26089,26177,26362,26361,26397,26781,26839,27133,28437,28526,29031,29157,[12118,29226],29866,30522,31062,31066,31199,31264,31381,31895,31967,32068,32368,32903,34299,34468,35412,35519,36249,36481,36896,36973,37347,38459,38613,[12227,40165],26063,31751,[12188,36275],37827,23384,23562,21330,25305,29469,20519,23447,24478,24752,24939,26837,28121,29742,31278,32066,32156,32305,33131,36394,36405,37758,37912,20304,22352,24038,24231,25387,32618,20027,20303,
-20367,20570,23005,32964,21610,21608,22014,22863,23449,24030,24282,26205,26417,26609,26666,27880,27954,28234,28557,28855,29664,30087,31820,32002,32044,32162,[12168,33311],34523,35387,35461,[12187,36208],36490,36659,36913,37198,37202,37956,39376,[12149,31481],31909,20426,20737,20934,22472,23535,23803,26201,27197,27994,28310,28652,28940,30063,31459,34850,36897,36981,38603,39423,33537,20013,20210,34886,37325,21373,27355,26987,27713,33914,22686,24974,26366,25327,28893,29969,30151,32338,33976,35657,36104,
-20043,21482,21675,22320,22336,24535,25345,25351,25711,[12096,25903],26088,26234,26525,26547,[12108,27490],27744,27802,28460,30693,30757,31049,31063,32025,32930,33026,[12164,33267],33437,33463,34584,35468,36100,36286,36978,30452,31257,31287,32340,32887,21767,21972,22645,25391,25634,26185,26187,26733,27035,27524,27941,28337,29645,29800,29857,30043,30137,30433,30494,30603,31206,32265,32285,33275,34095,34967,35386,36049,36587,[12192,36784,63857],36914,37805,38499,38515,38663,20356,21489,23018,23241,24089,
-26702,29894,30142,31209,31378,33187,34541,36074,36300,36845,26015,26389,22519,28503,32221,36655,37878,38598,24501,25074,28548,19988,20376,20511,21449,21983,23919,24046,27425,27492,30923,31642,36425,[12190,36554,63746],36974,25417,25662,30528,31364,37679,38015,40810,25776,28591,29158,29864,29914,31428,31762,32386,31922,32408,35738,36106,38013,39184,39244,21049,23519,25830,26413,32046,20717,[21443,63851],22649,{f:2,c:24920},25082,26028,31449,35730,35734,20489,20513,21109,21809,23100,24288,24432,24884,
-25950,26124,26166,26274,27085,28356,28466,29462,30241,31379,33081,33369,33750,33980,20661,22512,23488,23528,24425,25505,30758,32181,33756,34081,37319,37365,20874,26613,31574,36012,20932,22971,24765,34389,20508,21076,23610,24957,25114,[25299,64002],25842,26021,28364,30240,33034,36448,38495,38587,20191,21315,21912,22825,24029,25797,27849,28154,29588,31359,[12167,33307],34214,36068,36368,36983,37351,38369,38433,38854,20984,21746,21894,24505,25764,28552,32180,36639,36685,37941,20681,23574,27838,28155,
-29979,30651,31805,31844,35449,35522,22558,22974,24086,25463,29266,30090,30571,35548,36028,36626,24307,26228,28152,32893,33729,35531,[12205,38737],39894,21059,26367,28053,28399,32224,35558,36910,36958,39636,21021,21119,21736,24980,25220,25307,26786,26898,26970,27189,28818,28966,30813,30977,30990,31186,31245,32918,[12171,33400],33493,33609,34121,35970,36229,37218,37259,37294,20419,22225,29165,30679,34560,35320,[12072,23544],24534,26449,37032,21474,22618,23541,24740,24961,25696,32317,32880,34085,37507,
-25774,20652,23828,26368,22684,25277,25512,26894,27E3,27166,28267,30394,31179,33467,33833,35535,36264,36861,37138,37195,37276,37648,37656,37786,38619,39478,39949,19985,30044,31069,31482,31569,31689,32302,33988,36441,36468,36600,36880,26149,26943,29763,20986,26414,40668,20805,24544,27798,34802,34909,34935,24756,33205,33795,36101,21462,21561,22068,23094,23601,28810,32736,32858,33030,33261,36259,37257,39519,40434,20596,20164,21408,24827,28204,23652,20360,20516,21988,23769,24159,24677,26772,27835,28100,
-29118,30164,30196,30305,31258,31305,32199,32251,32622,33268,34473,36636,38601,39347,[12242,40786],21063,21189,39149,35242,19971,26578,28422,20405,23522,26517,[27784,63858],28024,29723,30759,37341,37756,34756,31204,31281,24555,20182,21668,21822,22702,22949,24816,25171,25302,26422,26965,33333,38464,39345,39389,20524,21331,21828,22396,25176,25826,26219,26589,28609,28655,29730,29752,35351,37944,21585,22022,22374,24392,24986,27470,28760,28845,32187,35477,22890,33067,25506,30472,32829,36010,22612,25645,
-27067,23445,24081,28271,34153,20812,21488,22826,24608,24907,27526,27760,27888,31518,32974,33492,36294,37040,39089,25799,28580,25745,25860,20814,21520,[12063,22303],35342,24927,26742,30171,31570,32113,36890,22534,27084,33151,35114,36864,38969,20600,22871,22956,25237,36879,39722,24925,29305,38358,22369,23110,24052,25226,25773,25850,26487,27874,27966,29228,29750,30772,32631,33453,36315,38935,21028,22338,26495,29256,29923,36009,36774,37393,38442,[12043,20843],21485,25420,20329,21764,24726,25943,27803,
-28031,29260,29437,31255,35207,[12185,35997],24429,28558,28921,33192,24846,[20415,63845],20559,25153,[12122,29255],31687,32232,32745,36941,38829,39449,36022,22378,24179,26544,33805,35413,21536,23318,24163,24290,24330,25987,32954,34109,38281,38491,20296,21253,21261,21263,21638,21754,22275,24067,24598,25243,25265,25429,27873,28006,30129,30770,32990,33071,33502,33889,33970,34957,35090,36875,37610,39165,39825,24133,[26292,64006],26333,28689,29190,20469,21117,24426,24915,26451,27161,28418,29922,31080,34920,
-35961,39111,39108,39491,21697,31263,26963,35575,35914,[12213,39080],39342,24444,25259,30130,[12138,30382],34987,36991,38466,21305,24380,24517,[27852,63848],29644,30050,[12134,30091],31558,33534,39325,20047,36924,19979,20309,21414,22799,24264,26160,27827,29781,33655,34662,36032,36944,38686,39957,22737,23416,34384,35604,40372,23506,24680,24717,26097,27735,28450,28579,28698,32597,32752,{f:2,c:38289},38480,38867,21106,36676,20989,21547,21688,21859,21898,27323,28085,32216,33382,37532,38519,40569,21512,
-21704,30418,34532,38308,38356,38492,20130,20233,23022,23270,24055,24658,25239,26477,26689,27782,28207,32568,32923,33322,38917,20133,20565,21683,22419,22874,23401,23475,25032,26999,28023,28707,34809,35299,35442,35559,36994,39405,39608,21182,26680,20502,24184,26447,33607,[12175,34892,64008],20139,21521,22190,29670,37141,38911,39177,39255,[12217,39321],22099,22687,34395,35377,25010,27382,29563,36562,27463,38570,39511,22869,29184,36203,[12208,38761],20436,23796,24358,25080,26203,27883,28843,[12126,29572],
-29625,29694,30505,30541,32067,32098,32291,33335,34898,36066,37449,39023,23377,[12147,31348],[12174,34880],[12212,38913],23244,20448,21332,22846,23805,25406,28025,29433,33029,33031,33698,37583,38960,20136,20804,21009,22411,24418,27842,28366,28677,28752,28847,29074,29673,[29801,63918],33610,34722,34913,36872,37026,37795,39336,20846,24407,24800,24935,26291,34137,36426,37295,38795,20046,20114,21628,22741,22778,22909,23733,24359,[12094,25142],25160,26122,26215,27627,28009,28111,28246,28408,28564,28640,
-28649,28765,29392,29733,29786,29920,30355,31068,31946,32286,32993,33446,33899,33983,34382,34399,34676,35703,35946,37804,38912,39013,24785,25110,37239,23130,26127,28151,28222,29759,39746,24573,24794,31503,21700,24344,27742,27859,27946,28888,32005,34425,35340,40251,21270,21644,23301,27194,[12117,28779],30069,31117,[12146,31166],33457,33775,35441,35649,36008,38772,25844,25899,{f:2,c:30906},31339,20024,21914,22864,23462,24187,24739,25563,27489,26213,26707,28185,29029,29872,32008,36996,39529,39973,27963,
-[28369,63748],29502,35905,38346,20976,24140,24488,24653,24822,24880,24908,{f:2,c:26179},27045,27841,28255,28361,28514,29004,29852,30343,31681,31783,33618,34647,36945,38541,[12232,40643],21295,22238,24315,24458,24674,24724,25079,26214,26371,27292,28142,28590,28784,29546,32362,33214,33588,34516,35496,36036,21123,29554,23446,27243,37892,21742,22150,23389,25928,25989,26313,26783,28045,28102,[12120,29243],32948,37237,39501,20399,20505,21402,21518,21564,21897,21957,24127,24460,26429,29030,29661,36869,21211,
-21235,22628,22734,28932,29071,29179,34224,35347,[26248,63941],34216,21927,26244,29002,33841,21321,21913,27585,24409,24509,25582,26249,28999,35569,36637,40638,20241,25658,28875,30054,34407,24676,35662,40440,20807,20982,21256,27958,33016,[12234,40657],26133,27427,28824,30165,21507,23673,32007,35350,[12107,27424],27453,27462,21560,24688,27965,32725,33288,20694,20958,21916,22123,22221,23020,23305,24076,24985,24984,25137,26206,26342,29081,{f:2,c:29113},29351,31143,31232,32690,35440,{s:163},{f:4,c:12310},
-{s:14},8223,8219,{f:2,c:8314},{s:7},8316,0,{f:2,c:8317},{s:23},700,{s:44},8942,8759,{s:20},{f:10,c:10122},{s:36},{f:26,c:9398},{s:61},{f:2,c:8826},{f:2,c:8910},{f:2,c:8832},{f:4,c:8816},0,8842,0,8843,{f:2,c:8822},8825,{f:2,c:8922},{s:5},8773,8771,8776,0,8868,{s:78},8244,{s:11},9839,{s:4},8258,{s:4},10045,0,0,8226,{s:4},{f:2,c:8249},{s:16},10010,10006,0,9711,{s:3},10070,0,9676,{s:24},9775,{s:6},12320,0,{f:10,c:10102},{s:17},12306,12342,{s:13},8710,0,8735,0,{f:2,c:8741},0,8787,8785,{f:2,c:8806},8723,
-{f:3,c:8853},0,8980,0,0,8802,0,9649,0,8738,8784,0,0,8867,0,0,{f:2,c:8814},8837,8836,8713,8716,{f:2,c:8891},8794,8966,{s:6},12958,0,8252,{s:11},9702,{s:3},9663,9653,9657,9667,{s:4},9674,12849,12857,13259,{f:5,c:9327},{s:18},8656,8655,8653,{s:37},8657,8659,{s:8},8626,8625,0,8628,8624,8627,{s:14},8636,8640,{s:10},{f:2,c:8644},{s:144},{f:5,c:9347},{s:33},12948,{s:15},12965,{s:93},8672,8674,8673,8675,{s:4},8678,8680,8679,8681,{s:20},9757,9759,{s:76},12944,{f:6,c:12938},{s:15},{f:2,c:12318},8246,0,8245,
-{s:3},12540,0,0,{f:2,c:44034},{f:2,c:44037},{f:5,c:44043},44056,{f:2,c:44062},{f:3,c:44065},{f:7,c:44069},44078,{f:6,c:44082},{f:2,c:44090},{f:3,c:44093},{f:10,c:44097},44108,{f:6,c:44110},{f:3,c:44117},{f:3,c:44121},{f:19,c:44125},{f:2,c:44146},{f:2,c:44149},44153,{f:5,c:44155},44162,{f:2,c:44167},{f:3,c:44173},{f:3,c:44177},{f:7,c:44181},44190,{f:6,c:44194},44203,{f:2,c:44205},{f:7,c:44209},44218,{f:3,c:44222},{f:2,c:44226},{f:3,c:44229},{f:3,c:44233},{f:8,c:44237},44246,{f:8,c:44248},{f:2,c:44258},
-{f:2,c:44261},44265,44267,{f:2,c:44269},44274,44276,{f:5,c:44279},{f:2,c:44286},{f:3,c:44289},44293,{f:5,c:44295},44302,44304,{f:6,c:44306},{f:3,c:44313},{f:3,c:44317},{f:8,c:44321},{f:2,c:44330},{f:6,c:44334},{f:2,c:44342},{f:3,c:44345},{f:7,c:44349},44358,44360,{f:6,c:44362},{f:3,c:44369},{f:3,c:44373},{f:8,c:44377},44386,{f:8,c:44388},{f:2,c:44398},{f:2,c:44401},{f:4,c:44407},44414,44416,{f:5,c:44419},{f:2,c:44426},{f:3,c:44429},{f:11,c:44433},{f:6,c:44446},{f:18,c:44453},{f:8,c:44472},{f:2,c:44482},
-{f:3,c:44485},{f:7,c:44489},44498,{f:8,c:44500},{f:3,c:44509},{f:3,c:44513},{f:19,c:44517},{f:2,c:44538},{f:2,c:44541},{f:6,c:44546},44554,44556,{f:6,c:44558},{f:27,c:44565},{f:2,c:44594},{f:2,c:44597},44601,{f:5,c:44603},44610,44612,{f:3,c:44615},44619,44623,{f:3,c:44625},44629,{f:5,c:44631},44638,{f:3,c:44642},{f:2,c:44646},{f:2,c:44650},{f:3,c:44653},{f:7,c:44657},44666,{f:6,c:44670},{f:6,c:44678},{f:47,c:44685},44735,{f:3,c:44737},{f:7,c:44741},44750,{f:6,c:44754},{f:2,c:44762},{f:11,c:44765},
-{f:2,c:44777},44780,{f:6,c:44782},{f:3,c:44789},{f:3,c:44793},{f:10,c:44797},{f:4,c:44809},{f:2,c:44814},{f:27,c:44817},{f:2,c:44846},44849,44851,{f:7,c:44853},44862,44864,{f:4,c:44868},{f:6,c:44874},{f:11,c:44881},{f:6,c:44894},{f:19,c:44902},{f:6,c:44922},{f:3,c:44929},{f:3,c:44933},{f:7,c:44937},{f:3,c:44946},{f:6,c:44950},{f:27,c:44957},{f:2,c:44986},{f:3,c:44989},{f:6,c:44993},45002,45004,{f:5,c:45007},{f:7,c:45013},{f:11,c:45021},{f:6,c:45034},{f:2,c:45042},{f:3,c:45045},{f:7,c:45049},{f:2,
-c:45058},{f:7,c:45061},{f:3,c:45069},{f:3,c:45073},{f:7,c:45077},{f:10,c:45086},{f:27,c:45097},{f:2,c:45126},45129,45131,45133,{f:4,c:45135},45142,45144,{f:3,c:45146},{f:30,c:45150},{f:2,c:45182},{f:3,c:45185},{f:7,c:45189},45198,45200,{f:6,c:45202},45211,{f:2,c:45213},{f:5,c:45219},45226,45232,45234,{f:2,c:45238},{f:3,c:45241},{f:7,c:45245},45254,{f:6,c:45258},{f:2,c:45266},{f:3,c:45269},{f:7,c:45273},{f:4,c:45281},{f:34,c:45286},45322,{f:3,c:45325},45329,{f:4,c:45332},45338,{f:5,c:45342},{f:2,c:45350},
-{f:3,c:45353},{f:7,c:45357},45366,{f:6,c:45370},{f:2,c:45378},{f:3,c:45381},{f:7,c:45385},{f:2,c:45394},{f:2,c:45398},{f:3,c:45401},{f:3,c:45405},{f:23,c:45409},{f:2,c:45434},{f:3,c:45437},45441,{f:5,c:45443},45450,45452,{f:4,c:45454},{f:3,c:45461},{f:3,c:45465},{f:11,c:45469},{f:35,c:45481},{f:3,c:45517},{f:3,c:45521},{f:7,c:45525},45534,{f:8,c:45536},{f:2,c:45546},{f:3,c:45549},{f:8,c:45553},45562,45564,{f:6,c:45566},{f:2,c:45574},{f:2,c:45577},{f:7,c:45581},45590,45592,{f:6,c:45594},{f:19,c:45601},
-{f:7,c:45621},{f:27,c:45629},{f:3,c:45657},{f:3,c:45661},{f:7,c:45665},{f:10,c:45674},{f:6,c:45686},{f:7,c:45693},{f:3,c:45702},{f:6,c:45706},{f:2,c:45714},{f:3,c:45717},{f:5,c:45723},45730,45732,{f:3,c:45735},45739,{f:3,c:45741},{f:3,c:45745},{f:19,c:45749},{f:2,c:45770},{f:3,c:45773},45777,{f:5,c:45779},45786,45788,{f:4,c:45790},45795,45799,{f:2,c:45801},{f:3,c:45808},45814,{f:3,c:45820},{f:2,c:45826},{f:3,c:45829},{f:7,c:45833},45842,{f:6,c:45846},{f:55,c:45853},45911,{f:2,c:45913},45917,{f:4,
-c:45920},45926,45928,45930,{f:2,c:45932},45935,{f:2,c:45938},{f:3,c:45941},{f:7,c:45945},45954,{f:6,c:45958},{f:3,c:45965},{f:3,c:45969},{f:11,c:45973},{f:6,c:45986},{f:3,c:45993},{f:23,c:45997},{f:2,c:46022},{f:2,c:46025},46029,46031,{f:3,c:46033},46038,46040,46042,46044,{f:2,c:46046},{f:3,c:46049},{f:3,c:46053},{f:19,c:46057},{f:19,c:46077},{f:7,c:46097},{f:3,c:46105},{f:3,c:46109},{f:7,c:46113},46122,{f:8,c:46124},{f:27,c:46133},{f:2,c:46162},{f:3,c:46165},{f:7,c:46169},46178,46180,{f:6,c:46182},
-{f:19,c:46189},{f:7,c:46209},{f:20,c:46217},{f:6,c:46238},{f:3,c:46245},{f:3,c:46249},{f:8,c:46253},46262,46264,{f:6,c:46266},{f:3,c:46273},{f:3,c:46277},{f:7,c:46281},{f:4,c:46289},{f:6,c:46294},{f:2,c:46302},{f:2,c:46305},46309,{f:5,c:46311},46318,46320,{f:6,c:46322},{f:27,c:46329},{f:2,c:46358},{f:2,c:46361},{f:7,c:46365},46374,{f:5,c:46379},{f:2,c:46386},{f:3,c:46389},{f:7,c:46393},46402,{f:5,c:46406},{f:2,c:46414},{f:3,c:46417},{f:7,c:46421},46430,{f:62,c:46434},{f:2,c:46498},{f:3,c:46501},46505,
-{f:4,c:46508},46514,{f:5,c:46518},{f:2,c:46526},{f:3,c:46529},{f:7,c:46533},46542,{f:6,c:46546},{f:19,c:46553},{f:35,c:46573},{f:2,c:46610},{f:3,c:46613},{f:12,c:46617},{f:6,c:46630},{f:7,c:46637},{f:19,c:46645},{f:27,c:46665},{f:3,c:46693},{f:51,c:46697},{f:2,c:46750},{f:3,c:46753},{f:6,c:46757},{f:4,c:46765},{f:34,c:46770},{f:27,c:46805},{f:3,c:46833},{f:3,c:46837},{f:7,c:46841},{f:3,c:46850},{f:34,c:46854},{f:2,c:46890},{f:2,c:46893},{f:7,c:46897},46906,{f:8,c:46908},{f:3,c:46917},{f:3,c:46921},
-{f:7,c:46925},{f:10,c:46934},{f:3,c:46945},{f:3,c:46949},{f:7,c:46953},46962,46964,{f:6,c:46966},{f:2,c:46974},{f:3,c:46977},{f:7,c:46981},46990,{f:3,c:46995},{f:2,c:47002},{f:3,c:47005},{f:7,c:47009},47018,{f:6,c:47022},{f:2,c:47030},{f:14,c:47033},47048,{f:34,c:47050},{f:2,c:47086},{f:3,c:47089},{f:7,c:47093},47102,{f:5,c:47106},{f:2,c:47114},{f:3,c:47117},{f:7,c:47121},47130,47132,{f:6,c:47134},{f:2,c:47142},{f:3,c:47145},{f:7,c:47149},47158,{f:6,c:47162},{f:3,c:47169},{f:12,c:47173},47186,{f:8,
-c:47188},{f:2,c:47198},{f:3,c:47201},{f:7,c:47205},47214,47216,{f:6,c:47218},{f:3,c:47225},{f:16,c:47229},{f:26,c:47246},{f:7,c:47273},{f:3,c:47281},{f:3,c:47285},{f:7,c:47289},47298,47300,{f:6,c:47302},{f:3,c:47309},{f:3,c:47313},{f:8,c:47317},47326,47328,{f:6,c:47330},{f:2,c:47338},{f:3,c:47341},{f:7,c:47345},47354,47356,{f:6,c:47358},{f:19,c:47365},{f:7,c:47385},{f:27,c:47393},{f:2,c:47422},{f:3,c:47425},{f:7,c:47429},{f:2,c:47437},47440,{f:6,c:47442},{f:2,c:47450},{f:3,c:47453},{f:7,c:47457},
-47466,47468,{f:6,c:47470},{f:2,c:47478},{f:3,c:47481},{f:7,c:47485},47494,47496,{f:2,c:47499},{f:29,c:47503},{f:2,c:47534},{f:3,c:47537},{f:7,c:47541},47550,47552,{f:6,c:47554},{f:2,c:47562},47565,{f:5,c:47571},47578,47580,{f:2,c:47583},47586,{f:2,c:47590},{f:3,c:47593},{f:7,c:47597},47606,{f:5,c:47611},{f:6,c:47618},{f:12,c:47625},{f:34,c:47638},{f:2,c:47674},{f:3,c:47677},47681,{f:5,c:47683},47690,47692,{f:4,c:47695},{f:2,c:47702},{f:3,c:47705},{f:7,c:47709},47718,{f:6,c:47722},{f:2,c:47730},{f:3,
-c:47733},{f:10,c:47737},47750,{f:4,c:47752},{f:27,c:47757},47786,{f:3,c:47789},47793,{f:5,c:47795},47802,47804,{f:6,c:47806},{f:3,c:47813},{f:15,c:47817},{f:34,c:47834},{f:3,c:47869},{f:3,c:47873},{f:8,c:47877},47886,47888,{f:6,c:47890},{f:3,c:47897},{f:3,c:47901},{f:8,c:47905},47914,{f:8,c:47916},47927,{f:2,c:47929},{f:5,c:47935},47942,47944,{f:3,c:47946},47950,{f:3,c:47953},{f:3,c:47957},{f:8,c:47961},47970,{f:8,c:47972},{f:27,c:47981},{f:3,c:48009},{f:3,c:48013},{f:19,c:48017},{f:3,c:48037},{f:3,
-c:48041},{f:7,c:48045},{f:2,c:48053},{f:8,c:48056},{f:3,c:48065},{f:3,c:48069},{f:7,c:48073},{f:2,c:48081},{f:36,c:48084},{f:2,c:48122},{f:2,c:48125},48129,{f:5,c:48131},48138,48142,48144,{f:2,c:48146},{f:2,c:48153},{f:4,c:48160},48166,48168,{f:3,c:48170},{f:2,c:48174},{f:2,c:48178},{f:3,c:48181},{f:7,c:48185},48194,{f:3,c:48198},{f:2,c:48202},{f:2,c:48206},{f:12,c:48209},{f:38,c:48222},{f:2,c:48262},{f:2,c:48265},48269,{f:5,c:48271},48278,48280,{f:5,c:48283},{f:2,c:48290},{f:2,c:48293},{f:7,c:48297},
-48306,{f:6,c:48310},{f:2,c:48318},{f:3,c:48321},{f:8,c:48325},48334,{f:3,c:48338},{f:2,c:48342},{f:3,c:48345},{f:23,c:48349},48375,{f:3,c:48377},{f:7,c:48381},48390,48392,{f:6,c:48394},{f:3,c:48401},{f:15,c:48405},{f:7,c:48421},{f:19,c:48429},{f:7,c:48449},{f:2,c:48458},{f:3,c:48461},{f:7,c:48465},{f:10,c:48474},{f:3,c:48485},{f:23,c:48489},{f:2,c:48514},{f:2,c:48517},{f:5,c:48523},48530,48532,{f:3,c:48534},48539,{f:7,c:48541},{f:11,c:48549},{f:7,c:48561},{f:27,c:48569},{f:2,c:48598},{f:3,c:48601},
-{f:12,c:48605},{f:6,c:48618},{f:3,c:48625},{f:3,c:48629},{f:7,c:48633},{f:2,c:48641},48644,{f:6,c:48646},{f:2,c:48654},{f:3,c:48657},{f:7,c:48661},48670,{f:36,c:48672},{f:2,c:48710},{f:3,c:48713},48717,{f:5,c:48719},48726,48728,{f:4,c:48732},{f:2,c:48738},{f:3,c:48741},48745,{f:5,c:48747},48754,{f:5,c:48758},{f:2,c:48766},{f:3,c:48769},{f:7,c:48773},48782,{f:6,c:48786},{f:14,c:48794},{f:39,c:48809},{f:2,c:48850},{f:2,c:48853},{f:7,c:48857},{f:2,c:48865},{f:6,c:48870},{f:20,c:48877},{f:6,c:48898},
-{f:14,c:48906},48922,{f:34,c:48926},{f:2,c:48962},{f:3,c:48965},{f:7,c:48969},{f:3,c:48978},{f:62,c:48982},{f:27,c:49045},{f:20,c:49073},{f:6,c:49094},{f:2,c:49102},{f:3,c:49105},{f:7,c:49109},{f:2,c:49117},49120,{f:90,c:49122},{f:20,c:49213},{f:6,c:49234},{f:3,c:49241},{f:3,c:49245},{f:7,c:49249},{f:38,c:49258},{f:2,c:49298},{f:3,c:49301},{f:7,c:49305},49314,49316,{f:6,c:49318},49326,{f:2,c:49329},{f:5,c:49335},49342,{f:3,c:49346},{f:2,c:49350},{f:2,c:49354},{f:3,c:49357},{f:7,c:49361},49370,{f:6,
-c:49374},{f:2,c:49382},{f:3,c:49385},{f:7,c:49389},49398,49400,{f:6,c:49402},{f:3,c:49409},{f:3,c:49413},{f:7,c:49417},{f:4,c:49425},{f:6,c:49430},{f:2,c:49441},49445,{f:4,c:49448},49454,{f:4,c:49458},49463,{f:2,c:49466},{f:3,c:49469},{f:7,c:49473},49482,{f:6,c:49486},{f:2,c:49494},{f:3,c:49497},{f:7,c:49501},49510,{f:6,c:49514},{f:3,c:49521},{f:3,c:49525},{f:12,c:49529},{f:6,c:49542},49551,{f:3,c:49553},49557,{f:5,c:49559},49566,49568,{f:3,c:49570},{f:2,c:49574},{f:2,c:49578},{f:3,c:49581},{f:12,
-c:49585},{f:6,c:49598},{f:3,c:49605},{f:3,c:49609},{f:7,c:49613},{f:2,c:49621},{f:7,c:49625},{f:3,c:49633},{f:3,c:49637},{f:7,c:49641},49650,{f:8,c:49652},{f:2,c:49662},{f:3,c:49665},{f:7,c:49669},49678,49680,{f:6,c:49682},{f:2,c:49690},{f:2,c:49693},{f:7,c:49697},49706,49708,49710,49712,49715,{f:19,c:49717},{f:7,c:49737},{f:2,c:49746},{f:3,c:49749},{f:7,c:49753},{f:4,c:49761},{f:6,c:49766},{f:2,c:49774},{f:3,c:49777},{f:7,c:49781},49790,49792,{f:6,c:49794},{f:6,c:49802},{f:7,c:49809},{f:2,c:49817},
-49820,{f:6,c:49822},{f:2,c:49830},{f:3,c:49833},{f:6,c:49838},49846,49848,{f:34,c:49850},{f:2,c:49886},{f:2,c:49889},{f:6,c:49893},49902,49904,{f:4,c:49906},49911,49914,{f:3,c:49917},{f:7,c:49921},{f:2,c:49930},{f:5,c:49934},{f:2,c:49942},{f:3,c:49945},{f:7,c:49949},{f:2,c:49958},{f:27,c:49962},{f:34,c:49990},{f:2,c:50026},{f:3,c:50029},50033,{f:5,c:50035},{f:2,c:50042},{f:6,c:50046},{f:3,c:50053},{f:3,c:50057},{f:51,c:50061},{f:23,c:50113},{f:2,c:50138},{f:2,c:50141},50145,{f:5,c:50147},{f:3,c:50154},
-{f:6,c:50158},{f:2,c:50166},{f:15,c:50169},{f:7,c:50185},{f:19,c:50193},{f:7,c:50213},{f:3,c:50221},{f:3,c:50225},{f:7,c:50229},{f:10,c:50238},{f:27,c:50249},{f:2,c:50278},{f:3,c:50281},{f:7,c:50285},{f:3,c:50294},{f:6,c:50298},{f:19,c:50305},{f:7,c:50325},{f:27,c:50333},{f:3,c:50361},{f:44,c:50365},{f:6,c:50410},{f:2,c:50418},{f:3,c:50421},50425,{f:4,c:50427},{f:10,c:50434},{f:3,c:50445},{f:3,c:50449},{f:7,c:50453},{f:11,c:50461},{f:2,c:50474},{f:3,c:50477},{f:7,c:50481},50490,50492,{f:6,c:50494},
-{f:2,c:50502},50507,{f:4,c:50511},50518,{f:3,c:50522},50527,{f:2,c:50530},{f:3,c:50533},{f:7,c:50537},50546,{f:6,c:50550},{f:2,c:50558},{f:3,c:50561},{f:2,c:50565},{f:4,c:50568},50574,50576,{f:3,c:50578},50582,{f:3,c:50585},{f:3,c:50589},{f:8,c:50593},{f:10,c:50602},{f:2,c:50614},50618,{f:5,c:50623},50635,50637,50639,{f:2,c:50642},{f:3,c:50645},{f:7,c:50649},50658,50660,{f:6,c:50662},50671,{f:3,c:50673},50677,{f:4,c:50680},{f:3,c:50690},{f:3,c:50697},{f:3,c:50701},{f:7,c:50705},50714,{f:7,c:50717},
-{f:2,c:50726},{f:3,c:50729},50735,{f:2,c:50737},50742,50744,50746,{f:4,c:50748},{f:2,c:50754},{f:3,c:50757},{f:7,c:50761},50770,{f:6,c:50774},{f:2,c:50782},{f:11,c:50785},{f:2,c:50797},50800,{f:6,c:50802},{f:2,c:50810},{f:3,c:50813},{f:7,c:50817},50826,50828,{f:6,c:50830},{f:2,c:50838},{f:3,c:50841},{f:7,c:50845},50854,50856,{f:6,c:50858},{f:2,c:50866},{f:3,c:50869},{f:5,c:50875},50882,50884,{f:6,c:50886},{f:2,c:50894},{f:3,c:50897},{f:7,c:50901},{f:2,c:50910},{f:6,c:50914},{f:2,c:50922},{f:3,c:50925},
-{f:7,c:50929},{f:3,c:50938},{f:6,c:50942},{f:2,c:50950},{f:3,c:50953},{f:7,c:50957},50966,50968,{f:6,c:50970},{f:2,c:50978},{f:3,c:50981},{f:7,c:50985},50994,50996,50998,{f:4,c:51E3},{f:2,c:51006},{f:3,c:51009},{f:5,c:51013},51019,51022,51024,{f:3,c:51033},{f:3,c:51037},{f:7,c:51041},{f:2,c:51049},{f:8,c:51052},{f:2,c:51062},{f:3,c:51065},{f:4,c:51071},51078,{f:3,c:51083},51087,{f:2,c:51090},51093,51097,{f:5,c:51099},51106,{f:5,c:51111},{f:2,c:51118},{f:3,c:51121},{f:7,c:51125},51134,{f:6,c:51138},
-{f:2,c:51146},51149,51151,{f:7,c:51153},{f:4,c:51161},{f:6,c:51166},{f:3,c:51173},{f:3,c:51177},{f:19,c:51181},{f:2,c:51202},{f:3,c:51205},51209,{f:5,c:51211},51218,51220,{f:5,c:51223},{f:2,c:51230},{f:3,c:51233},{f:7,c:51237},51246,51248,{f:6,c:51250},{f:3,c:51257},{f:3,c:51261},{f:7,c:51265},{f:2,c:51274},{f:6,c:51278},{f:27,c:51285},{f:2,c:51314},{f:3,c:51317},51321,{f:5,c:51323},51330,51332,{f:3,c:51336},{f:6,c:51342},{f:8,c:51349},51358,51360,{f:6,c:51362},{f:19,c:51369},{f:6,c:51390},{f:3,c:51397},
-{f:3,c:51401},{f:7,c:51405},51414,51416,{f:6,c:51418},{f:2,c:51426},{f:16,c:51429},{f:6,c:51446},{f:2,c:51454},{f:3,c:51457},{f:5,c:51463},51470,51472,{f:6,c:51474},{f:19,c:51481},{f:7,c:51501},{f:27,c:51509},{f:2,c:51538},{f:3,c:51541},{f:7,c:51545},51554,{f:8,c:51556},{f:3,c:51565},{f:3,c:51569},{f:7,c:51573},{f:11,c:51581},{f:2,c:51594},{f:3,c:51597},{f:7,c:51601},51610,51612,{f:34,c:51614},{f:2,c:51650},{f:2,c:51653},51657,{f:5,c:51659},51666,51668,{f:2,c:51671},51675,{f:2,c:51678},51681,51683,
-{f:2,c:51685},{f:4,c:51688},51694,{f:6,c:51698},{f:2,c:51706},{f:3,c:51709},{f:7,c:51713},51722,{f:6,c:51726},{f:3,c:51733},{f:16,c:51737},{f:34,c:51754},{f:2,c:51790},{f:3,c:51793},{f:7,c:51797},51806,{f:6,c:51810},{f:20,c:51817},{f:6,c:51838},{f:19,c:51845},{f:35,c:51865},{f:2,c:51902},{f:3,c:51905},{f:7,c:51909},51918,51920,51922,{f:4,c:51924},{f:6,c:51930},{f:11,c:51937},{f:7,c:51949},{f:19,c:51957},{f:7,c:51977},{f:3,c:51985},{f:3,c:51989},{f:7,c:51993},{f:31,c:52002},{f:6,c:52034},{f:2,c:52042},
-{f:3,c:52045},{f:7,c:52049},{f:3,c:52058},{f:6,c:52062},{f:19,c:52069},{f:34,c:52090},{f:27,c:52125},{f:27,c:52153},{f:15,c:52181},{f:2,c:52197},52200,{f:34,c:52202},{f:2,c:52238},{f:3,c:52241},{f:7,c:52245},{f:3,c:52254},{f:4,c:52259},{f:2,c:52266},52269,52271,{f:7,c:52273},52282,{f:5,c:52287},{f:2,c:52294},{f:3,c:52297},{f:7,c:52301},52310,{f:6,c:52314},{f:3,c:52321},52325,52327,{f:7,c:52329},{f:4,c:52337},{f:34,c:52342},{f:2,c:52378},{f:3,c:52381},{f:7,c:52385},52394,{f:6,c:52398},{f:2,c:52406},
-{f:3,c:52409},{f:7,c:52413},52422,52424,{f:6,c:52426},{f:3,c:52433},{f:15,c:52437},{f:7,c:52453},{f:3,c:52461},{f:16,c:52465},{f:6,c:52482},{f:2,c:52490},{f:3,c:52493},{f:7,c:52497},52506,52508,{f:6,c:52510},{f:3,c:52517},{f:3,c:52521},{f:12,c:52525},{f:34,c:52538},{f:3,c:52573},{f:3,c:52577},{f:7,c:52581},52590,52592,{f:6,c:52594},{f:15,c:52601},{f:11,c:52617},{f:2,c:52630},{f:3,c:52633},{f:7,c:52637},52646,52648,{f:6,c:52650},{f:19,c:52657},{f:7,c:52677},{f:3,c:52685},{f:23,c:52689},{f:3,c:52713},
-{f:3,c:52717},{f:7,c:52721},52730,52732,{f:6,c:52734},{f:3,c:52741},{f:3,c:52745},{f:7,c:52749},{f:4,c:52757},{f:6,c:52762},{f:2,c:52770},{f:3,c:52773},{f:7,c:52777},52786,52788,{f:34,c:52790},{f:2,c:52826},{f:2,c:52829},{f:6,c:52834},52842,52844,{f:6,c:52846},{f:2,c:52854},{f:3,c:52857},{f:7,c:52861},52870,52872,{f:6,c:52874},{f:2,c:52882},{f:3,c:52885},{f:7,c:52889},52898,{f:6,c:52902},{f:19,c:52910},{f:34,c:52930},{f:2,c:52966},{f:2,c:52969},{f:7,c:52973},52982,{f:6,c:52986},{f:2,c:52994},{f:3,
-c:52997},{f:7,c:53001},53010,53012,{f:6,c:53014},{f:3,c:53021},{f:3,c:53025},{f:7,c:53029},53038,{f:6,c:53042},{f:27,c:53049},{f:2,c:53078},{f:3,c:53081},{f:7,c:53085},53094,53096,{f:6,c:53098},{f:2,c:53106},{f:3,c:53109},{f:7,c:53113},{f:4,c:53121},{f:6,c:53126},{f:20,c:53133},{f:6,c:53154},{f:7,c:53161},{f:19,c:53169},{f:27,c:53189},{f:2,c:53218},{f:3,c:53221},{f:7,c:53225},53234,53236,{f:6,c:53238},{f:3,c:53245},{f:3,c:53249},{f:12,c:53253},{f:6,c:53266},{f:20,c:53273},{f:6,c:53294},{f:2,c:53302},
-{f:3,c:53305},{f:7,c:53309},53318,53320,{f:6,c:53322},{f:3,c:53329},{f:3,c:53333},{f:7,c:53337},{f:11,c:53345},{f:2,c:53358},{f:3,c:53361},{f:7,c:53365},{f:3,c:53374},{f:34,c:53378},{f:2,c:53414},{f:3,c:53417},{f:7,c:53421},53430,53432,{f:6,c:53434},{f:2,c:53442},{f:3,c:53445},{f:6,c:53450},53458,{f:6,c:53462},{f:2,c:53470},{f:3,c:53473},{f:7,c:53477},53486,{f:6,c:53490},{f:20,c:53497},{f:34,c:53518},{f:2,c:53554},{f:3,c:53557},53561,{f:5,c:53563},53570,{f:6,c:53574},{f:2,c:53582},{f:3,c:53585},{f:7,
-c:53589},53598,53600,{f:6,c:53602},{f:3,c:53609},{f:15,c:53613},{f:7,c:53629},{f:3,c:53637},{f:23,c:53641},{f:2,c:53666},{f:3,c:53669},{f:7,c:53673},53682,53684,{f:4,c:53686},53691,{f:3,c:53693},{f:23,c:53697},{f:27,c:53721},{f:3,c:53749},{f:14,c:53753},53768,{f:6,c:53770},{f:27,c:53777},{f:2,c:53806},{f:3,c:53809},{f:7,c:53813},53822,53824,{f:6,c:53826},{f:19,c:53833},{f:7,c:53853},{f:27,c:53861},{f:2,c:53890},{f:3,c:53893},{f:7,c:53897},{f:3,c:53906},{f:6,c:53910},{f:3,c:53917},{f:3,c:53921},{f:7,
-c:53925},{f:4,c:53933},{f:6,c:53938},{f:2,c:53946},{f:2,c:53949},53953,{f:5,c:53955},53962,{f:8,c:53964},{f:3,c:53973},{f:3,c:53977},{f:7,c:53981},{f:10,c:53990},{f:2,c:54002},{f:3,c:54005},{f:7,c:54009},54018,54020,{f:6,c:54022},54031,{f:3,c:54033},54037,{f:5,c:54039},54046,{f:3,c:54050},{f:2,c:54054},{f:2,c:54058},{f:3,c:54061},{f:7,c:54065},54074,{f:6,c:54078},{f:54,c:54086},{f:2,c:54142},{f:3,c:54145},{f:7,c:54149},54158,{f:6,c:54162},{f:2,c:54170},{f:3,c:54173},{f:7,c:54177},54186,54188,{f:6,
-c:54190},{f:3,c:54197},{f:3,c:54201},{f:7,c:54205},{f:2,c:54214},{f:6,c:54218},{f:7,c:54225},{f:8,c:54233},54242,{f:8,c:54244},{f:2,c:54254},{f:3,c:54257},{f:7,c:54261},54270,54272,{f:6,c:54274},{f:20,c:54281},{f:34,c:54302},{f:3,c:54337},{f:23,c:54341},{f:3,c:54365},{f:3,c:54369},{f:8,c:54373},54382,{f:8,c:54384},{f:2,c:54394},{f:2,c:54397},54401,{f:5,c:54403},54410,54412,{f:6,c:54414},{f:20,c:54421},{f:34,c:54442},{f:3,c:54477},{f:3,c:54481},{f:7,c:54485},{f:2,c:54493},{f:8,c:54496},{f:3,c:54505},
-{f:3,c:54509},{f:7,c:54513},{f:2,c:54521},54524,{f:6,c:54526},{f:3,c:54533},{f:3,c:54537},{f:7,c:54541},54550,{f:36,c:54552},{f:2,c:54590},{f:3,c:54593},{f:7,c:54597},54606,54608,{f:6,c:54610},{f:2,c:54618},{f:3,c:54621},{f:4,c:54625},{f:2,c:54630},54634,54636,{f:6,c:54638},{f:2,c:54646},{f:3,c:54649},{f:7,c:54653},54662,{f:6,c:54666},{f:20,c:54673},{f:34,c:54694},{f:2,c:54730},{f:3,c:54733},54737,{f:5,c:54739},54746,54748,{f:6,c:54750},{f:2,c:54758},{f:3,c:54761},{f:7,c:54765},54774,54776,{f:6,c:54778},
-{f:2,c:54786},{f:3,c:54789},{f:7,c:54793},54802,{f:6,c:54806},{f:3,c:54813},{f:3,c:54817},{f:8,c:54821},{f:10,c:54830},{f:2,c:54842},{f:3,c:54845},{f:4,c:54849},{f:2,c:54854},54858,54860,{f:3,c:54862},{f:2,c:54866},{f:2,c:54870},{f:3,c:54873},{f:10,c:54877},54888,{f:6,c:54890},{f:2,c:54898},{f:14,c:54901},54916,{f:6,c:54918},{f:2,c:54926},{f:3,c:54929},{f:8,c:54933},54942,54944,{f:6,c:54946},{f:3,c:54953},{f:3,c:54957},{f:8,c:54961},54970,{f:8,c:54972},{f:2,c:54982},{f:3,c:54985},{f:4,c:54989},{f:2,
-c:54994},{f:2,c:54997},55E3,{f:6,c:55002},{f:3,c:55009},{f:3,c:55013},{f:7,c:55017},{f:4,c:55025},{f:6,c:55030},{f:2,c:55038},{f:3,c:55041},{f:12,c:55045},{f:6,c:55058},{f:2,c:55066},{f:3,c:55069},{f:7,c:55073},55082,55084,{f:6,c:55086},{f:2,c:55094},{f:3,c:55097},{f:7,c:55101},{f:2,c:55109},55112,{f:6,c:55114},{f:2,c:55122},55125,{f:6,c:55130},55138,55140,{f:3,c:55142},{f:2,c:55146},{f:3,c:55149},{f:3,c:55153},{f:7,c:55157},{f:3,c:55166},{f:6,c:55170},{f:2,c:55178},{f:3,c:55181},{f:7,c:55185},55194,
-55196,{f:6,c:55198}],"Adobe-CNS1":[{f:95,c:32},{s:3},12288,65292,{f:2,c:12289},65294,8226,65307,65306,65311,65281,65072,8230,8229,65104,65380,65106,183,{f:4,c:65108},65372,8211,65073,8212,{s:4},{f:2,c:65288},{f:2,c:65077},65371,65373,{f:2,c:65079},{f:2,c:12308},{f:2,c:65081},{f:2,c:12304},{f:2,c:65083},{f:2,c:12298},{f:2,c:65085},{f:2,c:12296},{f:2,c:65087},{f:2,c:12300},{f:2,c:65089},{f:2,c:12302},{f:2,c:65091},{f:6,c:65113},{f:2,c:8216},{f:2,c:8220},{f:2,c:12317},8245,8242,65283,65286,65290,8251,
-167,12291,9675,9679,9651,9650,9678,9734,9733,9671,9670,9633,9632,9661,9660,12963,8453,8254,0,65343,0,{f:2,c:65097},{f:2,c:65101},{f:2,c:65099},{f:3,c:65119},65291,65293,215,247,177,8730,65308,65310,65309,{f:2,c:8806},8800,8734,8786,8801,{f:5,c:65122},8764,{f:2,c:8745},8869,8736,8735,8895,13266,13265,8747,8750,8757,8756,9792,9794,9793,9737,8593,8595,8594,8592,{f:2,c:8598},8601,8600,8741,8739,0,0,65295,65340,65284,165,12306,{f:2,c:162},65285,65312,8451,8457,{f:3,c:65129},13269,{f:3,c:13212},13262,13217,
-{f:2,c:13198},13252,176,[20825,58834],[20827,58835],[20830,58837],[20829,58836],20833,20835,21991,[29929,58044],[31950,58191],{f:8,c:9601},9615,9614,9613,9612,9611,9610,9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,{f:2,c:9581},9584,9583,9552,9566,9578,9569,{f:2,c:9698},9701,9700,{f:3,c:9585},{f:10,c:65296},{f:10,c:8544},{f:9,c:12321},0,[21316,57443],0,{f:26,c:65313},{f:26,c:65345},{f:17,c:913},{f:7,c:931},{f:17,c:945},{f:7,c:963},{f:37,c:12549},729,714,711,715,[9312,63153],
-[9313,63154],[9314,63155],[9315,63156],[9316,63157],[9317,63158],[9318,63159],[9319,63160],[9320,63161],[9321,63162],[9332,63163],[9333,63164],[9334,63165],[9335,63166],[9336,63167],[9337,63168],[9338,63169],[9339,63170],[9340,63171],[9341,63172],[8560,63173],[8561,63174],[8562,63175],[8563,63176],[8564,63177],[8565,63178],[8566,63179],[8567,63180],[8568,63181],[8569,63182],[12033,20008],[12034,20022,63183],[12035,20031,63184],[12037,20101,63185],[12039,20128,63186],[12044,20866,63187],[12045,20886,
-63188],[12046,20907,63189],[12051,21241,63190],[12054,21304,63191],[12057,21353,63192],[12059,21430,63193],[12065,12066,22786,22794,63194],[12071,23424,63195],[12078,24027,63196],[12083,24186,63197],[12084,24191,63198],[12085,24308],[12089,24400,63200],[12090,24417,63201],[12097,25908,63202],[12102,26080],[12135,30098,63204],[12136,30326],[12193,36789,63206],[12202,38582],{f:32,c:9216},9249,[12032,19968],[12036,20057],19969,19971,20035,20061,20102,[12038,20108],[12040,20154],[12041,20799],[12042,
-20837],[12043,20843],[12047,20960],[12049,20992],20993,[12050,21147],[12052,21269],[12055,21313],[12056,21340],[12060,21448],19977,19979,19976,19978,20011,20024,20961,20037,20040,20063,20062,20110,20129,[20800,64012],20995,21242,21315,21449,[12061,21475],[12063,22303],[12064,22763],[12067,22805],[12068,22823],[12069,22899],[12070,23376],23377,23379,[12072,23544],[12073,23567],[12074,23586],[12075,23608],[12077,23665],24029,[12079,24037],[12080,24049],{f:2,c:24050},[12081,24062],[12082,24178],[12086,
-24318],[12087,24331],[12088,24339],25165,19985,19984,19981,20013,20016,20025,20043,23609,20104,20113,20117,20114,20116,20130,20161,20160,20163,{f:2,c:20166},20173,{f:2,c:20170},20164,20803,20801,20839,{f:2,c:20845},20844,20887,20982,{f:3,c:20998},21243,{f:2,c:21246},21270,21305,21320,21319,21317,21342,21380,21451,21450,21453,22764,22825,22827,22826,22829,23380,23569,23588,23610,23663,24052,24187,24319,{f:2,c:24340},[12092,24515],[12093,25096],[12094,25142],[12095,25163],25166,[12096,25903],[12098,
-25991],[12099,26007],[12100,26020],[12101,26041],[12103,26085],[12104,26352],[12105,26376],[12106,26408],[12107,27424],[12108,27490],[12109,27513],[12111,27595],[12112,27604],[12113,27611],[12114,27663],[12116,27700],[12117,28779],[12118,29226],[12119,29238],[12120,29243],[12122,29255],[12123,29273],[12124,29275],[12125,29356],29579,19993,19990,19989,19988,19992,20027,20045,20047,20046,20197,20184,{f:4,c:20180},{f:2,c:20195},20185,20190,20805,20804,{f:2,c:20873},20908,{f:2,c:20985},20984,21002,21152,
-21151,[21253,57435],21254,21271,21277,20191,21322,21321,21345,21344,21359,21358,21435,21487,21476,21491,21484,21486,21481,21480,21500,21496,21493,21483,21478,21482,21490,21489,21488,21477,21485,21499,22235,22234,22806,22830,22833,22900,22902,23381,23427,23612,24040,24039,24038,{f:2,c:24066},24179,24188,24321,24344,24343,24517,25098,{f:2,c:25171},25170,25169,26021,26086,26414,26412,{f:2,c:26410},26413,27491,27597,27665,27664,27704,27713,27712,27710,29359,[12126,29572],[12127,29577],[12128,29916],[12129,
-29926],[12130,29976],[12131,29983],[12132,29992],29993,[12133,3E4],{f:3,c:30001},[12134,30091],[12137,30333],[12138,30382],[12139,30399],[12140,30446],[12141,30683],[12142,30690],[12143,30707],[12144,31034],[12146,31166],[12147,31348],[12148,31435],{f:2,c:19998},{f:2,c:20050},20073,20121,20132,20134,20133,20223,20233,20249,20234,20245,20237,{f:2,c:20240},20239,20210,20214,20219,20208,20211,20221,20225,20235,20809,20807,20806,20808,20840,20849,20877,20912,21015,{f:2,c:21009},21006,21014,21155,21256,
-21281,21280,{f:2,c:21360},21513,21519,21516,21514,21520,21505,21515,21508,21521,21517,21512,21507,21518,21510,21522,22240,22238,22237,22323,22320,22312,22317,22316,22319,22313,{f:2,c:22809},{f:2,c:22839},22916,22904,22915,22909,22905,22914,22913,{f:2,c:23383},{f:2,c:23431},23429,23433,23546,23574,23673,24030,24070,24182,24180,24335,24347,24537,24534,25102,{f:2,c:25100},25104,25187,25179,25176,25910,26089,26088,{f:2,c:26092},{f:2,c:26354},26377,26429,26420,26417,26421,27425,27492,27515,27670,27741,
-27735,27737,{f:2,c:27743},27728,27733,27745,27739,{f:2,c:27725},28784,29279,29277,30334,[12149,31481],[12150,31859],[12151,31992],[12152,32566],[12154,32650],[12155,32701],[12156,32769],32771,[12157,32780],[12158,32786],[12159,32819],[12160,32895],[12161,32905],{f:2,c:32907},[12162,33251],[12163,33258],[12164,33267],[12165,33276],[12166,33292],[12167,33307],[12168,33311],[12169,33390],[12170,33394],33406,[12173,34411],[12174,34880],[12175,34892],[12176,34915],35199,38433,20018,20136,20301,20303,20295,
-20311,20318,20276,20315,20309,20272,{f:2,c:20304},20285,20282,20280,20291,20308,20284,20294,20323,20316,20320,20271,20302,20278,20313,20317,20296,20314,20812,20811,20813,20853,{f:2,c:20918},21029,21028,{f:2,c:21033},21032,21163,{f:2,c:21161},21164,21283,21363,21365,21533,21549,21534,21566,21542,21582,21543,21574,21571,21555,21576,21570,21531,21545,21578,21561,21563,21560,21550,{f:2,c:21557},21536,21564,21568,21553,21547,21535,21548,22250,22256,22244,22251,22346,22353,22336,22349,22343,22350,22334,
-22352,22351,22331,22767,22846,22941,22930,22952,22942,22947,22937,22934,22925,22948,22931,22922,22949,23389,23388,{f:2,c:23386},23436,23435,23439,23596,{f:2,c:23616},23615,23614,{f:2,c:23696},23700,23692,24043,24076,24207,24199,24202,24311,24324,24351,24420,24418,24439,24441,24536,24524,24535,24525,24561,24555,24568,24554,25106,25105,25220,25239,25238,25216,25206,25225,25197,25226,25212,25214,25209,25203,25234,25199,25240,25198,25237,25235,25233,25222,25913,25915,25912,26097,26356,26463,{f:4,c:26446},
-26460,26454,[26462,57801],26441,26438,26464,26451,26455,27493,27599,27714,27742,27801,27777,{f:2,c:27784},27781,27803,27754,27770,27792,27760,27788,27752,27798,27794,27773,27779,27762,27774,27764,27782,27766,27789,27796,27800,27778,28790,{f:2,c:28796},28792,29282,29281,29280,29380,29378,29590,29996,29995,{f:2,c:30007},30338,30447,30691,31169,31168,31167,31350,31995,32597,32918,32915,32925,32920,32923,32922,32946,33391,33426,33419,33421,[12178,35211],[12179,35282],[12180,35328],[12181,35895],[12182,
-35910],[12183,35925],[12185,35997],[12186,36196],[12187,36208],[12188,36275],[12189,36523],[12190,36554],[12191,36763],[12192,36784],36802,36806,36805,36804,24033,[12194,37009],37026,37034,37030,37027,[12195,37193],[12196,37318],[12197,37324],38450,38446,38449,38442,38444,20006,20054,20083,20107,20123,20126,{f:2,c:20139},20335,20381,20365,20339,20351,20332,20379,20363,20358,20355,20336,20341,20360,20329,20347,20374,20350,20367,20369,20346,20820,20818,20821,20841,20855,20854,20856,20925,20989,21051,
-21048,21047,21050,21040,21038,21046,21057,21182,21179,21330,21332,21331,21329,21350,{f:3,c:21367},21462,21460,21463,21619,21621,21654,21624,21653,21632,21627,21623,21636,21650,21638,21628,21648,21617,21622,21644,21658,21602,21608,21643,21629,21646,22266,22403,22391,22378,22377,22369,22374,22372,22396,22812,22857,{f:2,c:22855},22852,22868,22974,22971,22996,22969,22958,22993,22982,22992,22989,22987,22995,22986,22959,22963,22994,22981,23391,23396,23395,23447,23450,23448,23452,23449,23451,23578,23624,
-{f:2,c:23621},23735,23713,23736,23721,23723,23729,23731,24088,24090,24086,24085,24091,24081,24184,24218,24215,24220,{f:2,c:24213},24310,{f:2,c:24358},24361,{f:2,c:24448},24447,24444,24541,24544,24573,24565,24575,24591,24596,24623,24629,24598,24618,24597,24609,24615,24617,24619,24603,25110,25109,25151,25150,25152,25215,25289,25292,25284,25279,25282,25273,25298,25307,25259,{f:2,c:25299},25291,25288,25256,25277,25276,[25296,60582],25305,25287,25293,25269,25306,25265,25304,{f:2,c:25302},25286,25260,[25294,
-61010],25918,26023,26044,26106,26132,26131,26124,26118,26114,26126,26112,26127,26133,26122,26119,26381,26379,26477,26507,26517,26481,26524,26483,26487,26503,26525,26519,{f:2,c:26479},26495,26505,26494,26512,26485,26522,26515,26492,26474,26482,27427,{f:2,c:27494},27519,27667,27675,27875,27880,27891,27825,27852,27877,27827,{f:2,c:27837},27836,27874,27819,27861,27859,27832,27844,27833,27841,27822,27863,27845,27889,27839,27835,27873,27867,27850,27820,27887,27868,27862,27872,28821,28814,28818,28810,28825,
-{f:2,c:29228},29240,29256,29287,29289,29376,29390,29401,29399,29392,29609,29608,29599,29611,29605,30013,30109,{f:2,c:30105},30340,30402,30450,30452,30693,30717,31038,{f:2,c:31040},31177,31176,31354,31353,31482,31998,32596,32652,32651,[32773,58236],32954,32933,32930,32945,32929,32939,32937,32948,32938,32943,33253,33278,33293,33459,33437,33433,33453,33469,33439,33465,33457,33452,33445,33455,33464,33443,33456,33470,33463,34382,34417,21021,34920,36555,36814,36820,36817,37045,37048,37041,37046,37319,[12198,
-37329],[12199,38263],[12200,38272],[12201,38428],38464,38463,38459,38468,38466,[12203,38585],[12204,38632],38738,[12206,38750],20127,{f:2,c:20141},20449,20405,20399,20415,20448,20433,20431,20445,20419,20406,20440,20447,20426,20439,20398,20432,20420,20418,20442,20430,20446,20407,20823,20882,20881,20896,21070,21059,21066,21069,21068,21067,21063,21191,21193,21187,21185,21261,21335,21371,21402,21467,21676,21696,21672,21710,21705,21688,21670,21683,21703,21698,21693,21674,21697,21700,21704,21679,21675,
-21681,21691,21673,21671,21695,22271,22402,22411,22432,22435,22434,22478,22446,22419,22869,22865,22863,22862,22864,23004,23E3,23039,23011,23016,23043,23013,23018,23002,23014,23041,23035,23401,23459,23462,23460,23458,23461,23553,{f:2,c:23630},23629,23627,23769,23762,24055,24093,24101,24095,24189,24224,24230,24314,24328,24365,24421,24456,24453,{f:2,c:24458},24455,24460,24457,24594,24605,24608,24613,24590,24616,24653,24688,24680,[24674,60712],24646,24643,24684,24683,24682,24676,25153,25308,25366,25353,
-25340,25325,25345,25326,25341,25351,25329,25335,25327,25324,25342,25332,25361,25346,25919,25925,26027,26045,26082,26149,26157,26144,26151,26159,26143,26152,26161,26148,26359,26623,26579,26609,26580,26576,26604,26550,26543,26613,26601,26607,26564,26577,26548,26586,26597,26552,26575,26590,26611,26544,26585,26594,26589,26578,27498,27523,27526,27573,27602,27607,27679,27849,27915,27954,27946,27969,27941,27916,27953,27934,27927,27963,{f:2,c:27965},27958,27931,27893,27961,27943,27960,27945,27950,27957,27918,
-27947,28843,28858,28851,28844,28847,28845,28856,28846,28836,29232,29298,29295,29300,29417,{f:2,c:29408},29623,29642,29627,29618,29645,29632,29619,29978,29997,30031,30028,30030,30027,30123,{f:2,c:30116},{f:2,c:30114},30328,{f:3,c:30342},30408,30406,30403,30405,30465,30457,30456,30473,30475,30462,30460,30471,30684,30722,30740,{f:2,c:30732},31046,31049,31048,31047,{f:2,c:31161},{f:2,c:31185},31179,31359,31361,31487,31485,31869,32002,32005,32E3,32009,32007,32004,32006,32568,32654,32703,32784,32781,32785,
-32822,32982,32997,32986,{f:2,c:32963},32972,32993,32987,32974,32990,32996,32989,33268,33314,33511,33539,33541,33507,33499,33510,33540,33509,33538,33545,33490,33495,33521,33537,33500,33492,33489,33502,33491,33503,33519,33542,34384,34425,34427,34426,34893,34923,35201,35284,35336,{f:2,c:35330},35998,36E3,36212,36211,36276,36557,36556,36848,36838,36834,36842,36837,36845,36843,36836,36840,37066,37070,37057,37059,37195,37194,37325,38274,38480,{f:3,c:38475},[12207,38754],[12208,38761],[12209,38859],[12210,
-38893],[12211,38899],[12212,38913],[12213,39080],[12214,39131],[12215,39135],[12216,39318],[12217,39321],20056,20147,{f:2,c:20492},20515,20463,20518,20517,20472,[20521,57375],20502,20486,20540,20511,20506,20498,20497,20474,20480,20500,20520,20465,20513,20491,20505,20504,20467,20462,20525,20522,20478,20523,20489,20860,{f:2,c:20900},20898,20941,20940,20934,20939,21078,21084,21076,21083,21085,21290,[21375,57459],21407,21405,21471,21736,21776,21761,21815,21756,21733,21746,21766,21754,21780,21737,21741,
-21729,21769,21742,21738,21734,21799,21767,21757,21775,{f:2,c:22275},22466,22484,22475,22467,22537,22799,{f:2,c:22871},22874,23057,23064,23068,23071,23067,23059,23020,23072,23075,23081,23077,23052,23049,23403,23640,23472,23475,23478,23476,23470,23477,23481,23480,23556,23633,23637,23632,23789,23805,23803,23786,23784,23792,23798,23809,23796,24046,24109,24107,24235,24237,24231,24369,24466,24465,24464,24665,24675,24677,24656,24661,24685,24681,24687,24708,24735,24730,24717,24724,24716,24709,24726,25159,
-25331,25352,25343,25422,25406,25391,25429,25410,25414,25423,25417,25402,25424,25405,{f:2,c:25386},25384,25421,25420,{f:2,c:25928},26009,26049,26053,26178,26185,26191,26179,26194,26188,26181,26177,26360,{f:2,c:26388},26391,26657,26680,26696,26694,26707,26681,26690,26708,26665,26803,26647,26700,26705,26685,26612,26704,26688,26684,26691,26666,26693,26643,26648,26689,27530,27529,27575,27683,{f:2,c:27687},27686,27684,27888,28010,28053,28040,28039,28006,28024,28023,27993,28051,28012,28041,28014,27994,28020,
-28009,28044,28042,28025,28037,28005,28052,28874,28888,28900,28889,28872,28879,29241,29305,29436,29433,29437,29432,29431,29574,29677,29705,29678,29664,29674,29662,30036,30045,30044,30042,30041,30142,30149,30151,{f:2,c:30130},30141,30140,30137,30146,30136,30347,30384,30410,{f:2,c:30413},30505,{f:2,c:30495},30504,30697,30768,30759,30776,30749,30772,30775,30757,30765,30752,30751,30770,31061,31056,31072,31071,31062,31070,31069,31063,31066,31204,[31203,60418],31207,31199,31206,31209,31192,31364,31368,31449,
-31494,31505,31881,32033,32023,32011,32010,32032,32034,32020,32016,32021,32026,32028,32013,32025,32027,32570,32607,32660,32709,32705,32774,32772,32792,32789,32793,32791,32829,32831,33009,33026,33008,33029,33005,33012,33030,33016,33011,33032,33021,33034,33020,33007,33261,33260,33280,33296,{f:2,c:33322},33320,33324,33467,33579,33618,33620,33610,33592,33616,33609,33589,33588,33615,33586,33593,33590,33559,33600,33585,33576,33603,34388,34442,34474,34451,34468,34473,34444,34467,34460,34928,34935,{f:2,c:34945},
-34941,34937,35352,35344,35342,35340,35349,35338,35351,35347,35350,35343,35345,35912,35962,35961,{f:2,c:36001},[36215,58442],36524,36562,36564,36559,36785,36865,36870,36855,36864,36858,36852,36867,36861,36869,36856,37013,37089,37085,37090,37202,37197,37196,37336,37341,37335,37340,37337,38275,{f:2,c:38498},38497,38491,38493,38500,38488,38494,38587,39138,[12218,39340],[12219,39592],[12220,39640],[12222,39717],[12224,39730],[12225,39740],20094,20602,[20605,57382],20572,20551,20547,20556,20570,20553,20581,
-20598,20558,20565,20597,20596,20599,20559,20495,20591,20589,20828,20885,20976,21098,21103,21202,21209,21208,21205,21264,21263,21273,{f:2,c:21311},21310,21443,26364,21830,21866,21862,21828,21854,21857,21827,21834,21809,21846,21839,21845,21807,21860,21816,21806,21852,21804,21859,21811,21825,21847,22280,22283,22281,22495,22533,22538,22534,22496,22500,22522,22530,22581,22519,22521,22816,22882,23094,23105,23113,23142,23146,23104,23100,23138,23130,23110,23114,23408,23495,23493,23492,23490,23487,23494,23561,
-23560,23559,23648,{f:2,c:23644},23815,23814,23822,23835,23830,23842,23825,23849,23828,23833,23844,23847,23831,24034,24120,24118,24115,24119,{f:2,c:24247},24246,24245,24254,24373,24375,24407,24428,24425,24427,24471,24473,24478,24472,24481,24480,24476,24703,24739,24713,24736,24744,24779,24756,24806,24765,24773,24763,24757,24796,24764,24792,24789,24774,24799,24760,24794,24775,{f:2,c:25114},25160,25504,25511,25458,25494,25506,25509,25463,25447,25496,25514,25457,25513,25481,25475,25499,25451,25512,25476,
-25480,25497,25505,25516,25490,25487,25472,25467,25449,25448,25466,25949,25942,25937,25945,25943,21855,25935,25944,25941,25940,26012,26011,26028,26063,{f:2,c:26059},26062,26205,26202,26212,26216,26214,26206,26361,21207,26395,26753,26799,26786,26771,26805,26751,26742,26801,26791,26775,26800,26755,26820,26797,26758,26757,26772,26781,26792,26783,26785,26754,27442,27578,{f:2,c:27627},27691,28046,28092,28147,28121,28082,28129,28108,28132,28155,28154,28165,28103,28107,28079,28113,28078,28126,28153,28088,
-28151,28149,28101,28114,28186,28085,28122,28139,28120,28138,28145,28142,28136,28102,28100,28074,28140,28095,28134,28921,{f:2,c:28937},28925,28911,29245,29309,29313,29468,29467,29462,29459,29465,29575,29701,29706,29699,29702,29694,29709,29920,{f:2,c:29942},29980,29986,{f:2,c:30053},30050,30064,30095,{f:2,c:30164},30133,30154,30157,30350,30420,30418,30427,30519,30526,30524,30518,30520,30522,30827,30787,30798,31077,31080,31085,31227,31378,31381,31520,31528,31515,31532,31526,31513,31518,31534,31890,31895,
-31893,32070,32067,32113,32046,32057,32060,32064,32048,32051,32068,32047,32066,32050,32049,32573,32670,32666,32716,32718,32722,32796,32842,32838,33071,33046,33059,33067,33065,33072,33060,33282,33333,33335,33334,33337,33678,33694,33688,33656,33698,33686,33725,33707,33682,33674,33683,33673,33696,33655,{f:2,c:33659},33670,33703,34389,24426,34503,34496,34486,34500,34485,34502,34507,34481,34479,34505,34899,34974,34952,34987,34962,34966,34957,34955,35219,35215,35370,35357,35363,35365,35377,35373,35359,35355,
-35362,35913,35930,36009,36012,36011,36008,36010,36007,36199,36198,36286,36282,36571,36575,36889,36877,36890,36887,36899,36895,36893,36880,36885,36894,36896,36879,36898,36886,36891,36884,37096,37101,[37117,58488],37207,37326,37365,37350,37347,37351,37357,37353,38281,38506,38517,38515,38520,38512,38516,{f:2,c:38518},38508,38592,38634,38633,31456,31455,{f:2,c:38914},[12226,39770],[12227,40165],[12228,40565],[12229,40575],[12230,40613],[12231,40635],20642,20621,20613,20633,20625,20608,20630,20632,20634,
-26368,20977,21106,{f:2,c:21108},21097,21214,21213,21211,21338,21413,21883,21888,21927,21884,21898,21917,21912,21890,21916,21930,21908,21895,21899,21891,21939,21934,21919,21822,21938,21914,21947,21932,21937,21886,21897,21931,21913,22285,22575,22570,22580,22564,{f:2,c:22576},22561,22557,22560,{f:2,c:22777},22880,[23159,57587],23194,23167,23186,23195,23207,23411,23409,23506,23500,23507,23504,{f:2,c:23562},23601,23884,23888,23860,23879,24061,24133,24125,24128,24131,24190,24266,{f:2,c:24257},24260,24380,
-24429,{f:2,c:24489},24488,24785,24801,24754,24758,24800,24860,24867,24826,24853,24816,24827,24820,24936,24817,24846,24822,24841,24832,24850,25119,25161,25507,25484,25551,25536,25577,25545,25542,25549,25554,25571,25552,25569,25558,{f:2,c:25581},25462,25588,25578,25563,25682,25562,25593,25950,25958,{f:2,c:25954},26001,26E3,26031,26222,26224,[26228,57786],26230,26223,26257,26234,26238,26231,{f:2,c:26366},26399,26397,26874,26837,26848,26840,26839,26885,26847,26869,26862,26855,26873,26834,26866,26851,
-26827,26829,26893,26898,26894,26825,26842,26990,26875,27454,27450,27453,27544,27542,27580,27631,{f:2,c:27694},27692,[28207,57904],28216,28244,28193,28210,28263,28234,28192,28197,28195,28187,28251,28248,28196,28246,28270,28205,28198,28271,28212,28237,28218,28204,28227,[28189,57901],28222,28363,28297,28185,28238,28259,28228,28274,28265,28255,{f:2,c:28953},28966,28976,28961,28982,[29038,57958],28956,29260,29316,29312,29494,29477,29492,29481,29754,29738,29747,29730,29733,{f:2,c:29749},29748,29743,29723,
-29734,29736,{f:2,c:29989},30059,30058,30178,30171,30179,30169,30168,30174,30176,{f:2,c:30331},30358,30355,30388,30428,30543,30701,30813,30828,30831,31245,31240,31243,31237,31232,31384,31383,31382,31461,31459,31561,31574,31558,31568,31570,31572,31565,31563,31567,[31569,60510],31903,31909,32094,32080,32104,32085,32043,32110,32114,32097,32102,32098,32112,32115,21892,{f:2,c:32724},32779,32850,32901,33109,33108,33099,33105,33102,33081,33094,33086,33100,33107,33140,33298,33308,33769,33795,33784,33805,33760,
-33733,33803,[33729,58309],33775,33777,33780,33879,33802,33776,33804,33740,33789,33778,33738,33848,33806,33796,33756,33799,33748,33759,34395,34527,34521,34541,34516,34523,34532,34512,34526,34903,{f:2,c:35009},34993,35203,35222,35387,35424,35413,35422,35388,35393,35412,35419,35408,35398,35380,35386,35382,35414,35937,35970,36015,36028,36019,36029,36033,36027,36032,36020,36023,36022,36031,36024,36234,36229,36225,36302,36317,36299,36314,36305,36300,36315,36294,36603,36600,36604,36764,36910,36917,36913,
-36920,36914,36918,37122,37109,37129,37118,37219,37221,37327,{f:2,c:37396},37411,37385,37406,37389,37392,37383,37393,38292,38287,38283,38289,38291,38290,38286,38538,38542,38539,38525,{f:2,c:38533},38541,38514,38532,38593,38597,38596,{f:2,c:38598},38639,38642,38860,{f:2,c:38917},38920,39143,39146,39151,39145,39154,39149,39342,39341,[12232,40643],[12233,40653],[12234,40657],20098,20653,20661,{f:2,c:20658},20677,20670,20652,20663,20667,20655,20679,21119,21111,21117,21215,21222,21220,{f:2,c:21218},21295,
-21983,21992,21971,21990,21966,21980,21959,21969,{f:2,c:21987},21999,21978,21985,{f:2,c:21957},21989,21961,{f:2,c:22290},22622,22609,22616,22615,22618,22612,22635,22604,22637,22602,22626,22610,22603,22887,23233,23241,23244,23230,23229,23228,23219,23234,23218,23913,23919,24140,24185,24265,24264,24338,24409,24492,24494,24858,24847,24904,24863,24819,24859,24825,24833,24840,24910,24908,24900,24909,24894,24884,24871,24845,24838,24887,{f:2,c:25121},25619,25662,25630,25642,25645,25661,25644,25615,25628,25620,
-25613,25654,{f:2,c:25622},25606,25964,26015,26032,26263,26249,{f:2,c:26247},26262,26244,26264,26253,26371,27028,26989,26970,26999,26976,26964,26997,26928,27010,26954,26984,26987,26974,26963,27001,27014,26973,26979,26971,27463,27506,27584,27583,27603,27645,28322,28335,28371,28342,28354,28304,28317,28359,28357,28325,28312,28348,28346,28331,28369,28310,28316,28356,28372,28330,28327,28340,29006,29017,29033,29028,29001,29031,29020,29036,29030,29004,29029,29022,28998,29032,29014,29242,29266,29495,29509,
-29503,29502,29807,29786,29781,29791,29790,29761,29759,29785,29787,[29788,58019],30070,30072,30208,30192,30209,30194,30193,30202,30207,30196,30195,{f:2,c:30430},30555,30571,30566,30558,30563,30585,30570,30572,30556,30565,30568,30562,30702,30862,30896,{f:2,c:30871},30860,30857,30844,30865,30867,30847,31098,31103,31105,33836,31165,31260,31258,31264,31252,31263,31262,{f:2,c:31391},31607,31680,31584,31598,31591,31921,31923,31925,32147,32121,32145,32129,32143,32091,32622,{f:2,c:32617},32626,32681,32680,
-32676,32854,32856,32902,32900,33137,33136,33144,33125,33134,33139,33131,{f:2,c:33145},33126,33285,33351,33922,33911,33853,33841,33909,33894,33899,33865,33900,33883,33852,33845,33889,33891,33897,33901,33862,34398,34396,34399,34553,34579,34568,34567,34560,34558,34555,{f:2,c:34562},34566,34570,34905,35039,35028,35033,35036,35032,35037,35041,35018,35029,35026,35228,35299,35435,{f:2,c:35442},35430,35433,35440,35463,35452,35427,35488,35441,35461,35437,35426,35438,35436,35449,35451,35390,35432,35938,35978,
-35977,36042,{f:2,c:36039},36036,36018,36035,36034,36037,36321,36319,36328,36335,36339,36346,36330,36324,36326,36530,36611,36617,36606,36618,36767,36786,36939,36938,36947,36930,36948,36924,36949,36944,36935,36943,36942,36941,36945,36926,36929,37138,37143,37228,37226,37225,37321,37431,37463,37432,37437,37440,37438,37467,37451,37476,37457,37428,37449,37453,37445,37433,37439,37466,38296,38552,{f:2,c:38548},38605,38603,{f:2,c:38601},38647,38651,38649,38646,38742,38772,38774,{f:2,c:38928},38931,38922,38930,
-38924,39164,39156,{f:2,c:39165},39347,39345,39348,39649,40169,40578,[12237,40718],[12238,40723],[12239,40736],20711,20718,20709,20694,[20717,60903],20698,20693,20687,20689,20721,20686,20713,20834,20979,21123,21122,21297,21421,22014,22016,22043,22039,22013,22036,22022,22025,{f:2,c:22029},22007,22038,22047,22024,22032,22006,22296,22294,22645,22654,22659,22675,22666,22649,22661,22653,22781,22821,22818,22820,22890,22889,23265,23270,23273,23255,23254,23256,23267,23413,23518,23527,23521,{f:2,c:23525},23528,
-23522,23524,23519,23565,23650,23940,23943,24155,24163,24149,24151,24148,24275,24278,24330,24390,24432,24505,24903,24895,24907,24951,{f:2,c:24930},24927,24922,24920,24949,25130,25735,25688,25684,25764,25720,25695,25722,25681,25703,25652,25709,25723,25970,26017,26071,26070,26274,26280,26269,27036,27048,27029,27073,27054,27091,27083,27035,27063,27067,27051,27060,27088,27085,27053,27084,27046,27075,27043,27465,27468,27699,28467,28436,28414,28435,28404,28457,28478,28448,28460,28431,28418,28450,28415,28399,
-28422,28465,28472,28466,28451,28437,28459,28463,28552,28458,28396,28417,28402,28364,28407,29076,29081,29053,29066,29060,29074,29246,29330,29334,29508,29520,29796,29795,29802,29808,29805,29956,30097,30247,30221,30219,30217,30227,30433,30435,30596,30589,30591,30561,30913,30879,30887,30899,30889,30883,{f:2,c:31118},31117,31278,31281,31402,31401,31469,31471,31649,31637,31627,31605,31639,31645,31636,31631,[31672,58170],31623,31620,31929,{f:2,c:31933},32187,32176,32156,{f:2,c:32189},32160,32202,32180,32178,
-32177,32186,32162,32191,32181,32184,32173,[32210,58202],32199,32172,32624,{f:2,c:32736},32735,32862,32858,32903,33104,33152,33167,33160,33162,33151,33154,33255,33274,33287,33300,33310,33355,33993,33983,33990,33988,33945,33950,33970,33948,33995,33976,33984,34003,33936,33980,34001,33994,34623,34588,34619,34594,34597,34612,34584,34645,34615,34601,35059,35074,35060,35065,35064,35069,35048,35098,35055,35494,35468,35486,35491,35469,35489,35475,35492,35498,35493,35496,35480,35473,35482,35495,35946,35981,
-35980,36051,{f:2,c:36049},36203,36249,36245,36348,36628,36626,36629,36627,36771,36960,36952,36956,36963,36953,36958,36962,36957,36955,37145,37144,37150,37237,37240,37239,37236,37496,37548,37504,37509,37528,37526,37499,37523,37532,37544,37500,37521,38305,{f:2,c:38312},38307,38309,38308,38553,38556,38555,38604,38610,38656,38780,38789,38902,{f:2,c:38935},39087,39089,39171,39173,39180,39177,39361,{f:2,c:39599},39654,{f:2,c:39745},40180,40182,40179,40636,[12240,40763],[12241,40778],20740,20736,20731,20725,
-20729,20738,{f:2,c:20744},20741,20956,{f:3,c:21127},21133,21130,21232,21426,22062,22075,22073,22066,22079,22068,22057,22099,22094,22103,22132,22070,{f:2,c:22063},22656,22687,22686,22707,22684,22702,22697,22694,22893,23305,23291,23307,23285,23308,23304,23534,23532,23529,23531,{f:2,c:23652},23965,23956,24162,24159,24161,24290,24282,24287,24285,24291,24288,24392,24433,24503,24501,24950,24935,24942,24925,24917,24962,24956,24944,24939,24958,24999,24976,25003,24974,25004,24986,24996,24980,25006,25134,25705,
-25711,25721,25758,25778,25736,[25744,57745],25776,25765,25747,25749,25769,25746,25774,25773,25771,25754,25772,25753,25762,25779,25973,{f:2,c:25975},26286,26283,26292,26289,27171,27167,27112,27137,27166,27161,27133,27169,27155,27146,27123,27138,27141,27117,27153,27472,27470,27556,{f:2,c:27589},28479,28540,28548,28497,28518,28500,28550,28525,28507,28536,28526,28558,28538,28528,28516,28567,28504,28373,28527,28512,28511,29087,29100,29105,29096,29270,29339,29518,29527,29801,29835,29827,29822,29824,30079,
-30240,30249,30239,30244,30246,{f:2,c:30241},30362,30394,30436,30606,30599,30604,30609,30603,30923,30917,30906,30922,30910,30933,30908,30928,31295,31292,31296,31293,31287,31291,31407,31406,31661,31665,31684,31668,{f:2,c:31686},31681,31648,31692,31946,32224,32244,32239,32251,32216,32236,32221,32232,32227,32218,32222,32233,32158,32217,32242,32249,32629,32631,32687,32745,32806,{f:3,c:33179},33184,33178,33176,34071,34109,34074,34030,{f:2,c:34092},34067,34065,34083,34081,34068,34028,34085,34047,34054,34690,
-34676,34678,34656,34662,34680,34664,34649,34647,34636,34643,34907,34909,35088,35079,{f:2,c:35090},35093,35082,35516,35538,35527,35524,35477,35531,35576,35506,35529,35522,35519,35504,35542,35533,35510,35513,35547,35916,35918,35948,36064,36062,36070,36068,{f:2,c:36076},{f:2,c:36066},36060,36074,36065,36205,36255,36259,36395,36368,36381,36386,36367,36393,36383,36385,36382,36538,36637,36635,36639,36649,36646,36650,36636,36638,36645,36969,36974,36968,36973,36983,37168,37165,37159,37169,37255,37257,37259,
-37251,37573,37563,37559,37610,37604,37569,37555,37564,37586,37575,37616,37554,38317,38321,38660,{f:2,c:38662},38665,38752,38797,38795,38799,38945,38955,38940,39091,39178,39187,39186,39192,39389,39376,39391,39387,39377,39381,39378,39385,39607,{f:2,c:39662},39719,39749,39748,39799,39791,40198,40201,40195,40617,40638,40654,22696,[12242,40786],20754,20760,20756,20752,20757,20864,20906,20957,21137,21139,21235,22105,22123,22137,22121,22116,22136,22122,22120,22117,22129,22127,22124,22114,22134,22721,22718,
-22727,22725,22894,23325,23348,23416,23536,23566,24394,25010,24977,25001,24970,25037,25014,25022,25034,25032,25136,25797,25793,25803,{f:2,c:25787},25818,25796,25799,25794,25805,25791,25810,25812,25790,25972,26310,26313,26297,26308,26311,26296,27197,27192,27194,27225,27243,27224,27193,27204,27234,27233,27211,27207,27189,27231,27208,27481,27511,27653,28610,28593,28577,28611,28580,28609,28583,28595,28608,28601,[28598,60318],28582,28576,28596,29118,29129,29136,29138,29128,29141,29113,29134,29145,29148,
-{f:2,c:29123},29544,29852,29859,29848,29855,29854,29922,{f:2,c:29964},30260,30264,30266,30439,30437,30624,{f:2,c:30622},30629,30952,30938,30956,30951,31142,{f:2,c:31309},31302,31308,31307,31418,31705,31761,31689,31716,31707,31713,31721,31718,{f:2,c:31957},32266,32273,32264,32283,32291,32286,[32285,58211],32265,32272,32633,32690,{f:2,c:32752},32750,[32808,58239],33203,33193,33192,33275,33288,{f:2,c:33368},34122,34137,34120,{f:2,c:34152},34115,34121,34157,34154,34142,34691,34719,34718,34722,34701,34913,
-35114,35122,35109,35115,35105,35242,[35238,58391],35558,35578,35563,35569,35584,35548,35559,35566,35582,{f:2,c:35585},35575,35565,35571,35574,35580,35947,35949,35987,36084,36420,36401,36404,36418,36409,36405,36667,36655,36664,36659,36776,36774,36981,36980,36984,36978,36988,36986,37172,37266,37664,37686,37624,37683,37679,37666,37628,37675,37636,37658,37648,37670,37665,37653,37678,37657,38331,{f:2,c:38567},38570,38613,38670,38673,38678,38669,38675,38671,38747,[38748,58565],38758,38808,38960,38968,38971,
-38967,38957,38969,38948,39184,39208,39198,39195,39201,39194,39405,39394,39409,39608,39612,39675,39661,39720,39825,40213,40227,40230,40232,40210,40219,40664,40660,[12243,40845],[12244,40860],20778,20767,20769,20786,21237,22158,22144,22160,22149,22151,22159,22741,22739,22737,22734,23344,23338,23332,23418,23607,23656,23996,23994,23997,23992,24171,24396,24509,25033,25026,25031,25062,25035,25138,25140,25806,25802,25816,25824,25840,25830,25836,25841,25826,25837,{f:2,c:25986},26329,26326,27264,27284,27268,
-27298,27292,27355,27299,27262,27287,27280,27296,27484,27566,27610,27656,28632,28657,{f:2,c:28639},28635,28644,28651,28655,28544,28652,28641,28649,28629,28654,28656,29159,[29151,60361],29166,29158,29157,29165,29164,29172,29152,29237,29254,29552,29554,29865,29872,29862,29864,30278,30274,30284,30442,30643,30634,30640,30636,30631,30637,30703,30967,30970,30964,30959,30977,31143,31146,31319,31423,31751,31757,31742,31735,31756,31712,31968,31964,31966,31970,31967,31961,31965,32302,32318,32326,32311,32306,
-32323,32299,32317,32305,32325,32321,32308,32313,32328,32309,32319,32303,32580,32755,32764,{f:2,c:32881},32880,32879,32883,33222,33219,33210,33218,33216,33215,33213,33225,33214,33256,33289,33393,34218,34180,34174,34204,34193,34196,34223,34203,34183,34216,34186,34214,34407,34752,34769,34739,34770,34758,34731,34747,34746,34760,34763,35131,35126,35140,35128,35133,35244,35598,35607,35609,35611,35594,35616,35613,35588,35600,35905,35903,35955,36090,36093,36092,36088,36091,36264,36425,36427,36424,36426,36676,
-36670,36674,36677,36671,36991,36989,36996,{f:2,c:36993},36992,37177,37283,37278,37276,37709,37762,37672,37749,37706,37733,37707,37656,37758,37740,37723,37744,37722,37716,{f:3,c:38346},38344,38342,38577,38584,38614,38684,38686,38816,38867,38982,39094,39221,39425,39423,39854,39851,39850,39853,40251,40255,40587,40655,40670,{f:2,c:40668},40667,40766,40779,21474,22165,22190,22745,22744,23352,24413,25059,25139,25844,25842,25854,25862,{f:2,c:25850},25847,26039,26332,26406,27315,27308,27331,27323,27320,27330,
-{f:2,c:27310},27487,27512,27567,28681,28683,28670,28678,28666,28689,28687,{f:2,c:29179},29182,29176,29559,29557,29863,29887,29973,30294,30296,30290,30653,30655,{f:2,c:30651},30990,31150,{f:2,c:31329},31328,{f:2,c:31428},31787,31783,31786,31774,31779,31777,31975,{f:2,c:32340},32350,32346,32353,32338,32345,32584,32761,32763,32887,32886,33229,33231,33290,34255,34217,34253,34256,34249,34224,34234,34233,34799,34796,34802,34784,35206,35250,35316,35624,35641,35628,35627,35920,36101,36441,36451,36454,36452,
-36447,36437,36544,36681,36685,36999,36995,37E3,{f:2,c:37291},37328,37780,37770,37782,37794,37811,37806,37804,37808,37784,37786,37783,38356,38358,38352,38357,38626,38620,38617,38619,38622,38692,38819,38822,38829,38905,38989,38991,38988,38990,38995,39098,{f:2,c:39230},39229,39214,39333,39438,39617,39683,39686,39759,39758,39757,39882,39881,39933,39880,39872,40273,40285,40288,40672,40725,40748,20787,22181,22184,{f:2,c:22750},22754,23541,40848,24300,25074,25079,25078,25077,25856,25871,26336,26333,27365,
-27357,27354,27347,28699,28703,28712,28698,28701,28693,28696,29190,29197,29272,29346,29560,29562,29885,29898,29923,30087,30086,30303,30305,30663,31001,31153,31339,31337,{f:2,c:31806},31800,31805,31799,31808,32363,32365,32377,{f:2,c:32361},32371,32645,32694,32697,32696,33240,34281,34269,34282,34261,{f:2,c:34276},34295,34811,34821,34829,34809,34814,35168,35167,35158,35166,35649,35676,35672,35657,35674,{f:2,c:35662},35654,35673,36104,36106,36476,36466,36487,36470,36460,36474,36468,36692,36686,36781,{f:2,
-c:37002},37297,37294,37857,37841,37855,37827,37832,{f:2,c:37852},37846,37858,37837,37848,37860,37847,37864,38364,38580,38627,38698,38695,38753,38876,38907,39006,39E3,39003,39100,39237,39241,39446,39449,39693,39912,39911,39894,39899,40329,40289,40306,40298,40300,40594,40599,40595,40628,21240,22199,22198,22196,22204,22756,23360,23363,23421,23542,24009,25080,25082,25880,25876,25881,26342,26407,27372,28734,28720,28722,29200,29563,29903,30306,30309,31014,31018,31020,31019,31431,31478,31820,31811,31821,
-{f:2,c:31983},36782,32381,32380,32386,32588,32768,33242,33382,34299,34297,34321,34298,34310,34315,34311,34314,{f:2,c:34836},35172,35258,35320,35696,35692,35686,35695,35679,35691,36111,36109,36489,36481,36485,36482,37300,37323,37912,37891,37885,38369,38704,39108,39250,39249,39336,39467,39472,39479,39477,39955,39949,40569,40629,40680,40751,40799,40803,40801,{f:2,c:20791},22209,22208,22210,22804,23660,24013,25084,25086,25885,25884,26005,26345,27387,27396,27386,27570,28748,29211,29351,29910,29908,30313,
-30675,31824,32399,32396,32700,34327,34349,34330,34851,34850,34849,34847,35178,35180,35261,35700,35703,35709,36115,36490,36493,36491,36703,36783,37306,37934,37939,37941,37946,37944,37938,37931,38370,{f:2,c:38712},38706,[38911,58586],39015,39013,39255,39493,39491,39488,39486,39631,39764,39761,39981,39973,40367,40372,40386,40376,40605,40687,40729,40796,{f:2,c:40806},20796,20795,22216,22218,22217,23423,24020,24018,24398,25087,25892,27402,27489,28753,28760,29568,29924,30090,30318,30316,31155,31840,31839,
-32894,32893,33247,35186,35183,35324,35712,{f:2,c:36118},36497,36499,36705,37192,37956,{f:2,c:37969},{f:2,c:38717},38851,38849,39019,39253,39509,39501,39634,39706,40009,39985,39998,39995,40403,40407,40756,40812,40810,40852,22220,24022,25088,25891,25899,25898,26348,27408,29914,31434,31844,31843,31845,32403,32406,32404,33250,34360,34367,34865,35722,37008,37007,37987,37984,37988,38760,39023,39260,{f:2,c:39514},39511,{f:2,c:39635},39633,40020,40023,40022,40421,40607,40692,22225,22761,25900,28766,{f:2,
-c:30321},[30679,60226],32592,32648,34870,34873,34914,35731,35730,35734,33399,36123,37312,37994,38722,38728,38724,38854,39024,39519,39714,39768,40031,{f:2,c:40441},{f:2,c:40572},40711,40823,40818,24307,27414,28771,31852,31854,34875,35264,36513,37313,38002,38E3,39025,39262,39638,39715,40652,28772,30682,35738,38007,38857,39522,39525,32412,35740,36522,37317,{f:2,c:38013},38012,{f:2,c:40055},40695,35924,38015,40474,29224,39530,39729,40475,40478,31858,20034,20060,[12048,20981],[12053,21274],[12058,21378],
-19975,19980,20039,20109,[12062,22231],[12076,23662],[12091,24435],19983,20871,19982,20014,20115,20162,20169,20168,20888,21244,21356,21433,22304,22787,22828,[23568,60417],24063,26081,[12110,27571],27596,[12115,27668],[12121,29247],20017,20028,20200,20188,20201,20193,20189,20186,21004,21001,21276,21324,{f:2,c:22306},22807,22831,23425,23428,23570,23611,23668,23667,24068,24192,24194,24521,25097,25168,27669,27702,27715,27711,27707,29358,29360,29578,[12145,31160],32906,38430,20238,20248,20268,20213,20244,
-20209,20224,20215,20232,20253,20226,20229,20258,20243,20228,20212,20242,20913,21011,21008,21158,21282,21279,21325,21386,21511,22241,22239,22318,22314,22324,22844,22912,22908,22917,22907,22910,22903,22911,23382,23573,23589,23676,{f:2,c:23674},23678,24031,[24181,57646],24196,24322,24346,24436,24533,24532,24527,25180,25182,25188,25185,25190,25186,25177,25184,25178,25189,25911,26095,26094,26430,26425,26424,26427,26426,26431,26428,26419,27672,27718,27730,27740,27727,[27722,60796],27732,{f:2,c:27723},28785,
-29278,{f:2,c:29364},29582,29994,30335,31349,[12153,32593],[12171,33400],33404,33408,33405,33407,[12172,34381],[12177,35198],37017,[37015,59347],37016,37019,37012,38434,38436,38432,38435,20310,20283,20322,20297,20307,20324,20286,20327,20306,20319,20289,20312,20269,20275,20287,20321,20879,20921,21020,21022,21025,{f:2,c:21165},21257,21347,21362,{f:2,c:21390},21552,21559,21546,21588,21573,21529,21532,21541,21528,21565,21583,21569,21544,21540,21575,22254,22247,22245,22337,22341,22348,22345,22347,22354,
-22790,22848,22950,22936,22944,22935,22926,22946,22928,22927,22951,22945,23438,23442,23592,23594,23693,23695,23688,23691,23689,23698,23690,23686,23699,23701,24032,24074,24078,24203,24201,24204,24200,24205,24325,24349,24440,24438,24530,24529,24528,24557,24552,24558,24563,24545,24548,24547,24570,24559,24567,24571,24576,24564,25146,25219,25228,{f:2,c:25230},25236,25223,25201,25211,25210,25200,25217,25224,25207,25213,25202,25204,26096,26100,26099,26098,26101,26437,26439,26457,26453,26444,26440,26461,26445,
-26458,26443,27600,{f:2,c:27673},27768,27751,27755,27780,27787,27791,27761,27759,27753,27802,27757,27783,27797,[27804,57900],27750,27763,27749,27771,27790,28788,28794,29283,29375,29373,29379,29382,29377,29370,29381,29589,29591,{f:2,c:29587},29586,30010,30009,{f:2,c:30100},30337,31037,32820,32917,32921,32912,32914,32924,33424,33423,33413,33422,33425,33427,33418,{f:2,c:33411},[12184,35960],36809,36799,37023,37025,37029,37022,37031,37024,38448,38440,38447,38445,20019,20376,20348,20357,20349,20352,20359,
-20342,20340,20361,20356,20343,20300,20375,20330,20378,20345,20353,20344,20368,20380,20372,20382,20370,20354,20373,20331,20334,20894,20924,20926,21045,{f:2,c:21042},21062,21041,21180,{f:2,c:21258},21308,21394,21396,21639,21631,21633,21649,21634,21640,21611,21626,21630,21605,21612,21620,21606,21645,21615,21601,21600,21656,21603,21607,21604,22263,22265,22383,22386,22381,22379,22385,22384,22390,22400,22389,22395,{f:2,c:22387},22370,22376,22397,22796,22853,22965,22970,22991,22990,22962,22988,22977,22966,
-22972,22979,22998,22961,22973,22976,22984,22964,22983,23394,23397,23443,23445,23620,23623,23726,23716,23712,23733,23727,23720,23724,23711,23715,23725,23714,23722,23719,23709,23717,23734,23728,23718,24087,24084,24089,24360,{f:3,c:24354},24404,24450,24446,24445,24542,24549,24621,24614,24601,24626,24587,24628,24586,24599,24627,24602,24606,24620,24610,24589,24592,24622,24595,24593,24588,24585,24604,25108,25149,25261,25268,25297,25278,25258,25270,25290,25262,25267,25263,25275,25257,25264,25272,25917,26024,
-26043,26121,26108,26116,26130,26120,26107,26115,26123,26125,26117,26109,26129,26128,26358,26378,26501,26476,26510,26514,26486,26491,26520,26502,26500,26484,26509,26508,26490,26527,26513,26521,26499,26493,26497,{f:2,c:26488},26516,27429,27520,27518,27614,27677,27795,27884,27883,27886,27865,27830,27860,27821,27879,27831,27856,27842,27834,27843,27846,27885,27890,27858,27869,27828,27786,27805,27776,27870,27840,27952,27853,27847,27824,27897,27855,27881,27857,28820,28824,28805,28819,28806,28804,28817,28822,
-28802,28826,28803,29290,29398,29387,29400,29385,29404,29394,29396,29402,29388,29393,29604,29601,29613,29606,29602,29600,29612,29597,29917,29928,{f:2,c:30015},30014,30092,30104,30383,30451,30449,30448,30453,30712,30716,30713,30715,30714,30711,31042,31039,31173,31352,31355,31483,31861,31997,32821,32911,32942,32931,32952,32949,32941,33312,33440,33472,33451,33434,33432,33435,33461,33447,33454,33468,33438,33466,33460,33448,33441,33449,33474,33444,33475,33462,33442,34416,34415,{f:2,c:34413},35926,36818,
-36811,36819,36813,36822,36821,36823,37042,37044,37039,37043,37040,38457,38461,38460,38458,38467,20429,20421,20435,20402,20425,20427,20417,20436,20444,20441,[20411,60346],20403,20443,20423,20438,20410,20416,20409,20460,21060,21065,21184,21186,21309,21372,21399,21398,21401,21400,21690,21665,21677,21669,21711,21699,33549,21687,21678,21718,21686,{f:2,c:21701},21664,21616,21692,21666,21694,21618,21726,21680,22453,{f:2,c:22430},22436,22412,22423,22429,22427,22420,22424,22415,22425,22437,22426,22421,22772,
-22797,22867,23009,23006,23022,23040,23025,23005,23034,23037,23036,23030,23012,23026,23031,23003,23017,23027,23029,23008,23038,23028,23021,23464,23628,23760,23768,23756,23767,23755,23771,23774,23770,23753,23751,23754,23766,{f:2,c:23763},23759,23752,23750,23758,23775,23800,24057,{f:3,c:24097},24096,24100,24240,24228,24226,24219,24227,24229,24327,24366,24406,24454,24631,24633,24660,24690,24670,24645,24659,24647,24649,24667,24652,24640,24642,24671,24612,24644,24664,24678,24686,{f:2,c:25154},25295,25357,
-25355,25333,25358,25347,25323,25337,25359,25356,25336,25334,25344,{f:2,c:25363},25338,25365,25339,25328,25921,25923,26026,26047,26166,26145,26162,26165,26140,26150,26146,26163,26155,26170,26141,26164,26169,26158,{f:2,c:26383},26561,26610,26568,26554,26588,26555,26616,26584,26560,26551,26565,26603,26596,26591,26549,26573,26547,26615,26614,26606,26595,26562,26553,26574,26599,26608,26546,26620,26566,26605,26572,26542,26598,26587,26618,{f:2,c:26569},26563,26602,26571,27432,27522,27524,27574,27606,27608,
-27616,{f:2,c:27680},27944,27956,27949,27935,27964,27967,27922,27914,27866,27955,27908,27929,27962,27930,27921,27904,27933,27970,27905,27928,27959,27907,27919,27968,27911,27936,27948,27912,27938,27913,27920,28855,28831,28862,28849,28848,28833,{f:2,c:28852},28841,29249,{f:2,c:29257},29292,29296,29299,29294,29386,29412,29416,29419,29407,29418,29414,29411,29573,29644,29634,29640,29637,29625,29622,29621,29620,29675,29631,29639,29630,29635,29638,29624,29643,29932,29934,29998,{f:2,c:30023},30119,30122,30329,
-30404,30472,{f:3,c:30467},30474,30455,30459,30458,{f:2,c:30695},30726,{f:2,c:30737},30725,30736,30735,30734,[30729,58095],30723,30739,31050,31052,31051,31045,31044,31189,31181,31183,31190,31182,31360,31358,31441,{f:2,c:31488},31866,{f:2,c:31864},{f:3,c:31871},32003,32008,32001,32600,32657,32653,32702,32775,{f:2,c:32782},32788,32823,32984,32967,32992,32977,32968,32962,32976,32965,32995,32985,32988,32970,32981,32969,32975,32983,32998,32973,33279,33313,33428,33497,33534,33529,33543,33512,33536,33493,
-33594,33515,33494,33524,33516,33505,33522,33525,33548,33531,33526,33520,33514,33508,33504,33530,33523,33517,34423,34420,34428,34419,34881,34894,34919,34922,34921,35283,35332,35335,36210,36835,36833,36846,36832,37105,37053,37055,37077,37061,37054,37063,37067,37064,[37332,60294],37331,38484,38479,38481,38483,38474,38478,20510,20485,20487,20499,20514,20528,20507,20469,20468,20531,20535,20524,{f:2,c:20470},20503,20508,20512,20519,20533,20527,20529,20494,20826,20884,20883,20938,{f:2,c:20932},20936,20942,
-21089,21082,21074,{f:2,c:21086},21077,21090,21197,21262,21406,21798,21730,21783,21778,21735,21747,21732,21786,21759,21764,21768,21739,21777,21765,21745,21770,21755,{f:2,c:21751},21728,21774,21763,21771,{f:2,c:22273},22476,22578,22485,22482,22458,22470,22461,22460,22456,22454,22463,22471,22480,22457,22465,22798,22858,23065,23062,{f:2,c:23085},23061,23055,23063,23050,23070,23091,23404,23463,23469,23468,23555,23638,23636,23788,23807,23790,23793,23799,23808,23801,24105,24104,24232,24238,24234,24236,24371,
-24368,24423,24669,24666,24679,24641,24738,24712,24704,24722,24705,24733,24707,24725,24731,24727,24711,24732,24718,25113,25158,25330,25360,25430,25388,{f:2,c:25412},25398,25411,25572,25401,25419,25418,25404,25385,25409,25396,25432,25428,25433,25389,25415,25395,25434,25425,25400,25431,25408,25416,25930,25926,26054,{f:2,c:26051},26050,26186,26207,26183,26193,{f:2,c:26386},26655,26650,26697,{f:2,c:26674},26683,26699,26703,26646,26673,26652,26677,26667,26669,26671,26702,26692,26676,26653,26642,26644,26662,
-26664,26670,26701,26682,26661,26656,27436,27439,27437,27441,27444,27501,32898,27528,27622,27620,27624,27619,27618,27623,27685,28026,{f:2,c:28003},28022,27917,28001,28050,27992,28002,28013,28015,28049,28045,28143,28031,28038,27998,[28007,59078],28E3,28055,28016,28028,27999,28034,28056,27951,28008,28043,28030,28032,28036,27926,28035,28027,28029,28021,28048,28892,28883,28881,28893,28875,32569,28898,28887,28882,28894,28896,28884,28877,{f:3,c:28869},28890,28878,28897,29250,29304,29303,29302,29440,29434,
-29428,29438,29430,29427,29435,29441,29651,29657,29669,29654,29628,29671,29667,29673,29660,29650,29659,29652,29661,29658,{f:2,c:29655},29672,{f:2,c:29918},{f:2,c:29940},29985,30043,30047,30128,30145,30139,30148,30144,30143,30134,30138,30346,30409,30493,30491,30480,30483,30482,30499,30481,30485,{f:2,c:30489},30498,30503,30755,30764,30754,30773,30767,30760,30766,30763,30753,30761,30771,30762,30769,31060,31067,31055,31068,31059,31058,31057,{f:2,c:31211},31200,31214,31213,31210,31196,31198,31197,31366,
-31369,31365,{f:2,c:31371},31370,31367,31448,31504,31492,31507,31493,31503,31496,31498,31502,31497,31506,31876,31889,31882,31884,31880,31885,31877,32030,32029,32017,32014,32024,32022,32019,32031,32018,32015,32012,32604,32609,32606,32608,32605,32603,32662,32658,32707,32706,32704,32790,32830,32825,33018,33010,33017,33013,33025,33019,33024,33281,33327,33317,33587,33581,33604,33561,33617,33573,33622,33599,33601,33574,33564,33570,33602,33614,33563,33578,33544,33596,33613,33558,33572,33568,33591,33583,33577,
-33607,33605,33612,33619,33566,33580,33611,33575,33608,34387,34386,34466,34472,34454,34445,34449,34462,34439,34455,34438,34443,34458,34437,34469,34457,34465,34471,34453,34456,34446,34461,34448,34452,{f:2,c:34883},34925,{f:2,c:34933},34930,34944,34929,34943,34927,34947,34942,34932,34940,35346,35911,35927,35963,36004,36003,36214,36216,36277,36279,36278,36561,36563,36862,36853,36866,36863,36859,36868,36860,36854,37078,37088,{f:2,c:37081},37091,37087,37093,37080,37083,37079,37084,37092,37200,{f:2,c:37198},
-37333,37346,37338,38492,38495,38588,39139,[12221,39647],[12223,39727],20095,20592,20586,20577,20574,20576,20563,20555,20573,20594,20552,20557,20545,20571,20554,20578,20501,20549,20575,20585,20587,{f:2,c:20579},20550,20544,20590,20595,20567,20561,20944,21099,21101,21100,21102,21206,21203,21293,21404,{f:2,c:21877},21820,21837,21840,21812,21802,21841,21858,21814,21813,21808,21842,21829,21772,21810,21861,21838,21817,21832,21805,21819,21824,21835,22282,22279,22523,22548,22498,22518,22492,22516,22528,22509,
-22525,22536,22520,22539,22515,22479,22535,22510,22499,22514,22501,22508,22497,22542,22524,22544,22503,22529,22540,22513,22505,22512,22541,22532,22876,23136,23128,23125,[23143,60437],23134,23096,23093,23149,23120,23135,23141,23148,23123,23140,23127,23107,23133,23122,23108,23131,23112,23182,23102,23117,23097,23116,23152,23145,23111,23121,23126,23106,23132,23410,23406,23489,23488,23641,23838,23819,23837,23834,23840,23820,23848,23821,23846,23845,23823,23856,23826,23843,23839,23854,24126,24116,24241,24244,
-24249,{f:2,c:24242},24374,24376,24475,24470,24479,24714,24720,24710,24766,24752,24762,{f:2,c:24787},24783,24804,24793,24797,24776,24753,24795,24759,24778,24767,24771,24781,24768,25394,25445,25482,25474,25469,25533,25502,25517,25501,25495,25515,25486,25455,25479,25488,25454,25519,25461,25500,25453,25518,25468,25508,25403,25503,25464,25477,25473,25489,25485,25456,25939,26061,26213,26209,26203,26201,26204,26210,26392,26745,26759,26768,26780,{f:2,c:26733},26798,26795,26966,26735,26787,26796,26793,26741,
-26740,26802,26767,26743,26770,26748,26731,26738,26794,26752,26737,26750,26779,26774,26763,26784,26761,26788,26744,26747,26769,26764,26762,26749,27446,27443,{f:2,c:27447},27537,27535,{f:2,c:27533},27532,27690,28096,28075,28084,28083,28276,28076,28137,28130,28087,28150,28116,28160,28104,28128,28127,28118,28094,28133,{f:2,c:28124},28123,28148,28106,28093,28141,28144,28090,28117,28098,28111,28105,28112,28146,28115,28157,28119,28109,28131,28091,28922,28941,28919,28951,28916,28940,28912,28932,28915,28944,
-28924,28927,28934,28947,28928,28920,28918,28939,28930,28942,29310,{f:2,c:29307},29311,29469,29463,29447,29457,29464,29450,29448,29439,29455,29470,29576,29686,29688,29685,29700,29697,29693,29703,29696,29690,29692,29695,29708,29707,29684,29704,30052,30051,30158,30162,30159,{f:2,c:30155},30161,30160,30351,30345,30419,30521,30511,30509,{f:2,c:30513},30516,30515,30525,30501,30523,30517,30792,30802,30793,30797,30794,30796,30758,30789,30800,31076,31079,{f:2,c:31081},31075,31083,31073,31163,31226,31224,{f:2,
-c:31222},31375,31380,31376,31541,31547,31540,31525,31536,31522,31524,31539,31512,31530,31517,31537,31531,31533,31535,31538,31544,31514,31523,31892,31896,31894,31907,32053,32061,32056,32054,32058,32069,32044,32041,32065,32071,{f:2,c:32062},32074,32059,32040,32611,32661,{f:2,c:32668},32667,{f:2,c:32714},32717,{f:2,c:32720},32711,32719,32713,32799,32798,32795,32839,32835,32840,33048,33061,33049,33051,33069,33055,33068,33054,33057,33045,33063,33053,33058,33297,33336,33331,33338,33332,33330,33396,33680,
-33699,33704,33677,33658,33651,33700,33652,33679,33665,33685,33689,33653,33684,33705,33661,33667,33676,33693,33691,33706,33675,33662,33701,33711,33672,33687,33712,33663,33702,33671,33710,33654,34393,34390,34495,34487,34498,34497,34501,34490,34480,34504,34489,34483,34488,34508,34484,{f:2,c:34491},34499,{f:2,c:34493},34898,34953,34965,34984,34978,34986,34970,34961,34977,34975,34968,34983,34969,34971,34967,34980,34988,34956,34963,34958,35202,35286,35289,35285,35376,35367,35372,35358,35897,35899,{f:2,
-c:35932},35965,36005,36221,36219,36217,36284,36290,36281,36287,36289,36568,36574,36573,36572,36567,{f:2,c:36576},36900,36875,36881,36892,36876,36897,37103,37098,37104,37108,{f:2,c:37106},37076,{f:2,c:37099},37097,37206,37208,37210,37203,37205,37356,37364,37361,37363,37368,37348,37369,{f:2,c:37354},37367,37352,37358,38266,38278,38280,38524,38509,38507,38513,38511,38591,38762,38916,39141,39319,20635,20629,20628,20638,20619,20643,20611,20620,20622,20637,20584,20636,20626,20610,20615,20831,20948,21266,
-21265,21412,21415,21905,21928,21925,21933,21879,22085,21922,21907,21896,21903,21941,21889,21923,21906,21924,21885,21900,21926,21887,21909,21921,21902,22284,22569,22583,22553,22558,22567,22563,22568,22517,22600,22565,22556,22555,22579,22591,22582,22574,22585,22584,22573,22572,22587,22881,23215,23188,23199,23162,23202,23198,23160,23206,23164,23205,23212,23189,23214,23095,23172,23178,23191,23171,23179,23209,23163,23165,23180,23196,23183,23187,23197,23530,23501,23499,23508,23505,23498,23502,23564,23600,
-23863,23875,23915,23873,23883,23871,23861,23889,23886,23893,23859,23866,23890,23869,23857,23897,23874,23865,23881,23864,23868,23858,23862,23872,23877,24132,24129,[24408,57673],24486,24485,24491,24777,24761,24780,24802,24782,24772,24852,24818,24842,24854,24837,24821,24851,24824,24828,24830,24769,24835,24856,24861,24848,24831,24836,24843,25162,25492,25521,25520,25550,25573,25576,25583,25539,25757,25587,25546,25568,25590,25557,25586,25589,25697,25567,25534,25565,25564,25540,25560,25555,25538,25543,25548,
-25547,25544,25584,25559,25561,25906,25959,25962,25956,25948,25960,25957,25996,{f:2,c:26013},26030,26064,26066,26236,26220,26235,26240,26225,26233,26218,26226,26369,26892,26835,26884,26844,26922,26860,26858,26865,26895,26838,26871,26859,26852,26870,26899,26896,26867,26849,26887,26828,26888,26992,26804,26897,26863,26822,26900,26872,26832,26877,26876,26856,26891,26890,26903,26830,26824,{f:2,c:26845},26854,26868,26833,26886,26836,26857,26901,26917,26823,27449,27451,27455,27452,27540,27543,27545,27541,
-27581,27632,{f:2,c:27634},27696,28156,{f:2,c:28230},28191,28233,28296,{f:2,c:28220},28229,28258,28203,28223,28225,28253,28275,28188,28211,28235,28224,28241,28219,28163,28206,28254,28264,28252,28257,28209,28200,28256,28273,28267,28217,28194,28208,28243,28261,28199,28280,28260,28279,28245,28281,28242,28262,{f:2,c:28213},28250,28960,28958,28975,28923,28974,28977,28963,28965,28962,28978,28959,28968,28986,28955,29259,29274,{f:2,c:29320},29318,29317,29323,29458,29451,29488,29474,29489,29491,29479,29490,
-29485,29478,29475,29493,29452,29742,29740,29744,29739,29718,29722,29729,29741,29745,29732,29731,29725,29737,29728,29746,29947,29999,30063,30060,30183,30170,30177,30182,30173,30175,30180,30167,30357,30354,30426,{f:2,c:30534},30532,30541,30533,30538,30542,{f:2,c:30539},30686,30700,30816,{f:2,c:30820},30812,30829,30833,30826,30830,30832,30825,30824,30814,30818,31092,31091,31090,31088,31234,31242,31235,31244,31236,31385,31462,31460,31562,31559,31556,31560,31564,31566,31552,31576,31557,31906,31902,31912,
-31905,32088,32111,32099,32083,32086,32103,32106,32079,32109,32092,32107,32082,32084,32105,32081,32095,32078,{f:2,c:32574},{f:2,c:32613},32674,{f:2,c:32672},32727,32849,{f:2,c:32847},33022,32980,33091,33098,33106,33103,33095,33085,33101,33082,33254,33262,{f:3,c:33271},33284,{f:2,c:33340},33343,33397,33595,[33743,60382],33785,33827,33728,33768,33810,33767,33764,33788,33782,33808,33734,33736,33771,33763,33727,33793,33757,33765,33752,33791,33761,33739,33742,33750,33781,33737,33801,[33807,58332],33758,
-33809,33798,33730,33779,33749,33786,33735,33745,33770,33811,33690,33731,33772,33774,33732,33787,33751,33762,33819,33755,33790,34520,34530,34534,34515,34531,34522,34538,34525,34539,34524,34540,34537,34519,34536,34513,34888,34902,34901,35002,35031,35001,35E3,35008,35006,34998,35004,34999,35005,34994,35073,35017,35221,35224,35223,35293,{f:2,c:35290},35406,35405,35385,35417,35392,{f:2,c:35415},{f:2,c:35396},35410,35400,35409,35402,35404,35407,35935,35969,35968,36026,36030,36016,36025,36021,36228,36224,
-36233,36312,36307,36301,36295,36310,36316,36303,36309,36313,36296,36311,36293,36591,36599,36602,36601,36582,36590,36581,36597,{f:2,c:36583},36598,36587,36593,36588,36596,36585,36909,36916,36911,37126,37164,[37124,60367],37119,37116,37128,37113,37115,37121,37120,37127,37125,37123,37217,37220,37215,37218,37216,37377,37386,37413,37379,37402,37414,37391,37388,37376,37394,37375,37373,37382,37380,37415,37378,37404,37412,37401,37399,37381,37398,38267,38285,38284,38288,38535,38526,{f:2,c:38536},38531,38528,
-38594,38600,38595,38641,38640,38764,38768,38766,38919,39081,39147,40166,[12235,40697],{f:2,c:20099},20150,20669,20671,20678,20654,20676,20682,20660,20680,20674,20656,20673,20666,20657,20683,20681,20662,20664,20951,21114,21112,{f:2,c:21115},21955,21979,21964,21968,21963,21962,21981,[21952,64013],21972,21956,21993,21951,21970,21901,21967,21973,21986,21974,21960,22002,21965,21977,21954,22292,22611,22632,22628,22607,22605,22601,22639,22613,22606,22621,22617,22629,22619,22589,22627,22641,22780,23239,23236,
-23243,23226,23224,23217,23221,23216,23231,23240,23227,23238,23223,23232,23242,23220,23222,23245,23225,23184,23510,{f:2,c:23512},23583,23603,23921,23907,23882,23909,23922,23916,23902,23912,23911,23906,24048,24143,24142,24138,24141,24139,24261,24268,24262,24267,24263,24384,24495,24493,24823,{f:2,c:24905},24875,24901,24886,24882,24878,24902,24879,24911,24873,24896,25120,37224,25123,25125,25124,25541,25585,25579,25616,25618,25609,25632,25636,25651,25667,25631,25621,25624,25657,25655,{f:2,c:25634},25612,
-25638,25648,25640,25665,25653,25647,25610,25626,25664,25637,25639,25611,25575,25627,25646,25633,25614,25967,26002,26067,26246,26252,26261,26256,26251,26250,26265,26260,26232,26400,26982,26975,26936,26958,26978,26993,26943,26949,26986,26937,26946,26967,26969,27002,{f:2,c:26952},26933,26988,26931,26941,26981,26864,27E3,26932,26985,26944,26991,26948,26998,26968,26945,26996,26956,26939,26955,26935,26972,26959,26961,26930,26962,26927,27003,26940,27462,27461,27459,27458,27464,27457,27547,{f:2,c:27643},
-27641,{f:2,c:27639},28315,28374,28360,28303,28352,28319,{f:2,c:28307},28320,28337,28345,28358,28370,28349,28353,28318,28361,28343,28336,28365,28326,28367,28338,28350,28355,28380,28376,28313,28306,28302,28301,28324,28321,28351,28339,28368,28362,28311,28334,28323,28999,29012,29010,29027,29024,28993,29021,[29026,61080],29042,29048,29034,29025,28994,29016,28995,29003,29040,29023,29008,29011,28996,29005,29018,29263,29325,29324,29329,29328,29326,29500,29506,29499,29498,29504,29514,29513,29764,{f:2,c:29770},
-29778,29777,29783,29760,{f:2,c:29775},29774,29762,29766,29773,29780,29921,29951,29950,29949,29981,30073,30071,27011,30191,30223,30211,30199,30206,30204,[30201,60782],30200,30224,30203,30198,30189,30197,30205,30361,30389,30429,30549,{f:2,c:30559},30546,30550,30554,30569,30567,30548,30553,30573,30688,30855,30874,30868,30863,30852,30869,{f:2,c:30853},30881,30851,30841,30873,30848,30870,30843,31100,31106,31101,31097,31249,{f:2,c:31256},31250,31255,31253,31266,31251,31259,31248,31395,31394,31390,31467,
-31590,31588,31597,31604,31593,31602,31589,31603,31601,31600,31585,31608,31606,31587,31922,31924,31919,32136,32134,32128,32141,32127,32133,32122,32142,32123,32131,32124,32140,32148,32132,32125,32146,32621,32619,{f:2,c:32615},32620,32678,32677,32679,{f:2,c:32731},32801,33124,33120,33143,33116,33129,33115,33122,33138,26401,33118,33142,33127,33135,33092,33121,33309,33353,33348,33344,33346,33349,34033,33855,33878,33910,33913,33935,33933,33893,33873,33856,33926,33895,33840,33869,33917,33882,33881,33908,
-33907,33885,34055,33886,33847,33850,33844,33914,33859,33912,33842,33861,33833,33753,33867,33839,33858,33837,33887,33904,33849,33870,33868,33874,33903,33989,33934,33851,33863,33846,33843,33896,33918,33860,33835,33888,33876,33902,33872,34571,34564,34551,34572,34554,34518,34549,34637,34552,34574,34569,34561,34550,34573,34565,35030,35019,{f:2,c:35021},35038,35035,35034,35020,35024,35205,35227,35295,35301,35300,35297,35296,35298,35292,35302,35446,35462,35455,35425,35391,35447,35458,35460,35445,35459,35457,
-35444,35450,35900,35915,35914,35941,35940,35942,35974,{f:2,c:35972},36044,{f:2,c:36200},36241,36236,{f:2,c:36238},36237,{f:2,c:36243},36240,36242,36336,36320,36332,36337,36334,36304,36329,36323,36322,36327,36338,36331,36340,36614,36607,36609,36608,36613,{f:2,c:36615},36610,[36619,60507],36946,36927,36932,36937,36925,37136,37133,37135,37137,37142,37140,37131,37134,{f:2,c:37230},37448,37458,37424,37434,37478,37427,37477,37470,37507,37422,37450,37446,37485,37484,37455,37472,37479,37487,37430,37473,37488,
-37425,37460,37475,37456,37490,37454,37459,37452,37462,37426,38303,38300,38302,38299,{f:2,c:38546},38545,38551,38606,38650,38653,38648,38645,38771,{f:2,c:38775},38770,38927,{f:2,c:38925},39084,39158,39161,39343,39346,39344,39349,39597,39595,39771,40170,40173,40167,40576,[12236,40701],20710,20692,20695,20712,20723,20699,20714,20701,20708,20691,20716,20720,20719,20707,20704,20952,{f:2,c:21120},21225,21227,21296,21420,22055,22037,22028,22034,22012,22031,22044,22017,22035,22018,22010,22045,22020,22015,
-22009,22665,22652,22672,22680,22662,22657,22655,22644,22667,22650,22663,22673,22670,22646,22658,22664,22651,22676,22671,22782,22891,23260,23278,23269,23253,23274,23258,23277,23275,23283,23266,23264,23259,23276,23262,23261,23257,23272,23263,23415,23520,23523,23651,23938,23936,23933,23942,23930,23937,23927,23946,23945,23944,23934,23932,23949,23929,23935,{f:2,c:24152},24147,24280,24273,24279,24270,24284,24277,24281,24274,24276,24388,24387,24431,24502,24876,24872,24897,24926,24945,24947,{f:2,c:24914},
-24946,24940,24960,24948,24916,24954,24923,24933,24891,24938,24929,24918,25129,25127,25131,25643,25677,25691,25693,25716,25718,{f:2,c:25714},25725,25717,25702,25766,25678,25730,25694,25692,25675,25683,25696,25680,25727,25663,25708,25707,25689,25701,25719,25971,26016,26273,26272,26271,26373,26372,26402,27057,27062,27081,27040,27086,27030,27056,27052,27068,27025,27033,27022,27047,27021,27049,27070,27055,27071,27076,27069,27044,27092,27065,27082,27034,27087,27059,27027,27050,27041,27038,27097,27031,27024,
-27074,27061,27045,27078,27466,27469,27467,{f:3,c:27550},{f:2,c:27587},27646,28366,28405,28401,28419,28453,28408,28471,28411,28462,28425,28494,{f:2,c:28441},28455,28440,28475,28434,28397,28426,28470,28531,28409,28398,28461,28480,28464,28476,28469,28395,28423,28430,28483,28421,28413,28406,28473,28444,28412,28474,28447,28429,28446,28424,28449,29063,29072,29065,29056,29061,29058,29071,29051,29062,29057,29079,29252,29267,29335,29333,29331,29507,29517,29521,29516,29794,29811,29809,29813,29810,29799,29806,
-29952,{f:2,c:29954},30077,30096,30230,30216,30220,30229,30225,30218,30228,30392,30593,30588,30597,30594,30574,30592,30575,30590,30595,30898,30890,30900,30893,30888,30846,30891,30878,30885,30880,30892,30882,30884,31128,{f:2,c:31114},31126,31125,31124,31123,31127,31112,31122,31120,31275,31306,31280,31279,31272,31270,31400,{f:2,c:31403},31470,31624,31644,31626,31633,31632,31638,31629,31628,31643,31630,31621,31640,21124,31641,31652,31618,31931,31935,31932,31930,32167,32183,32194,32163,32170,32193,32192,
-32197,32157,32206,32196,32198,{f:2,c:32203},32175,32185,32150,32188,32159,32166,32174,32169,32161,32201,32627,{f:2,c:32738},32741,32734,32804,32861,32860,33161,33158,33155,33159,33165,33164,33163,33301,33943,33956,33953,33951,33978,33998,33986,33964,33966,33963,33977,33972,33985,33997,33962,33946,33969,34E3,33949,33959,33979,33954,33940,33991,33996,33947,33961,33967,[33960,58327],34006,33944,33974,33999,33952,34007,34004,34002,34011,33968,33937,34401,34611,34595,34600,34667,34624,34606,34590,34593,
-34585,34587,34627,34604,34625,34622,34630,34592,34610,34602,34605,34620,34578,34618,34609,34613,34626,{f:2,c:34598},34616,34596,34586,34608,34577,35063,35047,{f:2,c:35057},35066,35070,35054,35068,35062,35067,35056,35052,35051,35229,35233,35231,35230,35305,35307,35304,35499,35481,35467,35474,35471,35478,35901,{f:2,c:35944},36053,36047,36055,36246,36361,36354,36351,36365,36349,36362,36355,36359,36358,36357,36350,36352,36356,{f:2,c:36624},36622,36621,37155,37148,37152,37154,37151,37149,37146,37156,37153,
-37147,37242,37234,37241,37235,37541,37540,37494,37531,37498,37536,37524,37546,37517,37542,37530,37547,37497,37527,37503,37539,37614,37518,37506,37525,37538,37501,37512,37537,37514,37510,37516,37529,37543,37502,37511,37545,37533,37515,37421,38558,38561,38655,38744,38781,38778,38782,38787,38784,38786,38779,38788,38785,38783,38862,38861,38934,{f:2,c:39085},39170,39168,39175,39325,39324,39363,39353,39355,39354,39362,39357,39367,39601,39651,39655,{f:2,c:39742},{f:2,c:39776},39775,{f:2,c:40177},40181,40615,
-20735,20739,20784,20728,{f:2,c:20742},20726,20734,{f:2,c:20747},20733,20746,{f:2,c:21131},21233,21231,22088,22082,22092,22069,22081,22090,22089,22086,22104,22106,22080,22067,22077,22060,22078,22072,22058,22074,22298,22699,22685,22705,22688,22691,22703,22700,22693,22689,22783,23295,23284,23293,23287,23286,23299,23288,23298,23289,23297,23303,23301,23311,23655,23961,23959,23967,23954,23970,23955,23957,23968,23964,23969,23962,23966,24169,24157,24160,24156,32243,24283,24286,24289,24393,24498,24971,24963,
-24953,25009,25008,24994,24969,24987,24979,25007,25005,24991,24978,25002,24993,24973,24934,25011,25133,25710,25712,25750,25760,25733,25751,25756,25743,25739,25738,25740,25763,25759,25704,25777,25752,25974,25978,25977,25979,{f:2,c:26034},26293,26288,26281,26290,26295,26282,26287,27136,27142,27159,27109,27128,27157,27121,27108,27168,27135,27116,27106,27163,27165,27134,27175,27122,27118,27156,27127,27111,27200,27144,27110,27131,27149,27132,27115,27145,27140,27160,27173,27151,27126,27174,27143,27124,27158,
-27473,27557,27555,27554,27558,27649,27648,27647,27650,28481,28454,28542,28551,28614,28562,28557,28553,28556,28514,28495,28549,28506,28566,28534,28524,28546,28501,28530,28498,28496,28503,28564,28563,28509,28416,28513,28523,28541,28519,28560,28499,28555,28521,28543,28565,28515,28535,28522,28539,29106,29103,29083,29104,29088,29082,29097,29109,29085,29093,29086,29092,29089,29098,29084,29095,29107,29336,29338,29528,29522,{f:3,c:29534},29533,29531,29537,29530,29529,29538,29831,{f:2,c:29833},29830,29825,
-29821,29829,29832,29820,[29817,58868],29960,29959,30078,30245,30238,30233,30237,30236,30243,30234,30248,30235,{f:3,c:30364},30363,30605,30607,30601,30600,30925,30907,30927,30924,30929,30926,30932,30920,{f:2,c:30915},30921,31130,31137,31136,31132,31138,[31131,59175],27510,31289,31410,31412,31411,31671,31691,31678,31660,31694,31663,31673,31690,31669,31941,31944,31948,31947,32247,32219,32234,32231,32215,32225,32259,32250,32230,32246,32241,32240,32238,32223,32630,32684,32688,32685,32749,32747,32746,32748,
-32742,32744,32868,32871,33187,33183,33182,33173,33186,33177,33175,33302,33359,33363,33362,33360,33358,33361,34084,34107,34063,34048,34089,34062,34057,34061,34079,34058,34087,34076,34043,34091,34042,34056,34060,34036,34090,34034,34069,34039,34027,34035,34044,34066,34026,34025,34070,34046,34088,34077,34094,34050,34045,34078,34038,34097,34086,{f:2,c:34023},34032,34031,34041,34072,34080,34096,34059,34073,34095,34402,34646,{f:2,c:34659},34679,34785,34675,34648,34644,34651,34642,34657,34650,34641,34654,
-34669,34666,34640,34638,34655,34653,34671,34668,34682,34670,34652,34661,34639,34683,34677,34658,34663,34665,34906,35077,35084,35092,35083,{f:3,c:35095},35078,35094,35089,35086,35081,35234,35236,35235,35309,35312,35308,35535,35526,35512,35539,35537,{f:2,c:35540},35515,35543,35518,35520,35525,35544,35523,35514,35517,35545,35902,35917,35983,36069,36063,36057,36072,36058,36061,36071,36256,36252,36257,36251,36384,36387,36389,36388,36398,36373,36379,36374,36369,36377,{f:2,c:36390},36372,36370,36376,36371,
-36380,36375,36378,36652,36644,36632,36634,36640,36643,{f:2,c:36630},36979,36976,36975,36967,36971,37167,37163,{f:2,c:37161},37170,37158,37166,{f:2,c:37253},37258,{f:2,c:37249},37252,37248,37584,{f:2,c:37571},37568,37593,37558,37583,37617,37599,37592,37609,37591,37597,37580,37615,37570,37608,37578,37576,37582,37606,37581,37589,37577,37600,37598,37607,37585,37587,37557,37601,37669,37574,37556,38268,38316,38315,38318,38320,38564,38562,38611,38661,38664,38658,38746,38794,38798,38792,38864,38863,38942,
-38941,38950,38953,38952,38944,38939,38951,39090,39176,39162,39185,39188,{f:2,c:39190},39189,39388,39373,39375,{f:2,c:39379},39374,39369,[39382,60270],39384,39371,39383,39372,39603,39660,39659,39667,39666,39665,39750,39747,39783,39796,39793,39782,39798,39797,39792,39784,39780,39788,40188,40186,40189,40191,40183,40199,40192,40185,40187,40200,40197,40196,40579,40659,{f:2,c:40719},20764,20755,20759,20762,20753,20958,21300,21473,22128,22112,22126,22131,22118,22115,22125,22130,22110,22135,22300,22299,22728,
-22717,22729,22719,22714,22722,22716,22726,23319,23321,23323,23329,23316,23315,23312,23318,[23336,59539],23322,23328,23326,23535,23980,23985,23977,23975,23989,23984,23982,23978,23976,23986,23981,23983,23988,{f:2,c:24167},24166,24175,24297,24295,24294,24296,24293,24395,24508,24507,24989,25E3,24982,25029,25012,25030,25025,25036,25018,25023,25016,24972,25815,25814,25808,25807,25801,25789,25737,25795,25819,25843,25817,25907,25983,25980,26018,26312,26302,26304,{f:2,c:26314},26319,26301,26299,26298,26316,
-26403,27188,27238,27209,27239,27186,27240,27198,27229,27245,27254,27227,27217,27176,27226,27195,27199,27201,27242,27236,27216,27215,27220,27247,27241,27232,27196,27230,27222,27221,{f:2,c:27213},27206,27477,27476,27478,27559,{f:2,c:27562},27592,27591,27652,27651,27654,28589,28619,28579,28615,28604,28622,28616,28510,28612,28605,28574,28618,28584,28676,28581,28590,28602,28588,28586,28623,28607,28600,28578,28617,28587,28621,28591,28594,28592,29125,29122,29119,29112,29142,{f:2,c:29120},29131,29140,29130,
-29127,29135,29117,29144,29116,29126,{f:2,c:29146},{f:2,c:29341},29545,{f:2,c:29542},29548,29541,29547,29546,29823,29850,29856,29844,29842,29845,29857,29963,30080,30255,30253,30257,30269,30259,30268,30261,30258,30256,30395,30438,30618,30621,30625,30620,30619,{f:2,c:30626},30613,30617,30615,30941,30953,30949,30954,30942,30947,30939,{f:2,c:30945},30957,{f:2,c:30943},31140,31300,31304,31303,31414,31416,31413,31409,31415,31710,31715,31719,31709,31701,31717,31706,31720,31737,31700,31722,31714,31708,31723,
-31704,31711,31954,31956,31959,{f:2,c:31952},32274,32289,32279,32268,{f:2,c:32287},32275,32270,32284,32277,32282,32290,32267,32271,32278,32269,32276,32293,32292,32579,{f:2,c:32635},32634,32689,32751,32810,32809,32876,33201,33190,33198,33209,33205,33195,33200,33196,33204,33202,33207,33191,33266,{f:3,c:33365},34134,34117,34155,34125,34131,34145,34136,34112,34118,34148,34113,34146,34116,34129,34119,34147,34110,34139,34161,34126,34158,34165,34133,34151,34144,34188,34150,34141,34132,34149,34156,34403,34405,
-34404,34724,34715,34703,34711,34707,34706,34696,34689,34710,34712,34681,34695,34723,34693,{f:2,c:34704},34717,34692,34708,34716,34714,34697,35102,35110,35120,{f:2,c:35117},35111,35121,35106,35113,35107,35119,35116,35103,35313,35552,35554,35570,{f:2,c:35572},35549,35604,35556,35551,35568,35528,35550,35553,35560,35583,35567,35579,{f:2,c:35985},35984,36085,36078,36081,36080,36083,36204,36206,36261,36263,36403,36414,36408,36416,36421,36406,{f:2,c:36412},36417,36400,36415,36541,[36662,60329],36654,36661,
-36658,36665,36663,36660,36982,36985,36987,36998,37114,37171,{f:2,c:37173},37267,{f:2,c:37264},37261,37263,37671,37662,37640,37663,37638,37647,37754,37688,37692,37659,37667,37650,37633,37702,37677,37646,37645,37579,37661,37626,37651,37625,37623,37684,37634,37668,37631,37673,37689,37685,37674,37652,37644,37643,37630,37641,37632,37627,37654,38332,38349,38334,{f:2,c:38329},38326,38335,38325,38333,38569,38612,38667,38674,38672,38809,38807,38804,38896,38904,38965,38959,38962,39204,39199,39207,39209,39326,
-39406,39404,39397,39396,39408,39395,39402,39401,39399,39609,39615,39604,39611,39670,39674,39673,39671,39731,39808,39813,39815,39804,39806,39803,39810,39827,39826,39824,39802,39829,39805,39816,40229,40215,40224,40222,40212,40233,40221,40216,40226,40208,40217,40223,40584,{f:2,c:40582},40622,40621,{f:2,c:40661},40698,40722,40765,20774,20773,20770,20772,20768,20777,21236,22163,{f:2,c:22156},22150,22148,22147,22142,22146,22143,22145,22742,22740,22735,22738,23341,23333,23346,23331,23340,23335,23334,23343,
-23342,23419,{f:2,c:23537},23991,24172,24170,24510,25027,25013,25020,25063,25056,25061,25060,25064,25054,25839,25833,25827,25835,25828,25832,25985,25984,26038,26074,26322,27277,27286,27265,27301,27273,27295,27291,27297,27294,27271,27283,27278,27285,27267,27304,27300,27281,27263,27302,27290,27269,27276,27282,27483,27565,27657,28620,28585,28660,28628,28643,28636,28653,28647,28646,28638,28658,28637,28642,28648,29153,29169,29160,29170,29156,29168,29154,29555,{f:2,c:29550},29847,29874,29867,29840,29866,
-29869,29873,29861,29871,{f:3,c:29968},29967,30084,30275,{f:2,c:30280},30279,30372,30441,30645,30635,30642,30647,30646,30644,30641,30632,30704,30963,30973,30978,{f:2,c:30971},30975,30962,30981,30969,30974,30980,31147,31144,31324,31323,31318,31320,31316,31322,31422,{f:2,c:31424},31749,31759,31730,31744,31743,31739,31758,31732,31755,31731,31746,31753,31747,31745,31736,31741,[31750,58176],{f:2,c:31728},31760,31754,31976,32301,32316,32322,32307,38984,32312,32298,32329,32320,32327,32297,32332,32304,32315,
-32310,32324,32314,32581,32639,32638,32637,32756,32754,32812,33211,33220,33228,33226,33221,33223,33212,33257,33371,33370,33372,34179,34176,34191,34215,34197,34208,34187,34211,34171,34212,34202,34206,34167,34172,34185,34209,34170,34168,34135,34190,34198,34182,34189,34201,34205,34177,34210,34178,34184,34181,34169,34166,34200,34192,34207,34408,34750,34730,34733,34757,34736,34732,34745,34741,34748,34734,34761,34755,34754,34764,34743,34735,34756,34762,34740,34742,34751,34744,34749,34782,34738,35125,35123,
-35132,35134,35137,35154,35127,35138,35245,35247,35246,{f:2,c:35314},35614,35608,35606,35601,35589,35595,35618,35599,35602,35605,35591,35597,35592,35590,35612,35603,35610,35919,35952,35954,35953,35951,35989,35988,36089,36207,36430,36429,36435,36432,36428,36423,36675,36672,36997,36990,37176,37274,37282,37275,37273,37279,37281,37277,37280,37793,37763,37807,37732,37718,37703,37756,37720,37724,37750,37705,{f:2,c:37712},37728,37741,37775,37708,37738,37753,37719,37717,37714,37711,37745,37751,37755,37729,
-37726,37731,37735,37710,37721,38343,38336,38345,38339,38341,38327,38574,38576,38572,38688,38687,38680,38685,38681,38810,38817,38812,38814,38813,38869,38868,38897,38977,38980,38986,38985,38981,38979,39205,{f:2,c:39211},39210,39219,39218,39215,39213,39217,39216,39320,39331,39329,39426,39418,39412,39415,39417,39416,39414,39419,{f:2,c:39421},39420,39427,39614,39678,39677,39681,39676,39752,39834,39848,39838,39835,39846,39841,39845,39844,39814,39842,39840,39855,40243,40257,40295,40246,{f:2,c:40238},40241,
-40248,40240,40261,{f:2,c:40258},40254,40247,40256,40253,32757,40237,40586,40585,40589,40624,40648,40666,40699,40703,40740,40739,40738,40788,[12245,40864],20785,{f:2,c:20781},22168,22172,22167,22170,22173,22169,22896,23356,{f:2,c:23657},24E3,{f:2,c:24173},25048,25055,{f:2,c:25069},25073,25066,25072,25067,25046,25065,25855,25860,25853,25848,25857,25859,25852,26004,26075,{f:2,c:26330},26328,27333,27321,27325,27361,27334,27322,{f:2,c:27318},27335,27316,27309,27486,27593,27659,28679,{f:2,c:28684},28673,
-28677,28692,28686,{f:2,c:28671},28667,28710,28668,28663,28682,[29185,60224],29183,29177,29187,29181,29558,29880,29888,29877,29889,29886,29878,29883,29890,29972,29971,30300,30308,30297,30288,30291,30295,30298,30374,30397,30444,30658,30650,30988,{f:2,c:30995},30985,30992,30994,30993,31149,31148,31327,31772,31785,31769,31776,31775,31789,31773,31782,31784,31778,31781,31792,32348,32336,32342,32355,32344,32354,32351,32337,32352,32343,32339,32693,32691,{f:2,c:32759},32885,{f:2,c:33233},33232,33375,33374,
-34228,34246,34240,34243,34242,34227,34229,34237,34247,34244,34239,34251,34254,34248,34245,34225,34230,34258,34340,34232,34231,34238,34409,34791,34790,34786,34779,34795,34794,34789,34783,34803,34788,34772,34780,34771,34797,34776,34787,34775,34777,34817,34804,34792,34781,35155,35147,35151,35148,35142,{f:2,c:35152},35145,35626,35623,35619,35635,35632,35637,35655,35631,35644,35646,35633,35621,35639,35622,35638,35630,35620,35643,35645,35642,35906,35957,35993,35992,35991,36094,36100,36098,36096,36444,36450,
-36448,36439,36438,36446,36453,36455,36443,36442,36449,36445,36457,36436,{f:3,c:36678},36683,37160,{f:2,c:37178},37182,37288,37285,37287,37295,37290,37813,37772,37778,37815,37787,37789,37769,37799,37774,37802,37790,37798,37781,37768,37785,37791,37760,37773,37809,37777,37810,37796,37800,37812,37795,{f:2,c:38354},38353,38579,38615,38618,24002,38623,38616,38621,38691,38690,38693,38828,38830,38824,38827,38820,38826,38818,38821,38871,38873,38870,38872,38906,{f:3,c:38992},39096,39233,39228,39226,39439,39435,
-39433,39437,39428,39441,39434,39429,39431,39430,39616,39644,39688,{f:2,c:39684},39721,39733,39754,39756,39755,39879,39878,39875,39871,39873,39861,39864,39891,39862,39876,39865,39869,40284,40275,40271,40266,40283,40267,40281,40278,40268,40279,40274,40276,40287,40280,40282,40590,40588,40671,40705,40704,[40726,58693],40741,40747,40746,40745,40744,40780,40789,{f:2,c:20788},21142,21239,21428,22187,22189,{f:2,c:22182},22186,22188,22746,22749,22747,22802,{f:3,c:23357},24003,24176,24511,25083,25863,25872,
-25869,25865,25868,25870,25988,26078,26077,26334,27367,27360,27340,27345,27353,27339,27359,27356,27344,27371,27343,27341,27358,27488,27568,27660,28697,28711,28704,28694,28715,{f:3,c:28705},28713,28695,28708,28700,29196,29194,29191,29186,29189,{f:2,c:29349},29348,29347,29345,29899,29893,29879,29891,29974,30304,{f:2,c:30665},30660,30705,31005,31003,31009,31004,30999,31006,31152,{f:2,c:31335},31795,31804,31801,31788,31803,31980,31978,32374,32373,32376,32368,32375,32367,32378,32370,32372,32360,32587,32586,
-32643,32646,32695,{f:2,c:32765},32888,33239,33237,33291,33380,33377,33379,34283,34289,34285,34265,34273,34280,34266,34263,34284,34290,34296,34264,34271,34275,34268,34257,34288,34278,34287,34270,34274,34816,34810,34819,{f:2,c:34806},34825,34828,34827,34822,34812,34824,34815,34826,34818,35170,{f:2,c:35162},35159,35169,35164,35160,35165,35161,35208,35255,35254,35318,35664,35656,35658,35648,35667,35670,35668,35659,35669,35665,35650,35666,35671,35907,35959,35958,35994,{f:2,c:36102},36105,36268,36266,36269,
-36267,36461,36472,36467,36458,36463,36475,36546,36690,36689,{f:2,c:36687},36691,36788,37184,37183,37296,37293,37854,37831,37839,37826,37850,37840,37881,37868,37836,37849,37801,37862,37834,37844,37870,37859,37845,37828,37838,37824,37842,37797,37863,38269,{f:2,c:38362},38625,38697,{f:2,c:38699},38696,38694,38835,38839,38838,{f:3,c:38877},39004,39001,39005,38999,39103,39101,39099,39102,39240,39239,39235,{f:2,c:39334},39450,39445,39461,39453,39460,39451,39458,39456,39463,39459,39454,39452,39444,39618,
-39691,39690,39694,39692,39735,{f:2,c:39914},39904,39902,39908,39910,39906,39920,39892,39895,39916,39900,39897,39909,39893,39905,39898,40311,40321,40330,40324,40328,40305,40320,40312,40326,{f:2,c:40331},40317,40299,{f:2,c:40308},40304,40297,40325,40307,40315,40322,40303,40313,40319,40327,40296,40596,40593,40640,40700,40749,{f:2,c:40768},40781,{f:3,c:40790},21303,22194,22197,22195,22755,23365,{f:2,c:24006},{f:2,c:24302},{f:2,c:24512},25081,25879,25878,25877,25875,26079,26344,{f:2,c:26339},27379,27376,
-27370,27368,27385,27377,{f:2,c:27374},28732,28725,28719,28727,28724,28721,28738,28728,28735,28730,28729,28714,28736,28731,28723,28737,{f:2,c:29203},29352,29565,29564,29882,30379,30378,30398,30445,30668,{f:2,c:30670},30669,30706,31013,31011,{f:2,c:31015},31012,31017,31154,31342,{f:2,c:31340},31479,31817,31816,31818,31815,31813,31982,32379,32382,32385,32384,32698,32767,32889,33243,33241,{f:2,c:33384},34338,34303,34305,34302,34331,34304,34294,34308,34313,34309,34316,34301,34841,{f:2,c:34832},34839,34835,
-34838,35171,35174,35257,35319,35680,35690,35677,35688,35683,35685,35687,35693,36270,36486,36488,36484,36697,{f:2,c:36694},36693,36696,36698,37005,37187,37185,37303,37301,{f:2,c:37298},37899,37907,37883,37920,37903,37908,37886,37909,37904,37928,37913,37901,37877,37888,37879,37895,37902,37910,37906,37882,37897,37880,37948,37898,37887,37884,37900,37878,37905,37894,38366,38368,38367,{f:2,c:38702},38841,38843,{f:2,c:38909},39008,{f:2,c:39010},39007,{f:2,c:39105},39248,39246,39257,39244,39243,39251,39474,
-39476,39473,39468,39466,39478,39465,39470,39480,39469,39623,39626,39622,39696,39698,39697,39947,39944,39927,39941,39954,39928,4E4,39943,39950,39942,39959,39956,39945,40351,40345,40356,40349,40338,40344,40336,40347,40352,40340,40348,40362,40343,40353,40346,40354,40360,40350,40355,40383,40361,40342,{f:2,c:40358},40601,40603,40602,40677,40676,40679,40678,40752,40750,40795,40800,40798,40797,40793,40849,20794,20793,21144,21143,22211,{f:2,c:22205},23368,23367,24011,24015,24305,25085,25883,27394,27388,27395,
-27384,27392,{f:2,c:28739},28746,{f:2,c:28744},{f:2,c:28741},29213,29210,29209,29566,29975,30314,30672,31021,31025,31023,31828,31827,31986,32394,[32391,60229],32392,32395,32390,32397,32589,32699,32816,33245,34328,34346,34342,34335,34339,34332,34329,34343,34350,34337,34336,34345,34334,34341,34857,34845,34843,34848,34852,34844,34859,34890,35181,35177,35182,35179,35322,35705,35704,35653,{f:2,c:35706},36112,36116,36271,36494,36492,36702,36699,36701,37190,{f:2,c:37188},37305,37951,37947,37942,37929,37949,
-37936,37945,37930,37943,37932,37952,37937,38373,38372,38371,38709,38714,38847,38881,39012,39113,39110,39104,39256,39254,39481,39485,39494,39492,39490,39489,39482,39487,39629,39701,{f:2,c:39703},39702,39738,39762,39979,39965,39964,39980,39971,{f:2,c:39976},39972,39969,40375,40374,40380,40385,40391,40394,40399,40382,40389,40387,40379,40373,40398,{f:2,c:40377},40364,40392,40369,40365,40396,40371,40397,40370,40570,40604,40683,40686,40685,40731,40728,40730,40753,40782,40805,40804,40850,20153,22214,22213,
-22219,22897,{f:2,c:23371},24021,24017,24306,25889,25888,25894,25890,27403,{f:2,c:27400},27661,{f:3,c:28757},28754,{f:2,c:29214},29353,29567,29912,29909,29913,29911,30317,30381,31029,31156,{f:2,c:31344},31831,31836,31833,31835,31834,31988,31985,32401,32591,32647,33246,33387,{f:2,c:34356},34355,34348,34354,34358,34860,34856,34854,34858,34853,35185,35263,35262,35323,35710,35716,35714,35718,35717,35711,36117,36501,36500,36506,36498,36496,{f:2,c:36502},36704,36706,37191,37964,37968,{f:2,c:37962},37967,
-37959,37957,{f:2,c:37960},37958,38719,38883,39018,39017,39115,39252,39259,39502,{f:2,c:39507},39500,39503,39496,39498,39497,39506,39504,39632,39705,39723,39739,39766,39765,40006,40008,39999,40004,39993,39987,40001,39996,39991,39988,39986,39997,39990,40411,40402,40414,40410,40395,40400,40412,40401,40415,40425,40409,40408,40406,40437,40405,40413,40630,40688,40757,40755,40754,40770,40811,40853,40866,20797,21145,22760,22759,22898,23373,24024,34863,24399,25089,{f:2,c:25091},25897,25893,26006,26347,{f:2,
-c:27409},27407,27594,28763,28762,29218,29570,29569,29571,30320,30676,31847,31846,32405,33388,34362,34368,34361,34364,34353,34363,34366,34864,34866,34862,34867,35190,35188,35187,35326,35724,35726,35723,35720,35909,36121,36504,36708,36707,37308,37986,37973,37981,37975,37982,{f:2,c:38852},38912,39510,39513,{f:3,c:39710},40018,40024,40016,40010,40013,40011,40021,40025,40012,40014,40443,40439,40431,40419,40427,40440,40420,40438,40417,40430,40422,40434,[40432,60370],40418,40428,40436,40435,40424,40429,
-40642,40656,{f:2,c:40690},40710,40732,40760,40759,40758,40771,40783,40817,40816,{f:2,c:40814},22227,22221,23374,23661,25901,{f:2,c:26349},27411,28767,28769,28765,28768,29219,29915,29925,30677,31032,31159,31158,31850,32407,32649,33389,34371,34872,34871,34869,34891,{f:2,c:35732},{f:3,c:36510},36509,37310,37309,37314,37995,{f:2,c:37992},38629,38726,38723,38727,38855,38885,39518,39637,39769,40035,40039,40038,40034,40030,40032,40450,40446,40455,40451,40454,40453,{f:2,c:40448},40457,40447,40445,40452,40608,
-40734,40774,{f:3,c:40820},22228,25902,26040,{f:2,c:27416},27415,27418,28770,29222,29354,{f:2,c:30680},31033,31849,31851,31990,32410,32408,32411,32409,{f:2,c:33248},{f:3,c:34374},{f:2,c:35193},35196,35195,35327,{f:2,c:35736},36517,36516,36515,37998,37997,37999,38001,38003,38729,39026,39263,40040,40046,40045,40459,40461,40464,40463,40466,40465,40609,40693,40713,40775,40824,40827,40826,40825,22302,28774,31855,34876,36274,36518,37315,38004,38008,38006,38005,39520,[39726,60830],40052,40051,40049,40053,
-40468,40467,40694,40714,40868,28776,28773,31991,34410,34878,34877,34879,35742,35996,36521,36553,38731,{f:2,c:39027},39116,39265,39339,39524,{f:2,c:39526},39716,40469,40471,40776,25095,27422,29223,34380,36520,38018,{f:2,c:38016},39529,39528,40473,34379,35743,38019,40057,40631,30325,39531,40058,40477,{f:2,c:28777},29225,40612,40830,40777,40856,{s:97},65075,0,65076,65103,[168,776,63208],[710,63209,65342],[12541,63210],[12542,63211],[12445,63212],[12446,63213],0,[12293,63216],[12294,63217],[12295,63218],
-[12540,63219],[63220,65339],[63221,65341],[10045,63222],[12353,63223],[12354,63224],[12355,63225],[12356,63226],[12357,63227],[12358,63228],[12359,63229],[12360,63230],[12361,63231],[12362,63232],[12363,63233],[12364,63234],[12365,63235],[12366,63236],[12367,63237],[12368,63238],[12369,63239],[12370,63240],[12371,63241],[12372,63242],[12373,63243],[12374,63244],[12375,63245],[12376,63246],[12377,63247],[12378,63248],[12379,63249],[12380,63250],[12381,63251],[12382,63252],[12383,63253],[12384,63254],
-[12385,63255],[12386,63256],[12387,63257],[12388,63258],[12389,63259],[12390,63260],[12391,63261],[12392,63262],[12393,63263],[12394,63264],[12395,63265],[12396,63266],[12397,63267],[12398,63268],[12399,63269],[12400,63270],[12401,63271],[12402,63272],[12403,63273],[12404,63274],[12405,63275],[12406,63276],[12407,63277],[12408,63278],[12409,63279],[12410,63280],[12411,63281],[12412,63282],[12413,63283],[12414,63284],[12415,63285],[12416,63286],[12417,63287],[12418,63288],[12419,63289],[12420,63290],
-[12421,63291],[12422,63292],[12423,63293],[12424,63294],[12425,63295],[12426,63296],[12427,63297],[12428,63298],[12429,63299],[12430,63300],[12431,63301],[12432,63302],[12433,63303],[12434,63304],[12435,63305],[12449,63306],[12450,63307],[12451,63308],[12452,63309],[12453,63310],[12454,63311],[12455,63312],[12456,63313],[12457,63314],[12458,63315],[12459,63316],[12460,63317],[12461,63318],[12462,63319],[12463,63320],[12464,63321],[12465,63322],[12466,63323],[12467,63324],[12468,63325],[12469,63326],
-[12470,63327],[12471,63328],[12472,63329],[12473,63330],[12474,63331],[12475,63332],[12476,63333],[12477,63334],[12478,63335],[12479,63336],[12480,63337],[12481,63338],[12482,63339],[12483,63340],[12484,63341],[12485,63342],[12486,63343],[12487,63344],[12488,63345],[12489,63346],[12490,63347],[12491,63348],[12492,63349],[12493,63350],[12494,63351],[12495,63352],[12496,63353],[12497,63354],[12498,63355],[12499,63356],[12500,63357],[12501,63358],[12502,63359],[12503,63360],[12504,63361],[12505,63362],
-[12506,63363],[12507,63364],[12508,63365],[12509,63366],[12510,63367],[12511,63368],[12512,63369],[12513,63370],[12514,63371],[12515,63372],[12516,63373],[12517,63374],[12518,63375],[12519,63376],[12520,63377],[12521,63378],[12522,63379],[12523,63380],[12524,63381],[12525,63382],[12526,63383],[12527,63384],[12528,63385],[12529,63386],[12530,63387],[12531,63388],[12532,63389],[12533,63390],[12534,63391],[1040,63392],[1041,63393],[1042,63394],[1043,63395],[1044,63396],[1045,63397],[1025,63398],[1046,
-63399],[1047,63400],[1048,63401],[1049,63402],[1050,63403],[1051,63404],[1052,63405],[1053,63406],[1054,63407],[1055,63408],[1056,63409],[1057,63410],[1058,63411],[1059,63412],[1060,63413],[1061,63414],[1062,63415],[1063,63416],[1064,63417],[1065,63418],[1066,63419],[1067,63420],[1068,63421],[1069,63422],[1070,63423],[1071,63424],[1072,63425],[1073,63426],[1074,63427],[1075,63428],[1076,63429],[1077,63430],[1105,63431],[1078,63432],[1079,63433],[1080,63434],[1081,63435],[1082,63436],[1083,63437],
-[1084,63438],[1085,63439],[1086,63440],[1087,63441],[1088,63442],[1089,63443],[1090,63444],[1091,63445],[1092,63446],[1093,63447],[1094,63448],[1095,63449],[1096,63450],[1097,63451],[1098,63452],[1099,63453],[1100,63454],[1101,63455],[1102,63456],[1103,63457],[8679,63458],[8632,63459],[8633,63460],[20033,63461],[63462,131276],[20058,63463],[63464,131210],[20994,63465],[17553,63466],63467,[20872,63468],[13853,63469],[63470,161287],{s:40},[172,63511,65506],[63512,65508],[63513,65287],[63514,65282],
-[12849,63515],[8470,63516],[8481,63517],30849,[37561,58501],35023,22715,24658,31911,23290,9556,9574,9559,9568,9580,9571,9562,9577,9565,9554,9572,9557,{s:3},9560,9575,9563,9555,9573,9558,9567,9579,9570,9561,9576,9564,9553,{s:5},9619,{s:26},[58129,147159],[22462,58130],[58131,159443],[28990,58132],[58133,153568],[27042,58135],[58136,166889],[23412,58137],[31305,58138],[58139,153825],[58140,169177],[31333,58141],[31357,58142],[58143,154028],[31419,58144],[31408,58145],[31426,58146],[31427,58147],[29137,
-58148],[58149,156813],[16842,58150],[31450,58151],[31453,58152],[31466,58153],[16879,58154],[21682,58155],[58156,154625],[31499,58157],[31573,58158],[31529,58159],[58160,152334],[58161,154878],[31650,58162],[31599,58163],[33692,58164],[58165,154548],[58166,158847],[31696,58167],[33825,58168],[31634,58169],0,[58171,154912],0,[33938,58174],[31738,58175],0,[31797,58177],[58178,154817],[31812,58179],[31875,58180],[58181,149634],[31910,58182],[58184,148856],[31945,58185],[31943,58186],[31974,58187],0,
-[31987,58189],[31989,58190],[32359,58192],[17693,58193],[58194,159300],[32093,58195],[58196,159446],[32137,58198],[32171,58199],[28981,58200],[32179,58201],32214,[58203,147543],[58204,155689],[32228,58205],[15635,58206],[32245,58207],[58208,137209],[32229,58209],[58210,164717],0,[58212,155937],[58213,155994],[32366,58214],0,[17195,58216],[37996,58217],[32295,58218],[32576,58219],[32577,58220],[32583,58221],[31030,58222],[58223,156368],[39393,58224],[32663,58225],[58226,156497],[32675,58227],[58228,
-136801],[58229,131176],[17756,58230],[58231,145254],[58233,164666],[32762,58234],[58235,156809],0,[32776,58237],[32797,58238],0,[32815,58240],[58241,172167],[58242,158915],[32827,58243],[32828,58244],[32865,58245],[58246,141076],[18825,58247],[58248,157222],[58249,146915],[58250,157416],[26405,58251],[32935,58252],[58253,166472],[33031,58254],[33050,58255],[22704,58256],[58257,141046],[27775,58258],[58259,156824],[25831,58261],[58262,136330],[33304,58263],[58264,137310],[27219,58265],[58266,150117],
-[58267,150165],[17530,58268],[33321,58269],[58271,158290],[58272,146814],[20473,58273],[58274,136445],[34018,58275],[33634,58276],0,[58278,149927],[58279,144688],[58280,137075],[58281,146936],[33450,58282],[26907,58283],[58284,194964],[16859,58285],[34123,58286],[33488,58287],[33562,58288],[58289,134678],[58290,137140],[14017,58291],[58292,143741],[58293,144730],[33403,58294],[33506,58295],[33560,58296],[58297,147083],[58298,159139],[58299,158469],[58300,158615],[58301,144846],[15807,58302],[33565,
-58303],[21996,58304],[33669,58305],[17675,58306],[58307,159141],[33708,58308],0,[33747,58310],[58312,159444],[27223,58313],[34138,58314],[13462,58315],[58316,159298],[33880,58318],[58319,154596],[33905,58320],[15827,58321],[17636,58322],[27303,58323],[33866,58324],[31064,58326],0,[58328,158614],[58329,159351],[58330,159299],[34014,58331],0,[33681,58333],[17568,58334],[33939,58335],[34020,58336],[58337,154769],[16960,58338],[58339,154816],[17731,58340],[34100,58341],[23282,58342],0,[17703,58344],[34163,
-58345],[17686,58346],[26559,58347],[34326,58348],[58349,165413],[58350,165435],[34241,58351],[58352,159880],[34306,58353],[58354,136578],[58355,159949],[58356,194994],[17770,58357],[34344,58358],[13896,58359],[58360,137378],[21495,58361],[58362,160666],[34430,58363],0,[58365,172280],[34798,58366],[58367,142375],[34737,58368],[34778,58369],[34831,58370,60990],[22113,58371],[34412,58372],[26710,58373],[17935,58374],[34885,58375],[34886,58376],[58377,161248],[58378,146873],[58379,161252],[34910,58380],
-[34972,58381],[18011,58382],[34996,58383],[34997,58384],[35013,58386],[58388,161551],[35207,58389],{s:3},[35239,58393],[35260,58394],[58395,166437],[35303,58396],[58397,162084],[58398,162493],[35484,58399],[30611,58400],[37374,58401],[35472,58402],[58403,162393],[31465,58404],[58405,162618],[18195,58407],[58408,162616],[29052,58409],[35596,58410],[35615,58411],[58412,152624],[58413,152933],[35647,58414],0,[35661,58416],[35497,58417],[58418,150138],[35728,58419],[35739,58420],[35503,58421],[58422,
-136927],[17941,58423],[34895,58424],[35995,58425],[58426,163156],[58427,163215],[58428,195028],[14117,58429],[58430,163155],[36054,58431],[58432,163224],[58433,163261],[36114,58434],[36099,58435],[58436,137488],[36059,58437],[28764,58438],[36113,58439],[16080,58441],0,[36265,58443],[58444,163842],[58445,135188],[58446,149898],[15228,58447],[58448,164284],[58449,160012],[31463,58450],[36525,58451],[36534,58452],[36547,58453],[37588,58454],[36633,58455],[36653,58456],[58457,164709],[58458,164882],[36773,
-58459],[37635,58460],[58461,172703],[58462,133712],[36787,58463],0,[58465,166366],[58466,165181],[58467,146875],[24312,58468],[58469,143970],[36857,58470],0,[58474,140069],[14720,58475],[58476,159447],[36919,58477],[58478,165180],[58479,162494],[36961,58480],[58481,165228],[58482,165387],[37032,58483],[58484,165651],[37060,58485],[58486,165606],[37038,58487],0,[37223,58489],[37289,58491],[37316,58492],[31916,58493],[58494,166195],[58495,138889],[37390,58496],[27807,58497],[37441,58498],[37474,58499],
-[58500,153017],[58502,166598],[58503,146587],[58504,166668],[58505,153051],[58506,134449],[37676,58507],[37739,58508],[58509,166625],[58510,166891],[23235,58512],[58513,166626],[58514,166629],[18789,58515],[37444,58516],[58517,166892],[58518,166969],[58519,166911],[37747,58520],[37979,58521],[36540,58522],[38277,58523],[38310,58524],[37926,58525],[38304,58526],[28662,58527],[17081,58528],[58530,165592],[58531,135804],[58532,146990],[18911,58533],[27676,58534],[38523,58535],[38550,58536],[16748,58537],
-[38563,58538],[58539,159445],[25050,58540],58541,[30965,58542],[58543,166624],[38589,58544],[21452,58545],[18849,58546],[58547,158904],[58548,131700],[58549,156688],[58550,168111],[58551,168165],[58552,150225],[58553,137493],[58554,144138],[38705,58555],[34370,58556],[38710,58557],[18959,58558],[17725,58559],[17797,58560],[58561,150249],[28789,58562],[23361,58563],[38683,58564],0,[58566,168405],[38743,58567],[23370,58568],[58569,168427],[38751,58570],[37925,58571],[20688,58572],[58573,143543],[58574,
-143548],[38793,58575],[38815,58576],[38833,58577],[38846,58578],[38848,58579],[38866,58580],[38880,58581],[58582,152684],[38894,58583],[29724,58584],[58585,169011],0,[38901,58587],[58588,168989],[58589,162170],[19153,58590],[38964,58591],[38963,58592],[38987,58593],[39014,58594],[15118,58595],[58596,160117],[15697,58597],[58598,132656],[58599,147804],[58600,153350],[39114,58601],[39095,58602],[39112,58603],[39111,58604],[19199,58605],[58606,159015],[58607,136915],[21936,58608],[39137,58609],[39142,
-58610],[39148,58611],[37752,58612],[39225,58613],[58614,150057],[19314,58615],[58616,170071],[58617,170245],[39413,58618],[39436,58619],[39483,58620],[39440,58621],[39512,58622],[58623,153381],[14020,58624],[58625,168113],[58626,170965],[39648,58627],[39650,58628],[58629,170757],[39668,58630],[19470,58631],[39700,58632],[39725,58633],[58634,165376],[20532,58635],[39732,58636],[14531,58638],[58639,143485],[39760,58640],[39744,58641],[58642,171326],[23109,58643],[58644,137315],[39822,58645],[39938,
-58647],[39935,58648],[39948,58649],[58650,171624],[40404,58651],[58652,171959],[58653,172434],[58654,172459],[58655,172257],[58656,172323],[58657,172511],[40318,58658],[40323,58659],[58660,172340],[40462,58661],[40388,58663],[58665,172435],[58666,172576],[58667,137531],[58668,172595],[40249,58669],[58670,172217],[58671,172724],[40592,58672],[40597,58673],[40606,58674],[40610,58675],[19764,58676],[40618,58677],[40623,58678],[58679,148324],[40641,58680],[15200,58681],[14821,58682],[15645,58683],[20274,
-58684],[14270,58685],[58686,166955],[40706,58687],[40712,58688],[19350,58689],[37924,58690],[58691,159138],[40727,58692,60836],0,[40761,58694],[22175,58695],[22154,58696],[40773,58697],[39352,58698],[58699,168075],[38898,58700],[33919,58701],0,[40809,58703],[31452,58704],[40846,58705],[29206,58706],[19390,58707],[58708,149877],[58709,149947],[29047,58710],[58711,150008],[58712,148296],[58713,150097],[29598,58714],[58715,166874],[58716,137466],[31135,58717],[58718,166270],[58719,167478],[37737,58720],
-[37875,58721],[58722,166468],[37612,58723],[37761,58724],[37835,58725],[58726,166252],[58727,148665],[29207,58728],[16107,58729],[30578,58730],[31299,58731],[28880,58732],[58733,148595],[58734,148472],[29054,58735],[58736,137199],[28835,58737],[58738,137406],[58739,144793],[16071,58740],[58741,137349],[58742,152623],[58743,137208],[14114,58744],[58745,136955],[58746,137273],[14049,58747],[58748,137076],[58749,137425],[58750,155467],[14115,58751],[58752,136896],[22363,58753],[58754,150053],[58755,
-136190],[58756,135848],[58757,136134],[58758,136374],[34051,58759,58761],[58760,145062],0,[33877,58762],[58763,149908],[58764,160101],[58765,146993],[58766,152924],[58767,147195],[58768,159826],[17652,58769],[58770,145134],[58771,170397],[58772,159526],[26617,58773],[14131,58774],[15381,58775],[15847,58776],[22636,58777],[58778,137506],[26640,58779],[16471,58780],[58781,145215],[58782,147681],[58783,147595],[58784,147727],[58785,158753],[21707,58786],[22174,58787],[58788,157361],[22162,58789],[58790,
-135135],[58791,134056],[58792,134669],0,[58794,166675],[37788,58795],[20216,58796],[20779,58797],[14361,58798],[58799,148534],[20156,58800],[58801,132197],0,[20299,58803],[20362,58804],[58805,153169],[23144,58806],[58807,131499],[58808,132043],[14745,58809],[58810,131850],[58811,132116],[13365,58812],[20265,58813],[58814,131776],[58815,167603],[58816,131701],[35546,58817],[58818,131596],[20120,58819],[20685,58820],[20749,58821],[20386,58822],[20227,58823],[58824,150030],[58825,147082],[20290,58826],
-[20526,58827],[20588,58828],[20609,58829],[20428,58830],[20453,58831],[20568,58832],[20732,58833],[28278,58838],[58839,144789],[58840,147001],[58841,147135],[28018,58842],[58843,137348],[58844,147081],[20904,58845],[20931,58846],[58847,132576],[17629,58848],[58849,132259],[58850,132242],[58851,132241],[36218,58852],[58853,166556],[58854,132878],[21081,58855],[21156,58856],[58857,133235],[21217,58858],0,[18042,58860],[29068,58861],[58862,148364],[58863,134176],[58864,149932],[58865,135396],[27089,
-58866],[58867,134685],0,[16094,58869],[29849,58870],[29716,58871],[29782,58872],[29592,58873],[19342,58874],[58875,150204],[58876,147597],[21456,58877],[13700,58878],[29199,58879],[58880,147657],[21940,58881],[58882,131909],[21709,58883],[58884,134086],[22301,58885],[37469,58886],[38644,58887],[22493,58889],[22413,58890],[22399,58891],[13886,58892],[22731,58893],[23193,58894],[58895,166470],[58896,136954],[58897,137071],[58898,136976],[23084,58899],[22968,58900],[23166,58902],[23247,58903],[23058,
-58904],[58905,153926],[58906,137715],[58907,137313],[58908,148117],[14069,58909],[27909,58910],[29763,58911],[23073,58912],[58913,155267],[23169,58914],[58915,166871],[58916,132115],[37856,58917],[29836,58918],[58919,135939],[28933,58920],[18802,58921],[37896,58922],[58923,166395],[37821,58924],[14240,58925],[23582,58926],[23710,58927],[24158,58928],[24136,58929],[58930,137622],[58931,137596],[58932,146158],[24269,58933],[23375,58934],[58935,137475],[58936,137476],[14081,58937],[58938,137376],[14045,
-58939],[58940,136958],[14035,58941],[33066,58942],[58943,166471],[58944,138682],[58945,144498],[58946,166312],[24332,58947,60916],[24334,58948],[58949,137511],[58950,137131],[23147,58951],[58952,137019],[23364,58953],[58955,161277],[34912,58956],[24702,58957],[58958,141408],[58959,140843],[24539,58960],[16056,58961],[58962,140719],[58963,140734],[58964,168072],[58965,159603],[25024,58966],[58967,131134],[58968,131142],[58969,140827],[24985,58970],[24984,58971],[24693,58972],[58973,142491],[58974,
-142599],[58975,149204],[58976,168269],[25713,58977],[58978,149093],[58979,142186],[14889,58980],[58981,142114],[58982,144464],[58983,170218],[58984,142968],[25399,58985],[25782,58987],[25393,58988],[25553,58989],[58990,149987],[58991,142695],[25252,58992],[58993,142497],[25659,58994],[25963,58995],[26994,58996],[15348,58997],[58998,143502],[58999,144045],[59E3,149897],[59001,144043],[21773,59002],[59003,144096],[59004,137433],[59005,169023],[26318,59006],[59007,144009],[59008,143795],[15072,59009],
-[59011,152964],[59012,166690],[59013,152975],[59014,136956],[59015,152923],[59016,152613],[30958,59017],[59018,143619],[59019,137258],[59020,143924],[13412,59021],[59022,143887],[59023,143746],[59024,148169],[26254,59025],[59026,159012],[26219,59027],[19347,59028],[26160,59029],[59030,161904],[59031,138731],[26211,59032],[59033,144082],[59034,144097],[26142,59035],[59036,153714],[14545,59037],[59038,145466],[59039,145340],[15257,59040],[59041,145314],[59042,144382],[29904,59043],[15254,59044],[59046,
-149034],[26806,59047],0,[15300,59049],[27326,59050],[59052,145365],[59053,148615],[27187,59054],[27218,59055],[27337,59056],[27397,59057],[59058,137490],[25873,59059],[26776,59060],[27212,59061],[15319,59062],[27258,59063],[27479,59064],[59065,147392],[59066,146586],[37792,59067],[37618,59068],[59069,166890],[59070,166603],[37513,59071],[59072,163870],[59073,166364],[37991,59074],[28069,59075],[28427,59076],0,[59079,147327],[15759,59080],[28164,59081],[59082,147516],[23101,59083],[28170,59084],[22599,
-59085],[27940,59086],[30786,59087],[28987,59088],[59089,148250],[59090,148086],[28913,59091],[29264,59092,61085],[29319,59093],[29332,59094],[59095,149391],[59096,149285],[20857,59097],[59098,150180],[59099,132587],[29818,59100],[59101,147192],[59102,144991],[59103,150090],[59104,149783],[59105,155617],[16134,59106],[16049,59107],[59108,150239],[59109,166947],[59110,147253],[24743,59111],[16115,59112],[29900,59113],[29756,59114],[37767,59115],[29751,59116],[17567,59117],[59118,159210],[17745,59119],
-[30083,59120],[16227,59121],[59122,150745],[59123,150790],[16216,59124],[30037,59125],[30323,59126],[59127,173510],0,[29800,59129,61070],[59130,166604],[59131,149931],[59132,149902],[15099,59133],[15821,59134],[59135,150094],[16127,59136],[59137,149957],[59138,149747],[37370,59139],[22322,59140],[37698,59141],[59142,166627],[59143,137316],[20703,59144],[59145,152097],[59146,152039],[30584,59147],[59148,143922],[30478,59149],[30479,59150],[30587,59151],[59152,149143],[59153,145281],[14942,59154],[59155,
-149744],[29752,59156],[29851,59157],[16063,59158],[59159,150202],[59160,150215],[16584,59161],[59162,150166],[59163,156078],[37639,59164],[59165,152961],[30750,59166],[30861,59167],[30856,59168],[30930,59169],[29648,59170],[31065,59171],[59172,161601],[59173,153315],[16654,59174],0,0,[31141,59177],[27181,59178],[59179,147194],[31290,59180],[31220,59181],[16750,59182],[59183,136934],[16690,59184],[37429,59185],[31217,59186],[59187,134476],[59188,149900],[59189,131737],[59190,146874],[59191,137070],
-[13719,59192],[21867,59193],[13680,59194],[13994,59195],[59196,131540],[59197,134157],[31458,59198],[23129,59199],[59200,141045],[59201,154287],[59202,154268],[23053,59203],[59204,131675],[30960,59205],[23082,59206],[59207,154566],[31486,59208],[16889,59209],[31837,59210],[31853,59211],[16913,59212],[59213,154547],[59214,155324],[59215,155302],[31949,59216],[59217,150009],[59218,137136],[31886,59219],[31868,59220],[31918,59221],[27314,59222],[32220,59223],[32263,59224],[32211,59225],[32590,59226],
-[59227,156257],[59228,155996],[59229,162632],[32151,59230],[59231,155266],[17002,59232],[59233,158581],[59234,133398],[26582,59235],[59236,131150],[59237,144847],[22468,59238],[59239,156690],[59240,156664],[32733,59242],[31527,59243],[59244,133164],[59245,154345],[59246,154947],[31500,59247],[59248,155150],[39398,59249],[34373,59250],[39523,59251],[27164,59252],[59253,144447],[59255,150007],[59256,157101],[39455,59257],[59258,157088],0,[59260,160039],[59261,158929],[17642,59262],[33079,59263],[17410,
-59264],[32966,59265],[33033,59266],[33090,59267],[59268,157620],[39107,59269],[59270,158274],[33378,59271],[33381,59272],[59273,158289],[33875,59274],[59275,159143],[34320,59276],[59277,160283],[23174,59278],[16767,59279],[59280,137280],[23339,59281],[59282,137377],[23268,59283],[59284,137432],[34464,59285],[59286,195004],[59287,146831],[34861,59288],[59289,160802],[23042,59290],[34926,59291],[20293,59292],[34951,59293],[35007,59294],[35046,59295],[35173,59296],[35149,59297],[59298,153219],[35156,
-59299],[59300,161669],[59301,161668],[59302,166901],[59303,166873],[59304,166812],[59305,166393],[16045,59306],[33955,59307],[18165,59308],[18127,59309],[14322,59310],[35389,59311],[35356,59312],[59313,169032],[24397,59314],[37419,59315],[59316,148100],[26068,59317],[28969,59318],[28868,59319],[59320,137285],[40301,59321],[35999,59322],[36073,59323],[59324,163292],[22938,59325],[30659,59326],[23024,59327],[14036,59329],[36394,59330],[36519,59331],[59332,150537],[36656,59333],[36682,59334],[17140,
-59335],[27736,59336],[28603,59337],[59338,140065],[18587,59339],[28537,59340],[28299,59341],[59342,137178],[39913,59343],[14005,59344],[59345,149807],[37051,59346],0,[21873,59348],[18694,59349],[37307,59350],[37892,59351],[59352,166475],[16482,59353],[59354,166652],[37927,59355],[59356,166941],[59357,166971],[34021,59358],[35371,59359],[38297,59360],[38311,59361],[38295,59362],[38294,59363],[59364,167220],[29765,59365],[16066,59366],[59367,149759],[59368,150082],[59369,148458],[16103,59370],[59371,
-143909],[38543,59372],[59373,167655],[59374,167526],[59375,167525],[16076,59376],[59377,149997],[59378,150136],[59379,147438],[29714,59380],[29803,59381],[16124,59382],[38721,59383],[59384,168112],[26695,59385],[18973,59386],[59387,168083],[59388,153567],0,[37736,59390],[59391,166281],[59392,166950],[59393,166703],[59394,156606],[37562,59395],[23313,59396],[35689,59397],[18748,59398],[29689,59399],[59400,147995],[38811,59401],0,[39224,59403],[59404,134950],[24001,59405],[59406,166853],[59407,150194],
-[38943,59408],[59409,169178],[37622,59410],[59411,169431],[37349,59412],[17600,59413],[59414,166736],[59415,150119],[59416,166756],[39132,59417],[59418,166469],[16128,59419],[37418,59420],[18725,59421],[33812,59422],[39227,59423],[39245,59424],[59425,162566],[15869,59426],0,[19311,59428],[39338,59429],[39516,59430],[59431,166757],[59432,153800],[27279,59433],[39457,59434],[23294,59435],[39471,59436],[59437,170225],[19344,59438],[59439,170312],[39356,59440],[19389,59441],[19351,59442],[37757,59443],
-[22642,59444],[59445,135938],[22562,59446],[59447,149944],[59448,136424],[30788,59449],[59450,141087],[59451,146872],[26821,59452],[15741,59453],[37976,59454],[14631,59455],[24912,59456],[59457,141185],[59458,141675],[24839,59459],[40015,59460],[40019,59461],[40059,59462],[39989,59463],[39952,59464],[39807,59465],[39887,59466],[59467,171565],[39839,59468],[59469,172533],[59470,172286],[40225,59471],[19630,59472],[59473,147716],[40472,59474],[19632,59475],[40204,59476],[59477,172468],[59478,172269],
-[59479,172275],[59480,170287],[40357,59481],[33981,59482],[59483,159250],[59484,159711],[59485,158594],[34300,59486],[17715,59487],[59488,159140],[59489,159364],[59490,159216],[33824,59491],[34286,59492],[59493,159232],[59494,145367],[59495,155748],[31202,59496],[59497,144796],[59498,144960],[59500,149982],[15714,59501],[37851,59502],[37566,59503],[37704,59504],[59505,131775],[30905,59506],[37495,59507],[37965,59508],[20452,59509],[13376,59510],[36964,59511],[59512,152925],[30781,59513],[30804,59514],
-[30902,59515],[30795,59516],[59517,137047],[59518,143817],[59519,149825],[13978,59520],[20338,59521],[28634,59522],[28633,59523],0,[28702,59524,59525],[21524,59526],[59527,147893],[22459,59528],[22771,59529],[22410,59530],[40214,59531],[22487,59532],[28980,59533],[13487,59534],[59535,147884],[29163,59536],[59537,158784],[59538,151447],0,[59540,137141],[59541,166473],[24844,59542],[23246,59543],[23051,59544],[17084,59545],[59546,148616],[14124,59547],[19323,59548],[59549,166396],[37819,59550],[37816,
-59551],[59552,137430],[59553,134941],[33906,59554],[59555,158912],[59556,136211],[59557,148218],[59558,142374],[59559,148417],[22932,59560],[59561,146871],[59562,157505],[32168,59563],[59564,155995],[59565,155812],[59566,149945],[59567,149899],[59568,166394],[37605,59569],[29666,59570],[16105,59571],[29876,59572],[59573,166755],[59574,137375],[16097,59575],[59576,150195],[27352,59577],[29683,59578],[29691,59579],[16086,59580],[59581,150078],[59582,150164],[59583,137177],[59584,150118],[59585,132007],
-[59586,136228],[59587,149989],[29768,59588],[59589,149782],[28837,59590],[59591,149878],[37508,59592],[29670,59593],[37727,59594],[59595,132350],[37681,59596],[59597,166606],[59598,166422],[37766,59599],[59600,166887],[59601,153045],[18741,59602],[59603,166530],[29035,59604],[59605,149827],[59606,134399],[22180,59607],[59608,132634],[59609,134123],[59610,134328],[21762,59611],[31172,59612],[59613,137210],[32254,59614],[59615,136898],[59616,150096],[59617,137298],[17710,59618],[37889,59619],[14090,
-59620],[59621,166592],[59622,149933],[22960,59623],[59624,137407],[59625,137347],[59626,160900],[23201,59627],[14050,59628],[59629,146779],[14E3,59630],[37471,59631],[23161,59632],[59633,166529],[59634,137314],[37748,59635],[15565,59636],[59637,133812],[19094,59638],[14730,59639],[20724,59640],[15721,59641],[15692,59642],[59643,136092],[29045,59644],[17147,59645],[59646,164376],[28175,59647],[59648,168164],[17643,59649],[27991,59650],[59651,163407],[28775,59652],[27823,59653],[15574,59654],[59655,
-147437],[59656,146989],[28162,59657],[28428,59658],[15727,59659],[59660,132085],[30033,59661],[14012,59662],[13512,59663],[18048,59664],[16090,59665],[18545,59666],[22980,59667],[37486,59668],[18750,59669],[36673,59670],[59671,166940],[59672,158656],[22546,59673],[22472,59674],[14038,59675],[59676,136274],[28926,59677],[59678,148322],[59679,150129],[59680,143331],[59681,135856],[59682,140221],[26809,59683],[26983,59684],[59685,136088],[59686,144613],[59687,162804],[59688,145119],[59689,166531],[59690,
-145366],[59691,144378],[59692,150687],[27162,59693],[59694,145069],[59695,158903],[33854,59696],[17631,59697],[17614,59698],[59699,159014],[59700,159057],[59701,158850],[59702,159710],0,0,[33597,59705],[59706,137018],[33773,59707],[59708,158848],[59709,159827],[59710,137179],[22921,59711],[23170,59712],[59713,137139],[23137,59714],[23153,59715],[59716,137477],[59717,147964],[14125,59718],[23023,59719],[59720,137020],[14023,59721],[29070,59722],[37776,59723],[26266,59724],[59725,148133],[23150,59726],
-[23083,59727],[59728,148115],[27179,59729],[59730,147193],[59731,161590],[59732,148571],[59733,148170],[28957,59734],[59735,148057],[59736,166369],[20400,59737],[59738,159016],[23746,59739],[59740,148686],[59741,163405],[59742,148413],[27148,59743],[59744,148054],[59745,135940],0,[28979,59747],[59748,148457],[15781,59749],[27871,59750],[59751,194597],[23019,59754],[24412,59757],[59764,144128],[31955,59776],[59783,162548],[59786,153334],[59790,162584],[36972,59791],[33270,59795],[30476,59797],[27810,
-59799],[22269,59800],[22633,59828],[26465,59832],[23646,59838],[22770,59841],[28857,59843],[26627,59853],[36795,59859],[36796,59861],[20001,59871],[31545,59898],[15820,59902],[29482,57990,59909],[30048,59912],[22586,59920],[33446,59932],[27018,59940],[24803,59944],[20206,59984],[39364,60002],[40639,60023],[21249,60025],[26528,60038],[24808,60046],[20916,60053],[31363,60064],[39994,60075],[31432,60093],[26906,60098],[22956,60100],[22592,60102],[21610,60114],[24807,60123],[22138,60125],[26965,60132],
-[39983,60133],[34725,60134],[23584,60141],[24075,60143],[26398,60147],[33965,60157],[35713,60161],[20088,60166],[25283,60176],[26709,60180],0,[33533,60190],[35237,60194],[36768,60196],[38840,60198],[38983,60200],[39613,60201],[24497,60218],[26184,60219],[26303,60220],[60221,162425],0,[60225,149946],0,0,[60230,131910],[26382,60232],[26904,60233],[60235,161367],[60236,155618],[60239,161278],[60240,139418],[18640,60241],[19128,60242],[60244,166554],[60247,147515],[60250,150085],[60251,132554],[20946,
-60252],[60253,132625],[22943,60254],[60255,138920],[15294,60256],[60257,146687],[14747,60262],[60264,165352],[60265,170441],[14178,60266],[60267,139715],[35678,60268],[60269,166734],0,[29193,60274],[60276,134264],[60280,132985],[36570,60281],[21135,60283],[29041,60285],[60288,147274],[60289,150183],[21948,60290],[60293,158546],[13427,60295],[60297,161330],[18200,60299],[60303,149823],[20582,60305],[13563,60306],[60307,144332],0,[18300,60310],[60311,166216],[60315,138640],0,[60320,162834],[36950,60321],
-[60323,151450],[35682,60324],[23899,60327],[60328,158711],0,[60331,137500],[35562,60332],[60333,150006],[60335,147439],[19392,60337],[60340,141083],[37989,60341],[60342,153569],[24981,60343],[23079,60344],[60345,194765],0,[60348,148769],[20074,60350],[60351,149812],[38486,60352],[28047,60353],[60354,158909],[35191,60356],[60359,156689],0,[31554,60363],[60364,168128],[60365,133649],0,[31301,60369],[39462,60372],[13919,60374],[60375,156777],[60376,131105],[31107,60377],[23852,60380],[60381,144665],
-0,[18128,60384],[30011,60386],[34917,60387],[22710,60389],[14108,60390],[60391,140685],[15444,60394],[37505,60397],[60398,139642],[37680,60400],[60402,149968],[27705,60403],[60406,134904],[34855,60407],[35061,60408],[60409,141606],[60410,164979],[60411,137137],[28344,60412],[60413,150058],[60414,137248],[14756,60415],0,0,[17727,60419],[26294,60420],[60421,171181],[60422,170148],[35139,60423],[16607,60427],[60428,136714],[14753,60429],[60430,145199],[60431,164072],[60432,136133],[29101,60433],[33638,
-60434],[60436,168360],0,[19639,60438],[60439,159919],[60440,166315],[60445,147834],[31555,60446],[31102,60447],[28597,60449],[60450,172767],[27139,60451],[60452,164632],[21410,60453],[60454,159239],[37823,60455],[26678,60456],[38749,59389,60457],[60458,164207],[60460,158133],[60461,136173],[60462,143919],[23941,60464],[60465,166960],[22293,60467],[38947,60468],[60469,166217],[23979,60470],[60471,149896],[26046,60472],[27093,60473],[21458,60474],[60475,150181],[60476,147329],[15377,60477],[26422,60478],
-[60482,139169],[13770,60490],[18682,60493],0,[30728,60496],[37461,60497],[17394,60499],[17375,60501],[23032,60505],0,[22155,60518],[60520,169449],[36882,60541],[21953,60546],[17673,60551],[32383,60552],[28502,60553],[27313,60554],[13540,60556],[60558,161949],[14138,60559],0,[60562,163876],[60565,162366],[15851,60567],[60569,146615],[60574,156248],[22207,60575],[36366,60577],[23405,60578],[25566,60581],0,[25904,60585],[22061,60586],[21530,60588],[60591,171416],[19581,60592],[22050,60593],[22046,60594],
-[32585,60595],[22901,60597],[60598,146752],[34672,60599],[33047,60604],[40286,60605],[36120,60606],[30267,60607],[40005,60608],[30286,60609],[30649,60610],[37701,60611],[21554,60612],[33096,60613],[33527,60614],[22053,60615],[33074,60616],[33816,60617],[32957,60618],[21994,60619],[31074,60620],[22083,60621],[21526,60622],[60623,134813],[13774,60624],[22021,57509,60625],[22001,60626],[26353,60627],[60628,164578],[13869,60629],[30004,60630],[22E3,60631],[21946,60632],[21655,60633],[21874,60634],[60635,
-134209],[60636,134294],[24272,57652,60637],[60639,134774],[60640,142434],[60641,134818],[40619,60642],[32090,60643],0,[60645,135285],[25245,60646],[38765,60647],[21652,60648],[36045,60649],[29174,60650],[37238,60651],[25596,60652],[25529,60653],[25598,60654],[21865,60655],[60656,142147],[40050,60657],[60658,143027],[20890,60659],[13535,60660],[60661,134567],[20903,60662],[21581,60663],[21790,60664],[21779,60665],[30310,60666],[36397,60667],[60668,157834],[30129,60669],[32950,60670],[34820,60671],
-0,[35015,60673],[33206,60674],[33820,60675],[17644,60677],[29444,60678],[33547,60681],[22139,60683],[37232,60690],[37384,60692],[60696,134905],[29286,60697],[18254,60699],[60701,163833],[16634,60703],[40029,60704],[25887,60705],[18675,60707],[60708,149472],[60709,171388],0,[60713,161187],60715,[60716,155720],[29091,60718],[32398,60719],[40272,60720],[13687,60723],[27826,60725],[21351,60726],[14812,60728],[60731,149016],[33325,60734],[21579,60735],60739,[14930,60740],[29556,60742],[60743,171692],[19721,
-60744],[39917,60745],0,[19547,60748],[60751,171998],[33884,60752],[60754,160434],[25390,60757],[32037,60758],[14890,60761],[36872,60762],[21196,60763],[15988,60764],[13946,60765],[17897,60766],[60767,132238],[30272,60768],[23280,60769],[60770,134838],[30842,60771],[18358,60772],[22695,60773],[16575,60774],[22140,60775],[39819,60776],[23924,60777],[30292,60778],[60779,173108],[40581,60780],[19681,60781],0,[14331,60783],[24857,60784],[60786,148466],60787,[22109,60788],[60792,171526],[21044,60793],[13741,
-60795],0,[40316,60797],[31830,60798],[39737,60799],[22494,60800],[23635,60802],[25811,60803],[60804,169168],[60805,156469],[34477,60807],[60808,134440],[60811,134513],60812,[20990,60813],[60814,139023],[23950,60815],[38659,60816],[60817,138705],[40577,60818],[36940,60819],[31519,60820],[39682,60821],[23761,60822],[31651,60823],[25192,60824],[25397,60825],[39679,60826],[31695,60827],[39722,60828],[31870,60829],0,[31810,60831],[31878,60832],[39957,60833],[31740,60834],[39689,60835],0,39982,[40794,60839],
-[21875,60840],[23491,60841],[20477,60842],[40600,60843],[20466,60844],[21088,60845],[21201,60847],[22375,60848],[20566,60849],[22967,60850],[24082,60851],[38856,60852],[40363,60853],[36700,60854],[21609,60855],[38836,60856],[39232,60857],[38842,60858],[21292,60859],[24880,60860],[26924,60861],[21466,60862],[39946,60863],[40194,60864],[19515,60865],[38465,60866],[27008,60867],[20646,60868],[30022,60869],[60870,137069],[39386,60871],[21107,60872],60873,[37209,60874],[38529,60875],[37212,60876],60877,
-[37201,60878],[60879,167575],[25471,60880],[27338,60882],[22033,60883],[37262,60884],[30074,60885],[25221,60886],[29519,60888],[31856,60889],[60890,154657],60892,[30422,60894],[39837,60895],[20010,60896],[60897,134356],[33726,60898],[34882,60899],60900,[23626,60901],[27072,60902],0,0,[21023,60905],[24053,60906],[20174,60907],[27697,60908],[60909,131570],[20281,60910],[21660,60911],0,[21146,60913],[36226,60914],[13822,60915],0,[13811,60917],60918,[27474,60919],[37244,60920],[40869,60921],[39831,60922],
-[38958,60923],[39092,60924],[39610,60925],[40616,60926],[40580,60927],[31508,60929],60930,[27642,60931],[34840,60932],[32632,60933],60934,[22048,60935],[60936,173642],[36471,60937],[40787,60938],60939,[36308,60940],[36431,60941],[40476,60942],[36353,60943],[25218,60944],[60945,164733],[36392,60946],[36469,60947],[31443,60948],[31294,60950],[30936,60951],[27882,60952],[35431,60953],[30215,60954],[40742,60956],[27854,60957],[34774,60958],[30147,60959],[60960,172722],[30803,60961],[36108,60963],[29410,
-60964],[29553,60965],[35629,60966],[29442,60967],[29937,60968],[36075,60969],[60970,150203],[34351,60971],[24506,60972],[34976,60973],[17591,60974],60975,[60977,159237],60978,[35454,60979],[60980,140571],60981,[24829,60982],[30311,60983],[39639,60984],[40260,60985],[37742,58859,60986],[39823,60987],[34805,60988],60989,0,[36087,60991],[29484,60992],[38689,60993],[39856,60994],[13782,60995],[29362,60996],[19463,60997],[31825,60998],[39242,60999],[24921,61001],[19460,61002],[40598,61003],[24957,61004],
-61005,[22367,61006],[24943,61007],[25254,61008],[25145,61009],0,[14940,61011],[25058,61012],[21418,61013],[25444,61015],[26626,61016],[13778,61017],[23895,61018],[36826,61020],[61021,167481],61022,[20697,61023],[30982,61025],[21298,61026],[38456,61027],[61028,134971],[16485,61029],61030,[30718,61031],61032,[31938,61033],[61034,155418],[31962,61035],[31277,61036],[32870,61037],[32867,61038],[32077,61039],[29957,61040],[29938,61041],[35220,61042],[33306,61043],[26380,61044],[32866,61045],[61046,160902],
-[32859,61047],[29936,61048],[33027,61049],[30500,61050],[35209,61051],[61052,157644],[30035,61053],[34729,61055],[34766,61056],[33224,61057],[34700,61058],[35401,61059],[36013,61060],[35651,61061],[30507,61062],[29944,61063],[34010,61064],[27058,61066],[36262,61067],61068,[35241,58392,61069],0,[28089,61071],[34753,61072],[61073,147473],[29927,61074],[15835,61075],[29046,61076],[24740,57702,61077],[24988,61078],[15569,61079],0,[24695,61081],61082,[32625,61083],0,[24809,61086],[19326,61087],[57344,
-132423],[37595,57345],[57346,132575],[57347,147397],[34124,57348],[17077,57349],[29679,57350],[20917,57351],[13897,57352],[57353,149826],[57354,166372],[37700,57355],[57356,137691],[33518,57357],[57358,146632],[30780,57359],[26436,57360],[25311,57361],[57362,149811],[57363,166314],[57364,131744],[57365,158643],[57366,135941],[20395,57367],[57368,140525],[20488,57369],[57370,159017],[57371,162436],[57372,144896],[57373,150193],[57374,140563],0,[57376,131966],[24484,57377],[57378,131968],[57379,131911],
-[28379,57380],[57381,132127],20702,[20737,57383],[13434,57384],[20750,57385],[39020,57386],[14147,57387],[33814,57388],[57389,149924],[57390,132231],[20832,57391],[57392,144308],[20842,57393],[57394,134143],[57395,139516],[57396,131813],[57397,140592],[57398,132494],[57399,143923],[57400,137603],[23426,57401],[34685,57402],[57403,132531],[57404,146585],[20914,57405],[20920,57406],[40244,57407],[20937,57408],[20943,57409],[20945,57410],[15580,57411],[20947,57412],[57413,150182],[20915,57414],0,0,[20973,
-57417],[33741,57418],[26942,57419],[57420,145197],[24443,57421],[21003,57422],[21030,57423],[21052,57424],[21173,57425],[21079,57426],[21140,57427],[21177,57428],[21189,57429],[31765,57430],[34114,57431],[21216,57432],[34317,57433],[57434,158483],0,[57436,166622],[21833,57437],[28377,57438],[57439,147328],[57440,133460],[57441,147436],[21299,57442],0,[57444,134114],[27851,57445],[57446,136998],[26651,57447],[29653,57448],[24650,57449],[16042,57450],[14540,57451],[57452,136936],[29149,57453],[17570,
-57454],[21357,57455],[21364,57456],[57457,165547],[21374,57458],0,[57460,136598],[57461,136723],[30694,57462],[21395,57463],[57464,166555],[21408,57465],[21419,57466],[21422,57467],[29607,57468],[57469,153458],[16217,57470],[29596,57471],[21441,57472],[21445,57473],[27721,57474],[20041,57475],[22526,57476],[21465,57477],[15019,57478],[57479,134031],[21472,57480],[57481,147435],[57482,142755],[21494,57483],[57484,134263],[21523,57485],[28793,57486],[21803,57487],[26199,57488],[27995,57489],[21613,
-57490],[57491,158547],[57492,134516],[21853,57493],[21647,57494],[21668,57495],[18342,57496],[57497,136973],[57498,134877],[15796,57499],[57500,134477],[57501,166332],[57502,140952],[21831,57503],[19693,57504],[21551,57505],[29719,57506],[21894,57507],[21929,57508],0,[57510,137431],[57511,147514],[17746,57512],[57513,148533],[26291,57514],[57515,135348],[22071,57516],[26317,57517],[57518,144010],[26276,57519],0,[22093,57521],[22095,57522],[30961,57523],[22257,57524],[38791,57525],[21502,57526],[22272,
-57527],[22255,57528],[22253,57529],[57530,166758],[13859,57531],[57532,135759],[22342,57533],[57534,147877],[27758,57535],[28811,57536],[22338,57537],[14001,57538],[57539,158846],[22502,57540],[57541,136214],[22531,57542],[57543,136276],[57544,148323],[22566,57545],[57546,150517],0,[22698,57548],[13665,57549],[22752,57550],[22748,57551],[57552,135740],[22779,57553],[23551,57554],[22339,57555],[57556,172368],[57557,148088],[37843,57558],[13729,57559],[22815,57560],[26790,57561],[14019,57562],[28249,
-57563],[57564,136766],[23076,57565],0,[57567,136850],[34053,57568],[22985,57569],[57570,134478],[57571,158849],[57572,159018],[57573,137180],[23001,57574],[57575,137211],[57576,137138],[57577,159142],[28017,57578],[57579,137256],[57580,136917],[23033,57581],[57582,159301],[23211,57583],[23139,57584],[14054,57585],[57586,149929],0,[14088,57588],[23190,57589],[29797,57590],[23251,57591],[57592,159649],[57593,140628],[57595,137489],[14130,57596],[57597,136888],[24195,57598],[21200,57599],[23414,57600],
-[25992,57601],[23420,57602],[57603,162318],[16388,57604],[18525,57605],[57606,131588],[23509,57607],[57609,137780],[57610,154060],[57611,132517],[23539,57612],[23453,57613],[19728,57614],[23557,57615],[57616,138052],[23571,57617],[29646,57618],[23572,57619],[57620,138405],[57621,158504],[23625,57622],[18653,57623],[23685,57624],[23785,57625],[23791,57626],[23947,57627],[57628,138745],[57629,138807],[23824,57630],[23832,57631],[23878,57632],[57633,138916],[23738,57634],[24023,57635],[33532,57636],
-[14381,57637],[57638,149761],[57639,139337],[57640,139635],[33415,57641],[14390,57642],[15298,57643],[24110,57644],[27274,57645],0,57647,[57648,148668],[57649,134355],[21414,57650],[20151,57651],0,[21416,57653],[57654,137073],[24073,57655],57656,[57657,164994],[24313,57658],[24315,57659],[14496,57660],[24316,57661],[26686,57662],[37915,57663],[24333,57664],[57665,131521],[57666,194708],[15070,57667],[57669,135994],[24378,57670],[57671,157832],[57672,140240],[57674,140401],[24419,57675],[57677,159342],
-[24434,57678],[37696,57679],[57680,166454],[24487,57681],[23990,57682],[15711,57683],[57684,152144],[57685,139114],[57686,159992],[57687,140904],[37334,57688],[57689,131742],[57690,166441],[24625,57691],[26245,57692],[14691,57694],[15815,57695],[13881,57696],[22416,57697],[57698,141236],[31089,57699],[15936,57700],[24734,57701],0,0,[57704,149890],[57705,149903],[57706,162387],[29860,57707],[20705,57708],[23200,57709],[24932,57710],[24898,57712],[57713,194726],[57714,159442],[24961,57715],[20980,57716],
-[57717,132694],[24967,57718],[23466,57719],[57720,147383],[57721,141407],[25043,57722],[57723,166813],[57724,170333],[25040,57725],[14642,57726],[57727,141696],[57728,141505],[24611,57729],[24924,57730],[25886,57731],[25483,57732],[57733,131352],[25285,57734],[57735,137072],[25301,57736],[57737,142861],[25452,57738],[57739,149983],[14871,57740],[25656,57741],[25592,57742],[57743,136078],[57744,137212],[28554,57746],[57747,142902],0,[57750,153373],[25825,57751],[25829,57752],[38011,57753],[14950,57754],
-[25658,57755],[14935,57756],[25933,57757],[28438,57758],[57759,150056],[57760,150051],[25989,57761],[25965,57762],[25951,57763],0,[26037,57765],[57766,149824],[19255,57767],[26065,57768],[16600,57769],[57770,137257],57771,[26083,57772],[24543,57773],[57774,144384],[26136,57775],[57776,143863],[57777,143864],[26180,57778],[57779,143780],[57780,143781],[26187,57781],[57782,134773],[26215,57783],[57784,152038],[26227,57785],0,[57788,143921],[57789,165364],[57790,143816],[57791,152339],[30661,57792],
-[57793,141559],[39332,57794],[26370,57795],[57796,148380],[57797,150049],[27130,57799],[57800,145346],0,[26471,57802],[26466,57803],[57804,147917],[57805,168173],[26583,57806],[17641,57807],[26658,57808],[28240,57809],[37436,57810],[26625,57811],[57812,144358],[57813,159136],[26717,57814],[57815,144495],[27105,57816],[27147,57817],[57818,166623],[26995,57819],[26819,57820],[57821,144845],[26881,57822],[26880,57823],[14849,57825],[57826,144956],[15232,57827],[26540,57828],[26977,57829],[57830,166474],
-[17148,57831],[26934,57832],[27032,57833],[15265,57834],[57835,132041],[33635,57836],[20624,57837],[27129,57838],[57839,144985],[57840,139562],[27205,57841],[57842,145155],[27293,57843],[15347,57844],[26545,57845],[27336,57846],[57847,168348],[15373,57848],[27421,57849],[57850,133411],[24798,57851,60308],[27445,57852],[27508,57853],[57854,141261],[28341,57855],[57856,146139],0,[57858,137560],[14144,57859],[21537,57860],[57861,146266],[27617,57862],[57863,147196],[27612,57864],[27703,57865],[57866,
-140427],[57867,149745],[57868,158545],[27738,57869],[33318,57870],[27769,57871],[57872,146876],[17605,57873],[57874,146877],[57875,147876],[57876,149772],[57877,149760],[57878,146633],[14053,57879],[15595,57880],[57881,134450],[39811,57882],[57883,143865],[57884,140433],[32655,57885],[26679,57886],[57887,159013],[57888,159137],[57889,159211],[28054,57890],[27996,57891],[28284,57892],[28420,57893],[57894,149887],[57895,147589],[57896,159346],[34099,57897],[57898,159604],[20935,57899],0,0,[33838,57902],
-[57903,166689],0,[57905,146991],[29779,57906],[57907,147330],[31180,57908],[28239,57909],[23185,57910],[57911,143435],[28664,57912],[14093,57913],[28573,57914],[57915,146992],[28410,57916],[57917,136343],[57918,147517],[17749,57919],[37872,57920],[28484,57921],[28508,57922],[15694,57923],[28532,57924],[57925,168304],[15675,57926],[28575,57927],[57928,147780],[28627,57929],[57930,147601],[57931,147797],[57932,147513],[57933,147440],[57934,147380],[57935,147775],[20959,57936],[57937,147798],[57938,
-147799],[57939,147776],[57940,156125],[28747,57941],[28798,57942],[28839,57943],0,[28876,57945],[28885,57946],[28886,57947],[28895,57948],[16644,57949],[15848,57950],[29108,57951],[29078,57952],[57953,148087],[28971,57954],[28997,57955],[23176,57956],[29002,57957],0,[57960,148325],[29007,57961],[37730,57962],[57963,148161],[28972,57964],[57965,148570],[57966,150055],[57967,150050],[29114,57968],[57969,166888],[28861,57970],[29198,57971],[37954,57972],[29205,57973],[22801,57974],[37955,57975],[29220,
-57976],[37697,57977],[57978,153093],[29230,57979],[29248,57980],[57981,149876],[26813,57982],[29269,57983],[29271,57984],[15957,57985],[57986,143428],[26637,57987],[28477,57988],[29314,57989],0,[29483,57991],[57992,149539],[57993,165931],[18669,57994],[57995,165892],[29480,57996],[29486,57997],[29647,57998],[29610,57999],[58E3,134202],[58001,158254],[29641,58002],[29769,58003],[58004,147938],[58005,136935],[58006,150052],[26147,58007],[14021,58008],[58009,149943],[58010,149901],[58011,150011],[29687,
-58012],[29717,58013],[26883,58014],[58015,150054],[29753,58016],[16087,58018],0,[58020,141485],[29792,58021],[58022,167602],[29767,58023],[29668,58024],[29814,58025],[33721,58026],[29804,58027],[29812,58029],[37873,58030],[27180,58031],[29826,58032],[18771,58033],[58034,150156],[58035,147807],[58036,150137],[58037,166799],[23366,58038],[58039,166915],[58040,137374],[29896,58041],[58042,137608],[29966,58043],[29982,58045],[58046,167641],[58047,137803],[23511,58048],[58049,167596],[37765,58050],[30029,
-58051],[30026,58052],[30055,58053],[30062,58054],[58055,151426],[16132,58056],[58057,150803],[30094,58058],[29789,58059],[30110,58060],[30132,58061],[30210,58062],[30252,58063],[30289,58064],[30287,58065],[30319,58066],58067,[58068,156661],[30352,58069],[33263,58070],[14328,58071],[58072,157969],[58073,157966],[30369,58074],[30373,58075],[30391,58076],[30412,58077],[58078,159647],[33890,58079],[58080,151709],[58081,151933],[58082,138780],[30494,58083],[30502,58084],[30528,58085],[25775,58086],[58087,
-152096],[30552,58088],[58089,144044],[30639,58090],[58091,166244],[58092,166248],[58093,136897],[30708,58094],0,[26826,58098],[30895,58099],[30919,58100],[30931,58101],[38565,58102],[31022,58103],[58104,153056],[30935,58105],[31028,58106],[30897,58107],[58108,161292],[36792,58109],[34948,58110],[58113,140828],[31110,58114],[35072,58115],[26882,58116],[31104,58117],[58118,153687],[31133,58119],[58120,162617],[31036,58121],[31145,58122],[28202,58123],[58124,160038],[16040,58125],[31174,58126],[58127,
-168205],[31188,58128],0,[21797,62526],0,[62528,134210],[62529,134421],[62530,151851],[21904,62531],[62532,142534],[14828,62533],[62534,131905],[36422,62535],[62536,150968],[62537,169189],0,[62539,164030],[30586,62540],[62541,142392],[14900,62542],[18389,62543],[62544,164189],[62545,158194],[62546,151018],[25821,62547],[62548,134524],[62549,135092],[62550,134357],0,[25741,62552],[36478,62553],[62554,134806],0,[62556,135012],[62557,142505],[62558,164438],[62559,148691],0,[62561,134470],[62562,170573],
-[62563,164073],[18420,62564],[62565,151207],[62566,142530],[39602,62567],[14951,62568],[62569,169460],[16365,62570],[13574,62571],[62572,152263],[62573,169940],0,[62575,142660],[40302,62576],[38933,62577],0,[17369,62579],0,[25780,62581],[21731,62582],0,[62584,142282],0,[14843,62586],0,[62588,157402],[62589,157462],[62590,162208],[25834,62591],[62592,151634],[62593,134211],[36456,62594],0,[62596,166732],[62597,132913],0,[18443,62599],[62600,131497],[16378,62601],[22643,62602],[62603,142733],0,[62605,
-148936],[62606,132348],[62607,155799],[62608,134988],0,[21881,62610],0,[17338,62612],0,[19124,62614],[62615,141926],[62616,135325],[33194,62617],[39157,62618],[62619,134556],[25465,62620],[14846,62621],[62622,141173],[36288,62623],[22177,62624],[25724,62625],[15939,62626],0,[62628,173569],[62629,134665],[62630,142031],0,0,[62633,135368],[62634,145858],[14738,62635],[14854,62636],[62637,164507],[13688,62638],[62639,155209],[62640,139463],0,0,[62643,142514],[62644,169760],[13500,62645],[27709,62646],
-[62647,151099],0,0,[62650,161140],[62651,142987],[62652,139784],[62653,173659],[62654,167117],[62655,134778],[62656,134196],[62683,161337],[62684,142286],[62687,142417],[14872,62689],[62691,135367],[62693,173618],[62695,167122],[62696,167321],[62697,167114],[38314,62698],0,[62706,161630],[28992,62708],0,[20822,62385],0,[20616,62487],0,[13459,62489],[20870,62491],[24130,63037],[20997,62495],[21031,62436],[21113,62497],0,[13651,62504],[21442,62505],[21343,62715],0,[21823,62520],0,[21976,59986],[13789,
-62722],[22049,63067],0,[22100,60044],[60148,135291],0,[60153,135379],0,[61095,135934],0,0,[14265,60104],[23745,61099],[23829,63066],[23894,63030],[14392,63036],[20097,62477],[24253,63038],[14612,63042],[25017,63050],[25232,63054],[25368,63056],[25690,63063],[25745,62381],[33133,62709],[33156,59922],[33171,59924],[26624,63080],[15292,63093],[29327,60517],[29389,59781],0,[29497,59785],[30018,59811],[30172,59817],[16320,59818],[60278,151205],[16343,59820],0,30336,[30348,59824,151388],[16552,59845],[30777,
-59846],[16643,59855],[31377,59863],[31771,59876],[31981,59884],[32659,62658],[32686,59892],0,[33535,59936],[22623,59981],[34482,59960],0,[34699,59963],[35143,59969],0,[35369,59972],0,[36465,59988],[60484,164233],[36528,59990],0,[37214,62443],[37260,62441],[39182,60051],[39196,60054],0,0,[39809,60066],[40384,60080],[40339,60078],[40620,60085],[19857,60540],0,37818,[40571,60084],[28809,63148],[29512,59788],0,[31129,59858],[36791,59997],0,[39234,60056],{s:193},8364,{s:4},[12443,63518],[12444,63519],
-[11904,63520],{f:5,c:62211},[62216,131340],62217,[62218,131281],[62219,131277],{f:2,c:62220},[62222,131275],[62223,139240],62224,[62225,131274],{f:4,c:62226},[62230,131342],{f:2,c:62231},{f:2,c:62776},[62778,138177],[62779,194680],[12205,38737,62780],[62781,131206],[20059,62782],[20155,62783],[13630,62784],[23587,62785],[24401,62786],[24516,62787],[14586,62788],[25164,62789],[25909,62790],[27514,62791],[27701,62792],[27706,62793],[28780,62794],[29227,62795],[20012,62796],[29357,62797],[62798,149737],
-[32594,62799],[31035,62800],[31993,62801],[32595,62802],[62803,156266],[13505,62804],[62806,156491],[32770,62807],[32896,62808],[62809,157202],[62810,158033],[21341,62811],[34916,62812],[35265,62813],[62814,161970],[35744,62815],[36125,62816],[38021,62817],[38264,62818],[38271,62819],[38376,62820],[62821,167439],[38886,62822],[39029,62823],[39118,62824],[39134,62825],[39267,62826],[62827,17E4],[40060,62828],[40479,62829],[40644,62830],[27503,62831],[62832,63751],[20023,62833],[62834,131207],[38429,
-62835],[25143,62836],[38050,62837],[11908,63521],[11910,63522],[11911,63523],[11912,63524],[11914,63525],[11916,63526],[11917,63527],[11925,63528],[11932,63529],[11941,63531],[11943,63532],[11946,63533],[11948,63534],[11950,63535],[11958,63536],[11964,63537],[11966,63538],[11978,63540],[11980,63541],[11981,63542],[11983,63543],[11990,63544],[11991,63545],[11998,63546],[62368,172969],[62369,135493],[25866,62371],[20029,62374],[28381,62375],[40270,62376],[37343,62377],[62380,161589],[20250,62382],[20264,
-62383],[20392,62384],[20852,62386],[20892,62387],[20964,62388],[21153,62389],[21160,62390],[21307,62391],[21326,62392],[21457,62393],[21464,62394],[22242,62395],[22768,62396],[22788,62397],[22791,62398],[22834,62399],[22836,62400],[23398,62401],[23454,62402],[23455,62403],[23706,62404],[24198,62405],[24635,62406],[25993,62407],[26622,62408],[26628,62409],[26725,62410],[27982,62411],[28860,62412],[30005,62413],[32420,62414],[32428,62415],[32442,62416],[32455,62417],[32463,62418],[32479,62419],[32518,
-62420],[32567,62421],[33402,62422],[33487,62423],[33647,62424],[35270,62425],[35774,62426],[35810,62427],[36710,62428],[36711,62429],[36718,62430],[29713,62431],[31996,62432],[32205,62433],[26950,62434],[31433,62435],[30904,62442],[32956,62444],[36107,62446],[33014,62447],[62448,133607],[32927,62451],[40647,62452],[19661,62453],[40393,62454],[40460,62455],[19518,62456],[62457,171510],[62458,159758],[40458,62459],[62460,172339],[13761,62461],[28314,62463],[33342,62464],[29977,62465],[18705,62467],
-[39532,62468],[39567,62469],[40857,62470],[31111,62471],[62472,164972],[62473,138698],[62474,132560],[62475,142054],[20004,62476],[20096,62478],[20103,62479],[20159,62480],[20203,62481],[20279,62482],[13388,62483],[20413,62484],[15944,62485],[20483,62486],[13437,62488],[13477,62490],[22789,62492],[20955,62493],[20988,62494],[20105,62496],[21136,62498],[21287,62499],[13767,62500],[21417,62501],[13649,62502],[21424,62503],[21539,62506],[13677,62507],[13682,62508],[13953,62509],[21651,62510],[21667,
-62511],[21684,62512],[21689,62513],[21712,62514],[21743,62515],[21784,62516],[21795,62517],[21800,62518],[13720,62519],[13733,62521],[13759,62522],[21975,62523],[13765,62524],[62525,163204],[16467,62538],[62551,135412],[62555,134155],[62574,161992],[62580,155813],[62583,142668],[62585,135287],[62587,135279],[62595,139681],[62609,134550],[16571,62611],[62631,142537],[22098,62641],[62642,134961],[62657,157724],[62659,135375],[62660,141315],[62661,141625],[13819,62662],[62663,152035],[62664,134796],
-[62665,135053],[62666,134826],[16275,62667],[62668,134960],[62669,134471],[62670,135503],[62671,134732],[62673,134827],[62674,134057],[62675,134472],[62676,135360],[62677,135485],[16377,62678],[62679,140950],[25650,62680],[62681,135085],[62682,144372],[62685,134526],[62686,134527],[62688,142421],[62690,134808],[62692,134958],[62694,158544],[21708,62699],[33476,62700],[21945,62701],[62703,171715],[39974,62704],[39606,62705],[62707,142830],[33004,62710],[23580,62711],[62712,157042],[33076,62713],[14231,
-62714],[62716,164029],[37302,62717],[62718,134906],[62719,134671],[62720,134775],[62721,134907],[62723,151019],[13833,62724],[62725,134358],[22191,62726],[62727,141237],[62728,135369],[62729,134672],[62730,134776],[62731,135288],[62732,135496],[62733,164359],[62734,136277],[62735,134777],[62736,151120],[62737,142756],[23124,62738],[62739,135197],[62740,135198],[62741,135413],[62742,135414],[22428,62743],[62744,134673],[62745,161428],[62746,164557],[62747,135093],[62748,134779],[62749,151934],[14083,
-62750],[62751,135094],[62752,135552],[62753,152280],[62754,172733],[62755,149978],[62756,137274],[62757,147831],[62758,164476],[22681,62759],[21096,62760],[13850,62761],[62762,153405],[31666,62763],[23400,62764],[18432,62765],[19244,62766],[40743,62767],[18919,62768],[39967,62769],[39821,62770],[62771,154484],[62772,143677],[22011,62773],[13810,62774],[22153,62775],[23870,63028],[23880,63029],[15868,63031],[14351,63032],[23972,63033],[23993,63034],[14368,63035],[24357,63039],[24451,63040],[14600,
-63041],[14655,63043],[14669,63044],[24791,63045],[24893,63046],[23781,63047],[14729,63048],[25015,63049],[25039,63051],[14776,63052],[25132,63053],[25317,63055],[14840,63057],[22193,63058],[14851,63059],[25570,63060],[25595,63061],[25607,63062],[14923,63064],[25792,63065],[40863,63068],[14999,63069],[25990,63070],[15037,63071],[26111,63072],[26195,63073],[15090,63074],[26258,63075],[15138,63076],[26390,63077],[15170,63078],[26532,63079],[15192,63081],[26698,63082],[26756,63083],[15218,63084],[15217,
-63085],[15227,63086],[26889,63087],[26947,63088],[29276,63089],[26980,63090],[27039,63091],[27013,63092],[27094,63094],[15325,63095],[27237,63096],[27252,63097],[27249,63098],[27266,63099],[15340,63100],[27289,63101],[15346,63102],[27307,63103],[27317,63104],[27348,63105],[27382,63106],[27521,63107],[27585,63108],[27626,63109],[27765,63110],[27818,63111],[15563,63112],[27906,63113],[27910,63114],[27942,63115],[28033,63116],[15599,63117],[28068,63118],[28081,63119],[28181,63120],[28184,63121],[28201,
-63122],[28294,63123],[63124,166336],[28347,63125],[28386,63126],[28378,63127],[40831,63128],[28392,63129],[28393,63130],[28452,63131],[28468,63132],[15686,63133],[63134,147265],[28545,63135],[28606,63136],[15722,63137],[15733,63138],[29111,63139],[23705,63140],[15754,63141],[28716,63142],[15761,63143],[28752,63144],[28756,63145],[28783,63146],[28799,63147],[63149,131877],[17345,63150],[13809,63151],[63152,134872],[13902,58134],[15789,58172],[58173,154725],[26237,58183],[31860,58188],[29837,58197],
-[32402,58215],[17667,58232],[58260,151480],[58270,133901],[58277,158474],[13438,58311],[58317,143087],[58325,146613],[58343,159385],[34673,58364],[25537,58385],[30583,58387],[35210,58390],[58406,147343],[35660,58415],[58440,150729],[18730,58464],[58471,172052],[58472,165564],[58473,165121],[15088,58490],[28815,58511],[58529,140922],[58637,158120],[58646,148043],[26760,58662],[58664,139611],[40802,58702],[37830,58793],[58802,131967],[37734,58888],[37519,58901],[34324,58954],[58986,173147],[16784,59010],
-[26511,59045],[26654,59048],[14435,59051],[59077,149996],[15129,59128],[33942,59176],[59241,149858],[14818,59254],[33920,59259],[17262,59328],[38769,59402],[39323,59427],[18733,59499],[28439,59703],[59704,160009],[28838,59746],[59752,150095],[32357,59753],[23855,59755],[15859,59756],[59758,150109],[59759,137183],[32164,59760],[33830,59761],[21637,59762],[59763,146170],[59765,131604],[22398,59766],[59767,133333],[59768,132633],[16357,59769],[59770,139166],[59771,172726],[28675,59772],[59773,168283],
-[23920,59774],[29583,59775],[59777,166489],[59778,168992],[20424,59779],[32743,59780],[29456,59782],[29496,59784],[29505,59787],[16041,59789],[29173,59792],[59793,149746],[29665,59794],[16074,59796],[16081,59798],[29721,59801],[29726,59802],[29727,59803],[16098,59804],[16112,59805],[16116,59806],[16122,59807],[29907,59808],[16142,59809],[16211,59810],[30061,59812],[30066,59813],[30093,59814],[16252,59815],[30152,59816],[30285,59819],[30324,59821],[16348,59822],[30330,59823],[29064,59825],[22051,59826],
-[35200,59827],[16413,59829],[30531,59830],[16441,59831],[16453,59833],[13787,59834],[30616,59835],[16490,59836],[16495,59837],[30654,59839],[30667,59840],[30744,59842],[30748,59844],[30791,59847],[30801,59848],[30822,59849],[33864,59850],[59851,152885],[31027,59852],[31026,59854],[16649,59856],[31121,59857],[31238,59860],[16743,59862],[16818,59864],[31420,59865],[33401,59866],[16836,59867],[31439,59868],[31451,59869],[16847,59870],[31586,59872],[31596,59873],[31611,59874],[31762,59875],[16992,59877],
-[17018,59878],[31867,59879],[31900,59880],[17036,59881],[31928,59882],[17044,59883],[36755,59885],[28864,59886],[59887,134351],[32207,59888],[32212,59889],[32208,59890],[32253,59891],[32692,59893],[29343,59894],[17303,59895],[32800,59896],[32805,59897],[32814,59899],[32817,59900],[32852,59901],[22452,59903],[28832,59904],[32951,59905],[33001,59906],[17389,59907],[33036,59908],[33038,59910],[33042,59911],[33044,59913],[17409,59914],[15161,59915],[33110,59916],[33113,59917],[33114,59918],[17427,59919],
-[33148,59921],[17445,59923],[17453,59925],[33189,59926],[22511,59927],[33217,59928],[33252,59929],[33364,59930],[17551,59931],[33398,59933],[33482,59934],[33496,59935],[17584,59937],[33623,59938],[38505,59939],[33797,59941],[28917,59942],[33892,59943],[33928,59945],[17668,59946],[33982,59947],[34017,59948],[34040,59949],[34064,59950],[34104,59951],[34130,59952],[17723,59953],[34159,59954],[34160,59955],[34272,59956],[17783,59957],[34418,59958],[34450,59959],[34543,59961],[38469,59962],[17926,59964],
-[17943,59965],[34990,59966],[35071,59967],[35108,59968],[35217,59970],[59971,162151],[35384,59973],[35476,59974],[35508,59975],[35921,59976],[36052,59977],[36082,59978],[36124,59979],[18328,59980],[36291,59982],[18413,59983],[36410,59985],[22356,59987],[22005,59989],[18487,59991],[36558,59992],[36578,59993],[36580,59994],[36589,59995],[36594,59996],[36801,59998],[36810,59999],[36812,6E4],[36915,60001],[18605,60003],[39136,60004],[37395,60005],[18718,60006],[37416,60007],[37464,60008],[37483,60009],
-[37553,60010],[37550,60011],[37567,60012],[37603,60013],[37611,60014],[37619,60015],[37620,60016],[37629,60017],[37699,60018],[37764,60019],[37805,60020],[18757,60021],[18769,60022],[37911,60024],[37917,60026],[37933,60027],[37950,60028],[18794,60029],[37972,60030],[38009,60031],[38189,60032],[38306,60033],[18855,60034],[38388,60035],[38451,60036],[18917,60037],[18980,60039],[38720,60040],[18997,60041],[38834,60042],[38850,60043],[19172,60045],[39097,60047],[19225,60048],[39153,60049],[22596,60050],
-[39193,60052],[39223,60055],[39261,60057],[39266,60058],[19312,60059],[39365,60060],[19357,60061],[39484,60062],[39695,60063],[39785,60065],[39901,60067],[39921,60068],[39924,60069],[19565,60070],[39968,60071],[14191,60072],[60073,138178],[40265,60074],[40702,60076],[22096,60077],[40381,60079],[40444,60081],[38134,60082],[36790,60083],[40625,60086],[40637,60087],[40646,60088],[38108,60089],[40674,60090],[40689,60091],[40696,60092],[40772,60094],[60095,131220],[60096,131767],[60097,132E3],[38083,60099],
-[60101,132311],[38081,60103],[60105,132565],[60106,132629],[60107,132726],[60108,136890],[22359,60109],[29043,60110],[60111,133826],[60112,133837],[60113,134079],[60115,194619],[60116,134091],[21662,60117],[60118,134139],[60119,134203],[60120,134227],[60121,134245],[60122,134268],[60124,134285],[60126,134325],[60127,134365],[60128,134381],[60129,134511],[60130,134578],[60131,134600],[60135,134660],[60136,134670],[60137,134871],[60138,135056],[60139,134957],[60140,134771],[60142,135100],[60144,135260],
-[60145,135247],[60146,135286],[60149,135304],[60150,135318],[13895,60151],[60152,135359],[60154,135471],[60155,135483],[21348,60156],[60158,135907],[60159,136053],[60160,135990],[60162,136567],[60163,136729],[60164,137155],[60165,137159],[28859,60167],[60168,137261],[60169,137578],[60170,137773],[60171,137797],[60172,138282],[60173,138352],[60174,138412],[60175,138952],[60177,138965],[60178,139029],[29080,60179],[60181,139333],[27113,60182],[14024,60183],[60184,139900],[60185,140247],[60186,140282],
-[60187,141098],[60188,141425],[60189,141647],[60191,141671],[60192,141715],[60193,142037],[60195,142056],[60197,142094],[60199,142143],[60202,142412],[60204,142472],[60205,142519],[60206,154600],[60207,142600],[60208,142610],[60209,142775],[60210,142741],[60211,142914],[60212,143220],[60213,143308],[60214,143411],[60215,143462],[60216,144159],[60217,144350],[60222,144743],[60223,144883],[60227,144922],[60228,145174],[22709,60231],[60234,146087],[60237,146961],[60238,147129],[60243,147737],[60245,
-148206],[60246,148237],[60248,148276],[60249,148374],[60258,148484],[60259,148694],[22408,60260],[60261,149108],[60263,149295],[60271,149522],[60272,149755],[60273,150037],[60275,150208],[22885,60277],[60279,151430],[60282,151596],[22335,60284],[60286,152217],[60287,152601],[60291,152646],[60292,152686],[60296,152895],[60298,152926],[60300,152930],[60301,152934],[60302,153543],[60304,153693],[60309,153859],[60312,154286],[60313,154505],[60314,154630],[22433,60316],[29009,60317],[60319,155906],[60322,
-156082],[60325,156674],[60326,156746],[60330,156804],[60334,156808],[60336,156946],[60338,157119],[60339,157365],[22201,60347],[60349,157436],[13848,60355],[60357,157593],[60358,157806],[60360,157790],[60362,157895],[60366,157990],[60368,158009],[60371,158202],[60373,158253],[60378,158260],[60379,158555],[60383,158621],[60385,158884],[60388,159150],[60392,159819],[60393,160205],[60395,160384],[60396,160389],[60399,160395],[60401,160486],[38047,60404],[60405,160848],[14009,60416],[60424,161740],[60425,
-161880],[22230,60426],[60435,162269],[60441,162301],[60442,162314],[60443,162571],[60444,163174],[60448,163849],[60459,163875],[60463,163912],[60466,163971],[60479,163984],[60480,164084],[60481,164142],[60483,164175],[60485,164271],[60486,164378],[60487,164614],[60488,164655],[60489,164746],[60491,164968],[60492,165546],[25574,60494],[60495,166230],[60498,166328],[60500,166375],[60502,166376],[60503,166726],[60504,166868],[60506,166921],[60508,167877],[60509,168172],[60511,168208],[60512,168252],
-[15863,60513],[60514,168286],[60515,150218],[36816,60516],[60519,169191],[60521,169392],[60522,169400],[60523,169778],[60524,170193],[60525,170313],[60526,170346],[60527,170435],[60528,170536],[60529,170766],[60530,171354],[60531,171419],[32415,60532],[60533,171768],[60534,171811],[19620,60535],[38215,60536],[60537,172691],[29090,60538],[60539,172799],[60542,173515],[19868,60543],[60544,134300],[36798,60545],[36794,60547],[60548,140464],[36793,60549],[60550,150163],[20202,60555],[60557,166700],[36480,
-60560],[60561,137205],[60563,166764],[60564,166809],[60566,157359],[60568,161365],[60570,153141],[60571,153942],[20122,60572],[60573,155265],[60576,134765],[60579,147080],[60580,150686],[60583,137206],[60584,137339],[60587,154698],[60589,152337],[15814,60590],[60596,155352],[19996,60600],[60601,135146],[60602,134473],[60603,145082],[60638,151880],[21982,60644],[34694,60672],[60676,135361],[60679,149254],[23440,60680],[60682,157843],[60684,141044],[60685,163119],[60686,147875],[60687,163187],[60688,
-159440],[60689,160438],[60691,135641],[60693,146684],[60694,173737],[60695,134828],[60698,138402],[60700,151490],[60702,135147],[60706,142752],[60710,135148],[60711,134666],[60714,135149],[60717,135559],[19994,60721],[19972,60722],[23309,60724],[13996,60727],[21373,60729],[13989,60730],[22682,60732],[60733,150382],[22442,60736],[60737,154261],[60738,133497],[60741,140389],[60746,146686],[60747,171824],[60749,151465],[60750,169374],[60753,146870],[60755,157619],[60756,145184],[60759,147191],[60760,
-146988],[60785,143578],[60789,135849],[22439,60790],[60791,149859],[60794,159918],[60801,137068],[60806,160100],[60809,159010],[60810,150242],[39963,60837],[60838,149822],[15878,60846],[60881,159011],[60887,132092],[60891,146685],[60893,149785],[22394,60904],[21722,60912],[29050,60928],[60949,150135],[60955,166490],[60962,194624],[60976,137275],[61E3,155993],[61014,144373],[61019,166850],[61024,138566],[61054,159441],[13877,61065],[61084,166701],[21024,61088],[15384,61089],[61090,146631],[61091,155351],
-[61092,161366],[61093,152881],[61094,137540],[61096,170243],[61097,159196],[61098,159917],[61100,156077],[61101,166415],[61102,145015],[61103,131310],[61104,157766],[61105,151310],[17762,61106],[23327,61107],[61108,156492],[40784,61109],[40614,61110],[61111,156267],[20962,57415],[21314,57416],[26285,57520],[22620,57547],[21843,57566],[15749,57594],[24928,57608],[18606,57668],[38845,57676],[57693,137335],[24755,57703],[33828,57711],[38932,57748],[57749,147596],[57764,143486],[57787,138813],[15147,
-57798],[15666,57824],[57857,132021],[28801,57944],[23708,57959],[58017,132547],[14128,58028],[58096,136054],[58097,150034],[58111,166699],[58112,155779],[256,62233],[193,62234],[461,62235],[192,62236],[274,62237],[201,62238],[282,62239],[200,62240],[332,62241],[211,62242],[465,62243],[210,62244],62245,[7870,62246],62247,[7872,62248],[202,62249],[257,62250],[225,62251],[462,62252],[224,62253],[593,62254],[275,62255],[233,62256],[283,62257],[232,62258],[299,62259],[237,62260],[464,62261],[236,62262],
-[333,62263],[243,62264],[466,62265],[242,62266],[363,62267],[250,62268],[468,62269],[249,62270],[470,62271],[472,62272],[474,62273],[476,62274],[252,62275],62276,[7871,62277],62278,[7873,62279],[234,62280],[609,62281],[643,63551],[592,63552],[603,63553],[596,63554],[629,63555],[339,63556],[248,63557],[331,63558],[650,63559],[618,63560],{f:2,c:62282},[11933,63530],[11974,63539],[12003,63547],20539,28158,[62841,171123],62842,[15817,62843],34959,[62845,147790],28791,23797,[19232,62848],[62849,152013],
-[13657,62850],[62851,154928],24866,[62853,166450],36775,37366,29073,26393,29626,[62859,144001],[62860,172295],[15499,62861],[62862,137600],[19216,62863],30948,29698,20910,[62867,165647],[16393,62868],27235,[62870,172730],[16931,62871],34319,31274,[62875,170311],[62876,166634],38741,28749,21284,[62880,139390],37876,30425,[62883,166371],62884,30685,20131,20464,20668,20015,20247,62891,21556,32139,22674,22736,[62896,138678],24210,24217,24514,[62900,141074],25995,[62902,144377],26905,27203,[62905,146531],
-27903,29184,[62909,148741],29580,[16091,62911],[62912,150035],23317,29881,35715,[62916,154788],[62917,153237],31379,31724,31939,32364,33528,34199,62924,34960,62926,36537,62928,36815,34143,39392,37409,62933,[62934,167353],[62935,136255],[16497,62936],[17058,62937],23066,39016,26475,[17014,62944],22333,34262,[62948,149883],33471,[62950,160013],[19585,62951],[62952,159092],23931,[62954,158485],[62955,159678],{f:2,c:62956},23446,62959,32347],"Adobe-GB1":[{f:95,c:32},{f:3,c:12288},[183,12539],713,711,
-168,12291,12293,8212,65374,8214,[8230,8943],{f:2,c:8216},{f:2,c:8220},{f:2,c:12308},{f:8,c:12296},{f:2,c:12310},{f:2,c:12304},177,215,247,8758,{f:2,c:8743},8721,8719,8746,8745,8712,8759,8730,8869,8741,8736,8978,8857,8747,8750,8801,8780,8776,8765,8733,8800,{f:2,c:8814},{f:2,c:8804},8734,8757,8756,9794,9792,176,{f:2,c:8242},8451,65284,164,{f:2,c:65504},8240,167,8470,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,8251,8594,{f:2,c:8592},8595,12307,{f:20,c:9352},{f:20,c:9332},{f:10,c:9312},{f:10,
-c:12832},{f:12,c:8544},{f:3,c:65281},65509,{f:89,c:65285},65507,{f:83,c:12353},{f:86,c:12449},{f:17,c:913},{f:7,c:931},{f:17,c:945},{f:7,c:963},{f:7,c:59277},{f:2,c:65077},{f:2,c:65081},{f:2,c:65087},{f:2,c:65085},{f:4,c:65089},{f:2,c:59284},{f:2,c:65083},{f:2,c:65079},65073,59286,{f:2,c:65075},{f:6,c:1040},1025,{f:32,c:1046},1105,{f:26,c:1078},257,225,462,224,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,476,252,234,593,7743,324,328,505,609,{f:37,c:12549},0,{f:76,c:9472},
-{s:126},21834,38463,22467,25384,21710,21769,21696,30353,30284,34108,30702,33406,30861,29233,38552,38797,27688,23433,20474,25353,26263,23736,33018,26696,32942,26114,30414,20985,25942,29100,32753,34948,20658,22885,25034,28595,33453,25420,25170,21485,21543,31494,[12043,20843],30116,24052,25300,36299,38774,25226,32793,22365,38712,32610,29240,[12137,30333],26575,30334,25670,20336,36133,25308,31255,26001,29677,25644,25203,33324,39041,26495,29256,25198,25292,20276,29923,21322,21150,32458,37030,24110,26758,
-27036,33152,32465,26834,30917,34444,38225,20621,35876,33502,32990,21253,35090,21093,34180,38649,20445,22561,39281,23453,25265,25253,26292,35961,40077,29190,26479,30865,24754,21329,21271,36744,32972,36125,38049,20493,29384,22791,24811,28953,34987,22868,33519,26412,31528,23849,32503,29997,27893,36454,36856,36924,[12240,40763],[12112,27604],37145,31508,24444,30887,34006,34109,27605,27609,27606,24065,24199,30201,38381,25949,24330,24517,36767,22721,33218,36991,38491,38829,36793,32534,36140,25153,20415,
-21464,21342,{f:2,c:36776},36779,36941,26631,24426,33176,34920,40150,24971,21035,30250,24428,25996,28626,28392,23486,25672,20853,20912,26564,19993,31177,39292,28851,30149,24182,29627,33760,25773,25320,38069,27874,21338,21187,25615,38082,31636,20271,24091,33334,33046,33162,28196,27850,39539,25429,[12056,21340],21754,34917,22496,19981,24067,27493,31807,37096,24598,25830,29468,35009,26448,25165,36130,30572,36393,37319,24425,33756,34081,39184,21442,34453,27531,24813,24808,28799,33485,33329,20179,27815,
-34255,25805,31961,27133,26361,33609,21397,31574,20391,20876,27979,23618,36461,25554,21449,33580,33590,26597,30900,25661,23519,23700,24046,35815,25286,26612,35962,25600,25530,34633,39307,35863,32544,38130,20135,38416,39076,26124,29462,22330,23581,24120,38271,20607,32928,[12058,21378],25950,30021,21809,20513,36229,25220,38046,26397,22066,28526,24034,21557,28818,36710,25199,25764,25507,24443,28552,37108,[12162,33251],[12192,36784],23576,26216,24561,27785,38472,36225,34924,25745,31216,22478,27225,25104,
-21576,20056,31243,24809,28548,35802,25215,36894,39563,31204,21507,30196,25345,21273,27744,36831,24347,39536,32827,40831,20360,23610,[12186,36196],32709,26021,28861,20805,20914,[12173,34411],23815,23456,25277,37228,30068,36364,31264,24833,31609,20167,32504,30597,19985,33261,21021,20986,27249,21416,36487,38148,38607,28353,38500,26970,30784,20648,30679,25616,35302,22788,25571,24029,31359,26941,20256,33337,21912,20018,30126,31383,24162,24202,38383,21019,21561,28810,25462,38180,22402,26149,26943,37255,
-21767,28147,32431,34850,25139,32496,30133,33576,30913,38604,36766,24904,29943,35789,27492,21050,36176,27425,32874,33905,22257,21254,20174,19995,20945,31895,37259,31751,20419,36479,31713,31388,25703,23828,20652,33030,30209,31929,28140,32736,26449,23384,[12072,23544],30923,25774,25619,25514,25387,38169,25645,36798,31572,30249,25171,[12068,22823],21574,[12109,27513],20643,25140,24102,27526,20195,36151,34955,24453,36910,24608,32829,25285,20025,21333,37112,25528,32966,26086,27694,20294,24814,28129,35806,
-24377,34507,24403,25377,20826,33633,26723,[12049,20992],25443,36424,20498,23707,31095,23548,21040,31291,24764,36947,30423,24503,24471,30340,36460,28783,30331,31561,30634,20979,37011,22564,20302,28404,36842,25932,31515,29380,28068,32735,23265,25269,24213,22320,33922,31532,24093,24351,36882,32532,39072,25474,28359,30872,28857,20856,38747,22443,30005,20291,30008,24215,24806,22880,28096,27583,30857,21500,38613,20939,20993,25481,21514,38035,35843,36300,29241,30879,34678,36845,35853,21472,19969,30447,21486,
-38025,39030,[12237,40718],38189,23450,35746,20002,19996,20908,33891,25026,21160,26635,20375,24683,20923,27934,20828,25238,[12099,26007],38497,[12182,35910],36887,30168,37117,30563,27602,29322,29420,35835,22581,30585,36172,26460,38208,32922,24230,28193,22930,31471,30701,38203,27573,26029,32526,22534,20817,38431,23545,22697,21544,36466,25958,39039,22244,38045,30462,36929,25479,21702,22810,22842,22427,36530,26421,36346,33333,21057,24816,22549,34558,23784,40517,20420,39069,35769,23077,24694,21380,25212,
-36943,37122,39295,24681,[12157,32780],[12041,20799],[12159,32819],23572,39285,27953,[12038,20108],36144,21457,32602,31567,20240,20047,38400,27861,29648,34281,24070,30058,32763,27146,30718,38034,32321,20961,28902,21453,36820,33539,36137,29359,39277,27867,22346,33459,[12101,26041],32938,25151,38450,22952,20223,35775,32442,25918,33778,[12206,38750],21857,39134,32933,21290,35837,21536,32954,24223,27832,36153,33452,37210,21545,27675,20998,32439,22367,28954,27774,31881,22859,20221,24575,24868,31914,20016,
-23553,26539,34562,23792,38155,39118,30127,28925,36898,20911,32541,35773,22857,20964,20315,21542,22827,25975,32932,23413,25206,25282,36752,24133,27679,31526,20239,20440,26381,28014,28074,31119,34993,24343,29995,25242,36741,20463,37340,26023,33071,33105,24220,33104,36212,21103,35206,36171,22797,20613,20184,[12201,38428],[12119,29238],33145,36127,23500,35747,38468,22919,32538,21648,22134,22030,35813,25913,27010,38041,30422,28297,[12082,24178],[12130,29976],26438,26577,31487,32925,36214,24863,31174,25954,
-36195,20872,21018,38050,32568,32923,32434,23703,28207,26464,31705,30347,[12220,39640],33167,32660,31957,25630,38224,31295,21578,21733,27468,25601,[12093,25096],40509,33011,30105,21106,[12208,38761],33883,26684,34532,38401,38548,38124,20010,21508,32473,26681,36319,32789,26356,24218,32697,22466,32831,26775,[12079,24037],25915,21151,24685,40858,20379,36524,20844,23467,[12088,24339],24041,27742,25329,36129,20849,38057,21246,27807,33503,29399,22434,26500,36141,22815,36764,33735,21653,31629,20272,27837,
-23396,22993,[12238,40723],21476,34506,[12219,39592],[12181,35895],32929,25925,39038,22266,38599,21038,[12128,29916],21072,23521,25346,35074,20054,25296,24618,26874,20851,23448,20896,35266,31649,39302,32592,24815,28748,36143,20809,[12084,24191],36891,29808,35268,22317,30789,24402,40863,38394,36712,[12225,39740],35809,30328,26690,26588,36330,36149,21053,36746,28378,26829,38149,37101,22269,26524,35065,36807,21704,39608,23401,28023,27686,20133,23475,39559,37219,25E3,37039,38889,21547,28085,23506,20989,
-21898,32597,32752,25788,25421,26097,25022,24717,28938,27735,27721,22831,26477,33322,22741,22158,35946,27627,37085,22909,32791,21495,28009,21621,21917,33655,33743,26680,[12146,31166],21644,20309,21512,30418,35977,38402,27827,28088,36203,35088,40548,36154,22079,[12234,40657],30165,24456,29408,24680,21756,20136,27178,34913,24658,36720,21700,28888,34425,40511,27946,23439,24344,32418,21897,20399,29492,21564,21402,20505,21518,21628,20046,24573,29786,22774,33899,32993,34676,29392,31946,28246,24359,34382,
-21804,25252,20114,27818,25143,33457,21719,21326,29502,28369,30011,21010,21270,35805,27088,24458,24576,28142,22351,27426,29615,26707,36824,32531,25442,24739,21796,30186,35938,28949,28067,23462,24187,33618,24908,40644,30970,34647,31783,30343,20976,24822,29004,26179,24140,24653,35854,28784,25381,36745,24509,24674,34516,22238,27585,24724,24935,21321,24800,26214,36159,31229,20250,28905,27719,35763,35826,32472,33636,26127,23130,39746,27985,28151,35905,27963,20249,[12117,28779],33719,25110,24785,38669,36135,
-31096,20987,22334,22522,26426,30072,31293,31215,31637,32908,39269,36857,28608,35749,40481,23020,32489,32521,21513,26497,26840,36753,31821,38598,21450,24613,30142,27762,21363,23241,32423,25380,[12047,20960],33034,[12080,24049],34015,25216,20864,23395,20238,31085,21058,24760,27982,23492,23490,35745,35760,26082,24524,38469,22931,32487,32426,22025,26551,22841,20339,23478,21152,33626,39050,36158,30002,38078,20551,31292,20215,26550,39550,23233,27516,30417,22362,23574,31546,38388,29006,20860,32937,33392,
-22904,32516,33575,26816,26604,30897,30839,25315,25441,31616,20461,21098,20943,33616,27099,37492,36341,36145,35265,38190,31661,20214,20581,33328,21073,39279,28176,28293,28071,24314,20725,23004,23558,27974,27743,30086,33931,26728,22870,35762,21280,37233,38477,34121,26898,30977,28966,33014,20132,37066,27975,39556,23047,22204,25605,38128,30699,20389,33050,29409,[12179,35282],39290,32564,32478,21119,25945,37237,36735,36739,21483,31382,25581,25509,30342,31224,34903,38454,25130,21163,33410,26708,26480,25463,
-30571,31469,27905,32467,35299,22992,25106,34249,33445,30028,20511,20171,30117,35819,23626,[12081,24062],31563,[12100,26020],[12198,37329],20170,27941,35167,32039,38182,20165,35880,36827,38771,26187,31105,36817,28908,28024,23613,21170,33606,20834,33550,30555,26230,40120,20140,24778,31934,31923,32463,20117,35686,26223,39048,38745,22659,25964,38236,24452,30153,38742,31455,31454,20928,28847,31384,25578,31350,32416,29590,[12210,38893],20037,28792,20061,37202,21417,25937,26087,[12165,33276],33285,21646,
-23601,30106,38816,25304,29401,30141,23621,39545,33738,23616,21632,30697,20030,27822,32858,25298,25454,24040,20855,36317,36382,38191,20465,21477,24807,28844,21095,25424,40515,23071,20518,30519,21367,32482,25733,25899,25225,25496,20500,29237,35273,20915,35776,32477,22343,33740,38055,20891,21531,23803,20426,31459,27994,37089,39567,21888,21654,21345,21679,24320,25577,26999,20975,24936,21002,22570,21208,22350,30733,30475,24247,24951,31968,25179,25239,20130,28821,32771,25335,28900,38752,22391,33499,26607,
-26869,30933,39063,31185,22771,21683,21487,28212,20811,21051,23458,35838,32943,21827,22438,24691,22353,21549,31354,24656,23380,25511,25248,[12061,21475],25187,23495,26543,21741,31391,33510,37239,24211,35044,22840,22446,25358,36328,33007,22359,31607,20393,24555,23485,27454,21281,31568,29378,26694,30719,30518,26103,20917,20111,30420,23743,31397,33909,22862,39745,20608,39304,24871,28291,22372,26118,25414,22256,25324,25193,24275,38420,22403,25289,21895,34593,33098,36771,21862,33713,26469,36182,34013,23146,
-26639,25318,31726,38417,20848,28572,35888,25597,35272,25042,32518,28866,28389,29701,27028,29436,24266,37070,26391,28010,25438,21171,29282,[12156,32769],20332,23013,37226,28889,28061,21202,20048,38647,38253,34174,30922,32047,20769,22418,25794,32907,31867,27882,26865,26974,20919,21400,26792,29313,40654,31729,29432,31163,28435,29702,26446,[12197,37324],40100,31036,33673,33620,21519,26647,20029,21385,21169,30782,21382,21033,20616,20363,20432,30178,[12148,31435],31890,27813,[12202,38582],[12050,21147],
-29827,21737,20457,32852,33714,36830,38256,24265,24604,28063,24088,25947,33080,38142,24651,28860,32451,31918,20937,26753,31921,33391,20004,36742,37327,26238,20142,35845,25769,32842,20698,30103,29134,23525,36797,28518,20102,25730,38243,24278,26009,21015,35010,28872,21155,29454,29747,26519,30967,38678,20020,37051,40158,28107,20955,36161,21533,25294,29618,33777,38646,40836,38083,20278,32666,20940,28789,38517,23725,39046,21478,20196,28316,29705,27060,30827,39311,30041,21016,30244,27969,26611,20845,40857,
-32843,21657,31548,31423,38534,22404,25314,38471,27004,23044,25602,31699,28431,38475,33446,21346,39045,24208,28809,25523,21348,34383,40065,40595,30860,38706,36335,36162,[12229,40575],28510,31108,24405,38470,25134,39540,21525,38109,20387,26053,23653,23649,32533,34385,27695,24459,29575,28388,32511,23782,25371,23402,28390,21365,20081,25504,30053,25249,36718,20262,20177,27814,32438,35770,33821,34746,32599,36923,38179,31657,39585,35064,33853,27931,39558,32476,22920,[12231,40635],29595,30721,34434,39532,
-39554,22043,21527,22475,20080,40614,21334,36808,33033,30610,39314,34542,28385,34067,26364,24930,28459,35881,33426,33579,30450,27667,24537,33725,29483,33541,38170,[12113,27611],[12141,30683],38086,21359,33538,20882,24125,35980,36152,20040,29611,26522,26757,37238,38665,29028,27809,30473,23186,38209,27599,32654,26151,23504,22969,23194,38376,38391,20204,33804,33945,27308,30431,38192,29467,26790,23391,30511,37274,38753,31964,36855,35868,24357,[12150,31859],31192,35269,27852,34588,23494,24130,26825,30496,
-32501,20885,20813,21193,23081,32517,[12207,38754],33495,25551,30596,34256,31186,28218,24217,22937,34065,28781,27665,25279,[12139,30399],25935,24751,38397,26126,34719,40483,38125,21517,21629,35884,{f:2,c:25720},34321,27169,33180,30952,25705,39764,25273,26411,33707,22696,40664,27819,28448,23518,38476,35851,29279,26576,25287,29281,20137,22982,27597,22675,26286,24149,21215,24917,[12106,26408],[12140,30446],30566,29287,31302,25343,21738,21584,38048,37027,23068,32435,27670,20035,22902,32784,22856,21335,
-30007,38590,22218,25376,33041,24700,38393,28118,21602,39297,20869,23273,33021,22958,38675,20522,27877,23612,25311,20320,21311,33147,36870,28346,34091,25288,24180,30910,25781,25467,24565,23064,37247,40479,23615,25423,32834,23421,21870,38218,38221,28037,24744,26592,29406,20957,23425,25319,27870,[12124,29275],25197,38062,32445,33043,27987,20892,24324,22900,21162,24594,[12069,22899],26262,34384,30111,25386,25062,31983,35834,21734,27431,40485,27572,34261,21589,20598,27812,21866,36276,29228,24085,24597,
-29750,25293,25490,29260,24472,28227,27966,25856,28504,30424,30928,30460,30036,21028,21467,20051,24222,26049,32810,32982,25243,21638,21032,28846,34957,36305,27873,21624,32986,22521,35060,36180,38506,37197,20329,27803,21943,30406,30768,25256,28921,28558,24429,34028,26842,30844,31735,33192,26379,40527,25447,30896,22383,30738,38713,25209,25259,21128,29749,27607,21860,33086,30130,[12138,30382],21305,30174,20731,23617,35692,31687,20559,[12122,29255],39575,39128,28418,29922,31080,25735,30629,25340,39057,
-36139,21697,32856,20050,22378,33529,33805,24179,20973,29942,35780,23631,22369,27900,39047,23110,30772,39748,36843,31893,21078,25169,38138,20166,33670,33889,33769,33970,22484,26420,22275,26222,28006,35889,26333,28689,26399,27450,26646,25114,22971,19971,20932,28422,26578,27791,20854,26827,22855,27495,30054,23822,33040,40784,26071,31048,31041,39569,36215,23682,20062,20225,21551,22865,30732,22120,[12115,27668],36804,24323,27773,27875,35755,25488,24688,27965,29301,25190,38030,38085,21315,36801,31614,20191,
-35878,20094,40660,38065,38067,21069,28508,36963,27973,35892,22545,23884,[12107,27424],27465,26538,21595,33108,32652,22681,34103,24378,25250,27207,38201,25970,24708,26725,30631,20052,20392,24039,38808,25772,32728,23789,20431,31373,20999,33540,19988,24623,31363,38054,20405,20146,31206,29748,21220,33465,25810,31165,23517,27777,38738,36731,27682,20542,21375,28165,25806,26228,27696,24773,39031,35831,24198,29756,31351,31179,19992,37041,29699,27714,22234,37195,27845,36235,21306,34502,26354,36527,23624,39537,
-28192,21462,23094,40843,36259,21435,22280,39079,26435,37275,27849,20840,30154,25331,[12125,29356],21048,21149,32570,28820,30264,21364,40522,27063,30830,38592,35033,32676,28982,29123,20873,26579,29924,22756,25880,22199,35753,39286,25200,32469,24825,28909,22764,20161,[12040,20154],24525,38887,20219,35748,20995,22922,32427,25172,20173,[12103,26085],25102,33592,33993,33635,34701,29076,28342,23481,32466,20887,25545,26580,[12161,32905],33593,34837,20754,23418,22914,36785,20083,27741,[12042,20837],35109,
-36719,38446,34122,29790,38160,38384,28070,33509,24369,25746,27922,33832,33134,40131,22622,36187,19977,21441,20254,25955,26705,21971,20007,25620,39578,25195,23234,29791,[12170,33394],28073,26862,20711,33678,30722,26432,21049,27801,32433,20667,21861,29022,31579,26194,29642,33515,26441,[12077,23665],21024,29053,34923,38378,38485,25797,36193,33203,21892,27733,25159,32558,22674,20260,21830,36175,26188,19978,23578,35059,26786,25422,31245,28903,33421,21242,38902,23569,21736,37045,32461,22882,36170,34503,
-[12166,33292],33293,36198,25668,23556,24913,28041,31038,35774,30775,30003,21627,20280,[12189,36523],28145,23072,32453,31070,27784,23457,23158,29978,32958,24910,28183,22768,[12131,29983],29989,29298,21319,32499,30465,30427,21097,32988,22307,24072,22833,29422,26045,28287,35799,[12075,23608],34417,[12055,21313],[12143,30707],25342,26102,20160,[12215,39135],34432,23454,35782,21490,[12142,30690],20351,23630,39542,22987,24335,[12144,31034],[12064,22763],19990,26623,20107,25325,35475,36893,21183,26159,21980,
-22124,36866,20181,20365,37322,39280,[12114,27663],24066,24643,23460,35270,35797,25910,[12095,25163],[12216,39318],23432,23551,25480,21806,21463,30246,20861,34092,26530,26803,27530,25234,36755,21460,33298,28113,30095,20070,36174,23408,29087,34223,26257,26329,32626,34560,[12233,40653],[12239,40736],23646,26415,36848,26641,26463,25101,31446,22661,24246,25968,28465,24661,21047,32781,25684,34928,29993,24069,26643,25332,38684,21452,29245,35841,[12116,27700],30561,31246,21550,30636,39034,33308,35828,30805,
-26388,28865,26031,25749,22070,24605,31169,21496,19997,27515,32902,23546,21987,22235,20282,20284,39282,24051,26494,32824,24578,39042,36865,23435,35772,35829,25628,33368,25822,22013,33487,37221,20439,32032,36895,31903,20723,22609,28335,23487,35785,32899,37240,33948,31639,34429,38539,38543,32485,39635,30862,23681,31319,36930,38567,31071,23385,25439,31499,34001,26797,21766,32553,29712,32034,38145,25152,22604,20182,23427,22905,22612,29549,25374,36427,36367,32974,33492,25260,21488,27888,37214,22826,24577,
-27760,22349,25674,36138,30251,28393,22363,27264,30192,28525,35885,35848,22374,27631,34962,30899,25506,21497,28845,27748,22616,25642,22530,26848,33179,21776,31958,20504,36538,28108,36255,28907,25487,28059,28372,32486,33796,26691,36867,28120,38518,35752,22871,29305,34276,33150,30140,35466,26799,21076,36386,38161,25552,39064,36420,21884,20307,26367,22159,24789,28053,21059,23625,22825,28155,22635,[12133,3E4],29980,24684,33300,33094,25361,26465,36834,30522,36339,36148,38081,24086,21381,21548,28867,27712,
-24311,20572,20141,24237,25402,33351,36890,26704,37230,30643,21516,38108,24420,31461,26742,25413,31570,32479,30171,20599,25237,22836,36879,20984,31171,31361,22270,24466,36884,28034,23648,[12063,22303],21520,20820,28237,22242,25512,39059,33151,34581,35114,36864,21534,23663,33216,25302,25176,33073,40501,38464,39534,39548,26925,22949,25299,21822,25366,21703,34521,27964,23043,[12129,29926],34972,27498,22806,35916,24367,28286,29609,39037,20024,28919,23436,30871,25405,26202,30358,24779,23451,23113,19975,
-33109,27754,29579,20129,26505,[12153,32593],24448,26106,26395,24536,22916,23041,24013,24494,21361,38886,36829,26693,22260,21807,24799,20026,28493,32500,33479,33806,22996,20255,20266,23614,32428,26410,34074,21619,30031,32963,21890,39759,20301,28205,35859,23561,24944,21355,30239,28201,34442,[12098,25991],38395,32441,21563,31283,32010,38382,21985,32705,29934,25373,34583,28065,31389,25105,26017,21351,25569,27779,24043,21596,38056,20044,27745,35820,23627,[12102,26080],33436,26791,21566,21556,[12111,27595],
-27494,20116,25410,21320,33310,20237,20398,22366,25098,38654,26212,29289,21247,21153,24735,35823,26132,29081,26512,35199,30802,30717,26224,22075,21560,38177,29306,31232,24687,24076,24713,33181,[12067,22805],24796,29060,28911,28330,27728,29312,27268,34989,24109,20064,23219,21916,38115,27927,31995,38553,25103,32454,30606,34430,21283,38686,36758,26247,23777,20384,29421,19979,21414,22799,21523,25472,38184,20808,20185,40092,32420,21688,36132,34900,33335,38386,28046,24358,23244,26174,38505,29616,29486,21439,
-33146,39301,32673,23466,38519,38480,32447,30456,21410,38262,[12217,39321],31665,35140,28248,20065,32724,31077,35814,24819,21709,20139,39033,24055,27233,20687,21521,35937,33831,30813,38660,21066,21742,22179,38144,28040,23477,28102,26195,[12073,23567],23389,26657,32918,21880,31505,25928,26964,20123,27463,34638,38795,21327,25375,25658,37034,26012,32961,35856,20889,26800,21368,34809,25032,27844,27899,35874,23633,34218,33455,38156,27427,[12191,36763],26032,24571,[12092,24515],20449,34885,26143,33125,29481,
-24826,20852,21009,22411,24418,37026,[12175,34892],37266,24184,26447,24615,22995,20804,20982,33016,21256,27769,38596,29066,20241,20462,32670,26429,21957,38152,31168,34966,32483,22687,25100,38656,34394,22040,39035,24464,35768,33988,37207,21465,26093,24207,30044,24676,32110,23167,32490,32493,36713,21927,23459,24748,26059,[12126,29572],36873,30307,30505,32474,38772,34203,23398,[12147,31348],38634,[12174,34880],21195,29071,24490,26092,35810,23547,39535,24033,27529,27739,35757,35759,36874,36805,21387,25276,
-40486,40493,21568,20011,33469,[12123,29273],34460,23830,34905,28079,38597,21713,20122,35766,28937,21693,38409,28895,28153,30416,20005,30740,34578,23721,24310,[12180,35328],39068,38414,28814,27839,22852,25513,30524,34893,28436,33395,22576,29141,21388,30746,38593,21761,24422,28976,23476,35866,39564,27523,22830,40495,31207,26472,25196,20335,30113,[12154,32650],27915,38451,27687,20208,30162,20859,26679,28478,36992,33136,22934,29814,25671,23591,36965,31377,35875,23002,21676,33280,33647,35201,32768,26928,
-22094,32822,29239,37326,20918,20063,39029,25494,19994,21494,26355,33099,22812,28082,[12032,19968],22777,21307,25558,38129,20381,20234,[12176,34915],39056,22839,36951,31227,20202,33008,30097,27778,23452,23016,24413,26885,34433,20506,24050,[12036,20057],30691,20197,33402,25233,26131,[12194,37009],23673,20159,24441,33222,36920,32900,30123,20134,35028,24847,27589,24518,20041,30410,28322,35811,35758,35850,35793,24322,32764,32716,32462,33589,33643,22240,27575,[12211,38899],38452,23035,21535,38134,28139,
-23493,39278,23609,24341,38544,21360,33521,27185,23156,40560,24212,32552,33721,{f:2,c:33828},33639,34631,36814,36194,30408,24433,39062,30828,26144,21727,25317,20323,33219,30152,24248,38605,36362,34553,21647,27891,28044,27704,24703,21191,[12132,29992],24189,20248,24736,24551,23588,30001,37038,38080,29369,27833,28216,[12195,37193],26377,21451,21491,20305,37321,35825,[12060,21448],24188,36802,28132,20110,30402,27014,34398,24858,33286,20313,20446,36926,40060,24841,28189,28180,38533,20104,23089,[12204,
-38632],19982,23679,31161,23431,35821,[12155,32701],[12127,29577],22495,33419,37057,21505,36935,21947,23786,24481,24840,27442,29425,32946,35465,28020,23507,35029,39044,35947,39533,40499,28170,20900,20803,22435,34945,21407,25588,36757,22253,21592,22278,29503,28304,32536,36828,33489,24895,24616,38498,[12104,26352],32422,36234,36291,38053,23731,31908,[12105,26376],24742,38405,32792,20113,37095,21248,38504,20801,36816,34164,37213,26197,38901,23381,21277,30776,26434,26685,21705,28798,23472,36733,20877,
-22312,21681,25874,26242,36190,36163,33039,33900,36973,31967,20991,34299,26531,26089,28577,34468,36481,22122,36896,30338,28790,29157,36131,25321,21017,27901,36156,24590,22686,24974,26366,36192,25166,21939,28195,26413,36711,38113,38392,30504,26629,27048,21643,20045,28856,35784,25688,25995,23429,31364,20538,23528,30651,27617,35449,31896,27838,30415,26025,36759,23853,23637,34360,26632,21344,25112,31449,28251,32509,27167,31456,24432,28467,24352,25484,28072,26454,19976,24080,36134,20183,32960,30260,38556,
-25307,26157,25214,27836,36213,29031,32617,20806,32903,21484,36974,25240,21746,34544,36761,32773,38167,34071,36825,27993,29645,26015,30495,29956,30759,33275,36126,38024,20390,26517,30137,35786,38663,25391,38215,38453,33976,25379,30529,24449,29424,20105,24596,25972,25327,27491,25919,24103,30151,37073,35777,33437,26525,[12096,25903],21553,34584,30693,32930,33026,27713,20043,32455,32844,30452,26893,27542,25191,20540,20356,22336,25351,[12108,27490],36286,21482,26088,32440,24535,25370,25527,[12164,33267],
-33268,32622,24092,23769,21046,26234,31209,31258,36136,28825,30164,28382,27835,31378,20013,30405,24544,38047,34935,32456,31181,32959,37325,20210,20247,[12168,33311],21608,24030,27954,35788,31909,36724,32920,24090,21650,30385,23449,26172,39588,29664,26666,34523,26417,29482,35832,35803,36880,[12149,31481],28891,29038,25284,30633,22065,20027,33879,26609,21161,34496,36142,38136,31569,20303,27880,31069,39547,25235,[12118,29226],25341,19987,30742,36716,25776,36186,31686,26729,24196,35013,22918,25758,22766,
-29366,26894,38181,36861,36184,22368,32512,35846,20934,25417,25305,21331,26700,29730,33537,37196,21828,30528,28796,27978,20857,21672,36164,23039,28363,28100,23388,32043,20180,31869,28371,[12070,23376],[12163,33258],28173,23383,39683,26837,36394,23447,32508,24635,32437,37049,[12187,36208],22863,25549,31199,[12188,36275],21330,26063,31062,35781,38459,32452,38075,32386,22068,37257,26368,32618,23562,36981,26152,24038,20304,26590,20570,20316,22352,24231,20109,19980,20800,19984,24319,21317,19989,20120,19998,
-[12224,39730],23404,22121,[12033,20008],31162,[12035,20031],[12052,21269],20039,22829,[12120,29243],21358,27664,22239,32996,39319,27603,30590,40727,[12034,20022],20127,40720,20060,20073,20115,33416,23387,21868,22031,20164,21389,21405,21411,21413,21422,38757,36189,[12053,21274],21493,21286,21294,21310,36188,21350,21347,20994,21E3,21006,21037,21043,{f:2,c:21055},21068,21086,21089,21084,33967,21117,21122,21121,21136,21139,[12044,20866],32596,20155,20163,20169,20162,20200,20193,20203,20190,20251,20211,
-20258,20324,20213,20261,20263,20233,20267,20318,20327,25912,20314,20317,20319,20311,20274,20285,20342,20340,20369,20361,20355,20367,20350,20347,20394,20348,20396,20372,20454,20456,20458,20421,20442,20451,20444,20433,20447,20472,20521,20556,20467,20524,20495,20526,20525,20478,20508,20492,20517,20520,20606,20547,20565,20552,20558,20588,20603,20645,20647,20649,20666,20694,20742,20717,20716,20710,20718,20743,20747,20189,27709,20312,20325,20430,[12245,40864],27718,31860,20846,24061,40649,39320,20865,22804,
-[12051,21241],21261,35335,21264,20971,22809,20821,[12039,20128],20822,20147,34926,34980,20149,33044,35026,31104,23348,34819,32696,[12046,20907],20913,20925,20924,20935,[12045,20886],20898,20901,35744,{f:2,c:35750},35754,{f:2,c:35764},35767,{f:2,c:35778},35787,35791,35790,{f:3,c:35794},35798,{f:2,c:35800},35804,{f:2,c:35807},35812,{f:2,c:35816},35822,35824,35827,35830,35833,35836,{f:2,c:35839},35842,35844,35847,35852,35855,{f:2,c:35857},{f:3,c:35860},35865,35867,35864,35869,{f:3,c:35871},35877,35879,
-{f:2,c:35882},{f:2,c:35886},{f:2,c:35890},{f:2,c:35893},[12057,21353],21370,38429,38434,38433,38449,38442,38461,38460,38466,38473,38484,38495,38503,38508,38514,38516,38536,38541,38551,38576,37015,37019,37021,37017,37036,37025,37044,37043,37046,37050,37048,37040,37071,37061,37054,37072,37060,37063,37075,37094,37090,37084,37079,37083,37099,37103,37118,37124,37154,37150,37155,37169,37167,37177,37187,37190,21005,22850,21154,{f:2,c:21164},21182,21759,21200,21206,21232,21471,29166,30669,[12085,24308],[12048,
-20981],20988,[12223,39727],[12059,21430],24321,30042,24047,22348,22441,22433,22654,22716,22725,22737,22313,22316,22314,22323,22329,{f:2,c:22318},22364,22331,22338,22377,22405,22379,22406,22396,22395,22376,22381,22390,22387,22445,22436,22412,22450,22479,22439,22452,22419,22432,22485,22488,22490,22489,22482,22456,22516,22511,22520,22500,22493,22539,22541,22525,22509,22528,22558,22553,22596,22560,22629,22636,22657,22665,22682,22656,39336,40729,25087,33401,33405,33407,33423,33418,33448,33412,33422,33425,
-33431,33433,33451,33464,33470,33456,33480,33482,33507,33432,33463,33454,{f:2,c:33483},33473,33449,33460,33441,33450,33439,33476,33486,33444,33505,33545,33527,33508,33551,33543,33500,33524,33490,33496,33548,33531,33491,33553,33562,33542,{f:2,c:33556},33504,33493,33564,33617,{f:2,c:33627},33544,33682,33596,33588,33585,33691,33630,33583,33615,33607,33603,33631,33600,33559,33632,33581,33594,33587,33638,33637,33640,33563,33641,33644,33642,{f:2,c:33645},33712,33656,{f:2,c:33715},33696,33706,33683,33692,
-33669,33660,33718,33705,33661,33720,33659,33688,33694,33704,33722,33724,33729,33793,33765,33752,22535,33816,33803,33757,33789,33750,33820,33848,33809,33798,33748,33759,33807,33795,{f:2,c:33784},33770,33733,33728,33830,33776,33761,33884,33873,33882,33881,33907,{f:2,c:33927},33914,33929,33912,33852,33862,33897,33910,33932,33934,33841,33901,33985,33997,34E3,34022,33981,34003,33994,33983,33978,34016,33953,33977,33972,33943,34021,34019,34060,29965,34104,34032,34105,34079,34106,34134,34107,34047,34044,
-34137,34120,34152,34148,34142,34170,30626,34115,34162,34171,34212,34216,34183,34191,34169,34222,34204,34181,34233,34231,34224,34259,34241,34268,34303,34343,34309,34345,34326,34364,[12086,24318],24328,22844,22849,32823,22869,22874,22872,21263,[12074,23586],23589,23596,23604,25164,25194,25247,25275,25290,25306,25303,25326,25378,25334,25401,25419,25411,25517,25590,25457,25466,25486,25524,25453,25516,25482,25449,25518,25532,25586,25592,25568,25599,25540,25566,25550,25682,25542,25534,25669,25665,25611,
-25627,25632,25612,25638,25633,25694,25732,25709,25750,25722,{f:2,c:25783},25753,25786,25792,25808,25815,25828,25826,25865,25893,25902,[12087,24331],24530,29977,24337,21343,21489,21501,21481,21480,21499,21522,21526,21510,21579,{f:3,c:21586},21590,21571,21537,21591,21593,21539,21554,21634,21652,21623,21617,21604,{f:2,c:21658},21636,21622,21606,21661,21712,21677,21698,21684,21714,21671,21670,{f:2,c:21715},21618,21667,21717,21691,21695,21708,{f:2,c:21721},21724,{f:2,c:21673},21668,21725,21711,21726,21787,
-21735,21792,21757,21780,21747,{f:2,c:21794},21775,21777,21799,21802,21863,21903,21941,21833,21869,21825,21845,21823,21840,21820,21815,21846,{f:3,c:21877},21811,21808,21852,21899,21970,21891,21937,21945,21896,21889,21919,21886,21974,21905,21883,21983,{f:2,c:21949},21908,21913,21994,22007,21961,22047,21969,{f:2,c:21995},21972,21990,21981,21956,21999,21989,{f:2,c:22002},{f:2,c:21964},21992,22005,21988,36756,22046,22024,22028,22017,22052,22051,22014,22016,22055,22061,22104,22073,22103,22060,22093,22114,
-22105,22108,22092,22100,22150,22116,22129,22123,{f:2,c:22139},22149,22163,22191,22228,[12062,22231],22237,22241,22261,22251,22265,22271,22276,22282,22281,22300,24079,24089,24084,24081,24113,{f:2,c:24123},24119,24132,24148,24155,24158,24161,23692,23674,23693,23696,23702,23688,{f:2,c:23704},23697,23706,23708,23733,23714,23741,23724,23723,23729,23715,23745,23735,23748,23762,23780,23755,23781,{f:2,c:23810},23847,23846,23854,23844,23838,23814,23835,23896,23870,23860,23869,23916,23899,23919,23901,23915,
-23883,23882,23913,23924,23938,23961,23965,35955,23991,24005,[12091,24435],24439,24450,24455,24457,24460,24469,24473,24476,24488,24493,24501,24508,34914,[12090,24417],29357,29360,29364,{f:2,c:29367},29379,29377,29390,29389,29394,29416,29423,29417,29426,29428,29431,29441,29427,29443,{f:2,c:29434},29463,29459,29473,29450,29470,29469,29461,29474,29497,29477,29484,29496,29489,29520,29517,29527,29536,29548,29551,29566,[12167,33307],22821,39143,22820,[12065,22786],39267,{f:6,c:39271},39284,39287,39293,39296,
-39300,39303,39306,39309,{f:2,c:39312},{f:3,c:39315},24192,24209,24203,24214,24229,24224,24249,24245,24254,24243,36179,24274,24273,24283,24296,24298,33210,24516,24521,24534,24527,24579,24558,24580,24545,24548,24574,{f:2,c:24581},24554,24557,24568,24601,24629,24614,24603,24591,24589,24617,24619,24586,24639,24609,{f:2,c:24696},24699,24698,24642,24682,24701,24726,24730,24749,24733,24707,24722,24716,24731,24812,24763,24753,24797,24792,24774,24794,24756,24864,24870,24853,24867,24820,24832,24846,24875,24906,
-24949,25004,24980,24999,25015,25044,25077,24541,38579,38377,38379,38385,38387,{f:2,c:38389},38396,38398,{f:2,c:38403},38406,38408,{f:4,c:38410},38415,38418,{f:3,c:38421},{f:2,c:38425},20012,[12121,29247],25109,27701,27732,27740,27722,27811,27781,27792,27796,27788,{f:2,c:27752},27764,27766,27782,27817,27856,27860,27821,{f:2,c:27895},27889,27863,27826,27872,27862,27898,27883,27886,27825,27859,27887,27902,27961,27943,27916,27971,27976,27911,27908,27929,27918,27947,27981,27950,27957,27930,27983,27986,
-27988,27955,28049,28015,28062,28064,27998,{f:2,c:28051},27996,28E3,28028,28003,28186,28103,28101,28126,28174,28095,28128,28177,28134,28125,28121,28182,28075,28172,28078,28203,28270,28238,28267,28338,28255,28294,{f:2,c:28243},28210,28197,28228,28383,28337,28312,28384,28461,28386,28325,28327,28349,28347,28343,28375,28340,28367,28303,28354,28319,28514,{f:2,c:28486},28452,28437,28409,28463,28470,28491,28532,28458,28425,28457,28553,28557,28556,28536,28530,28540,28538,28625,28617,28583,28601,28598,28610,
-28641,28654,28638,28640,28655,28698,28707,28699,28729,28725,28751,28766,[12071,23424],23428,23445,23443,23461,23480,29999,39582,25652,23524,23534,35120,23536,36423,35591,36790,36819,36821,36837,36846,36836,36841,36838,36851,36840,36869,36868,36875,36902,36881,36877,36886,36897,{f:2,c:36917},36909,36911,36932,{f:2,c:36945},36944,36968,36952,36962,36955,26297,36980,36989,36994,37E3,36995,37003,[12089,24400],24407,24406,24408,23611,21675,23632,23641,23409,23651,23654,32700,24362,24361,24365,33396,24380,
-39739,[12076,23662],22913,22915,22925,{f:2,c:22953},22947,22935,22986,22955,22942,22948,22994,22962,22959,22999,22974,{f:2,c:23045},23005,23048,23011,23E3,23033,23052,23049,23090,23092,23057,23075,23059,23104,23143,23114,23125,23100,23138,23157,33004,23210,23195,23159,23162,23230,23275,23218,23250,23252,23224,23264,23267,23281,23254,23270,23256,23260,23305,23319,23318,23346,23351,23360,23573,23580,23386,23397,23411,23377,23379,23394,39541,{f:2,c:39543},39546,39551,39549,{f:2,c:39552},39557,39560,
-39562,39568,{f:2,c:39570},39574,39576,{f:3,c:39579},{f:2,c:39583},{f:2,c:39586},39589,39591,32415,32417,32419,32421,{f:2,c:32424},32429,32432,32446,{f:3,c:32448},32457,{f:2,c:32459},32464,32468,32471,32475,{f:2,c:32480},32488,32491,{f:2,c:32494},{f:2,c:32497},32525,32502,{f:2,c:32506},32510,{f:3,c:32513},{f:2,c:32519},{f:2,c:32523},32527,{f:2,c:32529},32535,32537,32540,32539,32543,{f:7,c:32545},{f:4,c:32554},{f:5,c:32559},32565,[12083,24186],30079,[12078,24027],30014,37013,29582,29585,29614,29602,
-29599,29647,29634,29649,29623,29619,29632,29641,29640,29669,29657,39036,29706,29673,29671,29662,29626,29682,29711,29738,29787,29734,29733,29736,29744,29742,29740,29723,29722,29761,29788,29783,29781,29785,29815,29805,29822,29852,29838,{f:2,c:29824},29831,29835,29854,{f:2,c:29864},29840,29863,29906,29882,{f:3,c:38890},26444,26451,26462,26440,26473,26533,26503,26474,26483,26520,26535,26485,26536,26526,26541,26507,26487,26492,26608,26633,26584,26634,26601,26544,26636,26585,26549,26586,26547,26589,26624,
-26563,26552,26594,26638,26561,26621,{f:2,c:26674},{f:2,c:26720},26702,26722,26692,26724,26755,26653,26709,26726,26689,26727,26688,26686,26698,26697,26665,26805,26767,26740,26743,26771,26731,26818,26990,26876,{f:2,c:26911},26873,26916,26864,26891,26881,26967,26851,26896,26993,26937,26976,26946,26973,27012,26987,27008,27032,27E3,26932,27084,{f:2,c:27015},27086,27017,26982,26979,27001,27035,27047,27067,27051,27053,27092,27057,27073,27082,27103,27029,27104,27021,27135,27183,27117,{f:2,c:27159},27237,
-27122,27204,27198,27296,27216,27227,27189,27278,27257,27197,27176,27224,27260,27281,27280,27305,27287,27307,29495,29522,{f:2,c:27521},27527,27524,{f:2,c:27538},27533,{f:2,c:27546},27553,27562,36715,36717,{f:3,c:36721},{f:2,c:36725},36728,36727,{f:2,c:36729},36732,36734,{f:2,c:36737},36740,36743,36747,{f:3,c:36749},36760,36762,36558,25099,25111,25115,25119,25122,25121,25125,25124,25132,33255,29935,29940,29951,29967,29969,29971,[12097,25908],{f:3,c:26094},26122,26137,26482,26115,26133,26112,28805,26359,
-26141,26164,26161,26166,26165,32774,26207,26196,26177,26191,26198,26209,26199,26231,26244,26252,26279,26269,26302,{f:2,c:26331},26342,26345,{f:2,c:36146},36150,36155,36157,36160,{f:2,c:36165},{f:2,c:36168},36167,36173,36181,36185,35271,{f:3,c:35274},{f:4,c:35278},29294,29343,29277,29286,29295,{f:2,c:29310},29316,29323,29325,29327,29330,25352,25394,25520,25663,25816,32772,27626,27635,27645,27637,27641,27653,27655,27654,27661,27669,{f:3,c:27672},27681,27689,27684,27690,27698,25909,25941,25963,29261,
-29266,29270,29232,34402,21014,32927,32924,32915,32956,26378,32957,32945,32939,32941,32948,32951,{f:4,c:32999},32987,32962,32964,32985,32973,32983,26384,32989,33003,33009,33012,33005,{f:2,c:33037},33010,33020,26389,33042,35930,33078,33054,33068,33048,33074,33096,33100,33107,33140,{f:2,c:33113},33137,33120,33129,{f:2,c:33148},33133,33127,22605,23221,33160,33154,33169,28373,33187,33194,33228,26406,33226,33211,33217,33190,27428,27447,27449,27459,27462,27481,{f:3,c:39121},39125,{f:2,c:39129},[12110,27571],
-24384,27586,35315,26E3,40785,26003,26044,26054,26052,26051,26060,26062,26066,26070,28800,28828,28822,28829,28859,28864,28855,28843,28849,28904,28874,28944,28947,28950,28975,28977,29043,29020,29032,28997,29042,29002,29048,29050,29080,29107,29109,29096,29088,29152,29140,29159,29177,29213,29224,28780,28952,29030,29113,25150,25149,25155,{f:2,c:25160},31035,31040,31046,31049,{f:2,c:31067},31059,31066,31074,31063,31072,31087,31079,31098,31109,31114,31130,31143,31155,24529,24528,24636,24669,24666,24679,
-24641,24665,24675,24747,24838,24845,24925,25001,24989,25035,25041,25094,32896,[12160,32895],27795,27894,28156,30710,30712,30720,30729,{f:2,c:30743},30737,26027,30765,{f:2,c:30748},{f:3,c:30777},30751,30780,30757,30764,30755,30761,30798,30829,{f:2,c:30806},30758,30800,30791,30796,30826,30875,30867,30874,30855,30876,30881,30883,30898,30905,30885,30932,30937,30921,30956,30962,30981,30964,30995,31012,31006,31028,40859,[12235,40697],{f:2,c:40699},30449,30468,30477,30457,{f:2,c:30471},30490,30498,30489,
-30509,30502,30517,30520,{f:2,c:30544},30535,30531,30554,30568,30562,30565,30591,30605,30589,30592,30604,30609,{f:2,c:30623},30640,30645,30653,30010,30016,30030,30027,30024,30043,30066,30073,30083,32600,32609,32607,35400,32616,32628,32625,32633,32641,32638,30413,30437,34866,{f:3,c:38021},38027,38026,{f:2,c:38028},{f:2,c:38031},38036,38039,38037,{f:3,c:38042},{f:2,c:38051},38059,38058,38061,38060,{f:2,c:38063},38066,38068,{f:5,c:38070},{f:2,c:38076},38079,38084,{f:7,c:38088},{f:3,c:38096},{f:3,c:38101},
-38105,38104,38107,{f:3,c:38110},38114,{f:2,c:38116},{f:2,c:38119},38122,38121,38123,{f:2,c:38126},{f:3,c:38131},38135,38137,{f:2,c:38140},38143,38147,38146,{f:2,c:38150},{f:2,c:38153},{f:3,c:38157},{f:5,c:38162},38168,38171,{f:3,c:38173},38178,{f:2,c:38186},38185,38188,{f:2,c:38193},38196,{f:3,c:38198},38204,{f:2,c:38206},38210,38197,{f:3,c:38212},38217,38220,{f:2,c:38222},{f:3,c:38226},{f:4,c:38230},38235,{f:2,c:38238},38237,{f:2,c:38241},{f:9,c:38244},38255,{f:3,c:38257},38202,30695,30700,38601,
-31189,31213,31203,31211,31238,23879,31235,31234,31262,31252,31289,31287,31313,40655,39333,31344,30344,30350,30355,30361,30372,29918,29920,29996,40480,40482,{f:5,c:40488},40498,40497,40502,40504,40503,{f:2,c:40505},40510,{f:2,c:40513},40516,{f:4,c:40518},{f:2,c:40523},40526,40529,40533,40535,{f:3,c:40538},40542,40547,{f:7,c:40550},40561,40557,40563,[12135,30098],30100,30102,30112,30109,30124,30115,{f:2,c:30131},30136,30148,30129,30128,30147,30146,30166,30157,30179,30184,30182,30180,30187,30183,30211,
-30193,30204,30207,30224,30208,30213,30220,30231,30218,30245,30232,30229,30233,30235,30268,30242,30240,30272,30253,30256,30271,30261,30275,30270,30259,30285,30302,30292,30300,30294,30315,30319,32714,31462,{f:2,c:31352},31360,31366,31368,31381,31398,31392,31404,31400,31405,31411,34916,34921,34930,34941,34943,34946,34978,35014,34999,35004,35017,35042,35022,35043,35045,35057,35098,35068,35048,35070,35056,35105,35097,35091,35099,35082,35124,35115,35126,35137,35174,35195,[12134,30091],32997,30386,30388,
-30684,[12158,32786],32788,32790,32796,32800,32802,{f:3,c:32805},32809,32808,32817,32779,32821,32835,32838,32845,32850,32873,32881,35203,39032,39040,39043,39049,{f:2,c:39052},39055,39060,{f:2,c:39066},{f:2,c:39070},{f:2,c:39073},{f:2,c:39077},[12172,34381],34388,34412,34414,34431,34426,34428,34427,34472,34445,34443,34476,34461,34471,34467,34474,34451,34473,34486,34500,34485,34510,34480,34490,34481,34479,34505,34511,34484,34537,{f:2,c:34545},34541,34547,34512,34579,34526,34548,34527,34520,34513,34563,
-34567,34552,34568,34570,34573,34569,34595,34619,34590,34597,34606,34586,34622,34632,34612,34609,34601,34615,34623,34690,34594,{f:2,c:34685},34683,34656,34672,34636,34670,34699,34643,34659,34684,34660,34649,34661,34707,34735,34728,34770,34758,34696,34693,34733,34711,34691,34731,34789,34732,34741,34739,34763,34771,34749,34769,34752,34762,34779,34794,34784,34798,34838,34835,34814,34826,34843,34849,34873,34876,[12152,32566],32578,{f:2,c:32580},33296,31482,31485,31496,{f:2,c:31491},31509,31498,31531,31503,
-31559,31544,31530,31513,31534,31537,31520,31525,31524,31539,31550,31518,31576,31578,31557,31605,31564,31581,31584,31598,31611,31586,31602,31601,31632,{f:2,c:31654},31672,31660,31645,31656,31621,31658,31644,31650,31659,31668,31697,31681,31692,31709,31706,{f:2,c:31717},31722,31756,31742,31740,31759,31766,31755,31775,31786,31782,31800,31809,31808,33278,{f:2,c:33281},33284,33260,34884,{f:3,c:33313},33325,33327,33320,33323,33336,33339,{f:2,c:33331},33342,33348,33353,33355,33359,33370,33375,33384,34942,
-34949,34952,35032,35039,35166,32669,32671,32679,{f:2,c:32687},32690,31868,25929,31889,31901,31900,31902,31906,31922,{f:2,c:31932},31937,31943,{f:2,c:31948},31944,31941,31959,31976,[12169,33390],26280,32703,32718,32725,32741,32737,32742,32745,32750,32755,[12151,31992],32119,32166,32174,32327,32411,40632,40628,36211,36228,36244,36241,36273,36199,36205,35911,35913,37194,37200,{f:2,c:37198},37220,37218,37217,37232,37225,37231,{f:2,c:37245},37234,37236,37241,37260,37253,37264,37261,37265,{f:2,c:37282},
-37290,{f:3,c:37293},37301,37300,37306,[12183,35925],40574,36280,36331,36357,36441,36457,36277,36287,36284,36282,36292,{f:2,c:36310},36314,36318,{f:2,c:36302},36315,36294,36332,{f:2,c:36343},36323,36345,36347,36324,36361,36349,36372,36381,36383,36396,36398,36387,36399,36410,36416,36409,36405,36413,36401,36425,{f:2,c:36417},{f:2,c:36433},36426,36464,36470,36476,36463,36468,36485,36495,36500,36496,36508,36510,[12184,35960],35970,35978,35973,35992,35988,26011,35286,35294,35290,35292,35301,35307,35311,
-35390,35622,38739,38633,38643,38639,38662,38657,38664,38671,38670,38698,38701,38704,38718,40832,40835,{f:6,c:40837},40844,40702,40715,40717,[12203,38585],{f:2,c:38588},38606,38610,30655,38624,37518,37550,37576,37694,37738,37834,37775,37950,37995,40063,40066,{f:4,c:40069},31267,40075,40078,{f:3,c:40080},{f:2,c:40084},{f:2,c:40090},{f:6,c:40094},{f:5,c:40101},40107,{f:2,c:40109},{f:8,c:40112},{f:4,c:40122},{f:4,c:40132},{f:7,c:40138},{f:3,c:40147},{f:3,c:40151},{f:2,c:40156},40159,40162,38780,38789,
-{f:2,c:38801},38804,38831,38827,38819,38834,38836,39601,39600,39607,40536,39606,39610,39612,39617,39616,39621,39618,{f:2,c:39627},39633,39749,39747,39751,39753,39752,39757,39761,39144,39181,39214,39253,39252,[12221,39647],39649,39654,39663,39659,39675,39661,39673,39688,39695,39699,39711,39715,{f:2,c:40637},32315,40578,{f:2,c:40583},40587,40594,37846,40605,40607,{f:3,c:40667},40672,40671,40674,40681,40679,40677,40682,40687,40738,40748,40751,40761,40759,{f:2,c:40765},40772,12295,{s:13},30362,34297,
-31001,24859,39599,35158,22761,32631,25850,25943,38930,36774,32070,24171,32129,37770,35607,39165,23542,22577,39825,36649,[12185,35997],37575,29437,20633,24970,32179,31558,30050,25987,24163,38281,37002,32232,36022,35722,36783,36782,27161,40009,30303,28693,28657,36051,25839,39173,25765,37474,37457,39361,35036,36001,21443,34870,27544,24922,24920,29158,33980,33369,20489,28356,21408,20596,28204,23652,35435,25881,25723,34796,39262,35730,32399,37855,29987,38369,39019,22580,22039,[12199,38263],20767,33144,
-24288,26274,37396,[12190,36554],24505,22645,38515,35183,31281,25074,35488,39425,36978,39347,[12242,40786],29118,34909,34802,23541,30087,36490,31820,32162,37276,37604,38619,30990,20786,35320,34389,20659,30241,38358,21109,37656,32020,32189,36781,35422,36060,32880,24478,21474,36517,31428,37679,36948,24118,36024,25812,21934,37170,25763,33213,24986,35477,24392,30070,25803,40680,34153,27284,25623,23798,31153,23566,29128,37159,25973,28364,36958,32224,39003,40670,22666,38651,28593,37347,35519,35548,37336,
-38914,37664,35330,26481,21205,26847,20941,[12222,39717],29346,29544,35712,36077,37709,37723,26039,32222,38538,23565,22136,38931,37389,22890,22702,40285,38989,35355,24801,39187,20818,29246,39180,36019,30332,32624,38309,31020,37353,29033,31684,36009,39151,35370,32033,[12214,39131],35513,24290,36027,32027,22707,22894,24996,31966,35920,26963,37586,[12213,39080],30219,39342,32299,35575,40179,33178,36667,25771,36628,36070,24489,36E3,35331,23142,32283,35442,37411,33995,24185,36245,36123,23713,21083,37628,
-32177,23831,37804,25841,40255,38307,37499,20491,32102,40852,38799,36002,37390,28317,27083,36092,34865,39015,21102,38364,35264,39208,24931,36011,24291,35215,27512,[12244,40860],38312,36556,35437,27331,36020,21130,36645,37707,22283,36942,39405,38867,28450,34399,38305,40372,36032,36703,40251,32005,22778,35703,28396,22057,33775,30059,21123,35441,25079,22750,27489,29872,36996,32233,35594,25582,36637,36036,31330,26371,29172,21295,35569,35496,32362,33911,28222,29554,36008,31117,25802,27231,31309,39249,35663,
-40388,32318,32221,26997,36655,32026,25824,24190,34186,21137,28639,35336,35352,38555,32380,32E3,22846,33698,38960,36040,37440,20729,39381,27570,30435,22533,31627,38291,33393,32216,32365,27298,40572,25536,25791,31777,20745,34214,27323,37970,36368,36068,[12178,35211],37749,33382,21133,39198,28472,28666,28567,23559,28479,34083,27123,22892,35611,37292,33184,28550,39509,23308,25898,37496,30703,20709,39171,32371,32094,36686,36611,38542,31680,28500,32080,35489,32202,37670,20677,35641,36914,29180,30433,21185,
-33686,39912,39514,32147,38968,37857,24465,30169,31478,31998,33290,39378,33289,25818,37624,25084,21127,40273,32121,35258,35363,32118,37406,36557,39423,38283,20977,38982,27579,35506,22718,25031,25715,24235,35122,35463,22602,20744,23532,31014,26336,34407,24011,31418,39243,28528,25844,38346,34847,33240,33802,20358,36084,34253,27396,25876,31811,38348,34349,28734,35733,25900,35261,25078,32412,29211,28651,25736,21214,28551,27138,37939,22744,39006,31852,38626,28757,35023,39881,31150,40599,21426,21237,31019,
-27511,28701,38584,20486,32879,34030,36899,37934,24976,28451,31806,25986,33225,37832,25088,29001,32244,31975,20841,36635,35538,30274,36988,37904,29557,33256,37168,40023,36035,40801,37428,38728,23994,38936,39230,21129,[12243,40845],32894,22184,31840,22751,25871,38580,27155,23105,25695,31757,34310,30439,39025,24300,29200,25796,28407,34396,39791,36034,37682,38520,39522,37569,23650,32311,24942,28670,32209,24018,25891,23423,28772,20098,25476,36650,20523,20374,28138,32184,35542,34367,32645,37007,38012,31854,
-39486,39409,32097,23229,29802,30908,34718,[12218,39340],39393,21966,36023,[12230,40613],36067,36993,30622,39237,34875,28415,35646,37672,37466,36031,37762,[12200,38272],24758,20497,37683,22818,35598,24396,35219,32191,32236,24287,28357,25003,38313,40180,37528,35628,35584,30045,37385,32013,38627,25747,33126,24817,39719,39186,25836,33193,25862,37312,[12227,40165],32886,22169,38007,37811,27320,29552,23527,25840,28632,37397,32016,33215,28611,36786,30247,35582,27472,40407,27590,22036,28442,30436,40848,36064,
-22132,40300,39449,39108,38971,36007,34315,24977,35413,28497,38935,25778,37610,20693,27192,35676,33229,[12241,40778],39438,35912,21843,27683,35350,29309,37370,37467,36983,31805,35609,37666,37463,28154,35700,22649,27085,21958,22715,34196,25654,37740,27211,21932,20689,32761,31429,31434,27453,35242,23522,36629,27691,20670,38915,35531,24950,29898,31406,36264,21312,36544,39493,40818,39028,27402,21240,40306,30906,35731,39250,25854,32350,29105,38860,35469,32009,27054,32104,36575,37613,38287,28516,28753,34217,
-39955,36093,20632,21930,39479,25475,28544,27578,32023,31721,26348,38275,38493,36109,32341,20663,36062,29138,32057,36050,25448,25885,25086,35373,32051,23529,23352,33102,28402,32882,32361,21213,32854,24107,29509,28629,35433,26178,34645,23526,35672,39387,21218,36969,37323,39166,35222,35430,22781,29560,27166,36664,26360,36118,23660,34899,27193,31466,25976,24101,38617,35504,38918,35500,30889,29197,32114,39164,39686,32883,24939,38924,35359,35494,25851,34311,35380,32901,38614,38568,32143,27506,23403,25613,
-32302,29795,37782,29562,25787,33274,24907,25892,36010,30321,28760,22727,35674,35527,22022,28271,29145,28644,32295,35342,39472,35588,37563,38988,39636,26781,36028,37941,24307,32893,28916,37509,32113,38957,22294,22615,22296,38973,40213,39345,39389,27234,31402,35178,24398,28771,38929,33836,32178,[12209,38859],36949,22285,29234,28656,32173,33894,20553,20702,32239,35586,34907,32862,32011,31337,21839,25790,34680,28198,31401,21978,37794,28879,35491,28961,34154,22626,38695,21209,35492,37675,29351,35186,32722,
-37521,25138,32048,34662,36676,23805,20448,29433,22151,37697,39854,32406,36066,37532,38289,39023,38570,29694,29563,32291,39201,25010,32171,38002,37129,35443,38911,38917,34157,22210,37559,26313,22063,21332,25406,33029,35559,23531,28681,35613,37573,37313,33288,37561,32137,38920,35377,32210,32396,36562,25080,36984,30316,32098,23416,21211,35426,23563,39348,35347,35338,36956,22739,40201,40232,21854,20126,35357,38329,40573,22196,38996,38331,33399,21421,30831,35578,39511,40230,26954,25562,30221,38525,30306,
-39178,27171,22575,35617,34277,29242,[12212,38913],26989,33865,37291,37541,38948,36986,20736,34811,34269,20740,25014,32681,35427,35696,35516,35695,32377,34093,38512,37504,39154,38577,27387,23344,40441,25033,32403,29801,34722,29151,29074,34821,36111,31310,21938,25793,20653,30320,36404,20778,24962,37109,37438,29494,35480,36671,39192,[12226,39770],28417,33287,23996,35486,39729,29508,35709,38928,39341,40219,28149,36677,22290,21729,22291,32227,36960,39E3,32004,36493,38E3,38322,38642,37142,38549,36939,34292,
-37270,26248,38620,36617,25890,26283,36106,36124,33247,38015,26839,31432,36012,25799,21063,28580,36042,36104,36555,37720,38296,35408,40779,20661,27656,30430,26028,36670,23940,26855,25136,32187,24373,28466,24115,36076,33081,36249,34756,36685,37754,36889,35998,37341,20597,35386,37806,38499,24128,30309,37165,35657,32340,32887,22519,34937,32025,25711,25842,24159,36074,28399,37912,32066,31278,33131,34886,35589,36600,30394,26205,39519,35576,35461,29165,30682,22225,36015,37956,31689,39376,23560,30938,36681,
-36090,27137,33674,35037,22941,22767,29376,37648,36101,22684,32180,35524,28310,28609,36039,28460,32156,32317,32305,37138,35419,32068,38013,21959,21401,21428,38760,36107,21293,21297,36094,21060,21132,21108,20660,20480,20630,20757,20738,20756,20796,20791,20712,20674,20795,20752,20794,20681,31988,40652,22213,40172,35131,33248,35329,35344,35340,35349,35635,35406,35365,35393,35382,35398,35412,35416,35410,35462,35460,35455,35440,35452,35445,35436,35438,35533,35554,35425,35482,35493,{f:2,c:35473},35535,35537,
-35529,35547,35543,35522,35510,35574,35563,35604,35585,35556,35565,35580,35571,35558,35566,35550,35624,35740,35606,35610,35600,35627,35629,35670,35673,35662,35742,35691,35734,38488,37178,37140,37172,37087,37174,37126,37192,33467,21233,24048,22538,22745,22754,22752,22746,22497,22607,22550,22610,22557,22628,34188,34131,34294,33703,33799,34031,33511,34338,34086,22603,29026,34136,34045,34126,34184,34234,29334,28366,34113,34254,34130,33984,33874,33892,33940,33845,34207,34133,40367,33939,32264,34118,34146,
-34078,39488,34362,37795,34167,34334,34298,34308,34282,34330,22889,23607,25451,25718,25759,25681,25692,25779,25860,25878,25847,25852,25883,22064,22072,22216,22182,21764,21692,22144,22109,22112,22069,22006,22118,22130,22156,22117,22044,22062,21993,22038,22208,22029,22195,22209,22127,36705,22198,22165,22279,24131,24172,24152,24151,23943,23796,23888,23852,23975,23968,23959,23821,23992,23937,24020,24480,29559,29505,29546,29499,29547,29568,29564,39136,39219,39145,39228,{f:2,c:39146},39149,39156,39177,39185,
-39195,39223,39231,39235,{f:3,c:39240},39244,39266,24289,36065,25082,25006,24938,24894,24757,24884,25036,24927,25064,24827,24887,24818,24947,24860,24978,38274,38278,38344,38286,38292,38284,38373,38317,38315,39726,38316,38334,38326,39721,38335,38333,38332,38339,38347,38356,38352,38357,38366,28739,28505,28711,28696,28668,28039,28025,28254,28590,28687,28408,28527,28150,28543,28678,28576,28683,28775,28740,28677,28535,28704,28703,28722,28712,28765,39467,36999,36885,37008,23656,24371,23285,23255,23296,23149,
-23304,23372,23207,23291,23307,23329,23338,23321,39380,39391,39385,39478,39515,39377,39384,39501,39498,39394,39530,39439,39437,39429,39490,39469,39446,39489,39470,39480,{f:2,c:39491},39503,39525,39524,31993,32006,32002,{f:2,c:32007},32394,32028,32021,32019,32058,32050,32049,32272,32060,32064,32063,32093,32078,32115,32134,32131,32136,32190,32186,32203,32212,32196,32158,32172,32185,32163,32176,32199,32217,32215,32249,32242,32354,32230,32246,32241,32267,32225,32265,32285,32287,32286,32301,32266,32273,
-32381,32313,32309,32306,32326,32325,32392,32346,32338,32366,32382,32368,32367,32408,29859,29771,29903,38922,29885,29759,29833,29862,29908,29914,38873,38878,38876,27050,27370,26776,26838,27141,26783,27355,27379,27368,27359,27273,26895,27208,26984,27071,27194,27292,27410,27422,27357,27111,27407,27414,27372,27354,27384,27315,27367,27299,27347,27358,27556,27550,27566,27563,27567,36564,36571,36594,36603,36708,36601,36604,36587,36580,36706,36602,36606,36618,36615,36613,36626,36646,{f:2,c:36638},36636,36659,
-36678,36692,25108,25127,29964,26311,26308,26249,26326,36033,36016,36026,36029,36100,36018,36037,36112,36049,36058,36053,36075,36071,36091,35224,35244,35233,35263,35238,35247,35250,35255,27647,27660,27692,29272,26407,33110,33242,33051,33214,33121,33231,27487,{f:2,c:39086},39094,39100,39110,39112,36674,40783,26005,29036,29010,29079,29121,29148,29182,31152,31118,31146,25055,24932,25059,25095,28585,30959,30893,30824,30904,31018,31025,30820,30973,30951,30947,40853,30616,30558,30652,32646,32648,{f:3,c:37330},
-37337,37335,37333,37367,37351,37348,37702,37365,37369,37384,37414,37445,37393,37392,37377,37415,37380,37413,37376,37434,37478,37431,37427,37461,37437,37432,37470,{f:2,c:37484},37439,37984,37424,37449,37448,37453,37422,37433,37944,37548,37536,37498,37546,37614,37583,37891,37603,37946,37553,37542,37799,37526,37580,37545,37877,37523,37503,37801,37530,37658,37547,37507,37899,37544,37539,37906,37688,37617,37847,37605,37616,37615,37608,37564,37597,37622,{f:2,c:37926},37571,37599,37606,37650,37638,37737,
-37659,37696,37633,37653,37678,37699,{f:2,c:37639},37663,37657,37733,37703,37750,37716,37732,37802,37744,37764,37860,37848,37928,37767,37836,37784,37816,37823,37798,37808,37813,37964,37858,{f:2,c:37852},37837,37854,37827,37831,37841,37908,37917,37879,37989,37907,37997,37920,38009,37881,37913,37962,37938,37951,37972,37987,37758,31329,40169,40182,40199,40198,40227,40327,40469,40221,40223,40421,40239,40409,40240,40258,40478,40275,40477,40288,40274,40435,40284,40289,40339,40298,40303,40329,40344,40346,
-40384,40357,40361,40386,40380,40474,40403,40410,40431,40422,40434,40440,40460,40442,40475,30308,30296,30311,30210,{f:2,c:30278},30281,30238,30267,{f:2,c:30317},30313,30322,31431,31414,35168,35123,35165,35143,35128,35172,30392,32814,32812,32889,32885,38919,{f:2,c:38926},38945,38940,28481,38950,38967,38990,38995,39027,39010,39001,39013,39020,39024,34787,34822,34566,34851,34806,34554,34799,34692,34832,34760,34833,34747,34766,32588,31716,31591,31849,31731,31744,31691,31836,31774,31787,31779,31850,31839,
-33380,33387,35018,32677,31986,31990,31965,32310,40617,36274,37317,37315,40570,36489,36428,36498,36474,36437,36506,36491,36499,36497,36513,36451,36522,36518,35316,35318,38746,38722,38717,38724,40788,40799,40793,40800,40796,40806,40812,40810,40823,[12236,40701],40703,40713,35726,38014,37864,39799,39796,39809,39811,39822,40056,31308,39826,40031,39824,39853,39834,39850,39838,40045,39851,39837,40024,39873,40058,39985,39993,39971,39991,39872,39882,39879,39933,39894,{f:2,c:39914},39905,39908,39911,39901,
-39906,39920,39899,39924,39892,40029,39944,39952,39949,39954,39945,39935,39968,39986,39981,39976,39973,39977,39987,39998,40008,39995,39989,40005,40022,40020,40018,40039,38851,38845,38857,40379,39631,39638,39637,39768,39758,39255,39260,39714,40695,40690,35180,38342,37686,24390,34068,32404,40803,22137,40725,22081,39662,35079,31296,39091,38308,39693,36852,24409,31339,39138,20642,34193,20760,25458,21067,30543,32397,26310,30637,[12228,40565],22217,40692,28635,25054,30663,28720,40629,34890,38370,38854,31844,
-32308,38822,40623,22220,39089,27311,32590,31984,20418,32363,40569,22190,39706,33903,31142,31858,39634,38587,32251,35069,30787,{f:10,c:8560},{f:2,c:714},729,8211,8213,8229,8245,8453,8457,{f:4,c:8598},8725,8735,8739,8786,{f:2,c:8806},8895,{f:36,c:9552},{f:15,c:9601},{f:3,c:9619},{f:2,c:9660},{f:4,c:9698},9737,8853,12306,{f:2,c:12317},{f:9,c:12321},12963,{f:2,c:13198},{f:3,c:13212},13217,13252,13262,{f:2,c:13265},13269,65072,65506,65508,8481,12849,8208,12540,{f:2,c:12443},{f:2,c:12541},12294,{f:2,c:12445},
-{f:10,c:65097},{f:4,c:65108},{f:14,c:65113},{f:4,c:65128},12350,{f:12,c:12272},19970,{f:3,c:19972},19983,19986,19991,{f:3,c:19999},20003,20006,20009,{f:2,c:20014},20017,20019,20021,20023,20028,{f:3,c:20032},20036,20038,20042,20049,20053,20055,{f:2,c:20058},{f:4,c:20066},{f:2,c:20071},{f:6,c:20074},20082,{f:10,c:20084},{f:3,c:20095},{f:2,c:20099},[12037,20101],20103,20106,20112,{f:2,c:20118},20121,{f:2,c:20124},20131,20138,{f:3,c:20143},20148,{f:4,c:20150},{f:3,c:20156},20168,20172,{f:2,c:20175},20178,
-{f:3,c:20186},20192,20194,{f:2,c:20198},20201,{f:3,c:20205},20209,20212,{f:3,c:20216},20220,20222,20224,{f:7,c:20226},{f:2,c:20235},{f:5,c:20242},{f:2,c:20252},20257,20259,{f:2,c:20264},{f:3,c:20268},20273,20275,20277,20279,20281,20283,{f:5,c:20286},{f:2,c:20292},{f:6,c:20295},20306,20308,20310,{f:2,c:20321},20326,20328,{f:2,c:20330},{f:2,c:20333},{f:2,c:20337},20341,{f:4,c:20343},20349,{f:3,c:20352},20357,20359,20362,20364,20366,20368,{f:2,c:20370},20373,{f:3,c:20376},20380,{f:2,c:20382},{f:2,c:20385},
-20388,20395,20397,{f:5,c:20400},{f:9,c:20406},{f:2,c:20416},{f:4,c:20422},{f:3,c:20427},{f:5,c:20434},20441,20443,20450,{f:2,c:20452},20455,{f:2,c:20459},20464,20466,{f:4,c:20468},20473,{f:3,c:20475},20479,{f:5,c:20481},{f:2,c:20487},20490,20494,20496,20499,{f:3,c:20501},20507,{f:2,c:20509},20512,{f:3,c:20514},20519,{f:11,c:20527},20539,20541,{f:4,c:20543},{f:3,c:20548},{f:2,c:20554},20557,{f:5,c:20560},{f:4,c:20566},20571,{f:8,c:20573},{f:6,c:20582},{f:7,c:20589},{f:3,c:20600},{f:2,c:20604},{f:4,
-c:20609},{f:2,c:20614},{f:4,c:20617},{f:8,c:20622},20631,{f:8,c:20634},20644,20646,{f:2,c:20650},{f:4,c:20654},20662,{f:2,c:20664},{f:2,c:20668},{f:3,c:20671},{f:2,c:20675},{f:3,c:20678},{f:5,c:20682},20688,{f:3,c:20690},{f:3,c:20695},{f:3,c:20699},{f:6,c:20703},{f:3,c:20713},{f:4,c:20719},20724,{f:3,c:20726},20730,{f:4,c:20732},20737,20739,20741,20746,{f:4,c:20748},20753,20755,{f:2,c:20758},{f:6,c:20761},20768,{f:8,c:20770},{f:7,c:20779},{f:4,c:20787},{f:2,c:20792},{f:2,c:20797},20802,20807,20810,
-20812,{f:3,c:20814},20819,{f:3,c:20823},20827,{f:5,c:20829},{f:2,c:20835},{f:2,c:20838},20842,20847,20850,20858,{f:2,c:20862},{f:2,c:20867},{f:2,c:20870},{f:2,c:20874},{f:4,c:20878},{f:2,c:20883},20888,20890,{f:3,c:20893},20897,20899,{f:5,c:20902},{f:2,c:20909},20916,{f:3,c:20920},{f:2,c:20926},{f:3,c:20929},20933,20936,20938,20942,20944,{f:9,c:20946},20956,{f:2,c:20958},{f:2,c:20962},{f:6,c:20965},20972,20974,20978,20980,20983,20990,{f:2,c:20996},21001,{f:2,c:21003},{f:2,c:21007},{f:3,c:21011},21020,
-{f:2,c:21022},{f:3,c:21025},{f:3,c:21029},21034,21036,21039,{f:2,c:21041},{f:2,c:21044},21052,21054,{f:2,c:21061},{f:2,c:21064},{f:2,c:21070},{f:2,c:21074},21077,{f:4,c:21079},21085,{f:2,c:21087},{f:3,c:21090},21094,21096,{f:3,c:21099},{f:2,c:21104},21107,{f:7,c:21110},21118,21120,{f:3,c:21124},21131,{f:2,c:21134},21138,{f:7,c:21140},21148,{f:4,c:21156},{f:3,c:21166},{f:10,c:21172},21184,21186,{f:3,c:21188},21192,21194,{f:4,c:21196},21201,{f:2,c:21203},21207,21210,21212,{f:2,c:21216},21219,{f:11,
-c:21221},{f:3,c:21234},{f:2,c:21238},{f:3,c:21243},{f:4,c:21249},21255,{f:4,c:21257},21262,{f:4,c:21265},21272,{f:2,c:21275},{f:2,c:21278},21282,{f:2,c:21284},{f:3,c:21287},{f:2,c:21291},21296,{f:6,c:21298},[12054,21304],{f:2,c:21308},21314,21316,21318,{f:3,c:21323},21328,{f:2,c:21336},21339,21341,21349,21352,21354,{f:2,c:21356},21362,21366,21369,{f:4,c:21371},{f:2,c:21376},21379,{f:2,c:21383},21386,{f:7,c:21390},{f:2,c:21398},{f:2,c:21403},21406,21409,21412,21415,{f:3,c:21418},{f:3,c:21423},21427,
-21429,{f:4,c:21431},{f:3,c:21436},21440,{f:4,c:21444},{f:3,c:21454},{f:2,c:21458},21461,21466,{f:3,c:21468},21473,21479,21492,21498,{f:3,c:21502},21506,21509,21511,21515,21524,{f:3,c:21528},21532,21538,{f:2,c:21540},21546,21552,21555,{f:2,c:21558},21562,21565,21567,{f:2,c:21569},{f:2,c:21572},21575,21577,{f:4,c:21580},21585,21594,{f:5,c:21597},21603,21605,21607,{f:8,c:21609},21620,{f:2,c:21625},{f:2,c:21630},21633,21635,21637,{f:4,c:21639},21645,21649,21651,{f:2,c:21655},21660,{f:5,c:21662},21669,
-21678,21680,21682,{f:3,c:21685},{f:2,c:21689},21694,21699,21701,{f:2,c:21706},21718,21720,21723,21728,{f:3,c:21730},{f:2,c:21739},{f:3,c:21743},{f:6,c:21748},21755,21758,21760,{f:2,c:21762},21765,21768,{f:5,c:21770},{f:2,c:21778},{f:6,c:21781},{f:4,c:21788},21793,{f:2,c:21797},{f:2,c:21800},21803,21805,21810,{f:3,c:21812},{f:4,c:21816},21821,21824,21826,21829,{f:2,c:21831},{f:4,c:21835},{f:2,c:21841},21844,{f:5,c:21847},21853,{f:2,c:21855},{f:2,c:21858},{f:2,c:21864},21867,{f:6,c:21871},{f:2,c:21881},
-21885,21887,{f:2,c:21893},{f:3,c:21900},21904,{f:2,c:21906},{f:3,c:21909},{f:2,c:21914},21918,{f:7,c:21920},{f:2,c:21928},21931,21933,{f:2,c:21935},21940,21942,21944,21946,21948,{f:5,c:21951},21960,{f:2,c:21962},{f:2,c:21967},21973,{f:3,c:21975},21979,21982,21984,21986,21991,{f:2,c:21997},{f:2,c:22E3},22004,{f:5,c:22008},22015,{f:4,c:22018},22023,{f:2,c:22026},{f:4,c:22032},22037,{f:2,c:22041},22045,{f:3,c:22048},{f:2,c:22053},22056,{f:2,c:22058},22067,22071,22074,{f:3,c:22076},22080,{f:10,c:22082},
-{f:5,c:22095},{f:2,c:22101},{f:2,c:22106},{f:2,c:22110},22113,22115,22119,{f:2,c:22125},22128,22131,22133,22135,22138,{f:3,c:22141},{f:4,c:22145},{f:4,c:22152},22157,{f:3,c:22160},22164,{f:3,c:22166},{f:9,c:22170},{f:2,c:22180},22183,{f:5,c:22185},{f:3,c:22192},22197,{f:4,c:22200},{f:3,c:22205},{f:2,c:22211},{f:2,c:22214},22219,{f:4,c:22221},{f:2,c:22226},{f:2,c:22229},{f:2,c:22232},22236,22243,{f:6,c:22245},22252,{f:2,c:22254},{f:2,c:22258},{f:3,c:22262},{f:2,c:22267},{f:3,c:22272},22277,22284,{f:4,
-c:22286},{f:2,c:22292},22295,{f:3,c:22297},{f:2,c:22301},{f:3,c:22304},{f:4,c:22308},22315,{f:2,c:22321},{f:5,c:22324},{f:2,c:22332},22335,22337,{f:4,c:22339},{f:2,c:22344},22347,{f:5,c:22354},{f:2,c:22360},{f:2,c:22370},22373,22375,22380,22382,{f:3,c:22384},{f:2,c:22388},{f:3,c:22392},{f:5,c:22397},{f:4,c:22407},{f:5,c:22413},{f:7,c:22420},{f:4,c:22428},22437,22440,22442,22444,{f:3,c:22447},22451,{f:3,c:22453},{f:9,c:22457},{f:7,c:22468},{f:2,c:22476},{f:2,c:22480},22483,{f:2,c:22486},{f:2,c:22491},
-22494,{f:2,c:22498},{f:8,c:22501},22510,{f:4,c:22512},{f:2,c:22517},{f:2,c:22523},{f:2,c:22526},22529,{f:2,c:22531},{f:2,c:22536},22540,{f:3,c:22542},{f:3,c:22546},{f:2,c:22551},{f:3,c:22554},22559,{f:2,c:22562},{f:5,c:22565},{f:4,c:22571},{f:2,c:22578},{f:14,c:22582},{f:5,c:22597},22606,22608,22611,{f:2,c:22613},{f:5,c:22617},{f:3,c:22623},22627,{f:5,c:22630},{f:8,c:22637},{f:3,c:22646},{f:4,c:22650},22655,22658,22660,{f:3,c:22662},{f:7,c:22667},{f:5,c:22676},22683,22685,{f:8,c:22688},{f:4,c:22698},
-{f:4,c:22703},{f:7,c:22708},22717,{f:2,c:22719},{f:3,c:22722},22726,{f:9,c:22728},22738,22740,{f:2,c:22742},{f:3,c:22747},22753,22755,{f:4,c:22757},22762,22765,{f:2,c:22769},{f:2,c:22772},{f:2,c:22775},{f:2,c:22779},{f:4,c:22782},22787,{f:2,c:22789},{f:2,c:22792},[12066,22794],{f:2,c:22795},22798,{f:4,c:22800},{f:2,c:22807},22811,{f:2,c:22813},{f:2,c:22816},22819,22822,22824,22828,22832,{f:2,c:22834},{f:2,c:22837},22843,22845,{f:2,c:22847},22851,{f:2,c:22853},22858,{f:2,c:22860},22864,{f:2,c:22866},
-22873,{f:5,c:22875},22881,{f:2,c:22883},{f:3,c:22886},22891,22893,{f:4,c:22895},22901,22903,{f:3,c:22906},{f:3,c:22910},22917,22921,{f:2,c:22923},{f:4,c:22926},{f:2,c:22932},22936,{f:3,c:22938},{f:4,c:22943},{f:2,c:22950},{f:2,c:22956},{f:2,c:22960},{f:6,c:22963},22970,{f:2,c:22972},{f:7,c:22975},{f:3,c:22983},{f:4,c:22988},{f:2,c:22997},23001,23003,{f:5,c:23006},23012,{f:2,c:23014},{f:3,c:23017},{f:12,c:23021},23034,{f:3,c:23036},23040,23042,{f:2,c:23050},{f:4,c:23053},23058,{f:4,c:23060},{f:3,c:23065},
-{f:2,c:23069},{f:2,c:23073},23076,{f:3,c:23078},{f:7,c:23082},23091,23093,{f:5,c:23095},{f:3,c:23101},{f:4,c:23106},{f:2,c:23111},{f:10,c:23115},{f:4,c:23126},{f:7,c:23131},{f:3,c:23139},{f:2,c:23144},{f:2,c:23147},{f:6,c:23150},{f:2,c:23160},{f:4,c:23163},{f:18,c:23168},{f:7,c:23187},{f:11,c:23196},{f:2,c:23208},{f:7,c:23211},23220,{f:2,c:23222},{f:4,c:23225},{f:2,c:23231},{f:6,c:23235},{f:2,c:23242},{f:5,c:23245},23251,23253,{f:3,c:23257},{f:3,c:23261},23266,{f:2,c:23268},{f:2,c:23271},23274,{f:5,
-c:23276},{f:3,c:23282},{f:5,c:23286},{f:4,c:23292},{f:7,c:23297},23306,{f:9,c:23309},23320,{f:7,c:23322},{f:8,c:23330},{f:5,c:23339},23345,23347,{f:2,c:23349},{f:7,c:23353},{f:11,c:23361},{f:3,c:23373},23378,23382,23390,{f:2,c:23392},{f:2,c:23399},{f:3,c:23405},23410,23412,{f:2,c:23414},23417,{f:2,c:23419},23422,23426,23430,23434,{f:2,c:23437},{f:3,c:23440},23444,23446,23455,{f:3,c:23463},{f:4,c:23468},{f:2,c:23473},23479,{f:3,c:23482},{f:2,c:23488},23491,{f:4,c:23496},{f:3,c:23501},23505,{f:9,c:23508},
-23520,23523,23530,23533,23535,{f:4,c:23537},23543,{f:2,c:23549},23552,{f:2,c:23554},23557,23564,23568,{f:2,c:23570},23575,23577,23579,{f:4,c:23582},23587,23590,{f:4,c:23592},{f:4,c:23597},{f:2,c:23602},{f:2,c:23605},{f:2,c:23619},{f:2,c:23622},{f:2,c:23628},{f:3,c:23634},{f:3,c:23638},{f:4,c:23642},23647,23655,{f:3,c:23657},23661,23664,{f:7,c:23666},{f:4,c:23675},23680,{f:5,c:23683},{f:3,c:23689},{f:2,c:23694},{f:2,c:23698},23701,{f:4,c:23709},{f:5,c:23716},23722,{f:3,c:23726},23730,23732,23734,{f:4,
-c:23737},23742,23744,{f:2,c:23746},{f:6,c:23749},{f:6,c:23756},{f:6,c:23763},{f:7,c:23770},{f:2,c:23778},23783,23785,{f:2,c:23787},{f:2,c:23790},{f:3,c:23793},23797,{f:4,c:23799},23804,{f:4,c:23806},{f:2,c:23812},{f:5,c:23816},{f:5,c:23823},23829,{f:3,c:23832},{f:2,c:23836},{f:5,c:23839},23845,23848,{f:2,c:23850},{f:5,c:23855},{f:8,c:23861},{f:8,c:23871},{f:2,c:23880},{f:3,c:23885},{f:7,c:23889},{f:2,c:23897},23900,{f:11,c:23902},23914,{f:2,c:23917},{f:4,c:23920},{f:12,c:23925},23939,{f:2,c:23941},
-{f:15,c:23944},23960,{f:3,c:23962},{f:2,c:23966},{f:6,c:23969},{f:15,c:23976},23993,23995,{f:8,c:23997},{f:5,c:24006},24012,{f:4,c:24014},24019,{f:6,c:24021},24028,{f:2,c:24031},{f:2,c:24035},24042,{f:2,c:24044},{f:2,c:24053},{f:5,c:24056},{f:2,c:24063},24068,24071,{f:3,c:24073},{f:2,c:24077},{f:2,c:24082},24087,{f:7,c:24094},{f:3,c:24104},24108,{f:2,c:24111},24114,{f:2,c:24116},{f:2,c:24121},{f:2,c:24126},24129,{f:6,c:24134},{f:7,c:24141},24150,{f:2,c:24153},{f:2,c:24156},24160,{f:7,c:24164},{f:5,
-c:24173},24181,24183,{f:3,c:24193},24197,{f:2,c:24200},{f:3,c:24204},24210,24216,24219,24221,{f:4,c:24225},{f:3,c:24232},24236,{f:5,c:24238},24244,{f:4,c:24250},{f:10,c:24255},{f:6,c:24267},{f:2,c:24276},{f:4,c:24279},{f:3,c:24284},{f:4,c:24292},24297,24299,{f:6,c:24301},24309,{f:2,c:24312},{f:3,c:24315},{f:3,c:24325},24329,{f:3,c:24332},24336,24338,24340,24342,{f:2,c:24345},{f:3,c:24348},{f:4,c:24353},24360,{f:2,c:24363},24366,24368,24370,24372,{f:3,c:24374},24379,{f:3,c:24381},{f:5,c:24385},24391,
-{f:3,c:24393},24397,24399,24401,24404,{f:3,c:24410},{f:3,c:24414},24419,24421,{f:2,c:24423},24427,{f:2,c:24430},24434,{f:3,c:24436},24440,24442,{f:3,c:24445},24451,24454,{f:3,c:24461},{f:2,c:24467},24470,{f:2,c:24474},24477,24479,{f:6,c:24482},{f:2,c:24491},{f:6,c:24495},24502,24504,{f:2,c:24506},{f:5,c:24510},{f:2,c:24519},{f:2,c:24522},24526,{f:3,c:24531},{f:3,c:24538},{f:2,c:24542},{f:2,c:24546},{f:2,c:24549},{f:2,c:24552},24556,{f:2,c:24559},{f:3,c:24562},{f:2,c:24566},{f:2,c:24569},24572,{f:3,
-c:24583},{f:2,c:24587},{f:2,c:24592},24595,{f:2,c:24599},24602,{f:2,c:24606},{f:3,c:24610},{f:3,c:24620},{f:5,c:24624},{f:5,c:24630},{f:2,c:24637},24640,{f:7,c:24644},24652,{f:2,c:24654},24657,{f:2,c:24659},{f:3,c:24662},{f:2,c:24667},{f:4,c:24670},{f:2,c:24677},24686,{f:2,c:24689},{f:2,c:24692},24695,24702,{f:3,c:24704},{f:4,c:24709},{f:2,c:24714},{f:4,c:24718},24723,24725,{f:3,c:24727},24732,24734,{f:2,c:24737},{f:2,c:24740},24743,{f:2,c:24745},24750,24752,24755,24759,{f:2,c:24761},{f:8,c:24765},
-{f:3,c:24775},{f:5,c:24780},{f:3,c:24786},{f:2,c:24790},24793,24795,24798,{f:4,c:24802},24810,24821,{f:2,c:24823},{f:4,c:24828},{f:4,c:24834},24839,{f:3,c:24842},{f:5,c:24848},{f:4,c:24854},{f:2,c:24861},{f:2,c:24865},24869,{f:3,c:24872},{f:8,c:24876},{f:2,c:24885},{f:6,c:24888},{f:8,c:24896},24905,24909,{f:2,c:24911},{f:3,c:24914},{f:2,c:24918},24921,{f:2,c:24923},24926,{f:2,c:24928},{f:2,c:24933},24937,{f:2,c:24940},24943,{f:2,c:24945},24948,{f:10,c:24952},{f:7,c:24963},{f:2,c:24972},24975,24979,
-{f:5,c:24981},{f:2,c:24987},{f:6,c:24990},{f:2,c:24997},25002,25005,{f:3,c:25007},{f:3,c:25011},{f:6,c:25016},{f:3,c:25023},{f:4,c:25027},{f:4,c:25037},25043,{f:9,c:25045},{f:3,c:25056},{f:2,c:25060},25063,{f:9,c:25065},{f:2,c:25075},25081,25083,25085,{f:5,c:25089},25097,25107,25113,{f:3,c:25116},25120,25123,25126,{f:2,c:25128},25131,25133,25135,25137,25141,[12094,25142],{f:5,c:25144},25154,{f:3,c:25156},25162,{f:2,c:25167},{f:3,c:25173},{f:2,c:25177},{f:7,c:25180},{f:2,c:25188},25192,{f:2,c:25201},
-{f:2,c:25204},{f:2,c:25207},{f:2,c:25210},25213,{f:3,c:25217},{f:4,c:25221},{f:6,c:25227},25236,25241,{f:3,c:25244},25251,{f:2,c:25254},{f:2,c:25257},{f:4,c:25261},{f:3,c:25266},{f:3,c:25270},25274,25278,{f:2,c:25280},25283,25291,25295,25297,25301,{f:2,c:25309},{f:2,c:25312},25316,{f:2,c:25322},25328,25330,25333,{f:4,c:25336},25344,{f:4,c:25347},{f:4,c:25354},{f:2,c:25359},{f:4,c:25362},{f:3,c:25367},25372,{f:2,c:25382},25385,{f:3,c:25388},{f:2,c:25392},{f:6,c:25395},{f:2,c:25403},{f:3,c:25407},25412,
-{f:2,c:25415},25418,{f:4,c:25425},{f:8,c:25430},25440,{f:3,c:25444},25450,25452,{f:2,c:25455},{f:3,c:25459},{f:2,c:25464},{f:4,c:25468},25473,{f:2,c:25477},25483,25485,25489,{f:3,c:25491},25495,{f:7,c:25497},25505,25508,25510,25515,25519,{f:2,c:25521},{f:2,c:25525},25529,25531,25533,25535,{f:3,c:25537},25541,{f:2,c:25543},{f:3,c:25546},25553,{f:3,c:25555},{f:3,c:25559},{f:3,c:25563},25567,25570,{f:5,c:25572},{f:2,c:25579},{f:3,c:25583},25587,25589,25591,{f:4,c:25593},25598,{f:2,c:25603},{f:5,c:25606},
-25614,{f:2,c:25617},{f:2,c:25621},{f:3,c:25624},25629,25631,{f:4,c:25634},{f:3,c:25639},25643,{f:6,c:25646},25653,{f:3,c:25655},{f:2,c:25659},25662,25664,{f:2,c:25666},25673,{f:6,c:25675},25683,{f:3,c:25685},{f:3,c:25689},25693,{f:7,c:25696},25704,{f:3,c:25706},25710,{f:3,c:25712},{f:2,c:25716},25719,{f:6,c:25724},25731,25734,{f:8,c:25737},25748,{f:2,c:25751},{f:4,c:25754},{f:3,c:25760},{f:3,c:25766},25770,25775,25777,25780,25782,25785,25789,25795,25798,{f:2,c:25800},25804,25807,25809,25811,{f:2,
-c:25813},25817,{f:3,c:25819},25823,25825,25827,25829,{f:5,c:25831},{f:2,c:25837},25843,{f:2,c:25845},{f:2,c:25848},25853,25855,{f:3,c:25857},25861,{f:2,c:25863},{f:5,c:25866},{f:2,c:25872},25875,25877,25879,25882,25884,{f:4,c:25886},{f:4,c:25894},25901,{f:4,c:25904},25911,25914,{f:2,c:25916},{f:5,c:25920},{f:2,c:25926},{f:2,c:25930},{f:2,c:25933},25936,{f:3,c:25938},25944,25946,25948,{f:3,c:25951},{f:2,c:25956},{f:4,c:25959},{f:3,c:25965},25969,25971,25974,{f:9,c:25977},{f:3,c:25988},{f:3,c:25992},
-{f:3,c:25997},26002,26004,26006,26008,26010,{f:2,c:26013},26016,{f:2,c:26018},26022,26024,26026,26030,{f:6,c:26033},26040,{f:2,c:26042},{f:3,c:26046},26050,{f:4,c:26055},26061,{f:2,c:26064},{f:3,c:26067},{f:8,c:26072},26081,{f:2,c:26083},{f:2,c:26090},{f:4,c:26098},{f:2,c:26104},{f:5,c:26107},26113,{f:2,c:26116},{f:3,c:26119},26123,26125,{f:3,c:26128},{f:3,c:26134},{f:3,c:26138},26142,{f:4,c:26145},26150,{f:4,c:26153},26158,26160,{f:2,c:26162},{f:5,c:26167},26173,{f:2,c:26175},{f:7,c:26180},{f:2,
-c:26189},{f:2,c:26192},{f:2,c:26200},{f:2,c:26203},26206,26208,{f:2,c:26210},26213,26215,{f:5,c:26217},{f:3,c:26225},26229,{f:2,c:26232},{f:3,c:26235},{f:3,c:26239},26243,{f:2,c:26245},{f:2,c:26250},{f:4,c:26253},{f:4,c:26258},{f:5,c:26264},{f:4,c:26270},{f:4,c:26275},{f:2,c:26281},{f:2,c:26284},{f:5,c:26287},{f:4,c:26293},{f:4,c:26298},{f:5,c:26303},26309,26312,{f:12,c:26314},{f:2,c:26327},26330,{f:2,c:26334},{f:5,c:26337},{f:2,c:26343},{f:2,c:26346},{f:3,c:26349},26353,{f:2,c:26357},{f:2,c:26362},
-26365,{f:2,c:26369},{f:4,c:26372},26380,{f:2,c:26382},{f:3,c:26385},26390,{f:3,c:26392},26396,26398,{f:6,c:26400},26409,26414,26416,{f:2,c:26418},{f:4,c:26422},{f:2,c:26427},{f:2,c:26430},26433,{f:2,c:26436},26439,{f:2,c:26442},26445,26450,{f:2,c:26452},{f:5,c:26455},26461,{f:3,c:26466},{f:2,c:26470},{f:2,c:26475},26478,26484,26486,{f:4,c:26488},26493,26496,{f:2,c:26498},{f:2,c:26501},26504,26506,{f:4,c:26508},{f:4,c:26513},26518,26521,26523,{f:3,c:26527},26532,26534,26537,26540,26542,{f:2,c:26545},
-26548,{f:8,c:26553},26562,{f:10,c:26565},{f:3,c:26581},26587,26591,26593,{f:2,c:26595},{f:3,c:26598},{f:2,c:26602},{f:2,c:26605},26610,{f:8,c:26613},26622,{f:4,c:26625},26630,26637,26640,26642,{f:2,c:26644},{f:5,c:26648},{f:3,c:26654},{f:7,c:26658},{f:7,c:26667},{f:3,c:26676},{f:2,c:26682},26687,26695,26699,26701,26703,26706,{f:10,c:26710},26730,{f:8,c:26732},26741,{f:9,c:26744},26754,26756,{f:8,c:26759},{f:3,c:26768},{f:3,c:26772},{f:4,c:26777},26782,{f:2,c:26784},{f:3,c:26787},{f:4,c:26793},26798,
-{f:2,c:26801},26804,{f:10,c:26806},26817,{f:6,c:26819},26826,26828,{f:4,c:26830},{f:2,c:26835},26841,{f:4,c:26843},{f:2,c:26849},{f:3,c:26852},{f:6,c:26856},26863,{f:3,c:26866},{f:3,c:26870},26875,{f:4,c:26877},{f:3,c:26882},{f:5,c:26886},26892,26897,{f:12,c:26899},{f:3,c:26913},{f:8,c:26917},{f:2,c:26926},{f:3,c:26929},{f:4,c:26933},{f:3,c:26938},26942,{f:2,c:26944},{f:7,c:26947},{f:8,c:26955},{f:2,c:26965},{f:2,c:26968},{f:2,c:26971},26975,{f:2,c:26977},{f:2,c:26980},26983,{f:2,c:26985},26988,{f:2,
-c:26991},{f:3,c:26994},26998,{f:2,c:27002},{f:3,c:27005},27009,27011,27013,{f:3,c:27018},{f:6,c:27022},{f:2,c:27030},{f:2,c:27033},{f:10,c:27037},27049,27052,{f:2,c:27055},{f:2,c:27058},{f:2,c:27061},{f:3,c:27064},{f:3,c:27068},27072,{f:8,c:27074},27087,{f:3,c:27089},{f:6,c:27093},{f:3,c:27100},{f:6,c:27105},{f:5,c:27112},{f:4,c:27118},{f:9,c:27124},27134,27136,{f:2,c:27139},{f:4,c:27142},{f:8,c:27147},{f:3,c:27156},{f:4,c:27162},27168,27170,{f:4,c:27172},27177,{f:4,c:27179},27184,{f:3,c:27186},{f:2,
-c:27190},{f:2,c:27195},{f:5,c:27199},{f:2,c:27205},{f:2,c:27209},{f:4,c:27212},{f:7,c:27217},27226,{f:3,c:27228},27232,{f:2,c:27235},{f:11,c:27238},{f:7,c:27250},{f:2,c:27258},{f:3,c:27261},{f:3,c:27265},{f:4,c:27269},{f:4,c:27274},27279,{f:2,c:27282},{f:2,c:27285},{f:4,c:27288},{f:3,c:27293},27297,{f:5,c:27300},27306,{f:2,c:27309},{f:3,c:27312},{f:4,c:27316},{f:2,c:27321},{f:7,c:27324},{f:15,c:27332},{f:6,c:27348},27356,{f:7,c:27360},27369,27371,{f:6,c:27373},{f:4,c:27380},{f:2,c:27385},{f:8,c:27388},
-{f:5,c:27397},{f:4,c:27403},{f:2,c:27408},{f:3,c:27411},{f:7,c:27415},27423,{f:2,c:27429},{f:10,c:27432},{f:4,c:27443},27448,{f:2,c:27451},{f:4,c:27455},{f:2,c:27460},27464,{f:2,c:27466},{f:3,c:27469},{f:8,c:27473},{f:5,c:27482},27488,{f:2,c:27496},{f:7,c:27499},{f:4,c:27507},27514,{f:4,c:27517},27525,27528,27532,{f:4,c:27534},{f:2,c:27540},27543,27545,{f:2,c:27548},{f:2,c:27551},{f:2,c:27554},{f:5,c:27557},{f:2,c:27564},{f:2,c:27568},27574,{f:2,c:27576},{f:3,c:27580},27584,{f:2,c:27587},{f:4,c:27591},
-27596,27598,{f:2,c:27600},27608,27610,{f:5,c:27612},{f:8,c:27618},{f:3,c:27628},{f:3,c:27632},27636,{f:3,c:27638},{f:3,c:27642},27646,{f:5,c:27648},{f:3,c:27657},27662,27666,27671,{f:3,c:27676},27680,27685,27693,27697,27699,{f:2,c:27702},{f:4,c:27705},{f:2,c:27710},{f:3,c:27715},27720,{f:5,c:27723},{f:3,c:27729},27734,{f:3,c:27736},{f:2,c:27746},{f:3,c:27749},{f:5,c:27755},27761,27763,27765,{f:2,c:27767},{f:3,c:27770},{f:2,c:27775},27780,27783,{f:2,c:27786},{f:2,c:27789},{f:2,c:27793},{f:4,c:27797},
-27802,{f:3,c:27804},27808,27810,27816,27820,{f:2,c:27823},{f:4,c:27828},27834,{f:4,c:27840},{f:3,c:27846},27851,{f:3,c:27853},{f:2,c:27857},{f:3,c:27864},{f:2,c:27868},27871,27876,{f:2,c:27878},27881,{f:2,c:27884},27890,27892,27897,{f:2,c:27903},{f:2,c:27906},{f:2,c:27909},{f:3,c:27912},27917,{f:3,c:27919},{f:4,c:27923},27928,{f:2,c:27932},{f:6,c:27935},27942,{f:2,c:27944},{f:2,c:27948},{f:2,c:27951},27956,{f:3,c:27958},27962,{f:2,c:27967},27970,27972,27977,27980,27984,{f:4,c:27989},27995,27997,27999,
-{f:2,c:28001},{f:2,c:28004},{f:2,c:28007},{f:3,c:28011},{f:4,c:28016},{f:2,c:28021},{f:2,c:28026},{f:5,c:28029},{f:2,c:28035},28038,{f:2,c:28042},28045,{f:2,c:28047},28050,{f:5,c:28054},28060,28066,28069,{f:2,c:28076},{f:2,c:28080},{f:2,c:28083},{f:2,c:28086},{f:6,c:28089},{f:3,c:28097},{f:3,c:28104},{f:4,c:28109},{f:4,c:28114},28119,{f:3,c:28122},28127,{f:2,c:28130},28133,{f:3,c:28135},28141,{f:2,c:28143},28146,28148,28152,{f:8,c:28157},{f:4,c:28166},28171,28175,{f:2,c:28178},28181,{f:2,c:28184},
-{f:2,c:28187},{f:2,c:28190},28194,{f:2,c:28199},28202,28206,{f:2,c:28208},28211,{f:3,c:28213},28217,{f:3,c:28219},{f:4,c:28223},{f:8,c:28229},{f:4,c:28239},28245,28247,{f:2,c:28249},{f:2,c:28252},{f:11,c:28256},{f:2,c:28268},{f:14,c:28272},{f:3,c:28288},28292,{f:2,c:28295},{f:5,c:28298},{f:5,c:28305},28311,{f:3,c:28313},28318,{f:2,c:28320},{f:2,c:28323},28326,{f:2,c:28328},{f:4,c:28331},28336,28339,28341,{f:2,c:28344},28348,{f:3,c:28350},28355,28358,{f:3,c:28360},28365,28368,28370,28374,{f:2,c:28376},
-{f:3,c:28379},28387,28391,{f:2,c:28394},{f:2,c:28397},{f:2,c:28400},28403,{f:2,c:28405},{f:5,c:28410},28416,{f:3,c:28419},{f:2,c:28423},{f:5,c:28426},{f:3,c:28432},{f:4,c:28438},{f:5,c:28443},28449,{f:4,c:28453},28462,28464,{f:2,c:28468},28471,{f:5,c:28473},28480,{f:4,c:28482},{f:3,c:28488},28492,{f:3,c:28494},{f:2,c:28498},{f:3,c:28501},{f:2,c:28506},28509,{f:3,c:28511},28515,28517,{f:6,c:28519},28529,28531,{f:2,c:28533},28537,28539,{f:2,c:28541},{f:3,c:28545},28549,{f:2,c:28554},{f:8,c:28559},{f:4,
-c:28568},{f:3,c:28573},{f:2,c:28578},{f:2,c:28581},28584,{f:4,c:28586},{f:2,c:28591},28594,{f:2,c:28596},{f:2,c:28599},{f:6,c:28602},{f:5,c:28612},{f:7,c:28618},{f:2,c:28627},{f:2,c:28630},{f:2,c:28633},{f:2,c:28636},{f:2,c:28642},{f:6,c:28645},{f:2,c:28652},{f:8,c:28658},28667,28669,{f:6,c:28671},{f:2,c:28679},28682,{f:3,c:28684},28688,{f:3,c:28690},{f:2,c:28694},28697,28700,28702,{f:2,c:28705},{f:3,c:28708},{f:7,c:28713},28721,{f:2,c:28723},{f:3,c:28726},{f:4,c:28730},{f:4,c:28735},{f:7,c:28741},
-{f:2,c:28749},28752,{f:3,c:28754},{f:2,c:28758},{f:4,c:28761},{f:4,c:28767},{f:2,c:28773},{f:3,c:28776},28782,{f:4,c:28785},28791,{f:3,c:28793},28797,{f:4,c:28801},{f:3,c:28806},{f:3,c:28811},{f:3,c:28815},28819,{f:2,c:28823},{f:2,c:28826},{f:13,c:28830},28848,28850,{f:3,c:28852},28858,{f:2,c:28862},{f:4,c:28868},28873,{f:4,c:28875},{f:8,c:28880},28890,{f:3,c:28892},{f:4,c:28896},28901,28906,28910,{f:4,c:28912},{f:2,c:28917},28920,{f:3,c:28922},{f:11,c:28926},{f:5,c:28939},{f:2,c:28945},28948,28951,
-{f:6,c:28955},{f:4,c:28962},{f:8,c:28967},{f:4,c:28978},{f:14,c:28983},{f:3,c:28998},29003,29005,{f:3,c:29007},{f:9,c:29011},29021,{f:3,c:29023},29027,29029,{f:2,c:29034},29037,{f:3,c:29039},{f:4,c:29044},29049,{f:2,c:29051},{f:6,c:29054},{f:5,c:29061},{f:4,c:29067},{f:2,c:29072},29075,{f:2,c:29077},{f:5,c:29082},{f:7,c:29089},{f:3,c:29097},{f:4,c:29101},29106,29108,{f:3,c:29110},{f:4,c:29114},{f:2,c:29119},29122,{f:4,c:29124},{f:5,c:29129},{f:3,c:29135},29139,{f:3,c:29142},{f:2,c:29146},{f:2,c:29149},
-{f:4,c:29153},{f:5,c:29160},{f:5,c:29167},{f:4,c:29173},{f:2,c:29178},29181,{f:7,c:29183},{f:6,c:29191},{f:2,c:29198},{f:10,c:29201},29212,{f:10,c:29214},29225,29227,{f:3,c:29229},{f:2,c:29235},29244,{f:7,c:29248},{f:3,c:29257},{f:4,c:29262},{f:3,c:29267},29271,29274,29276,29278,29280,{f:3,c:29283},29288,{f:4,c:29290},{f:2,c:29296},{f:2,c:29299},{f:3,c:29302},{f:2,c:29307},{f:2,c:29314},{f:5,c:29317},29324,29326,{f:2,c:29328},{f:3,c:29331},{f:8,c:29335},{f:2,c:29344},{f:4,c:29347},{f:4,c:29352},29358,
-{f:3,c:29361},29365,{f:6,c:29370},{f:3,c:29381},{f:4,c:29385},29391,29393,{f:4,c:29395},29400,{f:4,c:29402},29407,{f:6,c:29410},{f:2,c:29418},{f:2,c:29429},{f:3,c:29438},29442,{f:6,c:29444},{f:3,c:29451},{f:4,c:29455},29460,{f:3,c:29464},{f:2,c:29471},{f:2,c:29475},{f:3,c:29478},29485,{f:2,c:29487},{f:2,c:29490},29493,29498,{f:2,c:29500},29504,{f:2,c:29506},{f:7,c:29510},{f:2,c:29518},29521,{f:4,c:29523},{f:8,c:29528},{f:7,c:29537},29545,29550,29553,{f:2,c:29555},29558,29561,29565,29567,{f:3,c:29569},
-{f:2,c:29573},29576,29578,{f:2,c:29580},{f:2,c:29583},{f:4,c:29586},{f:4,c:29591},{f:3,c:29596},{f:2,c:29600},{f:6,c:29603},29610,{f:2,c:29612},29617,{f:3,c:29620},{f:2,c:29624},{f:4,c:29628},29633,{f:5,c:29635},{f:2,c:29643},29646,{f:7,c:29650},{f:4,c:29658},29663,{f:4,c:29665},29670,29672,{f:3,c:29674},{f:4,c:29678},{f:11,c:29683},{f:4,c:29695},29700,{f:2,c:29703},{f:4,c:29707},{f:9,c:29713},{f:6,c:29724},{f:2,c:29731},29735,29737,29739,29741,29743,{f:2,c:29745},{f:5,c:29751},{f:2,c:29757},29760,
-{f:9,c:29762},{f:9,c:29772},29782,29784,29789,{f:3,c:29792},{f:5,c:29796},{f:2,c:29803},{f:2,c:29806},{f:5,c:29809},{f:6,c:29816},29823,29826,{f:3,c:29828},29832,29834,{f:2,c:29836},29839,{f:11,c:29841},29853,{f:4,c:29855},{f:2,c:29860},{f:6,c:29866},{f:9,c:29873},{f:2,c:29883},{f:12,c:29886},{f:4,c:29899},{f:2,c:29904},29907,{f:5,c:29909},29915,29917,29919,29921,29925,{f:7,c:29927},{f:4,c:29936},29941,{f:7,c:29944},{f:4,c:29952},{f:7,c:29957},29966,29968,29970,{f:4,c:29972},29979,{f:2,c:29981},{f:3,
-c:29984},29988,{f:2,c:29990},29994,29998,30004,30006,30009,{f:2,c:30012},30015,{f:4,c:30017},{f:2,c:30022},{f:2,c:30025},30029,{f:4,c:30032},{f:4,c:30037},{f:4,c:30046},{f:2,c:30051},{f:3,c:30055},{f:6,c:30060},30067,30069,30071,{f:5,c:30074},{f:3,c:30080},{f:2,c:30084},{f:3,c:30088},{f:3,c:30092},30096,30099,30101,30104,{f:2,c:30107},30110,30114,{f:5,c:30118},30125,{f:2,c:30134},{f:2,c:30138},{f:3,c:30143},30150,{f:2,c:30155},{f:4,c:30158},30163,30167,30170,{f:2,c:30172},{f:3,c:30175},30181,30185,
-{f:4,c:30188},{f:2,c:30194},{f:4,c:30197},{f:2,c:30202},{f:2,c:30205},30212,{f:4,c:30214},{f:2,c:30222},{f:4,c:30225},30230,30234,{f:2,c:30236},30243,30248,30252,{f:2,c:30254},{f:2,c:30257},{f:2,c:30262},{f:2,c:30265},30269,30273,{f:2,c:30276},30280,{f:2,c:30282},{f:6,c:30286},30293,30295,{f:3,c:30297},30301,{f:2,c:30304},30310,30312,30314,{f:3,c:30323},[12136,30326],30327,{f:2,c:30329},{f:3,c:30335},30339,30341,{f:2,c:30345},{f:2,c:30348},{f:2,c:30351},30354,{f:2,c:30356},{f:2,c:30359},{f:9,c:30363},
-{f:9,c:30373},{f:2,c:30383},30387,{f:3,c:30389},30393,{f:4,c:30395},{f:2,c:30400},{f:2,c:30403},30407,30409,{f:2,c:30411},30419,30421,{f:2,c:30425},{f:2,c:30428},30432,30434,30438,{f:6,c:30440},30448,30451,{f:3,c:30453},{f:2,c:30458},30461,{f:2,c:30463},{f:2,c:30466},{f:2,c:30469},30474,30476,{f:11,c:30478},{f:4,c:30491},30497,{f:3,c:30499},30503,{f:3,c:30506},30510,{f:5,c:30512},30521,30523,{f:3,c:30525},30530,{f:3,c:30532},{f:7,c:30536},{f:8,c:30546},{f:2,c:30556},{f:2,c:30559},30564,30567,{f:2,
-c:30569},{f:12,c:30573},{f:3,c:30586},{f:3,c:30593},{f:6,c:30598},{f:2,c:30607},{f:5,c:30611},{f:5,c:30617},30625,{f:2,c:30627},30630,30632,30635,{f:2,c:30638},{f:2,c:30641},30644,{f:5,c:30646},30654,{f:7,c:30656},{f:5,c:30664},{f:9,c:30670},{f:2,c:30680},{f:5,c:30685},30692,30694,30696,30698,{f:3,c:30704},{f:2,c:30708},30711,{f:4,c:30713},{f:6,c:30723},{f:2,c:30730},{f:3,c:30734},30739,30741,30745,30747,30750,{f:3,c:30752},30756,30760,{f:2,c:30762},{f:2,c:30766},{f:3,c:30769},{f:2,c:30773},30781,
-30783,{f:2,c:30785},30788,30790,{f:4,c:30792},30797,30799,30801,{f:2,c:30803},{f:5,c:30808},{f:6,c:30814},{f:3,c:30821},30825,{f:7,c:30832},{f:4,c:30840},{f:10,c:30845},30856,{f:2,c:30858},{f:2,c:30863},30866,{f:3,c:30868},30873,{f:2,c:30877},30880,30882,30884,30886,30888,{f:3,c:30890},{f:2,c:30894},{f:3,c:30901},30907,30909,{f:2,c:30911},{f:3,c:30914},{f:3,c:30918},{f:4,c:30924},{f:3,c:30929},{f:3,c:30934},{f:8,c:30939},{f:3,c:30948},{f:3,c:30953},{f:2,c:30957},{f:2,c:30960},30963,{f:2,c:30965},
-{f:2,c:30968},{f:2,c:30971},{f:3,c:30974},{f:3,c:30978},{f:8,c:30982},{f:4,c:30991},{f:5,c:30996},{f:4,c:31002},{f:5,c:31007},31013,{f:3,c:31015},{f:4,c:31021},{f:2,c:31026},{f:5,c:31029},31037,31039,{f:4,c:31042},31047,{f:9,c:31050},{f:2,c:31060},{f:2,c:31064},31073,{f:2,c:31075},31078,{f:4,c:31081},31086,{f:7,c:31088},31097,{f:5,c:31099},{f:2,c:31106},{f:4,c:31110},{f:2,c:31115},{f:10,c:31120},{f:11,c:31131},{f:2,c:31144},{f:3,c:31147},31151,31154,{f:4,c:31156},[12145,31160],31164,31167,31170,{f:2,
-c:31172},{f:2,c:31175},31178,31180,{f:3,c:31182},{f:2,c:31187},{f:2,c:31190},{f:6,c:31193},{f:3,c:31200},31205,31208,31210,31212,31214,{f:7,c:31217},{f:2,c:31225},31228,{f:2,c:31230},31233,{f:2,c:31236},{f:4,c:31239},31244,{f:5,c:31247},{f:2,c:31253},{f:2,c:31256},{f:3,c:31259},31263,{f:2,c:31265},{f:10,c:31268},{f:2,c:31279},31282,{f:3,c:31284},31288,31290,31294,{f:5,c:31297},{f:5,c:31303},{f:2,c:31311},{f:5,c:31314},{f:9,c:31320},{f:6,c:31331},31338,{f:4,c:31340},{f:3,c:31345},31349,{f:4,c:31355},
-31362,31365,31367,{f:4,c:31369},{f:3,c:31374},{f:2,c:31379},{f:3,c:31385},31390,{f:4,c:31393},31399,31403,{f:4,c:31407},{f:2,c:31412},{f:3,c:31415},{f:4,c:31419},{f:4,c:31424},31430,31433,{f:10,c:31436},{f:2,c:31447},{f:4,c:31450},{f:2,c:31457},31460,{f:3,c:31463},{f:2,c:31467},31470,{f:6,c:31472},{f:2,c:31479},{f:2,c:31483},31486,{f:3,c:31488},31493,31495,31497,{f:3,c:31500},31504,{f:2,c:31506},{f:3,c:31510},31514,{f:2,c:31516},31519,{f:3,c:31521},31527,31529,31533,{f:2,c:31535},31538,{f:4,c:31540},
-31545,31547,31549,{f:6,c:31551},31560,31562,{f:2,c:31565},31571,31573,31575,31577,31580,{f:2,c:31582},31585,{f:4,c:31587},{f:6,c:31592},{f:2,c:31599},{f:2,c:31603},31606,31608,31610,{f:2,c:31612},31615,{f:4,c:31617},{f:5,c:31622},31628,{f:2,c:31630},{f:3,c:31633},31638,{f:4,c:31640},{f:3,c:31646},{f:3,c:31651},{f:3,c:31662},{f:2,c:31666},{f:3,c:31669},{f:7,c:31673},{f:2,c:31682},31685,31688,31690,{f:4,c:31693},31698,{f:5,c:31700},{f:2,c:31707},{f:3,c:31710},{f:2,c:31714},{f:2,c:31719},{f:3,c:31723},
-{f:2,c:31727},31730,{f:3,c:31732},{f:4,c:31736},31741,31743,{f:6,c:31745},{f:3,c:31752},31758,{f:6,c:31760},{f:7,c:31767},31776,31778,{f:2,c:31780},{f:2,c:31784},{f:12,c:31788},{f:4,c:31801},31810,{f:8,c:31812},{f:14,c:31822},{f:2,c:31837},{f:3,c:31841},{f:4,c:31845},31851,31853,{f:3,c:31855},{f:6,c:31861},{f:11,c:31870},{f:7,c:31882},{f:2,c:31891},31894,{f:3,c:31897},{f:2,c:31904},31907,{f:4,c:31910},{f:3,c:31915},{f:2,c:31919},{f:5,c:31924},{f:2,c:31930},{f:2,c:31935},{f:3,c:31938},31942,31945,
-31947,{f:7,c:31950},31960,{f:2,c:31962},{f:6,c:31969},{f:6,c:31977},31985,31987,31989,31991,31994,{f:2,c:31996},31999,32001,32003,32012,{f:2,c:32014},{f:2,c:32017},32022,32024,{f:3,c:32029},{f:4,c:32035},{f:3,c:32040},{f:3,c:32044},{f:5,c:32052},32059,{f:2,c:32061},32065,32067,32069,{f:7,c:32071},32079,{f:12,c:32081},{f:2,c:32095},{f:3,c:32099},32103,{f:5,c:32105},{f:2,c:32111},{f:2,c:32116},32120,{f:7,c:32122},32130,{f:2,c:32132},32135,{f:5,c:32138},{f:3,c:32144},{f:8,c:32148},32157,{f:3,c:32159},
-{f:2,c:32164},{f:4,c:32167},32175,{f:3,c:32181},32188,{f:4,c:32192},{f:2,c:32197},{f:2,c:32200},{f:5,c:32204},32211,{f:2,c:32213},{f:3,c:32218},32223,32226,{f:2,c:32228},32231,{f:2,c:32234},{f:2,c:32237},32240,32243,32245,{f:2,c:32247},32250,{f:12,c:32252},{f:4,c:32268},{f:9,c:32274},32284,{f:3,c:32288},{f:3,c:32292},{f:3,c:32296},32300,{f:2,c:32303},32307,32312,32314,32316,{f:2,c:32319},{f:3,c:32322},{f:10,c:32328},32339,{f:4,c:32342},{f:3,c:32347},{f:3,c:32351},{f:6,c:32355},32364,{f:2,c:32369},
-{f:5,c:32372},{f:2,c:32378},{f:3,c:32383},{f:5,c:32387},32393,32395,32398,{f:3,c:32400},32405,32407,{f:2,c:32409},{f:2,c:32413},32430,32436,{f:2,c:32443},32470,32484,32492,32505,32522,32528,32542,32567,32569,{f:7,c:32571},32579,{f:6,c:32582},32589,32591,{f:2,c:32594},32598,32601,{f:4,c:32603},32608,{f:5,c:32611},{f:3,c:32619},32623,32627,{f:2,c:32629},32632,{f:4,c:32634},{f:2,c:32639},{f:3,c:32642},32647,32649,32651,32653,{f:5,c:32655},{f:5,c:32661},{f:2,c:32667},32672,{f:2,c:32674},32678,32680,{f:5,
-c:32682},32689,{f:5,c:32691},{f:2,c:32698},32702,32704,{f:3,c:32706},{f:4,c:32710},32715,32717,{f:3,c:32719},32723,{f:2,c:32726},{f:6,c:32729},{f:3,c:32738},{f:2,c:32743},{f:4,c:32746},32751,32754,{f:5,c:32756},32762,{f:3,c:32765},32770,{f:4,c:32775},{f:2,c:32782},32785,32787,{f:2,c:32794},{f:3,c:32797},32801,{f:2,c:32803},32811,32813,{f:2,c:32815},32818,32820,{f:2,c:32825},32828,32830,{f:2,c:32832},{f:2,c:32836},{f:3,c:32839},{f:4,c:32846},32851,32853,32855,32857,{f:3,c:32859},{f:10,c:32863},{f:4,
-c:32875},32884,32888,{f:3,c:32890},{f:2,c:32897},32904,32906,{f:6,c:32909},{f:2,c:32916},32919,32921,32926,32931,{f:3,c:32934},32940,32944,32947,{f:2,c:32949},{f:2,c:32952},32955,32965,{f:5,c:32967},{f:7,c:32975},32984,{f:2,c:32991},{f:2,c:32994},32998,33006,33013,33015,33017,33019,{f:4,c:33022},{f:2,c:33027},{f:2,c:33031},{f:2,c:33035},33045,33047,33049,{f:2,c:33052},{f:13,c:33055},{f:2,c:33069},33072,{f:3,c:33075},33079,{f:4,c:33082},{f:7,c:33087},33095,33097,33101,33103,33106,{f:2,c:33111},{f:5,
-c:33115},{f:3,c:33122},33128,33130,33132,33135,{f:2,c:33138},{f:3,c:33141},33153,{f:5,c:33155},33161,{f:4,c:33163},33168,{f:6,c:33170},33177,{f:2,c:33182},{f:2,c:33185},{f:2,c:33188},33191,{f:8,c:33195},{f:6,c:33204},33212,{f:2,c:33220},{f:2,c:33223},33227,33230,{f:8,c:33232},33241,{f:4,c:33243},{f:2,c:33249},{f:3,c:33252},33257,33259,{f:5,c:33262},{f:5,c:33269},33277,33279,33283,33291,{f:2,c:33294},33297,33299,{f:6,c:33301},33309,33312,{f:4,c:33316},33321,33326,33330,33338,{f:2,c:33340},{f:5,c:33343},
-{f:2,c:33349},33352,33354,{f:3,c:33356},{f:8,c:33360},{f:4,c:33371},{f:4,c:33376},33381,33383,{f:2,c:33385},{f:2,c:33388},{f:2,c:33397},[12171,33400],{f:2,c:33403},{f:2,c:33408},33411,{f:3,c:33413},33417,33420,33424,{f:4,c:33427},{f:2,c:33434},33438,33440,{f:2,c:33442},33447,33458,{f:2,c:33461},33466,33468,{f:2,c:33471},{f:2,c:33474},{f:2,c:33477},33481,33488,33494,{f:2,c:33497},33501,33506,{f:3,c:33512},{f:3,c:33516},33520,{f:2,c:33522},{f:2,c:33525},33528,33530,{f:5,c:33532},{f:2,c:33546},33549,
-33552,{f:2,c:33554},33558,{f:2,c:33560},{f:10,c:33565},{f:2,c:33577},33582,33584,33586,33591,33595,{f:3,c:33597},{f:2,c:33601},{f:2,c:33604},33608,{f:5,c:33610},33619,{f:5,c:33621},33629,33634,{f:7,c:33648},{f:2,c:33657},{f:7,c:33662},{f:2,c:33671},{f:3,c:33675},{f:3,c:33679},{f:2,c:33684},33687,{f:2,c:33689},33693,33695,33697,{f:4,c:33699},{f:4,c:33708},33717,33723,{f:2,c:33726},{f:3,c:33730},33734,{f:2,c:33736},33739,{f:2,c:33741},{f:4,c:33744},33749,33751,{f:3,c:33753},33758,{f:3,c:33762},{f:3,
-c:33766},{f:4,c:33771},{f:5,c:33779},{f:3,c:33786},{f:3,c:33790},33794,33797,{f:2,c:33800},33808,{f:6,c:33810},{f:3,c:33817},{f:6,c:33822},{f:3,c:33833},{f:4,c:33837},{f:3,c:33842},{f:2,c:33846},{f:3,c:33849},{f:8,c:33854},{f:2,c:33863},{f:7,c:33866},{f:4,c:33875},33880,{f:4,c:33885},33890,33893,{f:2,c:33895},33898,33902,33904,33906,33908,33913,{f:7,c:33915},{f:4,c:33923},33930,33933,{f:4,c:33935},{f:2,c:33941},33944,{f:2,c:33946},{f:4,c:33949},{f:13,c:33954},{f:2,c:33968},33971,{f:3,c:33973},33979,
-33982,{f:2,c:33986},{f:4,c:33989},33996,{f:2,c:33998},34002,{f:2,c:34004},{f:6,c:34007},34014,{f:2,c:34017},34020,{f:5,c:34023},34029,{f:11,c:34033},34046,{f:12,c:34048},{f:4,c:34061},34066,{f:2,c:34069},{f:2,c:34072},{f:3,c:34075},34080,34082,{f:2,c:34084},{f:4,c:34087},{f:9,c:34094},{f:3,c:34110},34114,{f:2,c:34116},34119,{f:3,c:34123},{f:3,c:34127},34132,34135,{f:4,c:34138},{f:3,c:34143},34147,{f:3,c:34149},{f:2,c:34155},{f:4,c:34158},34163,{f:2,c:34165},34168,{f:2,c:34172},{f:5,c:34175},34182,
-34185,34187,{f:2,c:34189},34192,{f:2,c:34194},{f:6,c:34197},{f:2,c:34205},{f:4,c:34208},34213,34215,{f:3,c:34219},{f:6,c:34225},34232,{f:6,c:34235},{f:7,c:34242},{f:3,c:34250},{f:2,c:34257},34260,{f:6,c:34262},{f:6,c:34270},{f:3,c:34278},{f:9,c:34283},34293,{f:2,c:34295},{f:3,c:34300},{f:4,c:34304},{f:3,c:34312},{f:5,c:34316},{f:4,c:34322},{f:3,c:34327},{f:3,c:34331},{f:3,c:34335},{f:4,c:34339},34344,{f:3,c:34346},{f:10,c:34350},34361,34363,{f:2,c:34365},{f:13,c:34368},{f:2,c:34386},{f:4,c:34390},
-34395,34397,{f:2,c:34400},{f:4,c:34403},{f:3,c:34408},34413,{f:2,c:34415},{f:7,c:34418},{f:7,c:34435},{f:5,c:34446},34452,{f:6,c:34454},{f:5,c:34462},{f:2,c:34469},34475,{f:2,c:34477},{f:2,c:34482},{f:3,c:34487},{f:5,c:34491},{f:3,c:34497},34501,34504,{f:2,c:34508},{f:2,c:34514},{f:3,c:34517},34522,{f:2,c:34524},{f:4,c:34528},{f:4,c:34533},{f:3,c:34538},34543,{f:3,c:34549},{f:3,c:34555},34559,34561,{f:2,c:34564},{f:2,c:34571},{f:4,c:34574},34580,34582,34585,34587,34589,{f:2,c:34591},34596,{f:3,c:34598},
-{f:4,c:34602},{f:2,c:34607},{f:2,c:34610},{f:2,c:34613},{f:3,c:34616},{f:2,c:34620},{f:7,c:34624},{f:2,c:34634},34637,{f:4,c:34639},34644,34646,34648,{f:6,c:34650},{f:2,c:34657},{f:7,c:34663},34671,{f:3,c:34673},34677,34679,{f:2,c:34681},{f:3,c:34687},{f:2,c:34694},{f:2,c:34697},34700,{f:5,c:34702},{f:3,c:34708},{f:6,c:34712},{f:2,c:34720},{f:5,c:34723},{f:2,c:34729},34734,{f:3,c:34736},34740,{f:4,c:34742},34748,{f:2,c:34750},{f:3,c:34753},34757,34759,34761,{f:2,c:34764},{f:2,c:34767},{f:7,c:34772},
-{f:4,c:34780},{f:2,c:34785},34788,{f:4,c:34790},34795,34797,{f:2,c:34800},{f:3,c:34803},{f:2,c:34807},34810,{f:2,c:34812},{f:4,c:34815},34820,{f:3,c:34823},{f:5,c:34827},34834,34836,{f:4,c:34839},{f:3,c:34844},34848,{f:13,c:34852},{f:3,c:34867},{f:2,c:34871},34874,{f:3,c:34877},{f:3,c:34881},{f:3,c:34887},34891,{f:5,c:34894},{f:2,c:34901},34904,34906,34908,{f:3,c:34910},{f:2,c:34918},34922,34925,34927,34929,{f:4,c:34931},34936,{f:3,c:34938},34944,34947,{f:2,c:34950},{f:2,c:34953},34956,{f:4,c:34958},
-{f:3,c:34963},{f:5,c:34967},{f:5,c:34973},34979,{f:6,c:34981},34988,{f:3,c:34990},{f:5,c:34994},{f:4,c:35E3},{f:4,c:35005},{f:2,c:35011},{f:2,c:35015},{f:3,c:35019},{f:2,c:35024},35027,{f:2,c:35030},{f:2,c:35034},35038,{f:2,c:35040},{f:2,c:35046},{f:7,c:35049},35058,{f:3,c:35061},{f:2,c:35066},{f:3,c:35071},{f:4,c:35075},{f:2,c:35080},{f:5,c:35083},35089,{f:5,c:35092},{f:5,c:35100},{f:3,c:35106},{f:4,c:35110},{f:4,c:35116},35121,35125,35127,{f:2,c:35129},{f:5,c:35132},{f:2,c:35138},{f:2,c:35141},
-{f:14,c:35144},{f:6,c:35159},{f:3,c:35169},35173,{f:3,c:35175},35179,{f:2,c:35181},{f:2,c:35184},{f:8,c:35187},{f:2,c:35196},[12177,35198],35200,35202,{f:2,c:35204},{f:4,c:35207},{f:3,c:35212},{f:3,c:35216},{f:2,c:35220},35223,{f:8,c:35225},{f:4,c:35234},{f:3,c:35239},35243,{f:2,c:35245},{f:2,c:35248},{f:4,c:35251},{f:2,c:35256},{f:2,c:35259},35262,35267,35277,{f:3,c:35283},{f:3,c:35287},35291,35293,{f:4,c:35295},35300,{f:4,c:35303},{f:3,c:35308},{f:3,c:35312},35317,35319,{f:7,c:35321},{f:3,c:35332},
-35337,35339,35341,35343,{f:2,c:35345},35348,35351,{f:2,c:35353},35356,35358,{f:3,c:35360},35364,{f:4,c:35366},{f:2,c:35371},{f:3,c:35374},{f:2,c:35378},35381,{f:3,c:35383},{f:3,c:35387},{f:2,c:35391},{f:4,c:35394},35399,{f:5,c:35401},35407,35409,35411,{f:2,c:35414},{f:2,c:35417},{f:2,c:35420},{f:2,c:35423},{f:2,c:35428},{f:2,c:35431},35434,35439,35444,{f:3,c:35446},{f:2,c:35450},{f:2,c:35453},{f:4,c:35456},35464,{f:2,c:35467},{f:3,c:35470},35476,{f:2,c:35478},35481,{f:3,c:35483},35487,35490,35495,
-{f:3,c:35497},{f:3,c:35501},35505,{f:3,c:35507},{f:2,c:35511},{f:2,c:35514},{f:2,c:35517},{f:2,c:35520},35523,{f:2,c:35525},35528,35530,35532,35534,35536,{f:3,c:35539},{f:3,c:35544},35549,{f:3,c:35551},35555,35557,{f:3,c:35560},35564,{f:2,c:35567},35570,{f:2,c:35572},35577,35579,35581,35583,35587,35590,{f:2,c:35592},{f:3,c:35595},35599,{f:3,c:35601},35605,35608,35612,{f:3,c:35614},{f:4,c:35618},35623,{f:2,c:35625},{f:5,c:35630},{f:5,c:35636},{f:4,c:35642},{f:10,c:35647},{f:4,c:35658},{f:6,c:35664},
-35671,35675,{f:9,c:35677},{f:4,c:35687},{f:2,c:35693},{f:3,c:35697},{f:2,c:35701},{f:5,c:35704},{f:2,c:35710},{f:9,c:35713},{f:3,c:35723},{f:3,c:35727},35732,{f:5,c:35735},35741,35743,35756,35761,35771,35783,35792,35818,35849,35870,{f:9,c:35896},{f:4,c:35906},{f:2,c:35914},{f:3,c:35917},{f:4,c:35921},{f:4,c:35926},{f:6,c:35931},{f:7,c:35939},{f:7,c:35948},{f:4,c:35956},{f:7,c:35963},{f:2,c:35971},{f:3,c:35974},35979,{f:7,c:35981},{f:3,c:35989},{f:4,c:35993},35999,{f:4,c:36003},{f:2,c:36013},36017,
-36021,36025,36030,36038,36041,{f:6,c:36043},36052,{f:4,c:36054},36059,36061,36063,36069,{f:2,c:36072},{f:6,c:36078},{f:5,c:36085},{f:5,c:36095},{f:2,c:36102},36105,36108,36110,{f:5,c:36113},{f:4,c:36119},36128,{f:2,c:36177},36183,36191,36197,{f:3,c:36200},36204,{f:2,c:36206},{f:2,c:36209},{f:9,c:36216},{f:2,c:36226},{f:4,c:36230},{f:5,c:36236},{f:2,c:36242},{f:3,c:36246},{f:5,c:36250},{f:3,c:36256},{f:4,c:36260},{f:8,c:36265},{f:2,c:36278},36281,36283,36285,{f:3,c:36288},36293,{f:4,c:36295},36301,
-36304,{f:4,c:36306},{f:2,c:36312},36316,{f:3,c:36320},{f:3,c:36325},36329,{f:2,c:36333},{f:3,c:36336},36340,36342,36348,{f:7,c:36350},{f:3,c:36358},36363,{f:2,c:36365},{f:3,c:36369},{f:8,c:36373},{f:2,c:36384},{f:5,c:36388},36395,36397,36400,{f:2,c:36402},{f:3,c:36406},{f:2,c:36411},{f:2,c:36414},36419,{f:2,c:36421},{f:4,c:36429},{f:2,c:36435},{f:3,c:36438},{f:9,c:36442},{f:2,c:36452},{f:2,c:36455},{f:2,c:36458},36462,36465,36467,36469,{f:3,c:36471},36475,{f:2,c:36477},36480,{f:3,c:36482},36486,36488,
-36492,36494,{f:5,c:36501},36507,36509,{f:2,c:36511},{f:3,c:36514},{f:3,c:36519},{f:2,c:36525},{f:2,c:36528},{f:7,c:36531},{f:5,c:36539},{f:9,c:36545},{f:3,c:36559},36563,{f:6,c:36565},{f:3,c:36572},{f:4,c:36576},{f:6,c:36581},{f:6,c:36588},{f:5,c:36595},36605,{f:4,c:36607},36612,36614,36616,{f:7,c:36619},36627,{f:5,c:36630},{f:5,c:36640},{f:2,c:36647},{f:4,c:36651},{f:3,c:36656},{f:4,c:36660},{f:2,c:36665},{f:2,c:36668},{f:2,c:36672},36675,{f:2,c:36679},{f:3,c:36682},{f:5,c:36687},{f:10,c:36693},
-36704,36707,36709,36714,36736,36748,36754,36765,{f:3,c:36768},{f:2,c:36772},36775,36778,36780,{f:2,c:36787},[12193,36789],{f:2,c:36791},{f:3,c:36794},{f:2,c:36799},36803,36806,{f:5,c:36809},36815,36818,{f:2,c:36822},36826,{f:2,c:36832},36835,36839,36844,36847,{f:2,c:36849},{f:2,c:36853},{f:3,c:36858},{f:2,c:36862},{f:2,c:36871},36876,36878,36883,36888,36892,{f:2,c:36900},{f:6,c:36903},{f:2,c:36912},{f:2,c:36915},36919,{f:2,c:36921},36925,{f:2,c:36927},36931,{f:2,c:36933},{f:3,c:36936},36940,36950,
-{f:2,c:36953},36957,36959,36961,36964,{f:2,c:36966},{f:3,c:36970},{f:3,c:36975},36979,36982,36985,36987,36990,{f:2,c:36997},37001,{f:3,c:37004},37010,37012,37014,37016,37018,37020,{f:3,c:37022},{f:2,c:37028},{f:3,c:37031},37035,37037,37042,37047,{f:2,c:37052},{f:2,c:37055},{f:2,c:37058},37062,{f:2,c:37064},{f:3,c:37067},37074,{f:3,c:37076},{f:3,c:37080},37086,37088,{f:3,c:37091},{f:2,c:37097},37100,37102,{f:4,c:37104},{f:2,c:37110},{f:4,c:37113},{f:3,c:37119},37123,37125,{f:2,c:37127},{f:8,c:37130},
-37139,37141,{f:2,c:37143},{f:4,c:37146},{f:3,c:37151},{f:3,c:37156},{f:5,c:37160},37166,37171,37173,{f:2,c:37175},{f:8,c:37179},{f:2,c:37188},37191,37201,{f:4,c:37203},{f:2,c:37208},{f:2,c:37211},{f:2,c:37215},{f:3,c:37222},37227,37229,37235,{f:3,c:37242},{f:5,c:37248},37254,37256,37258,{f:2,c:37262},{f:3,c:37267},{f:3,c:37271},{f:5,c:37277},{f:6,c:37284},{f:4,c:37296},{f:4,c:37302},{f:5,c:37307},37314,37316,[12196,37318],37320,37328,37334,{f:2,c:37338},{f:5,c:37342},{f:2,c:37349},37352,{f:11,c:37354},
-37366,37368,{f:5,c:37371},{f:2,c:37378},{f:3,c:37381},{f:3,c:37386},37391,{f:2,c:37394},{f:8,c:37398},{f:4,c:37407},37412,{f:6,c:37416},37423,{f:2,c:37425},{f:2,c:37429},{f:2,c:37435},{f:4,c:37441},{f:2,c:37446},{f:3,c:37450},{f:3,c:37454},{f:3,c:37458},37462,{f:2,c:37464},{f:2,c:37468},{f:3,c:37471},{f:3,c:37475},{f:5,c:37479},{f:6,c:37486},{f:3,c:37493},37497,{f:3,c:37500},{f:2,c:37505},37508,{f:8,c:37510},{f:2,c:37519},37522,{f:2,c:37524},37527,37529,37531,{f:3,c:37533},{f:2,c:37537},37540,37543,
-37549,{f:2,c:37551},{f:5,c:37554},37560,37562,{f:4,c:37565},37570,37572,37574,{f:3,c:37577},{f:2,c:37581},{f:2,c:37584},{f:10,c:37587},37598,{f:3,c:37600},37607,37609,{f:2,c:37611},{f:4,c:37618},37623,{f:3,c:37625},{f:4,c:37629},{f:4,c:37634},{f:7,c:37641},37649,{f:2,c:37651},{f:2,c:37654},{f:3,c:37660},37665,{f:3,c:37667},37671,{f:2,c:37673},{f:2,c:37676},{f:2,c:37680},{f:2,c:37684},37687,{f:5,c:37689},37695,37698,{f:2,c:37700},{f:3,c:37704},37708,{f:6,c:37710},{f:3,c:37717},{f:2,c:37721},{f:8,c:37724},
-{f:3,c:37734},37739,{f:3,c:37741},{f:4,c:37745},{f:3,c:37751},{f:3,c:37755},{f:3,c:37759},37763,{f:2,c:37765},{f:2,c:37768},{f:4,c:37771},{f:6,c:37776},37783,{f:9,c:37785},{f:2,c:37796},37800,37803,37805,37807,{f:2,c:37809},37812,{f:2,c:37814},{f:6,c:37817},{f:3,c:37824},{f:3,c:37828},37833,37835,{f:3,c:37838},{f:4,c:37842},{f:3,c:37849},37856,37859,{f:3,c:37861},{f:12,c:37865},37878,37880,{f:9,c:37882},{f:7,c:37892},{f:4,c:37900},37905,{f:3,c:37909},{f:3,c:37914},{f:2,c:37918},{f:5,c:37921},{f:5,
-c:37929},{f:3,c:37935},37940,{f:2,c:37942},37945,{f:3,c:37947},{f:4,c:37952},{f:5,c:37957},37963,{f:5,c:37965},37971,{f:11,c:37973},{f:2,c:37985},37988,{f:5,c:37990},37996,{f:2,c:37998},38001,{f:4,c:38003},38008,{f:2,c:38010},{f:5,c:38016},38033,38038,38040,38087,38095,{f:2,c:38099},38106,38118,38139,38172,38176,38183,38195,38205,38211,38216,38219,38229,38234,38240,38254,{f:2,c:38260},{f:7,c:38264},38273,{f:2,c:38276},{f:2,c:38279},38282,38285,38288,38290,{f:3,c:38293},{f:8,c:38297},38306,{f:2,c:38310},
-38314,{f:4,c:38318},{f:3,c:38323},{f:2,c:38327},38330,{f:3,c:38336},{f:2,c:38340},38343,38345,{f:3,c:38349},{f:3,c:38353},{f:5,c:38359},38365,{f:2,c:38367},{f:2,c:38371},{f:2,c:38374},38380,38399,38407,38419,38424,38427,38430,38432,{f:7,c:38435},{f:3,c:38443},{f:2,c:38447},{f:4,c:38455},38462,38465,38467,38474,{f:2,c:38478},{f:3,c:38481},{f:2,c:38486},{f:2,c:38489},38492,38494,38496,{f:2,c:38501},38507,{f:3,c:38509},38513,{f:4,c:38521},{f:7,c:38526},38535,38537,38540,{f:3,c:38545},38550,38554,{f:10,
-c:38557},38569,{f:5,c:38571},38578,38581,38583,38586,38591,{f:2,c:38594},38600,{f:2,c:38602},{f:2,c:38608},{f:2,c:38611},{f:2,c:38615},38618,{f:3,c:38621},38625,{f:4,c:38628},{f:4,c:38635},{f:2,c:38640},{f:2,c:38644},38648,38650,{f:2,c:38652},38655,{f:2,c:38658},38661,{f:3,c:38666},{f:3,c:38672},{f:2,c:38676},{f:5,c:38679},38685,{f:8,c:38687},{f:2,c:38696},{f:2,c:38699},{f:2,c:38702},38705,{f:5,c:38707},{f:3,c:38714},{f:3,c:38719},38723,{f:3,c:38725},{f:8,c:38729},[12205,38737],{f:2,c:38740},{f:2,
-c:38743},{f:2,c:38748},38751,{f:2,c:38755},{f:2,c:38758},{f:9,c:38762},38773,{f:5,c:38775},{f:8,c:38781},{f:5,c:38790},38796,38798,38800,38803,{f:3,c:38805},{f:7,c:38809},{f:2,c:38817},{f:2,c:38820},{f:4,c:38823},38828,38830,{f:2,c:38832},38835,{f:8,c:38837},{f:5,c:38846},{f:2,c:38852},{f:2,c:38855},38858,{f:6,c:38861},{f:5,c:38868},{f:2,c:38874},38877,{f:7,c:38879},38888,{f:5,c:38894},38900,{f:8,c:38903},38912,38916,38921,38923,38925,{f:3,c:38932},{f:3,c:38937},{f:4,c:38941},{f:2,c:38946},38949,
-{f:6,c:38951},{f:2,c:38958},{f:6,c:38961},{f:2,c:38969},38972,{f:8,c:38974},{f:5,c:38983},{f:4,c:38991},{f:3,c:38997},39002,{f:2,c:39004},{f:3,c:39007},{f:2,c:39011},39014,{f:3,c:39016},{f:2,c:39021},39026,39051,39054,39058,39061,39065,39075,{f:5,c:39081},39088,39090,{f:2,c:39092},{f:5,c:39095},{f:7,c:39101},39109,39111,{f:5,c:39113},{f:2,c:39119},39124,{f:2,c:39126},{f:2,c:39132},39137,{f:4,c:39139},39148,39150,{f:2,c:39152},39155,{f:7,c:39157},{f:4,c:39167},39172,{f:3,c:39174},39179,{f:2,c:39182},
-{f:4,c:39188},{f:2,c:39193},{f:2,c:39196},{f:2,c:39199},{f:6,c:39202},{f:5,c:39209},{f:4,c:39215},{f:3,c:39220},{f:4,c:39224},39229,{f:3,c:39232},39236,{f:2,c:39238},{f:4,c:39245},39251,39254,{f:4,c:39256},39261,{f:3,c:39263},39268,39270,39283,{f:2,c:39288},39291,39294,{f:2,c:39298},39305,39308,39310,{f:11,c:39322},{f:2,c:39334},{f:3,c:39337},{f:2,c:39343},39346,{f:12,c:39349},{f:14,c:39362},39379,{f:2,c:39382},39386,39388,39390,39392,{f:10,c:39395},{f:3,c:39406},{f:13,c:39410},39424,{f:3,c:39426},
-{f:7,c:39430},{f:6,c:39440},{f:2,c:39447},{f:17,c:39450},39468,39471,{f:5,c:39473},{f:5,c:39481},39487,{f:4,c:39494},{f:2,c:39499},39502,{f:5,c:39504},39510,{f:2,c:39512},{f:3,c:39516},{f:2,c:39520},39523,{f:4,c:39526},39531,39538,39555,39561,{f:2,c:39565},{f:2,c:39572},39577,39590,{f:6,c:39593},{f:4,c:39602},39609,39611,{f:3,c:39613},{f:2,c:39619},{f:5,c:39622},{f:2,c:39629},39632,39639,{f:6,c:39641},39648,{f:4,c:39650},{f:4,c:39655},39660,{f:9,c:39664},39674,{f:7,c:39676},{f:2,c:39684},39687,{f:4,
-c:39689},39694,{f:3,c:39696},{f:6,c:39700},{f:4,c:39707},{f:2,c:39712},39716,39718,39720,{f:4,c:39722},39728,{f:8,c:39731},{f:4,c:39741},39750,{f:3,c:39754},39760,{f:2,c:39762},{f:3,c:39765},39769,{f:20,c:39771},{f:4,c:39792},{f:2,c:39797},{f:9,c:39800},39810,{f:10,c:39812},39823,{f:7,c:39827},{f:2,c:39835},{f:11,c:39839},39852,{f:17,c:39855},{f:5,c:39874},39880,{f:9,c:39883},39893,{f:4,c:39895},39900,{f:3,c:39902},39907,{f:2,c:39909},39913,{f:4,c:39916},{f:3,c:39921},{f:8,c:39925},39934,{f:8,c:39936},
-{f:3,c:39946},{f:2,c:39950},39953,{f:12,c:39956},{f:2,c:39969},39972,{f:2,c:39974},{f:3,c:39978},{f:3,c:39982},39988,39990,39992,39994,{f:2,c:39996},{f:6,c:39999},{f:2,c:40006},{f:8,c:40010},40019,40021,{f:4,c:40025},40030,{f:7,c:40032},{f:5,c:40040},{f:10,c:40046},40057,40059,{f:2,c:40061},40064,{f:2,c:40067},{f:2,c:40073},40076,40079,40083,{f:4,c:40086},40093,40106,40108,40111,40121,{f:5,c:40126},{f:2,c:40136},{f:2,c:40145},{f:2,c:40154},{f:2,c:40160},{f:2,c:40163},{f:3,c:40166},{f:2,c:40170},{f:6,
-c:40173},40181,{f:15,c:40183},40200,{f:11,c:40202},{f:5,c:40214},40220,40222,{f:3,c:40224},{f:2,c:40228},40231,{f:6,c:40233},{f:10,c:40241},{f:3,c:40252},{f:2,c:40256},{f:14,c:40259},{f:8,c:40276},{f:2,c:40286},{f:8,c:40290},40299,{f:2,c:40301},{f:2,c:40304},{f:20,c:40307},40328,{f:9,c:40330},{f:4,c:40340},40345,{f:10,c:40347},{f:3,c:40358},{f:5,c:40362},{f:4,c:40368},{f:6,c:40373},{f:3,c:40381},40385,40387,{f:14,c:40389},{f:3,c:40404},40408,{f:10,c:40411},{f:8,c:40423},{f:2,c:40432},{f:4,c:40436},
-{f:17,c:40443},{f:8,c:40461},{f:4,c:40470},40476,40484,40487,40494,40496,40500,{f:2,c:40507},40512,40525,40528,{f:3,c:40530},40534,40537,40541,{f:4,c:40543},40549,{f:2,c:40558},40562,40564,{f:3,c:40566},40571,{f:2,c:40576},{f:4,c:40579},{f:2,c:40585},{f:6,c:40588},{f:3,c:40596},{f:5,c:40600},40606,{f:5,c:40608},{f:2,c:40615},{f:5,c:40618},{f:4,c:40624},{f:2,c:40630},{f:2,c:40633},40636,{f:4,c:40639},[12232,40643],{f:4,c:40645},{f:2,c:40650},40656,{f:2,c:40658},{f:3,c:40661},{f:2,c:40665},40673,{f:2,
-c:40675},40678,{f:4,c:40683},{f:2,c:40688},40691,{f:2,c:40693},40696,40698,{f:9,c:40704},40714,40716,40719,{f:2,c:40721},40724,40726,40728,{f:6,c:40730},40737,{f:9,c:40739},{f:2,c:40749},{f:7,c:40752},40760,40762,40764,{f:5,c:40767},{f:5,c:40773},{f:3,c:40780},40787,{f:4,c:40789},{f:2,c:40794},{f:2,c:40797},40802,{f:2,c:40804},{f:3,c:40807},40811,{f:5,c:40813},{f:4,c:40819},{f:7,c:40824},{f:2,c:40833},{f:2,c:40846},{f:3,c:40849},{f:3,c:40854},{f:2,c:40861},{f:5,c:40865},63788,{f:3,c:64013},64017,
-{f:2,c:64019},64024,{f:3,c:64031},{f:2,c:64035},{f:3,c:64039},11905,[59414,131207],[59415,131209],[59416,131276],11908,13427,13383,11912,11915,59422,13726,13850,13838,11916,11927,14702,14616,59430,14799,14815,14963,14800,{f:2,c:59435},15182,15470,15584,11943,[59441,136663],59442,11946,16470,16735,11950,17207,11955,{f:2,c:11958},[59451,141711],17329,17324,11963,17373,17622,18017,17996,[59459,132361],18211,18217,18300,18317,11978,18759,18810,18813,{f:2,c:18818},{f:2,c:18821},18847,18843,18871,18870,
-[59476,133533],[59477,147966],19619,{f:3,c:19615},19575,19618,{f:7,c:19731},19886,59492,{s:226},8364,165,0,0,12351,{s:17},12436,{s:14},12535,12537,12536,12538,0,{f:3,c:12339},{f:3,c:12344},{f:3,c:12586},{f:24,c:12704},11904,{f:2,c:11906},{f:3,c:11909},{f:2,c:11913},{f:10,c:11917},{f:2,c:11928},{f:12,c:11931},{f:2,c:11944},{f:3,c:11947},{f:4,c:11951},{f:2,c:11956},{f:3,c:11960},{f:14,c:11964},{f:41,c:11979},{f:71,c:13312},{f:43,c:13384},{f:298,c:13428},{f:111,c:13727},{f:11,c:13839},{f:765,c:13851},
-{f:85,c:14617},{f:96,c:14703},{f:14,c:14801},{f:147,c:14816},{f:218,c:14964},{f:287,c:15183},{f:113,c:15471},{f:885,c:15585},{f:264,c:16471},{f:471,c:16736},{f:116,c:17208},{f:4,c:17325},{f:43,c:17330},{f:248,c:17374},{f:373,c:17623},{f:20,c:17997},{f:193,c:18018},{f:5,c:18212},{f:82,c:18218},{f:16,c:18301},{f:441,c:18318},{f:50,c:18760},{f:2,c:18811},{f:4,c:18814},18820,{f:20,c:18823},{f:3,c:18844},{f:22,c:18848},{f:703,c:18872},{f:39,c:19576},{f:111,c:19620},{f:148,c:19738},{f:7,c:19887}]},ha=function(){function d(){w("should not call ColorSpace constructor")}
-d.prototype={getRgb:function(a,b){w("Should not call ColorSpace.getRgb")},getRgbItem:function(a,b,c,e){w("Should not call ColorSpace.getRgbItem")},getRgbBuffer:function(a,b,c,e,f,g){w("Should not call ColorSpace.getRgbBuffer")},getOutputLength:function(a){w("Should not call ColorSpace.getOutputLength")},isPassthrough:function(a){return!1},createRgbBuffer:function(a,b,c,e){if(this.isPassthrough(e))return a.subarray(b);var f=new Uint8Array(3*c),g=1<<e;if(1===this.numComps&&c>g&&"DeviceGray"!==this.name&&
-"DeviceRGB"!==this.name){for(var h=8>=e?new Uint8Array(g):new Uint16Array(g),d=0;d<g;d++)h[d]=d;var p=new Uint8Array(3*g);this.getRgbBuffer(h,0,g,p,0,e);for(d=e=0;d<c;++d)g=3*a[b++],f[e++]=p[g],f[e++]=p[g+1],f[e++]=p[g+2];return f}this.getRgbBuffer(a,b,c,f,0,e);return f},usesZeroToOneRange:!0};d.parse=function(a,b,c){a=d.parseToIR(a,b,c);return a instanceof Hc?a:d.fromIR(a)};d.fromIR=function(a){var b=U(a)?a[0]:a;switch(b){case "DeviceGrayCS":return new Za;case "DeviceRgbCS":return new Qa;case "DeviceCmykCS":return new eb;
-case "PatternCS":return(a=a[1])&&(a=d.fromIR(a)),new zd(a);case "IndexedCS":var b=a[2],c=a[3];return new Ad(d.fromIR(a[1]),b,c);case "AlternateCS":return b=a[3],new Hc(a[1],d.fromIR(a[2]),ab.fromIR(b));case "LabCS":return new Bd(a[1].WhitePoint,a[1].BlackPoint,a[1].Range);default:w("Unkown name "+b)}return null};d.parseToIR=function(a,b,c){if(V(a)){var e=c.get("ColorSpace");W(e)&&(e=e.get(a.name))&&(a=e)}a=b.fetchIfRef(a);if(V(a))switch(this.mode=e=a.name,e){case "DeviceGray":case "G":return"DeviceGrayCS";
-case "DeviceRGB":case "RGB":return"DeviceRgbCS";case "DeviceCMYK":case "CMYK":return"DeviceCmykCS";case "Pattern":return["PatternCS",null];default:w("unrecognized colorspace "+e)}else if(U(a))switch(this.mode=e=a[0].name,e){case "DeviceGray":case "G":return"DeviceGrayCS";case "DeviceRGB":case "RGB":return"DeviceRgbCS";case "DeviceCMYK":case "CMYK":return"DeviceCmykCS";case "CalGray":return"DeviceGrayCS";case "CalRGB":return"DeviceRgbCS";case "ICCBased":e=b.fetchIfRef(a[1]).dict.get("N");if(1==e)return"DeviceGrayCS";
-if(3==e)return"DeviceRgbCS";if(4==e)return"DeviceCmykCS";break;case "Pattern":return(a=a[1])&&(a=d.parseToIR(a,b,c)),["PatternCS",a];case "Indexed":case "I":return c=d.parseToIR(a[1],b,c),e=a[2]+1,b=b.fetchIfRef(a[3]),ra(b)&&(b=b.getBytes()),["IndexedCS",c,e,b];case "Separation":case "DeviceN":var f=a[1],e=1;V(f)?e=1:U(f)&&(e=f.length);c=d.parseToIR(a[2],b,c);b=ab.getIR(b,b.fetchIfRef(a[3]));return["AlternateCS",e,c,b];case "Lab":return["LabCS",a[1].getAll()];default:w('unimplemented color space object "'+
-e+'"')}else w('unrecognized color space object: "'+a+'"');return null};d.isDefaultDecode=function(a,b){if(!a)return!0;if(2*b!==a.length)return Y("The decode map is not the correct length"),!0;for(var c=0,e=a.length;c<e;c+=2)if(0!==a[c]||1!=a[c+1])return!1;return!0};return d}(),Hc=function(){function d(a,b,c){this.name="Alternate";this.numComps=a;this.defaultColor=new Float32Array(a);for(var e=0;e<a;++e)this.defaultColor[e]=1;this.base=b;this.tintFn=c}d.prototype={getRgb:function(a,b){var c=new Uint8Array(3);
-this.getRgbItem(a,b,c,0);return c},getRgbItem:function(a,b,c,e){a="subarray"in a?a.subarray(b,b+this.numComps):Array.prototype.slice.call(a,b,b+this.numComps);a=this.tintFn(a);this.base.getRgbItem(a,0,c,e)},getRgbBuffer:function(a,b,c,e,f,g){var h=this.tintFn,d=this.base;g=1/((1<<g)-1);for(var p=d.numComps,k=d.usesZeroToOneRange,m=d.isPassthrough(8)||!k,r=m?f:0,n=m?e:new Uint8Array(p*c),q=this.numComps,t=new Float32Array(q),s=0;s<c;s++){for(var u=0;u<q;u++)t[u]=a[b++]*g;var v=h(t);if(k)for(u=0;u<
-p;u++)n[r++]=255*v[u];else d.getRgbItem(v,0,n,r),r+=p}m||d.getRgbBuffer(n,0,c,e,f,8)},getOutputLength:function(a){return this.base.getOutputLength(a*this.base.numComps/this.numComps)},isPassthrough:ha.prototype.isPassthrough,createRgbBuffer:ha.prototype.createRgbBuffer,isDefaultDecode:function(a){return ha.isDefaultDecode(a,this.numComps)},usesZeroToOneRange:!0};return d}(),zd=function(){function d(a){this.name="Pattern";this.base=a}d.prototype={};return d}(),Ad=function(){function d(a,b,c){this.name=
-"Indexed";this.numComps=1;this.defaultColor=new Uint8Array([0]);this.base=a;this.highVal=b;a=a.numComps*b;var e;if(ra(c))e=new Uint8Array(a),c=c.getBytes(a),e.set(c);else if(za(c)){e=new Uint8Array(a);for(b=0;b<a;++b)e[b]=c.charCodeAt(b)}else c instanceof Uint8Array?e=c:w("Unrecognized lookup table: "+c);this.lookup=e}d.prototype={getRgb:function(a,b){return this.base.getRgb(this.lookup,a[b]*this.base.numComps)},getRgbItem:function(a,b,c,e){this.base.getRgbItem(this.lookup,a[b]*this.base.numComps,
-c,e)},getRgbBuffer:function(a,b,c,e,f){for(var g=this.base,h=g.numComps,d=g.getOutputLength(h),p=this.lookup,k=0;k<c;++k){var m=a[b++]*h;g.getRgbBuffer(p,m,1,e,f,8);f+=d}},getOutputLength:function(a){return this.base.getOutputLength(a*this.base.numComps)},isPassthrough:ha.prototype.isPassthrough,createRgbBuffer:ha.prototype.createRgbBuffer,isDefaultDecode:function(a){return!0},usesZeroToOneRange:!0};return d}(),Za=function(){function d(){this.name="DeviceGray";this.numComps=1;this.defaultColor=new Float32Array([0])}
-d.prototype={getRgb:function(a,b){var c=new Uint8Array(3);this.getRgbItem(a,b,c,0);return c},getRgbItem:function(a,b,c,e){a=255*a[b]|0;c[e]=c[e+1]=c[e+2]=0>a?0:255<a?255:a},getRgbBuffer:function(a,b,c,e,f,g){g=255/((1<<g)-1);for(var h=0;h<c;++h){var d=g*a[b++]|0;e[f++]=d;e[f++]=d;e[f++]=d}},getOutputLength:function(a){return 3*a},isPassthrough:ha.prototype.isPassthrough,createRgbBuffer:ha.prototype.createRgbBuffer,isDefaultDecode:function(a){return ha.isDefaultDecode(a,this.numComps)},usesZeroToOneRange:!0};
-return d}(),Qa=function(){function d(){this.name="DeviceRGB";this.numComps=3;this.defaultColor=new Float32Array([0,0,0])}d.prototype={getRgb:function(a,b){var c=new Uint8Array(3);this.getRgbItem(a,b,c,0);return c},getRgbItem:function(a,b,c,e){var f=255*a[b]|0,g=255*a[b+1]|0;a=255*a[b+2]|0;c[e]=0>f?0:255<f?255:f;c[e+1]=0>g?0:255<g?255:g;c[e+2]=0>a?0:255<a?255:a},getRgbBuffer:function(a,b,c,e,f,g){c*=3;if(8==g)e.set(a.subarray(b,b+c),f);else{g=255/((1<<g)-1);for(var h=0;h<c;++h)e[f++]=g*a[b++]|0}},
-getOutputLength:function(a){return a},isPassthrough:function(a){return 8==a},createRgbBuffer:ha.prototype.createRgbBuffer,isDefaultDecode:function(a){return ha.isDefaultDecode(a,this.numComps)},usesZeroToOneRange:!0};return d}(),eb=function(){function d(a,c,e,f,g){var h=a[c+0]*e,d=a[c+1]*e,p=a[c+2]*e;e*=a[c+3];a=h*(-4.387332384609988*h+54.48615194189176*d+18.82290502165302*p+212.25662451639585*e+-285.2331026137004)+d*(1.7149763477362134*d-5.6096736904047315*p+-17.873870861415444*e-5.497006427196366)+
-p*(-2.5217340131683033*p-21.248923337353073*e+17.5119270841813)+e*(-21.86122147463605*e-189.48180835922747)+255;c=h*(8.841041422036149*h+60.118027045597366*d+6.871425592049007*p+31.159100130055922*e+-79.2970844816548)+d*(-15.310361306967817*d+17.575251261109482*p+131.35250912493976*e-190.9453302588951)+p*(4.444339102852739*p+9.8632861493405*e-24.86741582555878)+e*(-20.737325471181034*e-187.80453709719578)+255;h=h*(0.8842522430003296*h+8.078677503112928*d+30.89978309703729*p-0.23883238689178934*e+
--14.183576799673286)+d*(10.49593273432072*d+63.02378494754052*p+50.606957656360734*e-112.23884253719248)+p*(0.03296041114873217*p+115.60384449646641*e+-193.58209356861505)+e*(-22.33816807309886*e-180.12613974708367)+255;f[g]=255<a?255:0>a?0:a;f[g+1]=255<c?255:0>c?0:c;f[g+2]=255<h?255:0>h?0:h}function a(){this.name="DeviceCMYK";this.numComps=4;this.defaultColor=new Float32Array([0,0,0,1])}a.prototype={getRgb:function(a,c){var e=new Uint8Array(3);d(a,c,1,e,0);return e},getRgbItem:function(a,c,e,f){d(a,
-c,1,e,f)},getRgbBuffer:function(a,c,e,f,g,h){h=1/((1<<h)-1);for(var l=0;l<e;l++)d(a,c,h,f,g),c+=4,g+=3},getOutputLength:function(a){return 3*(a>>2)},isPassthrough:ha.prototype.isPassthrough,createRgbBuffer:ha.prototype.createRgbBuffer,isDefaultDecode:function(a){return ha.isDefaultDecode(a,this.numComps)},usesZeroToOneRange:!0};return a}(),Bd=function(){function d(a,b,f){this.name="Lab";this.numComps=3;this.defaultColor=new Float32Array([0,0,0]);a||w("WhitePoint missing - required for color space Lab");
-b=b||[0,0,0];f=f||[-100,100,-100,100];this.XW=a[0];this.YW=a[1];this.ZW=a[2];this.amin=f[0];this.amax=f[1];this.bmin=f[2];this.bmax=f[3];this.XB=b[0];this.YB=b[1];this.ZB=b[2];(0>this.XW||0>this.ZW||1!==this.YW)&&w("Invalid WhitePoint components, no fallback available");if(0>this.XB||0>this.YB||0>this.ZB)da("Invalid BlackPoint, falling back to default"),this.XB=this.YB=this.ZB=0;if(this.amin>this.amax||this.bmin>this.bmax)da("Invalid Range, falling back to defaults"),this.amin=-100,this.amax=100,
-this.bmin=-100,this.bmax=100}function a(a){return a>=6/29?a*a*a:108/841*(a-4/29)}function b(c,b,f,g,h,d){var p=b[f],k=b[f+1];b=b[f+2];!1!==g&&(p=0+100*p/g,k=c.amin+k*(c.amax-c.amin)/g,b=c.bmin+b*(c.bmax-c.bmin)/g);k=k>c.amax?c.amax:k<c.amin?c.amin:k;b=b>c.bmax?c.bmax:b<c.bmin?c.bmin:b;g=(p+16)/116;p=g-b/200;k=c.XW*a(g+k/500);g=c.YW*a(g);p=c.ZW*a(p);1>c.ZW?(c=3.1339*k+-1.617*g+-0.4906*p,b=-0.9785*k+1.916*g+0.0333*p,k=0.072*k+-0.229*g+1.4057*p):(c=3.2406*k+-1.5372*g+-0.4986*p,b=-0.9689*k+1.8758*g+0.0415*
-p,k=0.0557*k+-0.204*g+1.057*p);h[d]=255*Math.sqrt(0>c?0:1<c?1:c);h[d+1]=255*Math.sqrt(0>b?0:1<b?1:b);h[d+2]=255*Math.sqrt(0>k?0:1<k?1:k)}d.prototype={getRgb:function(a,e){var f=new Uint8Array(3);b(this,a,e,!1,f,0);return f},getRgbItem:function(a,e,f,g){b(this,a,e,!1,f,g)},getRgbBuffer:function(a,e,f,g,h,d){d=(1<<d)-1;for(var p=0;p<f;p++)b(this,a,e,d,g,h),e+=3,h+=3},getOutputLength:function(a){return a},isPassthrough:ha.prototype.isPassthrough,isDefaultDecode:function(a){return!0},usesZeroToOneRange:!1};
-return d}(),Ra=function(){function d(a){this.b=this.a=0;var b=new Uint8Array(256),c,e=0,f,g=a.length;for(c=0;256>c;++c)b[c]=c;for(c=0;256>c;++c)f=b[c],e=e+f+a[c%g]&255,b[c]=b[e],b[e]=f;this.s=b}d.prototype={encryptBlock:function(a){var b,c=a.length,e,f,g=this.a,h=this.b,d=this.s,p=new Uint8Array(c);for(b=0;b<c;++b)g=g+1&255,e=d[g],h=h+e&255,f=d[h],d[g]=f,d[h]=e,p[b]=a[b]^d[e+f&255];this.a=g;this.b=h;return p}};d.prototype.decryptBlock=d.prototype.encryptBlock;return d}(),Ya=function(){var d=new Uint8Array([7,
-12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21]),a=new Int32Array([-680876936,-389564586,606105819,-1044525330,-176418897,1200080426,-1473231341,-45705983,1770035416,-1958414417,-42063,-1990404162,1804603682,-40341101,-1502002290,1236535329,-165796510,-1069501632,643717713,-373897302,-701558691,38016083,-660478335,-405537848,568446438,-1019803690,-187363961,1163531501,-1444681467,
--51403784,1735328473,-1926607734,-378558,-2022574463,1839030562,-35309556,-1530992060,1272893353,-155497632,-1094730640,681279174,-358537222,-722521979,76029189,-640364487,-421815835,530742520,-995338651,-198630844,1126891415,-1416354905,-57434055,1700485571,-1894986606,-1051523,-2054922799,1873313359,-30611744,-1560198380,1309151649,-145523070,-1120210379,718787259,-343485551]);return function(b,c,e){var f=1732584193,g=-271733879,h=-1732584194,l=271733878,p=e+72&-64,k=new Uint8Array(p),m;for(m=0;m<
-e;++m)k[m]=b[c++];k[m++]=128;for(b=p-8;m<b;)k[m++]=0;k[m++]=e<<3&255;k[m++]=e>>5&255;k[m++]=e>>13&255;k[m++]=e>>21&255;k[m++]=e>>>29&255;k[m++]=0;k[m++]=0;k[m++]=0;b=new Int32Array(16);for(m=0;m<p;){for(e=0;16>e;++e,m+=4)b[e]=k[m]|k[m+1]<<8|k[m+2]<<16|k[m+3]<<24;var r=f;c=g;var n=h,q=l,t,s;for(e=0;64>e;++e){16>e?(t=c&n|~c&q,s=e):32>e?(t=q&c|~q&n,s=5*e+1&15):48>e?(t=c^n^q,s=3*e+5&15):(t=n^(c|~q),s=7*e&15);var u=q,r=r+t+a[e]+b[s]|0;t=d[e];q=n;n=c;c=c+(r<<t|r>>>32-t)|0;r=u}f=f+r|0;g=g+c|0;h=h+n|0;l=
-l+q|0}return new Uint8Array([f&255,f>>8&255,f>>16&255,f>>>24&255,g&255,g>>8&255,g>>16&255,g>>>24&255,h&255,h>>8&255,h>>16&255,h>>>24&255,l&255,l>>8&255,l>>16&255,l>>>24&255])}}(),Cd=function(){function d(){}d.prototype={decryptBlock:function(a){return a}};return d}(),Dd=function(){function d(a){var e=new Uint8Array(176);e.set(a);a=16;for(var f=1;176>a;++f)for(var d=e[a-3],k=e[a-2],m=e[a-1],r=e[a-4],d=c[d],k=c[k],m=c[m],r=c[r],d=d^b[f],n=0;4>n;++n)e[a]=d^=e[a-16],a++,e[a]=k^=e[a-16],a++,e[a]=m^=e[a-
-16],a++,e[a]=r^=e[a-16],a++;this.key=e;this.buffer=new Uint8Array(16);this.bufferPosition=0}function a(a){var c,b,d=a.length,k=this.buffer;b=this.bufferPosition;var m=[],r=this.iv;for(c=0;c<d;++c)if(k[b]=a[c],++b,!(16>b)){var n,q=k;b=this.key;n=new Uint8Array(16);n.set(q);for(var t=q=void 0,s=void 0,u=t=s=void 0,t=0,s=160;16>t;++t,++s)n[t]^=b[s];for(q=9;1<=q;--q){s=n[13];n[13]=n[9];n[9]=n[5];n[5]=n[1];n[1]=s;s=n[14];t=n[10];n[14]=n[6];n[10]=n[2];n[6]=s;n[2]=t;s=n[15];t=n[11];u=n[7];n[15]=n[3];n[11]=
-s;n[7]=t;n[3]=u;for(t=0;16>t;++t)n[t]=e[n[t]];t=0;for(s=16*q;16>t;++t,++s)n[t]^=b[s];for(t=0;16>t;t+=4){var s=f[n[t+1]],u=f[n[t+2]],v=f[n[t+3]],s=f[n[t]]^s>>>8^s<<24^u>>>16^u<<16^v>>>24^v<<8;n[t]=s>>>24&255;n[t+1]=s>>16&255;n[t+2]=s>>8&255;n[t+3]=s&255}}s=n[13];n[13]=n[9];n[9]=n[5];n[5]=n[1];n[1]=s;s=n[14];t=n[10];n[14]=n[6];n[10]=n[2];n[6]=s;n[2]=t;s=n[15];t=n[11];u=n[7];n[15]=n[3];n[11]=s;n[7]=t;n[3]=u;for(t=0;16>t;++t)n[t]=e[n[t]],n[t]^=b[t];for(b=0;16>b;++b)n[b]^=r[b];r=k;m.push(n);k=new Uint8Array(16);
-b=0}this.buffer=k;this.bufferLength=b;this.iv=r;if(0===m.length)return new Uint8Array([]);if(1==m.length)return m[0];d=new Uint8Array(16*m.length);b=c=0;for(a=m.length;c<a;++c,b+=16)d.set(m[c],b);return d}var b=new Uint8Array([141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,
-197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,
-198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141]),c=new Uint8Array([99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,
-77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,
-137,13,191,230,66,104,65,153,45,15,176,84,187,22]),e=new Uint8Array([82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,
-175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125]),f=new Uint32Array([0,
-235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,
-1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,
-395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,
-361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,
-1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,
-1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795]);d.prototype={decryptBlock:function(c){var b,e=c.length,f=this.buffer,d=this.bufferPosition;for(b=0;16>d&&b<e;++b,++d)f[d]=c[b];if(16>d)return this.bufferLength=d,new Uint8Array([]);this.iv=f;this.buffer=new Uint8Array(16);this.bufferLength=0;this.decryptBlock=a;return this.decryptBlock(c.subarray(16))}};
-return d}(),Ic=function(){function d(a,b){this.stringCipherConstructor=a;this.streamCipherConstructor=b}d.prototype={createStream:function(a){var b=new this.streamCipherConstructor;return new Ed(a,function(a){return b.decryptBlock(a)})},decryptString:function(a){var b=new this.stringCipherConstructor;a=va(a);a=b.decryptBlock(a);return ib(a)}};return d}(),pd=function(){function d(a,c,b,f,d,m,r,n){var q=new Uint8Array(100),t=0,s;if(c)for(s=Math.min(32,c.length);t<s;++t)q[t]=c[t];for(c=0;32>t;)q[t++]=
-e[c++];c=0;for(s=b.length;c<s;++c)q[t++]=b[c];q[t++]=d&255;q[t++]=d>>8&255;q[t++]=d>>16&255;q[t++]=d>>>24&255;c=0;for(s=a.length;c<s;++c)q[t++]=a[c];4<=m&&!n&&(q[t++]=255,q[t++]=255,q[t++]=255,q[t++]=255);s=Ya(q,0,t);t=r>>3;if(3<=m)for(c=0;50>c;++c)s=Ya(s,0,t);r=s.subarray(0,t);if(3<=m){for(t=0;32>t;++t)q[t]=e[t];c=0;for(s=a.length;c<s;++c)q[t++]=a[c];a=new Ra(r);q=a.encryptBlock(Ya(q,0,t));s=r.length;m=new Uint8Array(s);for(c=1;19>=c;++c){for(a=0;a<s;++a)m[a]=r[a]^c;a=new Ra(m);q=a.encryptBlock(q)}}else a=
-new Ra(r),q=a.encryptBlock(e);c=0;for(s=q.length;c<s;++c)if(f[c]!=q[c])return null;return r}function a(a,c,b){var p=a.get("Filter");(!V(p)||"Standard"!=p.name)&&w("unknown encryption method");this.dict=a;p=a.get("V");(!N(p)||1!=p&&2!=p&&4!=p)&&w("unsupported encryption algorithm");this.algorithm=p;var k=a.get("Length")||40;(!N(k)||40>k||0!==k%8)&&w("invalid key length");var m=va(a.get("O")),r=va(a.get("U")),n=a.get("P"),q=a.get("R"),t=4==p&&!1!==a.get("EncryptMetadata");this.encryptMetadata=t;c=va(c);
-var s;b&&(s=va(b));var u=d(c,s,m,r,n,q,k,t);if(!u&&!b)throw new Ub("No password given","needpassword");if(!u&&b){b=s;s=new Uint8Array(32);var u=0,v;for(v=Math.min(32,b.length);u<v;++u)s[u]=b[u];for(b=0;32>u;)s[u++]=e[b++];s=Ya(s,0,u);u=k>>3;if(3<=q)for(b=0;50>b;++b)s=Ya(s,0,s.length);var A;if(3<=q){v=m;var T=new Uint8Array(u);for(b=19;0<=b;b--){for(A=0;A<u;++A)T[A]=s[A]^b;A=new Ra(T);v=A.encryptBlock(v)}}else A=new Ra(s.subarray(0,u)),v=A.encryptBlock(m);u=d(c,v,m,r,n,q,k,t)}if(!u)throw new Ub("Incorrect Password",
-"incorrectpassword");this.encryptionKey=u;4==p&&(this.cf=a.get("CF"),this.stmf=a.get("StmF")||f,this.strf=a.get("StrF")||f,this.eff=a.get("EFF")||this.strf)}function b(a,c,b,e){var f=new Uint8Array(b.length+9),d,r;d=0;for(r=b.length;d<r;++d)f[d]=b[d];f[d++]=a&255;f[d++]=a>>8&255;f[d++]=a>>16&255;f[d++]=c&255;f[d++]=c>>8&255;e&&(f[d++]=115,f[d++]=65,f[d++]=108,f[d++]=84);return Ya(f,0,d).subarray(0,Math.min(b.length+5,16))}function c(a,c,e,f,d){a=a.get(c.name);var m;null!==a&&void 0!==a&&(m=a.get("CFM"));
-if(!m||"None"==m.name)return function(){return new Cd};if("V2"==m.name)return function(){return new Ra(b(e,f,d,!1))};if("AESV2"==m.name)return function(){return new Dd(b(e,f,d,!0))};w("Unknown crypto method")}var e=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]),f=new Wa("Identity");a.prototype={createCipherTransform:function(a,e){if(4==this.algorithm)return new Ic(c(this.cf,this.stmf,a,e,this.encryptionKey),c(this.cf,this.strf,
-a,e,this.encryptionKey));var f=b(a,e,this.encryptionKey,!1),d=function(){return new Ra(f)};return new Ic(d,d)}};return a}(),Tb=function(){function d(a,c,b,e,d,k){this.state=new Fd;this.stateStack=[];this.pdfManager=a;this.xref=c;this.handler=b;this.pageIndex=e;this.uniquePrefix=d;this.idCounters=k}function a(a,c,b){return{queue:{fnArray:a||[],argsArray:c||[]},dependencies:b||{}}}var b={w:{fnName:"setLineWidth",numArgs:1,variableArgs:!1},J:{fnName:"setLineCap",numArgs:1,variableArgs:!1},j:{fnName:"setLineJoin",
-numArgs:1,variableArgs:!1},M:{fnName:"setMiterLimit",numArgs:1,variableArgs:!1},d:{fnName:"setDash",numArgs:2,variableArgs:!1},ri:{fnName:"setRenderingIntent",numArgs:1,variableArgs:!1},i:{fnName:"setFlatness",numArgs:1,variableArgs:!1},gs:{fnName:"setGState",numArgs:1,variableArgs:!1},q:{fnName:"save",numArgs:0,variableArgs:!1},Q:{fnName:"restore",numArgs:0,variableArgs:!1},cm:{fnName:"transform",numArgs:6,variableArgs:!1},m:{fnName:"moveTo",numArgs:2,variableArgs:!1},l:{fnName:"lineTo",numArgs:2,
-variableArgs:!1},c:{fnName:"curveTo",numArgs:6,variableArgs:!1},v:{fnName:"curveTo2",numArgs:4,variableArgs:!1},y:{fnName:"curveTo3",numArgs:4,variableArgs:!1},h:{fnName:"closePath",numArgs:0,variableArgs:!1},re:{fnName:"rectangle",numArgs:4,variableArgs:!1},S:{fnName:"stroke",numArgs:0,variableArgs:!1},s:{fnName:"closeStroke",numArgs:0,variableArgs:!1},f:{fnName:"fill",numArgs:0,variableArgs:!1},F:{fnName:"fill",numArgs:0,variableArgs:!1},"f*":{fnName:"eoFill",numArgs:0,variableArgs:!1},B:{fnName:"fillStroke",
-numArgs:0,variableArgs:!1},"B*":{fnName:"eoFillStroke",numArgs:0,variableArgs:!1},b:{fnName:"closeFillStroke",numArgs:0,variableArgs:!1},"b*":{fnName:"closeEOFillStroke",numArgs:0,variableArgs:!1},n:{fnName:"endPath",numArgs:0,variableArgs:!1},W:{fnName:"clip",numArgs:0,variableArgs:!1},"W*":{fnName:"eoClip",numArgs:0,variableArgs:!1},BT:{fnName:"beginText",numArgs:0,variableArgs:!1},ET:{fnName:"endText",numArgs:0,variableArgs:!1},Tc:{fnName:"setCharSpacing",numArgs:1,variableArgs:!1},Tw:{fnName:"setWordSpacing",
-numArgs:1,variableArgs:!1},Tz:{fnName:"setHScale",numArgs:1,variableArgs:!1},TL:{fnName:"setLeading",numArgs:1,variableArgs:!1},Tf:{fnName:"setFont",numArgs:2,variableArgs:!1},Tr:{fnName:"setTextRenderingMode",numArgs:1,variableArgs:!1},Ts:{fnName:"setTextRise",numArgs:1,variableArgs:!1},Td:{fnName:"moveText",numArgs:2,variableArgs:!1},TD:{fnName:"setLeadingMoveText",numArgs:2,variableArgs:!1},Tm:{fnName:"setTextMatrix",numArgs:6,variableArgs:!1},"T*":{fnName:"nextLine",numArgs:0,variableArgs:!1},
-Tj:{fnName:"showText",numArgs:1,variableArgs:!1},TJ:{fnName:"showSpacedText",numArgs:1,variableArgs:!1},"'":{fnName:"nextLineShowText",numArgs:1,variableArgs:!1},'"':{fnName:"nextLineSetSpacingShowText",numArgs:3,variableArgs:!1},d0:{fnName:"setCharWidth",numArgs:2,variableArgs:!1},d1:{fnName:"setCharWidthAndBounds",numArgs:6,variableArgs:!1},CS:{fnName:"setStrokeColorSpace",numArgs:1,variableArgs:!1},cs:{fnName:"setFillColorSpace",numArgs:1,variableArgs:!1},SC:{fnName:"setStrokeColor",numArgs:4,
-variableArgs:!0},SCN:{fnName:"setStrokeColorN",numArgs:33,variableArgs:!0},sc:{fnName:"setFillColor",numArgs:4,variableArgs:!0},scn:{fnName:"setFillColorN",numArgs:33,variableArgs:!0},G:{fnName:"setStrokeGray",numArgs:1,variableArgs:!1},g:{fnName:"setFillGray",numArgs:1,variableArgs:!1},RG:{fnName:"setStrokeRGBColor",numArgs:3,variableArgs:!1},rg:{fnName:"setFillRGBColor",numArgs:3,variableArgs:!1},K:{fnName:"setStrokeCMYKColor",numArgs:4,variableArgs:!1},k:{fnName:"setFillCMYKColor",numArgs:4,variableArgs:!1},
-sh:{fnName:"shadingFill",numArgs:1,variableArgs:!1},BI:{fnName:"beginInlineImage",numArgs:0,variableArgs:!1},ID:{fnName:"beginImageData",numArgs:0,variableArgs:!1},EI:{fnName:"endInlineImage",numArgs:0,variableArgs:!1},Do:{fnName:"paintXObject",numArgs:1,variableArgs:!1},MP:{fnName:"markPoint",numArgs:1,variableArgs:!1},DP:{fnName:"markPointProps",numArgs:2,variableArgs:!1},BMC:{fnName:"beginMarkedContent",numArgs:1,variableArgs:!1},BDC:{fnName:"beginMarkedContentProps",numArgs:2,variableArgs:!1},
-EMC:{fnName:"endMarkedContent",numArgs:0,variableArgs:!1},BX:{fnName:"beginCompat",numArgs:0,variableArgs:!1},EX:{fnName:"endCompat",numArgs:0,variableArgs:!1},BM:null,BD:null,"true":null,fa:null,fal:null,fals:null,"false":null,nu:null,nul:null,"null":null},c=1,e=2;d.prototype={buildFormXObject:function(a,c,b){var e=this,d=new E,k=[],m=[],r=c.dict.get("Matrix"),n=c.dict.get("BBox"),q=c.dict.get("Group");if(q){var t={matrix:r,bbox:n,smask:!!b,isolated:!1,knockout:!1};b=q.get("S");V(b)&&"Transparency"===
-b.name&&(t.isolated=q.get("I")||!1,t.knockout=q.get("K")||!1);k.push("beginGroup");m.push([t])}k.push("paintFormXObjectBegin");m.push([r,n]);this.getOperatorList(c,c.dict.get("Resources")||a).then(function(a){var c=a.queue;a=a.dependencies;M.prependToArray(c.fnArray,k);M.prependToArray(c.argsArray,m);e.insertDependencies(c,a);c.fnArray.push("paintFormXObjectEnd");c.argsArray.push([]);q&&(c.fnArray.push("endGroup"),c.argsArray.push([t]));d.resolve({queue:c,dependencies:a})});return d},buildPaintImageXObject:function(a,
-c,b){var e=this,d=c.dict,k=d.get("Width","W"),m=d.get("Height","H"),r={},n={dependencies:r};if(d.get("ImageMask","IM"))return a=d.get("Width","W"),b=d.get("Height","H"),c=c.getBytes((a+7>>3)*b),d=d.get("Decode","D"),d=!!d&&0<d[0],n.fn="paintImageMaskXObject",n.args=[c,d,a,b],n;var q=d.get("SMask","SM")||!1,d=d.get("Mask")||!1;if(b&&!q&&!d&&!(c instanceof tb)&&200>k+m)return c=(new Jc(this.xref,a,c,b,null,null)).getImageData(),n.fn="paintInlineImageXObject",n.args=[c],n;var t="img_"+(this.uniquePrefix||
-"")+ ++this.idCounters.obj;r[t]=!0;n.args=[t,k,m];if(!q&&!d&&c instanceof tb&&c.isNativelySupported(this.xref,a))return n.fn="paintJpegXObject",this.handler.send("obj",[t,this.pageIndex,"JpegStream",c.getIR()]),n;n.fn="paintImageXObject";Jc.buildImage(function(a){a=a.getImageData();e.handler.send("obj",[t,e.pageIndex,"Image",a])},e.handler,e.xref,a,c,b);return n},handleTilingType:function(c,b,e,d,p){var k=this,m=new E;this.getOperatorList(d,p.get("Resources")||e).then(function(e){var d=a([],[],e.dependencies),
-h=d.queue;k.insertDependencies(h,e.dependencies);h.fnArray.push(c);h.argsArray.push(Ec.getIR(e.queue,p,b));m.resolve(d)});return m},handleSetFont:function(a,c,b){var e=new E,d;c&&(c=c.slice(),d=c[0].name);var k=this;this.loadFont(d,b,this.xref,a).then(function(a){var b=a.font,f=b.loadedName;if(!b.sent){var d=b.translated.exportData();k.handler.send("commonobj",[f,"Font",d]);b.sent=!0}var b=[],d=[],h={fnArray:b,argsArray:d};a=a.dependencies;a[f]=!0;k.insertDependencies(h,a);c&&(c[0]=f,b.push("setFont"),
-d.push(c));e.resolve({loadedName:f,queue:h,dependencies:a})});return e},insertDependencies:function(a,c){var b=a.fnArray,e=a.argsArray,d=Object.keys(c);d.length&&(b.push("dependency"),e.push(d))},setGState:function(c,b){function e(a,b,g){switch(b){case "Type":break;case "LW":case "LC":case "LJ":case "ML":case "D":case "RI":case "FL":case "CA":case "ca":a.push([b,g]);break;case "Font":var h=new E;d.handleSetFont(c,null,g[0]).then(function(a){h.resolve({gState:["Font",a.loadedName,g[1]],queue:a.queue,
-dependencies:a.dependencies})});a.push(["promise",h]);break;case "BM":if(!V(g)||"Normal"!==g.name)k.transparency=!0;a.push([b,g]);break;case "SMask":(!V(g)||"None"!=g.name)&&oa("graphic state operator "+b);break;case "OP":case "op":case "OPM":case "BG":case "BG2":case "UCR":case "UCR2":case "TR":case "TR2":case "HT":case "SM":case "SA":case "AIS":case "TK":da("graphic state operator "+b);break;default:da("Unknown graphic state operator "+b)}}var d=this,p=a(),k=p.queue,m=k.fnArray,r=k.argsArray,n=
-p.dependencies,q=[],t=b.map,s;for(s in t){var u=t[s];e(q,s,u)}var t=[],v=[];s=0;for(var A=q.length;s<A;++s)u=q[s],"promise"===u[0]&&(t.push(u[1]),v.push(s));var T=new E;E.all(t).then(function(a){for(var c=0,b=a.length;c<b;++c){var e=a[c];q[v[c]]=e.gState;var f=e.queue;M.concatenateToArray(m,f.fnArray);M.concatenateToArray(r,f.argsArray);k.transparency=f.transparency||k.transparency;M.extendObj(n,e.dependencies)}m.push("setGState");r.push([q]);T.resolve(p)});return T},loadFont:function(a,c,b,e){var d=
-new E,k=e.get("Font");k||w("fontRes not available");c=b.fetchIfRef(c)||k.get(a);if(!W(c))return++this.idCounters.font,d.resolve({font:{translated:new Db("Font "+a+" is not available"),loadedName:"g_font_"+this.uniquePrefix+this.idCounters.obj},dependencies:{}}),d;if(a=c.loadedName)d.resolve({font:c,dependencies:{}});else{a="g_font_"+this.uniquePrefix+(this.idCounters.font+1);c.loadedName=a;var m;try{m=this.translateFont(c,b)}catch(r){if(r instanceof Na)throw c.loadedName=null,r;m=new Db(r instanceof
-Error?r.message:r)}c.translated=m;if(m.loadCharProcs){delete m.loadCharProcs;b=c.get("CharProcs").getAll();e=c.get("Resources")||e;a=[];for(var n=Object.keys(b),k=0,q=n.length;k<q;++k)a.push(this.getOperatorList(b[n[k]],e));E.all(a).then(function(a){for(var b={},e={},f=0,h=n.length;f<h;++f){var l=a[f];b[n[f]]=l.queue;M.extendObj(e,l.dependencies)}m.charProcOperatorList=b;d.resolve({font:c,dependencies:e})})}else d.resolve({font:c,dependencies:{}});++this.idCounters.font}return d},getOperatorList:function(a,
-d){function h(){try{s.restoreState();for(var a=[];;){var f=s.getObj();if(f==ka)break;if(ea(f)){var T=f.cmd,Z=b[T];if(Z){var $=Z.fnName;if(Z.variableArgs)a.length>Z.numArgs&&da("Command "+$+": expected [0,"+Z.numArgs+"] args, but received "+a.length+" args");else if(a.length<Z.numArgs){da("Command "+$+": because expected "+Z.numArgs+" args, but received "+a.length+" args; skipping");a=[];continue}else a.length>Z.numArgs&&da("Command "+$+": expected "+Z.numArgs+" args, but received "+a.length+" args");
-if(("SCN"==T||"scn"==T)&&!a[a.length-1].code){var B=a[a.length-1],L;if(V(B)&&(L=t.get(B.name))){var ia=ra(L)?L.dict:L,X=ia.get("PatternType");if(X==c)var y=l.handleTilingType($,a,d,L,ia),$="promise",a=[y];else if(X==e){var H=ia.get("Shading"),ja=ia.get("Matrix");L=Eb.parseShading(H,ja,p,d);a=L.getIR()}else w("Unkown PatternType "+X)}}else if("Do"==T&&!a[0].code){var x=q.get(a[0].name);if(x){la(ra(x),"XObject should be a stream");var z=x.dict.get("Subtype");la(V(z),"XObject should have a Name subtype");
-if("Form"==z.name)$="promise",a=[l.buildFormXObject(d,x)];else if("Image"==z.name){var F=l.buildPaintImageXObject(d,x,!1);M.extendObj(n,F.dependencies);l.insertDependencies(r,F.dependencies);$=F.fn;a=F.args}else w("Unhandled XObject subtype "+z.name)}}else"Tf"==T?($="promise",a=[l.handleSetFont(d,a)]):"EI"==T&&(F=l.buildPaintImageXObject(d,a[0],!0),M.extendObj(n,F.dependencies),l.insertDependencies(r,F.dependencies),$=F.fn,a=F.args);switch($){case "setFillColorSpace":case "setStrokeColorSpace":a=
-[ha.parseToIR(a[0],p,d)];break;case "shadingFill":var J=d.get("Shading");J||w("No shading resource found");(H=J.get(a[0].name))||w("No shading object found");a=[Eb.parseShading(H,null,p,d).getIR()];$="shadingFill";break;case "setGState":var G=a[0],K=d.get("ExtGState");if(!W(K)||!K.has(G.name))break;var Q=K.get(G.name),$="promise",a=[l.setGState(d,Q)]}k.push($);m.push(a);a=[];s.saveState()}else Y('Unknown command "'+T+'"')}else null!==f&&void 0!==f&&(a.push(f instanceof Ma?f.getAll():f),la(33>=a.length,
-"Too many arguments"))}a=[];for(f=0;f<k.length;++f)"promise"===k[f]&&a.push(m[f][0]);E.all(a).then(function(a){for(var c=0,b=a.length;c<b;++c){var e=a[c],f=e.queue;r.transparency=f.transparency||r.transparency;M.extendObj(n,e.dependencies)}for(var d=[],g=[],h=0,l=0,c=0,b=k.length;c<b;++c){var v=c+h;if("promise"===k[c]){for(var e=a[l++],f=e.queue,e=f.fnArray,f=f.argsArray,A=0,p=e.length;A<p;++A)d[v+A]=e[A],g[v+A]=f[A];h+=e.length-1}else d[v]=k[c],g[v]=m[c]}u.resolve({queue:{fnArray:d,argsArray:g,transparency:r.transparency},
-dependencies:n})})}catch(C){if(!(C instanceof Na))throw C;l.pdfManager.requestRange(C.begin,C.end).then(h)}}var l=this,p=this.xref,k=[],m=[],r={transparency:!1,fnArray:k,argsArray:m},n={};d=d||new Ma;var q=d.get("XObject")||new Ma,t=d.get("Pattern")||new Ma,s=new $a(new Ca(a,b),!1,p),u=new E;s.saveState();h();return u},getAnnotationsOperatorList:function(c,b){for(var e=new E,d=[],p=[],k=0,m=c.length;k<m;++k){var r=c[k];if(r&&r.annotationFlags&&!(r.annotationFlags&34||!r.rect||!r.appearance))p.push(r),
-r.appearance?r=this.getOperatorList(r.appearance,r.resources):(r=new E,r.resolve(a())),d.push(r)}E.all(d).then(function(c){for(var b=[],f=[],d={},g=0,l=c.length;g<l;++g){var k=p[g],m=c[g],Z=k.rect,r=k.matrix,B;B=Z;var L=M.getAxialAlignedBoundingBox(k.bbox,r),ia=L[0],X=L[1],y=(B[2]-B[0])/(L[2]-ia),L=(B[3]-B[1])/(L[3]-X);B=[y,0,0,L,B[0]-ia*y,B[1]-X*L];k=k.border;b.push("beginAnnotation");f.push([Z,B,r,k]);M.concatenateToArray(b,m.queue.fnArray);M.concatenateToArray(f,m.queue.argsArray);M.extendObj(d,
-m.dependencies);b.push("endAnnotation");f.push([])}e.resolve(a(b,f,d))});return e},getTextContent:function(a,c){function b(a,c,e){var f=new E;r.loadFont(a,c,r.xref,e).then(function(a){f.resolve(a.font.translated)});return f}function e(a,c,b){if(a)return PDFJS.bidi(a,-1,b)}function d(){try{t.restoreState();for(var a=[];;){var f=t.getObj();if(f==ka)break;if(ea(f)){switch(f.cmd){case "Tf":u=b(a[0].name,null,c);break;case "TJ":var T=new E;s.push(T);u.then(function(a,c){for(var b="",f=0,d=a.length;f<d;f++)if("string"===
-typeof a[f])b+=Cb(a[f],c);else if(0>a[f]&&0<c.spaceWidth){var g=-a[f]/c.spaceWidth;if(g>m)for(g=Math.round(g);g--;)b+=" ";else g>k&&(b+=" ")}T.resolve(e(b,-1,c.vertical))}.bind(null,a[0]));break;case "Tj":T=new E;s.push(T);u.then(function(a,c){var b=Cb(a,c);T.resolve(e(b,-1,c.vertical))}.bind(null,a[0]));break;case "'":T=new E;s.push(T);u.then(function(a,c){var b=Cb(a,c);T.resolve(e(b,-1,c.vertical))}.bind(null,a[0]));break;case '"':T=new E;s.push(T);u.then(function(a,c){var b=Cb(a,c);T.resolve(e(b,
--1,c.vertical))}.bind(null,a[2]));break;case "Do":if(a[0].code)break;q||(q=c.get("XObject")||new Ma);var Z=q.get(a[0].name);if(!Z)break;la(ra(Z),"XObject should be a stream");var $=Z.dict.get("Subtype");la(V($),"XObject should have a Name subtype");if("Form"!==$.name)break;T=r.getTextContent(Z,Z.dict.get("Resources")||c);s.push(T);break;case "gs":var B=a[0],L=c.get("ExtGState");if(!W(L)||!L.has(B.name))break;for(var ia=L.get(B.name),X=0;X<ia.length;X++)"Font"===ia[X]&&(u=b(a[0].name,null,c))}a=[];
-t.saveState()}else null!==f&&void 0!==f&&(la(33>=a.length,"Too many arguments"),a.push(f))}E.all(s).then(function(a){for(var c=[],b=0,e=a.length;b<e;++b){var f=a[b];f&&(U(f)?M.concatenateToArray(c,f):c.push(f))}n.resolve(c)})}catch(y){if(!(y instanceof Na))throw y;r.pdfManager.requestRange(y.begin,y.end).then(d)}}var k=0.35,m=1.5,r=this,n=new E;c=this.xref.fetchIfRef(c)||new Ma;var q=null,t=new $a(new Ca(a),!1),s=[],u;t.saveState();d();return n},extractDataStructures:function(a,c,b,e){if(c=a.get("ToUnicode")||
-c.get("ToUnicode"))e.toUnicode=this.readToUnicode(c,b,e);e.composite&&(b=a.get("CIDSystemInfo"),W(b)&&(e.cidSystemInfo={registry:b.get("Registry"),ordering:b.get("Ordering"),supplement:b.get("Supplement")}),b=a.get("CIDToGIDMap"),ra(b)&&(e.cidToGidMap=this.readCidToGidMap(b)));b=!0;c=!1;var d=[],k="TrueType"===e.type?qa.WinAnsiEncoding:qa.StandardEncoding;e.flags&ya.Symbolic&&(k=!e.file?qa.symbolsEncoding:qa.MacRomanEncoding);if(a.has("Encoding"))if(a=a.get("Encoding"),W(a)){var m=a.get("BaseEncoding");
-m&&(b=!1,c=!0,k=qa[m.name]);if(a.has("Differences")){c=!0;a=a.get("Differences");for(var r=m=0,n=a.length;r<n;r++){var q=a[r];La(q)?m=q:d[m++]=q.name}}}else V(a)?(b=!1,c=!0,k=qa[a.name]):w("Encoding is not a Name nor a Dict");e.differences=d;e.baseEncoding=k;e.hasEncoding=c;e.overridableEncoding=b},readToUnicode:function(a,c,b){c=[];if(V(a))"Identity-"!=a.name.substr(0,9)&&w("ToUnicode file cmap translation not implemented");else if(ra(a)){var e=[],d="",k={};a=a.getBytes(a.length);for(var m=0,r=a.length;m<
-r;m++){var n=a[m];if(32==n||13==n||10==n||60==n||91==n||93==n){switch(d){case "usecmap":w("usecmap is not implemented");break;case "beginbfchar":case "beginbfrange":case "begincidchar":case "begincidrange":d="";e=[];break;case "endcidrange":case "endbfrange":for(var q=0,t=e.length;q<t;q+=3){var s=e[q],u=e[q+1],v=e[q+2];65535==v&&(v=s);if(U(v))for(var A=0;s<=u;)c[s]=v[A++],++s;else for(;s<=u;)c[s]=v++,++s}break;case "endcidchar":case "endbfchar":q=0;for(t=e.length;q<t;q+=2)s=e[q],v=e[q+1],c[s]=v;break;
-case "":break;default:"0"<=d[0]&&"9">=d[0]&&(d=parseInt(d,10)),e.push(d),d=""}switch(n){case 91:e.push(k);break;case 93:for(var n=[],T;e.length&&(T=e.pop())!=k;)n.unshift(T);e.push(n)}}else if(62==n){if(d.length){2==d.length&&b.composite&&(b.wideChars=!1);if(4>=d.length)e.push(parseInt(d,16));else{n=[];q=0;for(t=d.length;q<t;q+=4){v=parseInt(d.substr(q,4),16);if(16>=v){q+=4;v=v<<16|parseInt(d.substr(q,4),16);v-=65536;n.push(55296|v>>10);n.push(56320|v&1023);break}n.push(v)}e.push(String.fromCharCode.apply(String,
-n))}d=""}}else d+=String.fromCharCode(n)}}return c},readCidToGidMap:function(a){a=a.getBytes();for(var c=[],b=0,e=a.length;b<e;b++){var d=a[b++]<<8|a[b];0!==d&&(c[b>>1]=d)}return c},extractWidths:function(a,c,b,e){var d=[],k=0,m=[],r;if(e.composite){var k=a.get("DW")||1E3,n=a.get("W");if(n)for(var q=0,t=n.length;q<t;q++){b=n[q++];var s=c.fetchIfRef(n[q]);if(U(s))for(var u=0,v=s.length;u<v;u++)d[b++]=s[u];else{v=n[++q];for(u=b;u<=s;u++)d[u]=v}}if(e.vertical&&(n=a.get("DW2")||[880,-1E3],r=[n[1],0.5*
-k,n[0]],n=a.get("W2"))){q=0;for(t=n.length;q<t;q++)if(b=n[q++],s=c.fetchIfRef(n[q]),U(s)){u=0;for(v=s.length;u<v;u++)m[b++]=[s[u++],s[u++],s[u]]}else{a=[n[++q],n[++q],n[++q]];for(u=b;u<=s;u++)m[u]=a}}}else if(c=e.firstChar,n=a.get("Widths")){u=c;q=0;for(t=n.length;q<t;q++)d[u++]=n[q];k=parseFloat(b.get("MissingWidth"))||0}else a=a.get("BaseFont"),V(a)&&(k=this.getBaseFontMetrics(a.name),d=k.widths,k=k.defaultWidth);a=!0;c=k;for(var A in d)if(q=d[A])if(c){if(c!=q){a=!1;break}}else c=q;a&&(e.flags|=
-ya.FixedPitch);e.defaultWidth=k;e.widths=d;e.defaultVMetrics=r;e.vmetrics=m},isSerifFont:function(a){a=a.split("-")[0];return a in Gd||-1!==a.search(/serif/gi)},getBaseFontMetrics:function(a){var c=0,b=[],e=!1,d=Kc[a]||a;d in Lc||(d=this.isSerifFont(a)?"Times-Roman":"Helvetica");a=Lc[d];La(a)?(c=a,e=!0):b=a;return{defaultWidth:c,monospace:e,widths:b}},translateFont:function(a,c){var b=a,e=a.get("Subtype");la(V(e),"invalid font Subtype");var d=!1;"Type0"==e.name&&((e=a.get("DescendantFonts"))||w("Descendant fonts are not specified"),
-a=U(e)?c.fetchIfRef(e[0]):e,e=a.get("Subtype"),la(V(e),"invalid font Subtype"),d=!0);var k=d?65535:255,m=a.get("FontDescriptor");if(!m)if("Type3"==e.name)m=new Ma,m.set("FontName",new Wa(e.name));else{b=a.get("BaseFont");V(b)||w("Base font is not specified");var b=b.name.replace(/[,_]/g,"-"),m=this.getBaseFontMetrics(b),r=b.split("-")[0],r=(this.isSerifFont(r)?ya.Serif:0)|(m.monospace?ya.FixedPitch:0)|(Hd[r]?ya.Symbolic:ya.Nonsymbolic),k={type:e.name,widths:m.widths,defaultWidth:m.defaultWidth,flags:r,
-firstChar:0,lastChar:k};this.extractDataStructures(a,a,c,k);return new Wb(b,null,k)}var n=a.get("FirstChar")||0,q=a.get("LastChar")||k,r=m.get("FontName"),t=a.get("BaseFont");za(r)&&(r=new Wa(r));za(t)&&(t=new Wa(t));if("Type3"!==e.name){var s=r&&r.name,u=t&&t.name;s!==u&&da("The FontDescriptor's FontName is \""+s+'" but should be the same as the Font\'s BaseFont "'+u+'"')}r=r||t;la(V(r),"invalid font name");if((t=m.get("FontFile","FontFile2","FontFile3"))&&t.dict){var v=t.dict.get("Subtype");v&&
-(v=v.name);var A=t.dict.get("Length1"),T=t.dict.get("Length2")}k={type:e.name,subtype:v,file:t,length1:A,length2:T,loadedName:b.loadedName,composite:d,wideChars:d,fixedPitch:!1,fontMatrix:a.get("FontMatrix")||xa,firstChar:n||0,lastChar:q||k,bbox:m.get("FontBBox"),ascent:m.get("Ascent"),descent:m.get("Descent"),xHeight:m.get("XHeight"),capHeight:m.get("CapHeight"),flags:m.get("Flags"),italicAngle:m.get("ItalicAngle"),coded:!1};d&&(d=b.get("Encoding"),V(d)&&(k.cidEncoding=d.name,k.vertical=/-V$/.test(d.name)));
-this.extractWidths(a,c,m,k);this.extractDataStructures(a,b,c,k);"Type3"===e.name&&(k.coded=!0);return new Wb(r.name,t,k)}};d.optimizeQueue=function(a){var c=a.fnArray;a=a.argsArray;for(var b=0,e=c.length;b<e;b++)if("paintInlineImageXObject"===c[b]&&"save"===c[b-2]&&"transform"===c[b-1]&&"restore"===c[b+1]){for(var d=b-2,b=b+2;b<e&&c[b-4]===c[b];b++);var k=Math.min(b-d>>2,200);if(!(10>k)){for(var m=0,e=[],r=0,n=1,q=1,b=0;b<k;b++){var t=a[d+(b<<2)+1],s=a[d+(b<<2)+2][0];1E3<n+s.width&&(m=Math.max(m,
-n),q+=r+2,r=n=0);e.push({transform:t,x:n,y:q,w:s.width,h:s.height});n+=s.width+2;r=Math.max(r,s.height)}t=Math.max(m,n)+1;r=q+r+1;q=new Uint8Array(4*t*r);m=t<<2;for(b=0;b<k;b++){var n=a[d+(b<<2)+2][0].data,s=e[b].w<<2,u=0,v=e[b].x+e[b].y*t<<2;q.set(n.subarray(0,s),v-m);for(var A=0,T=e[b].h;A<T;A++)q.set(n.subarray(u,u+s),v),u+=s,v+=m;for(q.set(n.subarray(u-s,u),v);0<=v;)n[v-4]=n[v],n[v-3]=n[v+1],n[v-2]=n[v+2],n[v-1]=n[v+3],n[v+s]=n[v+s-4],n[v+s+1]=n[v+s-3],n[v+s+2]=n[v+s-2],n[v+s+3]=n[v+s-1],v-=m}c.splice(d,
-4*k,["paintInlineImageXObjectGroup"]);a.splice(d,4*k,[{width:t,height:r,data:q},e]);b=d;e=c.length}}b=0;for(e=c.length;b<e;b++)if("paintImageMaskXObject"===c[b]&&"save"===c[b-2]&&"transform"===c[b-1]&&"restore"===c[b+1]){d=b-2;for(b+=2;b<e&&c[b-4]===c[b];b++);k=Math.min(b-d>>2,100);if(!(10>k)){e=[];for(b=0;b<k;b++)t=a[d+(b<<2)+1],r=a[d+(b<<2)+2],e.push({data:r[0],width:r[2],height:r[3],transform:t,inverseDecode:r[1]});c.splice(d,4*k,["paintImageMaskXObjectGroup"]);a.splice(d,4*k,[e]);b=d;e=c.length}}};
-return d}(),Fd=function(){function d(){this.alphaIsShape=!1;this.fontSize=0;this.textMatrix=Vb;this.wordSpacing=this.charSpacing=this.lineY=this.lineX=this.leading=0;this.textHScale=1;this.strokeColorSpace=this.fillColorSpace=null}d.prototype={};return d}(),Xa=57344,Bb=6400,Mc=61440,Id=1E3,mb=!1,xa=[0.001,0,0,0.001,0,0],ya={FixedPitch:1,Serif:2,Symbolic:4,Script:8,Nonsymbolic:32,Italic:64,AllCap:65536,SmallCap:131072,ForceBold:262144},qa={ExpertEncoding:" space exclamsmall Hungarumlautsmall dollaroldstyle dollarsuperior ampersandsmall Acutesmall parenleftsuperior parenrightsuperior twodotenleader onedotenleader comma hyphen period fraction zerooldstyle oneoldstyle twooldstyle threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle eightoldstyle nineoldstyle colon semicolon commasuperior threequartersemdash periodsuperior questionsmall asuperior bsuperior centsuperior dsuperior esuperior isuperior lsuperior msuperior nsuperior osuperior rsuperior ssuperior tsuperior ff fi fl ffi ffl parenleftinferior parenrightinferior Circumflexsmall hyphensuperior Gravesmall Asmall Bsmall Csmall Dsmall Esmall Fsmall Gsmall Hsmall Ismall Jsmall Ksmall Lsmall Msmall Nsmall Osmall Psmall Qsmall Rsmall Ssmall Tsmall Usmall Vsmall Wsmall Xsmall Ysmall Zsmall colonmonetary onefitted rupiah Tildesmall exclamdownsmall centoldstyle Lslashsmall Scaronsmall Zcaronsmall Dieresissmall Brevesmall Caronsmall Dotaccentsmall Macronsmall figuredash hypheninferior Ogoneksmall Ringsmall Cedillasmall onequarter onehalf threequarters questiondownsmall oneeighth threeeighths fiveeighths seveneighths onethird twothirds zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior centinferior dollarinferior periodinferior commainferior Agravesmall Aacutesmall Acircumflexsmall Atildesmall Adieresissmall Aringsmall AEsmall Ccedillasmall Egravesmall Eacutesmall Ecircumflexsmall Edieresissmall Igravesmall Iacutesmall Icircumflexsmall Idieresissmall Ethsmall Ntildesmall Ogravesmall Oacutesmall Ocircumflexsmall Otildesmall Odieresissmall OEsmall Oslashsmall Ugravesmall Uacutesmall Ucircumflexsmall Udieresissmall Yacutesmall Thornsmall Ydieresissmall".split(" "),
-MacExpertEncoding:" space exclamsmall Hungarumlautsmall centoldstyle dollaroldstyle dollarsuperior ampersandsmall Acutesmall parenleftsuperior parenrightsuperior twodotenleader onedotenleader comma hyphen period fraction zerooldstyle oneoldstyle twooldstyle threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle eightoldstyle nineoldstyle colon semicolon threequartersemdash questionsmall Ethsmall onequarter onehalf threequarters oneeighth threeeighths fiveeighths seveneighths onethird twothirds ff fi fl ffi ffl parenleftinferior parenrightinferior Circumflexsmall hypheninferior Gravesmall Asmall Bsmall Csmall Dsmall Esmall Fsmall Gsmall Hsmall Ismall Jsmall Ksmall Lsmall Msmall Nsmall Osmall Psmall Qsmall Rsmall Ssmall Tsmall Usmall Vsmall Wsmall Xsmall Ysmall Zsmall colonmonetary onefitted rupiah Tildesmall asuperior centsuperior Aacutesmall Agravesmall Acircumflexsmall Adieresissmall Atildesmall Aringsmall Ccedillasmall Eacutesmall Egravesmall Ecircumflexsmall Edieresissmall Iacutesmall Igravesmall Icircumflexsmall Idieresissmall Ntildesmall Oacutesmall Ogravesmall Ocircumflexsmall Odieresissmall Otildesmall Uacutesmall Ugravesmall Ucircumflexsmall Udieresissmall eightsuperior fourinferior threeinferior sixinferior eightinferior seveninferior Scaronsmall centinferior twoinferior Dieresissmall Caronsmall osuperior fiveinferior commainferior periodinferior Yacutesmall dollarinferior Thornsmall nineinferior zeroinferior Zcaronsmall AEsmall Oslashsmall questiondownsmall oneinferior Lslashsmall Cedillasmall OEsmall figuredash hyphensuperior exclamdownsmall Ydieresissmall onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior ninesuperior zerosuperior esuperior rsuperior tsuperior isuperior ssuperior dsuperior lsuperior Ogoneksmall Brevesmall Macronsmall bsuperior nsuperior msuperior commasuperior periodsuperior Dotaccentsmall Ringsmall".split(" "),
-MacRomanEncoding:" space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron".split(" "),
-StandardEncoding:" space exclam quotedbl numbersign dollar percent ampersand quoteright parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore quoteleft a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde exclamdown cent sterling fraction yen florin section currency quotesingle quotedblleft guillemotleft guilsinglleft guilsinglright fi fl endash dagger daggerdbl periodcentered paragraph bullet quotesinglbase quotedblbase quotedblright guillemotright ellipsis perthousand questiondown grave acute circumflex tilde macron breve dotaccent dieresis ring cedilla hungarumlaut ogonek caron emdash AE ordfeminine Lslash Oslash OE ordmasculine ae dotlessi lslash oslash oe germandbls".split(" "),
-WinAnsiEncoding:" space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde bullet Euro bullet quotesinglbase florin quotedblbase ellipsis dagger daggerdbl circumflex perthousand Scaron guilsinglleft OE bullet Zcaron bullet bullet quoteleft quoteright quotedblleft quotedblright bullet endash emdash tilde trademark scaron guilsinglright oe bullet zcaron Ydieresis exclamdown cent sterling currency yen brokenbar section dieresis copyright ordfeminine guillemotleft logicalnot hyphen registered macron degree plusminus twosuperior threesuperior acute mu paragraph periodcentered cedilla onesuperior ordmasculine guillemotright onequarter onehalf threequarters questiondown Agrave Aacute Acircumflex Atilde Adieresis Aring AE Ccedilla Egrave Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis Eth Ntilde Ograve Oacute Ocircumflex Otilde Odieresis multiply Oslash Ugrave Uacute Ucircumflex Udieresis Yacute Thorn germandbls agrave aacute acircumflex atilde adieresis aring ae ccedilla egrave eacute ecircumflex edieresis igrave iacute icircumflex idieresis eth ntilde ograve oacute ocircumflex otilde odieresis divide oslash ugrave uacute ucircumflex udieresis yacute thorn ydieresis".split(" "),
-symbolsEncoding:" space exclam universal numbersign existential percent ampersand suchthat parenleft parenright asteriskmath plus comma minus period slash zero one two three four five six seven eight nine colon semicolon less equal greater question congruent Alpha Beta Chi Delta Epsilon Phi Gamma Eta Iota theta1 Kappa Lambda Mu Nu Omicron Pi Theta Rho Sigma Tau Upsilon sigma1 Omega Xi Psi Zeta bracketleft therefore bracketright perpendicular underscore radicalex alpha beta chi delta epsilon phi gamma eta iota phi1 kappa lambda mu nu omicron pi theta rho sigma tau upsilon omega1 omega xi psi zeta braceleft bar braceright similar Euro Upsilon1 minute lessequal fraction infinity florin club diamond heart spade arrowboth arrowleft arrowup arrowright arrowdown degree plusminus second greaterequal multiply proportional partialdiff bullet divide notequal equivalence approxequal ellipsis arrowvertex arrowhorizex carriagereturn aleph Ifraktur Rfraktur weierstrass circlemultiply circleplus emptyset intersection union propersuperset reflexsuperset notsubset propersubset reflexsubset element notelement angle gradient registerserif copyrightserif trademarkserif product radical dotmath logicalnot logicaland logicalor arrowdblboth arrowdblleft arrowdblup arrowdblright arrowdbldown lozenge angleleft registersans copyrightsans trademarksans summation parenlefttp parenleftex parenleftbt bracketlefttp bracketleftex bracketleftbt bracelefttp braceleftmid braceleftbt braceex angleright integral integraltp integralex integralbt parenrighttp parenrightex parenrightbt bracketrighttp bracketrightex bracketrightbt bracerighttp bracerightmid bracerightbt".split(" "),
-zapfDingbatsEncoding:" space a1 a2 a202 a3 a4 a5 a119 a118 a117 a11 a12 a13 a14 a15 a16 a105 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26 a27 a28 a6 a7 a8 a9 a10 a29 a30 a31 a32 a33 a34 a35 a36 a37 a38 a39 a40 a41 a42 a43 a44 a45 a46 a47 a48 a49 a50 a51 a52 a53 a54 a55 a56 a57 a58 a59 a60 a61 a62 a63 a64 a65 a66 a67 a68 a69 a70 a71 a72 a73 a74 a203 a75 a204 a76 a77 a78 a79 a81 a82 a83 a84 a97 a98 a99 a100 a101 a102 a103 a104 a106 a107 a108 a112 a111 a110 a109 a120 a121 a122 a123 a124 a125 a126 a127 a128 a129 a130 a131 a132 a133 a134 a135 a136 a137 a138 a139 a140 a141 a142 a143 a144 a145 a146 a147 a148 a149 a150 a151 a152 a153 a154 a155 a156 a157 a158 a159 a160 a161 a163 a164 a196 a165 a192 a166 a167 a168 a169 a170 a171 a172 a173 a162 a174 a175 a176 a177 a178 a179 a193 a180 a199 a181 a200 a182 a201 a183 a184 a197 a185 a194 a198 a186 a195 a187 a188 a189 a190 a191".split(" ")},
-Kc={ArialNarrow:"Helvetica","ArialNarrow-Bold":"Helvetica-Bold","ArialNarrow-BoldItalic":"Helvetica-BoldOblique","ArialNarrow-Italic":"Helvetica-Oblique",ArialBlack:"Helvetica","ArialBlack-Bold":"Helvetica-Bold","ArialBlack-BoldItalic":"Helvetica-BoldOblique","ArialBlack-Italic":"Helvetica-Oblique",Arial:"Helvetica","Arial-Bold":"Helvetica-Bold","Arial-BoldItalic":"Helvetica-BoldOblique","Arial-Italic":"Helvetica-Oblique","Arial-BoldItalicMT":"Helvetica-BoldOblique","Arial-BoldMT":"Helvetica-Bold",
-"Arial-ItalicMT":"Helvetica-Oblique",ArialMT:"Helvetica","Courier-Bold":"Courier-Bold","Courier-BoldItalic":"Courier-BoldOblique","Courier-Italic":"Courier-Oblique",CourierNew:"Courier","CourierNew-Bold":"Courier-Bold","CourierNew-BoldItalic":"Courier-BoldOblique","CourierNew-Italic":"Courier-Oblique","CourierNewPS-BoldItalicMT":"Courier-BoldOblique","CourierNewPS-BoldMT":"Courier-Bold","CourierNewPS-ItalicMT":"Courier-Oblique",CourierNewPSMT:"Courier","Helvetica-Bold":"Helvetica-Bold","Helvetica-BoldItalic":"Helvetica-BoldOblique",
-"Helvetica-Italic":"Helvetica-Oblique","Symbol-Bold":"Symbol","Symbol-BoldItalic":"Symbol","Symbol-Italic":"Symbol",TimesNewRoman:"Times-Roman","TimesNewRoman-Bold":"Times-Bold","TimesNewRoman-BoldItalic":"Times-BoldItalic","TimesNewRoman-Italic":"Times-Italic",TimesNewRomanPS:"Times-Roman","TimesNewRomanPS-Bold":"Times-Bold","TimesNewRomanPS-BoldItalic":"Times-BoldItalic","TimesNewRomanPS-BoldItalicMT":"Times-BoldItalic","TimesNewRomanPS-BoldMT":"Times-Bold","TimesNewRomanPS-Italic":"Times-Italic",
-"TimesNewRomanPS-ItalicMT":"Times-Italic",TimesNewRomanPSMT:"Times-Roman","TimesNewRomanPSMT-Bold":"Times-Bold","TimesNewRomanPSMT-BoldItalic":"Times-BoldItalic","TimesNewRomanPSMT-Italic":"Times-Italic"},Jd={ComicSansMS:"Comic Sans MS","ComicSansMS-Bold":"Comic Sans MS-Bold","ComicSansMS-BoldItalic":"Comic Sans MS-BoldItalic","ComicSansMS-Italic":"Comic Sans MS-Italic",LucidaConsole:"Courier","LucidaConsole-Bold":"Courier-Bold","LucidaConsole-BoldItalic":"Courier-BoldOblique","LucidaConsole-Italic":"Courier-Oblique",
-"MS-Gothic":"MS Gothic","MS-Gothic-Bold":"MS Gothic-Bold","MS-Gothic-BoldItalic":"MS Gothic-BoldItalic","MS-Gothic-Italic":"MS Gothic-Italic","MS-Mincho":"MS Mincho","MS-Mincho-Bold":"MS Mincho-Bold","MS-Mincho-BoldItalic":"MS Mincho-BoldItalic","MS-Mincho-Italic":"MS Mincho-Italic","MS-PGothic":"MS PGothic","MS-PGothic-Bold":"MS PGothic-Bold","MS-PGothic-BoldItalic":"MS PGothic-BoldItalic","MS-PGothic-Italic":"MS PGothic-Italic","MS-PMincho":"MS PMincho","MS-PMincho-Bold":"MS PMincho-Bold","MS-PMincho-BoldItalic":"MS PMincho-BoldItalic",
-"MS-PMincho-Italic":"MS PMincho-Italic"},Gd={"Adobe Jenson":!0,"Adobe Text":!0,Albertus:!0,Aldus:!0,Alexandria:!0,Algerian:!0,"American Typewriter":!0,Antiqua:!0,Apex:!0,Arno:!0,Aster:!0,Aurora:!0,Baskerville:!0,Bell:!0,Bembo:!0,"Bembo Schoolbook":!0,Benguiat:!0,"Berkeley Old Style":!0,"Bernhard Modern":!0,"Berthold City":!0,Bodoni:!0,"Bauer Bodoni":!0,"Book Antiqua":!0,Bookman:!0,"Bordeaux Roman":!0,"Californian FB":!0,Calisto:!0,Calvert:!0,Capitals:!0,Cambria:!0,Cartier:!0,Caslon:!0,Catull:!0,Centaur:!0,
-"Century Old Style":!0,"Century Schoolbook":!0,Chaparral:!0,"Charis SIL":!0,Cheltenham:!0,"Cholla Slab":!0,Clarendon:!0,Clearface:!0,Cochin:!0,Colonna:!0,"Computer Modern":!0,"Concrete Roman":!0,Constantia:!0,"Cooper Black":!0,Corona:!0,Ecotype:!0,Egyptienne:!0,Elephant:!0,Excelsior:!0,Fairfield:!0,"FF Scala":!0,Folkard:!0,Footlight:!0,FreeSerif:!0,"Friz Quadrata":!0,Garamond:!0,Gentium:!0,Georgia:!0,Gloucester:!0,"Goudy Old Style":!0,"Goudy Schoolbook":!0,"Goudy Pro Font":!0,Granjon:!0,"Guardian Egyptian":!0,
-Heather:!0,Hercules:!0,"High Tower Text":!0,Hiroshige:!0,"Hoefler Text":!0,"Humana Serif":!0,Imprint:!0,"Ionic No. 5":!0,Janson:!0,Joanna:!0,Korinna:!0,Lexicon:!0,"Liberation Serif":!0,"Linux Libertine":!0,Literaturnaya:!0,Lucida:!0,"Lucida Bright":!0,Melior:!0,Memphis:!0,Miller:!0,Minion:!0,Modern:!0,"Mona Lisa":!0,"Mrs Eaves":!0,"MS Serif":!0,"Museo Slab":!0,"New York":!0,"Nimbus Roman":!0,"NPS Rawlinson Roadway":!0,Palatino:!0,Perpetua:!0,Plantin:!0,"Plantin Schoolbook":!0,Playbill:!0,"Poor Richard":!0,
-"Rawlinson Roadway":!0,Renault:!0,Requiem:!0,Rockwell:!0,Roman:!0,"Rotis Serif":!0,Sabon:!0,Scala:!0,Seagull:!0,Sistina:!0,Souvenir:!0,STIX:!0,"Stone Informal":!0,"Stone Serif":!0,Sylfaen:!0,Times:!0,Trajan:!0,"Trinit\u00e9":!0,"Trump Mediaeval":!0,Utopia:!0,"Vale Type":!0,"Bitstream Vera":!0,"Vera Serif":!0,Versailles:!0,Wanted:!0,Weiss:!0,"Wide Latin":!0,Windsor:!0,XITS:!0},Hd={Dingbats:!0,Symbol:!0,ZapfDingbats:!0},Nc={H:Mb,V:Mb,"EUC-H":Nb,"EUC-V":Nb,"83pv-RKSJ-H":function(d){d=va(d);try{return Fa(d,
-"shift_jis",!0)}catch(a){return oa("Unsupported 83pv character found"),Fa(d,"shift_jis")}},"90pv-RKSJ-H":function(d){d=va(d);try{return Fa(d,"shift_jis",!0)}catch(a){return oa("Unsupported 90pv character found"),Fa(d,"shift_jis")}},"90ms-RKSJ-H":Ab,"90ms-RKSJ-V":Ab,"90msp-RKSJ-H":Ab,"90msp-RKSJ-V":Ab,"GBK-EUC-H":function(d){return Fa(va(d),"gbk")},"B5pc-H":Ob,"ETenms-B5-H":Ob,"ETenms-B5-V":Ob},Kd={H:!0,V:!0,"EUC-H":!0,"EUC-V":!0,"90ms-RKSJ-H":!0,"90ms-RKSJ-V":!0,"UniJIS-UCS2-HW-H":!0,"UniJIS-UCS2-HW-V":!0},
-Fa;"undefined"!==typeof TextDecoder?Fa=function(d,a,b){return(new TextDecoder(a,{fatal:!!b})).decode(d)}:"undefined"!==typeof FileReaderSync?Fa=function(d,a){return(new FileReaderSync).readAsText(new Blob([d]),a)}:Nc={};var kb={loadingContext:{requests:[],nextRequestId:0},isSyncFontLoadingSupported:function(){if(wc)return!1;var d=/Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(window.navigator.userAgent);return d&&14<=d[1]?!0:!1}(),bind:function(d,a){!wc||w("bind() shall be called from main thread");for(var b=
-[],c=[],e=0,f=d.length;e<f;e++){var g=d[e];if(!(g.attached||!1===g.loading)){g.attached=!0;var h=g.bindDOM();h&&(b.push(h),c.push(g))}}e=kb.queueLoadingCallback(a);0<b.length&&!this.isSyncFontLoadingSupported?kb.prepareFontLoadEvent(b,c,e):e.complete()},queueLoadingCallback:function(d){var a=kb.loadingContext,b={id:"pdfjs-font-loading-"+a.nextRequestId++,complete:function(){!b.end||w("completeRequest() cannot be called twice");for(b.end=Date.now();0<a.requests.length&&a.requests[0].end;){var c=a.requests.shift();
-setTimeout(c.callback,0)}},callback:d,started:Date.now()};a.requests.push(b);return b},prepareFontLoadEvent:function(d,a,b){var c=b.id;if(/^[\w\-]+$/.test(c)){for(var e=[],f=0,g=a.length;f<g;f++)e.push(a[f].loadedName);if(/^\w+$/.test(e.join(""))){var h=document.createElement("div");h.setAttribute("style","visibility: hidden;width: 10px; height: 10px;position: absolute; top: 0px; left: 0px;");for(var l="",f=0,g=e.length;f<g;++f)l+='<span style="font-family:'+e[f]+'">Hi</span>';h.innerHTML=l;document.body.appendChild(h);
-window.addEventListener("message",function m(e){if(e.data===c){e=0;for(var f=a.length;e<f;++e)a[e].loading=!1;b.complete();p&&document.body.removeChild(p);window.removeEventListener("message",m,!1)}},!1);h='<!DOCTYPE HTML><html><head><meta charset="utf-8"><style type="text/css">';f=0;for(g=d.length;f<g;++f)h+=d[f];h+='</style><script type="application/javascript">';h+=" window.onload = function fontLoaderOnload() {\n";h+=' parent.postMessage("'+c+'", "*");\n';h+=' window.location = "about:blank";\n';
-h+=" }";h+="\x3c/script></head><body>";f=0;for(g=e.length;f<g;++f)h+="<p style=\"font-family:'"+e[f]+"'\">Hi</p>";h+="</body></html>";if(1E6<h.length)window.setTimeout(function(){window.postMessage(c,"*")},2E3);else{var p=document.createElement("iframe");p.src="data:text/html,"+h;p.setAttribute("style","visibility: hidden;width: 10px; height: 10px;position: absolute; top: 0px; left: 0px;");document.body.appendChild(p)}}else w("Invalid font name(s): "+e.join())}else w("Invalid request id: "+c)}},
-rb=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,
-end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,
-end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,
-end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,
-end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},{begin:66688,end:66735},{begin:67584,end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,
-end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66E3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}],Oc=".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat".split(" "),
-Qb={"\u00a8":" \u0308","\u00af":" \u0304","\u00b4":" \u0301","\u00b5":"\u03bc","\u00b8":" \u0327","\u0132":"IJ","\u0133":"ij","\u013f":"L\u00b7","\u0140":"l\u00b7","\u0149":"\u02bcn","\u017f":"s","\u01c4":"D\u017d","\u01c5":"D\u017e","\u01c6":"d\u017e","\u01c7":"LJ","\u01c8":"Lj","\u01c9":"lj","\u01ca":"NJ","\u01cb":"Nj","\u01cc":"nj","\u01f1":"DZ","\u01f2":"Dz","\u01f3":"dz","\u02d8":" \u0306","\u02d9":" \u0307","\u02da":" \u030a","\u02db":" \u0328","\u02dc":" \u0303","\u02dd":" \u030b","\u037a":" \u0345",
-"\u0384":" \u0301","\u03d0":"\u03b2","\u03d1":"\u03b8","\u03d2":"\u03a5","\u03d5":"\u03c6","\u03d6":"\u03c0","\u03f0":"\u03ba","\u03f1":"\u03c1","\u03f2":"\u03c2","\u03f4":"\u0398","\u03f5":"\u03b5","\u03f9":"\u03a3","\u0587":"\u0565\u0582","\u0675":"\u0627\u0674","\u0676":"\u0648\u0674","\u0677":"\u06c7\u0674","\u0678":"\u064a\u0674","\u0e33":"\u0e4d\u0e32","\u0eb3":"\u0ecd\u0eb2","\u0edc":"\u0eab\u0e99","\u0edd":"\u0eab\u0ea1","\u0f77":"\u0fb2\u0f81","\u0f79":"\u0fb3\u0f81","\u1e9a":"a\u02be","\u1fbd":" \u0313",
-"\u1fbf":" \u0313","\u1fc0":" \u0342","\u1ffe":" \u0314","\u2002":" ","\u2003":" ","\u2004":" ","\u2005":" ","\u2006":" ","\u2008":" ","\u2009":" ","\u200a":" ","\u2017":" \u0333","\u2024":".","\u2025":"..","\u2026":"...","\u2033":"\u2032\u2032","\u2034":"\u2032\u2032\u2032","\u2036":"\u2035\u2035","\u2037":"\u2035\u2035\u2035","\u203c":"!!","\u203e":" \u0305","\u2047":"??","\u2048":"?!","\u2049":"!?","\u2057":"\u2032\u2032\u2032\u2032","\u205f":" ","\u20a8":"Rs","\u2100":"a/c","\u2101":"a/s","\u2103":"\u00b0C",
-"\u2105":"c/o","\u2106":"c/u","\u2107":"\u0190","\u2109":"\u00b0F","\u2116":"No","\u2121":"TEL","\u2135":"\u05d0","\u2136":"\u05d1","\u2137":"\u05d2","\u2138":"\u05d3","\u213b":"FAX","\u2160":"I","\u2161":"II","\u2162":"III","\u2163":"IV","\u2164":"V","\u2165":"VI","\u2166":"VII","\u2167":"VIII","\u2168":"IX","\u2169":"X","\u216a":"XI","\u216b":"XII","\u216c":"L","\u216d":"C","\u216e":"D","\u216f":"M","\u2170":"i","\u2171":"ii","\u2172":"iii","\u2173":"iv","\u2174":"v","\u2175":"vi","\u2176":"vii",
-"\u2177":"viii","\u2178":"ix","\u2179":"x","\u217a":"xi","\u217b":"xii","\u217c":"l","\u217d":"c","\u217e":"d","\u217f":"m","\u222c":"\u222b\u222b","\u222d":"\u222b\u222b\u222b","\u222f":"\u222e\u222e","\u2230":"\u222e\u222e\u222e","\u2474":"(1)","\u2475":"(2)","\u2476":"(3)","\u2477":"(4)","\u2478":"(5)","\u2479":"(6)","\u247a":"(7)","\u247b":"(8)","\u247c":"(9)","\u247d":"(10)","\u247e":"(11)","\u247f":"(12)","\u2480":"(13)","\u2481":"(14)","\u2482":"(15)","\u2483":"(16)","\u2484":"(17)","\u2485":"(18)",
-"\u2486":"(19)","\u2487":"(20)","\u2488":"1.","\u2489":"2.","\u248a":"3.","\u248b":"4.","\u248c":"5.","\u248d":"6.","\u248e":"7.","\u248f":"8.","\u2490":"9.","\u2491":"10.","\u2492":"11.","\u2493":"12.","\u2494":"13.","\u2495":"14.","\u2496":"15.","\u2497":"16.","\u2498":"17.","\u2499":"18.","\u249a":"19.","\u249b":"20.","\u249c":"(a)","\u249d":"(b)","\u249e":"(c)","\u249f":"(d)","\u24a0":"(e)","\u24a1":"(f)","\u24a2":"(g)","\u24a3":"(h)","\u24a4":"(i)","\u24a5":"(j)","\u24a6":"(k)","\u24a7":"(l)",
-"\u24a8":"(m)","\u24a9":"(n)","\u24aa":"(o)","\u24ab":"(p)","\u24ac":"(q)","\u24ad":"(r)","\u24ae":"(s)","\u24af":"(t)","\u24b0":"(u)","\u24b1":"(v)","\u24b2":"(w)","\u24b3":"(x)","\u24b4":"(y)","\u24b5":"(z)","\u2a0c":"\u222b\u222b\u222b\u222b","\u2a74":"::=","\u2a75":"==","\u2a76":"===","\u2e9f":"\u6bcd","\u2ef3":"\u9f9f","\u2f00":"\u4e00","\u2f01":"\u4e28","\u2f02":"\u4e36","\u2f03":"\u4e3f","\u2f04":"\u4e59","\u2f05":"\u4e85","\u2f06":"\u4e8c","\u2f07":"\u4ea0","\u2f08":"\u4eba","\u2f09":"\u513f",
-"\u2f0a":"\u5165","\u2f0b":"\u516b","\u2f0c":"\u5182","\u2f0d":"\u5196","\u2f0e":"\u51ab","\u2f0f":"\u51e0","\u2f10":"\u51f5","\u2f11":"\u5200","\u2f12":"\u529b","\u2f13":"\u52f9","\u2f14":"\u5315","\u2f15":"\u531a","\u2f16":"\u5338","\u2f17":"\u5341","\u2f18":"\u535c","\u2f19":"\u5369","\u2f1a":"\u5382","\u2f1b":"\u53b6","\u2f1c":"\u53c8","\u2f1d":"\u53e3","\u2f1e":"\u56d7","\u2f1f":"\u571f","\u2f20":"\u58eb","\u2f21":"\u5902","\u2f22":"\u590a","\u2f23":"\u5915","\u2f24":"\u5927","\u2f25":"\u5973",
-"\u2f26":"\u5b50","\u2f27":"\u5b80","\u2f28":"\u5bf8","\u2f29":"\u5c0f","\u2f2a":"\u5c22","\u2f2b":"\u5c38","\u2f2c":"\u5c6e","\u2f2d":"\u5c71","\u2f2e":"\u5ddb","\u2f2f":"\u5de5","\u2f30":"\u5df1","\u2f31":"\u5dfe","\u2f32":"\u5e72","\u2f33":"\u5e7a","\u2f34":"\u5e7f","\u2f35":"\u5ef4","\u2f36":"\u5efe","\u2f37":"\u5f0b","\u2f38":"\u5f13","\u2f39":"\u5f50","\u2f3a":"\u5f61","\u2f3b":"\u5f73","\u2f3c":"\u5fc3","\u2f3d":"\u6208","\u2f3e":"\u6236","\u2f3f":"\u624b","\u2f40":"\u652f","\u2f41":"\u6534",
-"\u2f42":"\u6587","\u2f43":"\u6597","\u2f44":"\u65a4","\u2f45":"\u65b9","\u2f46":"\u65e0","\u2f47":"\u65e5","\u2f48":"\u66f0","\u2f49":"\u6708","\u2f4a":"\u6728","\u2f4b":"\u6b20","\u2f4c":"\u6b62","\u2f4d":"\u6b79","\u2f4e":"\u6bb3","\u2f4f":"\u6bcb","\u2f50":"\u6bd4","\u2f51":"\u6bdb","\u2f52":"\u6c0f","\u2f53":"\u6c14","\u2f54":"\u6c34","\u2f55":"\u706b","\u2f56":"\u722a","\u2f57":"\u7236","\u2f58":"\u723b","\u2f59":"\u723f","\u2f5a":"\u7247","\u2f5b":"\u7259","\u2f5c":"\u725b","\u2f5d":"\u72ac",
-"\u2f5e":"\u7384","\u2f5f":"\u7389","\u2f60":"\u74dc","\u2f61":"\u74e6","\u2f62":"\u7518","\u2f63":"\u751f","\u2f64":"\u7528","\u2f65":"\u7530","\u2f66":"\u758b","\u2f67":"\u7592","\u2f68":"\u7676","\u2f69":"\u767d","\u2f6a":"\u76ae","\u2f6b":"\u76bf","\u2f6c":"\u76ee","\u2f6d":"\u77db","\u2f6e":"\u77e2","\u2f6f":"\u77f3","\u2f70":"\u793a","\u2f71":"\u79b8","\u2f72":"\u79be","\u2f73":"\u7a74","\u2f74":"\u7acb","\u2f75":"\u7af9","\u2f76":"\u7c73","\u2f77":"\u7cf8","\u2f78":"\u7f36","\u2f79":"\u7f51",
-"\u2f7a":"\u7f8a","\u2f7b":"\u7fbd","\u2f7c":"\u8001","\u2f7d":"\u800c","\u2f7e":"\u8012","\u2f7f":"\u8033","\u2f80":"\u807f","\u2f81":"\u8089","\u2f82":"\u81e3","\u2f83":"\u81ea","\u2f84":"\u81f3","\u2f85":"\u81fc","\u2f86":"\u820c","\u2f87":"\u821b","\u2f88":"\u821f","\u2f89":"\u826e","\u2f8a":"\u8272","\u2f8b":"\u8278","\u2f8c":"\u864d","\u2f8d":"\u866b","\u2f8e":"\u8840","\u2f8f":"\u884c","\u2f90":"\u8863","\u2f91":"\u897e","\u2f92":"\u898b","\u2f93":"\u89d2","\u2f94":"\u8a00","\u2f95":"\u8c37",
-"\u2f96":"\u8c46","\u2f97":"\u8c55","\u2f98":"\u8c78","\u2f99":"\u8c9d","\u2f9a":"\u8d64","\u2f9b":"\u8d70","\u2f9c":"\u8db3","\u2f9d":"\u8eab","\u2f9e":"\u8eca","\u2f9f":"\u8f9b","\u2fa0":"\u8fb0","\u2fa1":"\u8fb5","\u2fa2":"\u9091","\u2fa3":"\u9149","\u2fa4":"\u91c6","\u2fa5":"\u91cc","\u2fa6":"\u91d1","\u2fa7":"\u9577","\u2fa8":"\u9580","\u2fa9":"\u961c","\u2faa":"\u96b6","\u2fab":"\u96b9","\u2fac":"\u96e8","\u2fad":"\u9751","\u2fae":"\u975e","\u2faf":"\u9762","\u2fb0":"\u9769","\u2fb1":"\u97cb",
-"\u2fb2":"\u97ed","\u2fb3":"\u97f3","\u2fb4":"\u9801","\u2fb5":"\u98a8","\u2fb6":"\u98db","\u2fb7":"\u98df","\u2fb8":"\u9996","\u2fb9":"\u9999","\u2fba":"\u99ac","\u2fbb":"\u9aa8","\u2fbc":"\u9ad8","\u2fbd":"\u9adf","\u2fbe":"\u9b25","\u2fbf":"\u9b2f","\u2fc0":"\u9b32","\u2fc1":"\u9b3c","\u2fc2":"\u9b5a","\u2fc3":"\u9ce5","\u2fc4":"\u9e75","\u2fc5":"\u9e7f","\u2fc6":"\u9ea5","\u2fc7":"\u9ebb","\u2fc8":"\u9ec3","\u2fc9":"\u9ecd","\u2fca":"\u9ed1","\u2fcb":"\u9ef9","\u2fcc":"\u9efd","\u2fcd":"\u9f0e",
-"\u2fce":"\u9f13","\u2fcf":"\u9f20","\u2fd0":"\u9f3b","\u2fd1":"\u9f4a","\u2fd2":"\u9f52","\u2fd3":"\u9f8d","\u2fd4":"\u9f9c","\u2fd5":"\u9fa0","\u3036":"\u3012","\u3038":"\u5341","\u3039":"\u5344","\u303a":"\u5345","\u309b":" \u3099","\u309c":" \u309a","\u3131":"\u1100","\u3132":"\u1101","\u3133":"\u11aa","\u3134":"\u1102","\u3135":"\u11ac","\u3136":"\u11ad","\u3137":"\u1103","\u3138":"\u1104","\u3139":"\u1105","\u313a":"\u11b0","\u313b":"\u11b1","\u313c":"\u11b2","\u313d":"\u11b3","\u313e":"\u11b4",
-"\u313f":"\u11b5","\u3140":"\u111a","\u3141":"\u1106","\u3142":"\u1107","\u3143":"\u1108","\u3144":"\u1121","\u3145":"\u1109","\u3146":"\u110a","\u3147":"\u110b","\u3148":"\u110c","\u3149":"\u110d","\u314a":"\u110e","\u314b":"\u110f","\u314c":"\u1110","\u314d":"\u1111","\u314e":"\u1112","\u314f":"\u1161","\u3150":"\u1162","\u3151":"\u1163","\u3152":"\u1164","\u3153":"\u1165","\u3154":"\u1166","\u3155":"\u1167","\u3156":"\u1168","\u3157":"\u1169","\u3158":"\u116a","\u3159":"\u116b","\u315a":"\u116c",
-"\u315b":"\u116d","\u315c":"\u116e","\u315d":"\u116f","\u315e":"\u1170","\u315f":"\u1171","\u3160":"\u1172","\u3161":"\u1173","\u3162":"\u1174","\u3163":"\u1175","\u3164":"\u1160","\u3165":"\u1114","\u3166":"\u1115","\u3167":"\u11c7","\u3168":"\u11c8","\u3169":"\u11cc","\u316a":"\u11ce","\u316b":"\u11d3","\u316c":"\u11d7","\u316d":"\u11d9","\u316e":"\u111c","\u316f":"\u11dd","\u3170":"\u11df","\u3171":"\u111d","\u3172":"\u111e","\u3173":"\u1120","\u3174":"\u1122","\u3175":"\u1123","\u3176":"\u1127",
-"\u3177":"\u1129","\u3178":"\u112b","\u3179":"\u112c","\u317a":"\u112d","\u317b":"\u112e","\u317c":"\u112f","\u317d":"\u1132","\u317e":"\u1136","\u317f":"\u1140","\u3180":"\u1147","\u3181":"\u114c","\u3182":"\u11f1","\u3183":"\u11f2","\u3184":"\u1157","\u3185":"\u1158","\u3186":"\u1159","\u3187":"\u1184","\u3188":"\u1185","\u3189":"\u1188","\u318a":"\u1191","\u318b":"\u1192","\u318c":"\u1194","\u318d":"\u119e","\u318e":"\u11a1","\u3200":"(\u1100)","\u3201":"(\u1102)","\u3202":"(\u1103)","\u3203":"(\u1105)",
-"\u3204":"(\u1106)","\u3205":"(\u1107)","\u3206":"(\u1109)","\u3207":"(\u110b)","\u3208":"(\u110c)","\u3209":"(\u110e)","\u320a":"(\u110f)","\u320b":"(\u1110)","\u320c":"(\u1111)","\u320d":"(\u1112)","\u320e":"(\u1100\u1161)","\u320f":"(\u1102\u1161)","\u3210":"(\u1103\u1161)","\u3211":"(\u1105\u1161)","\u3212":"(\u1106\u1161)","\u3213":"(\u1107\u1161)","\u3214":"(\u1109\u1161)","\u3215":"(\u110b\u1161)","\u3216":"(\u110c\u1161)","\u3217":"(\u110e\u1161)","\u3218":"(\u110f\u1161)","\u3219":"(\u1110\u1161)",
-"\u321a":"(\u1111\u1161)","\u321b":"(\u1112\u1161)","\u321c":"(\u110c\u116e)","\u321d":"(\u110b\u1169\u110c\u1165\u11ab)","\u321e":"(\u110b\u1169\u1112\u116e)","\u3220":"(\u4e00)","\u3221":"(\u4e8c)","\u3222":"(\u4e09)","\u3223":"(\u56db)","\u3224":"(\u4e94)","\u3225":"(\u516d)","\u3226":"(\u4e03)","\u3227":"(\u516b)","\u3228":"(\u4e5d)","\u3229":"(\u5341)","\u322a":"(\u6708)","\u322b":"(\u706b)","\u322c":"(\u6c34)","\u322d":"(\u6728)","\u322e":"(\u91d1)","\u322f":"(\u571f)","\u3230":"(\u65e5)","\u3231":"(\u682a)",
-"\u3232":"(\u6709)","\u3233":"(\u793e)","\u3234":"(\u540d)","\u3235":"(\u7279)","\u3236":"(\u8ca1)","\u3237":"(\u795d)","\u3238":"(\u52b4)","\u3239":"(\u4ee3)","\u323a":"(\u547c)","\u323b":"(\u5b66)","\u323c":"(\u76e3)","\u323d":"(\u4f01)","\u323e":"(\u8cc7)","\u323f":"(\u5354)","\u3240":"(\u796d)","\u3241":"(\u4f11)","\u3242":"(\u81ea)","\u3243":"(\u81f3)","\u32c0":"1\u6708","\u32c1":"2\u6708","\u32c2":"3\u6708","\u32c3":"4\u6708","\u32c4":"5\u6708","\u32c5":"6\u6708","\u32c6":"7\u6708","\u32c7":"8\u6708",
-"\u32c8":"9\u6708","\u32c9":"10\u6708","\u32ca":"11\u6708","\u32cb":"12\u6708","\u3358":"0\u70b9","\u3359":"1\u70b9","\u335a":"2\u70b9","\u335b":"3\u70b9","\u335c":"4\u70b9","\u335d":"5\u70b9","\u335e":"6\u70b9","\u335f":"7\u70b9","\u3360":"8\u70b9","\u3361":"9\u70b9","\u3362":"10\u70b9","\u3363":"11\u70b9","\u3364":"12\u70b9","\u3365":"13\u70b9","\u3366":"14\u70b9","\u3367":"15\u70b9","\u3368":"16\u70b9","\u3369":"17\u70b9","\u336a":"18\u70b9","\u336b":"19\u70b9","\u336c":"20\u70b9","\u336d":"21\u70b9",
-"\u336e":"22\u70b9","\u336f":"23\u70b9","\u3370":"24\u70b9","\u33e0":"1\u65e5","\u33e1":"2\u65e5","\u33e2":"3\u65e5","\u33e3":"4\u65e5","\u33e4":"5\u65e5","\u33e5":"6\u65e5","\u33e6":"7\u65e5","\u33e7":"8\u65e5","\u33e8":"9\u65e5","\u33e9":"10\u65e5","\u33ea":"11\u65e5","\u33eb":"12\u65e5","\u33ec":"13\u65e5","\u33ed":"14\u65e5","\u33ee":"15\u65e5","\u33ef":"16\u65e5","\u33f0":"17\u65e5","\u33f1":"18\u65e5","\u33f2":"19\u65e5","\u33f3":"20\u65e5","\u33f4":"21\u65e5","\u33f5":"22\u65e5","\u33f6":"23\u65e5",
-"\u33f7":"24\u65e5","\u33f8":"25\u65e5","\u33f9":"26\u65e5","\u33fa":"27\u65e5","\u33fb":"28\u65e5","\u33fc":"29\u65e5","\u33fd":"30\u65e5","\u33fe":"31\u65e5","\ufb00":"ff","\ufb01":"fi","\ufb02":"fl","\ufb03":"ffi","\ufb04":"ffl","\ufb05":"\u017ft","\ufb06":"st","\ufb13":"\u0574\u0576","\ufb14":"\u0574\u0565","\ufb15":"\u0574\u056b","\ufb16":"\u057e\u0576","\ufb17":"\u0574\u056d","\ufb4f":"\u05d0\u05dc","\ufb50":"\u0671","\ufb51":"\u0671","\ufb52":"\u067b","\ufb53":"\u067b","\ufb54":"\u067b","\ufb55":"\u067b",
-"\ufb56":"\u067e","\ufb57":"\u067e","\ufb58":"\u067e","\ufb59":"\u067e","\ufb5a":"\u0680","\ufb5b":"\u0680","\ufb5c":"\u0680","\ufb5d":"\u0680","\ufb5e":"\u067a","\ufb5f":"\u067a","\ufb60":"\u067a","\ufb61":"\u067a","\ufb62":"\u067f","\ufb63":"\u067f","\ufb64":"\u067f","\ufb65":"\u067f","\ufb66":"\u0679","\ufb67":"\u0679","\ufb68":"\u0679","\ufb69":"\u0679","\ufb6a":"\u06a4","\ufb6b":"\u06a4","\ufb6c":"\u06a4","\ufb6d":"\u06a4","\ufb6e":"\u06a6","\ufb6f":"\u06a6","\ufb70":"\u06a6","\ufb71":"\u06a6",
-"\ufb72":"\u0684","\ufb73":"\u0684","\ufb74":"\u0684","\ufb75":"\u0684","\ufb76":"\u0683","\ufb77":"\u0683","\ufb78":"\u0683","\ufb79":"\u0683","\ufb7a":"\u0686","\ufb7b":"\u0686","\ufb7c":"\u0686","\ufb7d":"\u0686","\ufb7e":"\u0687","\ufb7f":"\u0687","\ufb80":"\u0687","\ufb81":"\u0687","\ufb82":"\u068d","\ufb83":"\u068d","\ufb84":"\u068c","\ufb85":"\u068c","\ufb86":"\u068e","\ufb87":"\u068e","\ufb88":"\u0688","\ufb89":"\u0688","\ufb8a":"\u0698","\ufb8b":"\u0698","\ufb8c":"\u0691","\ufb8d":"\u0691",
-"\ufb8e":"\u06a9","\ufb8f":"\u06a9","\ufb90":"\u06a9","\ufb91":"\u06a9","\ufb92":"\u06af","\ufb93":"\u06af","\ufb94":"\u06af","\ufb95":"\u06af","\ufb96":"\u06b3","\ufb97":"\u06b3","\ufb98":"\u06b3","\ufb99":"\u06b3","\ufb9a":"\u06b1","\ufb9b":"\u06b1","\ufb9c":"\u06b1","\ufb9d":"\u06b1","\ufb9e":"\u06ba","\ufb9f":"\u06ba","\ufba0":"\u06bb","\ufba1":"\u06bb","\ufba2":"\u06bb","\ufba3":"\u06bb","\ufba4":"\u06c0","\ufba5":"\u06c0","\ufba6":"\u06c1","\ufba7":"\u06c1","\ufba8":"\u06c1","\ufba9":"\u06c1",
-"\ufbaa":"\u06be","\ufbab":"\u06be","\ufbac":"\u06be","\ufbad":"\u06be","\ufbae":"\u06d2","\ufbaf":"\u06d2","\ufbb0":"\u06d3","\ufbb1":"\u06d3","\ufbd3":"\u06ad","\ufbd4":"\u06ad","\ufbd5":"\u06ad","\ufbd6":"\u06ad","\ufbd7":"\u06c7","\ufbd8":"\u06c7","\ufbd9":"\u06c6","\ufbda":"\u06c6","\ufbdb":"\u06c8","\ufbdc":"\u06c8","\ufbdd":"\u0677","\ufbde":"\u06cb","\ufbdf":"\u06cb","\ufbe0":"\u06c5","\ufbe1":"\u06c5","\ufbe2":"\u06c9","\ufbe3":"\u06c9","\ufbe4":"\u06d0","\ufbe5":"\u06d0","\ufbe6":"\u06d0",
-"\ufbe7":"\u06d0","\ufbe8":"\u0649","\ufbe9":"\u0649","\ufbea":"\u0626\u0627","\ufbeb":"\u0626\u0627","\ufbec":"\u0626\u06d5","\ufbed":"\u0626\u06d5","\ufbee":"\u0626\u0648","\ufbef":"\u0626\u0648","\ufbf0":"\u0626\u06c7","\ufbf1":"\u0626\u06c7","\ufbf2":"\u0626\u06c6","\ufbf3":"\u0626\u06c6","\ufbf4":"\u0626\u06c8","\ufbf5":"\u0626\u06c8","\ufbf6":"\u0626\u06d0","\ufbf7":"\u0626\u06d0","\ufbf8":"\u0626\u06d0","\ufbf9":"\u0626\u0649","\ufbfa":"\u0626\u0649","\ufbfb":"\u0626\u0649","\ufbfc":"\u06cc",
-"\ufbfd":"\u06cc","\ufbfe":"\u06cc","\ufbff":"\u06cc","\ufc00":"\u0626\u062c","\ufc01":"\u0626\u062d","\ufc02":"\u0626\u0645","\ufc03":"\u0626\u0649","\ufc04":"\u0626\u064a","\ufc05":"\u0628\u062c","\ufc06":"\u0628\u062d","\ufc07":"\u0628\u062e","\ufc08":"\u0628\u0645","\ufc09":"\u0628\u0649","\ufc0a":"\u0628\u064a","\ufc0b":"\u062a\u062c","\ufc0c":"\u062a\u062d","\ufc0d":"\u062a\u062e","\ufc0e":"\u062a\u0645","\ufc0f":"\u062a\u0649","\ufc10":"\u062a\u064a","\ufc11":"\u062b\u062c","\ufc12":"\u062b\u0645",
-"\ufc13":"\u062b\u0649","\ufc14":"\u062b\u064a","\ufc15":"\u062c\u062d","\ufc16":"\u062c\u0645","\ufc17":"\u062d\u062c","\ufc18":"\u062d\u0645","\ufc19":"\u062e\u062c","\ufc1a":"\u062e\u062d","\ufc1b":"\u062e\u0645","\ufc1c":"\u0633\u062c","\ufc1d":"\u0633\u062d","\ufc1e":"\u0633\u062e","\ufc1f":"\u0633\u0645","\ufc20":"\u0635\u062d","\ufc21":"\u0635\u0645","\ufc22":"\u0636\u062c","\ufc23":"\u0636\u062d","\ufc24":"\u0636\u062e","\ufc25":"\u0636\u0645","\ufc26":"\u0637\u062d","\ufc27":"\u0637\u0645",
-"\ufc28":"\u0638\u0645","\ufc29":"\u0639\u062c","\ufc2a":"\u0639\u0645","\ufc2b":"\u063a\u062c","\ufc2c":"\u063a\u0645","\ufc2d":"\u0641\u062c","\ufc2e":"\u0641\u062d","\ufc2f":"\u0641\u062e","\ufc30":"\u0641\u0645","\ufc31":"\u0641\u0649","\ufc32":"\u0641\u064a","\ufc33":"\u0642\u062d","\ufc34":"\u0642\u0645","\ufc35":"\u0642\u0649","\ufc36":"\u0642\u064a","\ufc37":"\u0643\u0627","\ufc38":"\u0643\u062c","\ufc39":"\u0643\u062d","\ufc3a":"\u0643\u062e","\ufc3b":"\u0643\u0644","\ufc3c":"\u0643\u0645",
-"\ufc3d":"\u0643\u0649","\ufc3e":"\u0643\u064a","\ufc3f":"\u0644\u062c","\ufc40":"\u0644\u062d","\ufc41":"\u0644\u062e","\ufc42":"\u0644\u0645","\ufc43":"\u0644\u0649","\ufc44":"\u0644\u064a","\ufc45":"\u0645\u062c","\ufc46":"\u0645\u062d","\ufc47":"\u0645\u062e","\ufc48":"\u0645\u0645","\ufc49":"\u0645\u0649","\ufc4a":"\u0645\u064a","\ufc4b":"\u0646\u062c","\ufc4c":"\u0646\u062d","\ufc4d":"\u0646\u062e","\ufc4e":"\u0646\u0645","\ufc4f":"\u0646\u0649","\ufc50":"\u0646\u064a","\ufc51":"\u0647\u062c",
-"\ufc52":"\u0647\u0645","\ufc53":"\u0647\u0649","\ufc54":"\u0647\u064a","\ufc55":"\u064a\u062c","\ufc56":"\u064a\u062d","\ufc57":"\u064a\u062e","\ufc58":"\u064a\u0645","\ufc59":"\u064a\u0649","\ufc5a":"\u064a\u064a","\ufc5b":"\u0630\u0670","\ufc5c":"\u0631\u0670","\ufc5d":"\u0649\u0670","\ufc5e":" \u064c\u0651","\ufc5f":" \u064d\u0651","\ufc60":" \u064e\u0651","\ufc61":" \u064f\u0651","\ufc62":" \u0650\u0651","\ufc63":" \u0651\u0670","\ufc64":"\u0626\u0631","\ufc65":"\u0626\u0632","\ufc66":"\u0626\u0645",
-"\ufc67":"\u0626\u0646","\ufc68":"\u0626\u0649","\ufc69":"\u0626\u064a","\ufc6a":"\u0628\u0631","\ufc6b":"\u0628\u0632","\ufc6c":"\u0628\u0645","\ufc6d":"\u0628\u0646","\ufc6e":"\u0628\u0649","\ufc6f":"\u0628\u064a","\ufc70":"\u062a\u0631","\ufc71":"\u062a\u0632","\ufc72":"\u062a\u0645","\ufc73":"\u062a\u0646","\ufc74":"\u062a\u0649","\ufc75":"\u062a\u064a","\ufc76":"\u062b\u0631","\ufc77":"\u062b\u0632","\ufc78":"\u062b\u0645","\ufc79":"\u062b\u0646","\ufc7a":"\u062b\u0649","\ufc7b":"\u062b\u064a",
-"\ufc7c":"\u0641\u0649","\ufc7d":"\u0641\u064a","\ufc7e":"\u0642\u0649","\ufc7f":"\u0642\u064a","\ufc80":"\u0643\u0627","\ufc81":"\u0643\u0644","\ufc82":"\u0643\u0645","\ufc83":"\u0643\u0649","\ufc84":"\u0643\u064a","\ufc85":"\u0644\u0645","\ufc86":"\u0644\u0649","\ufc87":"\u0644\u064a","\ufc88":"\u0645\u0627","\ufc89":"\u0645\u0645","\ufc8a":"\u0646\u0631","\ufc8b":"\u0646\u0632","\ufc8c":"\u0646\u0645","\ufc8d":"\u0646\u0646","\ufc8e":"\u0646\u0649","\ufc8f":"\u0646\u064a","\ufc90":"\u0649\u0670",
-"\ufc91":"\u064a\u0631","\ufc92":"\u064a\u0632","\ufc93":"\u064a\u0645","\ufc94":"\u064a\u0646","\ufc95":"\u064a\u0649","\ufc96":"\u064a\u064a","\ufc97":"\u0626\u062c","\ufc98":"\u0626\u062d","\ufc99":"\u0626\u062e","\ufc9a":"\u0626\u0645","\ufc9b":"\u0626\u0647","\ufc9c":"\u0628\u062c","\ufc9d":"\u0628\u062d","\ufc9e":"\u0628\u062e","\ufc9f":"\u0628\u0645","\ufca0":"\u0628\u0647","\ufca1":"\u062a\u062c","\ufca2":"\u062a\u062d","\ufca3":"\u062a\u062e","\ufca4":"\u062a\u0645","\ufca5":"\u062a\u0647",
-"\ufca6":"\u062b\u0645","\ufca7":"\u062c\u062d","\ufca8":"\u062c\u0645","\ufca9":"\u062d\u062c","\ufcaa":"\u062d\u0645","\ufcab":"\u062e\u062c","\ufcac":"\u062e\u0645","\ufcad":"\u0633\u062c","\ufcae":"\u0633\u062d","\ufcaf":"\u0633\u062e","\ufcb0":"\u0633\u0645","\ufcb1":"\u0635\u062d","\ufcb2":"\u0635\u062e","\ufcb3":"\u0635\u0645","\ufcb4":"\u0636\u062c","\ufcb5":"\u0636\u062d","\ufcb6":"\u0636\u062e","\ufcb7":"\u0636\u0645","\ufcb8":"\u0637\u062d","\ufcb9":"\u0638\u0645","\ufcba":"\u0639\u062c",
-"\ufcbb":"\u0639\u0645","\ufcbc":"\u063a\u062c","\ufcbd":"\u063a\u0645","\ufcbe":"\u0641\u062c","\ufcbf":"\u0641\u062d","\ufcc0":"\u0641\u062e","\ufcc1":"\u0641\u0645","\ufcc2":"\u0642\u062d","\ufcc3":"\u0642\u0645","\ufcc4":"\u0643\u062c","\ufcc5":"\u0643\u062d","\ufcc6":"\u0643\u062e","\ufcc7":"\u0643\u0644","\ufcc8":"\u0643\u0645","\ufcc9":"\u0644\u062c","\ufcca":"\u0644\u062d","\ufccb":"\u0644\u062e","\ufccc":"\u0644\u0645","\ufccd":"\u0644\u0647","\ufcce":"\u0645\u062c","\ufccf":"\u0645\u062d",
-"\ufcd0":"\u0645\u062e","\ufcd1":"\u0645\u0645","\ufcd2":"\u0646\u062c","\ufcd3":"\u0646\u062d","\ufcd4":"\u0646\u062e","\ufcd5":"\u0646\u0645","\ufcd6":"\u0646\u0647","\ufcd7":"\u0647\u062c","\ufcd8":"\u0647\u0645","\ufcd9":"\u0647\u0670","\ufcda":"\u064a\u062c","\ufcdb":"\u064a\u062d","\ufcdc":"\u064a\u062e","\ufcdd":"\u064a\u0645","\ufcde":"\u064a\u0647","\ufcdf":"\u0626\u0645","\ufce0":"\u0626\u0647","\ufce1":"\u0628\u0645","\ufce2":"\u0628\u0647","\ufce3":"\u062a\u0645","\ufce4":"\u062a\u0647",
-"\ufce5":"\u062b\u0645","\ufce6":"\u062b\u0647","\ufce7":"\u0633\u0645","\ufce8":"\u0633\u0647","\ufce9":"\u0634\u0645","\ufcea":"\u0634\u0647","\ufceb":"\u0643\u0644","\ufcec":"\u0643\u0645","\ufced":"\u0644\u0645","\ufcee":"\u0646\u0645","\ufcef":"\u0646\u0647","\ufcf0":"\u064a\u0645","\ufcf1":"\u064a\u0647","\ufcf2":"\u0640\u064e\u0651","\ufcf3":"\u0640\u064f\u0651","\ufcf4":"\u0640\u0650\u0651","\ufcf5":"\u0637\u0649","\ufcf6":"\u0637\u064a","\ufcf7":"\u0639\u0649","\ufcf8":"\u0639\u064a","\ufcf9":"\u063a\u0649",
-"\ufcfa":"\u063a\u064a","\ufcfb":"\u0633\u0649","\ufcfc":"\u0633\u064a","\ufcfd":"\u0634\u0649","\ufcfe":"\u0634\u064a","\ufcff":"\u062d\u0649","\ufd00":"\u062d\u064a","\ufd01":"\u062c\u0649","\ufd02":"\u062c\u064a","\ufd03":"\u062e\u0649","\ufd04":"\u062e\u064a","\ufd05":"\u0635\u0649","\ufd06":"\u0635\u064a","\ufd07":"\u0636\u0649","\ufd08":"\u0636\u064a","\ufd09":"\u0634\u062c","\ufd0a":"\u0634\u062d","\ufd0b":"\u0634\u062e","\ufd0c":"\u0634\u0645","\ufd0d":"\u0634\u0631","\ufd0e":"\u0633\u0631",
-"\ufd0f":"\u0635\u0631","\ufd10":"\u0636\u0631","\ufd11":"\u0637\u0649","\ufd12":"\u0637\u064a","\ufd13":"\u0639\u0649","\ufd14":"\u0639\u064a","\ufd15":"\u063a\u0649","\ufd16":"\u063a\u064a","\ufd17":"\u0633\u0649","\ufd18":"\u0633\u064a","\ufd19":"\u0634\u0649","\ufd1a":"\u0634\u064a","\ufd1b":"\u062d\u0649","\ufd1c":"\u062d\u064a","\ufd1d":"\u062c\u0649","\ufd1e":"\u062c\u064a","\ufd1f":"\u062e\u0649","\ufd20":"\u062e\u064a","\ufd21":"\u0635\u0649","\ufd22":"\u0635\u064a","\ufd23":"\u0636\u0649",
-"\ufd24":"\u0636\u064a","\ufd25":"\u0634\u062c","\ufd26":"\u0634\u062d","\ufd27":"\u0634\u062e","\ufd28":"\u0634\u0645","\ufd29":"\u0634\u0631","\ufd2a":"\u0633\u0631","\ufd2b":"\u0635\u0631","\ufd2c":"\u0636\u0631","\ufd2d":"\u0634\u062c","\ufd2e":"\u0634\u062d","\ufd2f":"\u0634\u062e","\ufd30":"\u0634\u0645","\ufd31":"\u0633\u0647","\ufd32":"\u0634\u0647","\ufd33":"\u0637\u0645","\ufd34":"\u0633\u062c","\ufd35":"\u0633\u062d","\ufd36":"\u0633\u062e","\ufd37":"\u0634\u062c","\ufd38":"\u0634\u062d",
-"\ufd39":"\u0634\u062e","\ufd3a":"\u0637\u0645","\ufd3b":"\u0638\u0645","\ufd3c":"\u0627\u064b","\ufd3d":"\u0627\u064b","\ufd50":"\u062a\u062c\u0645","\ufd51":"\u062a\u062d\u062c","\ufd52":"\u062a\u062d\u062c","\ufd53":"\u062a\u062d\u0645","\ufd54":"\u062a\u062e\u0645","\ufd55":"\u062a\u0645\u062c","\ufd56":"\u062a\u0645\u062d","\ufd57":"\u062a\u0645\u062e","\ufd58":"\u062c\u0645\u062d","\ufd59":"\u062c\u0645\u062d","\ufd5a":"\u062d\u0645\u064a","\ufd5b":"\u062d\u0645\u0649","\ufd5c":"\u0633\u062d\u062c",
-"\ufd5d":"\u0633\u062c\u062d","\ufd5e":"\u0633\u062c\u0649","\ufd5f":"\u0633\u0645\u062d","\ufd60":"\u0633\u0645\u062d","\ufd61":"\u0633\u0645\u062c","\ufd62":"\u0633\u0645\u0645","\ufd63":"\u0633\u0645\u0645","\ufd64":"\u0635\u062d\u062d","\ufd65":"\u0635\u062d\u062d","\ufd66":"\u0635\u0645\u0645","\ufd67":"\u0634\u062d\u0645","\ufd68":"\u0634\u062d\u0645","\ufd69":"\u0634\u062c\u064a","\ufd6a":"\u0634\u0645\u062e","\ufd6b":"\u0634\u0645\u062e","\ufd6c":"\u0634\u0645\u0645","\ufd6d":"\u0634\u0645\u0645",
-"\ufd6e":"\u0636\u062d\u0649","\ufd6f":"\u0636\u062e\u0645","\ufd70":"\u0636\u062e\u0645","\ufd71":"\u0637\u0645\u062d","\ufd72":"\u0637\u0645\u062d","\ufd73":"\u0637\u0645\u0645","\ufd74":"\u0637\u0645\u064a","\ufd75":"\u0639\u062c\u0645","\ufd76":"\u0639\u0645\u0645","\ufd77":"\u0639\u0645\u0645","\ufd78":"\u0639\u0645\u0649","\ufd79":"\u063a\u0645\u0645","\ufd7a":"\u063a\u0645\u064a","\ufd7b":"\u063a\u0645\u0649","\ufd7c":"\u0641\u062e\u0645","\ufd7d":"\u0641\u062e\u0645","\ufd7e":"\u0642\u0645\u062d",
-"\ufd7f":"\u0642\u0645\u0645","\ufd80":"\u0644\u062d\u0645","\ufd81":"\u0644\u062d\u064a","\ufd82":"\u0644\u062d\u0649","\ufd83":"\u0644\u062c\u062c","\ufd84":"\u0644\u062c\u062c","\ufd85":"\u0644\u062e\u0645","\ufd86":"\u0644\u062e\u0645","\ufd87":"\u0644\u0645\u062d","\ufd88":"\u0644\u0645\u062d","\ufd89":"\u0645\u062d\u062c","\ufd8a":"\u0645\u062d\u0645","\ufd8b":"\u0645\u062d\u064a","\ufd8c":"\u0645\u062c\u062d","\ufd8d":"\u0645\u062c\u0645","\ufd8e":"\u0645\u062e\u062c","\ufd8f":"\u0645\u062e\u0645",
-"\ufd92":"\u0645\u062c\u062e","\ufd93":"\u0647\u0645\u062c","\ufd94":"\u0647\u0645\u0645","\ufd95":"\u0646\u062d\u0645","\ufd96":"\u0646\u062d\u0649","\ufd97":"\u0646\u062c\u0645","\ufd98":"\u0646\u062c\u0645","\ufd99":"\u0646\u062c\u0649","\ufd9a":"\u0646\u0645\u064a","\ufd9b":"\u0646\u0645\u0649","\ufd9c":"\u064a\u0645\u0645","\ufd9d":"\u064a\u0645\u0645","\ufd9e":"\u0628\u062e\u064a","\ufd9f":"\u062a\u062c\u064a","\ufda0":"\u062a\u062c\u0649","\ufda1":"\u062a\u062e\u064a","\ufda2":"\u062a\u062e\u0649",
-"\ufda3":"\u062a\u0645\u064a","\ufda4":"\u062a\u0645\u0649","\ufda5":"\u062c\u0645\u064a","\ufda6":"\u062c\u062d\u0649","\ufda7":"\u062c\u0645\u0649","\ufda8":"\u0633\u062e\u0649","\ufda9":"\u0635\u062d\u064a","\ufdaa":"\u0634\u062d\u064a","\ufdab":"\u0636\u062d\u064a","\ufdac":"\u0644\u062c\u064a","\ufdad":"\u0644\u0645\u064a","\ufdae":"\u064a\u062d\u064a","\ufdaf":"\u064a\u062c\u064a","\ufdb0":"\u064a\u0645\u064a","\ufdb1":"\u0645\u0645\u064a","\ufdb2":"\u0642\u0645\u064a","\ufdb3":"\u0646\u062d\u064a",
-"\ufdb4":"\u0642\u0645\u062d","\ufdb5":"\u0644\u062d\u0645","\ufdb6":"\u0639\u0645\u064a","\ufdb7":"\u0643\u0645\u064a","\ufdb8":"\u0646\u062c\u062d","\ufdb9":"\u0645\u062e\u064a","\ufdba":"\u0644\u062c\u0645","\ufdbb":"\u0643\u0645\u0645","\ufdbc":"\u0644\u062c\u0645","\ufdbd":"\u0646\u062c\u062d","\ufdbe":"\u062c\u062d\u064a","\ufdbf":"\u062d\u062c\u064a","\ufdc0":"\u0645\u062c\u064a","\ufdc1":"\u0641\u0645\u064a","\ufdc2":"\u0628\u062d\u064a","\ufdc3":"\u0643\u0645\u0645","\ufdc4":"\u0639\u062c\u0645",
-"\ufdc5":"\u0635\u0645\u0645","\ufdc6":"\u0633\u062e\u064a","\ufdc7":"\u0646\u062c\u064a","\ufe49":"\u203e","\ufe4a":"\u203e","\ufe4b":"\u203e","\ufe4c":"\u203e","\ufe4d":"_","\ufe4e":"_","\ufe4f":"_","\ufe80":"\u0621","\ufe81":"\u0622","\ufe82":"\u0622","\ufe83":"\u0623","\ufe84":"\u0623","\ufe85":"\u0624","\ufe86":"\u0624","\ufe87":"\u0625","\ufe88":"\u0625","\ufe89":"\u0626","\ufe8a":"\u0626","\ufe8b":"\u0626","\ufe8c":"\u0626","\ufe8d":"\u0627","\ufe8e":"\u0627","\ufe8f":"\u0628","\ufe90":"\u0628",
-"\ufe91":"\u0628","\ufe92":"\u0628","\ufe93":"\u0629","\ufe94":"\u0629","\ufe95":"\u062a","\ufe96":"\u062a","\ufe97":"\u062a","\ufe98":"\u062a","\ufe99":"\u062b","\ufe9a":"\u062b","\ufe9b":"\u062b","\ufe9c":"\u062b","\ufe9d":"\u062c","\ufe9e":"\u062c","\ufe9f":"\u062c","\ufea0":"\u062c","\ufea1":"\u062d","\ufea2":"\u062d","\ufea3":"\u062d","\ufea4":"\u062d","\ufea5":"\u062e","\ufea6":"\u062e","\ufea7":"\u062e","\ufea8":"\u062e","\ufea9":"\u062f","\ufeaa":"\u062f","\ufeab":"\u0630","\ufeac":"\u0630",
-"\ufead":"\u0631","\ufeae":"\u0631","\ufeaf":"\u0632","\ufeb0":"\u0632","\ufeb1":"\u0633","\ufeb2":"\u0633","\ufeb3":"\u0633","\ufeb4":"\u0633","\ufeb5":"\u0634","\ufeb6":"\u0634","\ufeb7":"\u0634","\ufeb8":"\u0634","\ufeb9":"\u0635","\ufeba":"\u0635","\ufebb":"\u0635","\ufebc":"\u0635","\ufebd":"\u0636","\ufebe":"\u0636","\ufebf":"\u0636","\ufec0":"\u0636","\ufec1":"\u0637","\ufec2":"\u0637","\ufec3":"\u0637","\ufec4":"\u0637","\ufec5":"\u0638","\ufec6":"\u0638","\ufec7":"\u0638","\ufec8":"\u0638",
-"\ufec9":"\u0639","\ufeca":"\u0639","\ufecb":"\u0639","\ufecc":"\u0639","\ufecd":"\u063a","\ufece":"\u063a","\ufecf":"\u063a","\ufed0":"\u063a","\ufed1":"\u0641","\ufed2":"\u0641","\ufed3":"\u0641","\ufed4":"\u0641","\ufed5":"\u0642","\ufed6":"\u0642","\ufed7":"\u0642","\ufed8":"\u0642","\ufed9":"\u0643","\ufeda":"\u0643","\ufedb":"\u0643","\ufedc":"\u0643","\ufedd":"\u0644","\ufede":"\u0644","\ufedf":"\u0644","\ufee0":"\u0644","\ufee1":"\u0645","\ufee2":"\u0645","\ufee3":"\u0645","\ufee4":"\u0645",
-"\ufee5":"\u0646","\ufee6":"\u0646","\ufee7":"\u0646","\ufee8":"\u0646","\ufee9":"\u0647","\ufeea":"\u0647","\ufeeb":"\u0647","\ufeec":"\u0647","\ufeed":"\u0648","\ufeee":"\u0648","\ufeef":"\u0649","\ufef0":"\u0649","\ufef1":"\u064a","\ufef2":"\u064a","\ufef3":"\u064a","\ufef4":"\u064a","\ufef5":"\u0644\u0622","\ufef6":"\u0644\u0622","\ufef7":"\u0644\u0623","\ufef8":"\u0644\u0623","\ufef9":"\u0644\u0625","\ufefa":"\u0644\u0625","\ufefb":"\u0644\u0627","\ufefc":"\u0644\u0627"},Wb=function(){function d(a,
-c,b){if(1===arguments.length){var e=arguments[0],f;for(f in e)this[f]=e[f]}else if(this.name=a,this.loadedName=b.loadedName,this.loadCharProcs=this.coded=b.coded,this.sizes=[],f=a.split("+"),f=1<f.length?f[1]:f[0],f.split(/[-,_]/g),this.isSerifFont=!!(b.flags&ya.Serif),this.isSymbolicFont=!!(b.flags&ya.Symbolic),this.isMonospace=!!(b.flags&ya.FixedPitch),this.type=f=b.type,this.fallbackName=this.isMonospace?"monospace":this.isSerifFont?"serif":"sans-serif",this.differences=b.differences,this.widths=
-b.widths,this.defaultWidth=b.defaultWidth,this.composite=b.composite,this.wideChars=b.wideChars,this.hasEncoding=b.hasEncoding,this.fontMatrix=b.fontMatrix,"Type3"==b.type)this.encoding=b.baseEncoding;else{this.loadCidToUnicode(b);this.cidEncoding=b.cidEncoding;if(this.vertical=b.vertical)this.vmetrics=b.vmetrics,this.defaultVMetrics=b.defaultVMetrics;b.toUnicode&&0<b.toUnicode.length?this.toUnicode=b.toUnicode:this.rebuildToUnicode(b);this.toFontChar=this.buildToFontChar(this.toUnicode);if(c){var d=
-b.subtype;"Type1C"==d&&("Type1"!=f&&"MMType1"!=f)&&(f="Type1");"CIDFontType0C"==d&&"CIDFontType0"!=f&&(f="CIDFontType0");"OpenType"===d&&(f="OpenType");switch(f){case "Type1":case "CIDFontType0":this.mimetype="font/opentype";e="Type1C"==d||"CIDFontType0C"==d?new Ld(c,b):new Pc(a,c,b);if(b.fontMatrix[0]!==xa[0]){f=0.001/b.fontMatrix[0];var d=b.widths,g;for(g in d)d[g]*=f;b.defaultWidth*=f}e=this.convert(a,e,b);break;case "TrueType":case "CIDFontType2":this.mimetype="font/opentype";(e=this.checkAndRepair(a,
-c,b))||Y("Font is not a TrueType font");break;default:Y("Font "+f+" is not supported")}this.data=e;this.fontMatrix=b.fontMatrix;this.widths=b.widths;this.defaultWidth=b.defaultWidth;this.encoding=b.baseEncoding;this.seacMap=b.seacMap;this.loading=!0}else g=a.replace(/[,_]/g,"-"),g=Kc[g]||Jd[g]||g,this.bold=-1!=g.search(/bold/gi),this.italic=-1!=g.search(/oblique/gi)||-1!=g.search(/italic/gi),this.black=-1!=a.search(/Black/g),this.encoding=b.baseEncoding,this.noUnicodeAdaptation=!0,this.loadedName=
-g.split("-")[0],this.loading=!1}}function a(a){for(var c=[],b=0,e=a.length;b<e;++b)c[b]=a.charCodeAt(b);return c}function b(a){for(var c="",b=0,e=a.length;b<e;++b)c+=String.fromCharCode(a[b]);return c}function c(a){return(a[0]<<8)+(a[1]&255)}function e(a){return(a[0]<<24)+(a[1]<<16)+(a[2]<<8)+(a[3]&255)}function f(a){for(var c=0;2<=a;)a/=2,c++;a=2;for(var b=1;b<c;b++)a*=2;return a}function g(a){return String.fromCharCode(a>>8&255)+String.fromCharCode(a&255)}function h(a){a=32767<a?32767:-32768>a?
--32768:a;return String.fromCharCode(a>>8&255)+String.fromCharCode(a&255)}function l(a){return String.fromCharCode(a>>24&255)+String.fromCharCode(a>>16&255)+String.fromCharCode(a>>8&255)+String.fromCharCode(a&255)}function p(a,c,b){"true"==a&&(a=l(65536));a+=g(b);var e=f(b),d=16*e;a+=g(d);a+=g(Math.log(e)/Math.log(2));a+=g(16*b-d);c.file+=a;c.virtualOffset+=a.length}function k(a,c,b){for(var f=a.virtualOffset,d=b.length;b.length&3;)b.push(0);for(;a.virtualOffset&3;)a.virtualOffset++;for(var g=0,h=
-b.length,k=0;k<h;k+=4)g=g+e([b[k],b[k+1],b[k+2],b[k+3]])|0;c=c+l(g)+l(f)+l(d);a.file+=c;a.virtualOffset+=b.length}function m(a,c){for(var b=[],e=a.length,f=0;f<e;++f)b.push({unicode:a[f].unicode,code:f});b.sort(function(a,c){return a.unicode-c.unicode});for(var d=[],f=0;f<e;){var g=b[f].unicode,h=[c?c[b[f].code]:b[f].code+1];++f;for(var k=g;f<e&&k+1==b[f].unicode&&!(h.push(c?c[b[f].code]:b[f].code+1),++k,++f,65535===k););d.push([g,k,h])}return d}function r(c,b){for(var e=m(c,b),d=65535<e[e.length-
-1][1]?2:1,h="\x00\x00"+g(d)+"\x00\u0003\x00\u0001"+l(4+8*d),k=e.length-1;0<=k&&!(65535>=e[k][0]);--k);var p=k+1;65535>e[k][0]&&65535===e[k][1]&&(e[k][1]=65534);for(var u=65535>e[k][1]?1:0,q=p+u,r=2*q,n=2*f(q),t=Math.log(q)/Math.log(2),s=2*q-n,z="",w="",J="",G="",K="",Q=0,k=0;k<p;k++){for(var C=e[k],I=C[0],D=C[1],z=z+g(I),w=w+g(D),O=C[2],C=!0,P=1,E=O.length;P<E;++P)if(O[P]!==O[P-1]+1){C=!1;break}if(C)J+=g(O[0]-I&65535),G+=g(0);else{P=2*(q-k)+2*Q;Q+=D-I+1;J+=g(0);G+=g(P);P=0;for(E=O.length;P<E;++P)K+=
-g(O[P])}}0<u&&(w+="\u00ff\u00ff",z+="\u00ff\u00ff",J+="\x00\u0001",G+="\x00\x00");u="\x00\x00"+g(r)+g(n)+g(t)+g(s)+w+"\x00\x00"+z+J+G+K;k=q="";if(1<d){h+="\x00\u0003\x00\n"+l(8*d+8+u.length);q="";k=0;for(p=e.length;k<p;k++){C=e[k];I=C[0];O=C[2];d=O[0];P=1;for(E=O.length;P<E;++P)O[P]!==O[P-1]+1&&(D=C[0]+P-1,q+=l(I)+l(D)+l(d),I=D+1,d=O[P]);q+=l(I)+l(C[1])+l(d)}k="\x00\f\x00\x00"+l(q.length+16)+"\x00\x00\x00\x00"+l(q.length/12)}return a(h+"\x00\u0004"+g(u.length+4)+u+k+q)}function n(a){var b=new wa(a.data),
-e=c(b.getBytes(2));b.getBytes(60);var f=c(b.getBytes(2));if(4>e&&f&768)return!1;e=c(b.getBytes(2));f=c(b.getBytes(2));if(e>f)return!1;b.getBytes(6);if(0===c(b.getBytes(2)))return!1;a.data[8]=a.data[9]=0;return!0}function q(a,c,b){b=b||{unitsPerEm:0,yMax:0,yMin:0,ascent:0,descent:0};var e=0,f=0,d=0,h=0,k=null,m=0;if(c)for(var p=0;p<c.length;++p){var u=c[p].unicode;if(k>u||!k)k=u;m<u&&(m=u);a:{for(var q=0,r=rb.length;q<r;q++){var n=rb[q];if(u>=n.begin&&u<n.end){u=q;break a}}u=-1}32>u?e|=1<<u:64>u?f|=
-1<<u-32:96>u?d|=1<<u-64:123>u?h|=1<<u-96:w("Unicode ranges Bits > 123 are reserved for internal usage")}else k=0,m=255;p=a.bbox||[0,0,0,0];c=b.unitsPerEm||1/(a.fontMatrix||xa)[0];u=a.ascentScaled?1:c/Id;c=b.ascent||Math.round(u*(a.ascent||p[3]));u=b.descent||Math.round(u*(a.descent||p[1]));0<u&&(0<a.descent&&0>p[1])&&(u=-u);p=b.yMax||c;b=-b.yMin||-u;return"\x00\u0003\u0002$\u0001\u00f4\x00\u0005\x00\x00\u0002\u008a\u0002\u00bb\x00\x00\x00\u008c\u0002\u008a\u0002\u00bb\x00\x00\u0001\u00df\x001\u0001\u0002\x00\x00\x00\x00\u0006"+
-String.fromCharCode(a.fixedPitch?9:0)+"\x00\x00\x00\x00\x00\x00"+l(e)+l(f)+l(d)+l(h)+"*21*"+g(a.italicAngle?1:0)+g(k||a.firstChar)+g(m||a.lastChar)+g(c)+g(u)+"\x00d"+g(p)+g(b)+"\x00\x00\x00\x00\x00\x00\x00\x00"+g(a.xHeight)+g(a.capHeight)+g(0)+g(k||a.firstChar)+"\x00\u0003"}function t(a){var c=Math.floor(a.italicAngle*Math.pow(2,16));return"\x00\u0003\x00\x00"+l(c)+"\x00\x00\x00\x00"+l(a.fixedPitch)+"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}function s(a,c){c||(c=[[],[]]);
-for(var b=[c[0][0]||"Original licence",c[0][1]||a,c[0][2]||"Unknown",c[0][3]||"uniqueID",c[0][4]||a,c[0][5]||"Version 0.11",c[0][6]||"",c[0][7]||"Unknown",c[0][8]||"Unknown",c[0][9]||"Unknown"],e=[],f=0,d=b.length;f<d;f++){for(var h=c[1][f]||b[f],k="",l=0,m=h.length;l<m;l++)k+=g(h.charCodeAt(l));e.push(k)}for(var k=[b,e],p=["\x00\u0001","\x00\u0003"],u=["\x00\x00","\x00\u0001"],q=["\x00\x00","\u0004\t"],f=b.length*p.length,r="\x00\x00"+g(f)+g(12*f+6),n=0,f=0,d=p.length;f<d;f++)for(var t=k[f],l=0,
-m=t.length;l<m;l++)var h=t[l],s=p[f]+u[f]+q[f]+g(l)+g(h.length)+g(n),r=r+s,n=n+h.length;return r+=b.join("")+e.join("")}function u(a,c,b,e){var f;if(c){if(3===b&&0===e||1===b&&0===e)f=Mc|a&255}else 3===b&&1===e?f=a:1===b&&0===e&&(a=qa.MacRomanEncoding[a])&&(f=Ga[a]);return f}d.prototype={name:null,font:null,mimetype:null,encoding:null,exportData:function(){var a={},c;for(c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},checkAndRepair:function(f,d,g){function h(a){var c=a.getBytes(4),c=String.fromCharCode(c[0])+
-String.fromCharCode(c[1])+String.fromCharCode(c[2])+String.fromCharCode(c[3]),b=e(a.getBytes(4)),f=e(a.getBytes(4)),d=e(a.getBytes(4)),g=a.pos;a.pos=a.start?a.start:0;a.skip(f);var k=a.getBytes(d);a.pos=g;"head"==c&&(k[8]=k[9]=k[10]=k[11]=0,k[17]|=32);return{tag:c,checksum:b,length:d,offset:f,data:k}}function l(a,c,b){var e=b.glyphNames;if(e){for(var f=a.length,d={},g=[],h=0;h<f;++h){var k=e[c[h]];k&&(d[k]=a[h].unicode,g[a[h].code]=k)}b.glyphNameMap=d;b.overridableEncoding&&(b.baseEncoding=g)}else b.glyphNameMap=
-{}}function m(a,b,f,d){a=(b.start?b.start:0)+a.offset;b.pos=a;c(b.getBytes(2));for(var g=c(b.getBytes(2)),h,k,l=0;l<g;l++){var v=c(b.getBytes(2)),p=c(b.getBytes(2)),u=e(b.getBytes(4)),q=!1,A=!1;d&&3===v&&0===p?k=A=q=!0:f&&3===v&&1===p?(k=A=q=!0,d=!1):1===v&&0===p&&!k?k=q=!0:h||(q=!0);q&&(h={platformId:v,encodingId:p,offset:u,isSymbolicFont:d});if(A)break}if(h){k||(Y("Did not find a cmap of suitable format. Interpreting ("+h.platformId+", "+h.encodingId+") as (3, 1) table"),h.platformId=3,h.encodingId=
-1);b.pos=a+h.offset;a=c(b.getBytes(2));c(b.getBytes(2));c(b.getBytes(2));d=!1;f=[];if(0===a){for(k=0;256>k;k++)(a=b.getByte())&&f.push({charcode:k,glyphId:a});d=!0}else if(4===a){g=c(b.getBytes(2))>>1;b.getBytes(6);v=[];for(l=0;l<g;l++)v.push({end:c(b.getBytes(2))});b.getBytes(2);for(l=0;l<g;l++)v[l].start=c(b.getBytes(2));for(l=0;l<g;l++)v[l].delta=c(b.getBytes(2));for(l=a=0;l<g;l++)k=v[l],(p=c(b.getBytes(2)))?(p=(p>>1)-(g-l),k.offsetIndex=p,a=Math.max(a,p+k.end-k.start+1)):k.offsetIndex=-1;u=[];
-for(k=0;k<a;k++)u.push(c(b.getBytes(2)));for(l=0;l<g;l++){k=v[l];a=k.start;b=k.end;A=k.delta;p=k.offsetIndex;for(k=a;k<=b;k++)65535!=k&&(q=0>p?k:u[p+k-a],q=q+A&65535,0!==q&&f.push({charcode:k,glyphId:q}))}}else if(6==a){a=c(b.getBytes(2));g=c(b.getBytes(2));for(k=0;k<g;k++)q=c(b.getBytes(2)),f.push({charcode:a+k,glyphId:q})}else w("cmap table has unsupported format: "+a);return{platformId:h.platformId,encodingId:h.encodingId,isSymbolicFont:h.isSymbolicFont,mappings:f,hasShortCmap:d}}w("Could not find a cmap table")}
-function L(a,b,c,e,f){if(12>=c-b)return 0;a=a.subarray(b,c);var d=a[0]<<8|a[1];if(d&32768)return e.set(a,f),a.length;b=10;for(var g=c=0;g<d;g++)c=(a[b]<<8|a[b+1])+1,b+=2;b+=2+(a[b]<<8|a[b+1]);for(g=d=0;g<c;g++){var h=a[b++];if(h&192)return 0;var k=(h&2?1:h&16?0:2)+(h&4?1:h&32?0:2),d=d+k;h&8&&(h=a[b++],g+=h,d+=h*k)}b+=d;if(b>a.length)return 0;if(3<a.length-b)return b=b+3&-4,e.set(a.subarray(0,b),f),b;e.set(a,f);return a.length}function ia(a,b,f){a=a.data;var d=e([a[0],a[1],a[2],a[3]]);1!==d>>16&&(da("Attempting to fix invalid version in head table: "+
-d),a[0]=0,a[1]=1,a[2]=0,a[3]=0);d=c([a[50],a[51]]);if(0>d||1<d)da("Attempting to fix invalid indexToLocFormat in head table: "+d),b+=1,f===b<<1?(a[50]=0,a[51]=0):f===b<<2?(a[50]=0,a[51]=1):Y("Could not fix indexToLocFormat: "+d)}function X(a,b,c,e){var f,d;e?(e=4,f=function(a,b){return a[b]<<24|a[b+1]<<16|a[b+2]<<8|a[b+3]},d=function(a,b,c){a[b]=c>>>24&255;a[b+1]=c>>16&255;a[b+2]=c>>8&255;a[b+3]=c&255}):(e=2,f=function(a,b){return a[b]<<9|a[b+1]<<1},d=function(a,b,c){a[b]=c>>9&255;a[b+1]=c>>1&255});
-a=a.data;var g=b.data,h=g.length,k=new Uint8Array(h),l=f(a,0),v=0;d(a,0,v);for(var m=0,p=e;m<c;m++,p+=e){var u=f(a,p);u>h||(l=L(g,l,u,k,v),v+=l);d(a,p,v);l=u}if(0===v){f=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);m=0;for(p=e;m<c;m++,p+=e)d(a,p,f.length);b.data=f}else b.data=k.subarray(0,v)}function y(a,b,c){var e;b?(b=4,e=function(a,b){return a[b]<<24|a[b+1]<<16|a[b+2]<<8|a[b+3]}):(b=2,e=function(a,b){return a[b]<<9|a[b+1]<<1});a=a.data;for(var f=a.length,d=e(a,0),g=b,h=0;g<f;g+=b,h++){var k=
-e(a,g);k==d&&(c[h]=!0);d=k}}function H(a,b,f){var g=(d.start?d.start:0)+a.offset;d.pos=g;var g=g+a.length,h=e(d.getBytes(4));d.getBytes(28);var k;a=!0;switch(h){case 65536:k=Oc;break;case 131072:h=c(d.getBytes(2));if(h!=f){a=!1;break}f=[];for(var l=0;l<h;++l){var v=c(d.getBytes(2));if(32768<=v){a=!1;break}f.push(v)}if(!a)break;for(v=[];d.pos<g;){k=d.getByte();for(var m="",l=0;l<k;++l)m+=d.getChar();v.push(m)}k=[];for(l=0;l<h;++l)g=f[l],258>g?k.push(Oc[g]):k.push(v[g-258]);break;case 196608:break;
-default:Y("Unknown/unsupported post table version "+h),a=!1}b.glyphNames=k;return a}function ja(a){var b=(d.start?d.start:0)+a.offset;d.pos=b;var e=[[],[]],f=a.length;a=b+f;if(0!==c(d.getBytes(2))||6>f)return e;for(var g=c(d.getBytes(2)),f=c(d.getBytes(2)),h=[],k=0;k<g&&d.pos+12<=a;k++){var l={platform:c(d.getBytes(2)),encoding:c(d.getBytes(2)),language:c(d.getBytes(2)),name:c(d.getBytes(2)),length:c(d.getBytes(2)),offset:c(d.getBytes(2))};(1==l.platform&&0===l.encoding&&0===l.language||3==l.platform&&
-1==l.encoding&&1033==l.language)&&h.push(l)}k=0;for(g=h.length;k<g;k++){var l=h[k],v=b+f+l.offset;if(!(v+l.length>a))if(d.pos=v,v=l.name,l.encoding){for(var m="",p=0,l=l.length;p<l;p+=2)m+=String.fromCharCode(c(d.getBytes(2)));e[1][v]=m}else e[0][v]=ib(d.getBytes(l.length))}return e}function x(a,b){for(var c=a.data,e=0,f,d=0,g=0,h=[],k=[],l=[],v=b.tooComplexToFollowFunctions,m=!1,p=0,u=0,q=c.length;e<q;){var A=c[e++];if(64===A)if(f=c[e++],m||u)e+=f;else for(var r=0;r<f;r++)h.push(c[e++]);else if(65===
-A)if(f=c[e++],m||u)e+=2*f;else for(r=0;r<f;r++){var n=c[e++];h.push(n<<8|c[e++])}else if(176===(A&248))if(f=A-176+1,m||u)e+=f;else for(r=0;r<f;r++)h.push(c[e++]);else if(184===(A&248))if(f=A-184+1,m||u)e+=2*f;else for(r=0;r<f;r++)n=c[e++],h.push(n<<8|c[e++]);else if(43===A&&!v)!m&&!u&&(f=h[h.length-1],b.functionsUsed[f]=!0,f in b.functionsStackDeltas?h.length+=b.functionsStackDeltas[f]:f in b.functionsDefined&&0>l.indexOf(f)&&(k.push({data:c,i:e,stackTop:h.length-1}),l.push(f),r=b.functionsDefined[f],
-c=r.data,e=r.i));else if(44===A&&!v){if(m||u)Y("TT: nested FDEFs not allowed"),v=!0;m=!0;g=e;f=h.pop();b.functionsDefined[f]={data:c,i:e}}else if(45===A)m?(m=!1,d=e):(r=k.pop(),f=l.pop(),c=r.data,e=r.i,b.functionsStackDeltas[f]=h.length-r.stackTop);else if(137===A){if(m||u)Y("TT: nested IDEFs not allowed"),v=!0;m=!0;g=e}else 88===A?++p:27===A?u=p:89===A?(u===p&&(u=0),--p):28===A&&(f=h[h.length-1],0<f&&(e+=f-1));if(!m&&!u){r=142>=A?F[A]:192<=A&&223>=A?-1:224<=A?-2:0;113<=A&&117>=A&&(f=h.pop(),f===
-f&&(r=2*-f));for(;0>r&&0<h.length;)h.pop(),r++;for(;0<r;)h.push(NaN),r--}}b.tooComplexToFollowFunctions=v;h=[c];e>c.length&&h.push(new Uint8Array(e-c.length));g>d&&(Y("TT: complementing a missing function tail"),h.push(new Uint8Array([34,45])));z(a,h)}function z(a,b){if(1<b.length){for(var c=0,e=0,f=b.length;e<f;e++)c+=b[e].length;for(var c=c+3&-4,d=new Uint8Array(c),g=0,e=0,f=b.length;e<f;e++)d.set(b[e],g),g+=b[e].length;a.data=d;a.length=c}}var F=[0,0,0,0,0,0,0,0,-2,-2,-2,-2,0,0,-2,-5,-1,-1,-1,
--1,-1,-1,-1,-1,0,0,-1,0,-1,-1,-1,-1,1,-1,-999,0,1,0,-1,-2,0,-1,-2,-1,-1,0,-1,-1,0,0,-999,-999,-1,-1,-1,-1,-2,-999,-2,-2,-2,0,-2,-2,0,0,-2,0,-2,0,0,0,-2,-1,-1,1,1,0,0,-1,-1,-1,-1,-1,-1,-1,0,0,-1,0,-1,-1,0,-999,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,-2,-999,-999,-999,-999,-999,-1,-1,-2,-2,0,0,0,0,-1,-1,-999,-2,-2,0,0,-1,-2,-2,0,0,0,-1,-1,-1,-2],J="OS/2 cmap head hhea hmtx maxp name post".split(" "),G=b(d.getBytes(4)),K=c(d.getBytes(2));c(d.getBytes(2));c(d.getBytes(2));c(d.getBytes(2));for(var Q=
-K,C,I,D,O,P,E,M,pa,N,Da,V,K=[],R=0;R<Q;R++){var S=h(d),sa=J.indexOf(S.tag);if(-1!=sa)"cmap"==S.tag?C=S:"post"==S.tag?I=S:"maxp"==S.tag?D=S:"hhea"==S.tag?O=S:"hmtx"==S.tag?P=S:"head"==S.tag?E=S:"OS/2"==S.tag&&(M=S),J.splice(sa,1);else if("loca"==S.tag)Da=S;else if("glyf"==S.tag)pa=S;else if("fpgm"==S.tag)N=S;else if("prep"==S.tag)V=S;else if("cvt "!=S.tag){if("CFF "==S.tag)return null;continue}K.push(S)}Q=K.length+J.length;sa={file:"",virtualOffset:16*Q};p(G,sa,Q);d.pos=(d.start||0)+D.offset;var R=
-e(d.getBytes(4)),S=c(d.getBytes(2)),U=0;65536<=R&&22<=D.length&&(d.pos+=14,U=c(d.getBytes(2)));(function(b,e,f,d){if(e){b.pos=(b.start?b.start:0)+e.offset;b.pos+=e.length-2;var g=c(b.getBytes(2));g>d&&(da("The numOfMetrics ("+g+") should not be greater than the numGlyphs ("+d+")"),g=d,e.data[34]=(g&65280)>>8,e.data[35]=g&255);e=d-g-(f.length-4*g>>1);if(0<e){b.pos=(b.start?b.start:0)+f.offset;d="";for(var g=0,h=f.length;g<h;g++)d+=String.fromCharCode(b.getByte());for(g=0;g<e;g++)d+="\x00\x00";f.data=
-a(d)}}else f&&(f.data=null)})(d,O,P,S);(function(a,b){var c={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1};a&&x(a,c);b&&x(b,c);if(a){var e=U,f=[a.data];if(!c.tooComplexToFollowFunctions){for(var d=[],g=0,h=c.functionsUsed.length;g<h;g++)c.functionsUsed[g]&&!c.functionsDefined[g]&&(d.push(g),g>=e||(256>g?f.push(new Uint8Array([176,g,44,45])):f.push(new Uint8Array([184,g>>8,g&255,44,45]))));0<d.length&&Y("TT: undefined functions: "+d)}z(a,f)}})(N,V,U);
-E&&ia(E,S,Da.length);R=c([E.data[50],E.data[51]]);E&&(Da&&pa)&&X(Da,pa,S,R);D=[];pa&&y(Da,R,D);0===O.data[10]&&0===O.data[11]&&(O.data[10]=255,O.data[11]=255);I&&!H(I,g,S)&&(K.splice(K.indexOf(I),1),I=null);if("CIDFontType2"==g.type){C||(C={tag:"cmap",data:null},K.push(C));R=g.cidToGidMap||[];N=[0];if(0<R.length){for(P=R.length-1;0<=P;P--)(pa=R[P])&&(N[pa]=P);pa=R.length;for(R=1;R<S;R++)N[R]||(N[R]=pa++)}pa=[];Da=[];G=[];Q=[];P=this.cidToFontChar||this.toFontChar;for(R=1;R<S;R++){var ta=N[R]||R;D=
-P[ta];!D||"number"!==typeof D||Pb(D)||D in G?Q.push(R):(G[D]=!0,pa.push({unicode:D,code:ta}),Da.push(R))}if(!this.cidToFontChar){S=Xa;P=0;for(V=Q.length;P<V;P++){R=Q[P];for(ta=N[R]||R;S in G;)S++;if(S>=Xa+Bb)break;D=S++;this.toFontChar[ta]=D;G[D]=!0;pa.push({unicode:D,code:ta});Da.push(R)}}}else{this.useToFontChar=!0;N=m(C,d,this.hasEncoding,this.isSymbolicFont);this.isSymbolicFont=N.isSymbolicFont;V=N.platformId;G=N.encodingId;Q=N.mappings;ta=Q.length;pa=[];Da=[];for(R=0;R<ta;++R){var W=Q[R];P=W.charcode;
-if(D=u(P,this.isSymbolicFont,V,G))pa.push({code:P,unicode:D}),Da.push(W.glyphId)}R=N.hasShortCmap;P=this.toFontChar;if(R&&Da.length==S){R=0;for(D=Da.length;R<D;R++)Da[R]=R}S=[];if(this.isSymbolicFont){R=0;for(D=pa.length;R<D;R++)P=pa[R],S[P.code&255]=P.unicode}else{R=g.baseEncoding;N=g.differences;for(P=0;P<R.length;++P)R.hasOwnProperty(P)&&(D=R[P],P in N&&(D=N[P]),D||(D=qa.StandardEncoding[P]),D=D||".notdef",D=Ga[D],S[P]=D)}this.toFontChar=P=S;l(pa,Da,g);this.glyphNameMap=g.glyphNameMap}0===pa.length&&
-(pa.push({unicode:61440,code:61440,glyph:".notdef"}),Da.push(0));C.data=r(pa,Da);C=[];R=0;for(D=pa.length;R<D;R++)C[pa[R].unicode]=!0;this.unicodeIsEnabled=C;M&&!n(M)&&(K.splice(K.indexOf(M),1),M=null);M||(O={unitsPerEm:c([E.data[18],E.data[19]]),yMax:c([E.data[42],E.data[43]]),yMin:c([E.data[38],E.data[39]])-65536,ascent:c([O.data[4],O.data[5]]),descent:c([O.data[6],O.data[7]])-65536},K.push({tag:"OS/2",data:a(q(g,pa,O))}));I||K.push({tag:"post",data:a(t(g))});if(-1!=J.indexOf("name"))K.push({tag:"name",
-data:a(s(this.name))});else{R=0;for(D=K.length;R<D;R++)if(S=K[R],"name"===S.tag){g=ja(S);S.data=a(s(f,g));break}}K.sort(function(a,b){return(a.tag>b.tag)-(a.tag<b.tag)});R=0;for(D=K.length;R<D;R++){S=K[R];f=[];g=S.data;P=0;for(V=g.length;P<V;P++)f.push(g[P]);k(sa,S.tag,f)}R=0;for(D=K.length;R<D;R++){S=K[R];g=S.data;for(sa.file+=b(g);sa.file.length&3;)sa.file+=String.fromCharCode(0)}return a(sa.file)},convert:function(c,e,f){var d={file:"",virtualOffset:144};p("OTTO",d,9);var l=e.charstrings;f.fixedPitch=
-function(a){for(var b=0,c=a.length-1;b<c;b++)if(a[b]!=a[b+1])return!1;return!0}(l);for(var m={},u=0;u<l.length;++u){var n=l[u];m[n.glyph]=n.unicode}this.glyphNameMap=m;var X=e.seacs;if(mb&&X){for(var y=[],H=f.fontMatrix||xa,u=0;u<l.length;++u){var n=l[u],w=X[n.gid];if(w){var x=m[qa.StandardEncoding[w[2]]],z=m[qa.StandardEncoding[w[3]]];x&&z&&(y[n.unicode]={baseUnicode:x,accentUnicode:z,accentOffset:{x:w[0]*H[0]+w[1]*H[2]+H[4],y:w[0]*H[1]+w[1]*H[3]+H[5]}})}}f.seacMap=y}if(!f.hasEncoding&&("Type1C"==
-f.subtype||"CIDFontType0C"==f.subtype)){m=[];for(u=0;u<l.length;++u)n=l[u],m[n.code]=n.glyph;f.baseEncoding=m}if("CIDFontType0C"==f.subtype){m=[];for(u=0;u<l.length;++u)n=l[u],m[n.code]=n.unicode;this.toFontChar=m}u=1/(f.fontMatrix||xa)[0];c={"CFF ":e.data,"OS/2":a(q(f,l)),cmap:r(l.slice(),"glyphIds"in e?e.glyphIds:null),head:a("\x00\u0001\x00\x00\x00\x00\u0010\x00\x00\x00\x00\x00_\u000f<\u00f5\x00\x00"+h(u)+"\x00\x00\x00\x00\u009e\x0B~'\x00\x00\x00\x00\u009e\x0B~'\x00\x00"+h(f.descent)+"\u000f\u00ff"+
-h(f.ascent)+g(f.italicAngle?2:0)+"\x00\u0011\x00\x00\x00\x00\x00\x00"),hhea:a("\x00\u0001\x00\x00"+h(f.ascent)+h(f.descent)+"\x00\x00\u00ff\u00ff\x00\x00\x00\x00\x00\x00"+h(f.capHeight)+h(Math.tan(f.italicAngle)*f.xHeight)+"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+g(l.length+1)),hmtx:function(){for(var b="\x00\x00\x00\x00",c=0,e=l.length;c<e;c++)var f=l[c],b=b+(g("width"in f?f.width:0)+g(0));return a(b)}(),maxp:a("\x00\x00P\x00"+g(l.length+1)),name:a(s(c)),post:a(t(f))};for(var F in c)k(d,
-F,c[F]);for(F in c)d.file+=b(c[F]);return a(d.file)},buildToFontChar:function(a){for(var b=[],c=Xa,e=0,f=a.length;e<f;e++){var d=a[e],g="object"===typeof d?c++:d;"undefined"!==typeof d&&(b[e]=g)}return b},rebuildToUnicode:function(a){var b=a.firstChar,c=a.lastChar,e=[],f=this.toUnicode||this.cidToUnicode;if(f)for(a=0===f.length;b<=c;b++)e[b]=a?b:f[b];else for(;b<=c;b++)(f=a.differences[b])||(f=a.baseEncoding[b]),f&&f in Ga&&(e[b]=Ga[f]);this.toUnicode=e},loadCidToUnicode:function(a){if(a.cidSystemInfo){var b=
-[],c=[];this.cidToUnicode=b;this.unicodeToCID=c;var e=a.cidEncoding;if(a.toUnicode)e&&0!==e.indexOf("Identity-")&&oa("Need to create a reverse mapping from 'ToUnicode' CMap");else{var f=a.cidSystemInfo,d;f&&(d=yd[f.registry+"-"+f.ordering]);if(d){var f=Kd[e],g=1,h,k,l,m;h=0;for(m=d.length;h<m;++h){var p=d[h];if(U(p)){var u=p.length;for(k=0;k<u;k++)if(b[g]=l=p[k],!c[l]||f)c[l]=g;g++}else if("object"===typeof p)if(u=p.f){l=p.c;for(k=0;k<u;++k){b[g]=l;if(!c[l]||f)c[l]=g;g++;l++}}else g+=p.s;else{if(p&&
-(b[g]=p,!c[p]||f))c[p]=g;g++}}e&&(0!==e.indexOf("Identity-")?(this.cidToUnicode=[],"CIDFontType2"==a.type&&(this.cidToFontChar=b)):this.unicodeToCID=[])}}}},bindDOM:function(){if(!this.data)return null;var a=ib(this.data),b=this.loadedName,a="url(data:"+this.mimetype+";base64,"+window.btoa(a)+");",b='@font-face { font-family:"'+b+'";src:'+a+"}",c=document.getElementById("PDFJS_FONT_STYLE_TAG");c||(c=document.createElement("style"),c.id="PDFJS_FONT_STYLE_TAG",document.documentElement.getElementsByTagName("head")[0].appendChild(c));
-c=c.sheet;c.insertRule(b,c.cssRules.length);PDFJS.pdfBug&&("FontInspector"in ma&&ma.FontInspector.enabled)&&ma.FontInspector.fontAdded(this,a);return b},get spaceWidth(){if("_shadowWidth"in this)return this._shadowWidth;for(var a=["space","minus","one","i"],b,c=0,e=a.length;c<e;c++){b=a[c];if(b in this.widths){b=this.widths[b];break}b=Ga[b];var f=0;this.composite&&(f=this.unicodeToCID[b]);!f&&"toUnicode"in this&&(f=this.toUnicode.indexOf(b));0>=f&&(f=b);if(b=this.widths[f])break}return this._shadowWidth=
-b=b||this.defaultWidth},charToGlyph:function(a){var b,c,e;c=this.widths[a];var f=this.vmetrics&&this.vmetrics[a];switch(this.type){case "CIDFontType0":b=this.unicodeToCID[a]||a;0<this.unicodeToCID.length&&(c=this.widths[b],f=this.vmetrics&&this.vmetrics[b]);if(this.noUnicodeAdaptation){b=this.toFontChar[a]||a;break}b=this.toFontChar[b]||b;break;case "CIDFontType2":if(0<this.unicodeToCID.length){b=this.unicodeToCID[a]||a;c=this.widths[b];f=this.vmetrics&&this.vmetrics[b];b=a;break}b=this.toFontChar[a]||
-a;break;case "Type1":b=this.differences[a]||this.encoding[a];La(c)||(c=this.widths[b]);if(this.noUnicodeAdaptation){a:switch(b=Ga[b]||a,b){case 63721:case 63193:b=169;break a}break}b=this.glyphNameMap[b]||Ga[b]||a;break;case "Type3":b=this.differences[a]||this.encoding[a];e=this.charProcOperatorList[b];b=a;break;case "TrueType":if(this.useToFontChar){b=this.toFontChar[a]||a;break}(b=this.differences[a]||this.encoding[a])||(b=qa.StandardEncoding[a]);La(c)||(c=this.widths[b]);if(this.noUnicodeAdaptation){b=
-Ga[b]||a;break}if(!this.hasEncoding||this.isSymbolicFont){b=this.useToFontChar?this.toFontChar[a]:a;break}b=b in this.glyphNameMap?this.glyphNameMap[b]:Ga[b];break;default:Y("Unsupported font type: "+this.type)}var d=!("toUnicode"in this)?a:this.toUnicode[a]||a;"number"===typeof d&&(d=String.fromCharCode(d));c=La(c)?c:this.defaultWidth;a=this.unicodeIsEnabled?!this.unicodeIsEnabled[b]:!1;var g=null;this.seacMap&&this.seacMap[b]&&(g=this.seacMap[b],b=g.baseUnicode,g={fontChar:String.fromCharCode(g.accentUnicode),
-offset:g.accentOffset});return{fontChar:String.fromCharCode(b),unicode:d,accent:g,width:c,vmetric:f,disabled:a,operatorList:e}},charsToGlyphs:function(a){var b=this.charsCache,e;if(b&&(e=b[a]))return e;b||(b=this.charsCache=Object.create(null));e=[];var f=a,d,g=this.cidEncoding;g&&((d=Nc[g])?a=d(a):0!==g.indexOf("Uni")&&0!==g.indexOf("Identity-")&&Y("Unsupported CMap: "+g));if(!d&&this.wideChars){var h=a.length-1;for(d=0;d<h;d++){var g=c([a.charCodeAt(d++),a.charCodeAt(d)]),k=this.charToGlyph(g);
-e.push(k);32==g&&e.push(null)}}else{d=0;for(h=a.length;d<h;++d)g=a.charCodeAt(d),k=this.charToGlyph(g),e.push(k),32==g&&e.push(null)}return b[f]=e}};return d}(),Db=function(){function d(a){this.error=a}d.prototype={charsToGlyphs:function(){return[]},exportData:function(){return{error:this.error}}};return d}(),Md=function(){function d(){this.lsb=this.width=0;this.flexing=!1;this.output=[];this.stack=[]}var a=[4],b=[5],c=[6],e=[7],f=[8],g=[12,35],h=[14],l=[21],p=[22],k=[30],m=[31];d.prototype={convert:function(d,
-n){for(var q=d.length,t=!1,s=0;s<q;s++){var u=d[s];if(32>u){12===u&&(u=(u<<8)+d[++s]);switch(u){case 1:this.stack=[];break;case 3:this.stack=[];break;case 4:if(this.flexing){if(1>this.stack.length){t=!0;break}u=this.stack.pop();this.stack.push(0,u);break}t=this.executeCommand(1,a);break;case 5:t=this.executeCommand(2,b);break;case 6:t=this.executeCommand(1,c);break;case 7:t=this.executeCommand(1,e);break;case 8:t=this.executeCommand(6,f);break;case 9:this.stack=[];break;case 10:if(1>this.stack.length){t=
-!0;break}u=this.stack.pop();t=this.convert(n[u],n);break;case 11:return t;case 13:if(2>this.stack.length){t=!0;break}t=this.stack.pop();this.lsb=u=this.stack.pop();this.width=t;this.stack.push(u);t=this.executeCommand(1,p);break;case 14:this.output.push(h[0]);break;case 21:if(this.flexing)break;t=this.executeCommand(2,l);break;case 22:if(this.flexing){this.stack.push(0);break}t=this.executeCommand(1,p);break;case 30:t=this.executeCommand(4,k);break;case 31:t=this.executeCommand(4,m);break;case 3072:this.stack=
-[];break;case 3073:this.stack=[];break;case 3074:this.stack=[];break;case 3078:mb?(this.seac=this.stack.splice(-4,4),t=this.executeCommand(0,h)):t=this.executeCommand(4,h);break;case 3079:if(4>this.stack.length){t=!0;break}this.stack.pop();var t=this.stack.pop(),v=this.stack.pop();this.lsb=u=this.stack.pop();this.width=t;this.stack.push(u,v);t=this.executeCommand(2,l);break;case 3084:if(2>this.stack.length){t=!0;break}u=this.stack.pop();v=this.stack.pop();this.stack.push(v/u);break;case 3088:if(2>
-this.stack.length){t=!0;break}u=this.stack.pop();v=this.stack.pop();0===u&&3===v?(u=this.stack.splice(this.stack.length-17,17),this.stack.push(u[2]+u[0],u[3]+u[1],u[4],u[5],u[6],u[7],u[8],u[9],u[10],u[11],u[12],u[13],u[14]),t=this.executeCommand(13,g,!0),this.flexing=!1,this.stack.push(u[15],u[16])):1===u&&0===v&&(this.flexing=!0);break;case 3089:break;case 3105:this.stack=[];break;default:Y('Unknown type 1 charstring command of "'+u+'"')}if(t)break}else u=246>=u?u-139:250>=u?256*(u-247)+d[++s]+108:
-254>=u?-(256*(u-251))-d[++s]-108:(d[++s]&255)<<24|(d[++s]&255)<<16|(d[++s]&255)<<8|(d[++s]&255)<<0,this.stack.push(u)}return t},executeCommand:function(a,b,c){var e=this.stack.length;if(a>e)return!0;for(var f=e-a,d=f;d<e;d++){var g=this.stack[d];g===(g|0)?this.output.push(28,g>>8&255,g&255):(g=65536*g|0,this.output.push(255,g>>24&255,g>>16&255,g>>8&255,g&255))}this.output.push.apply(this.output,b);c?this.stack.splice(f,a):this.stack=[];return!1}};return d}(),Qc=function(){function d(a,b,c){for(var d=
-[],l="",p=a.length,k=0;k<p;k++)l=a[k],d[k]=l^b>>8,b=52845*(l+b)+22719&65535;return d.slice(c)}function a(a){return"/"===a||"["===a||"]"===a||"{"===a||"}"===a||"("===a||")"===a}function b(a,b){b&&(a=new wa(d(a.getBytes(),c,4)));this.stream=a}var c=55665;b.prototype={readNumberArray:function(){this.getToken();for(var a=[];;){var b=this.getToken();if(null===b||"]"===b||"}"===b)break;a.push(parseFloat(b||0))}return a},readNumber:function(){var a=this.getToken();return parseFloat(a||0)},readInt:function(){var a=
-this.getToken();return parseInt(a||0,10)|0},readBoolean:function(){return"true"===this.getToken()?1:0},getToken:function(){for(var b=!1,c,d=this.stream;;){if(null===(c=d.lookChar()))return null;if(b){if("\n"===c||"\r"===c)b=!1}else if("%"===c)b=!0;else if(!Ca.isSpace(c))break;d.skip()}if(a(c))return d.skip(),c;b="";do b+=c,d.skip(),c=d.lookChar();while(null!==c&&!Ca.isSpace(c)&&!a(c));return b},extractFontProgram:function(){for(var a=this.stream,b=[],c=[],h={subrs:[],charstrings:[],properties:{privateData:{lenIV:4}}},
-l;null!==(l=this.getToken());)if("/"===l)switch(l=this.getToken(),l){case "CharStrings":this.getToken();this.getToken();this.getToken();for(this.getToken();;){l=this.getToken();if(null===l||"end"===l)break;if("/"===l){var p=this.getToken();l=this.readInt();this.getToken();var k=a.makeSubStream(a.pos+1,l),m=h.properties.privateData.lenIV,k=d(k.getBytes(),4330,m);a.skip(1+l);l=this.getToken();"noaccess"===l&&this.getToken();c.push({glyph:p,encoded:k})}}break;case "Subrs":p=this.readInt();this.getToken();
-for(var r=0;r<p;++r){this.getToken();var n=this.readInt();n>r&&(r=n);l=this.readInt();this.getToken();k=a.makeSubStream(a.pos+1,l);m=h.properties.privateData.lenIV;k=d(k.getBytes(),4330,m);a.skip(1+l);l=this.getToken();"noaccess"===l&&this.getToken();b[n]=k}break;case "BlueValues":case "OtherBlues":case "FamilyBlues":case "FamilyOtherBlues":this.readNumberArray();break;case "StemSnapH":case "StemSnapV":h.properties.privateData[l]=this.readNumberArray();break;case "StdHW":case "StdVW":h.properties.privateData[l]=
-this.readNumberArray()[0];break;case "BlueShift":case "lenIV":case "BlueFuzz":case "BlueScale":case "LanguageGroup":case "ExpansionFactor":h.properties.privateData[l]=this.readNumber();break;case "ForceBold":h.properties.privateData[l]=this.readBoolean()}for(a=0;a<c.length;a++)p=c[a].glyph,k=c[a].encoded,l=new Md,k=l.convert(k,b),r=l.output,k&&(r=[14]),h.charstrings.push({glyph:p,data:r,seac:l.seac,lsb:l.lsb,width:l.width});return h},extractFontHeader:function(a){for(var b;null!==(b=this.getToken());)if("/"===
-b)switch(b=this.getToken(),b){case "FontMatrix":var c=this.readNumberArray();a.fontMatrix=c;break;case "Encoding":var d=this.getToken();if(/^\d+$/.test(d)){c=[];d=parseInt(d,10)|0;this.getToken();for(var l=0;l<d;l++)if(b=this.getToken(),"dup"===b){b=this.readInt();this.getToken();var p=this.getToken();c[b]=p;this.getToken()}}else c=qa[d];a.overridableEncoding&&c&&(a.baseEncoding=c)}}};return b}(),Fb=".notdef;space;exclam;quotedbl;numbersign;dollar;percent;ampersand;quoteright;parenleft;parenright;asterisk;plus;comma;hyphen;period;slash;zero;one;two;three;four;five;six;seven;eight;nine;colon;semicolon;less;equal;greater;question;at;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;bracketleft;backslash;bracketright;asciicircum;underscore;quoteleft;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;braceleft;bar;braceright;asciitilde;exclamdown;cent;sterling;fraction;yen;florin;section;currency;quotesingle;quotedblleft;guillemotleft;guilsinglleft;guilsinglright;fi;fl;endash;dagger;daggerdbl;periodcentered;paragraph;bullet;quotesinglbase;quotedblbase;quotedblright;guillemotright;ellipsis;perthousand;questiondown;grave;acute;circumflex;tilde;macron;breve;dotaccent;dieresis;ring;cedilla;hungarumlaut;ogonek;caron;emdash;AE;ordfeminine;Lslash;Oslash;OE;ordmasculine;ae;dotlessi;lslash;oslash;oe;germandbls;onesuperior;logicalnot;mu;trademark;Eth;onehalf;plusminus;Thorn;onequarter;divide;brokenbar;degree;thorn;threequarters;twosuperior;registered;minus;eth;multiply;threesuperior;copyright;Aacute;Acircumflex;Adieresis;Agrave;Aring;Atilde;Ccedilla;Eacute;Ecircumflex;Edieresis;Egrave;Iacute;Icircumflex;Idieresis;Igrave;Ntilde;Oacute;Ocircumflex;Odieresis;Ograve;Otilde;Scaron;Uacute;Ucircumflex;Udieresis;Ugrave;Yacute;Ydieresis;Zcaron;aacute;acircumflex;adieresis;agrave;aring;atilde;ccedilla;eacute;ecircumflex;edieresis;egrave;iacute;icircumflex;idieresis;igrave;ntilde;oacute;ocircumflex;odieresis;ograve;otilde;scaron;uacute;ucircumflex;udieresis;ugrave;yacute;ydieresis;zcaron;exclamsmall;Hungarumlautsmall;dollaroldstyle;dollarsuperior;ampersandsmall;Acutesmall;parenleftsuperior;parenrightsuperior;266 ff;onedotenleader;zerooldstyle;oneoldstyle;twooldstyle;threeoldstyle;fouroldstyle;fiveoldstyle;sixoldstyle;sevenoldstyle;eightoldstyle;nineoldstyle;commasuperior;threequartersemdash;periodsuperior;questionsmall;asuperior;bsuperior;centsuperior;dsuperior;esuperior;isuperior;lsuperior;msuperior;nsuperior;osuperior;rsuperior;ssuperior;tsuperior;ff;ffi;ffl;parenleftinferior;parenrightinferior;Circumflexsmall;hyphensuperior;Gravesmall;Asmall;Bsmall;Csmall;Dsmall;Esmall;Fsmall;Gsmall;Hsmall;Ismall;Jsmall;Ksmall;Lsmall;Msmall;Nsmall;Osmall;Psmall;Qsmall;Rsmall;Ssmall;Tsmall;Usmall;Vsmall;Wsmall;Xsmall;Ysmall;Zsmall;colonmonetary;onefitted;rupiah;Tildesmall;exclamdownsmall;centoldstyle;Lslashsmall;Scaronsmall;Zcaronsmall;Dieresissmall;Brevesmall;Caronsmall;Dotaccentsmall;Macronsmall;figuredash;hypheninferior;Ogoneksmall;Ringsmall;Cedillasmall;questiondownsmall;oneeighth;threeeighths;fiveeighths;seveneighths;onethird;twothirds;zerosuperior;foursuperior;fivesuperior;sixsuperior;sevensuperior;eightsuperior;ninesuperior;zeroinferior;oneinferior;twoinferior;threeinferior;fourinferior;fiveinferior;sixinferior;seveninferior;eightinferior;nineinferior;centinferior;dollarinferior;periodinferior;commainferior;Agravesmall;Aacutesmall;Acircumflexsmall;Atildesmall;Adieresissmall;Aringsmall;AEsmall;Ccedillasmall;Egravesmall;Eacutesmall;Ecircumflexsmall;Edieresissmall;Igravesmall;Iacutesmall;Icircumflexsmall;Idieresissmall;Ethsmall;Ntildesmall;Ogravesmall;Oacutesmall;Ocircumflexsmall;Otildesmall;Odieresissmall;OEsmall;Oslashsmall;Ugravesmall;Uacutesmall;Ucircumflexsmall;Udieresissmall;Yacutesmall;Thornsmall;Ydieresissmall;001.000;001.001;001.002;001.003;Black;Bold;Book;Light;Medium;Regular;Roman;Semibold".split(";"),
-Pc=function(d,a,b){var c=new wa(a.getBytes(b.length1));(new Qc(c)).extractFontHeader(b);a=new wa(a.getBytes(b.length2));a=(new Qc(a,!0)).extractFontProgram();for(var e in a.properties)b[e]=a.properties[e];e=this.getOrderedCharStrings(a.charstrings,b);var c=this.getType2Charstrings(e),f=this.getType2Subrs(a.subrs);this.charstrings=e;this.data=this.wrap(d,c,this.charstrings,f,b);this.seacs=this.getSeacs(a.charstrings)};Pc.prototype={getOrderedCharStrings:function(d,a){var b=[],c=[],e,f,g,h=Xa;e=0;for(f=
-d.length;e<f;e++){var l=d[e];g=l.glyph;var p=g in Ga?Ga[g]:h++;for(;c[p];)p=h++;c[p]=!0;b.push({glyph:g,unicode:p,gid:e,charstring:l.data,width:l.width,lsb:l.lsb})}b.sort(function(a,b){return a.unicode-b.unicode});return b},getSeacs:function(d){var a,b,c=[];a=0;for(b=d.length;a<b;a++){var e=d[a];e.seac&&(c[a]=e.seac)}return c},getType2Charstrings:function(d){for(var a=[],b=0,c=d.length;b<c;b++)a.push(d[b].charstring);return a},getType2Subrs:function(d){for(var a=0,b=d.length,a=1133>b?107:33769>b?
-1131:32768,c=[],e=0;e<a;e++)c.push([11]);for(e=0;e<b;e++)c.push(d[e]);return c},wrap:function(d,a,b,c,e){var f=new Rc;f.header=new Sc(1,0,4,4);f.names=[d];var g=new Gb;g.setByName("version",391);g.setByName("Notice",392);g.setByName("FullName",393);g.setByName("FamilyName",394);g.setByName("Weight",395);g.setByName("Encoding",null);g.setByName("FontMatrix",e.fontMatrix);g.setByName("FontBBox",e.bbox);g.setByName("charset",null);g.setByName("CharStrings",null);g.setByName("Private",null);f.topDict=
-g;g=new Xb;g.add("Version 0.11");g.add("See original notice");g.add(d);g.add(d);g.add("Medium");f.strings=g;f.globalSubrIndex=new bb;var g=a.length,h=[0];for(d=0;d<g;d++){var l=Fb.indexOf(b[d].glyph);-1==l&&(l=0);h.push(l>>8&255,l&255)}f.charset=new fb(!1,0,[],h);b=new bb;b.add([139,14]);for(d=0;d<g;d++)b.add(a[d]);f.charStrings=b;a=new Yb;a.setByName("Subrs",null);g="BlueValues OtherBlues FamilyBlues FamilyOtherBlues StemSnapH StemSnapV BlueShift BlueFuzz BlueScale LanguageGroup ExpansionFactor ForceBold StdHW StdVW".split(" ");
-d=0;for(b=g.length;d<b;d++)if(h=g[d],e.privateData.hasOwnProperty(h)){l=e.privateData[h];if(U(l))for(var p=l.length-1;0<p;p--)l[p]-=l[p-1];a.setByName(h,l)}f.topDict.privateDict=a;e=new bb;d=0;for(b=c.length;d<b;d++)e.add(c[d]);a.subrsIndex=e;return(new Tc(f)).compile()}};var Ld=function(){function d(a,b){this.properties=b;var c=(new Nd(a,b)).parse(),e=new Tc(c);this.readExtra(c);try{this.data=e.compile()}catch(f){Y("Failed to compile font "+b.loadedName),this.data=a}}d.prototype={readExtra:function(a){for(var b=
-this.getCharStrings(a.charset.charset,a.encoding?a.encoding.encoding:null),c=[],e=0,f=b.length;e<f;e++)c.push(b[e].gid);this.charstrings=b;this.glyphIds=c;this.seacs=a.seacs},getCharStrings:function(a,b){var c=[],e=[],f=[],d=[];if(null!==b)for(var h in b)d[b[h]]=h|0;else d=a;h=".notdef"==a[0]?1:0;for(var l=a.length;h<l;h++){var p=a[h],k=d[h];!k||Pb(k)?f.push(h):(c.push({unicode:k,code:k,gid:h,glyph:p}),e[k]=!0)}l=Xa;p=0;for(k=f.length;p<k;++p){for(h=f[p];l in e;)l++;var m=l++;c.push({unicode:m,code:d[h]||
-0,gid:h,glyph:a[h]})}c.sort(function(a,b){return a.unicode-b.unicode});return c}};return d}(),Nd=function(){function d(a,b){this.bytes=a.getBytes();this.properties=b}var a=[null,{id:"hstem",min:2,resetStack:!0,stem:!0},null,{id:"vstem",min:2,resetStack:!0,stem:!0},{id:"vmoveto",min:1,resetStack:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,
-undefStack:!0},null,null,null,null,null,null,{id:"hstemhm",min:2,resetStack:!0,stem:!0},null,null,{id:"rmoveto",min:2,resetStack:!0},{id:"hmoveto",min:1,resetStack:!0},{id:"vstemhm",min:2,resetStack:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],b=[null,null,null,{id:"and",
-min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn:function(a,b){a[b-2]+=a[b-1]}},{id:"sub",min:2,stackDelta:-1,stackFn:function(a,b){a[b-2]-=a[b-1]}},{id:"div",min:2,stackDelta:-1,stackFn:function(a,b){a[b-2]/=a[b-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn:function(a,b){a[b-1]=-a[b-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},
-{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn:function(a,b){a[b-2]*=a[b-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];d.prototype={parse:function(){var a=
-this.properties,b=new Rc;this.cff=b;var f=this.parseHeader(),d=this.parseIndex(f.endPos),h=this.parseIndex(d.endPos),l=this.parseIndex(h.endPos),p=this.parseIndex(l.endPos),h=this.parseDict(h.obj.get(0)),h=this.createDict(Gb,h,b.strings);b.header=f.obj;b.names=this.parseNameIndex(d.obj);b.strings=this.parseStringIndex(l.obj);b.topDict=h;b.globalSubrIndex=p.obj;this.parsePrivateDict(b.topDict);b.isCIDFont=h.hasName("ROS");f=h.getByName("CharStrings");f=this.parseCharStrings(f);b.charStrings=f.charStrings;
-b.seacs=f.seacs;if(f=h.getByName("FontMatrix"))a.fontMatrix=f;if(f=h.getByName("FontBBox"))a.ascent=f[3],a.descent=f[1],a.ascentScaled=!0;if(b.isCIDFont){a=this.parseIndex(h.getByName("FDArray")).obj;f=0;for(d=a.count;f<d;++f)l=a.get(f),l=this.createDict(Gb,this.parseDict(l),b.strings),this.parsePrivateDict(l),b.fdArray.push(l);a=null;f=this.parseCharsets(h.getByName("charset"),b.charStrings.count,b.strings,!0);b.fdSelect=this.parseFDSelect(h.getByName("FDSelect"),b.charStrings.count)}else f=this.parseCharsets(h.getByName("charset"),
-b.charStrings.count,b.strings,!1),a=this.parseEncoding(h.getByName("Encoding"),a,b.strings,f.charset);b.charset=f;b.encoding=a;return b},parseHeader:function(){for(var a=this.bytes,b=0;1!=a[b];)++b;0!==b&&(da("cff data is shifted"),this.bytes=a=a.subarray(b));b=a[2];return{obj:new Sc(a[0],a[1],b,a[3]),endPos:b}},parseDict:function(a){function b(){var e=a[f++];if(30===e){for(var e="",d=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],g=a.length;f<g;){var h=a[f++],l=h>>4,h=h&15;if(15==
-l)break;e+=d[l];if(15==h)break;e+=d[h]}return parseFloat(e)}if(28===e)return e=a[f++],e=(e<<24|a[f++]<<16)>>16;if(29===e)return e=a[f++],e=e<<8|a[f++],e=e<<8|a[f++],e=e<<8|a[f++];if(32<=e&&246>=e)return e-139;if(247<=e&&250>=e)return 256*(e-247)+a[f++]+108;if(251<=e&&254>=e)return-(256*(e-251))-a[f++]-108;w("255 is not a valid DICT command");return-1}for(var f=0,d=[],h=[],f=0,l=a.length;f<l;){var p=a[f];21>=p?(12===p&&(p=p<<8|a[++f]),h.push([p,d]),d=[],++f):d.push(b())}return h},parseIndex:function(a){var b=
-new bb,f=this.bytes,d=f[a++]<<8|f[a++],h=[],l=a;if(0!==d){for(var l=f[a++],p=a+(d+1)*l-1,k=0,m=d+1;k<m;++k){for(var r=0,n=0;n<l;++n)r<<=8,r+=f[a++];h.push(p+r)}l=h[d]}k=0;for(m=h.length-1;k<m;++k)b.add(f.subarray(h[k],h[k+1]));return{obj:b,endPos:l}},parseNameIndex:function(a){for(var b=[],f=0,d=a.count;f<d;++f){for(var h=a.get(f),l=Math.min(h.length,127),p=[],k=0;k<l;++k){var m=h[k];p[k]=0===k&&0===m?m:33>m||126<m||91===m||93===m||40===m||41===m||123===m||125===m||60===m||62===m||47===m||37===m?
-95:m}b.push(String.fromCharCode.apply(null,p))}return b},parseStringIndex:function(a){for(var b=new Xb,f=0,d=a.count;f<d;++f){var h=a.get(f);b.add(String.fromCharCode.apply(null,h))}return b},createDict:function(a,b,f){a=new a(f);f=0;for(var d=b.length;f<d;++f){var h=b[f];a.setByKey(h[0],h[1])}return a},parseCharStrings:function(c){c=this.parseIndex(c).obj;for(var e=[],f=c.count,d=0;d<f;d++){for(var h=0,l=[],p=!0,k=0,m=!0,r=c.get(d),n=r.length,q=0;q<n;){var t=r[q++],s=null;12==t?(t=r[q++],0===t?(r[q-
-2]=139,r[q-1]=22,h=0):s=b[t]):28===t?(l[h]=(r[q]<<24|r[q+1]<<16)>>16,q+=2,h++):14==t?4<=h&&(h-=4,mb&&(e[d]=l.slice(h,h+4),m=!1)):32<=t&&246>=t?(l[h]=t-139,h++):247<=t&&254>=t?(l[h]=251>t?(t-247<<8)+r[q]+108:-(t-251<<8)-r[q]-108,q++,h++):255==t?(l[h]=(r[q]<<24|r[q+1]<<16|r[q+2]<<8|r[q+3])/65536,q+=4,h++):19==t||20==t?(k+=h>>1,q+=k+7>>3,h=0):s=a[t];if(s){s.stem&&(k+=h>>1);if("min"in s&&!p&&h<s.min){Y("Not enough parameters for "+s.id+"; actual: "+h+", expected: "+s.min);m=!1;break}"stackDelta"in s?
-("stackFn"in s&&s.stackFn(l,h),h+=s.stackDelta):s.resetStack?(h=0,p=!1):s.undefStack&&(h=0,p=!0)}}m||c.set(d,new Uint8Array([14]))}return{charStrings:c,seacs:e}},emptyPrivateDictionary:function(a){var b=this.createDict(Yb,[],a.strings);a.setByKey(18,[0,0]);a.privateDict=b},parsePrivateDict:function(a){if(a.hasName("Private")){var b=a.getByName("Private");if(!U(b)||2!==b.length)a.removeByName("Private");else{var f=b[0],b=b[1];if(0===f||b>=this.bytes.length)this.emptyPrivateDictionary(a);else if(f=
-this.bytes.subarray(b,b+f),f=this.parseDict(f),f=this.createDict(Yb,f,a.strings),a.privateDict=f,f.getByName("Subrs")){var d=f.getByName("Subrs"),b=b+d;0===d||b>=this.bytes.length?this.emptyPrivateDictionary(a):(a=this.parseIndex(b),f.subrsIndex=a.obj)}}}else this.emptyPrivateDictionary(a)},parseCharsets:function(a,b,f,d){if(0===a)return new fb(!0,ub.ISO_ADOBE,vd);if(1==a)return new fb(!0,ub.EXPERT,wd);if(2==a)return new fb(!0,ub.EXPERT_SUBSET,xd);var h=this.bytes,l=a,p=h[a++],k=[".notdef"];b-=1;
-switch(p){case 0:for(var m=0;m<b;m++){var r=h[a++]<<8|h[a++];k.push(d?r:f.get(r))}break;case 1:for(;k.length<=b;)for(var r=h[a++]<<8|h[a++],n=h[a++],m=0;m<=n;m++)k.push(d?r++:f.get(r++));break;case 2:for(;k.length<=b;){r=h[a++]<<8|h[a++];n=h[a++]<<8|h[a++];for(m=0;m<=n;m++)k.push(d?r++:f.get(r++))}break;default:w("Unknown charset format")}a=h.subarray(l,a);return new fb(!1,p,k,a)},parseEncoding:function(a,b,f,d){var h={},l=this.bytes,p=!1,k,m=null;if(0===a||1==a){p=!0;a=(k=a)?qa.ExpertEncoding:qa.StandardEncoding;
-var r=0;for(b=d.length;r<b;r++)f=a.indexOf(d[r]),-1!=f&&(h[f]=r)}else{d=a;k=l[a++];switch(k&127){case 0:m=l[a++];for(r=1;r<=m;r++)h[l[a++]]=r;break;case 1:for(var m=l[a++],n=1,r=0;r<m;r++)for(var q=l[a++],t=l[a++],s=q;s<=q+t;s++)h[s]=n++;break;default:w("Unknow encoding format: "+k+" in CFF")}r=a;if(k&128){l[d]&=127;m=l[a++];for(n=0;n<m;n++)q=l[a++],t=(l[a++]<<8)+(l[a++]&255),h[q]=b.differences.indexOf(f.get(t))}m=l.subarray(d,r)}return new Od(p,k&127,h,m)},parseFDSelect:function(a,b){var f=a,d=this.bytes,
-h=d[a++],l=[];switch(h){case 0:for(h=0;h<b;++h){var p=d[a++];l.push(p)}break;case 3:p=d[a++]<<8|d[a++];for(h=0;h<p;++h)for(var k=d[a++]<<8|d[a++],m=d[a++],r=d[a]<<8|d[a+1];k<r;++k)l.push(m);a+=2;break;default:w("Unknown fdselect format "+h)}return new Pd(l,d.subarray(f,a))}};return d}(),Rc=function(){return function(){this.header=null;this.names=[];this.topDict=null;this.strings=new Xb;this.charStrings=this.charset=this.encoding=this.globalSubrIndex=null;this.fdArray=[];this.fdSelect=null;this.isCIDFont=
-!1}}(),Sc=function(){return function(d,a,b,c){this.major=d;this.minor=a;this.hdrSize=b;this.offSize=c}}(),Xb=function(){function d(){this.strings=[]}d.prototype={get:function(a){return 0<=a&&390>=a?Fb[a]:a-391<=this.strings.length?this.strings[a-391]:Fb[0]},add:function(a){this.strings.push(a)},get count(){return this.strings.length}};return d}(),bb=function(){function d(){this.objects=[];this.length=0}d.prototype={add:function(a){this.length+=a.length;this.objects.push(a)},set:function(a,b){this.length+=
-b.length-this.objects[a].length;this.objects[a]=b},get:function(a){return this.objects[a]},get count(){return this.objects.length}};return d}(),Sa=function(){function d(a,b){this.keyToNameMap=a.keyToNameMap;this.nameToKeyMap=a.nameToKeyMap;this.defaults=a.defaults;this.types=a.types;this.opcodes=a.opcodes;this.order=a.order;this.strings=b;this.values={}}d.prototype={setByKey:function(a,b){if(!(a in this.keyToNameMap))return!1;if(0===b.length)return!0;var c=this.types[a];if("num"===c||"sid"===c||"offset"===
-c)b=b[0];this.values[a]=b;return!0},setByName:function(a,b){a in this.nameToKeyMap||w('Invalid dictionary name "'+a+'"');this.values[this.nameToKeyMap[a]]=b},hasName:function(a){return this.nameToKeyMap[a]in this.values},getByName:function(a){a in this.nameToKeyMap||w('Invalid dictionary name "'+a+'"');a=this.nameToKeyMap[a];return!(a in this.values)?this.defaults[a]:this.values[a]},removeByName:function(a){delete this.values[this.nameToKeyMap[a]]}};d.createTables=function(a){for(var b={keyToNameMap:{},
-nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]},c=0,e=a.length;c<e;++c){var f=a[c],d=U(f[0])?(f[0][0]<<8)+f[0][1]:f[0];b.keyToNameMap[d]=f[1];b.nameToKeyMap[f[1]]=d;b.types[d]=f[2];b.defaults[d]=f[3];b.opcodes[d]=U(f[0])?f[0]:[f[0]];b.order.push(d)}return b};return d}(),Gb=function(){function d(c){null===b&&(b=Sa.createTables(a));Sa.call(this,b,c);this.privateDict=null}var a=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",null],[1,"Notice",
-"sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix","num num num num num num".split(" "),[0.001,0,0,0.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],[[12,8],"StrokeWidth",
-"num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray","offset",null],
-[[12,38],"FontName","sid",null]],b=null;d.prototype=Object.create(Sa.prototype);return d}(),Yb=function(){function d(c){null===b&&(b=Sa.createTables(a));Sa.call(this,b,c);this.subrsIndex=null}var a=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",0.039625],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH","delta",null],
-[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",0.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]],b=null;d.prototype=Object.create(Sa.prototype);return d}(),ub={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2},fb=function(){return function(d,a,b,c){this.predefined=d;this.format=a;this.charset=b;this.raw=c}}(),Od=function(){return function(d,a,b,c){this.predefined=
-d;this.format=a;this.encoding=b;this.raw=c}}(),Pd=function(){return function(d,a){this.fdSelect=d;this.raw=a}}(),Uc=function(){function d(){this.offsets={}}d.prototype={isTracking:function(a){return a in this.offsets},track:function(a,b){a in this.offsets&&w("Already tracking location of "+a);this.offsets[a]=b},offset:function(a){for(var b in this.offsets)this.offsets[b]+=a},setEntryLocation:function(a,b,c){a in this.offsets||w("Not tracking location of "+a);c=c.data;a=this.offsets[a];for(var e=0,
-f=b.length;e<f;++e){var d=5*e+a,h=d+1,l=d+2,p=d+3,k=d+4;(29!==c[d]||0!==c[h]||0!==c[l]||0!==c[p]||0!==c[k])&&w("writing to an offset that is not empty");var m=b[e];c[d]=29;c[h]=m>>24&255;c[l]=m>>16&255;c[p]=m>>8&255;c[k]=m&255}}};return d}(),Tc=function(){function d(a){for(var c=[],e=0,f=a.length;e<f;++e)c[e]=a.charCodeAt(e);return c}function a(a){this.cff=a}a.prototype={compile:function(){var a=this.cff,c={data:[],length:0,add:function(a){this.data=this.data.concat(a);this.length=this.data.length}},
-e=this.compileHeader(a.header);c.add(e);e=this.compileNameIndex(a.names);c.add(e);if(a.isCIDFont&&a.topDict.hasName("FontMatrix")){e=a.topDict.getByName("FontMatrix");a.topDict.removeByName("FontMatrix");for(var f=0,d=a.fdArray.length;f<d;f++){var h=a.fdArray[f],l=e.slice(0);h.hasName("FontMatrix")&&(l=M.transform(l,h.getByName("FontMatrix")));h.setByName("FontMatrix",l)}}f=this.compileTopDicts([a.topDict],c.length,a.isCIDFont);c.add(f.output);e=f.trackers[0];f=this.compileStringIndex(a.strings.strings);
-c.add(f);f=this.compileIndex(a.globalSubrIndex);c.add(f);a.encoding&&a.topDict.hasName("Encoding")&&(a.encoding.predefined?e.setEntryLocation("Encoding",[a.encoding.format],c):(f=this.compileEncoding(a.encoding),e.setEntryLocation("Encoding",[c.length],c),c.add(f)));a.charset&&a.topDict.hasName("charset")&&(a.charset.predefined?e.setEntryLocation("charset",[a.charset.format],c):(f=this.compileCharset(a.charset),e.setEntryLocation("charset",[c.length],c),c.add(f)));f=this.compileCharStrings(a.charStrings);
-e.setEntryLocation("CharStrings",[c.length],c);c.add(f);a.isCIDFont&&(e.setEntryLocation("FDSelect",[c.length],c),f=this.compileFDSelect(a.fdSelect.raw),c.add(f),f=this.compileTopDicts(a.fdArray,c.length,!0),e.setEntryLocation("FDArray",[c.length],c),c.add(f.output),this.compilePrivateDicts(a.fdArray,f.trackers,c));this.compilePrivateDicts([a.topDict],[e],c);c.add([0]);return c.data},encodeNumber:function(a){return parseFloat(a)==parseInt(a,10)&&!isNaN(a)?this.encodeInteger(a):this.encodeFloat(a)},
-encodeFloat:function(a){var c=a.toString();a="";for(var e=0,f=c.length;e<f;++e){var d=c[e];a="e"===d?a+("-"===c[++e]?"c":"b"):"."===d?a+"a":"-"===d?a+"e":a+d}a+=a.length&1?"f":"ff";c=[30];e=0;for(f=a.length;e<f;e+=2)c.push(parseInt(a.substr(e,2),16));return c},encodeInteger:function(a){-107<=a&&107>=a?a=[a+139]:108<=a&&1131>=a?(a=[a-108],a=[(a>>8)+247,a&255]):-1131<=a&&-108>=a?(a=-a-108,a=[(a>>8)+251,a&255]):a=-32768<=a&&32767>=a?[28,a>>8&255,a&255]:[29,a>>24&255,a>>16&255,a>>8&255,a&255];return a},
-compileHeader:function(a){return[a.major,a.minor,a.hdrSize,a.offSize]},compileNameIndex:function(a){for(var c=new bb,e=0,f=a.length;e<f;++e)c.add(d(a[e]));return this.compileIndex(c)},compileTopDicts:function(a,c,e){for(var f=[],d=new bb,h=0,l=a.length;h<l;++h){var p=a[h];e&&(p.removeByName("CIDFontVersion"),p.removeByName("CIDFontRevision"),p.removeByName("CIDFontType"),p.removeByName("CIDCount"),p.removeByName("UIDBase"));var k=new Uc,p=this.compileDict(p,k);f.push(k);d.add(p);k.offset(c)}d=this.compileIndex(d,
-f);return{trackers:f,output:d}},compilePrivateDicts:function(a,c,e){for(var f=0,d=a.length;f<d;++f){var h=a[f];h.privateDict&&h.hasName("Private")||w("There must be an private dictionary.");var l=h.privateDict,h=new Uc,p=this.compileDict(l,h),k=e.length;h.offset(k);p.length||(k=0);c[f].setEntryLocation("Private",[p.length,k],e);e.add(p);l.subrsIndex&&l.hasName("Subrs")&&(l=this.compileIndex(l.subrsIndex),h.setEntryLocation("Subrs",[p.length],e),e.add(l))}},compileDict:function(a,c){for(var e=[],f=
-a.order,d=0;d<f.length;++d){var h=f[d];if(h in a.values){var l=a.values[h],p=a.types[h];U(p)||(p=[p]);U(l)||(l=[l]);if(0!==l.length){for(var k=0,m=p.length;k<m;++k){var r=p[k],n=l[k];switch(r){case "num":case "sid":e=e.concat(this.encodeNumber(n));break;case "offset":r=a.keyToNameMap[h];c.isTracking(r)||c.track(r,e.length);e=e.concat([29,0,0,0,0]);break;case "array":case "delta":e=e.concat(this.encodeNumber(n));r=1;for(n=l.length;r<n;++r)e=e.concat(this.encodeNumber(l[r]));break;default:w("Unknown data type of "+
-r)}}e=e.concat(a.opcodes[h])}}}return e},compileStringIndex:function(a){for(var c=new bb,e=0,f=a.length;e<f;++e)c.add(d(a[e]));return this.compileIndex(c)},compileGlobalSubrIndex:function(){this.out.writeByteArray(this.compileIndex(this.cff.globalSubrIndex))},compileCharStrings:function(a){return this.compileIndex(a)},compileCharset:function(a){return this.compileTypedArray(a.raw)},compileEncoding:function(a){return this.compileTypedArray(a.raw)},compileFDSelect:function(a){return this.compileTypedArray(a)},
-compileTypedArray:function(a){for(var c=[],e=0,f=a.length;e<f;++e)c[e]=a[e];return c},compileIndex:function(a,c){c=c||[];var e=a.objects,f=e.length;if(0===f)return[0,0,0];for(var d=[f>>8&255,f&255],h=1,l=0;l<f;++l)h+=e[l].length;h=256>h?1:65536>h?2:16777216>h?3:4;d.push(h);for(var p=1,l=0;l<f+1;l++)1===h?d.push(p&255):2===h?d.push(p>>8&255,p&255):3===h?d.push(p>>16&255,p>>8&255,p&255):d.push(p>>>24&255,p>>16&255,p>>8&255,p&255),e[l]&&(p+=e[l].length);for(l=0;l<f;l++){c[l]&&c[l].offset(d.length);h=
-0;for(p=e[l].length;h<p;h++)d.push(e[l][h])}return d}};return a}();/Windows/.test(navigator.userAgent)&&(mb=!0);/Windows.*Chrome/.test(navigator.userAgent)&&(Mc=61696);var Ga={A:65,AE:198,AEacute:508,AEmacron:482,AEsmall:63462,Aacute:193,Aacutesmall:63457,Abreve:258,Abreveacute:7854,Abrevecyrillic:1232,Abrevedotbelow:7862,Abrevegrave:7856,Abrevehookabove:7858,Abrevetilde:7860,Acaron:461,Acircle:9398,Acircumflex:194,Acircumflexacute:7844,Acircumflexdotbelow:7852,Acircumflexgrave:7846,Acircumflexhookabove:7848,
-Acircumflexsmall:63458,Acircumflextilde:7850,Acute:63177,Acutesmall:63412,Acyrillic:1040,Adblgrave:512,Adieresis:196,Adieresiscyrillic:1234,Adieresismacron:478,Adieresissmall:63460,Adotbelow:7840,Adotmacron:480,Agrave:192,Agravesmall:63456,Ahookabove:7842,Aiecyrillic:1236,Ainvertedbreve:514,Alpha:913,Alphatonos:902,Amacron:256,Amonospace:65313,Aogonek:260,Aring:197,Aringacute:506,Aringbelow:7680,Aringsmall:63461,Asmall:63329,Atilde:195,Atildesmall:63459,Aybarmenian:1329,B:66,Bcircle:9399,Bdotaccent:7682,
-Bdotbelow:7684,Becyrillic:1041,Benarmenian:1330,Beta:914,Bhook:385,Blinebelow:7686,Bmonospace:65314,Brevesmall:63220,Bsmall:63330,Btopbar:386,C:67,Caarmenian:1342,Cacute:262,Caron:63178,Caronsmall:63221,Ccaron:268,Ccedilla:199,Ccedillaacute:7688,Ccedillasmall:63463,Ccircle:9400,Ccircumflex:264,Cdot:266,Cdotaccent:266,Cedillasmall:63416,Chaarmenian:1353,Cheabkhasiancyrillic:1212,Checyrillic:1063,Chedescenderabkhasiancyrillic:1214,Chedescendercyrillic:1206,Chedieresiscyrillic:1268,Cheharmenian:1347,
-Chekhakassiancyrillic:1227,Cheverticalstrokecyrillic:1208,Chi:935,Chook:391,Circumflexsmall:63222,Cmonospace:65315,Coarmenian:1361,Csmall:63331,D:68,DZ:497,DZcaron:452,Daarmenian:1332,Dafrican:393,Dcaron:270,Dcedilla:7696,Dcircle:9401,Dcircumflexbelow:7698,Dcroat:272,Ddotaccent:7690,Ddotbelow:7692,Decyrillic:1044,Deicoptic:1006,Delta:8710,Deltagreek:916,Dhook:394,Dieresis:63179,DieresisAcute:63180,DieresisGrave:63181,Dieresissmall:63400,Digammagreek:988,Djecyrillic:1026,Dlinebelow:7694,Dmonospace:65316,
-Dotaccentsmall:63223,Dslash:272,Dsmall:63332,Dtopbar:395,Dz:498,Dzcaron:453,Dzeabkhasiancyrillic:1248,Dzecyrillic:1029,Dzhecyrillic:1039,E:69,Eacute:201,Eacutesmall:63465,Ebreve:276,Ecaron:282,Ecedillabreve:7708,Echarmenian:1333,Ecircle:9402,Ecircumflex:202,Ecircumflexacute:7870,Ecircumflexbelow:7704,Ecircumflexdotbelow:7878,Ecircumflexgrave:7872,Ecircumflexhookabove:7874,Ecircumflexsmall:63466,Ecircumflextilde:7876,Ecyrillic:1028,Edblgrave:516,Edieresis:203,Edieresissmall:63467,Edot:278,Edotaccent:278,
-Edotbelow:7864,Efcyrillic:1060,Egrave:200,Egravesmall:63464,Eharmenian:1335,Ehookabove:7866,Eightroman:8551,Einvertedbreve:518,Eiotifiedcyrillic:1124,Elcyrillic:1051,Elevenroman:8554,Emacron:274,Emacronacute:7702,Emacrongrave:7700,Emcyrillic:1052,Emonospace:65317,Encyrillic:1053,Endescendercyrillic:1186,Eng:330,Enghecyrillic:1188,Enhookcyrillic:1223,Eogonek:280,Eopen:400,Epsilon:917,Epsilontonos:904,Ercyrillic:1056,Ereversed:398,Ereversedcyrillic:1069,Escyrillic:1057,Esdescendercyrillic:1194,Esh:425,
-Esmall:63333,Eta:919,Etarmenian:1336,Etatonos:905,Eth:208,Ethsmall:63472,Etilde:7868,Etildebelow:7706,Euro:8364,Ezh:439,Ezhcaron:494,Ezhreversed:440,F:70,Fcircle:9403,Fdotaccent:7710,Feharmenian:1366,Feicoptic:996,Fhook:401,Fitacyrillic:1138,Fiveroman:8548,Fmonospace:65318,Fourroman:8547,Fsmall:63334,G:71,GBsquare:13191,Gacute:500,Gamma:915,Gammaafrican:404,Gangiacoptic:1002,Gbreve:286,Gcaron:486,Gcedilla:290,Gcircle:9404,Gcircumflex:284,Gcommaaccent:290,Gdot:288,Gdotaccent:288,Gecyrillic:1043,Ghadarmenian:1346,
-Ghemiddlehookcyrillic:1172,Ghestrokecyrillic:1170,Gheupturncyrillic:1168,Ghook:403,Gimarmenian:1331,Gjecyrillic:1027,Gmacron:7712,Gmonospace:65319,Grave:63182,Gravesmall:63328,Gsmall:63335,Gsmallhook:667,Gstroke:484,H:72,H18533:9679,H18543:9642,H18551:9643,H22073:9633,HPsquare:13259,Haabkhasiancyrillic:1192,Hadescendercyrillic:1202,Hardsigncyrillic:1066,Hbar:294,Hbrevebelow:7722,Hcedilla:7720,Hcircle:9405,Hcircumflex:292,Hdieresis:7718,Hdotaccent:7714,Hdotbelow:7716,Hmonospace:65320,Hoarmenian:1344,
-Horicoptic:1E3,Hsmall:63336,Hungarumlaut:63183,Hungarumlautsmall:63224,Hzsquare:13200,I:73,IAcyrillic:1071,IJ:306,IUcyrillic:1070,Iacute:205,Iacutesmall:63469,Ibreve:300,Icaron:463,Icircle:9406,Icircumflex:206,Icircumflexsmall:63470,Icyrillic:1030,Idblgrave:520,Idieresis:207,Idieresisacute:7726,Idieresiscyrillic:1252,Idieresissmall:63471,Idot:304,Idotaccent:304,Idotbelow:7882,Iebrevecyrillic:1238,Iecyrillic:1045,Ifraktur:8465,Igrave:204,Igravesmall:63468,Ihookabove:7880,Iicyrillic:1048,Iinvertedbreve:522,
-Iishortcyrillic:1049,Imacron:298,Imacroncyrillic:1250,Imonospace:65321,Iniarmenian:1339,Iocyrillic:1025,Iogonek:302,Iota:921,Iotaafrican:406,Iotadieresis:938,Iotatonos:906,Ismall:63337,Istroke:407,Itilde:296,Itildebelow:7724,Izhitsacyrillic:1140,Izhitsadblgravecyrillic:1142,J:74,Jaarmenian:1345,Jcircle:9407,Jcircumflex:308,Jecyrillic:1032,Jheharmenian:1355,Jmonospace:65322,Jsmall:63338,K:75,KBsquare:13189,KKsquare:13261,Kabashkircyrillic:1184,Kacute:7728,Kacyrillic:1050,Kadescendercyrillic:1178,Kahookcyrillic:1219,
-Kappa:922,Kastrokecyrillic:1182,Kaverticalstrokecyrillic:1180,Kcaron:488,Kcedilla:310,Kcircle:9408,Kcommaaccent:310,Kdotbelow:7730,Keharmenian:1364,Kenarmenian:1343,Khacyrillic:1061,Kheicoptic:998,Khook:408,Kjecyrillic:1036,Klinebelow:7732,Kmonospace:65323,Koppacyrillic:1152,Koppagreek:990,Ksicyrillic:1134,Ksmall:63339,L:76,LJ:455,LL:63167,Lacute:313,Lambda:923,Lcaron:317,Lcedilla:315,Lcircle:9409,Lcircumflexbelow:7740,Lcommaaccent:315,Ldot:319,Ldotaccent:319,Ldotbelow:7734,Ldotbelowmacron:7736,Liwnarmenian:1340,
-Lj:456,Ljecyrillic:1033,Llinebelow:7738,Lmonospace:65324,Lslash:321,Lslashsmall:63225,Lsmall:63340,M:77,MBsquare:13190,Macron:63184,Macronsmall:63407,Macute:7742,Mcircle:9410,Mdotaccent:7744,Mdotbelow:7746,Menarmenian:1348,Mmonospace:65325,Msmall:63341,Mturned:412,Mu:924,N:78,NJ:458,Nacute:323,Ncaron:327,Ncedilla:325,Ncircle:9411,Ncircumflexbelow:7754,Ncommaaccent:325,Ndotaccent:7748,Ndotbelow:7750,Nhookleft:413,Nineroman:8552,Nj:459,Njecyrillic:1034,Nlinebelow:7752,Nmonospace:65326,Nowarmenian:1350,
-Nsmall:63342,Ntilde:209,Ntildesmall:63473,Nu:925,O:79,OE:338,OEsmall:63226,Oacute:211,Oacutesmall:63475,Obarredcyrillic:1256,Obarreddieresiscyrillic:1258,Obreve:334,Ocaron:465,Ocenteredtilde:415,Ocircle:9412,Ocircumflex:212,Ocircumflexacute:7888,Ocircumflexdotbelow:7896,Ocircumflexgrave:7890,Ocircumflexhookabove:7892,Ocircumflexsmall:63476,Ocircumflextilde:7894,Ocyrillic:1054,Odblacute:336,Odblgrave:524,Odieresis:214,Odieresiscyrillic:1254,Odieresissmall:63478,Odotbelow:7884,Ogoneksmall:63227,Ograve:210,
-Ogravesmall:63474,Oharmenian:1365,Ohm:8486,Ohookabove:7886,Ohorn:416,Ohornacute:7898,Ohorndotbelow:7906,Ohorngrave:7900,Ohornhookabove:7902,Ohorntilde:7904,Ohungarumlaut:336,Oi:418,Oinvertedbreve:526,Omacron:332,Omacronacute:7762,Omacrongrave:7760,Omega:8486,Omegacyrillic:1120,Omegagreek:937,Omegaroundcyrillic:1146,Omegatitlocyrillic:1148,Omegatonos:911,Omicron:927,Omicrontonos:908,Omonospace:65327,Oneroman:8544,Oogonek:490,Oogonekmacron:492,Oopen:390,Oslash:216,Oslashacute:510,Oslashsmall:63480,
-Osmall:63343,Ostrokeacute:510,Otcyrillic:1150,Otilde:213,Otildeacute:7756,Otildedieresis:7758,Otildesmall:63477,P:80,Pacute:7764,Pcircle:9413,Pdotaccent:7766,Pecyrillic:1055,Peharmenian:1354,Pemiddlehookcyrillic:1190,Phi:934,Phook:420,Pi:928,Piwrarmenian:1363,Pmonospace:65328,Psi:936,Psicyrillic:1136,Psmall:63344,Q:81,Qcircle:9414,Qmonospace:65329,Qsmall:63345,R:82,Raarmenian:1356,Racute:340,Rcaron:344,Rcedilla:342,Rcircle:9415,Rcommaaccent:342,Rdblgrave:528,Rdotaccent:7768,Rdotbelow:7770,Rdotbelowmacron:7772,
-Reharmenian:1360,Rfraktur:8476,Rho:929,Ringsmall:63228,Rinvertedbreve:530,Rlinebelow:7774,Rmonospace:65330,Rsmall:63346,Rsmallinverted:641,Rsmallinvertedsuperior:694,S:83,SF010000:9484,SF020000:9492,SF030000:9488,SF040000:9496,SF050000:9532,SF060000:9516,SF070000:9524,SF080000:9500,SF090000:9508,SF100000:9472,SF110000:9474,SF190000:9569,SF200000:9570,SF210000:9558,SF220000:9557,SF230000:9571,SF240000:9553,SF250000:9559,SF260000:9565,SF270000:9564,SF280000:9563,SF360000:9566,SF370000:9567,SF380000:9562,
-SF390000:9556,SF400000:9577,SF410000:9574,SF420000:9568,SF430000:9552,SF440000:9580,SF450000:9575,SF460000:9576,SF470000:9572,SF480000:9573,SF490000:9561,SF500000:9560,SF510000:9554,SF520000:9555,SF530000:9579,SF540000:9578,Sacute:346,Sacutedotaccent:7780,Sampigreek:992,Scaron:352,Scarondotaccent:7782,Scaronsmall:63229,Scedilla:350,Schwa:399,Schwacyrillic:1240,Schwadieresiscyrillic:1242,Scircle:9416,Scircumflex:348,Scommaaccent:536,Sdotaccent:7776,Sdotbelow:7778,Sdotbelowdotaccent:7784,Seharmenian:1357,
-Sevenroman:8550,Shaarmenian:1351,Shacyrillic:1064,Shchacyrillic:1065,Sheicoptic:994,Shhacyrillic:1210,Shimacoptic:1004,Sigma:931,Sixroman:8549,Smonospace:65331,Softsigncyrillic:1068,Ssmall:63347,Stigmagreek:986,T:84,Tau:932,Tbar:358,Tcaron:356,Tcedilla:354,Tcircle:9417,Tcircumflexbelow:7792,Tcommaaccent:354,Tdotaccent:7786,Tdotbelow:7788,Tecyrillic:1058,Tedescendercyrillic:1196,Tenroman:8553,Tetsecyrillic:1204,Theta:920,Thook:428,Thorn:222,Thornsmall:63486,Threeroman:8546,Tildesmall:63230,Tiwnarmenian:1359,
-Tlinebelow:7790,Tmonospace:65332,Toarmenian:1337,Tonefive:444,Tonesix:388,Tonetwo:423,Tretroflexhook:430,Tsecyrillic:1062,Tshecyrillic:1035,Tsmall:63348,Twelveroman:8555,Tworoman:8545,U:85,Uacute:218,Uacutesmall:63482,Ubreve:364,Ucaron:467,Ucircle:9418,Ucircumflex:219,Ucircumflexbelow:7798,Ucircumflexsmall:63483,Ucyrillic:1059,Udblacute:368,Udblgrave:532,Udieresis:220,Udieresisacute:471,Udieresisbelow:7794,Udieresiscaron:473,Udieresiscyrillic:1264,Udieresisgrave:475,Udieresismacron:469,Udieresissmall:63484,
-Udotbelow:7908,Ugrave:217,Ugravesmall:63481,Uhookabove:7910,Uhorn:431,Uhornacute:7912,Uhorndotbelow:7920,Uhorngrave:7914,Uhornhookabove:7916,Uhorntilde:7918,Uhungarumlaut:368,Uhungarumlautcyrillic:1266,Uinvertedbreve:534,Ukcyrillic:1144,Umacron:362,Umacroncyrillic:1262,Umacrondieresis:7802,Umonospace:65333,Uogonek:370,Upsilon:933,Upsilon1:978,Upsilonacutehooksymbolgreek:979,Upsilonafrican:433,Upsilondieresis:939,Upsilondieresishooksymbolgreek:980,Upsilonhooksymbol:978,Upsilontonos:910,Uring:366,Ushortcyrillic:1038,
-Usmall:63349,Ustraightcyrillic:1198,Ustraightstrokecyrillic:1200,Utilde:360,Utildeacute:7800,Utildebelow:7796,V:86,Vcircle:9419,Vdotbelow:7806,Vecyrillic:1042,Vewarmenian:1358,Vhook:434,Vmonospace:65334,Voarmenian:1352,Vsmall:63350,Vtilde:7804,W:87,Wacute:7810,Wcircle:9420,Wcircumflex:372,Wdieresis:7812,Wdotaccent:7814,Wdotbelow:7816,Wgrave:7808,Wmonospace:65335,Wsmall:63351,X:88,Xcircle:9421,Xdieresis:7820,Xdotaccent:7818,Xeharmenian:1341,Xi:926,Xmonospace:65336,Xsmall:63352,Y:89,Yacute:221,Yacutesmall:63485,
-Yatcyrillic:1122,Ycircle:9422,Ycircumflex:374,Ydieresis:376,Ydieresissmall:63487,Ydotaccent:7822,Ydotbelow:7924,Yericyrillic:1067,Yerudieresiscyrillic:1272,Ygrave:7922,Yhook:435,Yhookabove:7926,Yiarmenian:1349,Yicyrillic:1031,Yiwnarmenian:1362,Ymonospace:65337,Ysmall:63353,Ytilde:7928,Yusbigcyrillic:1130,Yusbigiotifiedcyrillic:1132,Yuslittlecyrillic:1126,Yuslittleiotifiedcyrillic:1128,Z:90,Zaarmenian:1334,Zacute:377,Zcaron:381,Zcaronsmall:63231,Zcircle:9423,Zcircumflex:7824,Zdot:379,Zdotaccent:379,
-Zdotbelow:7826,Zecyrillic:1047,Zedescendercyrillic:1176,Zedieresiscyrillic:1246,Zeta:918,Zhearmenian:1338,Zhebrevecyrillic:1217,Zhecyrillic:1046,Zhedescendercyrillic:1174,Zhedieresiscyrillic:1244,Zlinebelow:7828,Zmonospace:65338,Zsmall:63354,Zstroke:437,a:97,aabengali:2438,aacute:225,aadeva:2310,aagujarati:2694,aagurmukhi:2566,aamatragurmukhi:2622,aarusquare:13059,aavowelsignbengali:2494,aavowelsigndeva:2366,aavowelsigngujarati:2750,abbreviationmarkarmenian:1375,abbreviationsigndeva:2416,abengali:2437,
-abopomofo:12570,abreve:259,abreveacute:7855,abrevecyrillic:1233,abrevedotbelow:7863,abrevegrave:7857,abrevehookabove:7859,abrevetilde:7861,acaron:462,acircle:9424,acircumflex:226,acircumflexacute:7845,acircumflexdotbelow:7853,acircumflexgrave:7847,acircumflexhookabove:7849,acircumflextilde:7851,acute:180,acutebelowcmb:791,acutecmb:769,acutecomb:769,acutedeva:2388,acutelowmod:719,acutetonecmb:833,acyrillic:1072,adblgrave:513,addakgurmukhi:2673,adeva:2309,adieresis:228,adieresiscyrillic:1235,adieresismacron:479,
-adotbelow:7841,adotmacron:481,ae:230,aeacute:509,aekorean:12624,aemacron:483,afii00208:8213,afii08941:8356,afii10017:1040,afii10018:1041,afii10019:1042,afii10020:1043,afii10021:1044,afii10022:1045,afii10023:1025,afii10024:1046,afii10025:1047,afii10026:1048,afii10027:1049,afii10028:1050,afii10029:1051,afii10030:1052,afii10031:1053,afii10032:1054,afii10033:1055,afii10034:1056,afii10035:1057,afii10036:1058,afii10037:1059,afii10038:1060,afii10039:1061,afii10040:1062,afii10041:1063,afii10042:1064,afii10043:1065,
-afii10044:1066,afii10045:1067,afii10046:1068,afii10047:1069,afii10048:1070,afii10049:1071,afii10050:1168,afii10051:1026,afii10052:1027,afii10053:1028,afii10054:1029,afii10055:1030,afii10056:1031,afii10057:1032,afii10058:1033,afii10059:1034,afii10060:1035,afii10061:1036,afii10062:1038,afii10063:63172,afii10064:63173,afii10065:1072,afii10066:1073,afii10067:1074,afii10068:1075,afii10069:1076,afii10070:1077,afii10071:1105,afii10072:1078,afii10073:1079,afii10074:1080,afii10075:1081,afii10076:1082,afii10077:1083,
-afii10078:1084,afii10079:1085,afii10080:1086,afii10081:1087,afii10082:1088,afii10083:1089,afii10084:1090,afii10085:1091,afii10086:1092,afii10087:1093,afii10088:1094,afii10089:1095,afii10090:1096,afii10091:1097,afii10092:1098,afii10093:1099,afii10094:1100,afii10095:1101,afii10096:1102,afii10097:1103,afii10098:1169,afii10099:1106,afii10100:1107,afii10101:1108,afii10102:1109,afii10103:1110,afii10104:1111,afii10105:1112,afii10106:1113,afii10107:1114,afii10108:1115,afii10109:1116,afii10110:1118,afii10145:1039,
-afii10146:1122,afii10147:1138,afii10148:1140,afii10192:63174,afii10193:1119,afii10194:1123,afii10195:1139,afii10196:1141,afii10831:63175,afii10832:63176,afii10846:1241,afii299:8206,afii300:8207,afii301:8205,afii57381:1642,afii57388:1548,afii57392:1632,afii57393:1633,afii57394:1634,afii57395:1635,afii57396:1636,afii57397:1637,afii57398:1638,afii57399:1639,afii57400:1640,afii57401:1641,afii57403:1563,afii57407:1567,afii57409:1569,afii57410:1570,afii57411:1571,afii57412:1572,afii57413:1573,afii57414:1574,
-afii57415:1575,afii57416:1576,afii57417:1577,afii57418:1578,afii57419:1579,afii57420:1580,afii57421:1581,afii57422:1582,afii57423:1583,afii57424:1584,afii57425:1585,afii57426:1586,afii57427:1587,afii57428:1588,afii57429:1589,afii57430:1590,afii57431:1591,afii57432:1592,afii57433:1593,afii57434:1594,afii57440:1600,afii57441:1601,afii57442:1602,afii57443:1603,afii57444:1604,afii57445:1605,afii57446:1606,afii57448:1608,afii57449:1609,afii57450:1610,afii57451:1611,afii57452:1612,afii57453:1613,afii57454:1614,
-afii57455:1615,afii57456:1616,afii57457:1617,afii57458:1618,afii57470:1607,afii57505:1700,afii57506:1662,afii57507:1670,afii57508:1688,afii57509:1711,afii57511:1657,afii57512:1672,afii57513:1681,afii57514:1722,afii57519:1746,afii57534:1749,afii57636:8362,afii57645:1470,afii57658:1475,afii57664:1488,afii57665:1489,afii57666:1490,afii57667:1491,afii57668:1492,afii57669:1493,afii57670:1494,afii57671:1495,afii57672:1496,afii57673:1497,afii57674:1498,afii57675:1499,afii57676:1500,afii57677:1501,afii57678:1502,
-afii57679:1503,afii57680:1504,afii57681:1505,afii57682:1506,afii57683:1507,afii57684:1508,afii57685:1509,afii57686:1510,afii57687:1511,afii57688:1512,afii57689:1513,afii57690:1514,afii57694:64298,afii57695:64299,afii57700:64331,afii57705:64287,afii57716:1520,afii57717:1521,afii57718:1522,afii57723:64309,afii57793:1460,afii57794:1461,afii57795:1462,afii57796:1467,afii57797:1464,afii57798:1463,afii57799:1456,afii57800:1458,afii57801:1457,afii57802:1459,afii57803:1474,afii57804:1473,afii57806:1465,afii57807:1468,
-afii57839:1469,afii57841:1471,afii57842:1472,afii57929:700,afii61248:8453,afii61289:8467,afii61352:8470,afii61573:8236,afii61574:8237,afii61575:8238,afii61664:8204,afii63167:1645,afii64937:701,agrave:224,agujarati:2693,agurmukhi:2565,ahiragana:12354,ahookabove:7843,aibengali:2448,aibopomofo:12574,aideva:2320,aiecyrillic:1237,aigujarati:2704,aigurmukhi:2576,aimatragurmukhi:2632,ainarabic:1593,ainfinalarabic:65226,aininitialarabic:65227,ainmedialarabic:65228,ainvertedbreve:515,aivowelsignbengali:2504,
-aivowelsigndeva:2376,aivowelsigngujarati:2760,akatakana:12450,akatakanahalfwidth:65393,akorean:12623,alef:1488,alefarabic:1575,alefdageshhebrew:64304,aleffinalarabic:65166,alefhamzaabovearabic:1571,alefhamzaabovefinalarabic:65156,alefhamzabelowarabic:1573,alefhamzabelowfinalarabic:65160,alefhebrew:1488,aleflamedhebrew:64335,alefmaddaabovearabic:1570,alefmaddaabovefinalarabic:65154,alefmaksuraarabic:1609,alefmaksurafinalarabic:65264,alefmaksurainitialarabic:65267,alefmaksuramedialarabic:65268,alefpatahhebrew:64302,
-alefqamatshebrew:64303,aleph:8501,allequal:8780,alpha:945,alphatonos:940,amacron:257,amonospace:65345,ampersand:38,ampersandmonospace:65286,ampersandsmall:63270,amsquare:13250,anbopomofo:12578,angbopomofo:12580,angbracketleft:12296,angbracketright:12297,angkhankhuthai:3674,angle:8736,anglebracketleft:12296,anglebracketleftvertical:65087,anglebracketright:12297,anglebracketrightvertical:65088,angleleft:9001,angleright:9002,angstrom:8491,anoteleia:903,anudattadeva:2386,anusvarabengali:2434,anusvaradeva:2306,
-anusvaragujarati:2690,aogonek:261,apaatosquare:13056,aparen:9372,apostrophearmenian:1370,apostrophemod:700,apple:63743,approaches:8784,approxequal:8776,approxequalorimage:8786,approximatelyequal:8773,araeaekorean:12686,araeakorean:12685,arc:8978,arighthalfring:7834,aring:229,aringacute:507,aringbelow:7681,arrowboth:8596,arrowdashdown:8675,arrowdashleft:8672,arrowdashright:8674,arrowdashup:8673,arrowdblboth:8660,arrowdbldown:8659,arrowdblleft:8656,arrowdblright:8658,arrowdblup:8657,arrowdown:8595,
-arrowdownleft:8601,arrowdownright:8600,arrowdownwhite:8681,arrowheaddownmod:709,arrowheadleftmod:706,arrowheadrightmod:707,arrowheadupmod:708,arrowhorizex:63719,arrowleft:8592,arrowleftdbl:8656,arrowleftdblstroke:8653,arrowleftoverright:8646,arrowleftwhite:8678,arrowright:8594,arrowrightdblstroke:8655,arrowrightheavy:10142,arrowrightoverleft:8644,arrowrightwhite:8680,arrowtableft:8676,arrowtabright:8677,arrowup:8593,arrowupdn:8597,arrowupdnbse:8616,arrowupdownbase:8616,arrowupleft:8598,arrowupleftofdown:8645,
-arrowupright:8599,arrowupwhite:8679,arrowvertex:63718,asciicircum:94,asciicircummonospace:65342,asciitilde:126,asciitildemonospace:65374,ascript:593,ascriptturned:594,asmallhiragana:12353,asmallkatakana:12449,asmallkatakanahalfwidth:65383,asterisk:42,asteriskaltonearabic:1645,asteriskarabic:1645,asteriskmath:8727,asteriskmonospace:65290,asterisksmall:65121,asterism:8258,asuperior:63209,asymptoticallyequal:8771,at:64,atilde:227,atmonospace:65312,atsmall:65131,aturned:592,aubengali:2452,aubopomofo:12576,
-audeva:2324,augujarati:2708,augurmukhi:2580,aulengthmarkbengali:2519,aumatragurmukhi:2636,auvowelsignbengali:2508,auvowelsigndeva:2380,auvowelsigngujarati:2764,avagrahadeva:2365,aybarmenian:1377,ayin:1506,ayinaltonehebrew:64288,ayinhebrew:1506,b:98,babengali:2476,backslash:92,backslashmonospace:65340,badeva:2348,bagujarati:2732,bagurmukhi:2604,bahiragana:12400,bahtthai:3647,bakatakana:12496,bar:124,barmonospace:65372,bbopomofo:12549,bcircle:9425,bdotaccent:7683,bdotbelow:7685,beamedsixteenthnotes:9836,
-because:8757,becyrillic:1073,beharabic:1576,behfinalarabic:65168,behinitialarabic:65169,behiragana:12409,behmedialarabic:65170,behmeeminitialarabic:64671,behmeemisolatedarabic:64520,behnoonfinalarabic:64621,bekatakana:12505,benarmenian:1378,bet:1489,beta:946,betasymbolgreek:976,betdagesh:64305,betdageshhebrew:64305,bethebrew:1489,betrafehebrew:64332,bhabengali:2477,bhadeva:2349,bhagujarati:2733,bhagurmukhi:2605,bhook:595,bihiragana:12403,bikatakana:12499,bilabialclick:664,bindigurmukhi:2562,birusquare:13105,
-blackcircle:9679,blackdiamond:9670,blackdownpointingtriangle:9660,blackleftpointingpointer:9668,blackleftpointingtriangle:9664,blacklenticularbracketleft:12304,blacklenticularbracketleftvertical:65083,blacklenticularbracketright:12305,blacklenticularbracketrightvertical:65084,blacklowerlefttriangle:9699,blacklowerrighttriangle:9698,blackrectangle:9644,blackrightpointingpointer:9658,blackrightpointingtriangle:9654,blacksmallsquare:9642,blacksmilingface:9787,blacksquare:9632,blackstar:9733,blackupperlefttriangle:9700,
-blackupperrighttriangle:9701,blackuppointingsmalltriangle:9652,blackuppointingtriangle:9650,blank:9251,blinebelow:7687,block:9608,bmonospace:65346,bobaimaithai:3610,bohiragana:12412,bokatakana:12508,bparen:9373,bqsquare:13251,braceex:63732,braceleft:123,braceleftbt:63731,braceleftmid:63730,braceleftmonospace:65371,braceleftsmall:65115,bracelefttp:63729,braceleftvertical:65079,braceright:125,bracerightbt:63742,bracerightmid:63741,bracerightmonospace:65373,bracerightsmall:65116,bracerighttp:63740,bracerightvertical:65080,
-bracketleft:91,bracketleftbt:63728,bracketleftex:63727,bracketleftmonospace:65339,bracketlefttp:63726,bracketright:93,bracketrightbt:63739,bracketrightex:63738,bracketrightmonospace:65341,bracketrighttp:63737,breve:728,brevebelowcmb:814,brevecmb:774,breveinvertedbelowcmb:815,breveinvertedcmb:785,breveinverteddoublecmb:865,bridgebelowcmb:810,bridgeinvertedbelowcmb:826,brokenbar:166,bstroke:384,bsuperior:63210,btopbar:387,buhiragana:12406,bukatakana:12502,bullet:8226,bulletinverse:9688,bulletoperator:8729,
-bullseye:9678,c:99,caarmenian:1390,cabengali:2458,cacute:263,cadeva:2330,cagujarati:2714,cagurmukhi:2586,calsquare:13192,candrabindubengali:2433,candrabinducmb:784,candrabindudeva:2305,candrabindugujarati:2689,capslock:8682,careof:8453,caron:711,caronbelowcmb:812,caroncmb:780,carriagereturn:8629,cbopomofo:12568,ccaron:269,ccedilla:231,ccedillaacute:7689,ccircle:9426,ccircumflex:265,ccurl:597,cdot:267,cdotaccent:267,cdsquare:13253,cedilla:184,cedillacmb:807,cent:162,centigrade:8451,centinferior:63199,
-centmonospace:65504,centoldstyle:63394,centsuperior:63200,chaarmenian:1401,chabengali:2459,chadeva:2331,chagujarati:2715,chagurmukhi:2587,chbopomofo:12564,cheabkhasiancyrillic:1213,checkmark:10003,checyrillic:1095,chedescenderabkhasiancyrillic:1215,chedescendercyrillic:1207,chedieresiscyrillic:1269,cheharmenian:1395,chekhakassiancyrillic:1228,cheverticalstrokecyrillic:1209,chi:967,chieuchacirclekorean:12919,chieuchaparenkorean:12823,chieuchcirclekorean:12905,chieuchkorean:12618,chieuchparenkorean:12809,
-chochangthai:3594,chochanthai:3592,chochingthai:3593,chochoethai:3596,chook:392,cieucacirclekorean:12918,cieucaparenkorean:12822,cieuccirclekorean:12904,cieuckorean:12616,cieucparenkorean:12808,cieucuparenkorean:12828,circle:9675,circlecopyrt:169,circlemultiply:8855,circleot:8857,circleplus:8853,circlepostalmark:12342,circlewithlefthalfblack:9680,circlewithrighthalfblack:9681,circumflex:710,circumflexbelowcmb:813,circumflexcmb:770,clear:8999,clickalveolar:450,clickdental:448,clicklateral:449,clickretroflex:451,
-club:9827,clubsuitblack:9827,clubsuitwhite:9831,cmcubedsquare:13220,cmonospace:65347,cmsquaredsquare:13216,coarmenian:1409,colon:58,colonmonetary:8353,colonmonospace:65306,colonsign:8353,colonsmall:65109,colontriangularhalfmod:721,colontriangularmod:720,comma:44,commaabovecmb:787,commaaboverightcmb:789,commaaccent:63171,commaarabic:1548,commaarmenian:1373,commainferior:63201,commamonospace:65292,commareversedabovecmb:788,commareversedmod:701,commasmall:65104,commasuperior:63202,commaturnedabovecmb:786,
-commaturnedmod:699,compass:9788,congruent:8773,contourintegral:8750,control:8963,controlACK:6,controlBEL:7,controlBS:8,controlCAN:24,controlCR:13,controlDC1:17,controlDC2:18,controlDC3:19,controlDC4:20,controlDEL:127,controlDLE:16,controlEM:25,controlENQ:5,controlEOT:4,controlESC:27,controlETB:23,controlETX:3,controlFF:12,controlFS:28,controlGS:29,controlHT:9,controlLF:10,controlNAK:21,controlRS:30,controlSI:15,controlSO:14,controlSOT:2,controlSTX:1,controlSUB:26,controlSYN:22,controlUS:31,controlVT:11,
-copyright:169,copyrightsans:63721,copyrightserif:63193,cornerbracketleft:12300,cornerbracketlefthalfwidth:65378,cornerbracketleftvertical:65089,cornerbracketright:12301,cornerbracketrighthalfwidth:65379,cornerbracketrightvertical:65090,corporationsquare:13183,cosquare:13255,coverkgsquare:13254,cparen:9374,cruzeiro:8354,cstretched:663,curlyand:8911,curlyor:8910,currency:164,cyrBreve:63185,cyrFlex:63186,cyrbreve:63188,cyrflex:63189,d:100,daarmenian:1380,dabengali:2470,dadarabic:1590,dadeva:2342,dadfinalarabic:65214,
-dadinitialarabic:65215,dadmedialarabic:65216,dagesh:1468,dageshhebrew:1468,dagger:8224,daggerdbl:8225,dagujarati:2726,dagurmukhi:2598,dahiragana:12384,dakatakana:12480,dalarabic:1583,dalet:1491,daletdagesh:64307,daletdageshhebrew:64307,dalethebrew:1491,dalfinalarabic:65194,dammaarabic:1615,dammalowarabic:1615,dammatanaltonearabic:1612,dammatanarabic:1612,danda:2404,dargahebrew:1447,dargalefthebrew:1447,dasiapneumatacyrilliccmb:1157,dblGrave:63187,dblanglebracketleft:12298,dblanglebracketleftvertical:65085,
-dblanglebracketright:12299,dblanglebracketrightvertical:65086,dblarchinvertedbelowcmb:811,dblarrowleft:8660,dblarrowright:8658,dbldanda:2405,dblgrave:63190,dblgravecmb:783,dblintegral:8748,dbllowline:8215,dbllowlinecmb:819,dbloverlinecmb:831,dblprimemod:698,dblverticalbar:8214,dblverticallineabovecmb:782,dbopomofo:12553,dbsquare:13256,dcaron:271,dcedilla:7697,dcircle:9427,dcircumflexbelow:7699,dcroat:273,ddabengali:2465,ddadeva:2337,ddagujarati:2721,ddagurmukhi:2593,ddalarabic:1672,ddalfinalarabic:64393,
-dddhadeva:2396,ddhabengali:2466,ddhadeva:2338,ddhagujarati:2722,ddhagurmukhi:2594,ddotaccent:7691,ddotbelow:7693,decimalseparatorarabic:1643,decimalseparatorpersian:1643,decyrillic:1076,degree:176,dehihebrew:1453,dehiragana:12391,deicoptic:1007,dekatakana:12487,deleteleft:9003,deleteright:8998,delta:948,deltaturned:397,denominatorminusonenumeratorbengali:2552,dezh:676,dhabengali:2471,dhadeva:2343,dhagujarati:2727,dhagurmukhi:2599,dhook:599,dialytikatonos:901,dialytikatonoscmb:836,diamond:9830,diamondsuitwhite:9826,
-dieresis:168,dieresisacute:63191,dieresisbelowcmb:804,dieresiscmb:776,dieresisgrave:63192,dieresistonos:901,dihiragana:12386,dikatakana:12482,dittomark:12291,divide:247,divides:8739,divisionslash:8725,djecyrillic:1106,dkshade:9619,dlinebelow:7695,dlsquare:13207,dmacron:273,dmonospace:65348,dnblock:9604,dochadathai:3598,dodekthai:3604,dohiragana:12393,dokatakana:12489,dollar:36,dollarinferior:63203,dollarmonospace:65284,dollaroldstyle:63268,dollarsmall:65129,dollarsuperior:63204,dong:8363,dorusquare:13094,
-dotaccent:729,dotaccentcmb:775,dotbelowcmb:803,dotbelowcomb:803,dotkatakana:12539,dotlessi:305,dotlessj:63166,dotlessjstrokehook:644,dotmath:8901,dottedcircle:9676,doubleyodpatah:64287,doubleyodpatahhebrew:64287,downtackbelowcmb:798,downtackmod:725,dparen:9375,dsuperior:63211,dtail:598,dtopbar:396,duhiragana:12389,dukatakana:12485,dz:499,dzaltone:675,dzcaron:454,dzcurl:677,dzeabkhasiancyrillic:1249,dzecyrillic:1109,dzhecyrillic:1119,e:101,eacute:233,earth:9793,ebengali:2447,ebopomofo:12572,ebreve:277,
-ecandradeva:2317,ecandragujarati:2701,ecandravowelsigndeva:2373,ecandravowelsigngujarati:2757,ecaron:283,ecedillabreve:7709,echarmenian:1381,echyiwnarmenian:1415,ecircle:9428,ecircumflex:234,ecircumflexacute:7871,ecircumflexbelow:7705,ecircumflexdotbelow:7879,ecircumflexgrave:7873,ecircumflexhookabove:7875,ecircumflextilde:7877,ecyrillic:1108,edblgrave:517,edeva:2319,edieresis:235,edot:279,edotaccent:279,edotbelow:7865,eegurmukhi:2575,eematragurmukhi:2631,efcyrillic:1092,egrave:232,egujarati:2703,
-eharmenian:1383,ehbopomofo:12573,ehiragana:12360,ehookabove:7867,eibopomofo:12575,eight:56,eightarabic:1640,eightbengali:2542,eightcircle:9319,eightcircleinversesansserif:10129,eightdeva:2414,eighteencircle:9329,eighteenparen:9349,eighteenperiod:9369,eightgujarati:2798,eightgurmukhi:2670,eighthackarabic:1640,eighthangzhou:12328,eighthnotebeamed:9835,eightideographicparen:12839,eightinferior:8328,eightmonospace:65304,eightoldstyle:63288,eightparen:9339,eightperiod:9359,eightpersian:1784,eightroman:8567,
-eightsuperior:8312,eightthai:3672,einvertedbreve:519,eiotifiedcyrillic:1125,ekatakana:12456,ekatakanahalfwidth:65396,ekonkargurmukhi:2676,ekorean:12628,elcyrillic:1083,element:8712,elevencircle:9322,elevenparen:9342,elevenperiod:9362,elevenroman:8570,ellipsis:8230,ellipsisvertical:8942,emacron:275,emacronacute:7703,emacrongrave:7701,emcyrillic:1084,emdash:8212,emdashvertical:65073,emonospace:65349,emphasismarkarmenian:1371,emptyset:8709,enbopomofo:12579,encyrillic:1085,endash:8211,endashvertical:65074,
-endescendercyrillic:1187,eng:331,engbopomofo:12581,enghecyrillic:1189,enhookcyrillic:1224,enspace:8194,eogonek:281,eokorean:12627,eopen:603,eopenclosed:666,eopenreversed:604,eopenreversedclosed:606,eopenreversedhook:605,eparen:9376,epsilon:949,epsilontonos:941,equal:61,equalmonospace:65309,equalsmall:65126,equalsuperior:8316,equivalence:8801,erbopomofo:12582,ercyrillic:1088,ereversed:600,ereversedcyrillic:1101,escyrillic:1089,esdescendercyrillic:1195,esh:643,eshcurl:646,eshortdeva:2318,eshortvowelsigndeva:2374,
-eshreversedloop:426,eshsquatreversed:645,esmallhiragana:12359,esmallkatakana:12455,esmallkatakanahalfwidth:65386,estimated:8494,esuperior:63212,eta:951,etarmenian:1384,etatonos:942,eth:240,etilde:7869,etildebelow:7707,etnahtafoukhhebrew:1425,etnahtafoukhlefthebrew:1425,etnahtahebrew:1425,etnahtalefthebrew:1425,eturned:477,eukorean:12641,euro:8364,evowelsignbengali:2503,evowelsigndeva:2375,evowelsigngujarati:2759,exclam:33,exclamarmenian:1372,exclamdbl:8252,exclamdown:161,exclamdownsmall:63393,exclammonospace:65281,
-exclamsmall:63265,existential:8707,ezh:658,ezhcaron:495,ezhcurl:659,ezhreversed:441,ezhtail:442,f:102,fadeva:2398,fagurmukhi:2654,fahrenheit:8457,fathaarabic:1614,fathalowarabic:1614,fathatanarabic:1611,fbopomofo:12552,fcircle:9429,fdotaccent:7711,feharabic:1601,feharmenian:1414,fehfinalarabic:65234,fehinitialarabic:65235,fehmedialarabic:65236,feicoptic:997,female:9792,ff:64256,ffi:64259,ffl:64260,fi:64257,fifteencircle:9326,fifteenparen:9346,fifteenperiod:9366,figuredash:8210,filledbox:9632,filledrect:9644,
-finalkaf:1498,finalkafdagesh:64314,finalkafdageshhebrew:64314,finalkafhebrew:1498,finalmem:1501,finalmemhebrew:1501,finalnun:1503,finalnunhebrew:1503,finalpe:1507,finalpehebrew:1507,finaltsadi:1509,finaltsadihebrew:1509,firsttonechinese:713,fisheye:9673,fitacyrillic:1139,five:53,fivearabic:1637,fivebengali:2539,fivecircle:9316,fivecircleinversesansserif:10126,fivedeva:2411,fiveeighths:8541,fivegujarati:2795,fivegurmukhi:2667,fivehackarabic:1637,fivehangzhou:12325,fiveideographicparen:12836,fiveinferior:8325,
-fivemonospace:65301,fiveoldstyle:63285,fiveparen:9336,fiveperiod:9356,fivepersian:1781,fiveroman:8564,fivesuperior:8309,fivethai:3669,fl:64258,florin:402,fmonospace:65350,fmsquare:13209,fofanthai:3615,fofathai:3613,fongmanthai:3663,forall:8704,four:52,fourarabic:1636,fourbengali:2538,fourcircle:9315,fourcircleinversesansserif:10125,fourdeva:2410,fourgujarati:2794,fourgurmukhi:2666,fourhackarabic:1636,fourhangzhou:12324,fourideographicparen:12835,fourinferior:8324,fourmonospace:65300,fournumeratorbengali:2551,
-fouroldstyle:63284,fourparen:9335,fourperiod:9355,fourpersian:1780,fourroman:8563,foursuperior:8308,fourteencircle:9325,fourteenparen:9345,fourteenperiod:9365,fourthai:3668,fourthtonechinese:715,fparen:9377,fraction:8260,franc:8355,g:103,gabengali:2455,gacute:501,gadeva:2327,gafarabic:1711,gaffinalarabic:64403,gafinitialarabic:64404,gafmedialarabic:64405,gagujarati:2711,gagurmukhi:2583,gahiragana:12364,gakatakana:12460,gamma:947,gammalatinsmall:611,gammasuperior:736,gangiacoptic:1003,gbopomofo:12557,
-gbreve:287,gcaron:487,gcedilla:291,gcircle:9430,gcircumflex:285,gcommaaccent:291,gdot:289,gdotaccent:289,gecyrillic:1075,gehiragana:12370,gekatakana:12466,geometricallyequal:8785,gereshaccenthebrew:1436,gereshhebrew:1523,gereshmuqdamhebrew:1437,germandbls:223,gershayimaccenthebrew:1438,gershayimhebrew:1524,getamark:12307,ghabengali:2456,ghadarmenian:1394,ghadeva:2328,ghagujarati:2712,ghagurmukhi:2584,ghainarabic:1594,ghainfinalarabic:65230,ghaininitialarabic:65231,ghainmedialarabic:65232,ghemiddlehookcyrillic:1173,
-ghestrokecyrillic:1171,gheupturncyrillic:1169,ghhadeva:2394,ghhagurmukhi:2650,ghook:608,ghzsquare:13203,gihiragana:12366,gikatakana:12462,gimarmenian:1379,gimel:1490,gimeldagesh:64306,gimeldageshhebrew:64306,gimelhebrew:1490,gjecyrillic:1107,glottalinvertedstroke:446,glottalstop:660,glottalstopinverted:662,glottalstopmod:704,glottalstopreversed:661,glottalstopreversedmod:705,glottalstopreversedsuperior:740,glottalstopstroke:673,glottalstopstrokereversed:674,gmacron:7713,gmonospace:65351,gohiragana:12372,
-gokatakana:12468,gparen:9378,gpasquare:13228,gradient:8711,grave:96,gravebelowcmb:790,gravecmb:768,gravecomb:768,gravedeva:2387,gravelowmod:718,gravemonospace:65344,gravetonecmb:832,greater:62,greaterequal:8805,greaterequalorless:8923,greatermonospace:65310,greaterorequivalent:8819,greaterorless:8823,greateroverequal:8807,greatersmall:65125,gscript:609,gstroke:485,guhiragana:12368,guillemotleft:171,guillemotright:187,guilsinglleft:8249,guilsinglright:8250,gukatakana:12464,guramusquare:13080,gysquare:13257,
-h:104,haabkhasiancyrillic:1193,haaltonearabic:1729,habengali:2489,hadescendercyrillic:1203,hadeva:2361,hagujarati:2745,hagurmukhi:2617,haharabic:1581,hahfinalarabic:65186,hahinitialarabic:65187,hahiragana:12399,hahmedialarabic:65188,haitusquare:13098,hakatakana:12495,hakatakanahalfwidth:65418,halantgurmukhi:2637,hamzaarabic:1569,hamzalowarabic:1569,hangulfiller:12644,hardsigncyrillic:1098,harpoonleftbarbup:8636,harpoonrightbarbup:8640,hasquare:13258,hatafpatah:1458,hatafpatah16:1458,hatafpatah23:1458,
-hatafpatah2f:1458,hatafpatahhebrew:1458,hatafpatahnarrowhebrew:1458,hatafpatahquarterhebrew:1458,hatafpatahwidehebrew:1458,hatafqamats:1459,hatafqamats1b:1459,hatafqamats28:1459,hatafqamats34:1459,hatafqamatshebrew:1459,hatafqamatsnarrowhebrew:1459,hatafqamatsquarterhebrew:1459,hatafqamatswidehebrew:1459,hatafsegol:1457,hatafsegol17:1457,hatafsegol24:1457,hatafsegol30:1457,hatafsegolhebrew:1457,hatafsegolnarrowhebrew:1457,hatafsegolquarterhebrew:1457,hatafsegolwidehebrew:1457,hbar:295,hbopomofo:12559,
-hbrevebelow:7723,hcedilla:7721,hcircle:9431,hcircumflex:293,hdieresis:7719,hdotaccent:7715,hdotbelow:7717,he:1492,heart:9829,heartsuitblack:9829,heartsuitwhite:9825,hedagesh:64308,hedageshhebrew:64308,hehaltonearabic:1729,heharabic:1607,hehebrew:1492,hehfinalaltonearabic:64423,hehfinalalttwoarabic:65258,hehfinalarabic:65258,hehhamzaabovefinalarabic:64421,hehhamzaaboveisolatedarabic:64420,hehinitialaltonearabic:64424,hehinitialarabic:65259,hehiragana:12408,hehmedialaltonearabic:64425,hehmedialarabic:65260,
-heiseierasquare:13179,hekatakana:12504,hekatakanahalfwidth:65421,hekutaarusquare:13110,henghook:615,herutusquare:13113,het:1495,hethebrew:1495,hhook:614,hhooksuperior:689,hieuhacirclekorean:12923,hieuhaparenkorean:12827,hieuhcirclekorean:12909,hieuhkorean:12622,hieuhparenkorean:12813,hihiragana:12402,hikatakana:12498,hikatakanahalfwidth:65419,hiriq:1460,hiriq14:1460,hiriq21:1460,hiriq2d:1460,hiriqhebrew:1460,hiriqnarrowhebrew:1460,hiriqquarterhebrew:1460,hiriqwidehebrew:1460,hlinebelow:7830,hmonospace:65352,
-hoarmenian:1392,hohipthai:3627,hohiragana:12411,hokatakana:12507,hokatakanahalfwidth:65422,holam:1465,holam19:1465,holam26:1465,holam32:1465,holamhebrew:1465,holamnarrowhebrew:1465,holamquarterhebrew:1465,holamwidehebrew:1465,honokhukthai:3630,hookabovecomb:777,hookcmb:777,hookpalatalizedbelowcmb:801,hookretroflexbelowcmb:802,hoonsquare:13122,horicoptic:1001,horizontalbar:8213,horncmb:795,hotsprings:9832,house:8962,hparen:9379,hsuperior:688,hturned:613,huhiragana:12405,huiitosquare:13107,hukatakana:12501,
-hukatakanahalfwidth:65420,hungarumlaut:733,hungarumlautcmb:779,hv:405,hyphen:45,hypheninferior:63205,hyphenmonospace:65293,hyphensmall:65123,hyphensuperior:63206,hyphentwo:8208,i:105,iacute:237,iacyrillic:1103,ibengali:2439,ibopomofo:12583,ibreve:301,icaron:464,icircle:9432,icircumflex:238,icyrillic:1110,idblgrave:521,ideographearthcircle:12943,ideographfirecircle:12939,ideographicallianceparen:12863,ideographiccallparen:12858,ideographiccentrecircle:12965,ideographicclose:12294,ideographiccomma:12289,
-ideographiccommaleft:65380,ideographiccongratulationparen:12855,ideographiccorrectcircle:12963,ideographicearthparen:12847,ideographicenterpriseparen:12861,ideographicexcellentcircle:12957,ideographicfestivalparen:12864,ideographicfinancialcircle:12950,ideographicfinancialparen:12854,ideographicfireparen:12843,ideographichaveparen:12850,ideographichighcircle:12964,ideographiciterationmark:12293,ideographiclaborcircle:12952,ideographiclaborparen:12856,ideographicleftcircle:12967,ideographiclowcircle:12966,
-ideographicmedicinecircle:12969,ideographicmetalparen:12846,ideographicmoonparen:12842,ideographicnameparen:12852,ideographicperiod:12290,ideographicprintcircle:12958,ideographicreachparen:12867,ideographicrepresentparen:12857,ideographicresourceparen:12862,ideographicrightcircle:12968,ideographicsecretcircle:12953,ideographicselfparen:12866,ideographicsocietyparen:12851,ideographicspace:12288,ideographicspecialparen:12853,ideographicstockparen:12849,ideographicstudyparen:12859,ideographicsunparen:12848,
-ideographicsuperviseparen:12860,ideographicwaterparen:12844,ideographicwoodparen:12845,ideographiczero:12295,ideographmetalcircle:12942,ideographmooncircle:12938,ideographnamecircle:12948,ideographsuncircle:12944,ideographwatercircle:12940,ideographwoodcircle:12941,ideva:2311,idieresis:239,idieresisacute:7727,idieresiscyrillic:1253,idotbelow:7883,iebrevecyrillic:1239,iecyrillic:1077,ieungacirclekorean:12917,ieungaparenkorean:12821,ieungcirclekorean:12903,ieungkorean:12615,ieungparenkorean:12807,igrave:236,
-igujarati:2695,igurmukhi:2567,ihiragana:12356,ihookabove:7881,iibengali:2440,iicyrillic:1080,iideva:2312,iigujarati:2696,iigurmukhi:2568,iimatragurmukhi:2624,iinvertedbreve:523,iishortcyrillic:1081,iivowelsignbengali:2496,iivowelsigndeva:2368,iivowelsigngujarati:2752,ij:307,ikatakana:12452,ikatakanahalfwidth:65394,ikorean:12643,ilde:732,iluyhebrew:1452,imacron:299,imacroncyrillic:1251,imageorapproximatelyequal:8787,imatragurmukhi:2623,imonospace:65353,increment:8710,infinity:8734,iniarmenian:1387,
-integral:8747,integralbottom:8993,integralbt:8993,integralex:63733,integraltop:8992,integraltp:8992,intersection:8745,intisquare:13061,invbullet:9688,invcircle:9689,invsmileface:9787,iocyrillic:1105,iogonek:303,iota:953,iotadieresis:970,iotadieresistonos:912,iotalatin:617,iotatonos:943,iparen:9380,irigurmukhi:2674,ismallhiragana:12355,ismallkatakana:12451,ismallkatakanahalfwidth:65384,issharbengali:2554,istroke:616,isuperior:63213,iterationhiragana:12445,iterationkatakana:12541,itilde:297,itildebelow:7725,
-iubopomofo:12585,iucyrillic:1102,ivowelsignbengali:2495,ivowelsigndeva:2367,ivowelsigngujarati:2751,izhitsacyrillic:1141,izhitsadblgravecyrillic:1143,j:106,jaarmenian:1393,jabengali:2460,jadeva:2332,jagujarati:2716,jagurmukhi:2588,jbopomofo:12560,jcaron:496,jcircle:9433,jcircumflex:309,jcrossedtail:669,jdotlessstroke:607,jecyrillic:1112,jeemarabic:1580,jeemfinalarabic:65182,jeeminitialarabic:65183,jeemmedialarabic:65184,jeharabic:1688,jehfinalarabic:64395,jhabengali:2461,jhadeva:2333,jhagujarati:2717,
-jhagurmukhi:2589,jheharmenian:1403,jis:12292,jmonospace:65354,jparen:9381,jsuperior:690,k:107,kabashkircyrillic:1185,kabengali:2453,kacute:7729,kacyrillic:1082,kadescendercyrillic:1179,kadeva:2325,kaf:1499,kafarabic:1603,kafdagesh:64315,kafdageshhebrew:64315,kaffinalarabic:65242,kafhebrew:1499,kafinitialarabic:65243,kafmedialarabic:65244,kafrafehebrew:64333,kagujarati:2709,kagurmukhi:2581,kahiragana:12363,kahookcyrillic:1220,kakatakana:12459,kakatakanahalfwidth:65398,kappa:954,kappasymbolgreek:1008,
-kapyeounmieumkorean:12657,kapyeounphieuphkorean:12676,kapyeounpieupkorean:12664,kapyeounssangpieupkorean:12665,karoriisquare:13069,kashidaautoarabic:1600,kashidaautonosidebearingarabic:1600,kasmallkatakana:12533,kasquare:13188,kasraarabic:1616,kasratanarabic:1613,kastrokecyrillic:1183,katahiraprolongmarkhalfwidth:65392,kaverticalstrokecyrillic:1181,kbopomofo:12558,kcalsquare:13193,kcaron:489,kcedilla:311,kcircle:9434,kcommaaccent:311,kdotbelow:7731,keharmenian:1412,kehiragana:12369,kekatakana:12465,
-kekatakanahalfwidth:65401,kenarmenian:1391,kesmallkatakana:12534,kgreenlandic:312,khabengali:2454,khacyrillic:1093,khadeva:2326,khagujarati:2710,khagurmukhi:2582,khaharabic:1582,khahfinalarabic:65190,khahinitialarabic:65191,khahmedialarabic:65192,kheicoptic:999,khhadeva:2393,khhagurmukhi:2649,khieukhacirclekorean:12920,khieukhaparenkorean:12824,khieukhcirclekorean:12906,khieukhkorean:12619,khieukhparenkorean:12810,khokhaithai:3586,khokhonthai:3589,khokhuatthai:3587,khokhwaithai:3588,khomutthai:3675,
-khook:409,khorakhangthai:3590,khzsquare:13201,kihiragana:12365,kikatakana:12461,kikatakanahalfwidth:65399,kiroguramusquare:13077,kiromeetorusquare:13078,kirosquare:13076,kiyeokacirclekorean:12910,kiyeokaparenkorean:12814,kiyeokcirclekorean:12896,kiyeokkorean:12593,kiyeokparenkorean:12800,kiyeoksioskorean:12595,kjecyrillic:1116,klinebelow:7733,klsquare:13208,kmcubedsquare:13222,kmonospace:65355,kmsquaredsquare:13218,kohiragana:12371,kohmsquare:13248,kokaithai:3585,kokatakana:12467,kokatakanahalfwidth:65402,
-kooposquare:13086,koppacyrillic:1153,koreanstandardsymbol:12927,koroniscmb:835,kparen:9382,kpasquare:13226,ksicyrillic:1135,ktsquare:13263,kturned:670,kuhiragana:12367,kukatakana:12463,kukatakanahalfwidth:65400,kvsquare:13240,kwsquare:13246,l:108,labengali:2482,lacute:314,ladeva:2354,lagujarati:2738,lagurmukhi:2610,lakkhangyaothai:3653,lamaleffinalarabic:65276,lamalefhamzaabovefinalarabic:65272,lamalefhamzaaboveisolatedarabic:65271,lamalefhamzabelowfinalarabic:65274,lamalefhamzabelowisolatedarabic:65273,
-lamalefisolatedarabic:65275,lamalefmaddaabovefinalarabic:65270,lamalefmaddaaboveisolatedarabic:65269,lamarabic:1604,lambda:955,lambdastroke:411,lamed:1500,lameddagesh:64316,lameddageshhebrew:64316,lamedhebrew:1500,lamfinalarabic:65246,lamhahinitialarabic:64714,laminitialarabic:65247,lamjeeminitialarabic:64713,lamkhahinitialarabic:64715,lamlamhehisolatedarabic:65010,lammedialarabic:65248,lammeemhahinitialarabic:64904,lammeeminitialarabic:64716,largecircle:9711,lbar:410,lbelt:620,lbopomofo:12556,lcaron:318,
-lcedilla:316,lcircle:9435,lcircumflexbelow:7741,lcommaaccent:316,ldot:320,ldotaccent:320,ldotbelow:7735,ldotbelowmacron:7737,leftangleabovecmb:794,lefttackbelowcmb:792,less:60,lessequal:8804,lessequalorgreater:8922,lessmonospace:65308,lessorequivalent:8818,lessorgreater:8822,lessoverequal:8806,lesssmall:65124,lezh:622,lfblock:9612,lhookretroflex:621,lira:8356,liwnarmenian:1388,lj:457,ljecyrillic:1113,ll:63168,lladeva:2355,llagujarati:2739,llinebelow:7739,llladeva:2356,llvocalicbengali:2529,llvocalicdeva:2401,
-llvocalicvowelsignbengali:2531,llvocalicvowelsigndeva:2403,lmiddletilde:619,lmonospace:65356,lmsquare:13264,lochulathai:3628,logicaland:8743,logicalnot:172,logicalnotreversed:8976,logicalor:8744,lolingthai:3621,longs:383,lowlinecenterline:65102,lowlinecmb:818,lowlinedashed:65101,lozenge:9674,lparen:9383,lslash:322,lsquare:8467,lsuperior:63214,ltshade:9617,luthai:3622,lvocalicbengali:2444,lvocalicdeva:2316,lvocalicvowelsignbengali:2530,lvocalicvowelsigndeva:2402,lxsquare:13267,m:109,mabengali:2478,
-macron:175,macronbelowcmb:817,macroncmb:772,macronlowmod:717,macronmonospace:65507,macute:7743,madeva:2350,magujarati:2734,magurmukhi:2606,mahapakhhebrew:1444,mahapakhlefthebrew:1444,mahiragana:12414,maichattawalowleftthai:63637,maichattawalowrightthai:63636,maichattawathai:3659,maichattawaupperleftthai:63635,maieklowleftthai:63628,maieklowrightthai:63627,maiekthai:3656,maiekupperleftthai:63626,maihanakatleftthai:63620,maihanakatthai:3633,maitaikhuleftthai:63625,maitaikhuthai:3655,maitholowleftthai:63631,
-maitholowrightthai:63630,maithothai:3657,maithoupperleftthai:63629,maitrilowleftthai:63634,maitrilowrightthai:63633,maitrithai:3658,maitriupperleftthai:63632,maiyamokthai:3654,makatakana:12510,makatakanahalfwidth:65423,male:9794,mansyonsquare:13127,maqafhebrew:1470,mars:9794,masoracirclehebrew:1455,masquare:13187,mbopomofo:12551,mbsquare:13268,mcircle:9436,mcubedsquare:13221,mdotaccent:7745,mdotbelow:7747,meemarabic:1605,meemfinalarabic:65250,meeminitialarabic:65251,meemmedialarabic:65252,meemmeeminitialarabic:64721,
-meemmeemisolatedarabic:64584,meetorusquare:13133,mehiragana:12417,meizierasquare:13182,mekatakana:12513,mekatakanahalfwidth:65426,mem:1502,memdagesh:64318,memdageshhebrew:64318,memhebrew:1502,menarmenian:1396,merkhahebrew:1445,merkhakefulahebrew:1446,merkhakefulalefthebrew:1446,merkhalefthebrew:1445,mhook:625,mhzsquare:13202,middledotkatakanahalfwidth:65381,middot:183,mieumacirclekorean:12914,mieumaparenkorean:12818,mieumcirclekorean:12900,mieumkorean:12609,mieumpansioskorean:12656,mieumparenkorean:12804,
-mieumpieupkorean:12654,mieumsioskorean:12655,mihiragana:12415,mikatakana:12511,mikatakanahalfwidth:65424,minus:8722,minusbelowcmb:800,minuscircle:8854,minusmod:727,minusplus:8723,minute:8242,miribaarusquare:13130,mirisquare:13129,mlonglegturned:624,mlsquare:13206,mmcubedsquare:13219,mmonospace:65357,mmsquaredsquare:13215,mohiragana:12418,mohmsquare:13249,mokatakana:12514,mokatakanahalfwidth:65427,molsquare:13270,momathai:3617,moverssquare:13223,moverssquaredsquare:13224,mparen:9384,mpasquare:13227,
-mssquare:13235,msuperior:63215,mturned:623,mu:181,mu1:181,muasquare:13186,muchgreater:8811,muchless:8810,mufsquare:13196,mugreek:956,mugsquare:13197,muhiragana:12416,mukatakana:12512,mukatakanahalfwidth:65425,mulsquare:13205,multiply:215,mumsquare:13211,munahhebrew:1443,munahlefthebrew:1443,musicalnote:9834,musicalnotedbl:9835,musicflatsign:9837,musicsharpsign:9839,mussquare:13234,muvsquare:13238,muwsquare:13244,mvmegasquare:13241,mvsquare:13239,mwmegasquare:13247,mwsquare:13245,n:110,nabengali:2472,
-nabla:8711,nacute:324,nadeva:2344,nagujarati:2728,nagurmukhi:2600,nahiragana:12394,nakatakana:12490,nakatakanahalfwidth:65413,napostrophe:329,nasquare:13185,nbopomofo:12555,nbspace:160,ncaron:328,ncedilla:326,ncircle:9437,ncircumflexbelow:7755,ncommaaccent:326,ndotaccent:7749,ndotbelow:7751,nehiragana:12397,nekatakana:12493,nekatakanahalfwidth:65416,newsheqelsign:8362,nfsquare:13195,ngabengali:2457,ngadeva:2329,ngagujarati:2713,ngagurmukhi:2585,ngonguthai:3591,nhiragana:12435,nhookleft:626,nhookretroflex:627,
-nieunacirclekorean:12911,nieunaparenkorean:12815,nieuncieuckorean:12597,nieuncirclekorean:12897,nieunhieuhkorean:12598,nieunkorean:12596,nieunpansioskorean:12648,nieunparenkorean:12801,nieunsioskorean:12647,nieuntikeutkorean:12646,nihiragana:12395,nikatakana:12491,nikatakanahalfwidth:65414,nikhahitleftthai:63641,nikhahitthai:3661,nine:57,ninearabic:1641,ninebengali:2543,ninecircle:9320,ninecircleinversesansserif:10130,ninedeva:2415,ninegujarati:2799,ninegurmukhi:2671,ninehackarabic:1641,ninehangzhou:12329,
-nineideographicparen:12840,nineinferior:8329,ninemonospace:65305,nineoldstyle:63289,nineparen:9340,nineperiod:9360,ninepersian:1785,nineroman:8568,ninesuperior:8313,nineteencircle:9330,nineteenparen:9350,nineteenperiod:9370,ninethai:3673,nj:460,njecyrillic:1114,nkatakana:12531,nkatakanahalfwidth:65437,nlegrightlong:414,nlinebelow:7753,nmonospace:65358,nmsquare:13210,nnabengali:2467,nnadeva:2339,nnagujarati:2723,nnagurmukhi:2595,nnnadeva:2345,nohiragana:12398,nokatakana:12494,nokatakanahalfwidth:65417,
-nonbreakingspace:160,nonenthai:3603,nonuthai:3609,noonarabic:1606,noonfinalarabic:65254,noonghunnaarabic:1722,noonghunnafinalarabic:64415,nooninitialarabic:65255,noonjeeminitialarabic:64722,noonjeemisolatedarabic:64587,noonmedialarabic:65256,noonmeeminitialarabic:64725,noonmeemisolatedarabic:64590,noonnoonfinalarabic:64653,notcontains:8716,notelement:8713,notelementof:8713,notequal:8800,notgreater:8815,notgreaternorequal:8817,notgreaternorless:8825,notidentical:8802,notless:8814,notlessnorequal:8816,
-notparallel:8742,notprecedes:8832,notsubset:8836,notsucceeds:8833,notsuperset:8837,nowarmenian:1398,nparen:9385,nssquare:13233,nsuperior:8319,ntilde:241,nu:957,nuhiragana:12396,nukatakana:12492,nukatakanahalfwidth:65415,nuktabengali:2492,nuktadeva:2364,nuktagujarati:2748,nuktagurmukhi:2620,numbersign:35,numbersignmonospace:65283,numbersignsmall:65119,numeralsigngreek:884,numeralsignlowergreek:885,numero:8470,nun:1504,nundagesh:64320,nundageshhebrew:64320,nunhebrew:1504,nvsquare:13237,nwsquare:13243,
-nyabengali:2462,nyadeva:2334,nyagujarati:2718,nyagurmukhi:2590,o:111,oacute:243,oangthai:3629,obarred:629,obarredcyrillic:1257,obarreddieresiscyrillic:1259,obengali:2451,obopomofo:12571,obreve:335,ocandradeva:2321,ocandragujarati:2705,ocandravowelsigndeva:2377,ocandravowelsigngujarati:2761,ocaron:466,ocircle:9438,ocircumflex:244,ocircumflexacute:7889,ocircumflexdotbelow:7897,ocircumflexgrave:7891,ocircumflexhookabove:7893,ocircumflextilde:7895,ocyrillic:1086,odblacute:337,odblgrave:525,odeva:2323,
-odieresis:246,odieresiscyrillic:1255,odotbelow:7885,oe:339,oekorean:12634,ogonek:731,ogonekcmb:808,ograve:242,ogujarati:2707,oharmenian:1413,ohiragana:12362,ohookabove:7887,ohorn:417,ohornacute:7899,ohorndotbelow:7907,ohorngrave:7901,ohornhookabove:7903,ohorntilde:7905,ohungarumlaut:337,oi:419,oinvertedbreve:527,okatakana:12458,okatakanahalfwidth:65397,okorean:12631,olehebrew:1451,omacron:333,omacronacute:7763,omacrongrave:7761,omdeva:2384,omega:969,omega1:982,omegacyrillic:1121,omegalatinclosed:631,
-omegaroundcyrillic:1147,omegatitlocyrillic:1149,omegatonos:974,omgujarati:2768,omicron:959,omicrontonos:972,omonospace:65359,one:49,onearabic:1633,onebengali:2535,onecircle:9312,onecircleinversesansserif:10122,onedeva:2407,onedotenleader:8228,oneeighth:8539,onefitted:63196,onegujarati:2791,onegurmukhi:2663,onehackarabic:1633,onehalf:189,onehangzhou:12321,oneideographicparen:12832,oneinferior:8321,onemonospace:65297,onenumeratorbengali:2548,oneoldstyle:63281,oneparen:9332,oneperiod:9352,onepersian:1777,
-onequarter:188,oneroman:8560,onesuperior:185,onethai:3665,onethird:8531,oogonek:491,oogonekmacron:493,oogurmukhi:2579,oomatragurmukhi:2635,oopen:596,oparen:9386,openbullet:9702,option:8997,ordfeminine:170,ordmasculine:186,orthogonal:8735,oshortdeva:2322,oshortvowelsigndeva:2378,oslash:248,oslashacute:511,osmallhiragana:12361,osmallkatakana:12457,osmallkatakanahalfwidth:65387,ostrokeacute:511,osuperior:63216,otcyrillic:1151,otilde:245,otildeacute:7757,otildedieresis:7759,oubopomofo:12577,overline:8254,
-overlinecenterline:65098,overlinecmb:773,overlinedashed:65097,overlinedblwavy:65100,overlinewavy:65099,overscore:175,ovowelsignbengali:2507,ovowelsigndeva:2379,ovowelsigngujarati:2763,p:112,paampssquare:13184,paasentosquare:13099,pabengali:2474,pacute:7765,padeva:2346,pagedown:8671,pageup:8670,pagujarati:2730,pagurmukhi:2602,pahiragana:12401,paiyannoithai:3631,pakatakana:12497,palatalizationcyrilliccmb:1156,palochkacyrillic:1216,pansioskorean:12671,paragraph:182,parallel:8741,parenleft:40,parenleftaltonearabic:64830,
-parenleftbt:63725,parenleftex:63724,parenleftinferior:8333,parenleftmonospace:65288,parenleftsmall:65113,parenleftsuperior:8317,parenlefttp:63723,parenleftvertical:65077,parenright:41,parenrightaltonearabic:64831,parenrightbt:63736,parenrightex:63735,parenrightinferior:8334,parenrightmonospace:65289,parenrightsmall:65114,parenrightsuperior:8318,parenrighttp:63734,parenrightvertical:65078,partialdiff:8706,paseqhebrew:1472,pashtahebrew:1433,pasquare:13225,patah:1463,patah11:1463,patah1d:1463,patah2a:1463,
-patahhebrew:1463,patahnarrowhebrew:1463,patahquarterhebrew:1463,patahwidehebrew:1463,pazerhebrew:1441,pbopomofo:12550,pcircle:9439,pdotaccent:7767,pe:1508,pecyrillic:1087,pedagesh:64324,pedageshhebrew:64324,peezisquare:13115,pefinaldageshhebrew:64323,peharabic:1662,peharmenian:1402,pehebrew:1508,pehfinalarabic:64343,pehinitialarabic:64344,pehiragana:12410,pehmedialarabic:64345,pekatakana:12506,pemiddlehookcyrillic:1191,perafehebrew:64334,percent:37,percentarabic:1642,percentmonospace:65285,percentsmall:65130,
-period:46,periodarmenian:1417,periodcentered:183,periodhalfwidth:65377,periodinferior:63207,periodmonospace:65294,periodsmall:65106,periodsuperior:63208,perispomenigreekcmb:834,perpendicular:8869,perthousand:8240,peseta:8359,pfsquare:13194,phabengali:2475,phadeva:2347,phagujarati:2731,phagurmukhi:2603,phi:966,phi1:981,phieuphacirclekorean:12922,phieuphaparenkorean:12826,phieuphcirclekorean:12908,phieuphkorean:12621,phieuphparenkorean:12812,philatin:632,phinthuthai:3642,phisymbolgreek:981,phook:421,
-phophanthai:3614,phophungthai:3612,phosamphaothai:3616,pi:960,pieupacirclekorean:12915,pieupaparenkorean:12819,pieupcieuckorean:12662,pieupcirclekorean:12901,pieupkiyeokkorean:12658,pieupkorean:12610,pieupparenkorean:12805,pieupsioskiyeokkorean:12660,pieupsioskorean:12612,pieupsiostikeutkorean:12661,pieupthieuthkorean:12663,pieuptikeutkorean:12659,pihiragana:12404,pikatakana:12500,pisymbolgreek:982,piwrarmenian:1411,plus:43,plusbelowcmb:799,pluscircle:8853,plusminus:177,plusmod:726,plusmonospace:65291,
-plussmall:65122,plussuperior:8314,pmonospace:65360,pmsquare:13272,pohiragana:12413,pointingindexdownwhite:9759,pointingindexleftwhite:9756,pointingindexrightwhite:9758,pointingindexupwhite:9757,pokatakana:12509,poplathai:3611,postalmark:12306,postalmarkface:12320,pparen:9387,precedes:8826,prescription:8478,primemod:697,primereversed:8245,product:8719,projective:8965,prolongedkana:12540,propellor:8984,propersubset:8834,propersuperset:8835,proportion:8759,proportional:8733,psi:968,psicyrillic:1137,
-psilipneumatacyrilliccmb:1158,pssquare:13232,puhiragana:12407,pukatakana:12503,pvsquare:13236,pwsquare:13242,q:113,qadeva:2392,qadmahebrew:1448,qafarabic:1602,qaffinalarabic:65238,qafinitialarabic:65239,qafmedialarabic:65240,qamats:1464,qamats10:1464,qamats1a:1464,qamats1c:1464,qamats27:1464,qamats29:1464,qamats33:1464,qamatsde:1464,qamatshebrew:1464,qamatsnarrowhebrew:1464,qamatsqatanhebrew:1464,qamatsqatannarrowhebrew:1464,qamatsqatanquarterhebrew:1464,qamatsqatanwidehebrew:1464,qamatsquarterhebrew:1464,
-qamatswidehebrew:1464,qarneyparahebrew:1439,qbopomofo:12561,qcircle:9440,qhook:672,qmonospace:65361,qof:1511,qofdagesh:64327,qofdageshhebrew:64327,qofhebrew:1511,qparen:9388,quarternote:9833,qubuts:1467,qubuts18:1467,qubuts25:1467,qubuts31:1467,qubutshebrew:1467,qubutsnarrowhebrew:1467,qubutsquarterhebrew:1467,qubutswidehebrew:1467,question:63,questionarabic:1567,questionarmenian:1374,questiondown:191,questiondownsmall:63423,questiongreek:894,questionmonospace:65311,questionsmall:63295,quotedbl:34,
-quotedblbase:8222,quotedblleft:8220,quotedblmonospace:65282,quotedblprime:12318,quotedblprimereversed:12317,quotedblright:8221,quoteleft:8216,quoteleftreversed:8219,quotereversed:8219,quoteright:8217,quoterightn:329,quotesinglbase:8218,quotesingle:39,quotesinglemonospace:65287,r:114,raarmenian:1404,rabengali:2480,racute:341,radeva:2352,radical:8730,radicalex:63717,radoverssquare:13230,radoverssquaredsquare:13231,radsquare:13229,rafe:1471,rafehebrew:1471,ragujarati:2736,ragurmukhi:2608,rahiragana:12425,
-rakatakana:12521,rakatakanahalfwidth:65431,ralowerdiagonalbengali:2545,ramiddlediagonalbengali:2544,ramshorn:612,ratio:8758,rbopomofo:12566,rcaron:345,rcedilla:343,rcircle:9441,rcommaaccent:343,rdblgrave:529,rdotaccent:7769,rdotbelow:7771,rdotbelowmacron:7773,referencemark:8251,reflexsubset:8838,reflexsuperset:8839,registered:174,registersans:63720,registerserif:63194,reharabic:1585,reharmenian:1408,rehfinalarabic:65198,rehiragana:12428,rekatakana:12524,rekatakanahalfwidth:65434,resh:1512,reshdageshhebrew:64328,
-reshhebrew:1512,reversedtilde:8765,reviahebrew:1431,reviamugrashhebrew:1431,revlogicalnot:8976,rfishhook:638,rfishhookreversed:639,rhabengali:2525,rhadeva:2397,rho:961,rhook:637,rhookturned:635,rhookturnedsuperior:693,rhosymbolgreek:1009,rhotichookmod:734,rieulacirclekorean:12913,rieulaparenkorean:12817,rieulcirclekorean:12899,rieulhieuhkorean:12608,rieulkiyeokkorean:12602,rieulkiyeoksioskorean:12649,rieulkorean:12601,rieulmieumkorean:12603,rieulpansioskorean:12652,rieulparenkorean:12803,rieulphieuphkorean:12607,
-rieulpieupkorean:12604,rieulpieupsioskorean:12651,rieulsioskorean:12605,rieulthieuthkorean:12606,rieultikeutkorean:12650,rieulyeorinhieuhkorean:12653,rightangle:8735,righttackbelowcmb:793,righttriangle:8895,rihiragana:12426,rikatakana:12522,rikatakanahalfwidth:65432,ring:730,ringbelowcmb:805,ringcmb:778,ringhalfleft:703,ringhalfleftarmenian:1369,ringhalfleftbelowcmb:796,ringhalfleftcentered:723,ringhalfright:702,ringhalfrightbelowcmb:825,ringhalfrightcentered:722,rinvertedbreve:531,rittorusquare:13137,
-rlinebelow:7775,rlongleg:636,rlonglegturned:634,rmonospace:65362,rohiragana:12429,rokatakana:12525,rokatakanahalfwidth:65435,roruathai:3619,rparen:9389,rrabengali:2524,rradeva:2353,rragurmukhi:2652,rreharabic:1681,rrehfinalarabic:64397,rrvocalicbengali:2528,rrvocalicdeva:2400,rrvocalicgujarati:2784,rrvocalicvowelsignbengali:2500,rrvocalicvowelsigndeva:2372,rrvocalicvowelsigngujarati:2756,rsuperior:63217,rtblock:9616,rturned:633,rturnedsuperior:692,ruhiragana:12427,rukatakana:12523,rukatakanahalfwidth:65433,
-rupeemarkbengali:2546,rupeesignbengali:2547,rupiah:63197,ruthai:3620,rvocalicbengali:2443,rvocalicdeva:2315,rvocalicgujarati:2699,rvocalicvowelsignbengali:2499,rvocalicvowelsigndeva:2371,rvocalicvowelsigngujarati:2755,s:115,sabengali:2488,sacute:347,sacutedotaccent:7781,sadarabic:1589,sadeva:2360,sadfinalarabic:65210,sadinitialarabic:65211,sadmedialarabic:65212,sagujarati:2744,sagurmukhi:2616,sahiragana:12373,sakatakana:12469,sakatakanahalfwidth:65403,sallallahoualayhewasallamarabic:65018,samekh:1505,
-samekhdagesh:64321,samekhdageshhebrew:64321,samekhhebrew:1505,saraaathai:3634,saraaethai:3649,saraaimaimalaithai:3652,saraaimaimuanthai:3651,saraamthai:3635,saraathai:3632,saraethai:3648,saraiileftthai:63622,saraiithai:3637,saraileftthai:63621,saraithai:3636,saraothai:3650,saraueeleftthai:63624,saraueethai:3639,saraueleftthai:63623,sarauethai:3638,sarauthai:3640,sarauuthai:3641,sbopomofo:12569,scaron:353,scarondotaccent:7783,scedilla:351,schwa:601,schwacyrillic:1241,schwadieresiscyrillic:1243,schwahook:602,
-scircle:9442,scircumflex:349,scommaaccent:537,sdotaccent:7777,sdotbelow:7779,sdotbelowdotaccent:7785,seagullbelowcmb:828,second:8243,secondtonechinese:714,section:167,seenarabic:1587,seenfinalarabic:65202,seeninitialarabic:65203,seenmedialarabic:65204,segol:1462,segol13:1462,segol1f:1462,segol2c:1462,segolhebrew:1462,segolnarrowhebrew:1462,segolquarterhebrew:1462,segoltahebrew:1426,segolwidehebrew:1462,seharmenian:1405,sehiragana:12379,sekatakana:12475,sekatakanahalfwidth:65406,semicolon:59,semicolonarabic:1563,
-semicolonmonospace:65307,semicolonsmall:65108,semivoicedmarkkana:12444,semivoicedmarkkanahalfwidth:65439,sentisquare:13090,sentosquare:13091,seven:55,sevenarabic:1639,sevenbengali:2541,sevencircle:9318,sevencircleinversesansserif:10128,sevendeva:2413,seveneighths:8542,sevengujarati:2797,sevengurmukhi:2669,sevenhackarabic:1639,sevenhangzhou:12327,sevenideographicparen:12838,seveninferior:8327,sevenmonospace:65303,sevenoldstyle:63287,sevenparen:9338,sevenperiod:9358,sevenpersian:1783,sevenroman:8566,
-sevensuperior:8311,seventeencircle:9328,seventeenparen:9348,seventeenperiod:9368,seventhai:3671,sfthyphen:173,shaarmenian:1399,shabengali:2486,shacyrillic:1096,shaddaarabic:1617,shaddadammaarabic:64609,shaddadammatanarabic:64606,shaddafathaarabic:64608,shaddakasraarabic:64610,shaddakasratanarabic:64607,shade:9618,shadedark:9619,shadelight:9617,shademedium:9618,shadeva:2358,shagujarati:2742,shagurmukhi:2614,shalshelethebrew:1427,shbopomofo:12565,shchacyrillic:1097,sheenarabic:1588,sheenfinalarabic:65206,
-sheeninitialarabic:65207,sheenmedialarabic:65208,sheicoptic:995,sheqel:8362,sheqelhebrew:8362,sheva:1456,sheva115:1456,sheva15:1456,sheva22:1456,sheva2e:1456,shevahebrew:1456,shevanarrowhebrew:1456,shevaquarterhebrew:1456,shevawidehebrew:1456,shhacyrillic:1211,shimacoptic:1005,shin:1513,shindagesh:64329,shindageshhebrew:64329,shindageshshindot:64300,shindageshshindothebrew:64300,shindageshsindot:64301,shindageshsindothebrew:64301,shindothebrew:1473,shinhebrew:1513,shinshindot:64298,shinshindothebrew:64298,
-shinsindot:64299,shinsindothebrew:64299,shook:642,sigma:963,sigma1:962,sigmafinal:962,sigmalunatesymbolgreek:1010,sihiragana:12375,sikatakana:12471,sikatakanahalfwidth:65404,siluqhebrew:1469,siluqlefthebrew:1469,similar:8764,sindothebrew:1474,siosacirclekorean:12916,siosaparenkorean:12820,sioscieuckorean:12670,sioscirclekorean:12902,sioskiyeokkorean:12666,sioskorean:12613,siosnieunkorean:12667,siosparenkorean:12806,siospieupkorean:12669,siostikeutkorean:12668,six:54,sixarabic:1638,sixbengali:2540,
-sixcircle:9317,sixcircleinversesansserif:10127,sixdeva:2412,sixgujarati:2796,sixgurmukhi:2668,sixhackarabic:1638,sixhangzhou:12326,sixideographicparen:12837,sixinferior:8326,sixmonospace:65302,sixoldstyle:63286,sixparen:9337,sixperiod:9357,sixpersian:1782,sixroman:8565,sixsuperior:8310,sixteencircle:9327,sixteencurrencydenominatorbengali:2553,sixteenparen:9347,sixteenperiod:9367,sixthai:3670,slash:47,slashmonospace:65295,slong:383,slongdotaccent:7835,smileface:9786,smonospace:65363,sofpasuqhebrew:1475,
-softhyphen:173,softsigncyrillic:1100,sohiragana:12381,sokatakana:12477,sokatakanahalfwidth:65407,soliduslongoverlaycmb:824,solidusshortoverlaycmb:823,sorusithai:3625,sosalathai:3624,sosothai:3595,sosuathai:3626,space:32,spacehackarabic:32,spade:9824,spadesuitblack:9824,spadesuitwhite:9828,sparen:9390,squarebelowcmb:827,squarecc:13252,squarecm:13213,squarediagonalcrosshatchfill:9641,squarehorizontalfill:9636,squarekg:13199,squarekm:13214,squarekmcapital:13262,squareln:13265,squarelog:13266,squaremg:13198,
-squaremil:13269,squaremm:13212,squaremsquared:13217,squareorthogonalcrosshatchfill:9638,squareupperlefttolowerrightfill:9639,squareupperrighttolowerleftfill:9640,squareverticalfill:9637,squarewhitewithsmallblack:9635,srsquare:13275,ssabengali:2487,ssadeva:2359,ssagujarati:2743,ssangcieuckorean:12617,ssanghieuhkorean:12677,ssangieungkorean:12672,ssangkiyeokkorean:12594,ssangnieunkorean:12645,ssangpieupkorean:12611,ssangsioskorean:12614,ssangtikeutkorean:12600,ssuperior:63218,sterling:163,sterlingmonospace:65505,
-strokelongoverlaycmb:822,strokeshortoverlaycmb:821,subset:8834,subsetnotequal:8842,subsetorequal:8838,succeeds:8827,suchthat:8715,suhiragana:12377,sukatakana:12473,sukatakanahalfwidth:65405,sukunarabic:1618,summation:8721,sun:9788,superset:8835,supersetnotequal:8843,supersetorequal:8839,svsquare:13276,syouwaerasquare:13180,t:116,tabengali:2468,tackdown:8868,tackleft:8867,tadeva:2340,tagujarati:2724,tagurmukhi:2596,taharabic:1591,tahfinalarabic:65218,tahinitialarabic:65219,tahiragana:12383,tahmedialarabic:65220,
-taisyouerasquare:13181,takatakana:12479,takatakanahalfwidth:65408,tatweelarabic:1600,tau:964,tav:1514,tavdages:64330,tavdagesh:64330,tavdageshhebrew:64330,tavhebrew:1514,tbar:359,tbopomofo:12554,tcaron:357,tccurl:680,tcedilla:355,tcheharabic:1670,tchehfinalarabic:64379,tchehinitialarabic:64380,tchehmedialarabic:64381,tcircle:9443,tcircumflexbelow:7793,tcommaaccent:355,tdieresis:7831,tdotaccent:7787,tdotbelow:7789,tecyrillic:1090,tedescendercyrillic:1197,teharabic:1578,tehfinalarabic:65174,tehhahinitialarabic:64674,
-tehhahisolatedarabic:64524,tehinitialarabic:65175,tehiragana:12390,tehjeeminitialarabic:64673,tehjeemisolatedarabic:64523,tehmarbutaarabic:1577,tehmarbutafinalarabic:65172,tehmedialarabic:65176,tehmeeminitialarabic:64676,tehmeemisolatedarabic:64526,tehnoonfinalarabic:64627,tekatakana:12486,tekatakanahalfwidth:65411,telephone:8481,telephoneblack:9742,telishagedolahebrew:1440,telishaqetanahebrew:1449,tencircle:9321,tenideographicparen:12841,tenparen:9341,tenperiod:9361,tenroman:8569,tesh:679,tet:1496,
-tetdagesh:64312,tetdageshhebrew:64312,tethebrew:1496,tetsecyrillic:1205,tevirhebrew:1435,tevirlefthebrew:1435,thabengali:2469,thadeva:2341,thagujarati:2725,thagurmukhi:2597,thalarabic:1584,thalfinalarabic:65196,thanthakhatlowleftthai:63640,thanthakhatlowrightthai:63639,thanthakhatthai:3660,thanthakhatupperleftthai:63638,theharabic:1579,thehfinalarabic:65178,thehinitialarabic:65179,thehmedialarabic:65180,thereexists:8707,therefore:8756,theta:952,theta1:977,thetasymbolgreek:977,thieuthacirclekorean:12921,
-thieuthaparenkorean:12825,thieuthcirclekorean:12907,thieuthkorean:12620,thieuthparenkorean:12811,thirteencircle:9324,thirteenparen:9344,thirteenperiod:9364,thonangmonthothai:3601,thook:429,thophuthaothai:3602,thorn:254,thothahanthai:3607,thothanthai:3600,thothongthai:3608,thothungthai:3606,thousandcyrillic:1154,thousandsseparatorarabic:1644,thousandsseparatorpersian:1644,three:51,threearabic:1635,threebengali:2537,threecircle:9314,threecircleinversesansserif:10124,threedeva:2409,threeeighths:8540,
-threegujarati:2793,threegurmukhi:2665,threehackarabic:1635,threehangzhou:12323,threeideographicparen:12834,threeinferior:8323,threemonospace:65299,threenumeratorbengali:2550,threeoldstyle:63283,threeparen:9334,threeperiod:9354,threepersian:1779,threequarters:190,threequartersemdash:63198,threeroman:8562,threesuperior:179,threethai:3667,thzsquare:13204,tihiragana:12385,tikatakana:12481,tikatakanahalfwidth:65409,tikeutacirclekorean:12912,tikeutaparenkorean:12816,tikeutcirclekorean:12898,tikeutkorean:12599,
-tikeutparenkorean:12802,tilde:732,tildebelowcmb:816,tildecmb:771,tildecomb:771,tildedoublecmb:864,tildeoperator:8764,tildeoverlaycmb:820,tildeverticalcmb:830,timescircle:8855,tipehahebrew:1430,tipehalefthebrew:1430,tippigurmukhi:2672,titlocyrilliccmb:1155,tiwnarmenian:1407,tlinebelow:7791,tmonospace:65364,toarmenian:1385,tohiragana:12392,tokatakana:12488,tokatakanahalfwidth:65412,tonebarextrahighmod:741,tonebarextralowmod:745,tonebarhighmod:742,tonebarlowmod:744,tonebarmidmod:743,tonefive:445,tonesix:389,
-tonetwo:424,tonos:900,tonsquare:13095,topatakthai:3599,tortoiseshellbracketleft:12308,tortoiseshellbracketleftsmall:65117,tortoiseshellbracketleftvertical:65081,tortoiseshellbracketright:12309,tortoiseshellbracketrightsmall:65118,tortoiseshellbracketrightvertical:65082,totaothai:3605,tpalatalhook:427,tparen:9391,trademark:8482,trademarksans:63722,trademarkserif:63195,tretroflexhook:648,triagdn:9660,triaglf:9668,triagrt:9658,triagup:9650,ts:678,tsadi:1510,tsadidagesh:64326,tsadidageshhebrew:64326,
-tsadihebrew:1510,tsecyrillic:1094,tsere:1461,tsere12:1461,tsere1e:1461,tsere2b:1461,tserehebrew:1461,tserenarrowhebrew:1461,tserequarterhebrew:1461,tserewidehebrew:1461,tshecyrillic:1115,tsuperior:63219,ttabengali:2463,ttadeva:2335,ttagujarati:2719,ttagurmukhi:2591,tteharabic:1657,ttehfinalarabic:64359,ttehinitialarabic:64360,ttehmedialarabic:64361,tthabengali:2464,tthadeva:2336,tthagujarati:2720,tthagurmukhi:2592,tturned:647,tuhiragana:12388,tukatakana:12484,tukatakanahalfwidth:65410,tusmallhiragana:12387,
-tusmallkatakana:12483,tusmallkatakanahalfwidth:65391,twelvecircle:9323,twelveparen:9343,twelveperiod:9363,twelveroman:8571,twentycircle:9331,twentyhangzhou:21316,twentyparen:9351,twentyperiod:9371,two:50,twoarabic:1634,twobengali:2536,twocircle:9313,twocircleinversesansserif:10123,twodeva:2408,twodotenleader:8229,twodotleader:8229,twodotleadervertical:65072,twogujarati:2792,twogurmukhi:2664,twohackarabic:1634,twohangzhou:12322,twoideographicparen:12833,twoinferior:8322,twomonospace:65298,twonumeratorbengali:2549,
-twooldstyle:63282,twoparen:9333,twoperiod:9353,twopersian:1778,tworoman:8561,twostroke:443,twosuperior:178,twothai:3666,twothirds:8532,u:117,uacute:250,ubar:649,ubengali:2441,ubopomofo:12584,ubreve:365,ucaron:468,ucircle:9444,ucircumflex:251,ucircumflexbelow:7799,ucyrillic:1091,udattadeva:2385,udblacute:369,udblgrave:533,udeva:2313,udieresis:252,udieresisacute:472,udieresisbelow:7795,udieresiscaron:474,udieresiscyrillic:1265,udieresisgrave:476,udieresismacron:470,udotbelow:7909,ugrave:249,ugujarati:2697,
-ugurmukhi:2569,uhiragana:12358,uhookabove:7911,uhorn:432,uhornacute:7913,uhorndotbelow:7921,uhorngrave:7915,uhornhookabove:7917,uhorntilde:7919,uhungarumlaut:369,uhungarumlautcyrillic:1267,uinvertedbreve:535,ukatakana:12454,ukatakanahalfwidth:65395,ukcyrillic:1145,ukorean:12636,umacron:363,umacroncyrillic:1263,umacrondieresis:7803,umatragurmukhi:2625,umonospace:65365,underscore:95,underscoredbl:8215,underscoremonospace:65343,underscorevertical:65075,underscorewavy:65103,union:8746,universal:8704,
-uogonek:371,uparen:9392,upblock:9600,upperdothebrew:1476,upsilon:965,upsilondieresis:971,upsilondieresistonos:944,upsilonlatin:650,upsilontonos:973,uptackbelowcmb:797,uptackmod:724,uragurmukhi:2675,uring:367,ushortcyrillic:1118,usmallhiragana:12357,usmallkatakana:12453,usmallkatakanahalfwidth:65385,ustraightcyrillic:1199,ustraightstrokecyrillic:1201,utilde:361,utildeacute:7801,utildebelow:7797,uubengali:2442,uudeva:2314,uugujarati:2698,uugurmukhi:2570,uumatragurmukhi:2626,uuvowelsignbengali:2498,
-uuvowelsigndeva:2370,uuvowelsigngujarati:2754,uvowelsignbengali:2497,uvowelsigndeva:2369,uvowelsigngujarati:2753,v:118,vadeva:2357,vagujarati:2741,vagurmukhi:2613,vakatakana:12535,vav:1493,vavdagesh:64309,vavdagesh65:64309,vavdageshhebrew:64309,vavhebrew:1493,vavholam:64331,vavholamhebrew:64331,vavvavhebrew:1520,vavyodhebrew:1521,vcircle:9445,vdotbelow:7807,vecyrillic:1074,veharabic:1700,vehfinalarabic:64363,vehinitialarabic:64364,vehmedialarabic:64365,vekatakana:12537,venus:9792,verticalbar:124,
-verticallineabovecmb:781,verticallinebelowcmb:809,verticallinelowmod:716,verticallinemod:712,vewarmenian:1406,vhook:651,vikatakana:12536,viramabengali:2509,viramadeva:2381,viramagujarati:2765,visargabengali:2435,visargadeva:2307,visargagujarati:2691,vmonospace:65366,voarmenian:1400,voicediterationhiragana:12446,voicediterationkatakana:12542,voicedmarkkana:12443,voicedmarkkanahalfwidth:65438,vokatakana:12538,vparen:9393,vtilde:7805,vturned:652,vuhiragana:12436,vukatakana:12532,w:119,wacute:7811,waekorean:12633,
-wahiragana:12431,wakatakana:12527,wakatakanahalfwidth:65436,wakorean:12632,wasmallhiragana:12430,wasmallkatakana:12526,wattosquare:13143,wavedash:12316,wavyunderscorevertical:65076,wawarabic:1608,wawfinalarabic:65262,wawhamzaabovearabic:1572,wawhamzaabovefinalarabic:65158,wbsquare:13277,wcircle:9446,wcircumflex:373,wdieresis:7813,wdotaccent:7815,wdotbelow:7817,wehiragana:12433,weierstrass:8472,wekatakana:12529,wekorean:12638,weokorean:12637,wgrave:7809,whitebullet:9702,whitecircle:9675,whitecircleinverse:9689,
-whitecornerbracketleft:12302,whitecornerbracketleftvertical:65091,whitecornerbracketright:12303,whitecornerbracketrightvertical:65092,whitediamond:9671,whitediamondcontainingblacksmalldiamond:9672,whitedownpointingsmalltriangle:9663,whitedownpointingtriangle:9661,whiteleftpointingsmalltriangle:9667,whiteleftpointingtriangle:9665,whitelenticularbracketleft:12310,whitelenticularbracketright:12311,whiterightpointingsmalltriangle:9657,whiterightpointingtriangle:9655,whitesmallsquare:9643,whitesmilingface:9786,
-whitesquare:9633,whitestar:9734,whitetelephone:9743,whitetortoiseshellbracketleft:12312,whitetortoiseshellbracketright:12313,whiteuppointingsmalltriangle:9653,whiteuppointingtriangle:9651,wihiragana:12432,wikatakana:12528,wikorean:12639,wmonospace:65367,wohiragana:12434,wokatakana:12530,wokatakanahalfwidth:65382,won:8361,wonmonospace:65510,wowaenthai:3623,wparen:9394,wring:7832,wsuperior:695,wturned:653,wynn:447,x:120,xabovecmb:829,xbopomofo:12562,xcircle:9447,xdieresis:7821,xdotaccent:7819,xeharmenian:1389,
-xi:958,xmonospace:65368,xparen:9395,xsuperior:739,y:121,yaadosquare:13134,yabengali:2479,yacute:253,yadeva:2351,yaekorean:12626,yagujarati:2735,yagurmukhi:2607,yahiragana:12420,yakatakana:12516,yakatakanahalfwidth:65428,yakorean:12625,yamakkanthai:3662,yasmallhiragana:12419,yasmallkatakana:12515,yasmallkatakanahalfwidth:65388,yatcyrillic:1123,ycircle:9448,ycircumflex:375,ydieresis:255,ydotaccent:7823,ydotbelow:7925,yeharabic:1610,yehbarreearabic:1746,yehbarreefinalarabic:64431,yehfinalarabic:65266,
-yehhamzaabovearabic:1574,yehhamzaabovefinalarabic:65162,yehhamzaaboveinitialarabic:65163,yehhamzaabovemedialarabic:65164,yehinitialarabic:65267,yehmedialarabic:65268,yehmeeminitialarabic:64733,yehmeemisolatedarabic:64600,yehnoonfinalarabic:64660,yehthreedotsbelowarabic:1745,yekorean:12630,yen:165,yenmonospace:65509,yeokorean:12629,yeorinhieuhkorean:12678,yerahbenyomohebrew:1450,yerahbenyomolefthebrew:1450,yericyrillic:1099,yerudieresiscyrillic:1273,yesieungkorean:12673,yesieungpansioskorean:12675,
-yesieungsioskorean:12674,yetivhebrew:1434,ygrave:7923,yhook:436,yhookabove:7927,yiarmenian:1397,yicyrillic:1111,yikorean:12642,yinyang:9775,yiwnarmenian:1410,ymonospace:65369,yod:1497,yoddagesh:64313,yoddageshhebrew:64313,yodhebrew:1497,yodyodhebrew:1522,yodyodpatahhebrew:64287,yohiragana:12424,yoikorean:12681,yokatakana:12520,yokatakanahalfwidth:65430,yokorean:12635,yosmallhiragana:12423,yosmallkatakana:12519,yosmallkatakanahalfwidth:65390,yotgreek:1011,yoyaekorean:12680,yoyakorean:12679,yoyakthai:3618,
-yoyingthai:3597,yparen:9396,ypogegrammeni:890,ypogegrammenigreekcmb:837,yr:422,yring:7833,ysuperior:696,ytilde:7929,yturned:654,yuhiragana:12422,yuikorean:12684,yukatakana:12518,yukatakanahalfwidth:65429,yukorean:12640,yusbigcyrillic:1131,yusbigiotifiedcyrillic:1133,yuslittlecyrillic:1127,yuslittleiotifiedcyrillic:1129,yusmallhiragana:12421,yusmallkatakana:12517,yusmallkatakanahalfwidth:65389,yuyekorean:12683,yuyeokorean:12682,yyabengali:2527,yyadeva:2399,z:122,zaarmenian:1382,zacute:378,zadeva:2395,
-zagurmukhi:2651,zaharabic:1592,zahfinalarabic:65222,zahinitialarabic:65223,zahiragana:12374,zahmedialarabic:65224,zainarabic:1586,zainfinalarabic:65200,zakatakana:12470,zaqefgadolhebrew:1429,zaqefqatanhebrew:1428,zarqahebrew:1432,zayin:1494,zayindagesh:64310,zayindageshhebrew:64310,zayinhebrew:1494,zbopomofo:12567,zcaron:382,zcircle:9449,zcircumflex:7825,zcurl:657,zdot:380,zdotaccent:380,zdotbelow:7827,zecyrillic:1079,zedescendercyrillic:1177,zedieresiscyrillic:1247,zehiragana:12380,zekatakana:12476,
-zero:48,zeroarabic:1632,zerobengali:2534,zerodeva:2406,zerogujarati:2790,zerogurmukhi:2662,zerohackarabic:1632,zeroinferior:8320,zeromonospace:65296,zerooldstyle:63280,zeropersian:1776,zerosuperior:8304,zerothai:3664,zerowidthjoiner:65279,zerowidthnonjoiner:8204,zerowidthspace:8203,zeta:950,zhbopomofo:12563,zhearmenian:1386,zhebrevecyrillic:1218,zhecyrillic:1078,zhedescendercyrillic:1175,zhedieresiscyrillic:1245,zihiragana:12376,zikatakana:12472,zinorhebrew:1454,zlinebelow:7829,zmonospace:65370,zohiragana:12382,
-zokatakana:12478,zparen:9397,zretroflexhook:656,zstroke:438,zuhiragana:12378,zukatakana:12474,".notdef":0},Jc=function(){function d(a,c,e,f,d){if(f instanceof tb&&f.isNativelyDecodable(c,e)){var h=f.dict.get("ColorSpace","CS"),h=ha.parse(h,c,e);c=h.numComps;a.send("JpegDecode",[f.getIR(),c],function(a){a=a.data;a=new wa(a,0,a.length,f.dict);d.resolve(a)})}else d.resolve(f)}function a(b,c,e,f,d,h,l){this.image=e;e.getParams&&oa("get params from actual stream");f=e.dict;this.width=f.get("Width","W");
-this.height=f.get("Height","H");(1>this.width||1>this.height)&&w("Invalid image width: "+this.width+" or height: "+this.height);this.interpolate=f.get("Interpolate","I")||!1;this.imageMask=f.get("ImageMask","IM")||!1;e=e.bitsPerComponent;e||(e=f.get("BitsPerComponent","BPC"))||(this.imageMask?e=1:w("Bits per component missing in image: "+this.imageMask));this.bpc=e;if(!this.imageMask){var p=f.get("ColorSpace","CS");p||(oa('JPX images (which don"t require color spaces'),p=new Wa("DeviceRGB"));this.colorSpace=
-ha.parse(p,b,c);this.numComps=this.colorSpace.numComps}this.decode=f.get("Decode","D");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode)||l&&!ha.isDefaultDecode(this.decode,1))){this.needsDecode=!0;l=(1<<e)-1;this.decodeCoefficients=[];this.decodeAddends=[];for(e=f=0;f<this.decode.length;f+=2,++e)p=this.decode[f],this.decodeCoefficients[e]=this.decode[f+1]-p,this.decodeAddends[e]=l*p}d?this.smask=new a(b,c,d,!1):h&&(ra(h)?this.mask=new a(b,c,h,!1,
-null,null,!0):this.mask=h)}a.buildImage=function(b,c,e,f,g,h){var l=new E,p=new E,k=new E;E.all([l,p,k]).then(function(c){c=new a(e,f,c[0],h,c[1],c[2]);b(c)});d(c,e,f,g,l);l=g.dict.get("SMask");g=g.dict.get("Mask");l?(d(c,e,f,l,p),k.resolve(null)):(p.resolve(null),g?ra(g)?d(c,e,f,g,k):U(g)?k.resolve(g):(Y("Unsupported mask format."),k.resolve(null)):k.resolve(null))};a.resize=function(a,c,e,f,d,h,l){var p=h*l*e;c=8>=c?new Uint8Array(p):16>=c?new Uint16Array(p):new Uint32Array(p);p=f/h;d/=l;for(var k,
-m,r,n=0;n<l;n++)for(var q=0;q<h;q++)k=Math.floor(q*p),m=Math.floor(n*d),r=n*h+q,k=m*f+k,1===e?c[r]=a[k]:3===e&&(r*=3,k*=3,c[r]=a[k],c[r+1]=a[k+1],c[r+2]=a[k+2]);return c};a.prototype={get drawWidth(){return!this.smask?this.width:Math.max(this.width,this.smask.width)},get drawHeight(){return!this.smask?this.height:Math.max(this.height,this.smask.height)},decodeBuffer:function(a){var c=this.bpc,e=this.numComps,f,d;f=this.decodeAddends;d=this.decodeCoefficients;var h=(1<<c)-1;if(1===c)for(var c=0,l=
-a.length;c<l;c++)a[c]=+!a[c];else for(var p=0,c=0,l=this.width*this.height;c<l;c++)for(var k=0;k<e;k++){var m=a,r=p,n=a[p],n=f[k]+n*d[k];m[r]=0>n?0:n>h?h:n;p++}},getComponents:function(a){var c=this.bpc;if(8===c)return a;var e=this.width,f=this.numComps,d=e*this.height*f,h=0,l=8>=c?new Uint8Array(d):16>=c?new Uint16Array(d):new Uint32Array(d),e=e*f,p=(1<<c)-1;if(1===c)for(var k=f=c=0;k<d;++k)0===k%e?f=c=0:c>>=1,0>=c&&(f=a[h++],c=128),l[k]=+!!(f&c);else for(var m=0,k=f=0;k<d;++k){0===k%e&&(m=f=0);
-for(;m<c;)f=f<<8|a[h++],m+=8;var m=m-c,r=f>>m;l[k]=0>r?0:r>p?p:r;f&=(1<<m)-1}return l},getOpacity:function(b,c,e){var d=this.smask,g=this.mask,h;if(d){e=d.width;var l=d.height;h=new Uint8Array(e*l);d.fillGrayBuffer(h);if(e!=b||l!=c)h=a.resize(h,d.bpc,1,e,l,b,c)}else if(g)if(g instanceof a){e=g.width;l=g.height;h=new Uint8Array(e*l);g.numComps=1;g.fillGrayBuffer(h);for(var d=0,p=e*l;d<p;++d)h[d]=255-h[d];if(e!=b||l!=c)h=a.resize(h,g.bpc,1,e,l,b,c)}else if(U(g)){h=new Uint8Array(b*c);l=this.numComps;
-d=0;for(p=b*c;d<p;++d){b=0;c=d*l;for(var k=0;k<l;++k){var m=e[c+k],r=2*k;if(m<g[r]||m>g[r+1]){b=255;break}}h[d]=b}}else w("Unknown mask format.");else{h=new Uint8Array(b*c);d=0;for(p=b*c;d<p;++d)h[d]=255}return h},applyStencilMask:function(a,c){var e=this.width,d=this.height,g=this.getImageBytes((e+7>>3)*d),h=0,l,p,k,m,r=3;for(l=0;l<d;l++)for(p=k=0;p<e;p++)k||(m=g[h++],k=128),!(m&k)===c&&(a[r]=0),r+=4,k>>=1},fillRgbaBuffer:function(b,c,e){var d=this.width,g=this.height,h=this.bpc,l=d*this.numComps*
-h+7>>3,p=this.getImageBytes(g*l),l=0|p.length/l*e/g,k=this.getComponents(p),p=this.getOpacity(c,e,k);this.needsDecode&&this.decodeBuffer(k);h=this.colorSpace.createRgbBuffer(k,0,d*g,h);if(d!=c||g!=e)h=a.resize(h,this.bpc,3,d,g,c,e);d=e=0;c=4*c*l;for(l=0;l<c;l+=4)b[l]=h[e++],b[l+1]=h[e++],b[l+2]=h[e++],b[l+3]=p[d++]},fillGrayBuffer:function(a){var c=this.numComps;1!=c&&w("Reading gray scale from a color image: "+c);var e=this.width,d=this.height,g=this.bpc,c=this.getImageBytes(d*(e*c*g+7>>3)),c=this.getComponents(c);
-this.needsDecode&&this.decodeBuffer(c);e*=d;g=255/((1<<g)-1);for(d=0;d<e;++d)a[d]=g*c[d]|0},getImageData:function(){var a=this.drawWidth,c=this.drawHeight,e={width:a,height:c,data:new Uint8Array(4*a*c)};this.fillRgbaBuffer(e.data,a,c);return e},getImageBytes:function(a){this.image.reset();return this.image.getBytes(a)}};return a}(),Lc={Courier:600,"Courier-Bold":600,"Courier-BoldOblique":600,"Courier-Oblique":600,Helvetica:{space:278,exclam:278,quotedbl:355,numbersign:556,dollar:556,percent:889,ampersand:667,
-quoteright:222,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:278,semicolon:278,less:584,equal:584,greater:584,question:556,at:1015,A:667,B:667,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:500,K:667,L:556,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:278,backslash:278,bracketright:278,asciicircum:469,underscore:556,
-quoteleft:222,a:556,b:556,c:500,d:556,e:556,f:278,g:556,h:556,i:222,j:222,k:500,l:222,m:833,n:556,o:556,p:556,q:556,r:333,s:500,t:278,u:556,v:500,w:722,x:500,y:500,z:500,braceleft:334,bar:260,braceright:334,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:191,quotedblleft:333,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:537,bullet:350,quotesinglbase:222,
-quotedblbase:333,quotedblright:333,guillemotright:556,ellipsis:1E3,perthousand:1E3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:1E3,ordfeminine:370,Lslash:556,Oslash:778,OE:1E3,ordmasculine:365,ae:889,dotlessi:278,lslash:222,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:556,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:667,
-aacute:556,Ucircumflex:722,yacute:500,scommaaccent:500,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:500,aring:556,Ncommaaccent:722,lacute:222,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:500,scedilla:500,iacute:278,lozenge:471,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:556,Amacron:667,rcaron:333,ccedilla:500,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,
-Sacute:667,dcaron:643,Umacron:722,uring:556,threesuperior:333,Ograve:778,Agrave:667,Abreve:667,multiply:584,uacute:556,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:500,nacute:556,umacron:556,Ncaron:722,Iacute:278,plusminus:584,brokenbar:260,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:333,omacron:556,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:222,tcaron:317,eogonek:556,
-Uogonek:722,Aacute:667,Adieresis:667,egrave:556,zacute:500,iogonek:222,Oacute:778,oacute:556,amacron:556,sacute:500,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,twosuperior:333,Odieresis:778,mu:556,igrave:278,ohungarumlaut:556,Eogonek:667,dcroat:556,threequarters:834,Scedilla:667,lcaron:299,Kcommaaccent:667,Lacute:556,trademark:1E3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:556,onehalf:834,lessequal:549,ocircumflex:556,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:556,
-onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:556,Ccaron:722,ugrave:556,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:556,Rcommaaccent:722,Lcommaaccent:556,Atilde:667,Aogonek:667,Aring:667,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:500,minus:584,Icircumflex:278,ncaron:556,tcommaaccent:278,logicalnot:584,odieresis:556,udieresis:556,notequal:549,gcommaaccent:556,eth:556,zcaron:500,ncommaaccent:556,onesuperior:333,imacron:278,Euro:556},
-"Helvetica-Bold":{space:278,exclam:333,quotedbl:474,numbersign:556,dollar:556,percent:889,ampersand:722,quoteright:278,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:333,semicolon:333,less:584,equal:584,greater:584,question:611,at:975,A:722,B:722,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:556,K:722,L:611,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,
-V:667,W:944,X:667,Y:667,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:584,underscore:556,quoteleft:278,a:556,b:611,c:556,d:611,e:556,f:333,g:611,h:611,i:278,j:278,k:556,l:278,m:889,n:611,o:611,p:611,q:611,r:389,s:556,t:333,u:611,v:556,w:778,x:556,y:556,z:500,braceleft:389,bar:280,braceright:389,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:238,quotedblleft:500,guillemotleft:556,guilsinglleft:333,guilsinglright:333,
-fi:611,fl:611,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:556,bullet:350,quotesinglbase:278,quotedblbase:500,quotedblright:500,guillemotright:556,ellipsis:1E3,perthousand:1E3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:1E3,ordfeminine:370,Lslash:611,Oslash:778,OE:1E3,ordmasculine:365,ae:889,dotlessi:278,lslash:278,oslash:611,oe:944,germandbls:611,
-Idieresis:278,eacute:556,abreve:556,uhungarumlaut:611,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:722,aacute:556,Ucircumflex:722,yacute:556,scommaaccent:556,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:611,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:556,aring:556,Ncommaaccent:722,lacute:278,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:556,scedilla:556,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,
-ucircumflex:611,acircumflex:556,Amacron:722,rcaron:389,ccedilla:556,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:743,Umacron:722,uring:611,threesuperior:333,Ograve:778,Agrave:722,Abreve:722,multiply:584,uacute:611,Tcaron:611,partialdiff:494,ydieresis:556,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:556,nacute:611,umacron:611,Ncaron:722,Iacute:278,plusminus:584,brokenbar:280,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:389,
-omacron:611,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:389,eogonek:556,Uogonek:722,Aacute:722,Adieresis:722,egrave:556,zacute:500,iogonek:278,Oacute:778,oacute:611,amacron:556,sacute:556,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:611,twosuperior:333,Odieresis:778,mu:611,igrave:278,ohungarumlaut:611,Eogonek:667,dcroat:611,threequarters:834,Scedilla:667,lcaron:400,Kcommaaccent:722,Lacute:611,trademark:1E3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:611,
-onehalf:834,lessequal:549,ocircumflex:611,ntilde:611,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:611,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:611,Ccaron:722,ugrave:611,radical:549,Dcaron:722,rcommaaccent:389,Ntilde:722,otilde:611,Rcommaaccent:722,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:556,minus:584,Icircumflex:278,ncaron:611,tcommaaccent:333,logicalnot:584,odieresis:611,udieresis:611,
-notequal:549,gcommaaccent:611,eth:611,zcaron:500,ncommaaccent:611,onesuperior:333,imacron:278,Euro:556},"Helvetica-BoldOblique":{space:278,exclam:333,quotedbl:474,numbersign:556,dollar:556,percent:889,ampersand:722,quoteright:278,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:333,semicolon:333,less:584,equal:584,greater:584,question:611,at:975,A:722,B:722,C:722,
-D:722,E:667,F:611,G:778,H:722,I:278,J:556,K:722,L:611,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:584,underscore:556,quoteleft:278,a:556,b:611,c:556,d:611,e:556,f:333,g:611,h:611,i:278,j:278,k:556,l:278,m:889,n:611,o:611,p:611,q:611,r:389,s:556,t:333,u:611,v:556,w:778,x:556,y:556,z:500,braceleft:389,bar:280,braceright:389,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,
-section:556,currency:556,quotesingle:238,quotedblleft:500,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:611,fl:611,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:556,bullet:350,quotesinglbase:278,quotedblbase:500,quotedblright:500,guillemotright:556,ellipsis:1E3,perthousand:1E3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:1E3,ordfeminine:370,
-Lslash:611,Oslash:778,OE:1E3,ordmasculine:365,ae:889,dotlessi:278,lslash:278,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:611,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:722,aacute:556,Ucircumflex:722,yacute:556,scommaaccent:556,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:611,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:556,aring:556,Ncommaaccent:722,lacute:278,agrave:556,Tcommaaccent:611,
-Cacute:722,atilde:556,Edotaccent:667,scaron:556,scedilla:556,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,ucircumflex:611,acircumflex:556,Amacron:722,rcaron:389,ccedilla:556,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:743,Umacron:722,uring:611,threesuperior:333,Ograve:778,Agrave:722,Abreve:722,multiply:584,uacute:611,Tcaron:611,partialdiff:494,ydieresis:556,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:556,nacute:611,umacron:611,Ncaron:722,
-Iacute:278,plusminus:584,brokenbar:280,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:389,omacron:611,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:389,eogonek:556,Uogonek:722,Aacute:722,Adieresis:722,egrave:556,zacute:500,iogonek:278,Oacute:778,oacute:611,amacron:556,sacute:556,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:611,twosuperior:333,Odieresis:778,mu:611,igrave:278,ohungarumlaut:611,Eogonek:667,dcroat:611,threequarters:834,
-Scedilla:667,lcaron:400,Kcommaaccent:722,Lacute:611,trademark:1E3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:611,onehalf:834,lessequal:549,ocircumflex:611,ntilde:611,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:611,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:611,Ccaron:722,ugrave:611,radical:549,Dcaron:722,rcommaaccent:389,Ntilde:722,otilde:611,Rcommaaccent:722,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,
-kcommaaccent:556,minus:584,Icircumflex:278,ncaron:611,tcommaaccent:333,logicalnot:584,odieresis:611,udieresis:611,notequal:549,gcommaaccent:611,eth:611,zcaron:500,ncommaaccent:611,onesuperior:333,imacron:278,Euro:556},"Helvetica-Oblique":{space:278,exclam:278,quotedbl:355,numbersign:556,dollar:556,percent:889,ampersand:667,quoteright:222,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,
-eight:556,nine:556,colon:278,semicolon:278,less:584,equal:584,greater:584,question:556,at:1015,A:667,B:667,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:500,K:667,L:556,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:278,backslash:278,bracketright:278,asciicircum:469,underscore:556,quoteleft:222,a:556,b:556,c:500,d:556,e:556,f:278,g:556,h:556,i:222,j:222,k:500,l:222,m:833,n:556,o:556,p:556,q:556,r:333,s:500,t:278,u:556,v:500,w:722,x:500,y:500,z:500,braceleft:334,
-bar:260,braceright:334,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:191,quotedblleft:333,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:537,bullet:350,quotesinglbase:222,quotedblbase:333,quotedblright:333,guillemotright:556,ellipsis:1E3,perthousand:1E3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,
-dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:1E3,ordfeminine:370,Lslash:556,Oslash:778,OE:1E3,ordmasculine:365,ae:889,dotlessi:278,lslash:222,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:556,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:667,aacute:556,Ucircumflex:722,yacute:500,scommaaccent:500,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,
-copyright:737,Emacron:667,ccaron:500,aring:556,Ncommaaccent:722,lacute:222,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:500,scedilla:500,iacute:278,lozenge:471,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:556,Amacron:667,rcaron:333,ccedilla:500,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:643,Umacron:722,uring:556,threesuperior:333,Ograve:778,Agrave:667,Abreve:667,multiply:584,uacute:556,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,
-icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:500,nacute:556,umacron:556,Ncaron:722,Iacute:278,plusminus:584,brokenbar:260,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:333,omacron:556,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:222,tcaron:317,eogonek:556,Uogonek:722,Aacute:667,Adieresis:667,egrave:556,zacute:500,iogonek:222,Oacute:778,oacute:556,amacron:556,sacute:500,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,
-twosuperior:333,Odieresis:778,mu:556,igrave:278,ohungarumlaut:556,Eogonek:667,dcroat:556,threequarters:834,Scedilla:667,lcaron:299,Kcommaaccent:667,Lacute:556,trademark:1E3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:556,onehalf:834,lessequal:549,ocircumflex:556,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:556,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:556,Ccaron:722,ugrave:556,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:556,Rcommaaccent:722,
-Lcommaaccent:556,Atilde:667,Aogonek:667,Aring:667,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:500,minus:584,Icircumflex:278,ncaron:556,tcommaaccent:278,logicalnot:584,odieresis:556,udieresis:556,notequal:549,gcommaaccent:556,eth:556,zcaron:500,ncommaaccent:556,onesuperior:333,imacron:278,Euro:556},Symbol:{space:250,exclam:333,universal:713,numbersign:500,existential:549,percent:833,ampersand:778,suchthat:439,parenleft:333,parenright:333,asteriskmath:500,plus:549,comma:250,minus:549,
-period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:278,semicolon:278,less:549,equal:549,greater:549,question:444,congruent:549,Alpha:722,Beta:667,Chi:722,Delta:612,Epsilon:611,Phi:763,Gamma:603,Eta:722,Iota:333,theta1:631,Kappa:722,Lambda:686,Mu:889,Nu:722,Omicron:722,Pi:768,Theta:741,Rho:556,Sigma:592,Tau:611,Upsilon:690,sigma1:439,Omega:768,Xi:645,Psi:795,Zeta:611,bracketleft:333,therefore:863,bracketright:333,perpendicular:658,underscore:500,
-radicalex:500,alpha:631,beta:549,chi:549,delta:494,epsilon:439,phi:521,gamma:411,eta:603,iota:329,phi1:603,kappa:549,lambda:549,mu:576,nu:521,omicron:549,pi:549,theta:521,rho:549,sigma:603,tau:439,upsilon:576,omega1:713,omega:686,xi:493,psi:686,zeta:494,braceleft:480,bar:200,braceright:480,similar:549,Euro:750,Upsilon1:620,minute:247,lessequal:549,fraction:167,infinity:713,florin:500,club:753,diamond:753,heart:753,spade:753,arrowboth:1042,arrowleft:987,arrowup:603,arrowright:987,arrowdown:603,degree:400,
-plusminus:549,second:411,greaterequal:549,multiply:549,proportional:713,partialdiff:494,bullet:460,divide:549,notequal:549,equivalence:549,approxequal:549,ellipsis:1E3,arrowvertex:603,arrowhorizex:1E3,carriagereturn:658,aleph:823,Ifraktur:686,Rfraktur:795,weierstrass:987,circlemultiply:768,circleplus:768,emptyset:823,intersection:768,union:768,propersuperset:713,reflexsuperset:713,notsubset:713,propersubset:713,reflexsubset:713,element:713,notelement:713,angle:768,gradient:713,registerserif:790,copyrightserif:790,
-trademarkserif:890,product:823,radical:549,dotmath:250,logicalnot:713,logicaland:603,logicalor:603,arrowdblboth:1042,arrowdblleft:987,arrowdblup:603,arrowdblright:987,arrowdbldown:603,lozenge:494,angleleft:329,registersans:790,copyrightsans:790,trademarksans:786,summation:713,parenlefttp:384,parenleftex:384,parenleftbt:384,bracketlefttp:384,bracketleftex:384,bracketleftbt:384,bracelefttp:494,braceleftmid:494,braceleftbt:494,braceex:494,angleright:329,integral:274,integraltp:686,integralex:686,integralbt:686,
-parenrighttp:384,parenrightex:384,parenrightbt:384,bracketrighttp:384,bracketrightex:384,bracketrightbt:384,bracerighttp:494,bracerightmid:494,bracerightbt:494,apple:790},"Times-Roman":{space:250,exclam:333,quotedbl:408,numbersign:500,dollar:500,percent:833,ampersand:778,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:564,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:278,semicolon:278,less:564,
-equal:564,greater:564,question:444,at:921,A:722,B:667,C:667,D:722,E:611,F:556,G:722,H:722,I:333,J:389,K:722,L:611,M:889,N:722,O:722,P:556,Q:722,R:667,S:556,T:611,U:722,V:722,W:944,X:722,Y:722,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:469,underscore:500,quoteleft:333,a:444,b:500,c:444,d:500,e:444,f:333,g:500,h:500,i:278,j:278,k:500,l:278,m:778,n:500,o:500,p:500,q:500,r:333,s:389,t:278,u:500,v:500,w:722,x:500,y:500,z:444,braceleft:480,bar:200,braceright:480,asciitilde:541,exclamdown:333,
-cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:180,quotedblleft:444,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:453,bullet:350,quotesinglbase:333,quotedblbase:444,quotedblright:444,guillemotright:500,ellipsis:1E3,perthousand:1E3,questiondown:444,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,
-ogonek:333,caron:333,emdash:1E3,AE:889,ordfeminine:276,Lslash:611,Oslash:722,OE:889,ordmasculine:310,ae:667,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:500,Idieresis:333,eacute:444,abreve:444,uhungarumlaut:500,ecaron:444,Ydieresis:722,divide:564,Yacute:722,Acircumflex:722,aacute:444,Ucircumflex:722,yacute:500,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:444,Uacute:722,uogonek:500,Edieresis:611,Dcroat:722,commaaccent:250,copyright:760,Emacron:611,ccaron:444,aring:444,Ncommaaccent:722,
-lacute:278,agrave:444,Tcommaaccent:611,Cacute:667,atilde:444,Edotaccent:611,scaron:389,scedilla:389,iacute:278,lozenge:471,Rcaron:667,Gcommaaccent:722,ucircumflex:500,acircumflex:444,Amacron:722,rcaron:333,ccedilla:444,Zdotaccent:611,Thorn:556,Omacron:722,Racute:667,Sacute:556,dcaron:588,Umacron:722,uring:500,threesuperior:300,Ograve:722,Agrave:722,Abreve:722,multiply:564,uacute:500,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:611,adieresis:444,edieresis:444,cacute:444,
-nacute:500,umacron:500,Ncaron:722,Iacute:333,plusminus:564,brokenbar:200,registered:760,Gbreve:722,Idotaccent:333,summation:600,Egrave:611,racute:333,omacron:500,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:667,lcommaaccent:278,tcaron:326,eogonek:444,Uogonek:722,Aacute:722,Adieresis:722,egrave:444,zacute:444,iogonek:278,Oacute:722,oacute:500,amacron:444,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:500,igrave:278,ohungarumlaut:500,
-Eogonek:611,dcroat:500,threequarters:750,Scedilla:556,lcaron:344,Kcommaaccent:722,Lacute:611,trademark:980,edotaccent:444,Igrave:333,Imacron:333,Lcaron:611,onehalf:750,lessequal:549,ocircumflex:500,ntilde:500,Uhungarumlaut:722,Eacute:611,emacron:444,gbreve:500,onequarter:750,Scaron:556,Scommaaccent:556,Ohungarumlaut:722,degree:400,ograve:500,Ccaron:667,ugrave:500,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:500,Rcommaaccent:667,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:722,
-zdotaccent:444,Ecaron:611,Iogonek:333,kcommaaccent:500,minus:564,Icircumflex:333,ncaron:500,tcommaaccent:278,logicalnot:564,odieresis:500,udieresis:500,notequal:549,gcommaaccent:500,eth:500,zcaron:444,ncommaaccent:500,onesuperior:300,imacron:278,Euro:500},"Times-Bold":{space:250,exclam:333,quotedbl:555,numbersign:500,dollar:500,percent:1E3,ampersand:833,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:570,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,
-five:500,six:500,seven:500,eight:500,nine:500,colon:333,semicolon:333,less:570,equal:570,greater:570,question:500,at:930,A:722,B:667,C:722,D:722,E:667,F:611,G:778,H:778,I:389,J:500,K:778,L:667,M:944,N:722,O:778,P:611,Q:778,R:722,S:556,T:667,U:722,V:722,W:1E3,X:722,Y:722,Z:667,bracketleft:333,backslash:278,bracketright:333,asciicircum:581,underscore:500,quoteleft:333,a:500,b:556,c:444,d:556,e:444,f:333,g:500,h:556,i:278,j:333,k:556,l:278,m:833,n:556,o:500,p:556,q:556,r:444,s:389,t:333,u:556,v:500,
-w:722,x:500,y:500,z:444,braceleft:394,bar:220,braceright:394,asciitilde:520,exclamdown:333,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:278,quotedblleft:500,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:540,bullet:350,quotesinglbase:333,quotedblbase:500,quotedblright:500,guillemotright:500,ellipsis:1E3,perthousand:1E3,questiondown:500,grave:333,acute:333,circumflex:333,
-tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:1E3,ordfeminine:300,Lslash:667,Oslash:778,OE:1E3,ordmasculine:330,ae:722,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:556,Idieresis:389,eacute:444,abreve:500,uhungarumlaut:556,ecaron:444,Ydieresis:722,divide:570,Yacute:722,Acircumflex:722,aacute:500,Ucircumflex:722,yacute:500,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:556,
-Edieresis:667,Dcroat:722,commaaccent:250,copyright:747,Emacron:667,ccaron:444,aring:500,Ncommaaccent:722,lacute:278,agrave:500,Tcommaaccent:667,Cacute:722,atilde:500,Edotaccent:667,scaron:389,scedilla:389,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:500,Amacron:722,rcaron:444,ccedilla:444,Zdotaccent:667,Thorn:611,Omacron:778,Racute:722,Sacute:556,dcaron:672,Umacron:722,uring:556,threesuperior:300,Ograve:778,Agrave:722,Abreve:722,multiply:570,uacute:556,Tcaron:667,
-partialdiff:494,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:500,edieresis:444,cacute:444,nacute:556,umacron:556,Ncaron:722,Iacute:389,plusminus:570,brokenbar:220,registered:747,Gbreve:778,Idotaccent:389,summation:600,Egrave:667,racute:444,omacron:500,Zacute:667,Zcaron:667,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:416,eogonek:444,Uogonek:722,Aacute:722,Adieresis:722,egrave:444,zacute:444,iogonek:278,Oacute:778,oacute:500,amacron:500,sacute:389,idieresis:278,
-Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,twosuperior:300,Odieresis:778,mu:556,igrave:278,ohungarumlaut:500,Eogonek:667,dcroat:556,threequarters:750,Scedilla:556,lcaron:394,Kcommaaccent:778,Lacute:667,trademark:1E3,edotaccent:444,Igrave:389,Imacron:389,Lcaron:667,onehalf:750,lessequal:549,ocircumflex:500,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:444,gbreve:500,onequarter:750,Scaron:556,Scommaaccent:556,Ohungarumlaut:778,degree:400,ograve:500,Ccaron:722,ugrave:556,radical:549,Dcaron:722,
-rcommaaccent:444,Ntilde:722,otilde:500,Rcommaaccent:722,Lcommaaccent:667,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:444,Ecaron:667,Iogonek:389,kcommaaccent:556,minus:570,Icircumflex:389,ncaron:556,tcommaaccent:333,logicalnot:570,odieresis:500,udieresis:556,notequal:549,gcommaaccent:500,eth:500,zcaron:444,ncommaaccent:556,onesuperior:300,imacron:278,Euro:500},"Times-BoldItalic":{space:250,exclam:389,quotedbl:555,numbersign:500,dollar:500,percent:833,ampersand:778,quoteright:333,parenleft:333,
-parenright:333,asterisk:500,plus:570,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:333,semicolon:333,less:570,equal:570,greater:570,question:500,at:832,A:667,B:667,C:667,D:722,E:667,F:667,G:722,H:778,I:389,J:500,K:667,L:611,M:889,N:722,O:722,P:611,Q:722,R:667,S:556,T:611,U:722,V:667,W:889,X:667,Y:611,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:570,underscore:500,quoteleft:333,a:500,b:500,
-c:444,d:500,e:444,f:333,g:500,h:556,i:278,j:278,k:500,l:278,m:778,n:556,o:500,p:500,q:500,r:389,s:389,t:278,u:556,v:444,w:667,x:500,y:444,z:389,braceleft:348,bar:220,braceright:348,asciitilde:570,exclamdown:389,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:278,quotedblleft:500,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:500,bullet:350,quotesinglbase:333,quotedblbase:500,
-quotedblright:500,guillemotright:500,ellipsis:1E3,perthousand:1E3,questiondown:500,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:944,ordfeminine:266,Lslash:611,Oslash:722,OE:944,ordmasculine:300,ae:722,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:500,Idieresis:389,eacute:444,abreve:500,uhungarumlaut:556,ecaron:444,Ydieresis:611,divide:570,Yacute:611,Acircumflex:667,aacute:500,
-Ucircumflex:722,yacute:444,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:747,Emacron:667,ccaron:444,aring:500,Ncommaaccent:722,lacute:278,agrave:500,Tcommaaccent:611,Cacute:667,atilde:500,Edotaccent:667,scaron:389,scedilla:389,iacute:278,lozenge:494,Rcaron:667,Gcommaaccent:722,ucircumflex:556,acircumflex:500,Amacron:667,rcaron:389,ccedilla:444,Zdotaccent:611,Thorn:611,Omacron:722,Racute:667,Sacute:556,
-dcaron:608,Umacron:722,uring:556,threesuperior:300,Ograve:722,Agrave:667,Abreve:667,multiply:570,uacute:556,Tcaron:611,partialdiff:494,ydieresis:444,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:500,edieresis:444,cacute:444,nacute:556,umacron:556,Ncaron:722,Iacute:389,plusminus:570,brokenbar:220,registered:747,Gbreve:722,Idotaccent:389,summation:600,Egrave:667,racute:389,omacron:500,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:667,lcommaaccent:278,tcaron:366,eogonek:444,Uogonek:722,
-Aacute:667,Adieresis:667,egrave:444,zacute:389,iogonek:278,Oacute:722,oacute:500,amacron:500,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:576,igrave:278,ohungarumlaut:500,Eogonek:667,dcroat:500,threequarters:750,Scedilla:556,lcaron:382,Kcommaaccent:667,Lacute:611,trademark:1E3,edotaccent:444,Igrave:389,Imacron:389,Lcaron:611,onehalf:750,lessequal:549,ocircumflex:500,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:444,gbreve:500,onequarter:750,
-Scaron:556,Scommaaccent:556,Ohungarumlaut:722,degree:400,ograve:500,Ccaron:667,ugrave:556,radical:549,Dcaron:722,rcommaaccent:389,Ntilde:722,otilde:500,Rcommaaccent:667,Lcommaaccent:611,Atilde:667,Aogonek:667,Aring:667,Otilde:722,zdotaccent:389,Ecaron:667,Iogonek:389,kcommaaccent:500,minus:606,Icircumflex:389,ncaron:556,tcommaaccent:278,logicalnot:606,odieresis:500,udieresis:556,notequal:549,gcommaaccent:500,eth:500,zcaron:389,ncommaaccent:556,onesuperior:300,imacron:278,Euro:500},"Times-Italic":{space:250,
-exclam:333,quotedbl:420,numbersign:500,dollar:500,percent:833,ampersand:778,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:675,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:333,semicolon:333,less:675,equal:675,greater:675,question:500,at:920,A:611,B:611,C:667,D:722,E:611,F:611,G:722,H:722,I:333,J:444,K:667,L:556,M:833,N:667,O:722,P:611,Q:722,R:611,S:500,T:556,U:722,V:611,W:833,X:611,Y:556,Z:556,
-bracketleft:389,backslash:278,bracketright:389,asciicircum:422,underscore:500,quoteleft:333,a:500,b:500,c:444,d:500,e:444,f:278,g:500,h:500,i:278,j:278,k:444,l:278,m:722,n:500,o:500,p:500,q:500,r:389,s:389,t:278,u:500,v:444,w:667,x:444,y:444,z:389,braceleft:400,bar:275,braceright:400,asciitilde:541,exclamdown:389,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:214,quotedblleft:556,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:500,
-dagger:500,daggerdbl:500,periodcentered:250,paragraph:523,bullet:350,quotesinglbase:333,quotedblbase:556,quotedblright:556,guillemotright:500,ellipsis:889,perthousand:1E3,questiondown:500,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:889,AE:889,ordfeminine:276,Lslash:556,Oslash:722,OE:944,ordmasculine:310,ae:667,dotlessi:278,lslash:278,oslash:500,oe:667,germandbls:500,Idieresis:333,eacute:444,
-abreve:500,uhungarumlaut:500,ecaron:444,Ydieresis:556,divide:675,Yacute:556,Acircumflex:611,aacute:500,Ucircumflex:722,yacute:444,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:500,Edieresis:611,Dcroat:722,commaaccent:250,copyright:760,Emacron:611,ccaron:444,aring:500,Ncommaaccent:667,lacute:278,agrave:500,Tcommaaccent:556,Cacute:667,atilde:500,Edotaccent:611,scaron:389,scedilla:389,iacute:278,lozenge:471,Rcaron:611,Gcommaaccent:722,ucircumflex:500,acircumflex:500,
-Amacron:611,rcaron:389,ccedilla:444,Zdotaccent:556,Thorn:611,Omacron:722,Racute:611,Sacute:500,dcaron:544,Umacron:722,uring:500,threesuperior:300,Ograve:722,Agrave:611,Abreve:611,multiply:675,uacute:500,Tcaron:556,partialdiff:476,ydieresis:444,Nacute:667,icircumflex:278,Ecircumflex:611,adieresis:500,edieresis:444,cacute:444,nacute:500,umacron:500,Ncaron:667,Iacute:333,plusminus:675,brokenbar:275,registered:760,Gbreve:722,Idotaccent:333,summation:600,Egrave:611,racute:389,omacron:500,Zacute:556,Zcaron:556,
-greaterequal:549,Eth:722,Ccedilla:667,lcommaaccent:278,tcaron:300,eogonek:444,Uogonek:722,Aacute:611,Adieresis:611,egrave:444,zacute:389,iogonek:278,Oacute:722,oacute:500,amacron:500,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:500,igrave:278,ohungarumlaut:500,Eogonek:611,dcroat:500,threequarters:750,Scedilla:500,lcaron:300,Kcommaaccent:667,Lacute:556,trademark:980,edotaccent:444,Igrave:333,Imacron:333,Lcaron:611,onehalf:750,lessequal:549,
-ocircumflex:500,ntilde:500,Uhungarumlaut:722,Eacute:611,emacron:444,gbreve:500,onequarter:750,Scaron:500,Scommaaccent:500,Ohungarumlaut:722,degree:400,ograve:500,Ccaron:667,ugrave:500,radical:453,Dcaron:722,rcommaaccent:389,Ntilde:667,otilde:500,Rcommaaccent:611,Lcommaaccent:556,Atilde:611,Aogonek:611,Aring:611,Otilde:722,zdotaccent:389,Ecaron:611,Iogonek:333,kcommaaccent:444,minus:675,Icircumflex:333,ncaron:500,tcommaaccent:278,logicalnot:675,odieresis:500,udieresis:500,notequal:549,gcommaaccent:500,
-eth:500,zcaron:389,ncommaaccent:500,onesuperior:300,imacron:278,Euro:500},ZapfDingbats:{space:278,a1:974,a2:961,a202:974,a3:980,a4:719,a5:789,a119:790,a118:791,a117:690,a11:960,a12:939,a13:549,a14:855,a15:911,a16:933,a105:911,a17:945,a18:974,a19:755,a20:846,a21:762,a22:761,a23:571,a24:677,a25:763,a26:760,a27:759,a28:754,a6:494,a7:552,a8:537,a9:577,a10:692,a29:786,a30:788,a31:788,a32:790,a33:793,a34:794,a35:816,a36:823,a37:789,a38:841,a39:823,a40:833,a41:816,a42:831,a43:923,a44:744,a45:723,a46:749,
-a47:790,a48:792,a49:695,a50:776,a51:768,a52:792,a53:759,a54:707,a55:708,a56:682,a57:701,a58:826,a59:815,a60:789,a61:789,a62:707,a63:687,a64:696,a65:689,a66:786,a67:787,a68:713,a69:791,a70:785,a71:791,a72:873,a73:761,a74:762,a203:762,a75:759,a204:759,a76:892,a77:892,a78:788,a79:784,a81:438,a82:138,a83:277,a84:415,a97:392,a98:392,a99:668,a100:668,a89:390,a90:390,a93:317,a94:317,a91:276,a92:276,a205:509,a85:509,a206:410,a86:410,a87:234,a88:234,a95:334,a96:334,a101:732,a102:544,a103:544,a104:910,a106:667,
-a107:760,a108:760,a112:776,a111:595,a110:694,a109:626,a120:788,a121:788,a122:788,a123:788,a124:788,a125:788,a126:788,a127:788,a128:788,a129:788,a130:788,a131:788,a132:788,a133:788,a134:788,a135:788,a136:788,a137:788,a138:788,a139:788,a140:788,a141:788,a142:788,a143:788,a144:788,a145:788,a146:788,a147:788,a148:788,a149:788,a150:788,a151:788,a152:788,a153:788,a154:788,a155:788,a156:788,a157:788,a158:788,a159:788,a160:894,a161:838,a163:1016,a164:458,a196:748,a165:924,a192:748,a166:918,a167:927,a168:928,
-a169:928,a170:834,a171:873,a172:828,a173:924,a162:924,a174:917,a175:930,a176:931,a177:463,a178:883,a179:836,a193:836,a180:867,a199:867,a181:696,a200:696,a182:874,a201:874,a183:760,a184:946,a197:771,a185:865,a194:771,a198:888,a186:967,a195:888,a187:831,a188:873,a189:927,a190:970,a191:918}},ka={},$a=function(){function d(a,b,c){this.lexer=a;this.allowStreams=b;this.xref=c;this.refill()}d.prototype={saveState:function(){this.state={buf1:this.buf1,buf2:this.buf2,streamPos:this.lexer.stream.pos}},restoreState:function(){var a=
-this.state;this.buf1=a.buf1;this.buf2=a.buf2;this.lexer.stream.pos=a.streamPos},refill:function(){this.buf1=this.lexer.getObj();this.buf2=this.lexer.getObj()},shift:function(){ea(this.buf2,"ID")?(this.buf1=this.buf2,this.buf2=null,this.lexer.skip()):(this.buf1=this.buf2,this.buf2=this.lexer.getObj())},getObj:function(a){if(ea(this.buf1,"BI"))return this.shift(),this.makeInlineImage(a);if(ea(this.buf1,"[")){this.shift();for(var b=[];!ea(this.buf1,"]")&&this.buf1!=ka;)b.push(this.getObj(a));this.buf1==
-ka&&w("End of file inside array");this.shift();return b}if(ea(this.buf1,"<<")){this.shift();for(b=new Ma(this.xref);!ea(this.buf1,">>")&&this.buf1!=ka;)if(V(this.buf1)){var c=this.buf1.name;this.shift();if(this.buf1==ka)break;b.set(c,this.getObj(a))}else da("Malformed dictionary, key must be a name object"),this.shift();this.buf1==ka&&w("End of file inside dictionary");if(ea(this.buf2,"stream"))return this.allowStreams?this.makeStream(b,a):b;this.shift();return b}if(N(this.buf1))return a=this.buf1,
-this.shift(),N(this.buf1)&&ea(this.buf2,"R")&&(a=new Kb(a,this.buf1),this.shift(),this.shift()),a;if(za(this.buf1))return b=this.buf1,this.shift(),a&&(b=a.decryptString(b)),b;a=this.buf1;this.shift();return a},makeInlineImage:function(a){for(var b=this.lexer.stream,c=new Ma;!ea(this.buf1,"ID")&&this.buf1!=ka;){V(this.buf1)||w("Dictionary key must be a name object");var e=this.buf1.name;this.shift();if(this.buf1==ka)break;c.set(e,this.getObj(a))}for(var e=b.pos,d=0,g;4!=d&&null!==(g=b.getByte())&&
-void 0!==g;)switch(g){case 32:case 13:case 10:d=3===d?4:0;break;case 69:d=2;break;case 73:d=2===d?3:0;break;default:d=0}g=b.pos-4-e;b=b.makeSubStream(e,g,c);a&&(b=a.createStream(b));b=this.filter(b,c,g);b.parameters=c;this.buf2=Aa.get("EI");this.shift();return b},fetchIfRef:function(a){return Ea(a)?this.xref.fetch(a):a},makeStream:function(a,b){var c=this.lexer,e=c.stream;c.skipToNextLine();var c=e.pos,d=this.fetchIfRef(a.get("Length"));N(d)||w("Bad "+d+" attribute in stream");e.pos=c+d;this.shift();
-this.shift();ea(this.buf1,"endstream")||w("Missing endstream");this.shift();e=e.makeSubStream(c,d,a);b&&(e=b.createStream(e));e=this.filter(e,a,d);e.parameters=a;return e},filter:function(a,b,c){var e=this.fetchIfRef(b.get("Filter","F"));b=this.fetchIfRef(b.get("DecodeParms","DP"));if(V(e))return this.makeFilter(a,e.name,c,b);if(U(e))for(var d=e,g=b,h=0,l=d.length;h<l;++h)e=d[h],V(e)||w("Bad filter name: "+e),b=null,U(g)&&h in g&&(b=g[h]),a=this.makeFilter(a,e.name,c,b),c=null;return a},makeFilter:function(a,
-b,c,e){if(0===a.dict.get("Length"))return new xc(a);if("FlateDecode"==b||"Fl"==b)return e?new Vc(new Wc(a),e):new Wc(a);if("LZWDecode"==b||"LZW"==b)return b=1,e?(e.has("EarlyChange")&&(b=e.get("EarlyChange")),new Vc(new Xc(a,b),e)):new Xc(a,b);if("DCTDecode"==b||"DCT"==b)return e=a.getBytes(c),new tb(e,a.dict,this.xref);if("JPXDecode"==b||"JPX"==b)return e=a.getBytes(c),new Qd(e,a.dict);if("ASCII85Decode"==b||"A85"==b)return new Rd(a);if("ASCIIHexDecode"==b||"AHx"==b)return new Sd(a);if("CCITTFaxDecode"==
-b||"CCF"==b)return new Td(a,e);if("RunLengthDecode"==b||"RL"==b)return new Ud(a);if("JBIG2Decode"==b)return e=a.getBytes(c),new Vd(e,a.dict);Y('filter "'+b+'" not supported yet');return a}};return d}(),Ca=function(){function d(a,b){this.stream=a;this.knownCommands=b}function a(a){if("0"<=a&&"9">=a)return a.charCodeAt(0)-48;a=a.toUpperCase();return"A"<=a&&"F">=a?a.charCodeAt(0)-55:-1}d.isSpace=function(a){return" "==a||"\t"==a||"\r"==a||"\n"==a};var b=[1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];d.prototype={getNumber:function(a){for(var b=
-!1,d=a,g=this.stream;a=g.lookChar();){if("."==a&&!b)d+=a,b=!0;else if("-"==a)Y("Badly formated number");else if("0"<=a&&"9">=a)d+=a;else if("e"==a||"E"==a)b=!0;else break;g.skip()}a=parseFloat(d);isNaN(a)&&w("Invalid floating point number: "+a);return a},getString:function(){var a=1,b=!1,d="",g=this.stream,h;do switch(h=g.getChar(),h){case null:case void 0:Y("Unterminated string");b=!0;break;case "(":++a;d+=h;break;case ")":0===--a?b=!0:d+=h;break;case "\\":h=g.getChar();switch(h){case null:case void 0:Y("Unterminated string");
-b=!0;break;case "n":d+="\n";break;case "r":d+="\r";break;case "t":d+="\t";break;case "b":d+="\b";break;case "f":d+="\f";break;case "\\":case "(":case ")":d+=h;break;case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":var l=h-0;h=g.lookChar();"0"<=h&&"7">=h&&(g.skip(),l=(l<<3)+(h-0),h=g.lookChar(),"0"<=h&&"7">=h&&(g.skip(),l=(l<<3)+(h-0)));d+=String.fromCharCode(l);break;case "\r":h=g.lookChar();"\n"==h&&g.skip();break;case "\n":break;default:d+=h}break;default:d+=h}while(!b);return d},
-getName:function(c){for(var e="",d=this.stream;(c=d.lookChar())&&!b[c.charCodeAt(0)];)if(d.skip(),"#"==c){c=d.lookChar();var g=a(c);if(-1!=g){d.skip();var h=a(d.getChar());-1==h&&w("Illegal digit in hex char in name: "+h);e+=String.fromCharCode(g<<4|h)}else e+="#",e+=c}else e+=c;128<e.length&&w("Warning: name token is longer than allowed by the spec: "+e.length);return new Wa(e)},getHexString:function(c){for(var e="",d=this.stream,g=!0,h,l;;)if(c=d.getChar())if(">"===c)break;else{if(1!==b[c.charCodeAt(0)]){if(g){if(h=
-a(c),-1===h){Y('Ignoring invalid character "'+c+'" in hex string');continue}}else{l=a(c);if(-1===l){Y('Ignoring invalid character "'+c+'" in hex string');continue}e+=String.fromCharCode(h<<4|l)}g=!g}}else{Y("Unterminated hex string");break}return e},getObj:function(){for(var a=!1,e=this.stream,d;;){if(!(d=e.getChar()))return ka;if(a){if("\r"==d||"\n"==d)a=!1}else if("%"==d)a=!0;else if(1!=b[d.charCodeAt(0)])break}switch(d){case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":case "8":case "9":case "+":case "-":case ".":return this.getNumber(d);
-case "(":return this.getString();case "/":return this.getName(d);case "[":case "]":return Aa.get(d);case "<":return d=e.lookChar(),"<"==d?(e.skip(),Aa.get("<<")):this.getHexString(d);case ">":return d=e.lookChar(),">"==d?(e.skip(),Aa.get(">>")):Aa.get(d);case "{":case "}":return Aa.get(d);case ")":w("Illegal character: "+d)}var a=d,g=this.knownCommands,h=g&&a in g;for(;(d=e.lookChar())&&!b[d.charCodeAt(0)]&&(!h||a+d in g);)e.skip(),128==a.length&&w("Command token too long: "+a.length),a+=d,h=g&&a in
-g;return"true"==a?!0:"false"==a?!1:"null"==a?null:Aa.get(a)},skipToNextLine:function(){for(var a=this.stream;;){var b=a.getChar();if(!b||"\n"==b)break;if("\r"==b){"\n"==a.lookChar()&&a.skip();break}}},skip:function(){this.stream.skip()}};return d}(),hd=function(){function d(a){this.parser=new $a(new Ca(a),!1,null);a=this.parser.getObj();var b=this.parser.getObj(),c=this.parser.getObj();this.linDict=this.parser.getObj();N(a)&&(N(b)&&ea(c,"obj")&&W(this.linDict))&&(a=this.linDict.get("Linearized"),
-La(a)&&0<a||(this.linDict=null))}d.prototype={getInt:function(a){var b=this.linDict,c;if(W(b)&&N(c=b.get(a))&&0<c)return c;w('"'+a+'" field in linearization table is invalid')},getHint:function(a){var b=this.linDict,c,e;if(W(b)&&U(c=b.get("H"))&&2<=c.length&&N(e=c[a])&&0<e)return e;w("Hints table in linearization table is invalid: "+a)},get length(){return!W(this.linDict)?0:this.getInt("L")},get hintsOffset(){return this.getHint(0)},get hintsLength(){return this.getHint(1)},get hintsOffset2(){return this.getHint(2)},
-get hintsLenth2(){return this.getHint(3)},get objectNumberFirst(){return this.getInt("O")},get endFirst(){return this.getInt("E")},get numPages(){return this.getInt("N")},get mainXRefEntriesOffset(){return this.getInt("T")},get pageFirst(){return this.getInt("P")}};return d}(),gb=null;pb=3;var Eb=function(){function d(){w("should not call Pattern constructor")}d.prototype={getPattern:function(a){w("Should not call Pattern.getStyle: "+a)}};d.shadingFromIR=function(a){return Ta[a[0]].fromIR(a)};d.parseShading=
-function(a,b,c,e){a=ra(a)?a.dict:a;var d=a.get("ShadingType");switch(d){case 2:case pb:return new Ta.RadialAxial(a,b,c,e);default:return oa("Unsupported shading type: "+d),new Ta.Dummy}};return d}(),Ta={SMALL_NUMBER:0.01};Ta.RadialAxial=function(){function d(a,b,c,e,d){this.matrix=b;this.coordsArr=a.get("Coords");this.shadingType=a.get("ShadingType");this.type="Pattern";this.ctx=d;b=a.get("ColorSpace","CS");this.cs=b=ha.parse(b,c,e);e=0;var g=1;a.has("Domain")&&(d=a.get("Domain"),e=d[0],g=d[1]);var h=
-d=!1;a.has("Extend")&&(h=a.get("Extend"),d=h[0],h=h[1]);if(this.shadingType===pb&&(!d||!h)){var l=this.coordsArr[0],p=this.coordsArr[1],k=this.coordsArr[2],m=this.coordsArr[3],r=this.coordsArr[4],n=this.coordsArr[5],l=Math.sqrt((l-m)*(l-m)+(p-r)*(p-r));k<=n+l&&n<=k+l&&Y("Unsupported radial gradient.")}this.extendStart=d;this.extendEnd=h;k=a.get("Function");if(U(k)){for(var q=[],n=0,l=k.length;n<l;n++)p=c.fetchIfRef(k[n]),cc(p)||w("Invalid function"),q.push(ab.parse(c,p));k=function(a){for(var b=[],
-c=0,e=q.length;c<e;c++)b.push(q[c](a)[0]);return b}}else cc(k)||w("Invalid function"),k=ab.parse(c,k);n=g-e;l=n/10;c=this.colorStops=[];if(e>=g||0>=l)da("Bad shading domain.");else{for(p=e;p<=g;p+=l)m=b.getRgb(k([p]),0),m=M.makeCssRgb(m),c.push([(p-e)/n,m]);e="transparent";a.has("Background")&&(m=b.getRgb(a.get("Background"),0),e=M.makeCssRgb(m));d||(c.unshift([0,e]),c[1][0]+=Ta.SMALL_NUMBER);h||(c[c.length-1][0]-=Ta.SMALL_NUMBER,c.push([1,e]));this.colorStops=c}}d.fromIR=function(a){var b=a[1],c=
-a[2],e=a[3],d=a[4],g=a[5],h=a[6];return{type:"Pattern",getPattern:function(a){var p;2==b?p=a.createLinearGradient(e[0],e[1],d[0],d[1]):b==pb&&(p=a.createRadialGradient(e[0],e[1],g,d[0],d[1],h));a=0;for(var k=c.length;a<k;++a){var m=c[a];p.addColorStop(m[0],m[1])}return p}}};d.prototype={getIR:function(){var a=this.coordsArr,b=this.shadingType;if(2==b)var c=[a[0],a[1]],e=[a[2],a[3]],d=null,g=null;else b==pb?(c=[a[0],a[1]],e=[a[3],a[4]],d=a[2],g=a[5]):w("getPattern type unknown: "+b);if(a=this.matrix)c=
-M.applyTransform(c,a),e=M.applyTransform(e,a);return["RadialAxial",b,this.colorStops,c,e,d,g]}};return d}();Ta.Dummy=function(){function d(){this.type="Pattern"}d.fromIR=function(){return{type:"Pattern",getPattern:function(){return"hotpink"}}};d.prototype={getIR:function(){return["Dummy"]}};return d}();var Ec=function(){function d(a,b,c,e,d){this.name=a[1][0].name;this.operatorList=a[2];this.matrix=a[3]||[1,0,0,1,0,0];this.bbox=a[4];this.xstep=a[5];this.ystep=a[6];this.paintType=a[7];this.tilingType=
-a[8];this.color=b;this.objs=e;this.commonObjs=d;this.curMatrix=c.mozCurrentTransform;this.type="Pattern";this.ctx=c}d.getIR=function(a,b,c){var e=b.get("Matrix"),d=b.get("BBox"),g=b.get("XStep"),h=b.get("YStep"),l=b.get("PaintType");b=b.get("TilingType");return["TilingPattern",c,a,e,d,g,h,l,b]};d.prototype={createPatternCanvas:function(a){var b=this.operatorList,c=this.bbox,e=this.xstep,d=this.ystep,g=this.paintType,h=this.color,l=this.objs,p=this.commonObjs;oa("TilingType: "+this.tilingType);var k=
-c[0],m=c[1],r=c[2],n=c[3],q=[k,m],t=[k+e,m+d],s=t[0]-q[0],t=t[1]-q[1],u=M.singularValueDecompose2dScale(this.matrix),v=M.singularValueDecompose2dScale(this.curMatrix),u=[u[0]*v[0],u[1]*v[1]],s=Math.min(Math.ceil(Math.abs(s*u[0])),8192),t=Math.min(Math.ceil(Math.abs(t*u[1])),8192);a.width=s;a.height=t;a=a.getContext("2d");a.setTransform(1,0,0,1,0,0);l=new Cc(a,p,l);this.setFillAndStrokeStyleToContext(a,g,h);this.setScale(s,t,e,d);this.transformToScale(l);l.transform.apply(l,[1,0,0,1,-q[0],-q[1]]);
-this.clipBbox(l,c,k,m,r,n);l.executeOperatorList(b)},setScale:function(a,b,c,e){this.scale=[a/c,b/e]},transformToScale:function(a){var b=this.scale;a.transform.apply(a,[b[0],0,0,b[1],0,0])},scaleToContext:function(){var a=this.scale;this.ctx.scale(1/a[0],1/a[1])},clipBbox:function(a,b,c,e,d,g){b&&(U(b)&&4==b.length)&&(a.rectangle(c,e,d-c,g-e),a.clip(),a.endPath())},setFillAndStrokeStyleToContext:function(a,b,c){switch(b){case 1:b=this.ctx;a.fillStyle=b.fillStyle;a.strokeStyle=b.strokeStyle;break;
-case 2:b=(new Qa).getRgb(c,0);b=M.makeCssRgb(b);a.fillStyle=b;a.strokeStyle=b;break;default:w("Unsupported paint type: "+b)}},getPattern:function(){null===gb&&(gb=Ba(1,1));this.createPatternCanvas(gb);var a=this.ctx;a.setTransform.apply(a,this.curMatrix);a.transform.apply(a,this.matrix);this.scaleToContext();return a.createPattern(gb,"repeat")}};return d}(),wa=function(){function d(a,b,c,e){this.bytes=a instanceof Uint8Array?a:new Uint8Array(a);this.pos=this.start=b||0;this.end=b+c||this.bytes.length;
-this.parameters=this.dict=e}d.prototype={get length(){return this.end-this.start},getByte:function(){return this.pos>=this.end?null:this.bytes[this.pos++]},getBytes:function(a){var b=this.bytes,c=this.pos,e=this.end;if(!a)return b.subarray(c,e);a=c+a;a>e&&(a=e);this.pos=a;return b.subarray(c,a)},lookChar:function(){return this.pos>=this.end?null:String.fromCharCode(this.bytes[this.pos])},getChar:function(){return this.pos>=this.end?null:String.fromCharCode(this.bytes[this.pos++])},skip:function(a){a||
-(a=1);this.pos+=a},reset:function(){this.pos=this.start},moveStart:function(){this.start=this.pos},makeSubStream:function(a,b,c){return new d(this.bytes.buffer,a,b,c)},isStream:!0};return d}();(function(){function d(a){for(var b=a.length,c=new Uint8Array(b),e=0;e<b;++e)c[e]=a.charCodeAt(e);wa.call(this,c)}d.prototype=wa.prototype;return d})();var ca=function(){function d(){this.bufferLength=this.pos=0;this.eof=!1;this.buffer=null}d.prototype={ensureBuffer:function(a){var b=this.buffer,c=b?b.byteLength:
-0;if(a<c)return b;for(var e=512;e<a;)e<<=1;a=new Uint8Array(e);for(e=0;e<c;++e)a[e]=b[e];return this.buffer=a},getByte:function(){for(var a=this.pos;this.bufferLength<=a;){if(this.eof)return null;this.readBlock()}return this.buffer[this.pos++]},getBytes:function(a){var b=this.pos;if(a){this.ensureBuffer(b+a);for(a=b+a;!this.eof&&this.bufferLength<a;)this.readBlock();var c=this.bufferLength;a>c&&(a=c)}else{for(;!this.eof;)this.readBlock();a=this.bufferLength;a||(this.buffer=new Uint8Array(0))}this.pos=
-a;return this.buffer.subarray(b,a)},lookChar:function(){for(var a=this.pos;this.bufferLength<=a;){if(this.eof)return null;this.readBlock()}return String.fromCharCode(this.buffer[this.pos])},getChar:function(){for(var a=this.pos;this.bufferLength<=a;){if(this.eof)return null;this.readBlock()}return String.fromCharCode(this.buffer[this.pos++])},makeSubStream:function(a,b,c){for(var e=a+b;this.bufferLength<=e&&!this.eof;)this.readBlock();return new wa(this.buffer,a,b,c)},skip:function(a){a||(a=1);this.pos+=
-a},reset:function(){this.pos=0}};return d}();(function(){function d(a){this.dict=a.dict;ca.call(this)}d.prototype=Object.create(ca.prototype);d.prototype.readBlock=function(){var a=this.bufferLength,a=a+1024;this.ensureBuffer(a);this.bufferLength=a};d.prototype.getBytes=function(a){var b=this.pos;if(a){this.ensureBuffer(b+a);for(a=b+a;!this.eof&&this.bufferLength<a;)this.readBlock();var c=this.bufferLength;a>c&&(a=c)}else this.eof=!0,a=this.bufferLength;this.pos=a;return this.buffer.subarray(b,a)};
-return d})();var ed=function(){function d(a){this.streams=a;ca.call(this)}d.prototype=Object.create(ca.prototype);d.prototype.readBlock=function(){var a=this.streams;if(0===a.length)this.eof=!0;else{var a=a.shift().getBytes(),b=this.bufferLength,c=b+a.length;this.ensureBuffer(c).set(a,b);this.bufferLength=c}};return d}(),Wc=function(){function d(a){var b=a.getBytes(),c=0;this.dict=a.dict;a=b[c++];var e=b[c++];(-1==a||-1==e)&&w("Invalid header in flate stream: "+a+", "+e);8!=(a&15)&&w("Unknown compression method in flate stream: "+
-a+", "+e);0!==((a<<8)+e)%31&&w("Bad FCHECK in flate stream: "+a+", "+e);e&32&&w("FDICT bit set in flate stream: "+a+", "+e);this.bytes=b;this.bytesPos=c;this.codeBuf=this.codeSize=0;ca.call(this)}var a=new Uint32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),b=new Uint32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),c=new Uint32Array([1,2,3,4,65541,65543,131081,131085,
-196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),e=[new Uint32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59E4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,
-590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,
-590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,
-590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,
-590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,
-590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,
-590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,
-590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],f=[new Uint32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];d.prototype=Object.create(ca.prototype);
-d.prototype.getBits=function(a){for(var b=this.codeSize,c=this.codeBuf,e=this.bytes,d=this.bytesPos,f;b<a;)"undefined"==typeof(f=e[d++])&&w("Bad encoding in flate stream"),c|=f<<b,b+=8;this.codeBuf=c>>a;this.codeSize=b-a;this.bytesPos=d;return c&(1<<a)-1};d.prototype.getCode=function(a){var b=a[0],c=a[1];a=this.codeSize;for(var e=this.codeBuf,d=this.bytes,f=this.bytesPos;a<c;){var r;"undefined"==typeof(r=d[f++])&&w("Bad encoding in flate stream");e|=r<<a;a+=8}c=b[e&(1<<c)-1];b=c>>16;c&=65535;(0===
-a||a<b||0===b)&&w("Bad encoding in flate stream");this.codeBuf=e>>b;this.codeSize=a-b;this.bytesPos=f;return c};d.prototype.generateHuffmanTable=function(a){for(var b=a.length,c=0,e=0;e<b;++e)a[e]>c&&(c=a[e]);for(var d=1<<c,f=new Uint32Array(d),r=1,n=0,q=2;r<=c;++r,n<<=1,q<<=1)for(var t=0;t<b;++t)if(a[t]==r){for(var s=0,u=n,e=0;e<r;++e)s=s<<1|u&1,u>>=1;for(e=s;e<d;e+=q)f[e]=r<<16|t;++n}return[f,c]};d.prototype.readBlock=function(){var d=this.getBits(3);d&1&&(this.eof=!0);d>>=1;if(0===d){var d=this.bytes,
-h=this.bytesPos,l;"undefined"==typeof(l=d[h++])&&w("Bad block header in flate stream");var p=l;"undefined"==typeof(l=d[h++])&&w("Bad block header in flate stream");p|=l<<8;"undefined"==typeof(l=d[h++])&&w("Bad block header in flate stream");var k=l;"undefined"==typeof(l=d[h++])&&w("Bad block header in flate stream");(k|l<<8)!=(~p&65535)&&w("Bad uncompressed block length in flate stream");this.codeSize=this.codeBuf=0;l=this.bufferLength;k=this.ensureBuffer(l+p);this.bufferLength=p=l+p;for(var m=l;m<
-p;++m){if("undefined"==typeof(l=d[h++])){this.eof=!0;break}k[m]=l}this.bytesPos=h}else{if(1==d)h=e,l=f;else if(2==d){k=this.getBits(5)+257;p=this.getBits(5)+1;d=this.getBits(4)+4;l=new Uint8Array(a.length);for(h=0;h<d;++h)l[a[h]]=this.getBits(3);l=this.generateHuffmanTable(l);h=d=0;p=k+p;for(m=new Uint8Array(p);h<p;){var r=this.getCode(l);if(16==r)var n=2,q=3,r=d;else if(17==r)q=n=3,r=d=0;else if(18==r)n=7,q=11,r=d=0;else{m[h++]=d=r;continue}for(n=this.getBits(n)+q;0<n--;)m[h++]=r}h=this.generateHuffmanTable(m.subarray(0,
-k));l=this.generateHuffmanTable(m.subarray(k,p))}else w("Unknown block type in flate stream");p=(k=this.buffer)?k.length:0;for(m=this.bufferLength;;)if(r=this.getCode(h),256>r)m+1>=p&&(k=this.ensureBuffer(m+1),p=k.length),k[m++]=r;else{if(256==r){this.bufferLength=m;break}r-=257;r=b[r];n=r>>16;0<n&&(n=this.getBits(n));d=(r&65535)+n;r=this.getCode(l);r=c[r];n=r>>16;0<n&&(n=this.getBits(n));r=(r&65535)+n;m+d>=p&&(k=this.ensureBuffer(m+d),p=k.length);for(n=0;n<d;++n,++m)k[m]=k[m-r]}}};return d}(),Vc=
-function(){function d(a,b){var c=this.predictor=b.get("Predictor")||1;if(1>=c)return a;2!==c&&(10>c||15<c)&&w("Unsupported predictor: "+c);this.readBlock=2===c?this.readBlockTiff:this.readBlockPng;this.stream=a;this.dict=a.dict;var c=this.colors=b.get("Colors")||1,e=this.bits=b.get("BitsPerComponent")||8,d=this.columns=b.get("Columns")||1;this.pixBytes=c*e+7>>3;this.rowBytes=d*c*e+7>>3;ca.call(this);return this}d.prototype=Object.create(ca.prototype);d.prototype.readBlockTiff=function(){var a=this.rowBytes,
-b=this.bufferLength,c=this.ensureBuffer(b+a),e=this.bits,d=this.colors,g=this.stream.getBytes(a);this.eof=!g.length;if(!this.eof){var h=0,l=0,p=0,k=0,m=b;if(1===e)for(b=0;b<a;++b)e=g[b],h=h<<8|e,c[m++]=(e^h>>d)&255,h&=65535;else if(8===e){for(b=0;b<d;++b)c[m++]=g[b];for(;b<a;++b)c[m]=c[m-d]+g[b],m++}else{for(var m=new Uint8Array(d+1),r=(1<<e)-1,n=0,q=b,t=this.columns,b=0;b<t;++b)for(var s=0;s<d;++s)p<e&&(h=h<<8|g[n++]&255,p+=8),m[s]=m[s]+(h>>p-e)&r,p-=e,l=l<<e|m[s],k+=e,8<=k&&(c[q++]=l>>k-8&255,k-=
-8);0<k&&(c[q++]=(l<<8-k)+(h&(1<<8-k)-1))}this.bufferLength+=a}};d.prototype.readBlockPng=function(){var a=this.rowBytes,b=this.pixBytes,c=this.stream.getByte(),e=this.stream.getBytes(a);this.eof=!e.length;if(!this.eof){var d=this.bufferLength,g=this.ensureBuffer(d+a),h=g.subarray(d-a,d);0===h.length&&(h=new Uint8Array(a));switch(c){case 0:for(c=0;c<a;++c)g[d++]=e[c];break;case 1:for(c=0;c<b;++c)g[d++]=e[c];for(;c<a;++c)g[d]=g[d-b]+e[c]&255,d++;break;case 2:for(c=0;c<a;++c)g[d++]=h[c]+e[c]&255;break;
-case 3:for(c=0;c<b;++c)g[d++]=(h[c]>>1)+e[c];for(;c<a;++c)g[d]=(h[c]+g[d-b]>>1)+e[c]&255,d++;break;case 4:for(c=0;c<b;++c){var l=h[c],p=e[c];g[d++]=l+p}for(;c<a;++c){var l=h[c],k=h[c-b],m=g[d-b],p=m+l-k,r=p-m;0>r&&(r=-r);var n=p-l;0>n&&(n=-n);var q=p-k;0>q&&(q=-q);p=e[c];r<=n&&r<=q?g[d++]=m+p:n<=q?g[d++]=l+p:g[d++]=k+p}break;default:w("Unsupported predictor: "+c)}this.bufferLength+=a}};return d}(),tb=function(){function d(a,b,c){this.dict=b;this.isAdobeImage=!1;this.colorTransform=b.get("ColorTransform")||
--1;a:{b=a;c=Math.max(b.length-16,1024);for(var e=0;e<c;++e){if(255==b[e]&&238==b[e+1]&&0===b[e+2]&&14==b[e+3]&&65==b[e+4]&&100==b[e+5]&&111==b[e+6]&&98==b[e+7]&&101==b[e+8]&&0===b[e+9]){b=!0;break a}if(255==b[e]&&192==b[e+1])break}b=!1}b&&(this.isAdobeImage=!0,b=new Uint8Array([255,236,0,8,69,77,66,69,68,0]),c=new Uint8Array(a.length+b.length),c.set(a,b.length),c[0]=a[0],c[1]=a[1],c.set(b,2),a=c);this.bytes=a;ca.call(this)}d.prototype=Object.create(ca.prototype);d.prototype.ensureBuffer=function(a){if(!this.bufferLength)try{var b=
-new Wd;-1!=this.colorTransform&&(b.colorTransform=this.colorTransform);b.parse(this.bytes);var c=b.getData(b.width,b.height);this.buffer=c;this.bufferLength=c.length;this.eof=!0}catch(e){w("JPEG error: "+e)}};d.prototype.getIR=function(){return ib(this.bytes)};d.prototype.getChar=function(){w("internal error: getChar is not valid on JpegStream")};d.prototype.isNativelySupported=function(a,b){var c=ha.parse(this.dict.get("ColorSpace","CS"),a,b);return"DeviceGray"===c.name||"DeviceRGB"===c.name||"DeviceCMYK"===
-c.name&&!this.isAdobeImage&&1>this.colorTransform?!0:!1};d.prototype.isNativelyDecodable=function(a,b){var c=ha.parse(this.dict.get("ColorSpace","CS"),a,b).numComps;return 1==c||3==c?!0:!1};return d}(),Qd=function(){function d(a,b){this.dict=b;this.bytes=a;ca.call(this)}d.prototype=Object.create(ca.prototype);d.prototype.ensureBuffer=function(a){if(!this.bufferLength){a=new Xd;a.parse(this.bytes);var b=a.width,c=a.height,e=a.componentsCount;1!=e&&(3!=e&&4!=e)&&w("JPX with "+e+" components is not supported");
-for(var c=new Uint8Array(b*c*e),d=0,g=a.tiles.length;d<g;d++){var h=a.tiles[d],l=h[0].width,p=h[0].height,k=h[0].left,m=h[0].top,r,n,q,t;switch(e){case 1:r=h[0].items;k=b*m+k;t=b-l;for(var s=m=0;s<p;s++){for(var u=0;u<l;u++)c[k++]=r[m++];k+=t}break;case 3:r=h[0].items;n=h[1].items;q=h[2].items;k=3*(b*m+k);t=3*(b-l);for(s=m=0;s<p;s++){for(u=0;u<l;u++)c[k++]=r[m],c[k++]=n[m],c[k++]=q[m],m++;k+=t}break;case 4:r=h[0].items;n=h[1].items;q=h[2].items;h=h[3].items;k=4*(b*m+k);t=4*(b-l);for(s=m=0;s<p;s++){for(u=
-0;u<l;u++)c[k++]=r[m],c[k++]=n[m],c[k++]=q[m],c[k++]=h[m],m++;k+=t}}}this.buffer=c;this.bufferLength=c.length;this.eof=!0}};d.prototype.getChar=function(){w("internal error: getChar is not valid on JpxStream")};return d}(),Vd=function(){function d(a,b){this.dict=b;this.bytes=a;ca.call(this)}d.prototype=Object.create(ca.prototype);d.prototype.ensureBuffer=function(a){if(!this.bufferLength){a=new Yd;var b=[],c=this.dict.get("DecodeParms");c&&c.has("JBIG2Globals")&&(c=c.get("JBIG2Globals").getBytes(),
-b.push({data:c,start:0,end:c.length}));b.push({data:this.bytes,start:0,end:this.bytes.length});a=a.parseChunks(b);b=a.length;for(c=0;c<b;c++)a[c]^=255;this.buffer=a;this.bufferLength=b;this.eof=!0}};d.prototype.getChar=function(){w("internal error: getChar is not valid on Jbig2Stream")};return d}(),Ed=function(){function d(a,b){this.str=a;this.dict=a.dict;this.decrypt=b;ca.call(this)}d.prototype=Object.create(ca.prototype);d.prototype.readBlock=function(){var a=this.str.getBytes(512);if(!a||0===a.length)this.eof=
-!0;else{var b=this.decrypt,a=b(a),b=this.bufferLength,c,e=a.length,d=this.ensureBuffer(b+e);for(c=0;c<e;c++)d[b++]=a[c];this.bufferLength=b}};return d}(),Rd=function(){function d(a){this.str=a;this.dict=a.dict;this.input=new Uint8Array(5);ca.call(this)}d.prototype=Object.create(ca.prototype);d.prototype.readBlock=function(){for(var a=this.str,b=a.getByte();Ca.isSpace(String.fromCharCode(b));)b=a.getByte();if(!b||126===b)this.eof=!0;else{var c=this.bufferLength;if(122==b){for(var a=this.ensureBuffer(c+
-4),e=0;4>e;++e)a[c+e]=0;this.bufferLength+=4}else{var d=this.input;d[0]=b;for(e=1;5>e;++e){for(b=a.getByte();Ca.isSpace(String.fromCharCode(b));)b=a.getByte();d[e]=b;if(!b||126==b)break}a=this.ensureBuffer(c+e-1);this.bufferLength+=e-1;if(5>e){for(;5>e;++e)d[e]=117;this.eof=!0}for(e=b=0;5>e;++e)b=85*b+(d[e]-33);for(e=3;0<=e;--e)a[c+e]=b&255,b>>=8}}};return d}(),Sd=function(){function d(a){this.str=a;this.dict=a.dict;ca.call(this)}var a={9:-1,32:-1,48:0,49:1,50:2,51:3,52:4,53:5,54:6,55:7,56:8,57:9,
-65:10,66:11,67:12,68:13,69:14,70:15,97:10,98:11,99:12,100:13,101:14,102:15};d.prototype=Object.create(ca.prototype);d.prototype.readBlock=function(){var b=this.str.getBytes(),c,e,d,g,h,l;d=this.ensureBuffer(this.bufferLength+(b.length+1>>1));g=this.bufferLength;h=0;for(l=b.length;h<l;h++){for(c=a[b[h]];-1==c&&h+1<l;)c=a[b[++h]];h+1<l&&62!==b[h+1]?(e=a[b[++h]],d[g++]=16*c+e):62!==b[h]&&(d[g++]=16*c)}this.bufferLength=g;this.eof=!0};return d}(),Ud=function(){function d(a){this.str=a;this.dict=a.dict;
-ca.call(this)}d.prototype=Object.create(ca.prototype);d.prototype.readBlock=function(){var a=this.str.getBytes(2);if(!a||2>a.length||128==a[0])this.eof=!0;else{var b=this.bufferLength,c=a[0];if(128>c){var e=this.ensureBuffer(b+c+1);e[b++]=a[1];0<c&&(a=this.str.getBytes(c),e.set(a,b),b+=c)}else for(var c=257-c,a=a[1],e=this.ensureBuffer(b+c+1),d=0;d<c;d++)e[b++]=a;this.bufferLength=b}};return d}(),Td=function(){function d(a,b){this.str=a;this.dict=a.dict;b=b||new Ma;this.encoding=b.get("K")||0;this.eoline=
-b.get("EndOfLine")||!1;this.byteAlign=b.get("EncodedByteAlign")||!1;this.columns=b.get("Columns")||1728;this.rows=b.get("Rows")||0;var c=b.get("EndOfBlock");if(null===c||void 0===c)c=!0;this.eoblock=c;this.black=b.get("BlackIs1")||!1;this.codingLine=new Uint32Array(this.columns+1);this.refLine=new Uint32Array(this.columns+2);this.codingLine[0]=this.columns;this.row=this.codingPos=0;this.nextLine2D=0>this.encoding;this.outputBits=this.inputBuf=this.inputBits=0;for(this.buf=ka;0===(c=this.lookBits(12));)this.eatBits(1);
-1==c&&this.eatBits(12);0<this.encoding&&(this.nextLine2D=!this.lookBits(1),this.eatBits(1));ca.call(this)}var a=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],
-[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],b=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,
--1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],c=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],
-[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,
-10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,
-192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,
-3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],
-[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],
-[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,
-7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],e=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,
-2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,
-320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],f=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,
-48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,
-11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],
-[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],g=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],
-[2,2],[2,2]];d.prototype=Object.create(ca.prototype);d.prototype.readBlock=function(){for(;!this.eof;){var a=this.lookChar();this.buf=ka;this.ensureBuffer(this.bufferLength+1);this.buffer[this.bufferLength++]=a}};d.prototype.addPixels=function(a,b){var c=this.codingLine,d=this.codingPos;a>c[d]&&(a>this.columns&&(da("row is wrong length"),this.err=!0,a=this.columns),d&1^b&&++d,c[d]=a);this.codingPos=d};d.prototype.addPixelsNeg=function(a,b){var c=this.codingLine,d=this.codingPos;if(a>c[d])a>this.columns&&
-(da("row is wrong length"),this.err=!0,a=this.columns),d&1^b&&++d,c[d]=a;else if(a<c[d]){0>a&&(da("invalid code"),this.err=!0,a=0);for(;0<d&&a<c[d-1];)--d;c[d]=a}this.codingPos=d};d.prototype.lookChar=function(){if(this.buf!=ka)return this.buf;var a=this.refLine,b=this.codingLine,c=this.columns,d,e,f;if(0===this.outputBits){if(this.eof)return null;this.err=!1;var g,q;if(this.nextLine2D){for(d=0;b[d]<c;++d)a[d]=b[d];a[d++]=c;a[d]=c;for(e=d=this.codingPos=b[0]=0;b[this.codingPos]<c;)switch(f=this.getTwoDimCode(),
-f){case 0:this.addPixels(a[d+1],e);a[d+1]<c&&(d+=2);break;case 1:f=g=0;if(e){do f+=q=this.getBlackCode();while(64<=q);do g+=q=this.getWhiteCode();while(64<=q)}else{do f+=q=this.getWhiteCode();while(64<=q);do g+=q=this.getBlackCode();while(64<=q)}this.addPixels(b[this.codingPos]+f,e);for(b[this.codingPos]<c&&this.addPixels(b[this.codingPos]+g,e^1);a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 7:this.addPixels(a[d]+3,e);e^=1;if(b[this.codingPos]<c)for(++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;
-case 5:this.addPixels(a[d]+2,e);e^=1;if(b[this.codingPos]<c)for(++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 3:this.addPixels(a[d]+1,e);e^=1;if(b[this.codingPos]<c)for(++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 2:this.addPixels(a[d],e);e^=1;if(b[this.codingPos]<c)for(++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 8:this.addPixelsNeg(a[d]-3,e);e^=1;if(b[this.codingPos]<c)for(0<d?--d:++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 6:this.addPixelsNeg(a[d]-2,e);e^=1;if(b[this.codingPos]<
-c)for(0<d?--d:++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 4:this.addPixelsNeg(a[d]-1,e);e^=1;if(b[this.codingPos]<c)for(0<d?--d:++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case ka:this.addPixels(c,0);this.eof=!0;break;default:da("bad 2d code"),this.addPixels(c,0),this.err=!0}}else for(e=this.codingPos=b[0]=0;b[this.codingPos]<c;){f=0;if(e){do f+=q=this.getBlackCode();while(64<=q)}else{do f+=q=this.getWhiteCode();while(64<=q)}this.addPixels(b[this.codingPos]+f,e);e^=1}this.byteAlign&&
-(this.inputBits&=-8);a=!1;if(!this.eoblock&&this.row==this.rows-1)this.eof=!0;else{for(f=this.lookBits(12);0===f;)this.eatBits(1),f=this.lookBits(12);1==f?(this.eatBits(12),a=!0):f==ka&&(this.eof=!0)}!this.eof&&0<this.encoding&&(this.nextLine2D=!this.lookBits(1),this.eatBits(1));if(this.eoblock&&a){if(f=this.lookBits(12),1==f){this.eatBits(12);0<this.encoding&&(this.lookBits(1),this.eatBits(1));if(0<=this.encoding)for(d=0;4>d;++d)f=this.lookBits(12),1!=f&&da("bad rtc code: "+f),this.eatBits(12),0<
-this.encoding&&(this.lookBits(1),this.eatBits(1));this.eof=!0}}else if(this.err&&this.eoline){for(;;){f=this.lookBits(13);if(f==ka)return this.eof=!0,null;if(1==f>>1)break;this.eatBits(1)}this.eatBits(12);0<this.encoding&&(this.eatBits(1),this.nextLine2D=!(f&1))}this.outputBits=0<b[0]?b[this.codingPos=0]:b[this.codingPos=1];this.row++}if(8<=this.outputBits)this.buf=this.codingPos&1?0:255,this.outputBits-=8,0===this.outputBits&&b[this.codingPos]<c&&(this.codingPos++,this.outputBits=b[this.codingPos]-
-b[this.codingPos-1]);else{f=8;this.buf=0;do this.outputBits>f?(this.buf<<=f,this.codingPos&1||(this.buf|=255>>8-f),this.outputBits-=f,f=0):(this.buf<<=this.outputBits,this.codingPos&1||(this.buf|=255>>8-this.outputBits),f-=this.outputBits,this.outputBits=0,b[this.codingPos]<c?(this.codingPos++,this.outputBits=b[this.codingPos]-b[this.codingPos-1]):0<f&&(this.buf<<=f,f=0));while(f)}this.black&&(this.buf^=255);return this.buf};d.prototype.findTableCode=function(a,b,c,d){for(d=d||0;a<=b;++a){var e=this.lookBits(a);
-if(e==ka)return[!0,1,!1];a<b&&(e<<=b-a);if(!d||e>=d)if(e=c[e-d],e[0]==a)return this.eatBits(a),[!0,e[1],!0]}return[!1,0,!1]};d.prototype.getTwoDimCode=function(){var b=0;if(this.eoblock){if(b=this.lookBits(7),(b=a[b])&&0<b[0])return this.eatBits(b[0]),b[1]}else if(b=this.findTableCode(1,7,a),b[0]&&b[2])return b[1];da("Bad two dim code");return ka};d.prototype.getWhiteCode=function(){var a=0;if(this.eoblock){a=this.lookBits(12);if(a==ka)return 1;a=0===a>>5?b[a]:c[a>>3];if(0<a[0])return this.eatBits(a[0]),
-a[1]}else{a=this.findTableCode(1,9,c);if(a[0])return a[1];a=this.findTableCode(11,12,b);if(a[0])return a[1]}da("bad white code");this.eatBits(1);return 1};d.prototype.getBlackCode=function(){var a;if(this.eoblock){a=this.lookBits(13);if(a==ka)return 1;a=0===a>>7?e[a]:0===a>>9&&0!==a>>7?f[(a>>1)-64]:g[a>>7];if(0<a[0])return this.eatBits(a[0]),a[1]}else{a=this.findTableCode(2,6,g);if(a[0])return a[1];a=this.findTableCode(7,12,f,64);if(a[0])return a[1];a=this.findTableCode(10,13,e);if(a[0])return a[1]}da("bad black code");
-this.eatBits(1);return 1};d.prototype.lookBits=function(a){for(var b;this.inputBits<a;){if(null===(b=this.str.getByte())||void 0===b)return 0===this.inputBits?ka:this.inputBuf<<a-this.inputBits&65535>>16-a;this.inputBuf=(this.inputBuf<<8)+b;this.inputBits+=8}return this.inputBuf>>this.inputBits-a&65535>>16-a};d.prototype.eatBits=function(a){if(0>(this.inputBits-=a))this.inputBits=0};return d}(),Xc=function(){function d(a,b){this.str=a;this.dict=a.dict;this.bitsCached=this.cachedData=0;for(var c={earlyChange:b,
-codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(4096),dictionaryLengths:new Uint16Array(4096),dictionaryPrevCodes:new Uint16Array(4096),currentSequence:new Uint8Array(4096),currentSequenceLength:0},d=0;256>d;++d)c.dictionaryValues[d]=d,c.dictionaryLengths[d]=1;this.lzwState=c;ca.call(this)}d.prototype=Object.create(ca.prototype);d.prototype.readBits=function(a){for(var b=this.bitsCached,c=this.cachedData;b<a;){var d=this.str.getByte();if(null===d||void 0===d)return this.eof=!0,null;c=c<<
-8|d;b+=8}this.bitsCached=b-=a;this.cachedData=c;this.lastCode=null;return c>>>b&(1<<a)-1};d.prototype.readBlock=function(){var a=1024,b,c,d,f=this.lzwState;if(f){var g=f.earlyChange,h=f.nextCode,l=f.dictionaryValues,p=f.dictionaryLengths,k=f.dictionaryPrevCodes,m=f.codeLength,r=f.prevCode,n=f.currentSequence,q=f.currentSequenceLength,t=0,s=this.bufferLength,u=this.ensureBuffer(this.bufferLength+a);for(b=0;512>b;b++){var v=this.readBits(m),A=0<q;if(256>v)n[0]=v,q=1;else if(258<=v)if(v<h){q=p[v];c=
-q-1;for(d=v;0<=c;c--)n[c]=l[d],d=k[d]}else n[q++]=n[0];else if(256==v){m=9;h=258;q=0;continue}else{this.eof=!0;delete this.lzwState;break}A&&(k[h]=r,p[h]=p[r]+1,l[h]=n[0],h++,m=h+g&h+g-1?m:Math.min(Math.log(h+g)/0.6931471805599453+1,12)|0);r=v;t+=q;if(a<t){do a+=512;while(a<t);u=this.ensureBuffer(this.bufferLength+a)}for(c=0;c<q;c++)u[s++]=n[c]}f.nextCode=h;f.codeLength=m;f.prevCode=r;f.currentSequenceLength=q;this.bufferLength=s}};return d}(),xc=function(){function d(){wa.call(this,new Uint8Array(0))}
-d.prototype=wa.prototype;return d}();jb.prototype={on:function(d,a,b){var c=this.actionHandler;c[d]&&w('There is already an actionName called "'+d+'"');c[d]=[a,b]},send:function(d,a,b){d={action:d,data:a};b&&(a=this.callbackIndex++,this.callbacks[a]=b,d.callbackId=a);this.comObj.postMessage(d)}};var Dc={setup:function(d){function a(a){var b=new E,d=function(){var a=c.ensureModel("numPages"),d=c.ensureModel("fingerprint"),e=c.ensureCatalog("documentOutline"),g=c.ensureModel("documentInfo"),h=c.ensureCatalog("metadata"),
-n=c.ensureXRef("encrypt"),q=c.ensureCatalog("javaScript");E.all([a,d,e,g,h,n,q]).then(function(a){b.resolve({numPages:a[0],fingerprint:a[1],outline:a[2],info:a[3],metadata:a[4],encrypted:!!a[5],javaScript:a[6]})})},h=function(a){b.reject(a)};c.ensureModel("checkHeader",[]).then(function(){c.ensureModel("parseStartXRef",[]).then(function(){c.ensureModel("parse",[a]).then(d,h)})});return b}function b(a){var b=new E,g=a.source,h=a.disableRange;if(g.data)return c=new uc(g.data,g.password),b.resolve(),
-b;if(g.chunkedViewerLoading)return c=new vc(g,d),b.resolve(),b;var l=new Rb(g.url,{httpHeaders:g.httpHeaders}),p=l.requestFull({onHeadersReceived:function(){if(!h){var a=l.getRequestXhr(p);if("bytes"===a.getResponseHeader("Accept-Ranges")&&"identity"===(a.getResponseHeader("Content-Encoding")||"identity"))a=a.getResponseHeader("Content-Length"),a=parseInt(a,10),N(a)&&(l.abortRequest(p),g.length=a,c=new vc(g,d),b.resolve(c))}},onDone:function(a){c=new uc(a.chunk,g.password);b.resolve()},onError:function(a){404==
-a?(a=new zc('Missing PDF "'+g.url+'".'),d.send("MissingPDF",{exception:a})):d.send("DocError","Unexpected server response ("+a+') while retrieving PDF "'+g.url+'".')},onProgress:function(a){d.send("DocProgress",{loaded:a.loaded,total:a.lengthComputable?a.total:void 0})}});return b}var c;d.on("test",function(a){a instanceof Uint8Array?"response"in new XMLHttpRequest?d.send("test",!0):d.send("test",!1):d.send("test",!1)});d.on("GetDocRequest",function(e){var f=function(a){d.send("GetDoc",{pdfInfo:a});
-c.ensureModel("traversePages",[])},g=function(a){a instanceof Ub?"needpassword"===a.code?d.send("NeedPassword",{exception:a}):"incorrectpassword"===a.code&&d.send("IncorrectPassword",{exception:a}):a instanceof yc?d.send("InvalidPDF",{exception:a}):a instanceof zc?d.send("MissingPDF",{exception:a}):d.send("UnknownError",{exception:new jd(a.message,a.toString())})};b(e).then(function(){a(!1).then(f,function(b){b instanceof Ac?(c.requestLoadedStream(),c.onLoadedStream().then(function(){a(!0).then(f,
-g)})):g(b)})})});d.on("GetPageRequest",function(a){c.getPage(a.pageIndex).then(function(b){var g=c.ensure(b,"rotate"),h=c.ensure(b,"ref");b=c.ensure(b,"view");E.all([g,h,b]).then(function(b){d.send("GetPage",{pageInfo:{pageIndex:a.pageIndex,rotate:b[0],ref:b[1],view:b[2]}})})})});d.on("GetDestinations",function(a,b){c.ensureCatalog("destinations").then(function(a){b.resolve(a)})});d.on("GetData",function(a,b){c.requestLoadedStream();c.onLoadedStream().then(function(a){b.resolve(a.bytes)})});d.on("DataLoaded",
-function(a,b){c.onLoadedStream().then(function(a){b.resolve({length:a.bytes.byteLength})})});d.on("GetAnnotationsRequest",function(a){c.getPage(a.pageIndex).then(function(b){c.ensure(b,"getAnnotations",[]).then(function(b){d.send("GetAnnotations",{pageIndex:a.pageIndex,annotations:b})})})});d.on("RenderPageRequest",function(a){c.getPage(a.pageIndex).then(function(b){var c=a.pageIndex+1,h=Date.now();b.getOperatorList(d).then(function(b){var f=b.queue;b=Object.keys(b.dependencies);Ia("page=%d - getOperatorList: time=%dms, len=%d",
-c,Date.now()-h,f.fnArray.length);for(var k={},m=0,r=b.length;m<r;m++){var n=b[m];0===n.indexOf("g_font_")&&(k[n]=!0)}d.send("RenderPage",{pageIndex:a.pageIndex,operatorList:f,depFonts:Object.keys(k)})},function(a){d.send("PageError",{pageNum:c,error:"string"===typeof a?{message:a,stack:"worker.js: while trying to getPage() and getOperatorList()"}:"object"===typeof a?{message:a.message||a.toString(),stack:a.stack||"worker.js: while trying to getPage() and getOperatorList()"}:{message:"Unknown exception type: "+
-typeof a,stack:"worker.js: while trying to getPage() and getOperatorList()"}})})})},this);d.on("GetTextContent",function(a,b){c.getPage(a.pageIndex).then(function(c){var d=a.pageIndex+1,l=Date.now();c.extractTextContent().then(function(a){b.resolve(a);Ia("text indexing: page=%d - time=%dms",d,Date.now()-l)},function(a){b.reject(a)})})});d.on("Terminate",function(a,b){c.streamManager.networkManager.abortAllRequests();b.resolve()})}},Yc={},Zd={log:function(){var d=Array.prototype.slice.call(arguments);
-ma.postMessage({action:"console_log",data:d})},error:function(){var d=Array.prototype.slice.call(arguments);ma.postMessage({action:"console_error",data:d});throw"pdf.js execution error";},time:function(d){Yc[d]=Date.now()},timeEnd:function(d){var a=Yc[d];a||w("Unkown timer name "+d);this.log("Timer:",d,Date.now()-a)}};if("undefined"===typeof window){ma.console=Zd;PDFJS.LogManager.addLogger({warn:function(d){ma.postMessage({action:"_warn",data:d})}});var $d=new jb("worker_processor",this);Dc.setup($d)}var Xd=
-function(){function d(){this.failOnCorruptedImage=!1}function a(a,b){return a[b]<<24|a[b+1]<<16|a[b+2]<<8|a[b+3]}function b(a,b){return a[b]<<8|a[b+1]}function c(a){for(var b=1,c=0;a>b;)b<<=1,c++;return c}function e(a,b,c){a=c.xcb_;var d=c.ycb_,e=1<<a,f=1<<d,g=Math.floor(b.tbx0/e),h=Math.floor(b.tby0/f),k=Math.ceil(b.tbx1/e),l=Math.ceil(b.tby1/f),m=b.resolution.precinctParameters,q=[];c=[];for(var p=h;p<l;p++)for(h=g;h<k;h++){var n={cbx:h,cby:p,tbx0:e*h,tby0:f*p,tbx1:e*(h+1),tby1:f*(p+1)},r=Math.floor((n.tby0-
-m.precinctYOffset)/m.precinctHeight)+Math.floor((n.tbx0-m.precinctXOffset)/m.precinctWidth)*m.numprecinctswide;n.tbx0_=Math.max(b.tbx0,n.tbx0);n.tby0_=Math.max(b.tby0,n.tby0);n.tbx1_=Math.min(b.tbx1,n.tbx1);n.tby1_=Math.min(b.tby1,n.tby1);n.precinctNumber=r;n.subbandType=b.type;n.Lblock=3;q.push(n);r in c?(r=c[r],r.cbxMin=Math.min(r.cbxMin,h),r.cbyMin=Math.min(r.cbyMin,p),r.cbxMax=Math.max(r.cbxMax,h),r.cbyMax=Math.max(r.cbyMax,p)):c[r]=r={cbxMin:h,cbyMin:p,cbxMax:h,cbyMax:p};n.precinct=r}b.codeblockParameters=
-{codeblockWidth:a,codeblockHeight:d,numcodeblockwide:k-g+1,numcodeblockhigh:l-l+1};b.codeblocks=q;h=0;for(a=q.length;h<a;h++);b.precincts=c}function f(a,b,c){var d=[];a=a.subbands;for(var e=0,f=a.length;e<f;e++)for(var g=a[e].codeblocks,h=0,l=g.length;h<l;h++){var k=g[h];k.precinctNumber==b&&d.push(k)}return{layerNumber:c,codeblocks:d}}function g(a){var b=a.tiles[a.currentTile.index],c=b.codingStyleDefaultParameters.layersCount,d=a.SIZ.Csiz,e=0;for(a=0;a<d;a++)e=Math.max(e,b.components[a].codingStyleParameters.decompositionLevelsCount);
-var g=0,h=0,k=0,l=0;this.nextPacket=function(){for(;g<c;g++){for(;h<=e;h++){for(;k<d;k++){var a=b.components[k];if(!(h>a.codingStyleParameters.decompositionLevelsCount)){for(var a=a.resolutions[h],m=a.precinctParameters.numprecincts;l<m;)return a=f(a,l,g),l++,a;l=0}}k=0}h=0}throw"Out of packets";}}function h(a){var b=a.tiles[a.currentTile.index],c=b.codingStyleDefaultParameters.layersCount,d=a.SIZ.Csiz,e=0;for(a=0;a<d;a++)e=Math.max(e,b.components[a].codingStyleParameters.decompositionLevelsCount);
-var g=0,h=0,k=0,l=0;this.nextPacket=function(){for(;g<=e;g++){for(;h<c;h++){for(;k<d;k++){var a=b.components[k];if(!(g>a.codingStyleParameters.decompositionLevelsCount)){for(var a=a.resolutions[g],m=a.precinctParameters.numprecincts;l<m;)return a=f(a,l,h),l++,a;l=0}}k=0}h=0}throw"Out of packets";}}function l(a,b,d,e){function f(a){for(;p<a;){var c=b[d+h];h++;q?(l=l<<7|c,p+=7,q=!1):(l=l<<8|c,p+=8);255==c&&(q=!0)}p-=a;return l>>>p&(1<<a)-1}function g(){var a=f(1);if(0===a)return 1;a=a<<1|f(1);if(2==
-a)return 2;a=a<<2|f(2);if(14>=a)return(a&3)+3;a=a<<5|f(5);if(510>=a)return(a&31)+6;a=a<<7|f(7);return(a&127)+37}var h=0,l,p=0,q=!1;for(a=a.tiles[a.currentTile.index].packetsIterator;h<e;){var n=a.nextPacket();if(f(1)){for(var r=n.layerNumber,t=[],s=0,w=n.codeblocks.length;s<w;s++){var F=n.codeblocks[s],J=F.precinct,G=F.cbx-J.cbxMin,K=F.cby-J.cbyMin,Q=!1,C=!1;if("included"in F)Q=!!f(1);else{var J=F.precinct,I,D;if("inclusionTree"in J)I=J.inclusionTree;else{D=J.cbxMax-J.cbxMin+1;var O=J.cbyMax-J.cbyMin+
-1;I=new m(D,O,r);D=new k(D,O);J.inclusionTree=I;J.zeroBitPlanesTree=D}if(I.reset(G,K,r))for(;;)if(f(1)){if(O=!I.nextLevel()){Q=C=F.included=!0;break}}else{I.incrementValue(r);break}}if(Q){if(C){D=J.zeroBitPlanesTree;for(D.reset(G,K);;)if(f(1)){if(O=!D.nextLevel())break}else D.incrementValue();F.zeroBitPlanes=D.value}for(J=g();f(1);)F.Lblock++;G=c(J);G=f((J<1<<G?G-1:G)+F.Lblock);t.push({codeblock:F,codingpasses:J,dataLength:G})}}p=0;q&&(h++,q=!1);for(;0<t.length;)n=t.shift(),F=n.codeblock,"data"in
-F||(F.data=[]),F.data.push({data:b,start:d+h,end:d+h+n.dataLength,codingpasses:n.codingpasses}),h+=n.dataLength}else p=0,q&&(h++,q=!1)}return h}var p={LL:0,LH:1,HL:1,HH:2};d.prototype={load:function(a){var b=new XMLHttpRequest;b.open("GET",a,!0);b.responseType="arraybuffer";b.onload=function(){var a=new Uint8Array(b.response||b.mozResponseArrayBuffer);this.parse(a);if(this.onload)this.onload()}.bind(this);b.send(null)},parse:function(a){function b(a,c,d){for(var e=0,f=0;f<d;f++)e=256*e+(a[c+f]&255);
-return e}for(var c=0,d=a.length;c<d;){var e=8,f=b(a,c,4),g=b(a,c+4,4),c=c+e;1==f&&(f=b(a,c,8),c+=8,e+=8);0===f&&(f=d-c+e);f<e&&w("JPX error: Invalid box field size");e=f-e;f=!0;switch(g){case 1785737832:f=!1;break;case 1785737827:this.parseCodestream(a,c,c+e)}f&&(c+=e)}},parseCodestream:function(c,d,f){var k={};try{for(var m=d;m<f;){var q=b(c,m),m=m+2,B=0,L;switch(q){case 65359:k.mainHeader=!0;break;case 65497:break;case 65361:var B=b(c,m),ia={};ia.Xsiz=a(c,m+4);ia.Ysiz=a(c,m+8);ia.XOsiz=a(c,m+12);
-ia.YOsiz=a(c,m+16);ia.XTsiz=a(c,m+20);ia.YTsiz=a(c,m+24);ia.XTOsiz=a(c,m+28);ia.YTOsiz=a(c,m+32);var X=b(c,m+36);ia.Csiz=X;var y=[];L=m+38;for(var H=0;H<X;H++){var ja={precision:(c[L]&127)+1,isSigned:!!(c[L]&128),XRsiz:c[L+1],YRsiz:c[L+1]},x=ja,z=ia;x.x0=Math.ceil(z.XOsiz/x.XRsiz);x.x1=Math.ceil(z.Xsiz/x.XRsiz);x.y0=Math.ceil(z.YOsiz/x.YRsiz);x.y1=Math.ceil(z.Ysiz/x.YRsiz);x.width=x.x1-x.x0;x.height=x.y1-x.y0;y.push(ja)}k.SIZ=ia;k.components=y;for(var F=k,J=y,G=F.SIZ,K=[],Q=Math.ceil((G.Xsiz-G.XTOsiz)/
-G.XTsiz),C=Math.ceil((G.Ysiz-G.YTOsiz)/G.YTsiz),I=0;I<C;I++)for(var D=0;D<Q;D++){var O={};O.tx0=Math.max(G.XTOsiz+D*G.XTsiz,G.XOsiz);O.ty0=Math.max(G.YTOsiz+I*G.YTsiz,G.YOsiz);O.tx1=Math.min(G.XTOsiz+(D+1)*G.XTsiz,G.Xsiz);O.ty1=Math.min(G.YTOsiz+(I+1)*G.YTsiz,G.Ysiz);O.width=O.tx1-O.tx0;O.height=O.ty1-O.ty0;O.components=[];K.push(O)}F.tiles=K;for(var P=0,E=G.Csiz;P<E;P++)for(var M=J[P],N=0,V=K.length;N<V;N++){var U={},O=K[N];U.tcx0=Math.ceil(O.tx0/M.XRsiz);U.tcy0=Math.ceil(O.ty0/M.YRsiz);U.tcx1=Math.ceil(O.tx1/
-M.XRsiz);U.tcy1=Math.ceil(O.ty1/M.YRsiz);U.width=U.tcx1-U.tcx0;U.height=U.tcy1-U.tcy0;O.components[P]=U}k.QCC=[];k.COC=[];break;case 65372:var B=b(c,m),W={};L=m+2;var R=c[L++],S,sa;switch(R&31){case 0:S=8;sa=!0;break;case 1:S=16;sa=!1;break;case 2:S=16;sa=!0;break;default:throw"Invalid SQcd value "+R;}W.noQuantization=8==S;W.scalarExpounded=sa;W.guardBits=R>>5;for(var da=[];L<B+m;){var ta={};8==S?(ta.epsilon=c[L++]>>3,ta.mu=0):(ta.epsilon=c[L]>>3,ta.mu=(c[L]&7)<<8|c[L+1],L+=2);da.push(ta)}W.SPqcds=
-da;k.mainHeader?k.QCD=W:(k.currentTile.QCD=W,k.currentTile.QCC=[]);break;case 65373:var B=b(c,m),ca={};L=m+2;var fa;257>k.SIZ.Csiz?fa=c[L++]:(fa=b(c,L),L+=2);R=c[L++];switch(R&31){case 0:S=8;sa=!0;break;case 1:S=16;sa=!1;break;case 2:S=16;sa=!0;break;default:throw"Invalid SQcd value "+R;}ca.noQuantization=8==S;ca.scalarExpounded=sa;ca.guardBits=R>>5;for(da=[];L<B+m;)ta={},8==S?(ta.epsilon=c[L++]>>3,ta.mu=0):(ta.epsilon=c[L]>>3,ta.mu=(c[L]&7)<<8|c[L+1],L+=2),da.push(ta);ca.SPqcds=da;k.mainHeader?k.QCC[fa]=
-ca:k.currentTile.QCC[fa]=ca;break;case 65362:var B=b(c,m),ga={};L=m+2;var ha=c[L++];ga.entropyCoderWithCustomPrecincts=!!(ha&1);ga.sopMarkerUsed=!!(ha&2);ga.ephMarkerUsed=!!(ha&4);ga.progressionOrder=c[L++];ga.layersCount=b(c,L);L+=2;ga.multipleComponentTransform=c[L++];ga.decompositionLevelsCount=c[L++];ga.xcb=(c[L++]&15)+2;ga.ycb=(c[L++]&15)+2;var ea=c[L++];ga.selectiveArithmeticCodingBypass=!!(ea&1);ga.resetContextProbabilities=!!(ea&2);ga.terminationOnEachCodingPass=!!(ea&4);ga.verticalyStripe=
-!!(ea&8);ga.predictableTermination=!!(ea&16);ga.segmentationSymbolUsed=!!(ea&32);ga.transformation=c[L++];if(ga.entropyCoderWithCustomPrecincts){for(var ka={};L<B+m;){var ra=c[L];ka.push({PPx:ra&15,PPy:ra>>4})}ga.precinctsSizes=ka}if(ga.sopMarkerUsed||ga.ephMarkerUsed||ga.selectiveArithmeticCodingBypass||ga.resetContextProbabilities||ga.terminationOnEachCodingPass||ga.verticalyStripe||ga.predictableTermination)throw"Unsupported COD options: "+ma.JSON.stringify(ga);k.mainHeader?k.COD=ga:(k.currentTile.COD=
-ga,k.currentTile.COC=[]);break;case 65424:var B=b(c,m),ba={};ba.index=b(c,m+2);ba.length=a(c,m+4);ba.dataEnd=ba.length+m-2;ba.partIndex=c[m+8];ba.partsCount=c[m+9];k.mainHeader=!1;0===ba.partIndex&&(ba.COD=k.COD,ba.COC=k.COC.slice(0),ba.QCD=k.QCD,ba.QCC=k.QCC.slice(0));k.currentTile=ba;break;case 65427:ba=k.currentTile;if(0===ba.partIndex){for(var la=k,za=la.SIZ.Csiz,wa=la.tiles[ba.index],qa=0;qa<za;qa++){var Ca=wa.components[qa];Ca.quantizationParameters=qa in la.currentTile.QCC?la.currentTile.QCC[qa]:
-la.currentTile.QCD;Ca.codingStyleParameters=qa in la.currentTile.COC?la.currentTile.COC[qa]:la.currentTile.COD}wa.codingStyleDefaultParameters=la.currentTile.COD;for(var oa=k,va=oa.tiles[oa.currentTile.index],Ma=oa.SIZ.Csiz,Fa=0;Fa<Ma;Fa++){for(var na=va.components[Fa],Ga=na.codingStyleParameters.decompositionLevelsCount,Ia=[],Ea=[],Ba=0;Ba<=Ga;Ba++){var ya,Ka=Ba,Aa=na.codingStyleParameters,Ua={};Aa.entropyCoderWithCustomPrecincts?(Ua.PPx=Aa.precinctsSizes[Ka].PPx,Ua.PPy=Aa.precinctsSizes[Ka].PPy):
-(Ua.PPx=15,Ua.PPy=15);Ua.xcb_=0<Ka?Math.min(Aa.xcb,Ua.PPx-1):Math.min(Aa.xcb,Ua.PPx);Ua.ycb_=0<Ka?Math.min(Aa.ycb,Ua.PPy-1):Math.min(Aa.ycb,Ua.PPy);ya=Ua;var Oa={},xa=1<<Ga-Ba;Oa.trx0=Math.ceil(na.tcx0/xa);Oa.try0=Math.ceil(na.tcy0/xa);Oa.trx1=Math.ceil(na.tcx1/xa);Oa.try1=Math.ceil(na.tcy1/xa);var Va=Oa,Ja=1<<ya.PPx,La=1<<ya.PPy,Wa=Va.trx1>Va.trx0?Math.ceil(Va.trx1/Ja)-Math.floor(Va.trx0/Ja):0,Xa=Va.try1>Va.try0?Math.ceil(Va.try1/La)-Math.floor(Va.try0/La):0;Va.precinctParameters={precinctXOffset:Math.floor(Va.trx0/
-Ja)*Ja,precinctYOffset:Math.floor(Va.try0/La)*La,precinctWidth:Ja,precinctHeight:La,numprecinctswide:Wa,numprecinctshigh:Xa,numprecincts:Wa*Xa};Ia.push(Oa);var aa;if(0===Ba)aa={type:"LL"},aa.tbx0=Math.ceil(na.tcx0/xa),aa.tby0=Math.ceil(na.tcy0/xa),aa.tbx1=Math.ceil(na.tcx1/xa),aa.tby1=Math.ceil(na.tcy1/xa),aa.resolution=Oa,e(oa,aa,ya),Ea.push(aa),Oa.subbands=[aa];else{var Pa=1<<Ga-Ba+1,Na=[];aa={type:"HL"};aa.tbx0=Math.ceil(na.tcx0/Pa-0.5);aa.tby0=Math.ceil(na.tcy0/Pa);aa.tbx1=Math.ceil(na.tcx1/Pa-
-0.5);aa.tby1=Math.ceil(na.tcy1/Pa);aa.resolution=Oa;e(oa,aa,ya);Ea.push(aa);Na.push(aa);aa={type:"LH"};aa.tbx0=Math.ceil(na.tcx0/Pa);aa.tby0=Math.ceil(na.tcy0/Pa-0.5);aa.tbx1=Math.ceil(na.tcx1/Pa);aa.tby1=Math.ceil(na.tcy1/Pa-0.5);aa.resolution=Oa;e(oa,aa,ya);Ea.push(aa);Na.push(aa);aa={type:"HH"};aa.tbx0=Math.ceil(na.tcx0/Pa-0.5);aa.tby0=Math.ceil(na.tcy0/Pa-0.5);aa.tbx1=Math.ceil(na.tcx1/Pa-0.5);aa.tby1=Math.ceil(na.tcy1/Pa-0.5);aa.resolution=Oa;e(oa,aa,ya);Ea.push(aa);Na.push(aa);Oa.subbands=Na}}na.resolutions=
-Ia;na.subbands=Ea}var Ya=va.codingStyleDefaultParameters.progressionOrder;switch(Ya){case 0:va.packetsIterator=new g(oa);break;case 1:va.packetsIterator=new h(oa);break;default:throw"Unsupported progression order "+Ya;}}B=ba.dataEnd-m;l(k,c,m,B);break;case 65380:B=b(c,m);break;default:throw"Unknown codestream code: "+q.toString(16);}m+=B}}catch(Za){this.failOnCorruptedImage?w("JPX error: "+Za):Y("JPX error: "+Za+". Trying to recover")}for(var $a=k.components,Ra=k.SIZ.Csiz,bb=[],Ta=0,ib=k.tiles.length;Ta<
-ib;Ta++){for(var eb=k.tiles[Ta],nb=[],Ha=0;Ha<Ra;Ha++){for(var vb=eb.components[Ha],Qa=vb.codingStyleParameters,ab=vb.quantizationParameters,lb=Qa.decompositionLevelsCount,Sa=ab.SPqcds,pb=ab.scalarExpounded,tb=ab.guardBits,fb=Qa.transformation,Ab=Qa.segmentationSymbolUsed,Cb=k.components[Ha].precision,rb=[],jb=0,Zb=0;Zb<=lb;Zb++)for(var sb=vb.resolutions[Zb],kb=0,Eb=sb.subbands.length;kb<Eb;kb++){var mb,gb;pb?(mb=Sa[jb].mu,gb=Sa[jb].epsilon):(mb=Sa[0].mu,gb=Sa[0].epsilon+(0<Zb?1-Zb:0));for(var ob=
-sb.subbands[kb],qb=ob.tbx1-ob.tbx0,zb=ob.tby1-ob.tby0,Kb=Math.pow(2,Cb+p[ob.type]-gb)*(1+mb/2048),Ob=tb+gb-1,Bb=new Float32Array(qb*zb),Tb=Bb,Ub=ob.tbx0,Vb=ob.tby0,Db=qb,Wb=Kb,Fb=Ob,Gb=ob.codeblocks,Xb=fb,Yb=Ab,ub=0,bc=Gb.length;ub<bc;++ub){var cb=Gb[ub],ec=cb.tbx1_-cb.tbx0_,jc=cb.tby1_-cb.tby0_;if(!(0===ec||0===jc)&&"data"in cb){var hb,fc;hb=new n(ec,jc,cb.subbandType,cb.zeroBitPlanes);fc=2;for(var gc=cb.data,hc=0,kc=0,db=0,lc=gc.length;db<lc;db++)var wb=gc[db],hc=hc+(wb.end-wb.start),kc=kc+wb.codingpasses;
-for(var Ib=new Uint8Array(hc),Hb=0,db=0,lc=gc.length;db<lc;db++){var wb=gc[db],Jb=wb.data.subarray(wb.start,wb.end);Ib.set(Jb,Hb);Hb+=Jb.length}var cc=new r(Ib,0,hc);hb.setDecoder(cc);for(db=0;db<kc;db++){switch(fc){case 0:hb.runSignificancePropogationPass();break;case 1:hb.runMagnitudeRefinementPass();break;case 2:hb.runCleanupPass(),Yb&&hb.checkSegmentationSymbol()}fc=(fc+1)%3}for(var mc=cb.tbx0_-Ub+(cb.tby0_-Vb)*Db,ic=0,Lb=0;Lb<jc;Lb++){for(Hb=0;Hb<ec;Hb++){var xb=(hb.coefficentsSign[ic]?-1:1)*
-hb.coefficentsMagnitude[ic],Mb=hb.bitsDecoded[ic],nc;0===Xb||Fb>Mb?(xb+=0>xb?xb-0.5:0<xb?xb+0.5:0,nc=1<<Fb-Mb):nc=1;Tb[mc++]=xb*nc*Wb;ic++}mc+=Db-ec}}}rb.push({width:qb,height:zb,items:Bb});jb++}var fb=Qa.transformation,oc=(0===fb?new t:new s).calculate(rb,vb.tcx0,vb.tcy0);nb.push({left:vb.tcx0,top:vb.tcy0,width:oc.width,height:oc.height,items:oc.items})}if(eb.codingStyleDefaultParameters.multipleComponentTransform)for(var pc=nb[0].items,Nb=nb[1].items,Pb=nb[2].items,ua=0,$b=pc.length;ua<$b;ua++){var Qb=
-Nb[ua],Rb=Pb[ua],qc=pc[ua]-(Rb+Qb>>2);Nb[ua]=qc;pc[ua]=Rb+qc;Pb[ua]=Qb+qc}for(Ha=0;Ha<Ra;Ha++){var ac=$a[Ha];if(!ac.isSigned)for(var rc=1<<ac.precision-1,sc=nb[Ha],yb=sc.items,ua=0,$b=yb.length;ua<$b;ua++)yb[ua]+=rc}for(Ha=0;Ha<Ra;Ha++){for(var ac=$a[Ha],rc=ac.isSigned?128:0,dc=ac.precision-8,sc=nb[Ha],yb=sc.items,Sb=new Uint8Array(yb.length),ua=0,$b=yb.length;ua<$b;ua++){var tc=(yb[ua]>>dc)+rc;Sb[ua]=0>tc?0:255<tc?255:tc}nb[Ha].items=Sb}bb.push(nb)}this.tiles=bb;this.width=k.SIZ.Xsiz-k.SIZ.XOsiz;
-this.height=k.SIZ.Ysiz-k.SIZ.YOsiz;this.componentsCount=k.SIZ.Csiz}};var k=function(){function a(b,d){var e=c(Math.max(b,d))+1;this.levels=[];for(var f=0;f<e;f++)this.levels.push({width:b,height:d,items:[]}),b=Math.ceil(b/2),d=Math.ceil(d/2)}a.prototype={reset:function(a,b){for(var c=0,d=0;c<this.levels.length;){var e=this.levels[c],f=a+b*e.width;if(f in e.items){d=e.items[f];break}e.index=f;a>>=1;b>>=1;c++}c--;e=this.levels[c];e.items[e.index]=d;this.currentLevel=c;delete this.value},incrementValue:function(){var a=
-this.levels[this.currentLevel];a.items[a.index]++},nextLevel:function(){var a=this.currentLevel,b=this.levels[a],c=b.items[b.index];a--;if(0>a)return this.value=c,!1;this.currentLevel=a;b=this.levels[a];b.items[b.index]=c;return!0}};return a}(),m=function(){function a(b,d,e){var f=c(Math.max(b,d))+1;this.levels=[];for(var g=0;g<f;g++){for(var h=new Uint8Array(b*d),k=0,l=h.length;k<l;k++)h[k]=e;this.levels.push({width:b,height:d,items:h});b=Math.ceil(b/2);d=Math.ceil(d/2)}}a.prototype={reset:function(a,
-b,c){for(var d=0;d<this.levels.length;){var e=this.levels[d],f=a+b*e.width;e.index=f;e=e.items[f];if(255==e)break;if(e>c)return this.currentLevel=d,this.propagateValues(),!1;a>>=1;b>>=1;d++}this.currentLevel=d-1;return!0},incrementValue:function(a){var b=this.levels[this.currentLevel];b.items[b.index]=a+1;this.propagateValues()},propagateValues:function(){for(var a=this.currentLevel,b=this.levels[a],c=b.items[b.index];0<=--a;)b=this.levels[a],b.items[b.index]=c},nextLevel:function(){var a=this.currentLevel,
-b=this.levels[a],c=b.items[b.index];b.items[b.index]=255;a--;if(0>a)return!1;this.currentLevel=a;b=this.levels[a];b.items[b.index]=c;return!0}};return a}(),r=function(){function a(b,c,d){this.data=b;this.bp=c;this.dataEnd=d;this.chigh=b[c];this.clow=0;this.byteIn();this.chigh=this.chigh<<7&65535|this.clow>>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}var b=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,
-nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,
-nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},
-{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,
-nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];a.prototype={byteIn:function(){var a=this.data,b=this.bp;255==a[b]?143<a[b+1]?(this.clow+=65280,this.ct=8):(b++,this.clow+=a[b]<<9,this.ct=7,this.bp=b):(b++,this.clow+=b<this.dataEnd?a[b]<<8:65280,this.ct=8,this.bp=b);65535<this.clow&&(this.chigh+=this.clow>>16,this.clow&=65535)},readBit:function(a){var c=b[a.index].qe;this.a-=
-c;if(this.chigh<c)return a=this.exchangeLps(a),this.renormD(),a;this.chigh-=c;return 0===(this.a&32768)?(a=this.exchangeMps(a),this.renormD(),a):a.mps},renormD:function(){do 0===this.ct&&this.byteIn(),this.a<<=1,this.chigh=this.chigh<<1&65535|this.clow>>15&1,this.clow=this.clow<<1&65535,this.ct--;while(0===(this.a&32768))},exchangeMps:function(a){var c,d=b[a.index];this.a<d.qe?(c=1-a.mps,1==d.switchFlag&&(a.mps=1-a.mps),a.index=d.nlps):(c=a.mps,a.index=d.nmps);return c},exchangeLps:function(a){var c,
-d=b[a.index];this.a<d.qe?(this.a=d.qe,c=a.mps,a.index=d.nmps):(this.a=d.qe,c=1-a.mps,1==d.switchFlag&&(a.mps=1-a.mps),a.index=d.nlps);return c}};return a}(),n=function(){function a(e,f,g,h){this.width=e;this.height=f;this.contextLabelTable="HH"==g?d:"HL"==g?c:b;e*=f;this.neighborsSignificance=new Uint8Array(e);this.coefficentsSign=new Uint8Array(e);this.coefficentsMagnitude=new Uint32Array(e);this.processingFlags=new Uint8Array(e);e=new Uint8Array(this.width*this.height);f=0;for(g=e.length;f<g;f++)e[f]=
-h;this.bitsDecoded=e;this.reset()}var b=new Uint8Array([0,5,8,0,3,7,8,0,4,7,8,0,0,0,0,0,1,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8]),c=new Uint8Array([0,3,4,0,5,7,7,0,8,8,8,0,0,0,0,0,1,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8]),d=new Uint8Array([0,1,2,0,1,2,2,0,2,2,2,0,0,0,0,0,3,4,5,0,4,5,5,0,5,5,5,0,0,0,0,0,6,7,7,0,7,7,7,0,7,7,7,0,0,0,0,0,8,8,8,0,8,
-8,8,0,8,8,8,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8]),e=[{contextLabel:13,xorBit:0},{contextLabel:12,xorBit:0},{contextLabel:11,xorBit:0},{contextLabel:10,xorBit:0},{contextLabel:9,xorBit:0},{contextLabel:10,xorBit:1},{contextLabel:11,xorBit:1},{contextLabel:12,xorBit:1},{contextLabel:13,xorBit:1}];a.prototype={setDecoder:function(a){this.decoder=a},reset:function(){this.uniformContext={index:46,mps:0};this.runLengthContext={index:3,mps:0};this.contexts=[];this.contexts.push({index:4,mps:0});for(var a=1;16>=
-a;a++)this.contexts.push({index:0,mps:0})},setNeighborsSignificance:function(a,b){var c=this.neighborsSignificance,d=this.width,e=this.height,f=a*d+b;0<a&&(0<b&&(c[f-d-1]+=16),b+1<d&&(c[f-d+1]+=16),c[f-d]+=4);a+1<e&&(0<b&&(c[f+d-1]+=16),b+1<d&&(c[f+d+1]+=16),c[f+d]+=4);0<b&&(c[f-1]+=1);b+1<d&&(c[f+1]+=1);c[f]|=128},runSignificancePropogationPass:function(){for(var a=this.decoder,b=this.width,c=this.height,d=this.coefficentsMagnitude,e=this.coefficentsSign,f=this.neighborsSignificance,g=this.processingFlags,
-h=this.contexts,k=this.contextLabelTable,l=this.bitsDecoded,m=0,p=b*c;m<p;m++)g[m]&=-2;for(m=0;m<c;m+=4)for(p=0;p<b;p++)for(var q=m*b+p,n=0;4>n;n++,q+=b){var u=m+n;if(u>=c)break;if(!d[q]&&f[q]){if(a.readBit(h[k[f[q]]])){var r=this.decodeSignBit(u,p);e[q]=r;d[q]=1;this.setNeighborsSignificance(u,p);g[q]|=2}l[q]++;g[q]|=1}}},decodeSignBit:function(a,b){var c=this.width,d=a*c+b,f=this.coefficentsMagnitude,g=this.coefficentsSign,c=e[3*(1-(b+1<c&&f[d+1]?g[d+1]?0<b&&f[d-1]?!g[d-1]?0:-1:-1:0<b&&f[d-1]?!g[d-
-1]?1:0:1:0<b&&f[d-1]?!g[d-1]?1:-1:0))+(1-(a+1<this.height&&f[d+c]?g[d+c]?0<a&&f[d-c]?!g[d-c]?0:-1:-1:0<a&&f[d-c]?!g[d-c]?1:0:1:0<a&&f[d-c]?!g[d-c]?1:-1:0))];return this.decoder.readBit(this.contexts[c.contextLabel])^c.xorBit},runMagnitudeRefinementPass:function(){for(var a=this.decoder,b=this.width,c=this.height,d=this.coefficentsMagnitude,e=this.neighborsSignificance,f=this.contexts,g=this.bitsDecoded,h=this.processingFlags,k=0;k<c;k+=4)for(var l=0;l<b;l++)for(var m=0;4>m;m++){var q=k+m;if(q>=c)break;
-var p=q*b+l;if(d[p]&&0===(h[p]&1)){var n=16;0!==(h[p]&2)&&(h[q*b+l]^=2,q=e[p],n=1<=(q&3)+(q>>2&3)+(q>>4&7)?15:14);q=a.readBit(f[n]);d[p]=d[p]<<1|q;g[p]++;h[p]|=1}}},runCleanupPass:function(){for(var a=this.decoder,b=this.width,c=this.height,d=this.neighborsSignificance,e=this.coefficentsMagnitude,f=this.coefficentsSign,g=this.contexts,h=this.contextLabelTable,k=this.bitsDecoded,l=this.processingFlags,m=2*b,q=3*b,p=0;p<c;p+=4)for(var n=0;n<b;n++){var u=p*b+n,r=0,v=u,t,s;if(p+3<c&&0===l[u]&&0===l[u+
-b]&&0===l[u+m]&&0===l[u+q]&&0===d[u]&&0===d[u+b]&&0===d[u+m]&&0===d[u+q]){t=this.runLengthContext;if(!a.readBit(t)){k[u]++;k[u+b]++;k[u+m]++;k[u+q]++;continue}t=this.uniformContext;r=a.readBit(t)<<1|a.readBit(t);s=p+r;v+=r*b;t=this.decodeSignBit(s,n);f[v]=t;e[v]=1;this.setNeighborsSignificance(s,n);l[v]|=2;v=u;for(u=p;u<=s;u++,v+=b)k[v]++;r++}for(;4>r;r++,v+=b){s=p+r;if(s>=c)break;e[v]||0!==(l[v]&1)||(t=g[h[d[v]]],1==a.readBit(t)&&(t=this.decodeSignBit(s,n),f[v]=t,e[v]=1,this.setNeighborsSignificance(s,
-n),l[v]|=2),k[v]++)}}},checkSegmentationSymbol:function(){var a=this.decoder,b=this.uniformContext;if(10!=(a.readBit(b)<<3|a.readBit(b)<<2|a.readBit(b)<<1|a.readBit(b)))throw"Invalid segmentation symbol";}};return a}(),q=function(){function a(){}a.prototype.calculate=function(a,b,c){for(var d=a[0],e=1,f=a.length,g=1;e<f;e+=3,g++)d=this.iterate(d,a[e],a[e+1],a[e+2],b,c);return d};a.prototype.iterate=function(a,b,c,d,e,f){var g=a.width,h=a.height;a=a.items;var k=b.width,l=b.height,m=b.items,q=c.width,
-p=c.height,n=c.items,u=d.width,r=d.height,t=d.items;d=g+k;c=h+p;b=new Float32Array(d*c);for(var s=0,w=h;s<w;s++)for(var h=s*g,C=2*s*d,I=0,D=g;I<D;I++,h++,C+=2)b[C]=a[h];s=0;for(w=l;s<w;s++){h=s*k;C=2*s*d+1;I=0;for(D=k;I<D;I++,h++,C+=2)b[C]=m[h]}s=0;for(w=p;s<w;s++){h=s*q;C=(2*s+1)*d;I=0;for(D=q;I<D;I++,h++,C+=2)b[C]=n[h]}s=0;for(w=r;s<w;s++){h=s*u;C=(2*s+1)*d+1;I=0;for(D=u;I<D;I++,h++,C+=2)b[C]=t[h]}a=new Float32Array(Math.max(d,c)+8);g=new Float32Array(a);a=new Float32Array(a);for(k=0;k<c;k++)if(1==
-d)0!==e%1&&(b[k*d]/=2);else{h=k*d;C=4;for(l=0;l<d;l++,h++,C++)g[C]=b[h];h=3;C=5;m=4+d-2;q=4+d;g[h--]=g[C++];g[q++]=g[m--];g[h--]=g[C++];g[q++]=g[m--];g[h--]=g[C++];g[q++]=g[m--];g[h--]=g[C++];g[q++]=g[m--];this.filter(g,4,d,e,a);h=k*d;C=4;for(l=0;l<d;l++,h++,C++)b[h]=a[C]}for(l=0;l<d;l++)if(1==c)0!==f%1&&(b[l]/=2);else{h=l;C=4;for(k=0;k<c;k++,h+=d,C++)g[C]=b[h];h=3;C=5;m=4+c-2;q=4+c;g[h--]=g[C++];g[q++]=g[m--];g[h--]=g[C++];g[q++]=g[m--];g[h--]=g[C++];g[q++]=g[m--];g[h--]=g[C++];g[q++]=g[m--];this.filter(g,
-4,c,f,a);h=l;C=4;for(k=0;k<c;k++,h+=d,C++)b[h]=a[C]}return{width:d,height:c,items:b}};return a}(),t=function(){function a(){q.call(this)}a.prototype=Object.create(q.prototype);a.prototype.filter=function(a,b,c,d,e){var f=Math.floor(d/2);c=Math.floor((d+c)/2);b-=d%1;d=b-2;for(var g=f-1,h=c+2;g<h;g++,d+=2)e[d]=1.230174104914001*a[d];d=b-3;g=f-2;for(h=c+2;g<h;g++,d+=2)e[d]=0.8128930661159609*a[d];d=b-2;g=f-1;for(h=c+2;g<h;g++,d+=2)e[d]-=0.443506852043971*(e[d-1]+e[d+1]);d=b-1;g=f-1;for(h=c+1;g<h;g++,
-d+=2)e[d]-=0.882911075530934*(e[d-1]+e[d+1]);d=b;g=f;for(h=c+1;g<h;g++,d+=2)e[d]-=-0.052980118572961*(e[d-1]+e[d+1]);d=b+1;g=f;for(h=c;g<h;g++,d+=2)e[d]-=-1.586134342059924*(e[d-1]+e[d+1])};return a}(),s=function(){function a(){q.call(this)}a.prototype=Object.create(q.prototype);a.prototype.filter=function(a,b,c,d,e){var f=Math.floor(d/2);c=Math.floor((d+c)/2);b-=d%1;d=f;for(var g=c+1,h=b;d<g;d++,h+=2)e[h]=a[h]-Math.floor((a[h-1]+a[h+1]+2)/4);d=f;g=c;for(h=b+1;d<g;d++,h+=2)e[h]=a[h]+Math.floor((e[h-
-1]+e[h+1])/2)};return a}();return d}(),Yd=function(){function d(){}function a(a,b,c){this.data=a;this.start=b;this.end=c}function b(a,b,c){a=a.getContexts(b);for(var d=b=1,e=0,f,g=32,h=4436;d;){var k=a[b];k||(a[b]=k={index:0,mps:0});k=c.readBit(k);b=256>b?b<<1|k:(b<<1|k)&511|256;switch(d){case 1:f=!!k;break;case 2:if(k)break;d=7;g=2;h=0;break;case 3:if(k)break;d=7;h=g=4;break;case 4:if(k)break;d=7;g=6;h=20;break;case 5:if(k)break;d=7;g=8;h=84;break;case 6:if(k)break;d=7;g=12;h=340;break;default:e=
-2*e+k;0===--g&&(d=0);continue}d++}e+=h;return!f?e:0<e?-e:null}function c(a,b,c){a=a.getContexts("IAID");for(var d=1,e=0;e<c;e++){var f=a[d];f||(a[d]=f={index:0,mps:0});f=b.readBit(f);d=2*d+f}return 31>c?d&(1<<c)-1:d-Math.pow(2,c)}function e(a){for(var b=1,c=0;a>b;)b<<=1,c++;return c}function f(a,b){var c=a[b]<<24|a[b+1]<<16|a[b+2]<<8|a[b+3];return c&2147483648?c+4294967296:c}function g(a,b,c,d,e,f,g,h){a&&w("JBIG2 error: MMR encoding is not supported");a=!!f;var k=n[d].concat(g);g=k.length;for(var l=
-new Int32Array(g),m=new Int32Array(g),q=0;q<g;q++)l[q]=k[q].x,m[q]=k[q].y;d=t[d];var k=[],p=h.decoder;h=h.contextCache.getContexts("GB");for(var r=0,s=0;s<c;s++)if(e&&((q=h[d])||(h[d]=q={index:0,mps:0}),q=p.readBit(q),r^=q),r)k.push(k[k.length-1]);else{var F=new Uint8Array(b);k.push(F);for(var J=0;J<b;J++)if(a&&f[s][J])F[J]=0;else{for(var G=0,q=0;q<g;q++)var K=s+m[q],Q=J+l[q],G=0>K||0>Q||Q>=b?G<<1:G<<1|k[K][Q];(q=h[G])||(h[G]=q={index:0,mps:0});q=p.readBit(q);F[J]=q}}return k}function h(a,b,c,d,e,
-f,g,h,k){var l=q[c].coding;0===c&&(l=l.concat([h[0]]));for(var m=l.length,p=new Int32Array(m),n=new Int32Array(m),r=0;r<m;r++)p[r]=l[r].x,n[r]=l[r].y;var t=q[c].reference;0===c&&(t=t.concat([h[1]]));h=t.length;for(var l=new Int32Array(h),F=new Int32Array(h),r=0;r<h;r++)l[r]=t[r].x,F[r]=t[r].y;var t=d[0].length,J=d.length;c=s[c];var G=[],K=k.decoder;k=k.contextCache.getContexts("GR");for(var Q=0,C=0;C<b;C++){g&&((r=k[c])||(k[c]=r={index:0,mps:0}),r=K.readBit(r),Q^=r);var I=new Uint8Array(a);G.push(I);
-for(var D=0;D<a;D++){Q&&w("JBIG2 error: prediction is not supported");for(var O=0,r=0;r<m;r++)var P=C+n[r],E=D+p[r],O=0>P||0>E||E>=a?O<<1:O<<1|G[P][E];for(r=0;r<h;r++)P=C+F[r]+f,E=D+l[r]+e,O=0>P||P>=J||0>E||E>=t?O<<1:O<<1|d[P][E];(r=k[O])||(k[O]=r={index:0,mps:0});r=K.readBit(r);I[D]=r}}return G}function l(a,b){return{width:f(a,b),height:f(a,b+4),x:f(a,b+8),y:f(a,b+12),combinationOperator:a[b+16]&7}}function p(){}function k(){}var m=function(){function a(b,c,d){this.data=b;this.bp=c;this.dataEnd=
-d;this.chigh=b[c];this.clow=0;this.byteIn();this.chigh=this.chigh<<7&65535|this.clow>>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}var b=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,
-nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},
-{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},
-{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];a.prototype={byteIn:function(){var a=this.data,b=this.bp;
-255==a[b]?143<a[b+1]?(this.clow+=65280,this.ct=8):(b++,this.clow+=a[b]<<9,this.ct=7,this.bp=b):(b++,this.clow+=b<this.dataEnd?a[b]<<8:65280,this.ct=8,this.bp=b);65535<this.clow&&(this.chigh+=this.clow>>16,this.clow&=65535)},readBit:function(a){var c=b[a.index].qe;this.a-=c;if(this.chigh<c)return a=this.exchangeLps(a),this.renormD(),a;this.chigh-=c;return 0===(this.a&32768)?(a=this.exchangeMps(a),this.renormD(),a):a.mps},renormD:function(){do 0===this.ct&&this.byteIn(),this.a<<=1,this.chigh=this.chigh<<
-1&65535|this.clow>>15&1,this.clow=this.clow<<1&65535,this.ct--;while(0===(this.a&32768))},exchangeMps:function(a){var c,d=b[a.index];this.a<d.qe?(c=1-a.mps,1==d.switchFlag&&(a.mps=1-a.mps),a.index=d.nlps):(c=a.mps,a.index=d.nmps);return c},exchangeLps:function(a){var c,d=b[a.index];this.a<d.qe?(this.a=d.qe,c=a.mps,a.index=d.nmps):(this.a=d.qe,c=1-a.mps,1==d.switchFlag&&(a.mps=1-a.mps),a.index=d.nlps);return c}};return a}();d.prototype={getContexts:function(a){return a in this?this[a]:this[a]=[]}};
-a.prototype={get decoder(){var a=new m(this.data,this.start,this.end);return fa(this,"decoder",a)},get contextCache(){var a=new d;return fa(this,"contextCache",a)}};var r=["SymbolDictionary",null,null,null,"IntermediateTextRegion",null,"ImmediateTextRegion","ImmediateLosslessTextRegion",null,null,null,null,null,null,null,null,"patternDictionary",null,null,null,"IntermediateHalftoneRegion",null,"ImmediateHalftoneRegion","ImmediateLosslessHalftoneRegion",null,null,null,null,null,null,null,null,null,
-null,null,null,"IntermediateGenericRegion",null,"ImmediateGenericRegion","ImmediateLosslessGenericRegion","IntermediateGenericRefinementRegion",null,"ImmediateGenericRefinementRegion","ImmediateLosslessGenericRefinementRegion",null,null,null,null,"PageInformation","EndOfPage","EndOfStripe","EndOfFile","Profiles","Tables",null,null,null,null,null,null,null,null,"Extension"],n=[[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:2,y:-1},{x:-4,y:0},{x:-3,y:0},{x:-2,y:0},
-{x:-1,y:0}],[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:2,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:2,y:-1},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}],[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-2,y:0},{x:-1,y:0}],[{x:-3,y:-1},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-4,y:0},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}]],q=[{coding:[{x:0,y:-1},{x:1,y:-1},{x:-1,y:0}],reference:[{x:0,y:-1},{x:1,y:-1},{x:-1,y:0},{x:0,y:0},{x:1,y:0},{x:-1,y:1},{x:0,y:1},{x:1,y:1}]},
-{coding:[{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-1,y:0}],reference:[{x:0,y:-1},{x:-1,y:0},{x:0,y:0},{x:1,y:0},{x:0,y:1},{x:1,y:1}]}],t=[7379,1946,227,395],s=[32,8];p.prototype={onPageInformation:function(a){this.currentPageInfo=a;var b=new Uint8Array((a.width+7>>3)*a.height);a=a.defaultPixelValue?255:0;for(var c=0,d=b.length;c<d;c++)b[c]=a;this.buffer=b},drawBitmap:function(a,b){for(var c=this.currentPageInfo,d=a.width,e=a.height,f=c.width+7>>3,c=c.combinationOperatorOverride?a.combinationOperator:
-c.combinationOperator,g=this.buffer,h=0;h<e;h++){var k=128>>(a.x&7),l=(h+a.y)*f+(a.x>>3);switch(c){case 0:for(var m=0;m<d;m++)g[l]|=b[h][m]?k:0,k>>=1,k||(k=128,l++);break;case 2:for(m=0;m<d;m++)g[l]^=b[h][m]?k:0,k>>=1,k||(k=128,l++);break;default:w("JBIG2 error: operator "+c+" is not supported")}}},onImmediateGenericRegion:function(b,c,d,e){var f=b.info;c=new a(c,d,e);b=g(b.mmr,f.width,f.height,b.template,b.prediction,null,b.at,c);this.drawBitmap(f,b)},onImmediateLosslessGenericRegion:function(){this.onImmediateGenericRegion.apply(this,
-arguments)},onSymbolDictionary:function(d,f,k,l,m,q){d.huffman&&w("JBIG2 error: huffman is not supported");var p=this.symbols;p||(this.symbols=p={});for(var r=[],n=0,t=k.length;n<t;n++)r=r.concat(p[k[n]]);q=new a(l,m,q);n=d.refinement;k=r;var r=d.numberOfNewSymbols,t=d.template,s=d.at,H=d.refinementTemplate,ja=d.refinementAt;d.huffman&&w("JBIG2 error: huffman is not supported");d=[];var x=0,z=e(k.length+r);l=q.decoder;for(m=q.contextCache;d.length<r;)for(var F=b(m,"IADH",l),x=x+F,F=0;;){var J=b(m,
-"IADW",l);if(null===J)break;F+=J;if(n){1<b(m,"IAAI",l)&&w("JBIG2 error: number of instances > 1 is not supported");var J=c(m,l,z),G=b(m,"IARDX",l),K=b(m,"IARDY",l),J=h(F,x,H,J<k.length?k[J]:d[J-k.length],G,K,!1,ja,q)}else J=g(!1,F,x,t,!1,null,s,q);d.push(J)}q=[];n=[];t=!1;for(s=k.length+r;n.length<s;){for(H=b(m,"IAEX",l);H--;)n.push(t);t=!t}l=0;for(m=k.length;l<m;l++)n[l]&&q.push(k[l]);for(k=0;k<r;l++,k++)n[l]&&q.push(d[k]);p[f]=q},onImmediateTextRegion:function(d,f,g,k,l){for(var m=d.info,q=this.symbols,
-p=[],r=0,n=f.length;r<n;r++)p=p.concat(q[f[r]]);f=e(p.length);g=new a(g,k,l);k=d.refinement;var t=m.width,s=m.height,ja=d.defaultPixelValue;l=d.numberOfSymbolInstances;var q=d.stripSize,x=d.transposed,r=d.dsOffset,n=d.referenceCorner,z=d.combinationOperator,F=d.refinementTemplate,J=d.refinementAt;d.huffman&&w("JBIG2 error: huffman is not supported");d=[];for(var G=0;G<s;G++){var K=new Uint8Array(t);if(ja)for(var Q=0;Q<t;Q++)K[Q]=ja;d.push(K)}t=g.decoder;s=g.contextCache;x&&w("JBIG2 error: transposed is not supported");
-x=-b(s,"IADT",t);for(G=ja=0;G<l;){Q=b(s,"IADT",t);x+=Q;Q=b(s,"IAFS",t);Q=ja+=Q;do{var C=1==q?0:b(s,"IAIT",t),K=q*x+C,C=c(s,t,f),I=k&&b(s,"IARI",t),C=p[C],D=C[0].length,O=C.length;if(I)var I=b(s,"IARDW",t),P=b(s,"IARDH",t),E=b(s,"IARDX",t),M=b(s,"IARDY",t),D=D+I,O=O+P,C=h(D,O,F,C,(I>>1)+E,(P>>1)+M,!1,J,g);I=K-(n&1?0:O);P=Q-(n&2?D:0);for(E=0;E<O;E++)if(K=d[I+E])switch(M=C[E],z){case 0:for(var N=0;N<D;N++)K[P+N]|=M[N];break;case 2:for(N=0;N<D;N++)K[P+N]^=M[N];break;default:w("JBIG2 error: operator "+
-z+" is not supported")}Q+=D-1;G++;C=b(s,"IADS",t);if(null===C)break;Q+=C+r}while(1)}this.drawBitmap(m,d)},onImmediateLosslessTextRegion:function(){this.onImmediateTextRegion.apply(this,arguments)}};k.prototype={parseChunks:function(a){for(var b=new p,c=0,d=a.length;c<d;c++){for(var e=a[c],g={},h=e.data,k=e.end,m=[],q=e.start;q<k;){var e=h,n=q,q={};q.number=f(e,n);var t=e[n+4],s=t&63;r[s]||w("JBIG2 error: invalid segment type: "+s);q.type=s;q.typeName=r[s];q.deferredNonRetain=!!(t&128);var t=!!(t&
-64),x=e[n+5],z=x>>5&7,F=[x&31],n=n+6;if(7==x){z=(e[n-1]<<24|e[n-1+1]<<16|e[n-1+2]<<8|e[n-1+3])&536870911;n+=3;x=z+7>>3;for(F[0]=e[n++];0<--x;)F.push(e[n++])}else(5==x||6==x)&&w("JBIG2 error: invalid referred-to flags");q.retainBits=F;for(var x=256>=q.number?1:65536>=q.number?2:4,J=[],F=0;F<z;F++){var G=1==x?e[n]:2==x?e[n]<<8|e[n+1]:f(e,n);J.push(G);n+=x}q.referredTo=J;t?(q.pageAssociation=f(e,n),n+=4):q.pageAssociation=e[n++];q.length=f(e,n);n+=4;if(4294967295==q.length)if(38===s){t=l(e,n);z=!!(e[n+
-17]&1);s=new Uint8Array(6);z||(s[0]=255,s[1]=172);s[2]=t.height>>>24&255;s[3]=t.height>>16&255;s[4]=t.height>>8&255;s[5]=t.height&255;F=n;for(t=e.length;F<t;F++){for(z=0;6>z&&s[z]===e[F+z];)z++;if(6==z){q.length=F+6;break}}4294967295==q.length&&w("JBIG2 error: segment end was not found")}else w("JBIG2 error: invalid unknown segment length");q.headerEnd=n;e=q;q=e.headerEnd;n={header:e,data:h};g.randomAccess||(n.start=q,q+=e.length,n.end=q);m.push(n);if(51==e.type)break}if(g.randomAccess){g=0;for(h=
-m.length;g<h;g++)m[g].start=q,q+=m[g].header.length,m[g].end=q}g=b;h=0;for(k=m.length;h<k;h++){t=m[h];e=g;q=t.header;n=t.data;s=t.start;t=t.end;z=void 0;switch(q.type){case 0:x={};z=n[s]<<8|n[s+1];x.huffman=!!(z&1);x.refinement=!!(z&2);x.huffmanDHSelector=z>>2&3;x.huffmanDWSelector=z>>4&3;x.bitmapSizeSelector=z>>6&1;x.aggregationInstancesSelector=z>>7&1;x.bitmapCodingContextUsed=!!(z&256);x.bitmapCodingContextRetained=!!(z&512);x.template=z>>10&3;x.refinementTemplate=z>>12&1;s+=2;if(!x.huffman){J=
-0===x.template?4:1;z=[];for(F=0;F<J;F++)z.push({x:n[s]<<24>>24,y:n[s+1]<<24>>24}),s+=2;x.at=z}if(x.refinement&&!x.refinementTemplate){z=[];for(F=0;2>F;F++)z.push({x:n[s]<<24>>24,y:n[s+1]<<24>>24}),s+=2;x.refinementAt=z}x.numberOfExportedSymbols=f(n,s);s+=4;x.numberOfNewSymbols=f(n,s);s+=4;z=[x,q.number,q.referredTo,n,s,t];break;case 6:case 7:x={};x.info=l(n,s);s+=17;z=n[s]<<8|n[s+1];s+=2;x.huffman=!!(z&1);x.refinement=!!(z&2);x.stripSize=1<<(z>>2&3);x.referenceCorner=z>>4&3;x.transposed=!!(z&64);
-x.combinationOperator=z>>7&3;x.defaultPixelValue=z>>9&1;x.dsOffset=z<<17>>27;x.refinementTemplate=z>>15&1;x.huffman&&(z=n[s]<<8|n[s+1],s+=2,x.huffmanFS=z&3,x.huffmanDS=z>>2&3,x.huffmanDT=z>>4&3,x.huffmanRefinementDW=z>>6&3,x.huffmanRefinementDH=z>>8&3,x.huffmanRefinementDX=z>>10&3,x.huffmanRefinementDY=z>>12&3,x.huffmanRefinementSizeSelector=!!(z&14));if(x.refinement&&!x.refinementTemplate){z=[];for(F=0;2>F;F++)z.push({x:n[s]<<24>>24,y:n[s+1]<<24>>24}),s+=2;x.refinementAt=z}x.numberOfSymbolInstances=
-f(n,s);s+=4;x.huffman&&w("JBIG2 error: huffman is not supported");z=[x,q.referredTo,n,s,t];break;case 38:case 39:x={};x.info=l(n,s);s+=17;z=n[s++];x.mmr=!!(z&1);x.template=z>>1&3;x.prediction=!!(z&8);if(!x.mmr){J=0===x.template?4:1;z=[];for(F=0;F<J;F++)z.push({x:n[s]<<24>>24,y:n[s+1]<<24>>24}),s+=2;x.at=z}z=[x,n,s,t];break;case 48:t={width:f(n,s),height:f(n,s+4),resolutionX:f(n,s+8),resolutionY:f(n,s+12)};4294967295==t.height&&delete t.height;n=n[s+16];t.lossless=!!(n&1);t.refinement=!!(n&2);t.defaultPixelValue=
-n>>2&1;t.combinationOperator=n>>3&3;t.requiresBuffer=!!(n&32);t.combinationOperatorOverride=!!(n&64);z=[t];break;case 49:break;case 50:break;case 51:break;default:w("JBIG2 error: segment type "+q.typeName+"("+q.type+") is not implemented")}q="on"+q.typeName;q in e&&e[q].apply(e,z)}}return b.buffer}};return k}();PDFJS.bidi=function(){function d(a,b,c){for(c-=1;b<c;++b,--c){var d=a[b];a[b]=a[c];a[c]=d}}function a(a,b,c){this.str=a;this.dir=c?"ttb":b?"ltr":"rtl"}var b="BN BN BN BN BN BN BN BN BN S B S WS B BN BN BN BN BN BN BN BN BN BN BN BN BN BN B B B S WS ON ON ET ET ET ON ON ON ON ON ON CS ON CS ON EN EN EN EN EN EN EN EN EN EN ON ON ON ON ON ON ON L L L L L L L L L L L L L L L L L L L L L L L L L L ON ON ON ON ON ON L L L L L L L L L L L L L L L L L L L L L L L L L L ON ON ON ON BN BN BN BN BN BN B BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN CS ON ET ET ET ET ON ON ON ON L ON ON ON ON ON ET ET EN EN ON L ON ON ON EN L ON ON ON ON ON L L L L L L L L L L L L L L L L L L L L L L L ON L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L ON L L L L L L L L".split(" "),
-c="AL AL AL AL AL AL AL AL AL AL AL AL CS AL ON ON NSM NSM NSM NSM NSM NSM AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM AL AL AL AL AL AL AL AN AN AN AN AN AN AN AN AN AN ET AN AN AL AL AL NSM AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM ON NSM NSM NSM NSM AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL".split(" ");
-return function(e,f,g){var h=!0,l=e.length;if(0===l||g)return new a(e,h,g);g=[];for(var p=[],k=0,m=0;m<l;++m){g[m]=e.charAt(m);var r=e.charCodeAt(m),n="L";255>=r?n=b[r]:1424<=r&&1524>=r?n="R":1536<=r&&1791>=r?n=c[r&255]:1792<=r&&2220>=r&&(n="AL");("R"==n||"AL"==n||"AN"==n)&&k++;p[m]=n}if(0===k)return new a(e,!0);-1==f&&(0.3>l/k?(h=!0,f=0):(h=!1,f=1));e=[];for(m=0;m<l;++m)e[m]=f;k=f=0!==(f&1)?"R":"L";for(m=0;m<l;++m)"NSM"==p[m]?p[m]=k:k=p[m];k=f;for(m=0;m<l;++m)if(r=p[m],"EN"==r)p[m]="AL"==k?"AN":
-"EN";else if("R"==r||"L"==r||"AL"==r)k=r;for(m=0;m<l;++m)r=p[m],"AL"==r&&(p[m]="R");for(m=1;m<l-1;++m)if("ES"==p[m]&&("EN"==p[m-1]&&"EN"==p[m+1])&&(p[m]="EN"),"CS"==p[m]&&("EN"==p[m-1]||"AN"==p[m-1])&&p[m+1]==p[m-1])p[m]=p[m-1];for(m=0;m<l;++m)if("EN"==p[m]){for(k=m-1;0<=k&&"ET"==p[k];--k)p[k]="EN";for(k=m+1;k<l&&"ET"==p[k];--k)p[k]="EN"}for(m=0;m<l;++m)if(r=p[m],"WS"==r||"ES"==r||"ET"==r||"CS"==r)p[m]="ON";k=f;for(m=0;m<l;++m)if(r=p[m],"EN"==r)p[m]="L"==k?"L":"EN";else if("R"==r||"L"==r)k=r;for(m=
-0;m<l;++m)if("ON"==p[m]){a:{k=void 0;k=m+1;for(r=p.length;k<r;++k)if("ON"!=p[k])break a}var q=f;0<m&&(q=p[m-1]);r=f;k+1<l&&(r=p[k+1]);"L"!=q&&(q="R");"L"!=r&&(r="R");if(q==r){r=p;for(n=k;m<n;++m)r[m]=q}m=k-1}for(m=0;m<l;++m)"ON"==p[m]&&(p[m]=f);for(m=0;m<l;++m)if(r=p[m],0===(e[m]&1))if("R"==r)e[m]+=1;else{if("AN"==r||"EN"==r)e[m]+=2}else if("L"==r||"AN"==r||"EN"==r)e[m]+=1;k=-1;p=99;m=0;for(l=e.length;m<l;++m)f=e[m],k<f&&(k=f),p>f&&0!==(f&1)&&(p=f);for(f=k;f>=p;--f){k=-1;m=0;for(l=e.length;m<l;++m)e[m]<
-f?0<=k&&(d(g,k,m),k=-1):0>k&&(k=m);0<=k&&d(g,k,e.length)}e="";m=0;for(l=g.length;m<l;++m)p=g[m],"<"!=p&&">"!=p&&(e+=p);return new a(e,h)}}();PDFJS.Metadata=function(){function d(a){return a.replace(/>\\376\\377([^<]+)/g,function(a,b){for(var d=b.replace(/\\([0-3])([0-7])([0-7])/g,function(a,b,c,d){return String.fromCharCode(64*b+8*c+1*d)}),g="",h=0;h<d.length;h+=2)var l=256*d.charCodeAt(h)+d.charCodeAt(h+1),g=g+("&#x"+(65536+l).toString(16).substring(1)+";");return">"+g})}function a(a){"string"===
-typeof a?(a=d(a),a=(new DOMParser).parseFromString(a,"application/xml")):a instanceof Document||w("Metadata: Invalid metadata object");this.metaDocument=a;this.metadata={};this.parse()}a.prototype={parse:function(){var a=this.metaDocument.documentElement;if("rdf:rdf"!==a.nodeName.toLowerCase())for(a=a.firstChild;a&&"rdf:rdf"!==a.nodeName.toLowerCase();)a=a.nextSibling;var c=a?a.nodeName.toLowerCase():null;if(a&&"rdf:rdf"===c&&a.hasChildNodes()){var a=a.childNodes,d,f,g,h,l,p;g=0;for(l=a.length;g<
-l;g++)if(c=a[g],"rdf:description"===c.nodeName.toLowerCase()){h=0;for(p=c.childNodes.length;h<p;h++)"#text"!==c.childNodes[h].nodeName.toLowerCase()&&(d=c.childNodes[h],f=d.nodeName.toLowerCase(),this.metadata[f]=d.textContent.trim())}}},get:function(a){return this.metadata[a]||null},has:function(a){return"undefined"!==typeof this.metadata[a]}};return a}();var Wd=function(){function d(){}function a(a,b){for(var c=0,d=[],e,f,g=16;0<g&&!a[g-1];)g--;d.push({children:[],index:0});var h=d[0],k;for(e=0;e<
-g;e++){for(f=0;f<a[e];f++){h=d.pop();for(h.children[h.index]=b[c];0<h.index;)h=d.pop();h.index++;for(d.push(h);d.length<=e;)d.push(k={children:[],index:0}),h.children[h.index]=k.children,h=k;c++}e+1<g&&(d.push(k={children:[],index:0}),h.children[h.index]=k.children,h=k)}return d[0].children}function b(a,b,c,d,e,g,h,k,l){function m(){if(0<K)return K--,G>>K&1;G=a[b++];if(255==G){var c=a[b++];if(c)throw"unexpected marker: "+(G<<8|c).toString(16);}K=7;return G>>>7}function n(a){for(var b;null!==(b=m());){a=
-a[b];if("number"===typeof a)return a;if("object"!==typeof a)throw"invalid huffman sequence";}return null}function p(a){for(var b=0;0<a;){var c=m();if(null===c)return;b=b<<1|c;a--}return b}function r(a){var b=p(a);return b>=1<<a-1?b:b+(-1<<a)+1}function w(a,b){var c=n(a.huffmanTableDC),c=0===c?0:r(c);b[0]=a.pred+=c;for(c=1;64>c;){var d=n(a.huffmanTableAC),e=d&15,d=d>>4;if(0===e){if(15>d)break;c+=16}else c+=d,b[f[c]]=r(e),c++}}function H(a,b){var c=n(a.huffmanTableDC),c=0===c?0:r(c)<<l;b[0]=a.pred+=
-c}function E(a,b){b[0]|=m()<<l}function x(a,b){if(0<Q)Q--;else for(var c=g,d=h;c<=d;){var e=n(a.huffmanTableAC),k=e&15,e=e>>4;if(0===k){if(15>e){Q=p(e)+(1<<e)-1;break}c+=16}else c+=e,b[f[c]]=r(k)*(1<<l),c++}}function z(a,b){for(var c=g,d=h,e=0;c<=d;){var k=f[c];switch(C){case 0:e=n(a.huffmanTableAC);k=e&15;e>>=4;if(0===k)15>e?(Q=p(e)+(1<<e),C=4):(e=16,C=1);else{if(1!==k)throw"invalid ACn encoding";I=r(k);C=e?2:3}continue;case 1:case 2:b[k]?b[k]+=m()<<l:(e--,0===e&&(C=2==C?3:0));break;case 3:b[k]?
-b[k]+=m()<<l:(b[k]=I<<l,C=0);break;case 4:b[k]&&(b[k]+=m()<<l)}c++}4===C&&(Q--,0===Q&&(C=0))}var F=c.mcusPerLine,J=b,G=0,K=0,Q=0,C=0,I,D=d.length,O,P,N,M,U;k=c.progressive?0===g?0===k?H:E:0===k?x:z:w;var V=0;c=1==D?d[0].blocksPerLine*d[0].blocksPerColumn:F*c.mcusPerColumn;e||(e=c);for(var W,Y;V<c;){for(P=0;P<D;P++)d[P].pred=0;Q=0;if(1==D){O=d[0];for(U=0;U<e;U++)k(O,O.blocks[V/O.blocksPerLine|0][V%O.blocksPerLine]),V++}else for(U=0;U<e;U++){for(P=0;P<D;P++){O=d[P];W=O.h;Y=O.v;for(N=0;N<Y;N++)for(M=
-0;M<W;M++)k(O,O.blocks[(V/F|0)*O.v+N][V%F*O.h+M])}V++}K=0;O=a[b]<<8|a[b+1];if(65280>=O)throw"marker was not found";if(65488<=O&&65495>=O)b+=2;else break}return b-J}function c(a,b){for(var c=[],d=b.blocksPerLine,e=b.blocksPerColumn,f=d<<3,w=new Int32Array(64),E=new Uint8Array(64),N,B,L=0;L<e;L++){var M=L<<3;for(N=0;8>N;N++)c.push(new Uint8Array(f));for(var X=0;X<d;X++){var y=b.blocks[L][X];N=E;var H=w,ja=b.quantizationTable,x=void 0,z=void 0,F=void 0,J=void 0,G=void 0,K=void 0,Q=void 0,C=void 0,I=
-void 0;B=H;for(var D=void 0,D=0;64>D;D++)B[D]=y[D]*ja[D];for(D=0;8>D;++D)y=8*D,0==B[1+y]&&0==B[2+y]&&0==B[3+y]&&0==B[4+y]&&0==B[5+y]&&0==B[6+y]&&0==B[7+y]?(I=r*B[0+y]+512>>10,B[0+y]=I,B[1+y]=I,B[2+y]=I,B[3+y]=I,B[4+y]=I,B[5+y]=I,B[6+y]=I,B[7+y]=I):(x=r*B[0+y]+128>>8,z=r*B[4+y]+128>>8,F=B[2+y],J=B[6+y],G=n*(B[1+y]-B[7+y])+128>>8,C=n*(B[1+y]+B[7+y])+128>>8,K=B[3+y]<<4,Q=B[5+y]<<4,I=x-z+1>>1,x=x+z+1>>1,z=I,I=F*m+J*k+128>>8,F=F*k-J*m+128>>8,J=I,I=G-Q+1>>1,G=G+Q+1>>1,Q=I,I=C+K+1>>1,K=C-K+1>>1,C=I,I=x-
-J+1>>1,x=x+J+1>>1,J=I,I=z-F+1>>1,z=z+F+1>>1,F=I,I=G*p+C*l+2048>>12,G=G*l-C*p+2048>>12,C=I,I=K*h+Q*g+2048>>12,K=K*g-Q*h+2048>>12,Q=I,B[0+y]=x+C,B[7+y]=x-C,B[1+y]=z+Q,B[6+y]=z-Q,B[2+y]=F+K,B[5+y]=F-K,B[3+y]=J+G,B[4+y]=J-G);for(D=0;8>D;++D)y=D,0==B[8+y]&&0==B[16+y]&&0==B[24+y]&&0==B[32+y]&&0==B[40+y]&&0==B[48+y]&&0==B[56+y]?(I=r*H[D+0]+8192>>14,B[0+y]=I,B[8+y]=I,B[16+y]=I,B[24+y]=I,B[32+y]=I,B[40+y]=I,B[48+y]=I,B[56+y]=I):(x=r*B[0+y]+2048>>12,z=r*B[32+y]+2048>>12,F=B[16+y],J=B[48+y],G=n*(B[8+y]-B[56+
-y])+2048>>12,C=n*(B[8+y]+B[56+y])+2048>>12,K=B[24+y],Q=B[40+y],I=x-z+1>>1,x=x+z+1>>1,z=I,I=F*m+J*k+2048>>12,F=F*k-J*m+2048>>12,J=I,I=G-Q+1>>1,G=G+Q+1>>1,Q=I,I=C+K+1>>1,K=C-K+1>>1,C=I,I=x-J+1>>1,x=x+J+1>>1,J=I,I=z-F+1>>1,z=z+F+1>>1,F=I,I=G*p+C*l+2048>>12,G=G*l-C*p+2048>>12,C=I,I=K*h+Q*g+2048>>12,K=K*g-Q*h+2048>>12,Q=I,B[0+y]=x+C,B[56+y]=x-C,B[8+y]=z+Q,B[48+y]=z-Q,B[16+y]=F+K,B[40+y]=F-K,B[24+y]=J+G,B[32+y]=J-G);for(D=0;64>D;++D)H=128+(B[D]+8>>4),N[D]=0>H?0:255<H?255:H;D=0;H=X<<3;for(B=0;8>B;B++){x=
-c[M+B];for(N=0;8>N;N++)x[H+N]=E[D++]}}}return c}function e(a){return 0>a?0:255<a?255:a}var f=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),g=4017,h=799,l=3406,p=2276,k=1567,m=3784,r=5793,n=2896;d.prototype={load:function(a){var b=new XMLHttpRequest;b.open("GET",a,!0);b.responseType="arraybuffer";b.onload=function(){var a=new Uint8Array(b.response||
-b.mozResponseArrayBuffer);this.parse(a);if(this.onload)this.onload()}.bind(this);b.send(null)},parse:function(d){function e(){var a=d[k]<<8|d[k+1];k+=2;return a}function g(){var a=e(),a=d.subarray(k,k+a-2);k+=a.length;return a}function h(a){var b=0,c=0,d,e;for(e in a.components)a.components.hasOwnProperty(e)&&(d=a.components[e],b<d.h&&(b=d.h),c<d.v&&(c=d.v));var f=Math.ceil(a.samplesPerLine/8/b),g=Math.ceil(a.scanLines/8/c);for(e in a.components)if(a.components.hasOwnProperty(e)){d=a.components[e];
-for(var k=Math.ceil(Math.ceil(a.samplesPerLine/8)*d.h/b),l=Math.ceil(Math.ceil(a.scanLines/8)*d.v/c),m=f*d.h,n=g*d.v,q=[],p=0;p<n;p++){for(var r=[],s=0;s<m;s++)r.push(new Int32Array(64));q.push(r)}d.blocksPerLine=k;d.blocksPerColumn=l;d.blocks=q}a.maxH=b;a.maxV=c;a.mcusPerLine=f;a.mcusPerColumn=g}var k=0,l=null,m=null,n,p,r=[],w=[],E=[],N=[],y=e();if(65496!=y)throw"SOI not found";for(y=e();65497!=y;){var H;switch(y){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:H=
-g();65504===y&&74===H[0]&&(70===H[1]&&73===H[2]&&70===H[3]&&0===H[4])&&(l={version:{major:H[5],minor:H[6]},densityUnits:H[7],xDensity:H[8]<<8|H[9],yDensity:H[10]<<8|H[11],thumbWidth:H[12],thumbHeight:H[13],thumbData:H.subarray(14,14+3*H[12]*H[13])});65518===y&&65===H[0]&&(100===H[1]&&111===H[2]&&98===H[3]&&101===H[4]&&0===H[5])&&(m={version:H[6],flags0:H[7]<<8|H[8],flags1:H[9]<<8|H[10],transformCode:H[11]});break;case 65499:for(y=e()+k-2;k<y;){var M=d[k++],x=new Int32Array(64);if(0===M>>4)for(H=0;64>
-H;H++){var z=f[H];x[z]=d[k++]}else if(1===M>>4)for(H=0;64>H;H++)z=f[H],x[z]=e();else throw"DQT: invalid table spec";r[M&15]=x}break;case 65472:case 65474:e();n={};n.progressive=65474===y;n.precision=d[k++];n.scanLines=e();n.samplesPerLine=e();n.components={};n.componentsOrder=[];H=d[k++];for(y=0;y<H;y++){var M=d[k],x=d[k+1]>>4,z=d[k+1]&15,F=d[k+2];n.componentsOrder.push(M);n.components[M]={h:x,v:z,quantizationTable:r[F]};k+=3}h(n);w.push(n);break;case 65476:M=e();for(y=2;y<M;){x=d[k++];z=new Uint8Array(16);
-for(H=F=0;16>H;H++,k++)F+=z[H]=d[k];var J=new Uint8Array(F);for(H=0;H<F;H++,k++)J[H]=d[k];y+=17+F;(0===x>>4?N:E)[x&15]=a(z,J)}break;case 65501:e();p=e();break;case 65498:e();M=d[k++];H=[];for(y=0;y<M;y++)x=n.components[d[k++]],z=d[k++],x.huffmanTableDC=N[z>>4],x.huffmanTableAC=E[z&15],H.push(x);y=d[k++];M=d[k++];x=d[k++];y=b(d,k,n,H,p,y,M,x>>4,x&15);k+=y;break;default:if(255==d[k-3]&&192<=d[k-2]&&254>=d[k-2]){k-=3;break}throw"unknown JPEG marker "+y.toString(16);}y=e()}if(1!=w.length)throw"only single frame JPEGs supported";
-this.width=n.samplesPerLine;this.height=n.scanLines;this.jfif=l;this.adobe=m;this.components=[];for(y=0;y<n.componentsOrder.length;y++)x=n.components[n.componentsOrder[y]],this.components.push({lines:c(n,x),scaleX:x.h/n.maxH,scaleY:x.v/n.maxV})},getData:function(a,b){var c=this.width/a,d=this.height/b,f,g,h,k,l,m,n,p,r,w,H=0,E,x,z,F,J,G,K=new Uint8Array(a*b*this.components.length);switch(this.components.length){case 1:f=this.components[0];for(w=0;w<b;w++){l=f.lines[0|w*f.scaleY*d];for(r=0;r<a;r++)E=
-l[0|r*f.scaleX*c],K[H++]=E}break;case 3:G=!0;this.adobe&&this.adobe.transformCode?G=!0:"undefined"!==typeof this.colorTransform&&(G=!!this.colorTransform);f=this.components[0];g=this.components[1];h=this.components[2];for(w=0;w<b;w++){l=f.lines[0|w*f.scaleY*d];m=g.lines[0|w*g.scaleY*d];n=h.lines[0|w*h.scaleY*d];for(r=0;r<a;r++)G?(E=l[0|r*f.scaleX*c],x=m[0|r*g.scaleX*c],z=n[0|r*h.scaleX*c],k=e(E+1.402*(z-128)),p=e(E-0.3441363*(x-128)-0.71413636*(z-128)),E=e(E+1.772*(x-128))):(k=l[0|r*f.scaleX*c],p=
-m[0|r*g.scaleX*c],E=n[0|r*h.scaleX*c]),K[H++]=k,K[H++]=p,K[H++]=E}break;case 4:if(!this.adobe)throw"Unsupported color mode (4 components)";G=!1;this.adobe&&this.adobe.transformCode?G=!0:"undefined"!==typeof this.colorTransform&&(G=!!this.colorTransform);f=this.components[0];g=this.components[1];h=this.components[2];k=this.components[3];for(w=0;w<b;w++){l=f.lines[0|w*f.scaleY*d];m=g.lines[0|w*g.scaleY*d];n=h.lines[0|w*h.scaleY*d];p=k.lines[0|w*k.scaleY*d];for(r=0;r<a;r++)G?(E=l[0|r*f.scaleX*c],x=m[0|
-r*g.scaleX*c],z=n[0|r*h.scaleX*c],F=p[0|r*k.scaleX*c],J=255-e(E+1.402*(z-128)),z=255-e(E-0.3441363*(x-128)-0.71413636*(z-128)),E=255-e(E+1.772*(x-128))):(J=l[0|r*f.scaleX*c],z=m[0|r*g.scaleX*c],E=n[0|r*h.scaleX*c],F=p[0|r*k.scaleX*c]),K[H++]=J,K[H++]=z,K[H++]=E,K[H++]=F}break;default:throw"Unsupported color mode";}return K},copyToImageData:function(a){var b=a.width,c=a.height;a=a.data;var d=this.getData(b,c),f=0,g=0,h,k,l,m,n,p;switch(this.components.length){case 1:for(k=0;k<c;k++)for(h=0;h<b;h++)l=
-d[f++],a[g++]=l,a[g++]=l,a[g++]=l,a[g++]=255;break;case 3:for(k=0;k<c;k++)for(h=0;h<b;h++)n=d[f++],p=d[f++],l=d[f++],a[g++]=n,a[g++]=p,a[g++]=l,a[g++]=255;break;case 4:for(k=0;k<c;k++)for(h=0;h<b;h++)n=d[f++],p=d[f++],l=d[f++],m=d[f++],n=255-e(n*(1-m/255)+m),p=255-e(p*(1-m/255)+m),l=255-e(l*(1-m/255)+m),a[g++]=n,a[g++]=p,a[g++]=l,a[g++]=255;break;default:throw"Unsupported color mode";}}};return d}()}).call("undefined"===typeof window?this:window);
+"undefined"===typeof PDFJS&&(("undefined"!==typeof window?window:this).PDFJS={});PDFJS.version="1.0.277";PDFJS.build="250d394";
+(function(){var Q,da,ea,R;function W(b){PDFJS.verbosity>=PDFJS.VERBOSITY_LEVELS.infos&&console.log("Info: "+b)}function B(b){PDFJS.verbosity>=PDFJS.VERBOSITY_LEVELS.warnings&&console.log("Warning: "+b)}function D(b){if(1<arguments.length){var a=["Error:"];a.push.apply(a,arguments);console.log.apply(console,a);b=[].join.call(arguments," ")}else console.log("Error: "+b);console.log(pa());fa.notify(qa.unknown);throw Error(b);}function pa(){try{throw Error();}catch(b){return b.stack?b.stack.split("\n").slice(2).join("\n"):
+""}}function ra(b,a){if(!a)return b;if(/^[a-z][a-z0-9+\-.]*:/i.test(a))return a;var c;if("/"==a.charAt(0))return c=b.indexOf("://"),"/"===a.charAt(1)?++c:c=b.indexOf("/",c+3),b.substring(0,c)+a;var e=b.length;c=b.lastIndexOf("#");e=0<=c?c:e;c=b.lastIndexOf("?",e);c=b.lastIndexOf("/",0<=c?c:e);return b.substring(0,c+1)+a}function Z(b,a){if(!b)return!1;var c=/^[a-z][a-z0-9+\-.]*(?=:)/i.exec(b);if(!c)return a;c=c[0].toLowerCase();switch(c){case "http":case "https":case "ftp":case "mailto":return!0;default:return!1}}
+function S(b,a,c){Object.defineProperty(b,a,{value:c,enumerable:!0,configurable:!0,writable:!1});return c}function sa(b){for(var a=b.length,c=new Uint8Array(a),e=0;e<a;++e)c[e]=b.charCodeAt(e)&255;return c}function T(b){var a,c=b.length,e=[];if("\u00fe"===b[0]&&"\u00ff"===b[1])for(a=2;a<c;a+=2)e.push(String.fromCharCode(b.charCodeAt(a)<<8|b.charCodeAt(a+1)));else for(a=0;a<c;++a){var d=ta[b.charCodeAt(a)];e.push(d?String.fromCharCode(d):b.charAt(a))}return e.join("")}function O(b){return b instanceof
+Name}function X(b,a){if(!(b instanceof Dict))return!1;if(!a)return!0;var c=b.get("Type");return O(c)&&c.name==a}function P(b){return b instanceof Array}function K(){var b={};b.promise=new Promise(function(a,c){b.resolve=a;b.reject=c});return b}function $(b,a){this.name=b;this.comObj=a;this.callbackIndex=1;this.postMessageTransfers=!0;var c=this.callbacksCapabilities={},e=this.actionHandler={};e.console_log=[function(a){console.log.apply(console,a)}];e.console_error=[function(a){console.error.apply(console,
+a)}];e._unsupported_feature=[function(a){fa.notify(a)}];a.onmessage=function(d){var b=d.data;if(b.isReply)if(d=b.callbackId,b.callbackId in c){var g=c[d];delete c[d];"error"in b?g.reject(b.error):g.resolve(b.data)}else D("Cannot resolve callback "+d);else if(b.action in e){var k=e[b.action];b.callbackId?Promise.resolve().then(function(){return k[0].call(k[1],b.data)}).then(function(c){a.postMessage({isReply:!0,callbackId:b.callbackId,data:c})},function(c){a.postMessage({isReply:!0,callbackId:b.callbackId,
+error:c})}):k[0].call(k[1],b.data)}else D("Unknown action from worker: "+b.action)}}function ua(b,a,c){var e=new Image;e.onload=function(){c.resolve(b,e)};e.src=a}function ga(b,a){var c=document.createElement("canvas");c.width=b;c.height=a;return c}function ha(b){b.mozCurrentTransform||(b._scaleX=b._scaleX||1,b._scaleY=b._scaleY||1,b._originalSave=b.save,b._originalRestore=b.restore,b._originalRotate=b.rotate,b._originalScale=b.scale,b._originalTranslate=b.translate,b._originalTransform=b.transform,
+b._originalSetTransform=b.setTransform,b._transformMatrix=[b._scaleX,0,0,b._scaleY,0,0],b._transformStack=[],Object.defineProperty(b,"mozCurrentTransform",{get:function(){return this._transformMatrix}}),Object.defineProperty(b,"mozCurrentTransformInverse",{get:function(){var a=this._transformMatrix,c=a[0],e=a[1],d=a[2],b=a[3],g=a[4],a=a[5],k=c*b-e*d,h=e*d-c*b;return[b/k,e/h,d/h,c/k,(b*g-d*a)/h,(e*g-c*a)/k]}}),b.save=function(){var a=this._transformMatrix;this._transformStack.push(a);this._transformMatrix=
+a.slice(0,6);this._originalSave()},b.restore=function(){var a=this._transformStack.pop();a&&(this._transformMatrix=a,this._originalRestore())},b.translate=function(a,c){var e=this._transformMatrix;e[4]=e[0]*a+e[2]*c+e[4];e[5]=e[1]*a+e[3]*c+e[5];this._originalTranslate(a,c)},b.scale=function(a,c){var e=this._transformMatrix;e[0]*=a;e[1]*=a;e[2]*=c;e[3]*=c;this._originalScale(a,c)},b.transform=function(a,c,e,d,f,g){var k=this._transformMatrix;this._transformMatrix=[k[0]*a+k[2]*c,k[1]*a+k[3]*c,k[0]*
+e+k[2]*d,k[1]*e+k[3]*d,k[0]*f+k[2]*g+k[4],k[1]*f+k[3]*g+k[5]];b._originalTransform(a,c,e,d,f,g)},b.setTransform=function(a,c,e,d,f,g){this._transformMatrix=[a,c,e,d,f,g];b._originalSetTransform(a,c,e,d,f,g)},b.rotate=function(a){var c=Math.cos(a),e=Math.sin(a),d=this._transformMatrix;this._transformMatrix=[d[0]*c+d[2]*e,d[1]*c+d[3]*e,d[0]*-e+d[2]*c,d[1]*-e+d[3]*c,d[4],d[5]];this._originalRotate(a)})}function va(b){var a=b.width,c=b.height,e,d,f=a+1,g=new Uint8Array(f*(c+1)),k=new Uint8Array([0,2,
+4,0,1,0,5,4,8,10,0,8,0,2,1,0]),h=a+7&-8,m=b.data,l=new Uint8Array(h*c),n=0;b=0;for(e=m.length;b<e;b++){d=128;for(var J=m[b];0<d;)l[n++]=J&d?0:255,d>>=1}n=m=0;0!==l[n]&&(g[0]=1,++m);for(e=1;e<a;e++)l[n]!==l[n+1]&&(g[e]=l[n]?2:1,++m),n++;0!==l[n]&&(g[e]=2,++m);for(b=1;b<c;b++){n=b*h;d=b*f;l[n-h]!==l[n]&&(g[d]=l[n]?1:8,++m);J=(l[n]?4:0)+(l[n-h]?8:0);for(e=1;e<a;e++)J=(J>>2)+(l[n+1]?4:0)+(l[n-h+1]?8:0),k[J]&&(g[d+e]=k[J],++m),n++;l[n-h]!==l[n]&&(g[d+e]=l[n]?2:4,++m);if(1E3<m)return null}n=h*(c-1);d=b*
+f;0!==l[n]&&(g[d]=8,++m);for(e=1;e<a;e++)l[n]!==l[n+1]&&(g[d+e]=l[n]?4:8,++m),n++;0!==l[n]&&(g[d+e]=4,++m);if(1E3<m)return null;var k=new Int32Array([0,f,-1,0,-f,0,0,0,1]),q=[];for(b=0;m&&b<=c;b++){h=b*f;for(l=h+a;h<l&&!g[h];)h++;if(h!==l){l=[h%f,b];n=g[h];e=h;do{d=k[n];do h+=d;while(!g[h]);d=g[h];5!==d&&10!==d?(n=d,g[h]=0):(n=d&51*n>>4,g[h]&=n>>2|n<<2);l.push(h%f);l.push(h/f|0);--m}while(e!==h);q.push(l);--b}}return function(l){l.save();l.scale(1/a,-1/c);l.translate(0,-c);l.beginPath();for(var d=
+0,e=q.length;d<e;d++){var n=q[d];l.moveTo(n[0],n[1]);for(var b=2,f=n.length;b<f;b+=2)l.lineTo(n[b],n[b+1])}l.fill();l.beginPath();l.restore()}}function ia(b){var a=aa[b[0]];a||D("Unknown IR type: "+b[0]);return a.fromIR(b)}var u="undefined"===typeof window?this:window,U="undefined"==typeof window,ba=[0.001,0,0,0.001,0,0];R=0;Q=1;da=2;ea=3;u.PDFJS||(u.PDFJS={});u.PDFJS.pdfBug=!1;PDFJS.VERBOSITY_LEVELS={errors:0,warnings:1,infos:5};var F=PDFJS.OPS={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,
+setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,
+nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,
+beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotations:78,endAnnotations:79,beginAnnotation:80,endAnnotation:81,paintJpegXObject:82,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91},qa=PDFJS.UNSUPPORTED_FEATURES=
+{unknown:"unknown",forms:"forms",javaScript:"javaScript",smask:"smask",shadingPattern:"shadingPattern",font:"font"},fa=PDFJS.UnsupportedManager=function(){var b=[];return{listen:function(a){b.push(a)},notify:function(a){B('Unsupported feature "'+a+'"');for(var c=0,e=b.length;c<e;c++)b[c](a)}}}();PDFJS.isValidUrl=Z;var ja=PDFJS.PasswordResponses={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};(function(){function b(a,c){this.name="PasswordException";this.message=a;this.code=c}b.prototype=Error();return b.constructor=
+b})();(function(){function b(a,c){this.name="UnknownErrorException";this.message=a;this.details=c}b.prototype=Error();return b.constructor=b})();(function(){function b(a){this.name="InvalidPDFException";this.message=a}b.prototype=Error();return b.constructor=b})();(function(){function b(a){this.name="MissingPDFException";this.message=a}b.prototype=Error();return b.constructor=b})();var wa=function(){function b(a){this.message=a}b.prototype=Error();b.prototype.name="NotImplementedException";return b.constructor=
+b}();(function(){function b(a,c){this.begin=a;this.end=c;this.message="Missing data ["+a+", "+c+")"}b.prototype=Error();b.prototype.name="MissingDataException";return b.constructor=b})();(function(){function b(a){this.message=a}b.prototype=Error();b.prototype.name="XRefParseException";return b.constructor=b})();Object.defineProperty(PDFJS,"isLittleEndian",{configurable:!0,get:function(){var b=PDFJS,a=new Uint8Array(2);a[0]=1;a=new Uint16Array(a.buffer);return S(b,"isLittleEndian",1===a[0])}});Object.defineProperty(PDFJS,
+"hasCanvasTypedArrays",{configurable:!0,get:function(){var b=PDFJS,a=document.createElement("canvas");a.width=a.height=1;a=a.getContext("2d").createImageData(1,1);return S(b,"hasCanvasTypedArrays","undefined"!==typeof a.data.buffer)}});var xa=function(){function b(e,d){this.buffer=e;this.byteLength=e.length;for(var f=this.length=void 0===d?this.byteLength>>2:d;c<f;)Object.defineProperty(b.prototype,c,a(c)),c++}function a(a){return{get:function(){var c=this.buffer,b=a<<2;return(c[b]|c[b+1]<<8|c[b+
+2]<<16|c[b+3]<<24)>>>0},set:function(c){var b=this.buffer,g=a<<2;b[g]=c&255;b[g+1]=c>>8&255;b[g+2]=c>>16&255;b[g+3]=c>>>24&255}}}b.prototype=Object.create(null);var c=0;return b}(),ka=[1,0,0,1,0,0],p=PDFJS.Util=function(){function b(){}b.makeCssRgb=function(a){return"rgb("+a[0]+","+a[1]+","+a[2]+")"};b.transform=function(a,c){return[a[0]*c[0]+a[2]*c[1],a[1]*c[0]+a[3]*c[1],a[0]*c[2]+a[2]*c[3],a[1]*c[2]+a[3]*c[3],a[0]*c[4]+a[2]*c[5]+a[4],a[1]*c[4]+a[3]*c[5]+a[5]]};b.applyTransform=function(a,c){return[a[0]*
+c[0]+a[1]*c[2]+c[4],a[0]*c[1]+a[1]*c[3]+c[5]]};b.applyInverseTransform=function(a,c){var b=c[0]*c[3]-c[1]*c[2];return[(a[0]*c[3]-a[1]*c[2]+c[2]*c[5]-c[4]*c[3])/b,(-a[0]*c[1]+a[1]*c[0]+c[4]*c[1]-c[5]*c[0])/b]};b.getAxialAlignedBoundingBox=function(a,c){var e=b.applyTransform(a,c),d=b.applyTransform(a.slice(2,4),c),f=b.applyTransform([a[0],a[3]],c),g=b.applyTransform([a[2],a[1]],c);return[Math.min(e[0],d[0],f[0],g[0]),Math.min(e[1],d[1],f[1],g[1]),Math.max(e[0],d[0],f[0],g[0]),Math.max(e[1],d[1],f[1],
+g[1])]};b.inverseTransform=function(a){var c=a[0]*a[3]-a[1]*a[2];return[a[3]/c,-a[1]/c,-a[2]/c,a[0]/c,(a[2]*a[5]-a[4]*a[3])/c,(a[4]*a[1]-a[5]*a[0])/c]};b.apply3dTransform=function(a,c){return[a[0]*c[0]+a[1]*c[1]+a[2]*c[2],a[3]*c[0]+a[4]*c[1]+a[5]*c[2],a[6]*c[0]+a[7]*c[1]+a[8]*c[2]]};b.singularValueDecompose2dScale=function(a){var c=[a[0],a[2],a[1],a[3]],b=a[0]*c[0]+a[1]*c[2],d=a[2]*c[1]+a[3]*c[3],f=(b+d)/2;a=Math.sqrt((b+d)*(b+d)-4*(b*d-(a[2]*c[0]+a[3]*c[2])*(a[0]*c[1]+a[1]*c[3])))/2;c=f-a||1;return[Math.sqrt(f+
+a||1),Math.sqrt(c)]};b.normalizeRect=function(a){var c=a.slice(0);a[0]>a[2]&&(c[0]=a[2],c[2]=a[0]);a[1]>a[3]&&(c[1]=a[3],c[3]=a[1]);return c};b.intersect=function(a,c){function e(a,c){return a-c}var d=[a[0],a[2],c[0],c[2]].sort(e),f=[a[1],a[3],c[1],c[3]].sort(e),g=[];a=b.normalizeRect(a);c=b.normalizeRect(c);if(d[0]===a[0]&&d[1]===c[0]||d[0]===c[0]&&d[1]===a[0])g[0]=d[1],g[2]=d[2];else return!1;if(f[0]===a[1]&&f[1]===c[1]||f[0]===c[1]&&f[1]===a[1])g[1]=f[1],g[3]=f[2];else return!1;return g};b.sign=
+function(a){return 0>a?-1:1};b.concatenateToArray=function(a,c){Array.prototype.push.apply(a,c)};b.prependToArray=function(a,c){Array.prototype.unshift.apply(a,c)};b.extendObj=function(a,c){for(var b in c)a[b]=c[b]};b.getInheritableProperty=function(a,c){for(;a&&!a.has(c);)a=a.get("Parent");return a?a.get(c):null};b.inherit=function(a,c,b){a.prototype=Object.create(c.prototype);a.prototype.constructor=a;for(var d in b)a.prototype[d]=b[d]};b.loadScript=function(a,c){var b=document.createElement("script"),
+d=!1;b.setAttribute("src",a);c&&(b.onload=function(){d||c();d=!0});document.getElementsByTagName("head")[0].appendChild(b)};return b}();PDFJS.PageViewport=function(){function b(a,c,b,d,f,g){this.viewBox=a;this.scale=c;this.rotation=b;this.offsetX=d;this.offsetY=f;var k=(a[2]+a[0])/2,h=(a[3]+a[1])/2,m,l,n;b%=360;switch(0>b?b+360:b){case 180:b=-1;l=m=0;n=1;break;case 90:b=0;l=m=1;n=0;break;case 270:b=0;l=m=-1;n=0;break;default:b=1,l=m=0,n=-1}g&&(l=-l,n=-n);0===b?(d=Math.abs(h-a[1])*c+d,f=Math.abs(k-
+a[0])*c+f,g=Math.abs(a[3]-a[1])*c,a=Math.abs(a[2]-a[0])*c):(d=Math.abs(k-a[0])*c+d,f=Math.abs(h-a[1])*c+f,g=Math.abs(a[2]-a[0])*c,a=Math.abs(a[3]-a[1])*c);this.transform=[b*c,m*c,l*c,n*c,d-b*c*k-l*c*h,f-m*c*k-n*c*h];this.width=g;this.height=a;this.fontScale=c}b.prototype={clone:function(a){a=a||{};var c="scale"in a?a.scale:this.scale,e="rotation"in a?a.rotation:this.rotation;return new b(this.viewBox.slice(),c,e,this.offsetX,this.offsetY,a.dontFlip)},convertToViewportPoint:function(a,c){return p.applyTransform([a,
+c],this.transform)},convertToViewportRectangle:function(a){var c=p.applyTransform([a[0],a[1]],this.transform);a=p.applyTransform([a[2],a[3]],this.transform);return[c[0],c[1],a[0],a[1]]},convertToPdfPoint:function(a,c){return p.applyInverseTransform([a,c],this.transform)}};return b}();var ta=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364];PDFJS.createPromiseCapability=K;(function(){function b(c){this._status=a;this._handlers=[];try{c.call(this,this._resolve.bind(this),this._reject.bind(this))}catch(b){this._reject(b)}}if(u.Promise)"function"!==typeof u.Promise.all&&(u.Promise.all=function(a){var c=0,b=[],e,h,m=new u.Promise(function(a,
+c){e=a;h=c});a.forEach(function(a,d){c++;a.then(function(a){b[d]=a;c--;0===c&&e(b)},h)});0===c&&e(b);return m}),"function"!==typeof u.Promise.resolve&&(u.Promise.resolve=function(a){return new u.Promise(function(c){c(a)})}),"function"!==typeof u.Promise.reject&&(u.Promise.reject=function(a){return new u.Promise(function(c,b){b(a)})}),"function"!==typeof u.Promise.prototype.catch&&(u.Promise.prototype.catch=function(a){return u.Promise.prototype.then(void 0,a)});else{var a=0,c=2,e={handlers:[],running:!1,
+unhandledRejections:[],pendingRejectionCheck:!1,scheduleHandlers:function(c){c._status!=a&&(this.handlers=this.handlers.concat(c._handlers),c._handlers=[],this.running||(this.running=!0,setTimeout(this.runHandlers.bind(this),0)))},runHandlers:function(){for(var a=Date.now()+1;0<this.handlers.length;){var b=this.handlers.shift(),e=b.thisPromise._status,k=b.thisPromise._value;try{1===e?"function"==typeof b.onResolve&&(k=b.onResolve(k)):"function"===typeof b.onReject&&(k=b.onReject(k),e=1,b.thisPromise._unhandledRejection&&
+this.removeUnhandeledRejection(b.thisPromise))}catch(h){e=c,k=h}b.nextPromise._updateStatus(e,k);if(Date.now()>=a)break}0<this.handlers.length?setTimeout(this.runHandlers.bind(this),0):this.running=!1},addUnhandledRejection:function(a){this.unhandledRejections.push({promise:a,time:Date.now()});this.scheduleRejectionCheck()},removeUnhandeledRejection:function(a){a._unhandledRejection=!1;for(var c=0;c<this.unhandledRejections.length;c++)this.unhandledRejections[c].promise===a&&(this.unhandledRejections.splice(c),
+c--)},scheduleRejectionCheck:function(){this.pendingRejectionCheck||(this.pendingRejectionCheck=!0,setTimeout(function(){this.pendingRejectionCheck=!1;for(var a=Date.now(),c=0;c<this.unhandledRejections.length;c++)if(500<a-this.unhandledRejections[c].time){var b=this.unhandledRejections[c].promise._value,e="Unhandled rejection: "+b;b.stack&&(e+="\n"+b.stack);B(e);this.unhandledRejections.splice(c);c--}this.unhandledRejections.length&&this.scheduleRejectionCheck()}.bind(this),500))}};b.all=function(a){function e(a){h._status!==
+c&&(l=[],k(a))}var g,k,h=new b(function(a,c){g=a;k=c}),m=a.length,l=[];if(0===m)return g(l),h;for(var n=0,J=a.length;n<J;++n){var q=a[n],r=function(a){return function(b){h._status!==c&&(l[a]=b,m--,0===m&&g(l))}}(n);b.isPromise(q)?q.then(r,e):r(q)}return h};b.isPromise=function(a){return a&&"function"===typeof a.then};b.resolve=function(a){return new b(function(c){c(a)})};b.reject=function(a){return new b(function(c,b){b(a)})};b.prototype={_status:null,_value:null,_handlers:null,_unhandledRejection:null,
+_updateStatus:function(a,f){1!==this._status&&this._status!==c&&(1==a&&b.isPromise(f)?f.then(this._updateStatus.bind(this,1),this._updateStatus.bind(this,c)):(this._status=a,this._value=f,a===c&&0===this._handlers.length&&(this._unhandledRejection=!0,e.addUnhandledRejection(this)),e.scheduleHandlers(this)))},_resolve:function(a){this._updateStatus(1,a)},_reject:function(a){this._updateStatus(c,a)},then:function(a,c){var g=new b(function(a,c){this.reject=this.resolve=c});this._handlers.push({thisPromise:this,
+onResolve:a,onReject:c,nextPromise:g});e.scheduleHandlers(this);return g},catch:function(a){return this.then(void 0,a)}};u.Promise=b}})();var ya=function(){function b(){this.started={};this.times=[];this.enabled=!0}b.prototype={time:function(a){this.enabled&&(a in this.started&&B("Timer is already running for "+a),this.started[a]=Date.now())},timeEnd:function(a){this.enabled&&(a in this.started||B("Timer has not been started for "+a),this.times.push({name:a,start:this.started[a],end:Date.now()}),
+delete this.started[a])},toString:function(){var a,c,b=this.times,d="",f=0;a=0;for(c=b.length;a<c;++a){var g=b[a].name;g.length>f&&(f=g.length)}a=0;for(c=b.length;a<c;++a){for(var k=b[a],g=k.end-k.start,k=k.name;k.length<f;)k+=" ";d+=k+" "+g+"ms\n"}return d}};return b}();PDFJS.createBlob=function(b,a){if("undefined"!==typeof Blob)return new Blob([b],{type:a});var c=new MozBlobBuilder;c.append(b);return c.getBlob(a)};PDFJS.createObjectURL=function(){return function(b,a){if(!PDFJS.disableCreateObjectURL&&
+"undefined"!==typeof URL&&URL.createObjectURL){var c=PDFJS.createBlob(b,a);return URL.createObjectURL(c)}for(var c="data:"+a+";base64,",e=0,d=b.length;e<d;e+=3)var f=b[e]&255,g=b[e+1]&255,k=b[e+2]&255,c=c+("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="[f>>2]+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="[(f&3)<<4|g>>4]+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="[e+1<d?(g&15)<<2|k>>6:64]+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="[e+
+2<d?k&63:64]);return c}}();$.prototype={on:function(b,a,c){var e=this.actionHandler;e[b]&&D('There is already an actionName called "'+b+'"');e[b]=[a,c]},send:function(b,a,c){this.postMessage({action:b,data:a},c)},sendWithPromise:function(b,a,c){var e=this.callbackIndex++;b={action:b,data:a,callbackId:e};a=K();this.callbacksCapabilities[e]=a;try{this.postMessage(b,c)}catch(d){a.reject(d)}return a.promise},postMessage:function(b,a){a&&this.postMessageTransfers?this.comObj.postMessage(b,a):this.comObj.postMessage(b)}};
+var la=22,za=["Link","Text","Widget"],N=function(){function b(a,b,d){var f=p.getAxialAlignedBoundingBox(b,d);b=f[0];d=f[1];var g=f[2],f=f[3];if(b===g||d===f)return[1,0,0,1,a[0],a[1]];g=(a[2]-a[0])/(g-b);f=(a[3]-a[1])/(f-d);return[g,0,0,f,a[0]-b*g,a[1]-d*f]}function a(a){if(a.data)this.data=a.data;else{var b=a.dict,d=this.data={};d.subtype=b.get("Subtype").name;var f=b.get("Rect")||[0,0,0,0];d.rect=p.normalizeRect(f);d.annotationFlags=b.get("F");f=b.get("C");P(f)&&3===f.length?d.color=f:d.color=[0,
+0,0];if(b.has("BS"))f=b.get("BS"),d.borderWidth=f.has("W")?f.get("W"):1;else if(f=b.get("Border")||[0,0,1],d.borderWidth=f[2]||0,f=f[3],0<d.borderWidth&&f)if(P(f)){var g=f.length;if(0<g){for(var k=!1,h=0,m=0;m<g;m++)if(0<=+f[m])0<f[m]&&h++;else{k=!0;break}if(k||0===h)d.borderWidth=0}}else d.borderWidth=0;var l;f=b.get("AP");X(f)?(f=f.get("N"),X(f)?(b=b.get("AS"))&&f.has(b.name)&&(l=f.get(b.name)):l=f):l=void 0;this.appearance=l;d.hasAppearance=!!this.appearance;d.id=a.ref.num}}a.prototype={getData:function(){return this.data},
+hasHtml:function(){return!1},getHtmlElement:function(a){throw new wa("getHtmlElement() should be implemented in subclass");},getEmptyContainer:function(a,b,d){U&&D("getEmptyContainer() should be called from main thread");d=d||0;b=b||this.data.rect;a=document.createElement(a);a.style.borderWidth=d+"px";var f=b[3]-b[1]-2*d;a.style.width=b[2]-b[0]-2*d+"px";a.style.height=f+"px";return a},isInvisible:function(){var a=this.data;return a&&-1!==za.indexOf(a.subtype)?!1:!!(a&&a.annotationFlags&&a.annotationFlags&
+1)},isViewable:function(){var a=this.data;return!(this.isInvisible()||!a||a.annotationFlags&&a.annotationFlags&34||!a.rect)},isPrintable:function(){var a=this.data;return!(this.isInvisible()||!(a&&a.annotationFlags&&a.annotationFlags&4&&a.rect))},loadResources:function(a){return new Promise(function(b,d){this.appearance.dict.getAsync("Resources").then(function(f){f?(new ObjectLoader(f.map,a,f.xref)).load().then(function(){b(f)},d):b()},d)}.bind(this))},getOperatorList:function(a){if(!this.appearance)return Promise.resolve(new OperatorList);
+var e=this.data,d=this.appearance.dict,f=this.loadResources("ExtGState ColorSpace Pattern Shading XObject Font".split(" ")),g=d.get("BBox")||[0,0,1,1],k=d.get("Matrix")||[1,0,0,1,0,0],h=b(e.rect,g,k),m=this;return f.then(function(b){var n=new OperatorList;n.addOp(F.beginAnnotation,[e.rect,h,k]);return a.getOperatorList(m.appearance,b,n).then(function(){n.addOp(F.endAnnotation,[]);m.appearance.reset();return n})})}};a.getConstructor=function(c,b){if(c){if("Link"===c)return Aa;if("Text"===c)return Ba;
+if("Widget"===c){if(b)return"Tx"===b?Ca:ca}else return a}};a.fromData=function(c){var b=a.getConstructor(c.subtype,c.fieldType);if(b)return new b({data:c})};a.fromRef=function(c,b){var d=c.fetchIfRef(b);if(X(d)){var f=d.get("Subtype");if(f=O(f)?f.name:""){var g=p.getInheritableProperty(d,"FT"),g=O(g)?g.name:"";if(g=a.getConstructor(f,g)){d=new g({dict:d,ref:b});if(d.isViewable()||d.isPrintable())return d;B("unimplemented annotation type: "+f)}}}};a.appendToOperatorList=function(a,b,d,f,g){var k=K();
+d=[];for(var h=0,m=a.length;h<m;++h)("display"===g&&a[h].isViewable()||"print"===g&&a[h].isPrintable())&&d.push(a[h].getOperatorList(f));Promise.all(d).then(function(a){b.addOp(F.beginAnnotations,[]);for(var c=0,d=a.length;c<d;++c)b.addOpList(a[c]);b.addOp(F.endAnnotations,[]);k.resolve()},function(a){k.reject(a)});return k.promise};return a}();PDFJS.Annotation=N;var ca=function(){function b(a){N.call(this,a);if(!a.data){var b=a.dict,d=this.data;d.fieldValue=T(p.getInheritableProperty(b,"V")||"");
+d.alternativeText=T(b.get("TU")||"");d.defaultAppearance=p.getInheritableProperty(b,"DA")||"";var f=p.getInheritableProperty(b,"FT");d.fieldType=O(f)?f.name:"";d.fieldFlags=p.getInheritableProperty(b,"Ff")||0;this.fieldResources=p.getInheritableProperty(b,"DR")||Dict.empty;var f=[],g=b;for(a=a.ref;g;){var b=g.get("Parent"),k=g.getRaw("Parent");if(g=g.get("T"))f.unshift(T(g));else{var g=b.get("Kids"),h,m;h=0;for(m=g.length;h<m;h++){var l=g[h];if(l.num==a.num&&l.gen==a.gen)break}f.unshift("`"+h)}g=
+b;a=k}d.fullName=f.join(".")}}var a=N.prototype;p.inherit(b,N,{isViewable:function(){return"Sig"===this.data.fieldType?(B("unimplemented annotation type: Widget signature"),!1):a.isViewable.call(this)}});return b}(),Ca=function(){function b(a){ca.call(this,a);a.data||(this.data.textAlignment=p.getInheritableProperty(a.dict,"Q"))}p.inherit(b,ca,{hasHtml:function(){return!this.data.hasAppearance&&!!this.data.fieldValue},getHtmlElement:function(a){U&&D("getHtmlElement() shall be called from main thread");
+var c=this.data,b=this.getEmptyContainer("div");b.style.display="table";var d=document.createElement("div");d.textContent=c.fieldValue;d.style.textAlign=["left","center","right"][c.textAlignment];d.style.verticalAlign="middle";d.style.display="table-cell";a=c.fontRefName?a.getData(c.fontRefName):null;var f=d.style;f.fontSize=c.fontSize+"px";f.direction=0>c.fontDirection?"rtl":"ltr";a&&(f.fontWeight=a.black?a.bold?"bolder":"bold":a.bold?"bold":"normal",f.fontStyle=a.italic?"italic":"normal",c=a.loadedName,
+f.fontFamily=(c?'"'+c+'", ':"")+(a.fallbackName||"Helvetica, sans-serif"));b.appendChild(d);return b},getOperatorList:function(a){if(this.appearance)return N.prototype.getOperatorList.call(this,a);var c=new OperatorList,b=this.data;if(!b.defaultAppearance)return Promise.resolve(c);b=new Stream(sa(b.defaultAppearance));return a.getOperatorList(b,this.fieldResources,c).then(function(){return c})}});return b}(),Y=function(){function b(a){N.call(this,a)}p.inherit(b,N,{hasHtml:function(){return!0},highlight:function(){this.highlightElement&&
+this.highlightElement.hasAttribute("hidden")&&this.highlightElement.removeAttribute("hidden")},unhighlight:function(){this.highlightElement&&!this.highlightElement.hasAttribute("hidden")&&this.highlightElement.setAttribute("hidden",!0)},initContainer:function(){for(var a=this.data,c=this.getEmptyContainer("section",a.rect,a.borderWidth),b=c.style.backgroundColor=a.color,d=[],f=0;3>f;++f)d[f]=Math.round(255*b[f]);a.colorCssRgb=p.makeCssRgb(d);a=document.createElement("div");a.className="annotationHighlight";
+a.style.left=a.style.top="-4px";a.style.right=a.style.bottom="-4px";a.setAttribute("hidden",!0);this.highlightElement=a;c.appendChild(this.highlightElement);return c}});return b}(),Ba=function(){function b(a){Y.call(this,a);if(!a.data){a=a.dict;var c=this.data,b=a.get("Contents"),d=a.get("T");c.content=T(b||"");c.title=T(d||"");c.hasAppearance?c.name="NoIcon":(c.rect[1]=c.rect[3]-la,c.rect[2]=c.rect[0]+la,c.name=a.has("Name")?a.get("Name").name:"Note");a.has("C")&&(c.hasBgColor=!0)}}p.inherit(b,Y,
+{getHtmlElement:function(a){U&&D("getHtmlElement() shall be called from main thread");var c=this.data,b=c.rect;10>b[3]-b[1]&&(b[3]=b[1]+10);10>b[2]-b[0]&&(b[2]=b[0]+(b[3]-b[1]));var d=this.initContainer();d.className="annotText";a=document.createElement("img");a.style.height=d.style.height;a.style.width=d.style.width;var f=c.name;a.src=PDFJS.imageResourcesPath+"annotation-"+f.toLowerCase()+".svg";a.alt="[{{type}} Annotation]";a.dataset.l10nId="text_annotation_type";a.dataset.l10nArgs=JSON.stringify({type:f});
+f=document.createElement("div");f.className="annotTextContentWrapper";f.style.left=Math.floor(b[2]-b[0]+5)+"px";f.style.top="-10px";var g=document.createElement("div");g.className="annotTextContent";g.setAttribute("hidden",!0);if(c.hasBgColor){for(var k=c.color,h=[],b=0;3>b;++b){var m=Math.round(255*k[b]);h[b]=Math.round(0.7*(255-m))+m}g.style.backgroundColor=p.makeCssRgb(h)}k=document.createElement("h1");h=document.createElement("p");k.textContent=c.title;if(c.content||c.title){for(var m=document.createElement("span"),
+l=c.content.split(/(?:\r\n?|\n)/),b=0,c=l.length;b<c;++b)m.appendChild(document.createTextNode(l[b])),b<c-1&&m.appendChild(document.createElement("br"));h.appendChild(m);var n=!1,J=function(a){a&&(n=!0);g.hasAttribute("hidden")&&(d.style.zIndex+=1,g.removeAttribute("hidden"))},q=function(a){a&&(n=!1);g.hasAttribute("hidden")||n||(d.style.zIndex-=1,g.setAttribute("hidden",!0))};a.addEventListener("click",function(){n?q(!0):J(!0)},!1);a.addEventListener("mouseover",function(){J()},!1);a.addEventListener("mouseout",
+function(){q()},!1);g.addEventListener("click",function(){q(!0)},!1)}else g.setAttribute("hidden",!0);g.appendChild(k);g.appendChild(h);f.appendChild(g);d.appendChild(a);d.appendChild(f);return d}});return b}(),Aa=function(){function b(a){Y.call(this,a);if(!a.data){var c=a.dict;a=this.data;var b=c.get("A");if(b)if(c=b.get("S").name,"URI"===c){var d=b.get("URI");O(d)?d="/"+d.name:d&&(d=d&&0===d.indexOf("www.")?"http://"+d:d);Z(d,!1)||(d="");a.url=d}else"GoTo"===c?a.dest=b.get("D"):"GoToR"===c?(c=b.get("F"),
+X(c)&&(d=c.get("F")||""),Z(d,!1)||(d=""),a.url=d,a.dest=b.get("D")):"Named"===c?a.action=b.get("N").name:B("unrecognized link type: "+c);else c.has("Dest")&&(d=c.get("Dest"),a.dest=O(d)?d.name:d)}}p.inherit(b,Y,{hasOperatorList:function(){return!1},getHtmlElement:function(a){a=this.initContainer();a.className="annotLink";a.style.borderColor=this.data.colorCssRgb;a.style.borderStyle="solid";var c=document.createElement("a");c.href=c.title=this.data.url||"";a.appendChild(c);return a}});return b}();
+PDFJS.maxImageSize=void 0===PDFJS.maxImageSize?-1:PDFJS.maxImageSize;PDFJS.cMapUrl=void 0===PDFJS.cMapUrl?null:PDFJS.cMapUrl;PDFJS.cMapPacked=void 0===PDFJS.cMapPacked?!1:PDFJS.cMapPacked;PDFJS.disableFontFace=void 0===PDFJS.disableFontFace?!1:PDFJS.disableFontFace;PDFJS.imageResourcesPath=void 0===PDFJS.imageResourcesPath?"":PDFJS.imageResourcesPath;PDFJS.disableWorker=void 0===PDFJS.disableWorker?!1:PDFJS.disableWorker;PDFJS.workerSrc=void 0===PDFJS.workerSrc?null:PDFJS.workerSrc;PDFJS.disableRange=
+void 0===PDFJS.disableRange?!1:PDFJS.disableRange;PDFJS.disableAutoFetch=void 0===PDFJS.disableAutoFetch?!1:PDFJS.disableAutoFetch;PDFJS.pdfBug=void 0===PDFJS.pdfBug?!1:PDFJS.pdfBug;PDFJS.postMessageTransfers=void 0===PDFJS.postMessageTransfers?!0:PDFJS.postMessageTransfers;PDFJS.disableCreateObjectURL=void 0===PDFJS.disableCreateObjectURL?!1:PDFJS.disableCreateObjectURL;PDFJS.disableWebGL=void 0===PDFJS.disableWebGL?!0:PDFJS.disableWebGL;PDFJS.verbosity=void 0===PDFJS.verbosity?PDFJS.VERBOSITY_LEVELS.warnings:
+PDFJS.verbosity;PDFJS.getDocument=function(b,a,c,e){var d,f;"string"===typeof b?b={url:b}:"object"==typeof b&&null!==b&&void 0!==b&&"byteLength"in b?b={data:b}:"object"!==typeof b&&D("Invalid parameter in getDocument, need either Uint8Array, string or a parameter object");b.url||b.data||D("Invalid parameter array, need either .data or .url");var g={};for(d in b)g[d]="url"===d&&"undefined"!==typeof window?ra(window.location.href,b[d]):b[d];b=K();d=K();f=new Da(b,d,a,e);b.promise.then(function(){f.passwordCallback=
+c;f.fetchDocument(g)});return d.promise};var Ea=function(){function b(a,c){this.pdfInfo=a;this.transport=c}b.prototype={get numPages(){return this.pdfInfo.numPages},get fingerprint(){return this.pdfInfo.fingerprint},getPage:function(a){return this.transport.getPage(a)},getPageIndex:function(a){return this.transport.getPageIndex(a)},getDestinations:function(){return this.transport.getDestinations()},getAttachments:function(){return this.transport.getAttachments()},getJavaScript:function(){return this.transport.getJavaScript()},
+getOutline:function(){return this.transport.getOutline()},getMetadata:function(){return this.transport.getMetadata()},getData:function(){return this.transport.getData()},getDownloadInfo:function(){return this.transport.downloadInfoCapability.promise},cleanup:function(){this.transport.startCleanup()},destroy:function(){this.transport.destroy()}};return b}(),Ha=function(){function b(a,c,b){this.pageIndex=a;this.pageInfo=c;this.transport=b;this.stats=new ya;this.stats.enabled=!!u.PDFJS.enableStats;this.commonObjs=
+b.commonObjs;this.objs=new ma;this.pendingDestroy=this.cleanupAfterRender=!1;this.intentStates={}}b.prototype={get pageNumber(){return this.pageIndex+1},get rotate(){return this.pageInfo.rotate},get ref(){return this.pageInfo.ref},get view(){return this.pageInfo.view},getViewport:function(a,c){2>arguments.length&&(c=this.rotate);return new PDFJS.PageViewport(this.view,a,c,0,0)},getAnnotations:function(){if(this.annotationsPromise)return this.annotationsPromise;var a=this.transport.getAnnotations(this.pageIndex);
+return this.annotationsPromise=a},render:function(a){function c(a){var c=f.renderTasks.indexOf(g);0<=c&&f.renderTasks.splice(c,1);k.cleanupAfterRender&&(k.pendingDestroy=!0);k._tryDestroy();a?g.capability.reject(a):g.capability.resolve();b.timeEnd("Rendering");b.timeEnd("Overall")}var b=this.stats;b.time("Overall");this.pendingDestroy=!1;var d="intent"in a?"print"==a.intent?"print":"display":"display";this.intentStates[d]||(this.intentStates[d]={});var f=this.intentStates[d];f.displayReadyCapability||
+(f.receivingOperatorList=!0,f.displayReadyCapability=K(),f.operatorList={fnArray:[],argsArray:[],lastChunk:!1},this.stats.time("Page Request"),this.transport.messageHandler.send("RenderPageRequest",{pageIndex:this.pageNumber-1,intent:d}));var g=new Fa(c,a,this.objs,this.commonObjs,f.operatorList,this.pageNumber);f.renderTasks||(f.renderTasks=[]);f.renderTasks.push(g);a=new Ga(g);var k=this;f.displayReadyCapability.promise.then(function(a){k.pendingDestroy?c():(b.time("Rendering"),g.initalizeGraphics(a),
+g.operatorListChanged())},function(a){c(a)});return a},getTextContent:function(){return this.transport.messageHandler.sendWithPromise("GetTextContent",{pageIndex:this.pageNumber-1})},destroy:function(){this.pendingDestroy=!0;this._tryDestroy()},_tryDestroy:function(){this.pendingDestroy&&!Object.keys(this.intentStates).some(function(a){a=this.intentStates[a];return 0!==a.renderTasks.length||a.receivingOperatorList},this)&&(Object.keys(this.intentStates).forEach(function(a){delete this.intentStates[a]},
+this),this.objs.clear(),this.annotationsPromise=null,this.pendingDestroy=!1)},_startRenderPage:function(a,c){this.intentStates[c].displayReadyCapability.resolve(a)},_renderPageChunk:function(a,c){var b=this.intentStates[c],d,f;d=0;for(f=a.length;d<f;d++)b.operatorList.fnArray.push(a.fnArray[d]),b.operatorList.argsArray.push(a.argsArray[d]);b.operatorList.lastChunk=a.lastChunk;for(d=0;d<b.renderTasks.length;d++)b.renderTasks[d].operatorListChanged();a.lastChunk&&(b.receivingOperatorList=!1,this._tryDestroy())}};
+return b}(),Da=function(){function b(a,b,e,d){this.pdfDataRangeTransport=e;this.workerReadyCapability=b;this.progressCallback=d;this.commonObjs=new ma;this.pageCache=[];this.pagePromises=[];this.downloadInfoCapability=K();this.passwordCallback=null;if(!u.PDFJS.disableWorker&&"undefined"!==typeof Worker){(b=PDFJS.workerSrc)||D("No PDFJS.workerSrc specified");try{var f=new Worker(b),g=new $("main",f);this.messageHandler=g;g.on("test",function(b){b&&b.supportTypedArray?(this.worker=f,b.supportTransfers||
+(PDFJS.postMessageTransfers=!1),this.setupMessageHandler(g),a.resolve()):(u.PDFJS.disableWorker=!0,this.loadFakeWorkerFiles().then(function(){this.setupFakeWorker();a.resolve()}.bind(this)))}.bind(this));var k=new Uint8Array([PDFJS.postMessageTransfers?255:0]);try{g.send("test",k,[k.buffer])}catch(h){W("Cannot use postMessage transfers"),k[0]=0,g.send("test",k)}return}catch(m){W("The worker has been disabled.")}}u.PDFJS.disableWorker=!0;this.loadFakeWorkerFiles().then(function(){this.setupFakeWorker();
+a.resolve()}.bind(this))}b.prototype={destroy:function(){this.pageCache=[];this.pagePromises=[];var a=this;this.messageHandler.sendWithPromise("Terminate",null).then(function(){M.clear();a.worker&&a.worker.terminate()})},loadFakeWorkerFiles:function(){PDFJS.fakeWorkerFilesLoadedCapability||(PDFJS.fakeWorkerFilesLoadedCapability=K(),p.loadScript(PDFJS.workerSrc,function(){PDFJS.fakeWorkerFilesLoadedCapability.resolve()}));return PDFJS.fakeWorkerFilesLoadedCapability.promise},setupFakeWorker:function(){B("Setting up fake worker.");
+var a={postMessage:function(b){a.onmessage({data:b})},terminate:function(){}},b=new $("main",a);this.setupMessageHandler(b);PDFJS.WorkerMessageHandler.setup(b)},setupMessageHandler:function(a){function b(c){a.send("UpdatePassword",c)}this.messageHandler=a;var e=this.pdfDataRangeTransport;e&&(e.addRangeListener(function(b,c){a.send("OnDataRange",{begin:b,chunk:c})}),e.addProgressListener(function(b){a.send("OnDataProgress",{loaded:b})}),a.on("RequestDataRange",function(a){e.requestDataRange(a.begin,
+a.end)},this));a.on("GetDoc",function(a){var b=a.pdfInfo;this.numPages=a.pdfInfo.numPages;this.pdfDocument=a=new Ea(b,this);this.workerReadyCapability.resolve(a)},this);a.on("NeedPassword",function(a){if(this.passwordCallback)return this.passwordCallback(b,ja.NEED_PASSWORD);this.workerReadyCapability.reject(a.exception.message,a.exception)},this);a.on("IncorrectPassword",function(a){if(this.passwordCallback)return this.passwordCallback(b,ja.INCORRECT_PASSWORD);this.workerReadyCapability.reject(a.exception.message,
+a.exception)},this);a.on("InvalidPDF",function(a){this.workerReadyCapability.reject(a.exception.name,a.exception)},this);a.on("MissingPDF",function(a){this.workerReadyCapability.reject(a.exception.message,a.exception)},this);a.on("UnknownError",function(a){this.workerReadyCapability.reject(a.exception.message,a.exception)},this);a.on("DataLoaded",function(a){this.downloadInfoCapability.resolve(a)},this);a.on("StartRenderPage",function(a){var b=this.pageCache[a.pageIndex];b.stats.timeEnd("Page Request");
+b._startRenderPage(a.transparency,a.intent)},this);a.on("RenderPageChunk",function(a){this.pageCache[a.pageIndex]._renderPageChunk(a.operatorList,a.intent)},this);a.on("commonobj",function(a){var b=a[0],c=a[1];if(!this.commonObjs.hasData(b))switch(c){case "Font":a=a[2];var e;if("error"in a){var h=a.error;B("Error during font loading: "+h);this.commonObjs.resolve(b,h);break}else e=new Ia(a);M.bind([e],function(a){this.commonObjs.resolve(b,e)}.bind(this));break;case "FontPath":this.commonObjs.resolve(b,
+a[2]);break;default:h("Got unknown common object type "+c)}},this);a.on("obj",function(a){var b=a[0],c=a[2],e=this.pageCache[a[1]];if(!e.objs.hasData(b))switch(c){case "JpegStream":a=a[3];ua(b,a,e.objs);break;case "Image":a=a[3];e.objs.resolve(b,a);a&&"data"in a&&8E6<a.data.length&&(e.cleanupAfterRender=!0);break;default:D("Got unknown object type "+c)}},this);a.on("DocProgress",function(a){this.progressCallback&&this.progressCallback({loaded:a.loaded,total:a.total})},this);a.on("DocError",function(a){this.workerReadyCapability.reject(a)},
+this);a.on("PageError",function(a){var b=this.pageCache[a.pageNum-1].intentStates[a.intent];b.displayReadyCapability.promise?b.displayReadyCapability.reject(a.error):D(a.error)},this);a.on("JpegDecode",function(a){var b=a[0],c=a[1];return 3!=c&&1!=c?Promise.reject(Error("Only 3 components or 1 component can be returned")):new Promise(function(a,d){var e=new Image;e.onload=function(){var b=e.width,n=e.height,d=b*n,q=4*d,d=new Uint8Array(d*c),r=ga(b,n).getContext("2d");r.drawImage(e,0,0);var r=r.getImageData(0,
+0,b,n).data,f,h;if(3==c)for(h=f=0;f<q;f+=4,h+=3)d[h]=r[f],d[h+1]=r[f+1],d[h+2]=r[f+2];else if(1==c)for(h=f=0;f<q;f+=4,h++)d[h]=r[f];a({data:d,width:b,height:n})};e.onerror=function(){d(Error("JpegDecode failed to load image"))};e.src=b})})},fetchDocument:function(a){a.disableAutoFetch=PDFJS.disableAutoFetch;a.chunkedViewerLoading=!!this.pdfDataRangeTransport;this.messageHandler.send("GetDocRequest",{source:a,disableRange:PDFJS.disableRange,maxImageSize:PDFJS.maxImageSize,cMapUrl:PDFJS.cMapUrl,cMapPacked:PDFJS.cMapPacked,
+disableFontFace:PDFJS.disableFontFace,disableCreateObjectURL:PDFJS.disableCreateObjectURL,verbosity:PDFJS.verbosity})},getData:function(){return this.messageHandler.sendWithPromise("GetData",null)},getPage:function(a,b){if(0>=a||a>this.numPages||(a|0)!==a)return Promise.reject(Error("Invalid page request"));var e=a-1;if(e in this.pagePromises)return this.pagePromises[e];var d=this.messageHandler.sendWithPromise("GetPage",{pageIndex:e}).then(function(a){a=new Ha(e,a,this);return this.pageCache[e]=
+a}.bind(this));return this.pagePromises[e]=d},getPageIndex:function(a){return this.messageHandler.sendWithPromise("GetPageIndex",{ref:a})},getAnnotations:function(a){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:a})},getDestinations:function(){return this.messageHandler.sendWithPromise("GetDestinations",null)},getAttachments:function(){return this.messageHandler.sendWithPromise("GetAttachments",null)},getJavaScript:function(){return this.messageHandler.sendWithPromise("GetJavaScript",
+null)},getOutline:function(){return this.messageHandler.sendWithPromise("GetOutline",null)},getMetadata:function(){return this.messageHandler.sendWithPromise("GetMetadata",null).then(function(a){return{info:a[0],metadata:a[1]?new PDFJS.Metadata(a[1]):null}})},startCleanup:function(){this.messageHandler.sendWithPromise("Cleanup",null).then(function(){for(var a=0,b=this.pageCache.length;a<b;a++){var e=this.pageCache[a];e&&e.destroy()}this.commonObjs.clear();M.clear()}.bind(this))}};return b}(),ma=function(){function b(){this.objs=
+{}}b.prototype={ensureObj:function(a){if(this.objs[a])return this.objs[a];var b={capability:K(),data:null,resolved:!1};return this.objs[a]=b},get:function(a,b){if(b)return this.ensureObj(a).capability.promise.then(b),null;var e=this.objs[a];e&&e.resolved||D("Requesting object that isn't resolved yet "+a);return e.data},resolve:function(a,b){var e=this.ensureObj(a);e.resolved=!0;e.data=b;e.capability.resolve(b)},isResolved:function(a){var b=this.objs;return b[a]?b[a].resolved:!1},hasData:function(a){return this.isResolved(a)},
+getData:function(a){var b=this.objs;return b[a]&&b[a].resolved?b[a].data:null},clear:function(){this.objs={}}};return b}(),Ga=function(){function b(a){this.internalRenderTask=a;this.promise=this.internalRenderTask.capability.promise}b.prototype={cancel:function(){this.internalRenderTask.cancel()},then:function(a,b){return this.promise.then(a,b)}};return b}(),Fa=function(){function b(a,b,e,d,f,g){this.callback=a;this.params=b;this.objs=e;this.commonObjs=d;this.operatorListIdx=null;this.operatorList=
+f;this.pageNumber=g;this.running=!1;this.graphicsReadyCallback=null;this.cancelled=this.graphicsReady=!1;this.capability=K();this._continueBound=this._continue.bind(this);this._scheduleNextBound=this._scheduleNext.bind(this);this._nextBound=this._next.bind(this)}b.prototype={initalizeGraphics:function(a){if(!this.cancelled){PDFJS.pdfBug&&"StepperManager"in u&&u.StepperManager.enabled&&(this.stepper=u.StepperManager.create(this.pageNumber-1),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=
+this.stepper.getNextBreakPoint());var b=this.params;this.gfx=new na(b.canvasContext,this.commonObjs,this.objs,b.imageLayer);this.gfx.beginDrawing(b.viewport,a);this.operatorListIdx=0;this.graphicsReady=!0;this.graphicsReadyCallback&&this.graphicsReadyCallback()}},cancel:function(){this.running=!1;this.cancelled=!0;this.callback("cancelled")},operatorListChanged:function(){this.graphicsReady?(this.stepper&&this.stepper.updateOperatorList(this.operatorList),this.running||this._continue()):this.graphicsReadyCallback||
+(this.graphicsReadyCallback=this._continueBound)},_continue:function(){this.running=!0;this.cancelled||(this.params.continueCallback?this.params.continueCallback(this._scheduleNextBound):this._scheduleNext())},_scheduleNext:function(){window.requestAnimationFrame(this._nextBound)},_next:function(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=
+!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),this.callback())))}};return b}();PDFJS.Metadata=function(){function b(a){return a.replace(/>\\376\\377([^<]+)/g,function(a,b){for(var c=b.replace(/\\([0-3])([0-7])([0-7])/g,function(a,b,c,d){return String.fromCharCode(64*b+8*c+1*d)}),g="",k=0;k<c.length;k+=2)var h=256*c.charCodeAt(k)+c.charCodeAt(k+1),g=g+("&#x"+(65536+h).toString(16).substring(1)+";");return">"+g})}function a(a){"string"===typeof a?(a=b(a),a=(new DOMParser).parseFromString(a,
+"application/xml")):a instanceof Document||D("Metadata: Invalid metadata object");this.metaDocument=a;this.metadata={};this.parse()}a.prototype={parse:function(){var a=this.metaDocument.documentElement;if("rdf:rdf"!==a.nodeName.toLowerCase())for(a=a.firstChild;a&&"rdf:rdf"!==a.nodeName.toLowerCase();)a=a.nextSibling;var b=a?a.nodeName.toLowerCase():null;if(a&&"rdf:rdf"===b&&a.hasChildNodes()){var a=a.childNodes,d,f,g,k,h,m;g=0;for(h=a.length;g<h;g++)if(b=a[g],"rdf:description"===b.nodeName.toLowerCase())for(k=
+0,m=b.childNodes.length;k<m;k++)"#text"!==b.childNodes[k].nodeName.toLowerCase()&&(d=b.childNodes[k],f=d.nodeName.toLowerCase(),this.metadata[f]=d.textContent.trim())}},get:function(a){return this.metadata[a]||null},has:function(a){return"undefined"!==typeof this.metadata[a]}};return a}();var L=function(){var b={};return{getCanvas:function(a,c,e,d){a in b?(a=b[a],a.canvas.width=c,a.canvas.height=e,a.context.setTransform(1,0,0,1,0,0)):(c=ga(c,e),e=c.getContext("2d"),d&&ha(e),b[a]=a={canvas:c,context:e});
+return a},clear:function(){b={}}}}(),oa=function(){function b(a){this.alphaIsShape=!1;this.fontSize=0;this.fontSizeScale=1;this.textMatrix=ka;this.textMatrixScale=1;this.fontMatrix=ba;this.wordSpacing=this.charSpacing=this.lineY=this.lineX=this.y=this.x=this.leading=0;this.textHScale=1;this.textRenderingMode=R;this.textRise=0;this.strokeColor=this.fillColor="#000000";this.lineWidth=this.strokeAlpha=this.fillAlpha=1;this.activeSMask=null;this.old=a}b.prototype={clone:function(){return Object.create(this)},
+setCurrentPoint:function(a,b){this.x=a;this.y=b}};return b}(),na=function(){function b(a,b,c,d){this.ctx=a;this.current=new oa;this.stateStack=[];this.pendingClip=null;this.pendingEOFill=!1;this.xobjs=this.res=null;this.commonObjs=b;this.objs=c;this.imageLayer=d;this.groupStack=[];this.baseTransform=this.processingType3=null;this.baseTransformStack=[];this.groupLevel=0;this.smaskStack=[];this.smaskCounter=0;this.tempSMask=null;a&&ha(a)}function a(a,b){if("undefined"!==typeof ImageData&&b instanceof
+ImageData)a.putImageData(b,0,0);else{var c=b.height,d=b.width,e=c/16,f=Math.floor(e),e=Math.ceil(e),c=c-16*f,g=a.createImageData(d,16),h=0,k,m=b.data,w=g.data,y,t,v;if(b.kind===Q){var p=m.byteLength,w=PDFJS.hasCanvasTypedArrays?new Uint32Array(w.buffer):new xa(w),E=w.length,H=d+7>>3,z=PDFJS.isLittleEndian||!PDFJS.hasCanvasTypedArrays?4278190080:255;for(y=0;y<e;y++){v=y<f?16:c;for(t=k=0;t<v;t++){for(var C=p-h,u=0,C=C>H?d:8*C-7,B=C&-8,G=0,I=0;u<B;u+=8)I=m[h++],w[k++]=I&128?4294967295:z,w[k++]=I&64?
+4294967295:z,w[k++]=I&32?4294967295:z,w[k++]=I&16?4294967295:z,w[k++]=I&8?4294967295:z,w[k++]=I&4?4294967295:z,w[k++]=I&2?4294967295:z,w[k++]=I&1?4294967295:z;for(;u<C;u++)0===G&&(I=m[h++],G=128),w[k++]=I&G?4294967295:z,G>>=1}for(;k<E;)w[k++]=0;a.putImageData(g,0,16*y)}}else if(b.kind===ea){t=0;v=64*d;for(y=0;y<f;y++)w.set(m.subarray(h,h+v)),h+=v,a.putImageData(g,0,t),t+=16;y<e&&(w.set(m.subarray(h,h+d*c*4)),a.putImageData(g,0,t))}else if(b.kind===da)for(v=16*d,y=0;y<e;y++){y>=f&&(v=c,v*=d);k=0;for(t=
+v;t--;)w[k++]=m[h++],w[k++]=m[h++],w[k++]=m[h++],w[k++]=255;a.putImageData(g,0,16*y)}else D("bad image kind: "+b.kind)}}function c(a,b){for(var c=b.height,d=b.width,e=c/16,f=Math.floor(e),e=Math.ceil(e),c=c-16*f,g=a.createImageData(d,16),h=0,k=b.data,m=g.data,w=0;w<e;w++){for(var y=w<f?16:c,t=3,v=0;v<y;v++)for(var p=0,E=0;E<d;E++){if(!p)var H=k[h++],p=128;m[t]=H&p?0:255;t+=4;p>>=1}a.putImageData(g,0,16*w)}}function e(a,b){for(var c="strokeStyle fillStyle fillRule globalAlpha lineWidth lineCap lineJoin miterLimit globalCompositeOperation font".split(" "),
+d=0,e=c.length;d<e;d++){var f=c[d];f in a&&(b[f]=a[f])}"setLineDash"in a?(b.setLineDash(a.getLineDash()),b.lineDashOffset=a.lineDashOffset):"mozDash"in a&&(b.mozDash=a.mozDash,b.mozDashOffset=a.mozDashOffset)}function d(a,b,c,d,e,f){f=f?function(a,b,c,l){for(var n=l.length,d=3;d<n;d+=4){var e=l[d]/255;if(0===e)l[d-3]=a,l[d-2]=b,l[d-1]=c;else if(1>e){var f=1-e;l[d-3]=l[d-3]*e+a*f|0;l[d-2]=l[d-2]*e+b*f|0;l[d-1]=l[d-1]*e+c*f|0}}}.bind(null,f[0],f[1],f[2]):function(){};e="Luminosity"===e?function(a,b){for(var c=
+a.length,l=3;l<c;l+=4)b[l]=b[l]*(77*a[l-3]+152*a[l-2]+28*a[l-1]|0)>>16}:function(a,b){for(var c=a.length,l=3;l<c;l+=4)b[l]=b[l]*a[l]/255|0};for(var g=Math.min(d,Math.ceil(65536/c)),h=0;h<d;h+=g){var k=Math.min(g,d-h),m=a.getImageData(0,h,c,k),k=b.getImageData(0,h,c,k);f(m.data);e(m.data,k.data);a.putImageData(k,0,h)}}var f=["butt","round","square"],g=["miter","round","bevel"],k={},h={};b.prototype={beginDrawing:function(a,b){var c=this.ctx.canvas.width,d=this.ctx.canvas.height;b?this.ctx.clearRect(0,
+0,c,d):(this.ctx.mozOpaque=!0,this.ctx.save(),this.ctx.fillStyle="rgb(255, 255, 255)",this.ctx.fillRect(0,0,c,d),this.ctx.restore());c=a.transform;this.ctx.save();this.ctx.transform.apply(this.ctx,c);this.baseTransform=this.ctx.mozCurrentTransform.slice();this.imageLayer&&this.imageLayer.beginLayout()},executeOperatorList:function(a,b,c,d){var e=a.argsArray;a=a.fnArray;b=b||0;var f=e.length;if(f==b)return b;for(var g=Date.now()+15,h=this.commonObjs,k=this.objs,m;;){if(d&&b===d.nextBreakPoint)return d.breakIt(b,
+c),b;m=a[b];if(m!==F.dependency)this[m].apply(this,e[b]);else{m=e[b];for(var w=0,y=m.length;w<y;w++){var t=m[w],v="g_"==t.substring(0,2);if(!v&&!k.isResolved(t))return k.get(t,c),b;if(v&&!h.isResolved(t))return h.get(t,c),b}}b++;if(b==f)return b;if(c&&Date.now()>g)return c(),b}},endDrawing:function(){this.ctx.restore();L.clear();V.clear();this.imageLayer&&this.imageLayer.endLayout()},setLineWidth:function(a){this.current.lineWidth=a;this.ctx.lineWidth=a},setLineCap:function(a){this.ctx.lineCap=f[a]},
+setLineJoin:function(a){this.ctx.lineJoin=g[a]},setMiterLimit:function(a){this.ctx.miterLimit=a},setDash:function(a,b){var c=this.ctx;"setLineDash"in c?(c.setLineDash(a),c.lineDashOffset=b):(c.mozDash=a,c.mozDashOffset=b)},setRenderingIntent:function(a){},setFlatness:function(a){},setGState:function(a){for(var b=0,c=a.length;b<c;b++){var d=a[b],e=d[1];switch(d[0]){case "LW":this.setLineWidth(e);break;case "LC":this.setLineCap(e);break;case "LJ":this.setLineJoin(e);break;case "ML":this.setMiterLimit(e);
+break;case "D":this.setDash(e[0],e[1]);break;case "RI":this.setRenderingIntent(e);break;case "FL":this.setFlatness(e);break;case "Font":this.setFont(e[0],e[1]);break;case "CA":this.current.strokeAlpha=d[1];break;case "ca":this.current.fillAlpha=d[1];this.ctx.globalAlpha=d[1];break;case "BM":e&&e.name&&"Normal"!==e.name?(d=e.name.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()}).substring(1),this.ctx.globalCompositeOperation=d,this.ctx.globalCompositeOperation!==d&&B('globalCompositeOperation "'+
+d+'" is not supported')):this.ctx.globalCompositeOperation="source-over";break;case "SMask":this.current.activeSMask&&this.endSMaskGroup(),this.current.activeSMask=e?this.tempSMask:null,this.current.activeSMask&&this.beginSMaskGroup(),this.tempSMask=null}}},beginSMaskGroup:function(){var a=this.current.activeSMask,b=L.getCanvas("smaskGroupAt"+this.groupLevel,a.canvas.width,a.canvas.height,!0),c=this.ctx,d=c.mozCurrentTransform;this.ctx.save();b=b.context;b.scale(1/a.scaleX,1/a.scaleY);b.translate(-a.offsetX,
+-a.offsetY);b.transform.apply(b,d);e(c,b);this.ctx=b;this.setGState([["BM","Normal"],["ca",1],["CA",1]]);this.groupStack.push(c);this.groupLevel++},endSMaskGroup:function(){var a=this.ctx;this.groupLevel--;this.ctx=this.groupStack.pop();var b=this.ctx,c=this.current.activeSMask,e=c.canvas,f=c.context;b.setTransform(c.scaleX,0,0,c.scaleY,c.offsetX,c.offsetY);var g=c.backdrop||null;V.isEnabled?(a=V.composeSMask(a.canvas,e,{subtype:c.subtype,backdrop:g}),b.setTransform(1,0,0,1,0,0),b.drawImage(a,c.offsetX,
+c.offsetY)):(d(f,a,e.width,e.height,c.subtype,g),b.drawImage(e,0,0));this.ctx.restore()},save:function(){this.ctx.save();var a=this.current;this.stateStack.push(a);this.current=a.clone();this.current.activeSMask&&(this.current.activeSMask=null)},restore:function(){var a=this.stateStack.pop();a&&(this.current.activeSMask&&this.endSMaskGroup(),this.current=a,this.ctx.restore())},transform:function(a,b,c,d,e,f){this.ctx.transform(a,b,c,d,e,f)},constructPath:function(a,b){for(var c=this.ctx,d=this.current,
+e=d.x,f=d.y,g=0,h=0,k=a.length;g<k;g++)switch(a[g]|0){case F.moveTo:e=b[h++];f=b[h++];c.moveTo(e,f);break;case F.lineTo:e=b[h++];f=b[h++];c.lineTo(e,f);break;case F.curveTo:e=b[h+4];f=b[h+5];c.bezierCurveTo(b[h],b[h+1],b[h+2],b[h+3],e,f);h+=6;break;case F.curveTo2:c.bezierCurveTo(e,f,b[h],b[h+1],b[h+2],b[h+3]);e=b[h+2];f=b[h+3];h+=4;break;case F.curveTo3:e=b[h+2];f=b[h+3];c.bezierCurveTo(b[h],b[h+1],e,f,e,f);h+=4;break;case F.closePath:c.closePath()}d.setCurrentPoint(e,f)},closePath:function(){this.ctx.closePath()},
+rectangle:function(a,b,c,d){0===c&&(c=this.getSinglePixelWidth());0===d&&(d=this.getSinglePixelWidth());this.ctx.rect(a,b,c,d)},stroke:function(a){a="undefined"!==typeof a?a:!0;var b=this.ctx,c=this.current.strokeColor;0===this.current.lineWidth&&(b.lineWidth=this.getSinglePixelWidth());b.globalAlpha=this.current.strokeAlpha;c&&c.hasOwnProperty("type")&&"Pattern"===c.type?(b.save(),b.strokeStyle=c.getPattern(b,this),b.stroke(),b.restore()):b.stroke();a&&this.consumePath();b.globalAlpha=this.current.fillAlpha},
+closeStroke:function(){this.closePath();this.stroke()},fill:function(a){a="undefined"!==typeof a?a:!0;var b=this.ctx,c=this.current.fillColor,d=!1;c&&c.hasOwnProperty("type")&&"Pattern"===c.type&&(b.save(),b.fillStyle=c.getPattern(b,this),d=!0);if(this.pendingEOFill){if(void 0!==b.mozFillRule)b.mozFillRule="evenodd",b.fill(),b.mozFillRule="nonzero";else try{b.fill("evenodd")}catch(e){b.fill()}this.pendingEOFill=!1}else b.fill();d&&b.restore();a&&this.consumePath()},eoFill:function(){this.pendingEOFill=
+!0;this.fill()},fillStroke:function(){this.fill(!1);this.stroke(!1);this.consumePath()},eoFillStroke:function(){this.pendingEOFill=!0;this.fillStroke()},closeFillStroke:function(){this.closePath();this.fillStroke()},closeEOFillStroke:function(){this.pendingEOFill=!0;this.closePath();this.fillStroke()},endPath:function(){this.consumePath()},clip:function(){this.pendingClip=k},eoClip:function(){this.pendingClip=h},beginText:function(){this.current.textMatrix=ka;this.current.textMatrixScale=1;this.current.x=
+this.current.lineX=0;this.current.y=this.current.lineY=0},endText:function(){var a=this.pendingTextPaths,b=this.ctx;if(void 0===a)b.beginPath();else{b.save();b.beginPath();for(var c=0;c<a.length;c++){var d=a[c];b.setTransform.apply(b,d.transform);b.translate(d.x,d.y);d.addToPath(b,d.fontSize)}b.restore();b.clip();b.beginPath();delete this.pendingTextPaths}},setCharSpacing:function(a){this.current.charSpacing=a},setWordSpacing:function(a){this.current.wordSpacing=a},setHScale:function(a){this.current.textHScale=
+a/100},setLeading:function(a){this.current.leading=-a},setFont:function(a,b){var c=this.commonObjs.get(a),d=this.current;c||D("Can't find font for "+a);d.fontMatrix=c.fontMatrix?c.fontMatrix:ba;0!==d.fontMatrix[0]&&0!==d.fontMatrix[3]||B("Invalid font matrix for font "+a);0>b?(b=-b,d.fontDirection=-1):d.fontDirection=1;this.current.font=c;this.current.fontSize=b;if(!c.isType3Font){var d=c.black?c.bold?"bolder":"bold":c.bold?"bold":"normal",e=c.italic?"italic":"normal",c='"'+(c.loadedName||"sans-serif")+
+'", '+c.fallbackName,f=16<=b?b:16;this.current.fontSizeScale=16!=f?1:b/16;this.ctx.font=e+" "+d+" "+f+"px "+c}},setTextRenderingMode:function(a){this.current.textRenderingMode=a},setTextRise:function(a){this.current.textRise=a},moveText:function(a,b){this.current.x=this.current.lineX+=a;this.current.y=this.current.lineY+=b},setLeadingMoveText:function(a,b){this.setLeading(-b);this.moveText(a,b)},setTextMatrix:function(a,b,c,d,e,f){this.current.textMatrix=[a,b,c,d,e,f];this.current.textMatrixScale=
+Math.sqrt(a*a+b*b);this.current.x=this.current.lineX=0;this.current.y=this.current.lineY=0},nextLine:function(){this.moveText(0,this.current.leading)},paintChar:function(a,b,c){var d=this.ctx,e=this.current,f=e.font,h=e.textRenderingMode,e=e.fontSize/e.fontSizeScale,g=h&3,h=!!(h&4),k;if(f.disableFontFace||h)k=f.getPathGenerator(this.commonObjs,a);f.disableFontFace?(d.save(),d.translate(b,c),d.beginPath(),k(d,e),g!==R&&2!==g||d.fill(),1!==g&&2!==g||d.stroke(),d.restore()):(g!==R&&2!==g||d.fillText(a,
+b,c),1!==g&&2!==g||d.strokeText(a,b,c));h&&(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:d.mozCurrentTransform,x:b,y:c,fontSize:e,addToPath:k})},get isFontSubpixelAAEnabled(){var a=document.createElement("canvas").getContext("2d");a.scale(1.5,1);a.fillText("I",0,10);for(var a=a.getImageData(0,0,10,10).data,b=!1,c=3;c<a.length;c+=4)if(0<a[c]&&255>a[c]){b=!0;break}return S(this,"isFontSubpixelAAEnabled",b)},showText:function(a){var b=this.current,c=b.font;if(c.isType3Font)return this.showType3Text(a);
+var d=b.fontSize;if(0!==d){var e=this.ctx,f=b.fontSizeScale,h=b.charSpacing,g=b.wordSpacing,k=b.fontDirection,m=b.textHScale*k,w=a.length,y=c.vertical,t=c.defaultVMetrics,v=d*b.fontMatrix[0],p=b.textRenderingMode===R&&!c.disableFontFace;e.save();e.transform.apply(e,b.textMatrix);e.translate(b.x,b.y+b.textRise);0<k?e.scale(m,-1):e.scale(m,1);var E=b.lineWidth,u=b.textMatrixScale,E=0===u||0===E?this.getSinglePixelWidth():E/u;1!=f&&(e.scale(f,f),E/=f);e.lineWidth=E;for(u=E=0;u<w;++u){var z=a[u];if(null===
+z)E+=k*g;else if("number"==typeof z)E+=-z*d*0.001;else{var C=!1,D=z.fontChar,B=z.accent,G,I=z.width;if(y){var F;G=z.vmetric||t;F=z.vmetric?G[1]:0.5*I;F=-F*v;z=G[2]*v;I=G?-G[0]:I;G=F/f;z=(E+z)/f}else G=E/f,z=0;c.remeasure&&0<I&&this.isFontSubpixelAAEnabled&&(C=1E3*e.measureText(D).width/d*f,F=I/C,C=!0,e.save(),e.scale(F,1),G/=F);p&&!B?e.fillText(D,G,z):(this.paintChar(D,G,z),B&&(D=G+B.offset.x/f,G=z-B.offset.y/f,this.paintChar(B.fontChar,D,G)));E+=I*v+h*k;C&&e.restore()}}y?b.y-=E*m:b.x+=E*m;e.restore()}},
+showType3Text:function(a){var b=this.ctx,c=this.current,d=c.font,e=c.fontSize,f=c.fontDirection,h=c.charSpacing,g=c.wordSpacing,k=c.textHScale*f,m=c.fontMatrix||ba,w=a.length,y,t;if(0!==e){b.save();b.transform.apply(b,c.textMatrix);b.translate(c.x,c.y);b.scale(k,1);for(y=0;y<w;++y)t=a[y],null===t?(this.ctx.translate(g,0),c.x+=g*k):("number"==typeof t?(t=0.001*-t*e,this.ctx.translate(t,0)):(this.processingType3=t,this.save(),b.scale(e,e),b.transform.apply(b,m),this.executeOperatorList(d.charProcOperatorList[t.operatorListId]),
+this.restore(),t=(p.applyTransform([t.width,0],m)[0]*e+h)*f,b.translate(t,0)),c.x+=t*k);b.restore();this.processingType3=null}},setCharWidth:function(a,b){},setCharWidthAndBounds:function(a,b,c,d,e,f){this.rectangle(c,d,e-c,f-d);this.clip();this.endPath()},getColorN_Pattern:function(a){return"TilingPattern"==a[0]?new Ja(a,a[1],this.ctx,this.objs,this.commonObjs,this.baseTransform):ia(a)},setStrokeColorN:function(){this.current.strokeColor=this.getColorN_Pattern(arguments)},setFillColorN:function(){this.current.fillColor=
+this.getColorN_Pattern(arguments)},setStrokeRGBColor:function(a,b,c){var d=p.makeCssRgb(arguments);this.ctx.strokeStyle=d;this.current.strokeColor=d},setFillRGBColor:function(a,b,c){var d=p.makeCssRgb(arguments);this.ctx.fillStyle=d;this.current.fillColor=d},shadingFill:function(a){var b=this.ctx;this.save();a=ia(a);b.fillStyle=a.getPattern(b,this,!0);var c=b.mozCurrentTransformInverse;if(c){var b=b.canvas,d=b.width,e=b.height,b=p.applyTransform([0,0],c);a=p.applyTransform([0,e],c);var f=p.applyTransform([d,
+0],c),h=p.applyTransform([d,e],c),c=Math.min(b[0],a[0],f[0],h[0]),d=Math.min(b[1],a[1],f[1],h[1]),e=Math.max(b[0],a[0],f[0],h[0]),b=Math.max(b[1],a[1],f[1],h[1]);this.ctx.fillRect(c,d,e-c,b-d)}else this.ctx.fillRect(-1E10,-1E10,2E10,2E10);this.restore()},beginInlineImage:function(){D("Should not call beginInlineImage")},beginImageData:function(){D("Should not call beginImageData")},paintFormXObjectBegin:function(a,b){this.save();this.baseTransformStack.push(this.baseTransform);a&&P(a)&&6==a.length&&
+this.transform.apply(this,a);this.baseTransform=this.ctx.mozCurrentTransform;b&&P(b)&&4==b.length&&(this.rectangle(b[0],b[1],b[2]-b[0],b[3]-b[1]),this.clip(),this.endPath())},paintFormXObjectEnd:function(){this.restore();this.baseTransform=this.baseTransformStack.pop()},beginGroup:function(a){this.save();var b=this.ctx;a.isolated||W("TODO: Support non-isolated groups.");a.knockout&&B("Knockout groups not supported.");var c=b.mozCurrentTransform;a.matrix&&b.transform.apply(b,a.matrix);a.bbox||D("Bounding box is required.");
+var d=p.getAxialAlignedBoundingBox(a.bbox,b.mozCurrentTransform),d=p.intersect(d,[0,0,b.canvas.width,b.canvas.height])||[0,0,0,0],f=Math.floor(d[0]),h=Math.floor(d[1]),g=Math.max(Math.ceil(d[2])-f,1),k=Math.max(Math.ceil(d[3])-h,1),m=d=1;4096<g&&(d=g/4096,g=4096);4096<k&&(m=k/4096,k=4096);var A="groupAt"+this.groupLevel;a.smask&&(A+="_smask_"+this.smaskCounter++%2);g=L.getCanvas(A,g,k,!0);k=g.context;k.scale(1/d,1/m);k.translate(-f,-h);k.transform.apply(k,c);a.smask?this.smaskStack.push({canvas:g.canvas,
+context:k,offsetX:f,offsetY:h,scaleX:d,scaleY:m,subtype:a.smask.subtype,backdrop:a.smask.backdrop}):(b.setTransform(1,0,0,1,0,0),b.translate(f,h),b.scale(d,m));e(b,k);this.ctx=k;this.setGState([["BM","Normal"],["ca",1],["CA",1]]);this.groupStack.push(b);this.groupLevel++},endGroup:function(a){this.groupLevel--;var b=this.ctx;this.ctx=this.groupStack.pop();void 0!==this.ctx.imageSmoothingEnabled?this.ctx.imageSmoothingEnabled=!1:this.ctx.mozImageSmoothingEnabled=!1;a.smask?this.tempSMask=this.smaskStack.pop():
+this.ctx.drawImage(b.canvas,0,0);this.restore()},beginAnnotations:function(){this.save();this.current=new oa},endAnnotations:function(){this.restore()},beginAnnotation:function(a,b,c){this.save();a&&P(a)&&4==a.length&&(this.rectangle(a[0],a[1],a[2]-a[0],a[3]-a[1]),this.clip(),this.endPath());this.transform.apply(this,b);this.transform.apply(this,c)},endAnnotation:function(){this.restore()},paintJpegXObject:function(a,b,c){var d=this.objs.get(a);if(d){this.save();var e=this.ctx;e.scale(1/b,-1/c);e.drawImage(d,
+0,0,d.width,d.height,0,-c,b,c);this.imageLayer&&(d=e.mozCurrentTransformInverse,e=this.getCanvasPosition(0,0),this.imageLayer.appendImage({objId:a,left:e[0],top:e[1],width:b/d[0],height:c/d[3]}));this.restore()}else B("Dependent image isn't ready yet")},paintImageMaskXObject:function(a){var b=this.ctx,d=a.width,e=a.height,f=this.processingType3;!f||"compiled"in f||(f.compiled=1E3>=d&&1E3>=e?va({data:a.data,width:d,height:e}):null);f&&f.compiled?f.compiled(b):(b=L.getCanvas("maskCanvas",d,e),f=b.context,
+f.save(),c(f,a),f.globalCompositeOperation="source-in",a=this.current.fillColor,f.fillStyle=a&&a.hasOwnProperty("type")&&"Pattern"===a.type?a.getPattern(f,this):a,f.fillRect(0,0,d,e),f.restore(),this.paintInlineImageXObject(b.canvas))},paintImageMaskXObjectRepeat:function(a,b,d,e){var f=a.width,h=a.height,g=this.ctx,k=L.getCanvas("maskCanvas",f,h),m=k.context;m.save();c(m,a);m.globalCompositeOperation="source-in";a=this.current.fillColor;m.fillStyle=a&&a.hasOwnProperty("type")&&"Pattern"===a.type?
+a.getPattern(m,this):a;m.fillRect(0,0,f,h);m.restore();m=0;for(a=e.length;m<a;m+=2)g.save(),g.transform(b,0,0,d,e[m],e[m+1]),g.scale(1,-1),g.drawImage(k.canvas,0,0,f,h,0,-1,1,1),g.restore()},paintImageMaskXObjectGroup:function(a){for(var b=this.ctx,d=0,e=a.length;d<e;d++){var f=a[d],h=f.width,g=f.height,k=L.getCanvas("maskCanvas",h,g),m=k.context;m.save();c(m,f);m.globalCompositeOperation="source-in";var A=this.current.fillColor;m.fillStyle=A&&A.hasOwnProperty("type")&&"Pattern"===A.type?A.getPattern(m,
+this):A;m.fillRect(0,0,h,g);m.restore();b.save();b.transform.apply(b,f.transform);b.scale(1,-1);b.drawImage(k.canvas,0,0,h,g,0,-1,1,1);b.restore()}},paintImageXObject:function(a){(a=this.objs.get(a))?this.paintInlineImageXObject(a):B("Dependent image isn't ready yet")},paintImageXObjectRepeat:function(a,b,c,d){if(a=this.objs.get(a)){for(var e=a.width,f=a.height,h=[],g=0,k=d.length;g<k;g+=2)h.push({transform:[b,0,0,c,d[g],d[g+1]],x:0,y:0,w:e,h:f});this.paintInlineImageXObjectGroup(a,h)}else B("Dependent image isn't ready yet")},
+paintInlineImageXObject:function(b){var c=b.width,d=b.height,e=this.ctx;this.save();e.scale(1/c,-1/d);var f=e.mozCurrentTransformInverse,h=f[0],g=f[1],h=Math.max(Math.sqrt(h*h+g*g),1),g=f[2],k=f[3],g=Math.max(Math.sqrt(g*g+k*k),1),m;if(b instanceof HTMLElement||!b.data)k=b;else{m=L.getCanvas("inlineImage",c,d);var A=m.context;a(A,b);k=m.canvas}for(var w=c,y=d,t="prescale1";2<h&&1<w||2<g&&1<y;){var v=w,p=y;2<h&&1<w&&(v=Math.ceil(w/2),h/=w/v);2<g&&1<y&&(p=Math.ceil(y/2),g/=y/p);m=L.getCanvas(t,v,p);
+A=m.context;A.clearRect(0,0,v,p);A.drawImage(k,0,0,w,y,0,0,v,p);k=m.canvas;w=v;y=p;t="prescale1"===t?"prescale2":"prescale1"}e.drawImage(k,0,0,w,y,0,-d,c,d);this.imageLayer&&(e=this.getCanvasPosition(0,-d),this.imageLayer.appendImage({imgData:b,left:e[0],top:e[1],width:c/f[0],height:d/f[3]}));this.restore()},paintInlineImageXObjectGroup:function(b,c){var d=this.ctx,e=b.width,f=b.height,h=L.getCanvas("inlineImage",e,f);a(h.context,b);for(var g=0,k=c.length;g<k;g++){var m=c[g];d.save();d.transform.apply(d,
+m.transform);d.scale(1,-1);d.drawImage(h.canvas,m.x,m.y,m.w,m.h,0,-1,1,1);this.imageLayer&&(m=this.getCanvasPosition(m.x,m.y),this.imageLayer.appendImage({imgData:b,left:m[0],top:m[1],width:e,height:f}));d.restore()}},paintSolidColorImageMask:function(){this.ctx.fillRect(0,0,1,1)},markPoint:function(a){},markPointProps:function(a,b){},beginMarkedContent:function(a){},beginMarkedContentProps:function(a,b){},endMarkedContent:function(){},beginCompat:function(){},endCompat:function(){},consumePath:function(){var a=
+this.ctx;if(this.pendingClip){if(this.pendingClip==h)if(void 0!==a.mozFillRule)a.mozFillRule="evenodd",a.clip(),a.mozFillRule="nonzero";else try{a.clip("evenodd")}catch(b){a.clip()}else a.clip();this.pendingClip=null}a.beginPath()},getSinglePixelWidth:function(a){a=this.ctx.mozCurrentTransformInverse;return Math.sqrt(Math.max(a[0]*a[0]+a[1]*a[1],a[2]*a[2]+a[3]*a[3]))},getCanvasPosition:function(a,b){var c=this.ctx.mozCurrentTransform;return[c[0]*a+c[2]*b+c[4],c[1]*a+c[3]*b+c[5]]}};for(var m in F)b.prototype[F[m]]=
+b.prototype[m];return b}(),V=function(){function b(a,b,c){c=a.createShader(c);a.shaderSource(c,b);a.compileShader(c);if(!a.getShaderParameter(c,a.COMPILE_STATUS))throw a=a.getShaderInfoLog(c),Error("Error during shader compilation: "+a);return c}function a(a,b){for(var c=a.createProgram(),d=0,e=b.length;d<e;++d)a.attachShader(c,b[d]);a.linkProgram(c);if(!a.getProgramParameter(c,a.LINK_STATUS))throw c=a.getProgramInfoLog(c),Error("Error during program linking: "+c);return c}function c(a,b,c){a.activeTexture(c);
+c=a.createTexture();a.bindTexture(a.TEXTURE_2D,c);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST);a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,b);return c}function e(){d||(f=document.createElement("canvas"),d=f.getContext("webgl",{premultipliedalpha:!1}))}var d,f,g=null,k=null;return{get isEnabled(){if(PDFJS.disableWebGL)return!1;
+var a=!1;try{e(),a=!!d}catch(b){}return S(this,"isEnabled",a)},composeSMask:function(h,k,l){var n=h.width,J=h.height;if(!g){var q,r;e();q=f;f=null;r=d;d=null;var s=b(r," attribute vec2 a_position; attribute vec2 a_texCoord; uniform vec2 u_resolution; varying vec2 v_texCoord; void main() { vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); v_texCoord = a_texCoord; } ",
+r.VERTEX_SHADER),x=b(r," precision mediump float; uniform vec4 u_backdrop; uniform int u_subtype; uniform sampler2D u_image; uniform sampler2D u_mask; varying vec2 v_texCoord; void main() { vec4 imageColor = texture2D(u_image, v_texCoord); vec4 maskColor = texture2D(u_mask, v_texCoord); if (u_backdrop.a > 0.0) { maskColor.rgb = maskColor.rgb * maskColor.a + u_backdrop.rgb * (1.0 - maskColor.a); } float lum; if (u_subtype == 0) { lum = maskColor.a; } else { lum = maskColor.r * 0.3 + maskColor.g * 0.59 + maskColor.b * 0.11; } imageColor.a *= lum; imageColor.rgb *= imageColor.a; gl_FragColor = imageColor; } ",
+r.FRAGMENT_SHADER),p=a(r,[s,x]);r.useProgram(p);s={};s.gl=r;s.canvas=q;s.resolutionLocation=r.getUniformLocation(p,"u_resolution");s.positionLocation=r.getAttribLocation(p,"a_position");s.backdropLocation=r.getUniformLocation(p,"u_backdrop");s.subtypeLocation=r.getUniformLocation(p,"u_subtype");q=r.getAttribLocation(p,"a_texCoord");var x=r.getUniformLocation(p,"u_image"),p=r.getUniformLocation(p,"u_mask"),u=r.createBuffer();r.bindBuffer(r.ARRAY_BUFFER,u);r.bufferData(r.ARRAY_BUFFER,new Float32Array([0,
+0,1,0,0,1,0,1,1,0,1,1]),r.STATIC_DRAW);r.enableVertexAttribArray(q);r.vertexAttribPointer(q,2,r.FLOAT,!1,0,0);r.uniform1i(x,0);r.uniform1i(p,1);g=s}r=g;s=r.canvas;q=r.gl;s.width=n;s.height=J;q.viewport(0,0,q.drawingBufferWidth,q.drawingBufferHeight);q.uniform2f(r.resolutionLocation,n,J);l.backdrop?q.uniform4f(r.resolutionLocation,l.backdrop[0],l.backdrop[1],l.backdrop[2],1):q.uniform4f(r.resolutionLocation,0,0,0,0);q.uniform1i(r.subtypeLocation,"Luminosity"===l.subtype?1:0);h=c(q,h,q.TEXTURE0);k=
+c(q,k,q.TEXTURE1);l=q.createBuffer();q.bindBuffer(q.ARRAY_BUFFER,l);q.bufferData(q.ARRAY_BUFFER,new Float32Array([0,0,n,0,0,J,0,J,n,0,n,J]),q.STATIC_DRAW);q.enableVertexAttribArray(r.positionLocation);q.vertexAttribPointer(r.positionLocation,2,q.FLOAT,!1,0,0);q.clearColor(0,0,0,0);q.enable(q.BLEND);q.blendFunc(q.ONE,q.ONE_MINUS_SRC_ALPHA);q.clear(q.COLOR_BUFFER_BIT);q.drawArrays(q.TRIANGLES,0,6);q.flush();q.deleteTexture(h);q.deleteTexture(k);q.deleteBuffer(l);return s},drawFigures:function(c,g,l,
+n,p){if(!k){var q,r;e();q=f;f=null;r=d;d=null;var s=b(r," attribute vec2 a_position; attribute vec3 a_color; uniform vec2 u_resolution; uniform vec2 u_scale; uniform vec2 u_offset; varying vec4 v_color; void main() { vec2 position = (a_position + u_offset) * u_scale; vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); v_color = vec4(a_color / 255.0, 1.0); } ",
+r.VERTEX_SHADER),x=b(r," precision mediump float; varying vec4 v_color; void main() { gl_FragColor = v_color; } ",r.FRAGMENT_SHADER),s=a(r,[s,
+x]);r.useProgram(s);x={};x.gl=r;x.canvas=q;x.resolutionLocation=r.getUniformLocation(s,"u_resolution");x.scaleLocation=r.getUniformLocation(s,"u_scale");x.offsetLocation=r.getUniformLocation(s,"u_offset");x.positionLocation=r.getAttribLocation(s,"a_position");x.colorLocation=r.getAttribLocation(s,"a_color");k=x}q=k;r=q.canvas;s=q.gl;r.width=c;r.height=g;s.viewport(0,0,s.drawingBufferWidth,s.drawingBufferHeight);s.uniform2f(q.resolutionLocation,c,g);c=0;var u,D,A;u=0;for(D=n.length;u<D;u++)switch(n[u].type){case "lattice":A=
+n[u].coords.length/n[u].verticesPerRow|0;c+=(A-1)*(n[u].verticesPerRow-1)*6;break;case "triangles":c+=n[u].coords.length}x=new Float32Array(2*c);g=new Uint8Array(3*c);var w=p.coords,y=p.colors,t=0,v=0;u=0;for(D=n.length;u<D;u++){A=n[u];var B=A.coords,E=A.colors;switch(A.type){case "lattice":var H=A.verticesPerRow;A=B.length/H|0;for(var z=1;z<A;z++)for(var C=z*H+1,F=1;F<H;F++,C++)x[t]=w[B[C-H-1]],x[t+1]=w[B[C-H-1]+1],x[t+2]=w[B[C-H]],x[t+3]=w[B[C-H]+1],x[t+4]=w[B[C-1]],x[t+5]=w[B[C-1]+1],g[v]=y[E[C-
+H-1]],g[v+1]=y[E[C-H-1]+1],g[v+2]=y[E[C-H-1]+2],g[v+3]=y[E[C-H]],g[v+4]=y[E[C-H]+1],g[v+5]=y[E[C-H]+2],g[v+6]=y[E[C-1]],g[v+7]=y[E[C-1]+1],g[v+8]=y[E[C-1]+2],x[t+6]=x[t+2],x[t+7]=x[t+3],x[t+8]=x[t+4],x[t+9]=x[t+5],x[t+10]=w[B[C]],x[t+11]=w[B[C]+1],g[v+9]=g[v+3],g[v+10]=g[v+4],g[v+11]=g[v+5],g[v+12]=g[v+6],g[v+13]=g[v+7],g[v+14]=g[v+8],g[v+15]=y[E[C]],g[v+16]=y[E[C]+1],g[v+17]=y[E[C]+2],t+=12,v+=18;break;case "triangles":for(A=0,H=B.length;A<H;A++)x[t]=w[B[A]],x[t+1]=w[B[A]+1],g[v]=y[E[u]],g[v+1]=
+y[E[A]+1],g[v+2]=y[E[A]+2],t+=2,v+=3}}l?s.clearColor(l[0]/255,l[1]/255,l[2]/255,1):s.clearColor(0,0,0,0);s.clear(s.COLOR_BUFFER_BIT);l=s.createBuffer();s.bindBuffer(s.ARRAY_BUFFER,l);s.bufferData(s.ARRAY_BUFFER,x,s.STATIC_DRAW);s.enableVertexAttribArray(q.positionLocation);s.vertexAttribPointer(q.positionLocation,2,s.FLOAT,!1,0,0);n=s.createBuffer();s.bindBuffer(s.ARRAY_BUFFER,n);s.bufferData(s.ARRAY_BUFFER,g,s.STATIC_DRAW);s.enableVertexAttribArray(q.colorLocation);s.vertexAttribPointer(q.colorLocation,
+3,s.UNSIGNED_BYTE,!1,0,0);s.uniform2f(q.scaleLocation,p.scaleX,p.scaleY);s.uniform2f(q.offsetLocation,p.offsetX,p.offsetY);s.drawArrays(s.TRIANGLES,0,c);s.flush();s.deleteBuffer(l);s.deleteBuffer(n);return r},clear:function(){k=g=null}}}(),aa={RadialAxial:{fromIR:function(b){var a=b[1],c=b[2],e=b[3],d=b[4],f=b[5],g=b[6];return{type:"Pattern",getPattern:function(b){var h;"axial"===a?h=b.createLinearGradient(e[0],e[1],d[0],d[1]):"radial"===a&&(h=b.createRadialGradient(e[0],e[1],f,d[0],d[1],g));b=0;
+for(var m=c.length;b<m;++b){var l=c[b];h.addColorStop(l[0],l[1])}return h}}}}},Ka=function(){function b(a,b,e,d,f,g,k,h){var m=b.coords,l=b.colors,n=a.data;a=4*a.width;var p;m[e+1]>m[d+1]&&(p=e,e=d,d=p,p=g,g=k,k=p);m[d+1]>m[f+1]&&(p=d,d=f,f=p,p=k,k=h,h=p);m[e+1]>m[d+1]&&(p=e,e=d,d=p,p=g,g=k,k=p);p=(m[e]+b.offsetX)*b.scaleX;e=(m[e+1]+b.offsetY)*b.scaleY;var q=(m[d]+b.offsetX)*b.scaleX;d=(m[d+1]+b.offsetY)*b.scaleY;var r=(m[f]+b.offsetX)*b.scaleX;b=(m[f+1]+b.offsetY)*b.scaleY;if(!(e>=b)){f=l[g];m=l[g+
+1];g=l[g+2];var s=l[k],x=l[k+1];k=l[k+2];var u=l[h],B=l[h+1];h=l[h+2];for(var A=Math.round(e),l=Math.round(b),w,y,t,v,D,E,F,z,C=A;C<=l;C++){C<d?(z=C<e?0:e===d?1:(e-C)/(e-d),A=p-(p-q)*z,w=f-(f-s)*z,y=m-(m-x)*z,t=g-(g-k)*z):(z=C>b?1:d===b?0:(d-C)/(d-b),A=q-(q-r)*z,w=s-(s-u)*z,y=x-(x-B)*z,t=k-(k-h)*z);z=C<e?0:C>b?1:(e-C)/(e-b);v=p-(p-r)*z;D=f-(f-u)*z;E=m-(m-B)*z;F=g-(g-h)*z;z=Math.round(Math.min(A,v));for(var L=Math.round(Math.max(A,v)),K=a*C+4*z,G=z;G<=L;G++)z=(A-G)/(A-v),z=0>z?0:1<z?1:z,n[K++]=w-(w-
+D)*z|0,n[K++]=y-(y-E)*z|0,n[K++]=t-(t-F)*z|0,n[K++]=255}}}return function(a,c,e,d,f,g){var k=Math.floor(a[0]),h=Math.floor(a[1]),m=Math.ceil(a[2])-k;a=Math.ceil(a[3])-h;var l=Math.min(Math.ceil(Math.abs(m*c[0]*1.1)),3E3),n=Math.min(Math.ceil(Math.abs(a*c[1]*1.1)),3E3),m=m/l;a/=n;d={coords:e,colors:d,offsetX:-k,offsetY:-h,scaleX:1/m,scaleY:1/a};var p;if(V.isEnabled)f=V.drawFigures(l,n,g,f,d),e=L.getCanvas("mesh",l,n,!1),e.context.drawImage(f,0,0);else{e=L.getCanvas("mesh",l,n,!1);c=e.context;n=c.createImageData(l,
+n);if(g){var q=n.data,l=0;for(p=q.length;l<p;l+=4)q[l]=g[0],q[l+1]=g[1],q[l+2]=g[2],q[l+3]=255}for(l=0;l<f.length;l++){g=n;var r=f[l];p=d;var q=r.coords,s=r.colors,x=void 0,u=void 0;switch(r.type){case "lattice":for(var r=r.verticesPerRow,u=Math.floor(q.length/r)-1,B=r-1,x=0;x<u;x++)for(var A=x*r,w=0;w<B;w++,A++)b(g,p,q[A],q[A+1],q[A+r],s[A],s[A+1],s[A+r]),b(g,p,q[A+r+1],q[A+1],q[A+r],s[A+r+1],s[A+1],s[A+r]);break;case "triangles":x=0;for(u=q.length;x<u;x+=3)b(g,p,q[x],q[x+1],q[x+2],s[x],s[x+1],s[x+
+2]);break;default:D("illigal figure")}}c.putImageData(n,0,0)}f=e.canvas;return{canvas:f,offsetX:k,offsetY:h,scaleX:m,scaleY:a}}}();aa.Mesh={fromIR:function(b){var a=b[2],c=b[3],e=b[4],d=b[5],f=b[6],g=b[8];return{type:"Pattern",getPattern:function(b,h,m){var l;if(m)l=p.singularValueDecompose2dScale(b.mozCurrentTransform);else{l=p.singularValueDecompose2dScale(f);var n=p.singularValueDecompose2dScale(h.baseTransform);l=[l[0]*n[0],l[1]*n[1]]}l=Ka(d,l,a,c,e,m?null:g);m||(b.setTransform.apply(b,h.baseTransform),
+f&&b.transform.apply(b,f));b.translate(l.offsetX,l.offsetY);b.scale(l.scaleX,l.scaleY);return b.createPattern(l.canvas,"no-repeat")}}}};aa.Dummy={fromIR:function(){return{type:"Pattern",getPattern:function(){return"hotpink"}}}};var Ja=function(){function b(a,b,e,d,f,g){this.operatorList=a[2];this.matrix=a[3]||[1,0,0,1,0,0];this.bbox=a[4];this.xstep=a[5];this.ystep=a[6];this.paintType=a[7];this.tilingType=a[8];this.color=b;this.objs=d;this.commonObjs=f;this.baseTransform=g;this.type="Pattern";this.ctx=
+e}b.prototype={createPatternCanvas:function(a){var b=this.operatorList,e=this.bbox,d=this.xstep,f=this.ystep,g=this.paintType,k=this.color,h=this.objs,m=this.commonObjs;W("TilingType: "+this.tilingType);var l=e[0],n=e[1],u=e[2],q=e[3],r=[l,n],s=[l+d,n+f],x=s[0]-r[0],s=s[1]-r[1],B=p.singularValueDecompose2dScale(this.matrix),D=p.singularValueDecompose2dScale(this.baseTransform),B=[B[0]*D[0],B[1]*D[1]],x=Math.min(Math.ceil(Math.abs(x*B[0])),3E3),s=Math.min(Math.ceil(Math.abs(s*B[1])),3E3),B=L.getCanvas("pattern",
+x,s,!0),D=B.context,h=new na(D,m,h);h.groupLevel=a.groupLevel;this.setFillAndStrokeStyleToContext(D,g,k);this.setScale(x,s,d,f);this.transformToScale(h);h.transform.apply(h,[1,0,0,1,-r[0],-r[1]]);this.clipBbox(h,e,l,n,u,q);h.executeOperatorList(b);return B.canvas},setScale:function(a,b,e,d){this.scale=[a/e,b/d]},transformToScale:function(a){var b=this.scale;a.transform.apply(a,[b[0],0,0,b[1],0,0])},scaleToContext:function(){var a=this.scale;this.ctx.scale(1/a[0],1/a[1])},clipBbox:function(a,b,e,d,
+f,g){b&&P(b)&&4==b.length&&(a.rectangle(e,d,f-e,g-d),a.clip(),a.endPath())},setFillAndStrokeStyleToContext:function(a,b,e){switch(b){case 1:b=this.ctx;a.fillStyle=b.fillStyle;a.strokeStyle=b.strokeStyle;break;case 2:b=p.makeCssRgb(e);a.fillStyle=b;a.strokeStyle=b;break;default:D("Unsupported paint type: "+b)}},getPattern:function(a,b){var e=this.createPatternCanvas(b);a=this.ctx;a.setTransform.apply(a,this.baseTransform);a.transform.apply(a,this.matrix);this.scaleToContext();return a.createPattern(e,
+"repeat")}};return b}();PDFJS.disableFontFace=!1;var M={insertRule:function(b){var a=document.getElementById("PDFJS_FONT_STYLE_TAG");a||(a=document.createElement("style"),a.id="PDFJS_FONT_STYLE_TAG",document.documentElement.getElementsByTagName("head")[0].appendChild(a));a=a.sheet;a.insertRule(b,a.cssRules.length)},clear:function(){var b=document.getElementById("PDFJS_FONT_STYLE_TAG");b&&b.parentNode.removeChild(b)},get loadTestFont(){return S(this,"loadTestFont",atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="))},
+loadTestFontId:0,loadingContext:{requests:[],nextRequestId:0},isSyncFontLoadingSupported:function(){if(U)return!1;var b=/Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(window.navigator.userAgent);return b&&14<=b[1]?!0:!1}(),bind:function(b,a){U&&D("bind() shall be called from main thread");for(var c=[],e=[],d=0,f=b.length;d<f;d++){var g=b[d];if(!g.attached&&!1!==g.loading){g.attached=!0;var k=g.bindDOM();k&&(c.push(k),e.push(g))}}d=M.queueLoadingCallback(a);0<c.length&&!this.isSyncFontLoadingSupported?M.prepareFontLoadEvent(c,
+e,d):d.complete()},queueLoadingCallback:function(b){var a=M.loadingContext,c={id:"pdfjs-font-loading-"+a.nextRequestId++,complete:function(){c.end&&D("completeRequest() cannot be called twice");for(c.end=Date.now();0<a.requests.length&&a.requests[0].end;){var b=a.requests.shift();setTimeout(b.callback,0)}},callback:b,started:Date.now()};a.requests.push(c);return c},prepareFontLoadEvent:function(b,a,c){function e(a,b){return a.charCodeAt(b)<<24|a.charCodeAt(b+1)<<16|a.charCodeAt(b+2)<<8|a.charCodeAt(b+
+3)&255}function d(a,b,c,d){var e=a.substr(0,b);a=a.substr(b+c);return e+d+a}function f(a,b){m++;30<m?(B("Load test font never loaded."),b()):(h.font="30px "+a,h.fillText(".",0,20),0<h.getImageData(0,0,1,1).data[3]?b():setTimeout(f.bind(null,a,b)))}var g,k;b=document.createElement("canvas");b.width=1;b.height=1;var h=b.getContext("2d"),m=0;b="lt"+Date.now()+this.loadTestFontId++;var l=this.loadTestFont,l=d(l,976,b.length,b),n=e(l,16);g=0;for(k=b.length-3;g<k;g+=4)n=n-1482184792+e(b,g)|0;g<b.length&&
+(n=n-1482184792+e(b+"XXX",g)|0);l=d(l,16,4,String.fromCharCode(n>>24&255,n>>16&255,n>>8&255,n&255));g="url(data:font/opentype;base64,"+btoa(l)+");";M.insertRule('@font-face { font-family:"'+b+'";src:'+g+"}");l=[];g=0;for(k=a.length;g<k;g++)l.push(a[g].loadedName);l.push(b);var p=document.createElement("div");p.setAttribute("style","visibility: hidden;width: 10px; height: 10px;position: absolute; top: 0px; left: 0px;");g=0;for(k=l.length;g<k;++g)a=document.createElement("span"),a.textContent="Hi",
+a.style.fontFamily=l[g],p.appendChild(a);document.body.appendChild(p);f(b,function(){document.body.removeChild(p);c.complete()})}},Ia=function(){function b(a,b,e){this.compiledGlyphs={};if(1===arguments.length){var d=arguments[0],f;for(f in d)this[f]=d[f]}}b.prototype={bindDOM:function(){if(!this.data)return null;if(PDFJS.disableFontFace)return this.disableFontFace=!0,null;var a;var b=new Uint8Array(this.data);a=b.length;if(8192>a)a=String.fromCharCode.apply(null,b);else{for(var e=[],d=0;d<a;d+=8192){var f=
+Math.min(d+8192,a),f=b.subarray(d,f);e.push(String.fromCharCode.apply(null,f))}a=e.join("")}b=this.loadedName;a="url(data:"+this.mimetype+";base64,"+window.btoa(a)+");";b='@font-face { font-family:"'+b+'";src:'+a+"}";M.insertRule(b);PDFJS.pdfBug&&"FontInspector"in u&&u.FontInspector.enabled&&u.FontInspector.fontAdded(this,a);return b},getPathGenerator:function(a,b){if(!(b in this.compiledGlyphs)){var e=a.get(this.loadedName+"_path_"+b);this.compiledGlyphs[b]=new Function("c","size",e)}return this.compiledGlyphs[b]}};
+return b}()}).call("undefined"===typeof window?this:window);PDFJS.workerSrc||"undefined"===typeof document||(PDFJS.workerSrc=function(){var Q=(document.body||document.getElementsByTagName("head")[0]).lastChild.src;return Q&&Q.replace(/\.js$/i,".worker.js")}());
diff --git a/lib/viewers/pdf/pdf.worker.js b/lib/viewers/pdf/pdf.worker.js
new file mode 100644
index 0000000..9d193a3
--- /dev/null
+++ b/lib/viewers/pdf/pdf.worker.js
@@ -0,0 +1,906 @@
+"undefined"===typeof PDFJS&&(("undefined"!==typeof window?window:this).PDFJS={});PDFJS.version="1.0.277";PDFJS.build="250d394";
+(function(){var ya,tb,Eb,Fb,ub,Xb;function R(f){PDFJS.verbosity>=PDFJS.VERBOSITY_LEVELS.infos&&console.log("Info: "+f)}function O(f){PDFJS.verbosity>=PDFJS.VERBOSITY_LEVELS.warnings&&console.log("Warning: "+f)}function y(f){if(1<arguments.length){var a=["Error:"];a.push.apply(a,arguments);console.log.apply(console,a);f=[].join.call(arguments," ")}else console.log("Error: "+f);console.log(od());Gb.notify(Yb.unknown);throw Error(f);}function od(){try{throw Error();}catch(f){return f.stack?f.stack.split("\n").slice(2).join("\n"):
+""}}function U(f,a){f||y(a)}function vb(f,a){if(!f)return!1;var b=/^[a-z][a-z0-9+\-.]*(?=:)/i.exec(f);if(!b)return a;b=b[0].toLowerCase();switch(b){case "http":case "https":case "ftp":case "mailto":return!0;default:return!1}}function W(f,a,b){Object.defineProperty(f,a,{value:b,enumerable:!0,configurable:!0,writable:!1});return b}function na(f){var a=f.length;if(8192>a)return String.fromCharCode.apply(null,f);for(var b=[],c=0;c<a;c+=8192){var e=Math.min(c+8192,a),e=f.subarray(c,e);b.push(String.fromCharCode.apply(null,
+e))}return b.join("")}function pa(f){for(var a=f.length,b=[],c=0;c<a;++c)b[c]=f.charCodeAt(c);return b}function La(f){for(var a=f.length,b=new Uint8Array(a),c=0;c<a;++c)b[c]=f.charCodeAt(c)&255;return b}function ia(f){return String.fromCharCode(f>>24&255,f>>16&255,f>>8&255,f&255)}function wb(f){for(var a=1,b=0;f>a;)a<<=1,b++;return b}function va(f,a){return f[a]<<8|f[a+1]}function fa(f,a){return(f[a]<<24|f[a+1]<<16|f[a+2]<<8|f[a+3])>>>0}function xa(f){var a,b=f.length,c=[];if("\u00fe"===f[0]&&"\u00ff"===
+f[1])for(a=2;a<b;a+=2)c.push(String.fromCharCode(f.charCodeAt(a)<<8|f.charCodeAt(a+1)));else for(a=0;a<b;++a){var e=pd[f.charCodeAt(a)];c.push(e?String.fromCharCode(e):f.charAt(a))}return c.join("")}function Hb(f){for(var a in f)return!1;return!0}function za(f){return"boolean"==typeof f}function V(f){return"number"==typeof f&&(f|0)==f}function Ha(f){return"number"==typeof f}function ma(f){return"string"==typeof f}function H(f){return f instanceof Da}function Y(f,a){return f instanceof Aa&&(!a||f.cmd==
+a)}function N(f,a){if(!(f instanceof oa))return!1;if(!a)return!0;var b=f.get("Type");return H(b)&&b.name==a}function ca(f){return f instanceof Array}function da(f){return"object"==typeof f&&null!==f&&void 0!==f&&"getBytes"in f}function qa(f){return f instanceof cb}function Ia(){var f={};f.promise=new Promise(function(a,b){f.resolve=a;f.reject=b});return f}function Zb(f,a){this.name=f;this.comObj=a;this.callbackIndex=1;this.postMessageTransfers=!0;var b=this.callbacksCapabilities={},c=this.actionHandler=
+{};c.console_log=[function(a){console.log.apply(console,a)}];c.console_error=[function(a){console.error.apply(console,a)}];c._unsupported_feature=[function(a){Gb.notify(a)}];a.onmessage=function(e){var d=e.data;if(d.isReply)if(e=d.callbackId,d.callbackId in b){var g=b[e];delete b[e];"error"in d?g.reject(d.error):g.resolve(d.data)}else y("Cannot resolve callback "+e);else if(d.action in c){var h=c[d.action];d.callbackId?Promise.resolve().then(function(){return h[0].call(h[1],d.data)}).then(function(c){a.postMessage({isReply:!0,
+callbackId:d.callbackId,data:c})},function(c){a.postMessage({isReply:!0,callbackId:d.callbackId,error:c})}):h[0].call(h[1],d.data)}else y("Unknown action from worker: "+d.action)}}function Ib(f){if("object"!=typeof f)return!1;if(!N(f))if(da(f))f=f.dict;else return!1;return f.has("FunctionType")}function qd(f,a,b){var c=a.get("Matrix"),e=a.get("BBox"),d=a.get("XStep"),g=a.get("YStep"),h=a.get("PaintType");a=a.get("TilingType");return["TilingPattern",b,f,c,e,d,g,h,a]}function rd(f){if(65520<=f&&65535>=
+f)return 0;switch(f){case 63721:case 63193:return 169;case 63720:case 63194:return 174;case 63722:case 63195:return 8482;default:return f}}function qc(f,a,b){var c=Object.create(null),e,d;if(f.baseEncodingName)for(d=ja[f.baseEncodingName],e=0;e<d.length;e++)a=b.indexOf(d[e]),0<=a&&(c[e]=a);else if(f.flags&Ba.Symbolic)for(e in a)c[e]=a[e];else for(d=ja.StandardEncoding,e=0;e<d.length;e++)a=b.indexOf(d[e]),0<=a&&(c[e]=a);if(f=f.differences)for(e in f)a=b.indexOf(f[e]),0<=a&&(c[e]=a);return c}var la=
+"undefined"===typeof window?this:window,$b="undefined"==typeof window,Ja=[0.001,0,0,0.001,0,0];Xb=0;la.PDFJS||(la.PDFJS={});la.PDFJS.pdfBug=!1;PDFJS.VERBOSITY_LEVELS={errors:0,warnings:1,infos:5};var t=PDFJS.OPS={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,
+eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,
+setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotations:78,endAnnotations:79,beginAnnotation:80,endAnnotation:81,paintJpegXObject:82,
+paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91},Yb=PDFJS.UNSUPPORTED_FEATURES={unknown:"unknown",forms:"forms",javaScript:"javaScript",smask:"smask",shadingPattern:"shadingPattern",font:"font"},Gb=PDFJS.UnsupportedManager=function(){var f=[];return{listen:function(a){f.push(a)},notify:function(a){O('Unsupported feature "'+
+a+'"');for(var b=0,c=f.length;b<c;b++)f[b](a)}}}();PDFJS.isValidUrl=vb;var Jb=PDFJS.PasswordResponses={NEED_PASSWORD:1,INCORRECT_PASSWORD:2},Kb=function(){function f(a,b){this.name="PasswordException";this.message=a;this.code=b}f.prototype=Error();return f.constructor=f}(),sd=function(){function f(a,b){this.name="UnknownErrorException";this.message=a;this.details=b}f.prototype=Error();return f.constructor=f}(),rc=function(){function f(a){this.name="InvalidPDFException";this.message=a}f.prototype=
+Error();return f.constructor=f}(),sc=function(){function f(a){this.name="MissingPDFException";this.message=a}f.prototype=Error();return f.constructor=f}(),db=function(){function f(a){this.message=a}f.prototype=Error();f.prototype.name="NotImplementedException";return f.constructor=f}(),Va=function(){function f(a,b){this.begin=a;this.end=b;this.message="Missing data ["+a+", "+b+")"}f.prototype=Error();f.prototype.name="MissingDataException";return f.constructor=f}(),tc=function(){function f(a){this.message=
+a}f.prototype=Error();f.prototype.name="XRefParseException";return f.constructor=f}();Object.defineProperty(PDFJS,"isLittleEndian",{configurable:!0,get:function(){var f=PDFJS,a=new Uint8Array(2);a[0]=1;a=new Uint16Array(a.buffer);return W(f,"isLittleEndian",1===a[0])}});Object.defineProperty(PDFJS,"hasCanvasTypedArrays",{configurable:!0,get:function(){var f=PDFJS,a=document.createElement("canvas");a.width=a.height=1;a=a.getContext("2d").createImageData(1,1);return W(f,"hasCanvasTypedArrays","undefined"!==
+typeof a.data.buffer)}});var td=function(){function f(c,e){this.buffer=c;this.byteLength=c.length;for(var d=this.length=void 0===e?this.byteLength>>2:e;b<d;)Object.defineProperty(f.prototype,b,a(b)),b++}function a(a){return{get:function(){var b=this.buffer,d=a<<2;return(b[d]|b[d+1]<<8|b[d+2]<<16|b[d+3]<<24)>>>0},set:function(b){var d=this.buffer,g=a<<2;d[g]=b&255;d[g+1]=b>>8&255;d[g+2]=b>>16&255;d[g+3]=b>>>24&255}}}f.prototype=Object.create(null);var b=0;return f}(),Ka=[1,0,0,1,0,0],Q=PDFJS.Util=
+function(){function f(){}f.makeCssRgb=function(a){return"rgb("+a[0]+","+a[1]+","+a[2]+")"};f.transform=function(a,b){return[a[0]*b[0]+a[2]*b[1],a[1]*b[0]+a[3]*b[1],a[0]*b[2]+a[2]*b[3],a[1]*b[2]+a[3]*b[3],a[0]*b[4]+a[2]*b[5]+a[4],a[1]*b[4]+a[3]*b[5]+a[5]]};f.applyTransform=function(a,b){return[a[0]*b[0]+a[1]*b[2]+b[4],a[0]*b[1]+a[1]*b[3]+b[5]]};f.applyInverseTransform=function(a,b){var c=b[0]*b[3]-b[1]*b[2];return[(a[0]*b[3]-a[1]*b[2]+b[2]*b[5]-b[4]*b[3])/c,(-a[0]*b[1]+a[1]*b[0]+b[4]*b[1]-b[5]*b[0])/
+c]};f.getAxialAlignedBoundingBox=function(a,b){var c=f.applyTransform(a,b),e=f.applyTransform(a.slice(2,4),b),d=f.applyTransform([a[0],a[3]],b),g=f.applyTransform([a[2],a[1]],b);return[Math.min(c[0],e[0],d[0],g[0]),Math.min(c[1],e[1],d[1],g[1]),Math.max(c[0],e[0],d[0],g[0]),Math.max(c[1],e[1],d[1],g[1])]};f.inverseTransform=function(a){var b=a[0]*a[3]-a[1]*a[2];return[a[3]/b,-a[1]/b,-a[2]/b,a[0]/b,(a[2]*a[5]-a[4]*a[3])/b,(a[4]*a[1]-a[5]*a[0])/b]};f.apply3dTransform=function(a,b){return[a[0]*b[0]+
+a[1]*b[1]+a[2]*b[2],a[3]*b[0]+a[4]*b[1]+a[5]*b[2],a[6]*b[0]+a[7]*b[1]+a[8]*b[2]]};f.singularValueDecompose2dScale=function(a){var b=[a[0],a[2],a[1],a[3]],c=a[0]*b[0]+a[1]*b[2],e=a[2]*b[1]+a[3]*b[3],d=(c+e)/2;a=Math.sqrt((c+e)*(c+e)-4*(c*e-(a[2]*b[0]+a[3]*b[2])*(a[0]*b[1]+a[1]*b[3])))/2;b=d-a||1;return[Math.sqrt(d+a||1),Math.sqrt(b)]};f.normalizeRect=function(a){var b=a.slice(0);a[0]>a[2]&&(b[0]=a[2],b[2]=a[0]);a[1]>a[3]&&(b[1]=a[3],b[3]=a[1]);return b};f.intersect=function(a,b){function c(a,c){return a-
+c}var e=[a[0],a[2],b[0],b[2]].sort(c),d=[a[1],a[3],b[1],b[3]].sort(c),g=[];a=f.normalizeRect(a);b=f.normalizeRect(b);if(e[0]===a[0]&&e[1]===b[0]||e[0]===b[0]&&e[1]===a[0])g[0]=e[1],g[2]=e[2];else return!1;if(d[0]===a[1]&&d[1]===b[1]||d[0]===b[1]&&d[1]===a[1])g[1]=d[1],g[3]=d[2];else return!1;return g};f.sign=function(a){return 0>a?-1:1};f.concatenateToArray=function(a,b){Array.prototype.push.apply(a,b)};f.prependToArray=function(a,b){Array.prototype.unshift.apply(a,b)};f.extendObj=function(a,b){for(var c in b)a[c]=
+b[c]};f.getInheritableProperty=function(a,b){for(;a&&!a.has(b);)a=a.get("Parent");return a?a.get(b):null};f.inherit=function(a,b,c){a.prototype=Object.create(b.prototype);a.prototype.constructor=a;for(var e in c)a.prototype[e]=c[e]};f.loadScript=function(a,b){var c=document.createElement("script"),e=!1;c.setAttribute("src",a);b&&(c.onload=function(){e||b();e=!0});document.getElementsByTagName("head")[0].appendChild(c)};return f}();PDFJS.PageViewport=function(){function f(a,b,c,e,d,g){this.viewBox=
+a;this.scale=b;this.rotation=c;this.offsetX=e;this.offsetY=d;var h=(a[2]+a[0])/2,k=(a[3]+a[1])/2,l,m,f;c%=360;switch(0>c?c+360:c){case 180:c=-1;m=l=0;f=1;break;case 90:c=0;m=l=1;f=0;break;case 270:c=0;m=l=-1;f=0;break;default:c=1,m=l=0,f=-1}g&&(m=-m,f=-f);0===c?(e=Math.abs(k-a[1])*b+e,d=Math.abs(h-a[0])*b+d,g=Math.abs(a[3]-a[1])*b,a=Math.abs(a[2]-a[0])*b):(e=Math.abs(h-a[0])*b+e,d=Math.abs(k-a[1])*b+d,g=Math.abs(a[2]-a[0])*b,a=Math.abs(a[3]-a[1])*b);this.transform=[c*b,l*b,m*b,f*b,e-c*b*h-m*b*k,d-
+l*b*h-f*b*k];this.width=g;this.height=a;this.fontScale=b}f.prototype={clone:function(a){a=a||{};var b="scale"in a?a.scale:this.scale,c="rotation"in a?a.rotation:this.rotation;return new f(this.viewBox.slice(),b,c,this.offsetX,this.offsetY,a.dontFlip)},convertToViewportPoint:function(a,b){return Q.applyTransform([a,b],this.transform)},convertToViewportRectangle:function(a){var b=Q.applyTransform([a[0],a[1]],this.transform);a=Q.applyTransform([a[2],a[3]],this.transform);return[b[0],b[1],a[0],a[1]]},
+convertToPdfPoint:function(a,b){return Q.applyInverseTransform([a,b],this.transform)}};return f}();var pd=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,
+381,305,322,339,353,382,0,8364];PDFJS.createPromiseCapability=Ia;(function(){function f(c){this._status=a;this._handlers=[];try{c.call(this,this._resolve.bind(this),this._reject.bind(this))}catch(b){this._reject(b)}}if(la.Promise)"function"!==typeof la.Promise.all&&(la.Promise.all=function(a){var c=0,b=[],h,k,l=new la.Promise(function(a,c){h=a;k=c});a.forEach(function(a,e){c++;a.then(function(a){b[e]=a;c--;0===c&&h(b)},k)});0===c&&h(b);return l}),"function"!==typeof la.Promise.resolve&&(la.Promise.resolve=
+function(a){return new la.Promise(function(c){c(a)})}),"function"!==typeof la.Promise.reject&&(la.Promise.reject=function(a){return new la.Promise(function(c,b){b(a)})}),"function"!==typeof la.Promise.prototype.catch&&(la.Promise.prototype.catch=function(a){return la.Promise.prototype.then(void 0,a)});else{var a=0,b=2,c={handlers:[],running:!1,unhandledRejections:[],pendingRejectionCheck:!1,scheduleHandlers:function(c){c._status!=a&&(this.handlers=this.handlers.concat(c._handlers),c._handlers=[],
+this.running||(this.running=!0,setTimeout(this.runHandlers.bind(this),0)))},runHandlers:function(){for(var a=Date.now()+1;0<this.handlers.length;){var c=this.handlers.shift(),g=c.thisPromise._status,h=c.thisPromise._value;try{1===g?"function"==typeof c.onResolve&&(h=c.onResolve(h)):"function"===typeof c.onReject&&(h=c.onReject(h),g=1,c.thisPromise._unhandledRejection&&this.removeUnhandeledRejection(c.thisPromise))}catch(k){g=b,h=k}c.nextPromise._updateStatus(g,h);if(Date.now()>=a)break}0<this.handlers.length?
+setTimeout(this.runHandlers.bind(this),0):this.running=!1},addUnhandledRejection:function(a){this.unhandledRejections.push({promise:a,time:Date.now()});this.scheduleRejectionCheck()},removeUnhandeledRejection:function(a){a._unhandledRejection=!1;for(var c=0;c<this.unhandledRejections.length;c++)this.unhandledRejections[c].promise===a&&(this.unhandledRejections.splice(c),c--)},scheduleRejectionCheck:function(){this.pendingRejectionCheck||(this.pendingRejectionCheck=!0,setTimeout(function(){this.pendingRejectionCheck=
+!1;for(var a=Date.now(),c=0;c<this.unhandledRejections.length;c++)if(500<a-this.unhandledRejections[c].time){var b=this.unhandledRejections[c].promise._value,h="Unhandled rejection: "+b;b.stack&&(h+="\n"+b.stack);O(h);this.unhandledRejections.splice(c);c--}this.unhandledRejections.length&&this.scheduleRejectionCheck()}.bind(this),500))}};f.all=function(a){function c(a){k._status!==b&&(m=[],h(a))}var g,h,k=new f(function(a,c){g=a;h=c}),l=a.length,m=[];if(0===l)return g(m),k;for(var n=0,q=a.length;n<
+q;++n){var s=a[n],p=function(a){return function(c){k._status!==b&&(m[a]=c,l--,0===l&&g(m))}}(n);f.isPromise(s)?s.then(p,c):p(s)}return k};f.isPromise=function(a){return a&&"function"===typeof a.then};f.resolve=function(a){return new f(function(c){c(a)})};f.reject=function(a){return new f(function(c,b){b(a)})};f.prototype={_status:null,_value:null,_handlers:null,_unhandledRejection:null,_updateStatus:function(a,d){1!==this._status&&this._status!==b&&(1==a&&f.isPromise(d)?d.then(this._updateStatus.bind(this,
+1),this._updateStatus.bind(this,b)):(this._status=a,this._value=d,a===b&&0===this._handlers.length&&(this._unhandledRejection=!0,c.addUnhandledRejection(this)),c.scheduleHandlers(this)))},_resolve:function(a){this._updateStatus(1,a)},_reject:function(a){this._updateStatus(b,a)},then:function(a,b){var g=new f(function(a,c){this.reject=this.resolve=c});this._handlers.push({thisPromise:this,onResolve:a,onReject:b,nextPromise:g});c.scheduleHandlers(this);return g},catch:function(a){return this.then(void 0,
+a)}};la.Promise=f}})();(function(){function f(){this.started={};this.times=[];this.enabled=!0}f.prototype={time:function(a){this.enabled&&(a in this.started&&O("Timer is already running for "+a),this.started[a]=Date.now())},timeEnd:function(a){this.enabled&&(a in this.started||O("Timer has not been started for "+a),this.times.push({name:a,start:this.started[a],end:Date.now()}),delete this.started[a])},toString:function(){var a,b,c=this.times,e="",d=0;a=0;for(b=c.length;a<b;++a){var g=c[a].name;g.length>
+d&&(d=g.length)}a=0;for(b=c.length;a<b;++a){for(var h=c[a],g=h.end-h.start,h=h.name;h.length<d;)h+=" ";e+=h+" "+g+"ms\n"}return e}};return f})();PDFJS.createBlob=function(f,a){if("undefined"!==typeof Blob)return new Blob([f],{type:a});var b=new MozBlobBuilder;b.append(f);return b.getBlob(a)};PDFJS.createObjectURL=function(){return function(f,a){if(!PDFJS.disableCreateObjectURL&&"undefined"!==typeof URL&&URL.createObjectURL){var b=PDFJS.createBlob(f,a);return URL.createObjectURL(b)}for(var b="data:"+
+a+";base64,",c=0,e=f.length;c<e;c+=3)var d=f[c]&255,g=f[c+1]&255,h=f[c+2]&255,b=b+("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="[d>>2]+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="[(d&3)<<4|g>>4]+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="[c+1<e?(g&15)<<2|h>>6:64]+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="[c+2<e?h&63:64]);return b}}();Zb.prototype={on:function(f,a,b){var c=this.actionHandler;c[f]&&y('There is already an actionName called "'+
+f+'"');c[f]=[a,b]},send:function(f,a,b){this.postMessage({action:f,data:a},b)},sendWithPromise:function(f,a,b){var c=this.callbackIndex++;f={action:f,data:a,callbackId:c};a=Ia();this.callbacksCapabilities[c]=a;try{this.postMessage(f,b)}catch(e){a.reject(e)}return a.promise},postMessage:function(f,a){a&&this.postMessageTransfers?this.comObj.postMessage(f,a):this.comObj.postMessage(f)}};var uc=22,ud=["Link","Text","Widget"],Ma=function(){function f(a,c,e){var d=Q.getAxialAlignedBoundingBox(c,e);c=d[0];
+e=d[1];var g=d[2],d=d[3];if(c===g||e===d)return[1,0,0,1,a[0],a[1]];g=(a[2]-a[0])/(g-c);d=(a[3]-a[1])/(d-e);return[g,0,0,d,a[0]-c*g,a[1]-e*d]}function a(a){if(a.data)this.data=a.data;else{var c=a.dict,e=this.data={};e.subtype=c.get("Subtype").name;var d=c.get("Rect")||[0,0,0,0];e.rect=Q.normalizeRect(d);e.annotationFlags=c.get("F");d=c.get("C");ca(d)&&3===d.length?e.color=d:e.color=[0,0,0];if(c.has("BS"))d=c.get("BS"),e.borderWidth=d.has("W")?d.get("W"):1;else if(d=c.get("Border")||[0,0,1],e.borderWidth=
+d[2]||0,d=d[3],0<e.borderWidth&&d)if(ca(d)){var g=d.length;if(0<g){for(var h=!1,k=0,l=0;l<g;l++)if(0<=+d[l])0<d[l]&&k++;else{h=!0;break}if(h||0===k)e.borderWidth=0}}else e.borderWidth=0;var m;d=c.get("AP");N(d)?(d=d.get("N"),N(d)?(c=c.get("AS"))&&d.has(c.name)&&(m=d.get(c.name)):m=d):m=void 0;this.appearance=m;e.hasAppearance=!!this.appearance;e.id=a.ref.num}}a.prototype={getData:function(){return this.data},hasHtml:function(){return!1},getHtmlElement:function(a){throw new db("getHtmlElement() should be implemented in subclass");
+},getEmptyContainer:function(a,c,e){U(!$b,"getEmptyContainer() should be called from main thread");e=e||0;c=c||this.data.rect;a=document.createElement(a);a.style.borderWidth=e+"px";var d=c[3]-c[1]-2*e;a.style.width=c[2]-c[0]-2*e+"px";a.style.height=d+"px";return a},isInvisible:function(){var a=this.data;return a&&-1!==ud.indexOf(a.subtype)?!1:!!(a&&a.annotationFlags&&a.annotationFlags&1)},isViewable:function(){var a=this.data;return!(this.isInvisible()||!a||a.annotationFlags&&a.annotationFlags&34||
+!a.rect)},isPrintable:function(){var a=this.data;return!(this.isInvisible()||!(a&&a.annotationFlags&&a.annotationFlags&4&&a.rect))},loadResources:function(a){return new Promise(function(c,e){this.appearance.dict.getAsync("Resources").then(function(d){d?(new vc(d.map,a,d.xref)).load().then(function(){c(d)},e):c()},e)}.bind(this))},getOperatorList:function(a){if(!this.appearance)return Promise.resolve(new eb);var c=this.data,e=this.appearance.dict,d=this.loadResources("ExtGState ColorSpace Pattern Shading XObject Font".split(" ")),
+g=e.get("BBox")||[0,0,1,1],h=e.get("Matrix")||[1,0,0,1,0,0],k=f(c.rect,g,h),l=this;return d.then(function(e){var d=new eb;d.addOp(t.beginAnnotation,[c.rect,k,h]);return a.getOperatorList(l.appearance,e,d).then(function(){d.addOp(t.endAnnotation,[]);l.appearance.reset();return d})})}};a.getConstructor=function(b,c){if(b){if("Link"===b)return vd;if("Text"===b)return wd;if("Widget"===b){if(c)return"Tx"===c?xd:ac}else return a}};a.fromData=function(b){var c=a.getConstructor(b.subtype,b.fieldType);if(c)return new c({data:b})};
+a.fromRef=function(b,c){var e=b.fetchIfRef(c);if(N(e)){var d=e.get("Subtype");if(d=H(d)?d.name:""){var g=Q.getInheritableProperty(e,"FT"),g=H(g)?g.name:"";if(g=a.getConstructor(d,g)){e=new g({dict:e,ref:c});if(e.isViewable()||e.isPrintable())return e;O("unimplemented annotation type: "+d)}}}};a.appendToOperatorList=function(a,c,e,d,g){var h=Ia();e=[];for(var k=0,l=a.length;k<l;++k)("display"===g&&a[k].isViewable()||"print"===g&&a[k].isPrintable())&&e.push(a[k].getOperatorList(d));Promise.all(e).then(function(a){c.addOp(t.beginAnnotations,
+[]);for(var b=0,e=a.length;b<e;++b)c.addOpList(a[b]);c.addOp(t.endAnnotations,[]);h.resolve()},function(a){h.reject(a)});return h.promise};return a}();PDFJS.Annotation=Ma;var ac=function(){function f(a){Ma.call(this,a);if(!a.data){var c=a.dict,e=this.data;e.fieldValue=xa(Q.getInheritableProperty(c,"V")||"");e.alternativeText=xa(c.get("TU")||"");e.defaultAppearance=Q.getInheritableProperty(c,"DA")||"";var d=Q.getInheritableProperty(c,"FT");e.fieldType=H(d)?d.name:"";e.fieldFlags=Q.getInheritableProperty(c,
+"Ff")||0;this.fieldResources=Q.getInheritableProperty(c,"DR")||oa.empty;var d=[],g=c;for(a=a.ref;g;){var c=g.get("Parent"),h=g.getRaw("Parent");if(g=g.get("T"))d.unshift(xa(g));else{var g=c.get("Kids"),k,l;k=0;for(l=g.length;k<l;k++){var m=g[k];if(m.num==a.num&&m.gen==a.gen)break}d.unshift("`"+k)}g=c;a=h}e.fullName=d.join(".")}}var a=Ma.prototype;Q.inherit(f,Ma,{isViewable:function(){return"Sig"===this.data.fieldType?(O("unimplemented annotation type: Widget signature"),!1):a.isViewable.call(this)}});
+return f}(),xd=function(){function f(a){ac.call(this,a);a.data||(this.data.textAlignment=Q.getInheritableProperty(a.dict,"Q"))}Q.inherit(f,ac,{hasHtml:function(){return!this.data.hasAppearance&&!!this.data.fieldValue},getHtmlElement:function(a){U(!$b,"getHtmlElement() shall be called from main thread");var b=this.data,c=this.getEmptyContainer("div");c.style.display="table";var e=document.createElement("div");e.textContent=b.fieldValue;e.style.textAlign=["left","center","right"][b.textAlignment];e.style.verticalAlign=
+"middle";e.style.display="table-cell";a=b.fontRefName?a.getData(b.fontRefName):null;var d=e.style;d.fontSize=b.fontSize+"px";d.direction=0>b.fontDirection?"rtl":"ltr";a&&(d.fontWeight=a.black?a.bold?"bolder":"bold":a.bold?"bold":"normal",d.fontStyle=a.italic?"italic":"normal",b=a.loadedName,d.fontFamily=(b?'"'+b+'", ':"")+(a.fallbackName||"Helvetica, sans-serif"));c.appendChild(e);return c},getOperatorList:function(a){if(this.appearance)return Ma.prototype.getOperatorList.call(this,a);var b=new eb,
+c=this.data;if(!c.defaultAppearance)return Promise.resolve(b);c=new ha(La(c.defaultAppearance));return a.getOperatorList(c,this.fieldResources,b).then(function(){return b})}});return f}(),Lb=function(){function f(a){Ma.call(this,a)}Q.inherit(f,Ma,{hasHtml:function(){return!0},highlight:function(){this.highlightElement&&this.highlightElement.hasAttribute("hidden")&&this.highlightElement.removeAttribute("hidden")},unhighlight:function(){this.highlightElement&&!this.highlightElement.hasAttribute("hidden")&&
+this.highlightElement.setAttribute("hidden",!0)},initContainer:function(){for(var a=this.data,b=this.getEmptyContainer("section",a.rect,a.borderWidth),c=b.style.backgroundColor=a.color,e=[],d=0;3>d;++d)e[d]=Math.round(255*c[d]);a.colorCssRgb=Q.makeCssRgb(e);a=document.createElement("div");a.className="annotationHighlight";a.style.left=a.style.top="-4px";a.style.right=a.style.bottom="-4px";a.setAttribute("hidden",!0);this.highlightElement=a;b.appendChild(this.highlightElement);return b}});return f}(),
+wd=function(){function f(a){Lb.call(this,a);if(!a.data){a=a.dict;var b=this.data,c=a.get("Contents"),e=a.get("T");b.content=xa(c||"");b.title=xa(e||"");b.hasAppearance?b.name="NoIcon":(b.rect[1]=b.rect[3]-uc,b.rect[2]=b.rect[0]+uc,b.name=a.has("Name")?a.get("Name").name:"Note");a.has("C")&&(b.hasBgColor=!0)}}Q.inherit(f,Lb,{getHtmlElement:function(a){U(!$b,"getHtmlElement() shall be called from main thread");var b=this.data,c=b.rect;10>c[3]-c[1]&&(c[3]=c[1]+10);10>c[2]-c[0]&&(c[2]=c[0]+(c[3]-c[1]));
+var e=this.initContainer();e.className="annotText";a=document.createElement("img");a.style.height=e.style.height;a.style.width=e.style.width;var d=b.name;a.src=PDFJS.imageResourcesPath+"annotation-"+d.toLowerCase()+".svg";a.alt="[{{type}} Annotation]";a.dataset.l10nId="text_annotation_type";a.dataset.l10nArgs=JSON.stringify({type:d});d=document.createElement("div");d.className="annotTextContentWrapper";d.style.left=Math.floor(c[2]-c[0]+5)+"px";d.style.top="-10px";var g=document.createElement("div");
+g.className="annotTextContent";g.setAttribute("hidden",!0);if(b.hasBgColor){for(var h=b.color,k=[],c=0;3>c;++c){var l=Math.round(255*h[c]);k[c]=Math.round(0.7*(255-l))+l}g.style.backgroundColor=Q.makeCssRgb(k)}h=document.createElement("h1");k=document.createElement("p");h.textContent=b.title;if(b.content||b.title){for(var l=document.createElement("span"),m=b.content.split(/(?:\r\n?|\n)/),c=0,b=m.length;c<b;++c)l.appendChild(document.createTextNode(m[c])),c<b-1&&l.appendChild(document.createElement("br"));
+k.appendChild(l);var f=!1,q=function(a){a&&(f=!0);g.hasAttribute("hidden")&&(e.style.zIndex+=1,g.removeAttribute("hidden"))},s=function(a){a&&(f=!1);g.hasAttribute("hidden")||f||(e.style.zIndex-=1,g.setAttribute("hidden",!0))};a.addEventListener("click",function(){f?s(!0):q(!0)},!1);a.addEventListener("mouseover",function(){q()},!1);a.addEventListener("mouseout",function(){s()},!1);g.addEventListener("click",function(){s(!0)},!1)}else g.setAttribute("hidden",!0);g.appendChild(h);g.appendChild(k);
+d.appendChild(g);e.appendChild(a);e.appendChild(d);return e}});return f}(),vd=function(){function f(a){Lb.call(this,a);if(!a.data){var b=a.dict;a=this.data;var c=b.get("A");if(c)if(b=c.get("S").name,"URI"===b){var e=c.get("URI");H(e)?e="/"+e.name:e&&(e=e&&0===e.indexOf("www.")?"http://"+e:e);vb(e,!1)||(e="");a.url=e}else"GoTo"===b?a.dest=c.get("D"):"GoToR"===b?(b=c.get("F"),N(b)&&(e=b.get("F")||""),vb(e,!1)||(e=""),a.url=e,a.dest=c.get("D")):"Named"===b?a.action=c.get("N").name:O("unrecognized link type: "+
+b);else b.has("Dest")&&(e=b.get("Dest"),a.dest=H(e)?e.name:e)}}Q.inherit(f,Lb,{hasOperatorList:function(){return!1},getHtmlElement:function(a){a=this.initContainer();a.className="annotLink";a.style.borderColor=this.data.colorCssRgb;a.style.borderStyle="solid";var b=document.createElement("a");b.href=b.title=this.data.url||"";a.appendChild(b);return a}});return f}(),wc=function(){function f(a,b){this.url=a;b=b||{};this.httpHeaders=(this.isHttp=/^https?:/i.test(a))&&b.httpHeaders||{};this.withCredentials=
+b.withCredentials||!1;this.getXhr=b.getXhr||function(){return new XMLHttpRequest};this.currXhrId=0;this.pendingRequests={};this.loadedRequests={}}f.prototype={requestRange:function(a,b,c){a={begin:a,end:b};for(var e in c)a[e]=c[e];return this.request(a)},requestFull:function(a){return this.request(a)},request:function(a){var b=this.getXhr(),c=this.currXhrId++,e=this.pendingRequests[c]={xhr:b};b.open("GET",this.url);b.withCredentials=this.withCredentials;for(var d in this.httpHeaders){var g=this.httpHeaders[d];
+"undefined"!==typeof g&&b.setRequestHeader(d,g)}this.isHttp&&"begin"in a&&"end"in a?(b.setRequestHeader("Range","bytes="+(a.begin+"-"+(a.end-1))),e.expectedStatus=206):e.expectedStatus=200;b.mozResponseType=b.responseType="arraybuffer";a.onProgress&&(b.onprogress=a.onProgress);a.onError&&(b.onerror=function(c){a.onError(b.status)});b.onreadystatechange=this.onStateChange.bind(this,c);e.onHeadersReceived=a.onHeadersReceived;e.onDone=a.onDone;e.onError=a.onError;b.send(null);return c},onStateChange:function(a,
+b){var c=this.pendingRequests[a];if(c){var e=c.xhr;2<=e.readyState&&c.onHeadersReceived&&(c.onHeadersReceived(),delete c.onHeadersReceived);if(4===e.readyState&&a in this.pendingRequests)if(delete this.pendingRequests[a],0===e.status&&this.isHttp){if(c.onError)c.onError(e.status)}else{var d=e.status||200;if(200===d&&206===c.expectedStatus||d===c.expectedStatus){this.loadedRequests[a]=!0;var g;g=e.mozResponseArrayBuffer||e.mozResponse||e.responseArrayBuffer||e.response;if("string"===typeof g){for(var h=
+g.length,k=new Uint8Array(h),l=0;l<h;l++)k[l]=g.charCodeAt(l)&255;g=k}if(206===d)e=e.getResponseHeader("Content-Range"),e=/bytes (\d+)-(\d+)\/(\d+)/.exec(e),e=parseInt(e[1],10),c.onDone({begin:e,chunk:g});else c.onDone({begin:0,chunk:g})}else if(c.onError)c.onError(e.status)}}},hasPendingRequests:function(){for(var a in this.pendingRequests)return!0;return!1},getRequestXhr:function(a){return this.pendingRequests[a].xhr},isPendingRequest:function(a){return a in this.pendingRequests},isLoadedRequest:function(a){return a in
+this.loadedRequests},abortAllRequests:function(){for(var a in this.pendingRequests)this.abortRequest(a|0)},abortRequest:function(a){var b=this.pendingRequests[a].xhr;delete this.pendingRequests[a];b.abort()}};return f}(),xc=function(){function f(a,b,c){this.bytes=new Uint8Array(a);this.pos=this.start=0;this.end=a;this.chunkSize=b;this.loadedChunks=[];this.numChunksLoaded=0;this.numChunks=Math.ceil(a/b);this.manager=c;this.initialDataLength=0}f.prototype={getMissingChunks:function(){for(var a=[],b=
+0,c=this.numChunks;b<c;++b)b in this.loadedChunks||a.push(b);return a},getBaseStreams:function(){return[this]},allChunksLoaded:function(){return this.numChunksLoaded===this.numChunks},onReceiveData:function(a,b){var c=a+b.byteLength;U(0===a%this.chunkSize,"Bad begin offset: "+a);var e=this.bytes.length;U(0===c%this.chunkSize||c===e,"Bad end offset: "+c);this.bytes.set(new Uint8Array(b),a);e=this.chunkSize;c=Math.floor((c-1)/e)+1;for(e=Math.floor(a/e);e<c;++e)e in this.loadedChunks||(this.loadedChunks[e]=
+!0,++this.numChunksLoaded)},onReceiveInitialData:function(a){this.bytes.set(a);this.initialDataLength=a.length;a=this.end===a.length?this.numChunks:Math.floor(a.length/this.chunkSize);for(var b=0;b<a;b++)this.loadedChunks[b]=!0,++this.numChunksLoaded},ensureRange:function(a,b){if(!(a>=b||b<=this.initialDataLength))for(var c=this.chunkSize,e=Math.floor((b-1)/c)+1,c=Math.floor(a/c);c<e;++c)if(!(c in this.loadedChunks))throw new Va(a,b);},nextEmptyChunk:function(a){var b,c;b=a;for(c=this.numChunks;b<
+c;++b)if(!(b in this.loadedChunks))return b;for(b=0;b<a;++b)if(!(b in this.loadedChunks))return b;return null},hasChunk:function(a){return a in this.loadedChunks},get length(){return this.end-this.start},get isEmpty(){return 0===this.length},getByte:function(){var a=this.pos;if(a>=this.end)return-1;this.ensureRange(a,a+1);return this.bytes[this.pos++]},getUint16:function(){var a=this.getByte(),b=this.getByte();return(a<<8)+b},getInt32:function(){var a=this.getByte(),b=this.getByte(),c=this.getByte(),
+e=this.getByte();return(a<<24)+(b<<16)+(c<<8)+e},getBytes:function(a){var b=this.bytes,c=this.pos,e=this.end;if(!a)return this.ensureRange(c,e),b.subarray(c,e);a=c+a;a>e&&(a=e);this.ensureRange(c,a);this.pos=a;return b.subarray(c,a)},peekBytes:function(a){a=this.getBytes(a);this.pos-=a.length;return a},getByteRange:function(a,b){this.ensureRange(a,b);return this.bytes.subarray(a,b)},skip:function(a){a||(a=1);this.pos+=a},reset:function(){this.pos=this.start},moveStart:function(){this.start=this.pos},
+makeSubStream:function(a,b,c){function e(){}this.ensureRange(a,a+b);e.prototype=Object.create(this);e.prototype.getMissingChunks=function(){for(var a=this.chunkSize,c=Math.floor((this.end-1)/a)+1,b=[],a=Math.floor(this.start/a);a<c;++a)a in this.loadedChunks||b.push(a);return b};var d=new e;d.pos=d.start=a;d.end=a+b||this.end;d.dict=c;return d},isStream:!0};return f}(),yd=function(){function f(a,b,c,e){this.stream=new xc(a,b,this);this.length=a;this.chunkSize=b;this.url=c;this.disableAutoFetch=e.disableAutoFetch;
+var d=this.msgHandler=e.msgHandler;e.chunkedViewerLoading?(d.on("OnDataRange",this.onReceiveData.bind(this)),d.on("OnDataProgress",this.onProgress.bind(this)),this.sendRequest=function(a,c){d.send("RequestDataRange",{begin:a,end:c})}):(this.networkManager=new wc(this.url,{getXhr:function(){return new XMLHttpRequest},httpHeaders:e.httpHeaders,withCredentials:e.withCredentials}),this.sendRequest=function(a,c){this.networkManager.requestRange(a,c,{onDone:this.onReceiveData.bind(this),onProgress:this.onProgress.bind(this)})});
+this.currRequestId=0;this.chunksNeededByRequest={};this.requestsByChunk={};this.callbacksByRequest={};this._loadedStreamCapability=Ia();e.initialData&&this.setInitialData(e.initialData)}f.prototype={setInitialData:function(a){this.stream.onReceiveInitialData(a);this.stream.allChunksLoaded()?this._loadedStreamCapability.resolve(this.stream):this.msgHandler&&this.msgHandler.send("DocProgress",{loaded:a.length,total:this.length})},onLoadedStream:function(){return this._loadedStreamCapability.promise},
+requestAllChunks:function(){var a=this.stream.getMissingChunks();this.requestChunks(a);return this._loadedStreamCapability.promise},requestChunks:function(a,b){var c=this.currRequestId++,e,d,g;this.chunksNeededByRequest[c]=e={};d=0;for(g=a.length;d<g;d++)this.stream.hasChunk(a[d])||(e[a[d]]=!0);if(Hb(e))b&&b();else{this.callbacksByRequest[c]=b;d=[];for(var h in e)h|=0,h in this.requestsByChunk||(this.requestsByChunk[h]=[],d.push(h)),this.requestsByChunk[h].push(c);if(d.length)for(c=this.groupChunks(d),
+d=0;d<c.length;++d)h=c[d],e=h.beginChunk*this.chunkSize,h=Math.min(h.endChunk*this.chunkSize,this.length),this.sendRequest(e,h)}},getStream:function(){return this.stream},requestRange:function(a,b,c){b=Math.min(b,this.length);a=this.getBeginChunk(a);b=this.getEndChunk(b);for(var e=[];a<b;++a)e.push(a);this.requestChunks(e,c)},requestRanges:function(a,b){a=a||[];for(var c=[],e=0;e<a.length;e++)for(var d=this.getBeginChunk(a[e].begin),g=this.getEndChunk(a[e].end);d<g;++d)0>c.indexOf(d)&&c.push(d);c.sort(function(a,
+c){return a-c});this.requestChunks(c,b)},groupChunks:function(a){for(var b=[],c=-1,e=-1,d=0;d<a.length;++d){var g=a[d];0>c&&(c=g);0<=e&&e+1!==g&&(b.push({beginChunk:c,endChunk:e+1}),c=g);d+1===a.length&&b.push({beginChunk:c,endChunk:g+1});e=g}return b},onProgress:function(a){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+a.loaded,total:this.length})},onReceiveData:function(a){var b=a.chunk;a=a.begin;var c=a+b.byteLength,e=this.getBeginChunk(a),c=this.getEndChunk(c);
+this.stream.onReceiveData(a,b);this.stream.allChunksLoaded()&&this._loadedStreamCapability.resolve(this.stream);a=[];for(var d,b=e;b<c;++b){var g=this.requestsByChunk[b]||[];delete this.requestsByChunk[b];for(e=0;e<g.length;++e){d=g[e];var h=this.chunksNeededByRequest[d];b in h&&delete h[b];Hb(h)&&a.push(d)}}if(!this.disableAutoFetch&&Hb(this.requestsByChunk)){var k;1===this.stream.numChunksLoaded?(b=this.stream.numChunks-1,this.stream.hasChunk(b)||(k=b)):k=this.stream.nextEmptyChunk(c);V(k)&&this.requestChunks([k])}for(e=
+0;e<a.length;++e)d=a[e],k=this.callbacksByRequest[d],delete this.callbacksByRequest[d],k&&k();this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})},onError:function(a){this._loadedStreamCapability.reject(a)},getBeginChunk:function(a){return Math.floor(a/this.chunkSize)},getEndChunk:function(a){return 0===a%this.chunkSize?a/this.chunkSize:Math.floor((a-1)/this.chunkSize)+1}};return f}(),bc=65536,cc=function(){function f(){throw Error("Cannot initialize BaseManagerManager");
+}f.prototype={onLoadedStream:function(){throw new db;},ensureDoc:function(a,b){return this.ensure(this.pdfDocument,a,b)},ensureXRef:function(a,b){return this.ensure(this.pdfDocument.xref,a,b)},ensureCatalog:function(a,b){return this.ensure(this.pdfDocument.catalog,a,b)},getPage:function(a){return this.pdfDocument.getPage(a)},cleanup:function(){return this.pdfDocument.cleanup()},ensure:function(a,b,c){return new db},requestRange:function(a,b){return new db},requestLoadedStream:function(){return new db},
+updatePassword:function(a){this.pdfDocument.xref.password=this.password=a;this._passwordChangedCapability&&this._passwordChangedCapability.resolve()},passwordChanged:function(){this._passwordChangedCapability=Ia();return this._passwordChangedCapability.promise},terminate:function(){return new db}};return f}(),yc=function(){function f(a,b){var c=new ha(a);this.pdfDocument=new dc(this,c,b);this._loadedStreamCapability=Ia();this._loadedStreamCapability.resolve(c)}f.prototype=Object.create(cc.prototype);
+f.prototype.constructor=f;f.prototype.ensure=function(a,b,c){return new Promise(function(e,d){try{var g=a[b],h;h="function"===typeof g?g.apply(a,c):g;e(h)}catch(k){d(k)}})};f.prototype.requestRange=function(a,b){return Promise.resolve()};f.prototype.requestLoadedStream=function(){};f.prototype.onLoadedStream=function(){return this._loadedStreamCapability.promise};f.prototype.terminate=function(){};return f}(),zc=function(){function f(a,b){this.msgHandler=b;this.streamManager=new yd(a.length,bc,a.url,
+{msgHandler:b,httpHeaders:a.httpHeaders,withCredentials:a.withCredentials,chunkedViewerLoading:a.chunkedViewerLoading,disableAutoFetch:a.disableAutoFetch,initialData:a.initialData});this.pdfDocument=new dc(this,this.streamManager.getStream(),a.password)}f.prototype=Object.create(cc.prototype);f.prototype.constructor=f;f.prototype.ensure=function(a,b,c){var e=this;return new Promise(function(d,g){function h(){try{var k,l=a[b];k="function"===typeof l?l.apply(a,c):l;d(k)}catch(m){m instanceof Va?e.streamManager.requestRange(m.begin,
+m.end,h):g(m)}}h()})};f.prototype.requestRange=function(a,b){return new Promise(function(c){this.streamManager.requestRange(a,b,function(){c()})}.bind(this))};f.prototype.requestLoadedStream=function(){this.streamManager.requestAllChunks()};f.prototype.onLoadedStream=function(){return this.streamManager.onLoadedStream()};f.prototype.terminate=function(){this.streamManager.networkManager.abortAllRequests()};return f}(),Ad=function(){function f(a,c,e,d,g,h){this.pdfManager=a;this.pageIndex=e;this.pageDict=
+d;this.xref=c;this.ref=g;this.fontCache=h;this.idCounters={obj:0};this.resourcesPromise=null}var a=[0,0,612,792];f.prototype={getPageProp:function(a){return this.pageDict.get(a)},getInheritedPageProp:function(a){for(var c=this.pageDict,e=c.get(a);void 0===e;){c=c.get("Parent");if(!c)break;e=c.get(a)}return e},get content(){return this.getPageProp("Contents")},get resources(){var a=this.getInheritedPageProp("Resources");void 0===a&&(a=oa.empty);return W(this,"resources",a)},get mediaBox(){var b=this.getInheritedPageProp("MediaBox");
+ca(b)&&4===b.length||(b=a);return W(this,"mediaBox",b)},get view(){var a=this.mediaBox,c=this.getInheritedPageProp("CropBox");return ca(c)&&4===c.length?(c=Q.intersect(c,a))?W(this,"view",c):W(this,"view",a):W(this,"view",a)},get annotationRefs(){return W(this,"annotationRefs",this.getInheritedPageProp("Annots"))},get rotate(){var a=this.getInheritedPageProp("Rotate")||0;0!==a%90?a=0:360<=a?a%=360:0>a&&(a=(a%360+360)%360);return W(this,"rotate",a)},getContentStream:function(){var a=this.content;if(ca(a)){var c=
+this.xref,e,d=a.length,g=[];for(e=0;e<d;++e)g.push(c.fetchIfRef(a[e]));a=new zd(g)}else a=da(a)?a:new ec;return a},loadResources:function(a){this.resourcesPromise||(this.resourcesPromise=this.pdfManager.ensure(this,"resources"));return this.resourcesPromise.then(function(){return(new vc(this.resources.map,a,this.xref)).load()}.bind(this))},getOperatorList:function(a,c){var e=this,d=this.pdfManager,g=d.ensure(this,"getContentStream",[]),h=this.loadResources("ExtGState ColorSpace Pattern Shading XObject Font".split(" ")),
+k=new fc(d,this.xref,a,this.pageIndex,"p"+this.pageIndex+"_",this.idCounters,this.fontCache),g=Promise.all([g,h]).then(function(d){d=d[0];var h=new eb(c,a,e.pageIndex);a.send("StartRenderPage",{transparency:k.hasBlendModes(e.resources),pageIndex:e.pageIndex,intent:c});return k.getOperatorList(d,e.resources,h).then(function(){return h})}),h=d.ensure(this,"annotations");return Promise.all([g,h]).then(function(a){var b=a[0];a=a[1];return 0===a.length?(b.flush(!0),b):Ma.appendToOperatorList(a,b,d,k,c).then(function(){b.flush(!0);
+return b})})},extractTextContent:function(){var a={on:function(){},send:function(){}},c=this,e=this.pdfManager,d=e.ensure(this,"getContentStream",[]),g=this.loadResources(["ExtGState","XObject","Font"]);return Promise.all([d,g]).then(function(d){d=d[0];return(new fc(e,c.xref,a,c.pageIndex,"p"+c.pageIndex+"_",c.idCounters,c.fontCache)).getTextContent(d,c.resources)})},getAnnotationsData:function(){for(var a=this.annotations,c=[],e=0,d=a.length;e<d;++e)c.push(a[e].getData());return c},get annotations(){for(var a=
+[],c=this.annotationRefs||[],e=0,d=c.length;e<d;++e){var g=Ma.fromRef(this.xref,c[e]);g&&a.push(g)}return W(this,"annotations",a)}};return f}(),dc=function(){function f(c,b,g){da(b)?a.call(this,c,b,g):"object"==typeof b&&null!==b&&void 0!==b&&"byteLength"in b?a.call(this,c,new ha(b),g):y("PDFDocument: Unknown argument type")}function a(a,c,b){U(0<c.length,"stream must have data");this.pdfManager=a;this.stream=c;this.xref=new Bd(this.stream,b,a)}function b(a,c,b,h){var k=a.pos,l=a.end,m=[];k+b>l&&
+(b=l-k);for(l=0;l<b;++l)m.push(String.fromCharCode(a.getByte()));b=m.join("");a.pos=k;c=h?b.lastIndexOf(c):b.indexOf(c);if(-1==c)return!1;a.pos+=c;return!0}var c={get entries(){return W(this,"entries",{Title:ma,Author:ma,Subject:ma,Keywords:ma,Creator:ma,Producer:ma,CreationDate:ma,ModDate:ma,Trapped:H})}};f.prototype={parse:function(a){this.setup(a);try{if(this.acroForm=this.catalog.catDict.get("AcroForm")){this.xfa=this.acroForm.get("XFA");var c=this.acroForm.get("Fields");c&&ca(c)&&0!==c.length||
+this.xfa||(this.acroForm=null)}}catch(b){R("Something wrong with AcroForm entry"),this.acroForm=null}},get linearization(){var a=this.stream.length,c=!1;if(a)try{c=new Cd(this.stream),c.length!=a&&(c=!1)}catch(b){if(b instanceof Va)throw b;R("The linearization data is not available or unreadable PDF data is found");c=!1}return W(this,"linearization",c)},get startXRef(){var a=this.stream,c=0;if(this.linearization)a.reset(),b(a,"endobj",1024)&&(c=a.pos+6);else{for(var g=!1,h=a.end;!g&&0<h;)h-=1015,
+0>h&&(h=0),a.pos=h,g=b(a,"startxref",1024,!0);if(g){a.skip(9);do c=a.getByte();while(wa.isSpace(c));for(g="";32<=c&&57>=c;)g+=String.fromCharCode(c),c=a.getByte();c=parseInt(g,10);isNaN(c)&&(c=0)}}return W(this,"startXRef",c)},get mainXRefEntriesOffset(){var a=0,c=this.linearization;c&&(a=c.mainXRefEntriesOffset);return W(this,"mainXRefEntriesOffset",a)},checkHeader:function(){var a=this.stream;a.reset();if(b(a,"%PDF-",1024)){a.moveStart();for(var c="",g;32<(g=a.getByte())&&!(12<=c.length);)c+=String.fromCharCode(g);
+this.pdfFormatVersion=c.substring(5)}},parseStartXRef:function(){this.xref.setStartXRef(this.startXRef)},setup:function(a){this.xref.parse(a);this.catalog=new Dd(this.pdfManager,this.xref)},get numPages(){var a=this.linearization;return W(this,"numPages",a?a.numPages:this.catalog.numPages)},get documentInfo(){var a={PDFFormatVersion:this.pdfFormatVersion,IsAcroFormPresent:!!this.acroForm,IsXFAPresent:!!this.xfa},b;try{b=this.xref.trailer.get("Info")}catch(g){R("The document information dictionary is invalid.")}if(b){var h=
+c.entries,k;for(k in h)if(b.has(k)){var l=b.get(k);h[k](l)?a[k]="string"!==typeof l?l:xa(l):R('Bad value in document info for "'+k+'"')}}return W(this,"documentInfo",a)},get fingerprint(){for(var a=this.xref,c="",a=a.trailer.has("ID")?La(a.trailer.get("ID")[0]):Wa(this.stream.bytes.subarray(0,100),0,100),b=0,h=a.length;b<h;b++)c+=a[b].toString(16);return W(this,"fingerprint",c)},getPage:function(a){return this.catalog.getPage(a)},cleanup:function(){return this.catalog.cleanup()}};return f}(),Da=function(){function f(a){this.name=
+a}f.prototype={};var a={};f.get=function(b){var c=a[b];return c?c:a[b]=new f(b)};return f}(),Aa=function(){function f(a){this.cmd=a}f.prototype={};var a={};f.get=function(b){var c=a[b];return c?c:a[b]=new f(b)};return f}(),oa=function(){function f(c){this.map=Object.create(null);this.xref=c;this.objId=null;this.__nonSerializable__=a}var a=function(){return a},b={Background:!0,ExtGState:!0,Halftone:!0,Layout:!0,Mask:!0,Pagination:!0,Printing:!0};f.prototype={assignXref:function(a){this.xref=a},get:function(a,
+b,d){var g,h=this.xref;if("undefined"!=typeof(g=this.map[a])||a in this.map||"undefined"==typeof b||"undefined"!=typeof(g=this.map[b])||b in this.map||"undefined"==typeof d)return h?h.fetchIfRef(g):g;g=this.map[d]||null;return h?h.fetchIfRef(g):g},getAsync:function(a,b,d){var g,h=this.xref;if(void 0!==typeof(g=this.map[a])||a in this.map||void 0===typeof b||void 0!==typeof(g=this.map[b])||b in this.map||void 0===typeof d)return h?h.fetchIfRefAsync(g):Promise.resolve(g);g=this.map[d]||null;return h?
+h.fetchIfRefAsync(g):Promise.resolve(g)},getRaw:function(a){return this.map[a]},getAll:function(){var a=Object.create(null),e=null,d,g;for(d in this.map)g=this.get(d),g instanceof f?(H(g.Type)?!0===b[g.Type.name]:1)?(e||(e=[])).push({target:a,key:d,obj:g}):a[d]=this.getRaw(d):a[d]=g;if(!e)return a;for(var h=Object.create(null);0<e.length;){var k=e.shift(),l=k.obj,m=l.objId;if(m&&m in h)k.target[k.key]=h[m];else{var n=Object.create(null);for(d in l.map)g=l.get(d),g instanceof f?(H(g.Type)?!0===b[g.Type.name]:
+1)?e.push({target:n,key:d,obj:g}):n[d]=l.getRaw(d):n[d]=g;m&&(h[m]=n);k.target[k.key]=n}}return a},set:function(a,b){this.map[a]=b},has:function(a){return a in this.map},forEach:function(a){for(var b in this.map)a(b,this.get(b))}};f.empty=new f(null);return f}(),cb=function(){function f(a,b){this.num=a;this.gen=b}f.prototype={};return f}(),gc=function(){function f(){this.dict={}}f.prototype={has:function(a){return"R"+a.num+"."+a.gen in this.dict},put:function(a){this.dict["R"+a.num+"."+a.gen]=!0},
+remove:function(a){delete this.dict["R"+a.num+"."+a.gen]}};return f}(),Ed=function(){function f(){this.dict=Object.create(null)}f.prototype={get:function(a){return this.dict["R"+a.num+"."+a.gen]},has:function(a){return"R"+a.num+"."+a.gen in this.dict},put:function(a,b){this.dict["R"+a.num+"."+a.gen]=b},putAlias:function(a,b){this.dict["R"+a.num+"."+a.gen]=this.get(b)},forEach:function(a,b){for(var c in this.dict)a.call(b,this.dict[c])},clear:function(){this.dict=Object.create(null)}};return f}(),
+Dd=function(){function f(a,b){this.pdfManager=a;this.xref=b;this.catDict=b.getCatalogObj();this.fontCache=new Ed;U(N(this.catDict),"catalog object is not a dictionary");this.pagePromises=[]}f.prototype={get metadata(){var a=this.catDict.getRaw("Metadata");if(!qa(a))return W(this,"metadata",null);var a=this.xref.fetch(a,!(this.xref.encrypt&&this.xref.encrypt.encryptMetadata)),b;if(a&&N(a.dict)){var c=a.dict.get("Type"),e=a.dict.get("Subtype");if(H(c)&&H(e)&&"Metadata"===c.name&&"XML"===e.name)try{var d=
+na(a.getBytes());b=decodeURIComponent(escape(d))}catch(g){R("Skipping invalid metadata.")}}return W(this,"metadata",b)},get toplevelPagesDict(){var a=this.catDict.get("Pages");U(N(a),"invalid top-level pages dictionary");return W(this,"toplevelPagesDict",a)},get documentOutline(){var a=null;try{a=this.readDocumentOutline()}catch(b){if(b instanceof Va)throw b;O("Unable to read document outline")}return W(this,"documentOutline",a)},readDocumentOutline:function(){var a=this.xref,b=this.catDict.get("Outlines"),
+c={items:[]};if(N(b)){var b=b.getRaw("First"),e=new gc;if(qa(b)){var d=[{obj:b,parent:c}];for(e.put(b);0<d.length;){var g=d.shift(),h=a.fetchIfRef(g.obj);if(null!==h){h.has("Title")||y("Invalid outline item");(b=h.get("A"))?b=b.get("D"):h.has("Dest")&&(b=h.getRaw("Dest"),H(b)&&(b=b.name));var k=h.get("Title"),k={dest:b,title:xa(k),color:h.get("C")||[0,0,0],count:h.get("Count"),bold:!!(h.get("F")&2),italic:!!(h.get("F")&1),items:[]};g.parent.items.push(k);b=h.getRaw("First");qa(b)&&!e.has(b)&&(d.push({obj:b,
+parent:k}),e.put(b));b=h.getRaw("Next");qa(b)&&!e.has(b)&&(d.push({obj:b,parent:g.parent}),e.put(b))}}}}return 0<c.items.length?c.items:null},get numPages(){var a=this.toplevelPagesDict.get("Count");U(V(a),"page count in top level pages object is not an integer");return W(this,"num",a)},get destinations(){var a=this.xref,b={},c,e,d=this.catDict.get("Names");d&&d.has("Dests")?c=d.getRaw("Dests"):this.catDict.has("Dests")&&(e=this.catDict.get("Dests"));e&&e.forEach(function(a,c){c&&(b[a]=N(c)?c.get("D"):
+c)});if(c){var a=(new Mb(c,a)).getAll(),g;for(g in a)a.hasOwnProperty(g)&&(b[g]=N(a[g])?a[g].get("D"):a[g])}return W(this,"destinations",b)},get attachments(){var a=this.xref,b=null,c,e=this.catDict.get("Names");e&&(c=e.getRaw("EmbeddedFiles"));if(c){c=(new Mb(c,a)).getAll();for(var d in c)c.hasOwnProperty(d)&&(e=new Fd(c[d],a),b||(b={}),b[xa(d)]=e.serializable)}return W(this,"attachments",b)},get javaScript(){var a=this.xref,b=this.catDict.get("Names"),c=[];if(b&&b.has("JavaScript")){var a=(new Mb(b.getRaw("JavaScript"),
+a)).getAll(),e;for(e in a)if(a.hasOwnProperty(e)&&(b=a[e],N(b))){var d=b.get("S");H(d)&&"JavaScript"===d.name&&(b=b.get("JS"),ma(b)||da(b))&&(da(b)&&(b=na(b.getBytes())),c.push(xa(b)))}}b=this.catDict.get("OpenAction");N(b)&&(e=b.get("Type"),a=b.get("S"),b=b.get("N"),H(e)&&"Action"===e.name&&H(a)&&"Named"===a.name&&H(b)&&"Print"===b.name&&c.push("print(true);"));return W(this,"javaScript",c)},cleanup:function(){var a=[];this.fontCache.forEach(function(b){a.push(b)});return Promise.all(a).then(function(a){for(var c=
+0,e=a.length;c<e;c++)delete a[c].dict.translated;this.fontCache.clear()}.bind(this))},getPage:function(a){a in this.pagePromises||(this.pagePromises[a]=this.getPageDict(a).then(function(b){return new Ad(this.pdfManager,this.xref,a,b[0],b[1],this.fontCache)}.bind(this)));return this.pagePromises[a]},getPageDict:function(a){function b(){for(;e.length;){var h=e.pop();if(qa(h)){g.fetchAsync(h).then(function(g){N(g,"Page")||N(g)&&!g.has("Kids")?a===d?c.resolve([g,h]):(d++,b()):(e.push(g),b())}.bind(this),
+c.reject.bind(c));return}U(N(h),"page dictionary kid reference points to wrong type of object");var k=h.get("Count");if(d+k<=a)d+=k;else{var l=h.get("Kids");U(ca(l),"page dictionary kids object is not an array");if(k===l.length)e=[l[a-d]],d=a;else for(k=l.length-1;0<=k;k--)e.push(l[k])}}c.reject("Page index "+a+" not found.")}var c=Ia(),e=[this.catDict.getRaw("Pages")],d=0,g=this.xref;b();return c.promise},getPageIndex:function(a){function b(a){var c=0,b;return e.fetchAsync(a).then(function(a){if(!a)return null;
+b=a.getRaw("Parent");return a.getAsync("Parent")}).then(function(a){return a?a.getAsync("Kids"):null}).then(function(d){if(!d)return null;for(var m=[],f=!1,q=0;q<d.length;q++){var s=d[q];U(qa(s),"kids must be a ref");if(s.num==a.num){f=!0;break}m.push(e.fetchAsync(s).then(function(a){a.has("Count")?(a=a.get("Count"),c+=a):c++}))}f||y("kid ref not found in parents kids");return Promise.all(m).then(function(){return[c,b]})})}function c(a){return b(a).then(function(a){if(!a)return d;var b=a[1];d+=a[0];
+return c(b)})}var e=this.xref,d=0;return c(a)}};return f}(),Bd=function(){function f(a,b){this.stream=a;this.entries=[];this.xrefstms={};this.cache=[];this.password=b}f.prototype={setStartXRef:function(a){this.startXRefQueue=[a]},parse:function(a){a?(O("Indexing all PDF objects"),a=this.indexObjects()):a=this.readXRef();a.assignXref(this);this.trailer=a;var b=a.get("Encrypt");if(b){var c=a.get("ID");this.encrypt=new Gd(b,c&&c.length?c[0]:"",this.password)}(this.root=a.get("Root"))||y("Invalid root reference")},
+processXRefTable:function(a){"tableState"in this||(this.tableState={entryNum:0,streamPos:a.lexer.stream.pos,parserBuf1:a.buf1,parserBuf2:a.buf2});var b=this.readXRefTable(a);Y(b,"trailer")||y("Invalid XRef table: could not find trailer dictionary");a=a.getObj();!N(a)&&a.dict&&(a=a.dict);N(a)||y("Invalid XRef table: could not parse trailer dictionary");delete this.tableState;return a},readXRefTable:function(a){var b=a.lexer.stream,c=this.tableState;b.pos=c.streamPos;a.buf1=c.parserBuf1;a.buf2=c.parserBuf2;
+for(var e;;){if(!("firstEntryNum"in c&&"entryCount"in c)){if(Y(e=a.getObj(),"trailer"))break;c.firstEntryNum=e;c.entryCount=a.getObj()}var d=c.firstEntryNum,g=c.entryCount;V(d)&&V(g)||y("Invalid XRef table: wrong types in subsection header");for(var h=c.entryNum;h<g;h++){c.streamPos=b.pos;c.entryNum=h;c.parserBuf1=a.buf1;c.parserBuf2=a.buf2;var k={};k.offset=a.getObj();k.gen=a.getObj();var l=a.getObj();Y(l,"f")?k.free=!0:Y(l,"n")&&(k.uncompressed=!0);V(k.offset)&&V(k.gen)&&(k.free||k.uncompressed)||
+(console.log(k.offset,k.gen,k.free,k.uncompressed),y("Invalid entry in XRef subsection: "+d+", "+g));this.entries[h+d]||(this.entries[h+d]=k)}c.entryNum=0;c.streamPos=b.pos;c.parserBuf1=a.buf1;c.parserBuf2=a.buf2;delete c.firstEntryNum;delete c.entryCount}1===d&&this.entries[1]&&this.entries[1].free&&this.entries.shift();this.entries[0]&&!this.entries[0].free&&y("Invalid XRef table: unexpected first object");return e},processXRefStream:function(a){if(!("streamState"in this)){var b=a.dict,c=b.get("W"),
+e=b.get("Index");e||(e=[0,b.get("Size")]);this.streamState={entryRanges:e,byteWidths:c,entryNum:0,streamPos:a.pos}}this.readXRefStream(a);delete this.streamState;return a.dict},readXRefStream:function(a){var b,c,e=this.streamState;a.pos=e.streamPos;b=e.byteWidths;for(var d=b[0],g=b[1],h=b[2],k=e.entryRanges;0<k.length;){var l=k[0],m=k[1];V(l)&&V(m)||y("Invalid XRef range fields: "+l+", "+m);V(d)&&V(g)&&V(h)||y("Invalid XRef entry fields length: "+l+", "+m);for(b=e.entryNum;b<m;++b){e.entryNum=b;e.streamPos=
+a.pos;var f=0,q=0,s=0;for(c=0;c<d;++c)f=f<<8|a.getByte();0===d&&(f=1);for(c=0;c<g;++c)q=q<<8|a.getByte();for(c=0;c<h;++c)s=s<<8|a.getByte();c={};c.offset=q;c.gen=s;switch(f){case 0:c.free=!0;break;case 1:c.uncompressed=!0;break;case 2:break;default:y("Invalid XRef entry type: "+f)}this.entries[l+b]||(this.entries[l+b]=c)}e.entryNum=0;e.streamPos=a.pos;k.splice(0,2)}},indexObjects:function(){function a(a,c){for(var b="",e=a[c];13!==e&&10!==e&&!(++c>=a.length);)b+=String.fromCharCode(e),e=a[c];return b}
+function b(a,c,b){for(var e=b.length,d=a.length,h=0;c<d;){for(var g=0;g<e&&a[c+g]==b[g];)++g;if(g>=e)break;c++;h++}return h}var c=new Uint8Array([116,114,97,105,108,101,114]),e=new Uint8Array([115,116,97,114,116,120,114,101,102]),d=new Uint8Array([101,110,100,111,98,106]),g=new Uint8Array([47,88,82,101,102]),h=this.stream;h.pos=0;for(var k=h.getBytes(),l=h.start,m=k.length,f=[],q=[];l<m;){var s=k[l];if(32===s||9===s||13===s||10===s)++l;else if(37===s){do{++l;if(l>=m)break;s=k[l]}while(13!==s&&10!==
+s)}else{var s=a(k,l),p;if("xref"===s)l+=b(k,l,c),f.push(l),l+=b(k,l,e);else if(p=/^(\d+)\s+(\d+)\s+obj\b/.exec(s)){this.entries[p[1]]={offset:l,gen:p[2]|0,uncompressed:!0};s=b(k,l,d)+7;p=k.subarray(l,l+s);var x=b(p,0,g);x<s&&64>p[x+5]&&(q.push(l),this.xrefstms[l]=1);l+=s}else l+=s.length+1}}c=0;for(e=q.length;c<e;++c)this.startXRefQueue.push(q[c]),this.readXRef(!0);for(var r,c=0,e=f.length;c<e;++c)if(h.pos=f[c],q=new Xa(new wa(h),!0,null),d=q.getObj(),Y(d,"trailer")&&N(r=q.getObj())&&r.has("ID"))return r;
+if(r)return r;throw new rc("Invalid PDF structure");},readXRef:function(a){var b=this.stream;try{for(;this.startXRefQueue.length;){b.pos=this.startXRefQueue[0]+b.start;var c=new Xa(new wa(b),!0,null),e=c.getObj(),d;if(Y(e,"xref")){if(d=this.processXRefTable(c),this.topDict||(this.topDict=d),e=d.get("XRefStm"),V(e)){var g=e;g in this.xrefstms||(this.xrefstms[g]=1,this.startXRefQueue.push(g))}}else V(e)?(V(c.getObj())&&Y(c.getObj(),"obj")&&da(e=c.getObj())||y("Invalid XRef stream"),d=this.processXRefStream(e),
+this.topDict||(this.topDict=d),d||y("Failed to read XRef stream")):y("Invalid XRef stream header");e=d.get("Prev");V(e)?this.startXRefQueue.push(e):qa(e)&&this.startXRefQueue.push(e.num);this.startXRefQueue.shift()}return this.topDict}catch(h){if(h instanceof Va)throw h;R("(while reading XRef): "+h)}if(!a)throw new tc;},getEntry:function(a){return(a=this.entries[a])&&!a.free&&a.offset?a:null},fetchIfRef:function(a){return qa(a)?this.fetch(a):a},fetch:function(a,b){U(qa(a),"ref object is not a reference");
+var c=a.num;if(c in this.cache)return this.cache[c];var e=this.getEntry(c);if(null===e)return this.cache[c]=null;e=e.uncompressed?this.fetchUncompressed(a,e,b):this.fetchCompressed(e,b);N(e)&&(e.objId="R"+a.num+"."+a.gen);return e},fetchUncompressed:function(a,b,c){var e=a.gen,d=a.num;b.gen!==e&&y("inconsistent generation in XRef");var g=this.stream.makeSubStream(b.offset+this.stream.start),g=new Xa(new wa(g),!0,this),h=g.getObj(),k=g.getObj(),l=g.getObj();V(h)&&parseInt(h,10)===d&&V(k)&&parseInt(k,
+10)===e&&Y(l)||y("bad XRef entry");if(!Y(l,"obj")){if(0===l.cmd.indexOf("obj")&&(d=parseInt(l.cmd.substring(3),10),!isNaN(d)))return d;y("bad XRef entry")}if(this.encrypt&&!c)try{b=g.getObj(this.encrypt.createCipherTransform(d,e))}catch(m){return this.fetch(a,!0)}else b=g.getObj();da(b)||(this.cache[d]=b);return b},fetchCompressed:function(a,b){var c=a.offset,e=this.fetch(new cb(c,0));da(e)||y("bad ObjStm stream");var d=e.dict.get("First"),g=e.dict.get("N");V(d)&&V(g)||y("invalid first and n parameters for ObjStm stream");
+e=new Xa(new wa(e),!1,this);e.allowStreams=!0;for(var h=[],k,l=[],d=0;d<g;++d)k=e.getObj(),V(k)||y("invalid object number in the ObjStm stream: "+k),l.push(k),k=e.getObj(),V(k)||y("invalid object offset in the ObjStm stream: "+k);for(d=0;d<g;++d){h.push(e.getObj());k=l[d];var m=this.entries[k];m&&m.offset===c&&m.gen===d&&(this.cache[k]=h[d])}a=h[a.gen];void 0===a&&y("bad XRef entry for compressed object");return a},fetchIfRefAsync:function(a){return qa(a)?this.fetchAsync(a):Promise.resolve(a)},fetchAsync:function(a,
+b){return new Promise(function(c,e){var d=function(){try{c(this.fetch(a,b))}catch(g){g instanceof Va?this.stream.manager.requestRange(g.begin,g.end,d):e(g)}}.bind(this);d()}.bind(this))},getCatalogObj:function(){return this.root}};return f}(),Mb=function(){function f(a,b){this.root=a;this.xref=b}f.prototype={getAll:function(){var a={};if(!this.root)return a;var b=this.xref,c=new gc;c.put(this.root);for(var e=[this.root];0<e.length;){var d,g;d=b.fetchIfRef(e.shift());if(N(d))if(d.has("Kids")){var h=
+d.get("Kids");d=0;for(g=h.length;d<g;d++){var k=h[d];c.has(k)&&y("invalid destinations");e.push(k);c.put(k)}}else if(h=d.get("Names"))for(d=0,g=h.length;d<g;d+=2)a[h[d]]=b.fetchIfRef(h[d+1])}return a}};return f}(),Fd=function(){function f(a,c){a&&N(a)&&(this.xref=c,this.root=a,a.has("FS")&&(this.fs=a.get("FS")),this.description=a.has("Desc")?xa(a.get("Desc")):"",a.has("RF")&&O("Related file specifications are not supported"),this.contentAvailable=!0,a.has("EF")||(this.contentAvailable=!1,O("Non-embedded file specifications are not supported")))}
+function a(a){return a.has("UF")?a.get("UF"):a.has("F")?a.get("F"):a.has("Unix")?a.get("Unix"):a.has("Mac")?a.get("Mac"):a.has("DOS")?a.get("DOS"):null}f.prototype={get filename(){if(!this._filename&&this.root){var b=a(this.root)||"unnamed";this._filename=xa(b).replace(/\\\\/g,"\\").replace(/\\\//g,"/").replace(/\\/g,"/")}return this._filename},get content(){if(!this.contentAvailable)return null;!this.contentRef&&this.root&&(this.contentRef=a(this.root.get("EF")));var b=null;if(this.contentRef){var c=
+this.xref.fetchIfRef(this.contentRef);c&&da(c)?b=c.getBytes():O("Embedded file specification points to non-existing/invalid content")}else O("Embedded file specification does not have a content");return b},get serializable(){return{filename:this.filename,content:this.content}}};return f}(),vc=function(){function f(a,c){var e;if(N(a)||da(a)){var d;d=N(a)?a.map:a.dict.map;for(var g in d)e=d[g],(qa(e)||N(e)||ca(e)||da(e))&&c.push(e)}else if(ca(a))for(d=0,g=a.length;d<g;d++)e=a[d],(qa(e)||N(e)||ca(e)||
+da(e))&&c.push(e)}function a(a,c,e){this.obj=a;this.keys=c;this.xref=e;this.refSet=null}a.prototype={load:function(){var a=this.keys;this.capability=Ia();if(!(this.xref.stream instanceof xc)||0===this.xref.stream.getMissingChunks().length)return this.capability.resolve(),this.capability.promise;this.refSet=new gc;for(var c=[],e=0;e<a.length;e++)c.push(this.obj[a[e]]);this.walk(c);return this.capability.promise},walk:function(a){for(var c=[],e=[];a.length;){var d=a.pop();if(qa(d)){if(this.refSet.has(d))continue;
+try{this.refSet.put(d),d=this.xref.fetch(d)}catch(g){if(!(g instanceof Va))throw g;c.push(d);e.push({begin:g.begin,end:g.end})}}if(d&&d.getBaseStreams){for(var h=d.getBaseStreams(),k=!1,l=0;l<h.length;l++){var m=h[l];m.getMissingChunks&&m.getMissingChunks().length&&(k=!0,e.push({begin:m.start,end:m.end}))}k&&c.push(d)}f(d,a)}e.length?this.xref.stream.manager.requestRanges(e,function(){a=c;for(var e=0;e<c.length;e++){var d=c[e];qa(d)&&this.refSet.remove(d)}this.walk(a)}.bind(this)):(this.refSet=null,
+this.capability.resolve())}};return a}(),Hd=".notdef space exclam quotedbl numbersign dollar percent ampersand quoteright parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore quoteleft a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde exclamdown cent sterling fraction yen florin section currency quotesingle quotedblleft guillemotleft guilsinglleft guilsinglright fi fl endash dagger daggerdbl periodcentered paragraph bullet quotesinglbase quotedblbase quotedblright guillemotright ellipsis perthousand questiondown grave acute circumflex tilde macron breve dotaccent dieresis ring cedilla hungarumlaut ogonek caron emdash AE ordfeminine Lslash Oslash OE ordmasculine ae dotlessi lslash oslash oe germandbls onesuperior logicalnot mu trademark Eth onehalf plusminus Thorn onequarter divide brokenbar degree thorn threequarters twosuperior registered minus eth multiply threesuperior copyright Aacute Acircumflex Adieresis Agrave Aring Atilde Ccedilla Eacute Ecircumflex Edieresis Egrave Iacute Icircumflex Idieresis Igrave Ntilde Oacute Ocircumflex Odieresis Ograve Otilde Scaron Uacute Ucircumflex Udieresis Ugrave Yacute Ydieresis Zcaron aacute acircumflex adieresis agrave aring atilde ccedilla eacute ecircumflex edieresis egrave iacute icircumflex idieresis igrave ntilde oacute ocircumflex odieresis ograve otilde scaron uacute ucircumflex udieresis ugrave yacute ydieresis zcaron".split(" "),
+Id=".notdef space exclamsmall Hungarumlautsmall dollaroldstyle dollarsuperior ampersandsmall Acutesmall parenleftsuperior parenrightsuperior twodotenleader onedotenleader comma hyphen period fraction zerooldstyle oneoldstyle twooldstyle threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle eightoldstyle nineoldstyle colon semicolon commasuperior threequartersemdash periodsuperior questionsmall asuperior bsuperior centsuperior dsuperior esuperior isuperior lsuperior msuperior nsuperior osuperior rsuperior ssuperior tsuperior ff fi fl ffi ffl parenleftinferior parenrightinferior Circumflexsmall hyphensuperior Gravesmall Asmall Bsmall Csmall Dsmall Esmall Fsmall Gsmall Hsmall Ismall Jsmall Ksmall Lsmall Msmall Nsmall Osmall Psmall Qsmall Rsmall Ssmall Tsmall Usmall Vsmall Wsmall Xsmall Ysmall Zsmall colonmonetary onefitted rupiah Tildesmall exclamdownsmall centoldstyle Lslashsmall Scaronsmall Zcaronsmall Dieresissmall Brevesmall Caronsmall Dotaccentsmall Macronsmall figuredash hypheninferior Ogoneksmall Ringsmall Cedillasmall onequarter onehalf threequarters questiondownsmall oneeighth threeeighths fiveeighths seveneighths onethird twothirds zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior centinferior dollarinferior periodinferior commainferior Agravesmall Aacutesmall Acircumflexsmall Atildesmall Adieresissmall Aringsmall AEsmall Ccedillasmall Egravesmall Eacutesmall Ecircumflexsmall Edieresissmall Igravesmall Iacutesmall Icircumflexsmall Idieresissmall Ethsmall Ntildesmall Ogravesmall Oacutesmall Ocircumflexsmall Otildesmall Odieresissmall OEsmall Oslashsmall Ugravesmall Uacutesmall Ucircumflexsmall Udieresissmall Yacutesmall Thornsmall Ydieresissmall".split(" "),
+Jd=".notdef space dollaroldstyle dollarsuperior parenleftsuperior parenrightsuperior twodotenleader onedotenleader comma hyphen period fraction zerooldstyle oneoldstyle twooldstyle threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle eightoldstyle nineoldstyle colon semicolon commasuperior threequartersemdash periodsuperior asuperior bsuperior centsuperior dsuperior esuperior isuperior lsuperior msuperior nsuperior osuperior rsuperior ssuperior tsuperior ff fi fl ffi ffl parenleftinferior parenrightinferior hyphensuperior colonmonetary onefitted rupiah centoldstyle figuredash hypheninferior onequarter onehalf threequarters oneeighth threeeighths fiveeighths seveneighths onethird twothirds zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior centinferior dollarinferior periodinferior commainferior".split(" "),
+Ea=function(){return{getSampleArray:function(f,a,b,c){var e,d,g=1;e=0;for(d=f.length;e<d;e++)g*=f[e];g*=a;f=[];d=a=0;var h=1/(Math.pow(2,b)-1);c=c.getBytes((g*b+7)/8);var k=0;for(e=0;e<g;e++){for(;a<b;)d<<=8,d|=c[k++],a+=8;a-=b;f.push((d>>a)*h);d&=(1<<a)-1}return f},getIR:function(f,a){var b=a.dict;b||(b=a);var c=[this.constructSampled,null,this.constructInterpolated,this.constructStiched,this.constructPostScript],e=b.get("FunctionType");(c=c[e])||y("Unknown type of function");return c.call(this,
+a,b,f)},fromIR:function(f){switch(f[0]){case 0:return this.constructSampledFromIR(f);case 2:return this.constructInterpolatedFromIR(f);case 3:return this.constructStichedFromIR(f);default:return this.constructPostScriptFromIR(f)}},parse:function(f,a){var b=this.getIR(f,a);return this.fromIR(b)},constructSampled:function(f,a){function b(a){for(var c=a.length,b=[],e=0,d=0;d<c;d+=2)b[e]=[a[d],a[d+1]],++e;return b}var c=a.get("Domain"),e=a.get("Range");c&&e||y("No domain or range");var d=c.length/2,g=
+e.length/2,c=b(c),e=b(e),h=a.get("Size"),k=a.get("BitsPerSample"),l=a.get("Order")||1;1!==l&&R("No support for cubic spline interpolation: "+l);l=a.get("Encode");if(!l)for(var l=[],m=0;m<d;++m)l.push(0),l.push(h[m]-1);var l=b(l),m=(m=a.get("Decode"))?b(m):e,n=this.getSampleArray(h,g,k,f);return[0,d,c,l,m,n,h,g,Math.pow(2,k)-1,e]},constructSampledFromIR:function(f){return function(a){var b=f[1],c=f[2],e=f[3],d=f[4],g=f[5],h=f[6],k=f[7],l=f[9];b!=a.length&&y("Incorrect number of arguments: "+b+" != "+
+a.length);var m=1<<b,n=new Float64Array(m),q=new Uint32Array(m),s,p;for(p=0;p<m;p++)n[p]=1;var x=k,r=1;for(s=0;s<b;++s){p=c[s][0];var u=c[s][1],v=Math.min(Math.max(a[s],p),u),P=e[s][0]+(e[s][1]-e[s][0])/(u-p)*(v-p),u=h[s],P=Math.min(Math.max(P,0),u-1);p=P<u-1?Math.floor(P):P-1;var v=p+1-P,P=P-p,K=p*x,I=K+x;for(p=0;p<m;p++)p&r?(n[p]*=P,q[p]+=I):(n[p]*=v,q[p]+=K);x*=u;r<<=1}a=new Float64Array(k);for(p=0;p<k;++p){for(s=b=0;s<m;s++)b+=g[q[s]+p]*n[s];b=d[p][0]+(d[p][1]-d[p][0])/1*(b-0);a[p]=Math.min(Math.max(b,
+l[p][0]),l[p][1])}return a}},constructInterpolated:function(f,a){var b=a.get("C0")||[0],c=a.get("C1")||[1],e=a.get("N");ca(b)&&ca(c)||y("Illegal dictionary for interpolated function");for(var d=b.length,g=[],h=0;h<d;++h)g.push(c[h]-b[h]);return[2,b,g,e]},constructInterpolatedFromIR:function(f){var a=f[1],b=f[2],c=f[3],e=b.length;return function(d){d=1==c?d[0]:Math.pow(d[0],c);for(var g=[],h=0;h<e;++h)g.push(a[h]+d*b[h]);return g}},constructStiched:function(f,a,b){(f=a.get("Domain"))||y("No domain");
+1!=f.length/2&&y("Bad domain for stiched function");for(var c=a.get("Functions"),e=[],d=0,g=c.length;d<g;++d)e.push(Ea.getIR(b,b.fetchIfRef(c[d])));b=a.get("Bounds");a=a.get("Encode");return[3,f,b,a,e]},constructStichedFromIR:function(f){var a=f[1],b=f[2],c=f[3];f=f[4];for(var e=[],d=0,g=f.length;d<g;d++)e.push(Ea.fromIR(f[d]));return function(d){d=d[0];var g=a[0],l=a[1];d>l?d=l:d<g&&(d=g);g=0;for(l=b.length;g<l&&!(d<b[g]);++g);l=a[0];0<g&&(l=b[g-1]);var m=a[1];g<b.length&&(m=b[g]);var f=c[2*g];return e[g]([f+
+(d-l)*(c[2*g+1]-f)/(m-l)])}},constructPostScript:function(f,a,b){b=a.get("Domain");a=a.get("Range");b||y("No domain.");a||y("No range.");f=new Kd(f);f=(new Ld(f)).parse();return[4,b,a,f]},constructPostScriptFromIR:function(f){var a=f[2],b=a.length>>1,c=f[1].length>>1,e=new Md(f[3]),d={},g=8192;return function(h){var k,l,m="",f=Array(c);for(k=0;k<c;k++)l=h[k],f[k]=l,m+=l+"_";k=d[m];if(void 0!==k)return k;h=Array(b);var f=e.execute(f),q=f.length-b;for(k=0;k<b;k++){l=f[q+k];var s=a[2*k];l<s?l=s:(s=a[2*
+k+1],l>s&&(l=s));h[k]=l}0<g&&(g--,d[m]=h);return h}}}}(),Nd=function(){function f(a){this.stack=a||[]}f.prototype={push:function(a){100<=this.stack.length&&y("PostScript function stack overflow.");this.stack.push(a)},pop:function(){0>=this.stack.length&&y("PostScript function stack underflow.");return this.stack.pop()},copy:function(a){100<=this.stack.length+a&&y("PostScript function stack overflow.");var b=this.stack,c=b.length-a;for(a-=1;0<=a;a--,c++)b.push(b[c])},index:function(a){this.push(this.stack[this.stack.length-
+a-1])},roll:function(a,b){var c=this.stack,e=c.length-a,d=c.length-1,g=e+(b-Math.floor(b/a)*a),h,k,l;h=e;for(k=d;h<k;h++,k--)l=c[h],c[h]=c[k],c[k]=l;h=e;for(k=g-1;h<k;h++,k--)l=c[h],c[h]=c[k],c[k]=l;h=g;for(k=d;h<k;h++,k--)l=c[h],c[h]=c[k],c[k]=l}};return f}(),Md=function(){function f(a){this.operators=a}f.prototype={execute:function(a){a=new Nd(a);for(var b=0,c=this.operators,e=c.length,d,g;b<e;)if(d=c[b++],"number"==typeof d)a.push(d);else switch(d){case "jz":g=a.pop();(d=a.pop())||(b=g);break;
+case "j":b=d=a.pop();break;case "abs":d=a.pop();a.push(Math.abs(d));break;case "add":g=a.pop();d=a.pop();a.push(d+g);break;case "and":g=a.pop();d=a.pop();za(d)&&za(g)?a.push(d&&g):a.push(d&g);break;case "atan":d=a.pop();a.push(Math.atan(d));break;case "bitshift":g=a.pop();d=a.pop();0<d?a.push(d<<g):a.push(d>>g);break;case "ceiling":d=a.pop();a.push(Math.ceil(d));break;case "copy":d=a.pop();a.copy(d);break;case "cos":d=a.pop();a.push(Math.cos(d));break;case "cvi":d=a.pop()|0;a.push(d);break;case "cvr":break;
+case "div":g=a.pop();d=a.pop();a.push(d/g);break;case "dup":a.copy(1);break;case "eq":g=a.pop();d=a.pop();a.push(d==g);break;case "exch":a.roll(2,1);break;case "exp":g=a.pop();d=a.pop();a.push(Math.pow(d,g));break;case "false":a.push(!1);break;case "floor":d=a.pop();a.push(Math.floor(d));break;case "ge":g=a.pop();d=a.pop();a.push(d>=g);break;case "gt":g=a.pop();d=a.pop();a.push(d>g);break;case "idiv":g=a.pop();d=a.pop();a.push(d/g|0);break;case "index":d=a.pop();a.index(d);break;case "le":g=a.pop();
+d=a.pop();a.push(d<=g);break;case "ln":d=a.pop();a.push(Math.log(d));break;case "log":d=a.pop();a.push(Math.log(d)/Math.LN10);break;case "lt":g=a.pop();d=a.pop();a.push(d<g);break;case "mod":g=a.pop();d=a.pop();a.push(d%g);break;case "mul":g=a.pop();d=a.pop();a.push(d*g);break;case "ne":g=a.pop();d=a.pop();a.push(d!=g);break;case "neg":d=a.pop();a.push(-d);break;case "not":d=a.pop();za(d)?a.push(!d):a.push(~d);break;case "or":g=a.pop();d=a.pop();za(d)&&za(g)?a.push(d||g):a.push(d|g);break;case "pop":a.pop();
+break;case "roll":g=a.pop();d=a.pop();a.roll(d,g);break;case "round":d=a.pop();a.push(Math.round(d));break;case "sin":d=a.pop();a.push(Math.sin(d));break;case "sqrt":d=a.pop();a.push(Math.sqrt(d));break;case "sub":g=a.pop();d=a.pop();a.push(d-g);break;case "true":a.push(!0);break;case "truncate":d=a.pop();d=0>d?Math.ceil(d):Math.floor(d);a.push(d);break;case "xor":g=a.pop();d=a.pop();za(d)&&za(g)?a.push(d!=g):a.push(d^g);break;default:y("Unknown operator "+d)}return a.stack}};return f}(),L=function(){function f(){y("should not call ColorSpace constructor")}
+f.prototype={getRgb:function(a,b){var c=new Uint8Array(3);this.getRgbItem(a,b,c,0);return c},getRgbItem:function(a,b,c,e){y("Should not call ColorSpace.getRgbItem")},getRgbBuffer:function(a,b,c,e,d,g,h){y("Should not call ColorSpace.getRgbBuffer")},getOutputLength:function(a,b){y("Should not call ColorSpace.getOutputLength")},isPassthrough:function(a){return!1},fillRgb:function(a,b,c,e,d,g,h,k,l){var m=b*c,f=null,q=1<<h,s=c!=d||b!=e,p;if(this.isPassthrough(h))f=k;else if(1===this.numComps&&m>q&&"DeviceGray"!==
+this.name&&"DeviceRGB"!==this.name){var x=8>=h?new Uint8Array(q):new Uint16Array(q),r;for(p=0;p<q;p++)x[p]=p;var u=new Uint8Array(3*q);this.getRgbBuffer(x,0,q,u,0,h,0);if(s)for(f=new Uint8Array(3*m),p=x=0;p<m;++p)r=3*k[p],f[x++]=u[r],f[x++]=u[r+1],f[x++]=u[r+2];else for(p=q=0;p<m;++p)r=3*k[p],a[q++]=u[r],a[q++]=u[r+1],a[q++]=u[r+2],q+=l}else s?(f=new Uint8Array(3*m),this.getRgbBuffer(k,0,m,f,0,h,0)):this.getRgbBuffer(k,0,e*g,a,0,h,l);if(f)if(s)jb.resize(f,h,3,b,c,e,d,a,l);else for(p=q=x=0,b=e*g;p<
+b;p++)a[q++]=f[x++],a[q++]=f[x++],a[q++]=f[x++],q+=l},usesZeroToOneRange:!0};f.parse=function(a,b,c){a=f.parseToIR(a,b,c);return a instanceof Rc?a:f.fromIR(a)};f.fromIR=function(a){var b=ca(a)?a[0]:a,c;switch(b){case "DeviceGrayCS":return this.singletons.gray;case "DeviceRgbCS":return this.singletons.rgb;case "DeviceCmykCS":return this.singletons.cmyk;case "CalGrayCS":return b=a[1].WhitePoint,c=a[1].BlackPoint,new Od(b,c,a[1].Gamma);case "PatternCS":return(a=a[1])&&(a=f.fromIR(a)),new Pd(a);case "IndexedCS":return b=
+a[2],c=a[3],new Qd(f.fromIR(a[1]),b,c);case "AlternateCS":return b=a[3],new Rc(a[1],f.fromIR(a[2]),Ea.fromIR(b));case "LabCS":return b=a[1].WhitePoint,c=a[1].BlackPoint,new Rd(b,c,a[1].Range);default:y("Unkown name "+b)}return null};f.parseToIR=function(a,b,c){if(H(a)){var e=c.get("ColorSpace");N(e)&&(e=e.get(a.name))&&(a=e)}a=b.fetchIfRef(a);if(H(a))switch(this.mode=e=a.name,e){case "DeviceGray":case "G":return"DeviceGrayCS";case "DeviceRGB":case "RGB":return"DeviceRgbCS";case "DeviceCMYK":case "CMYK":return"DeviceCmykCS";
+case "Pattern":return["PatternCS",null];default:y("unrecognized colorspace "+e)}else if(ca(a))switch(this.mode=e=a[0].name,e){case "DeviceGray":case "G":return"DeviceGrayCS";case "DeviceRGB":case "RGB":return"DeviceRgbCS";case "DeviceCMYK":case "CMYK":return"DeviceCmykCS";case "CalGray":return b=a[1].getAll(),["CalGrayCS",b];case "CalRGB":return"DeviceRgbCS";case "ICCBased":e=b.fetchIfRef(a[1]).dict.get("N");if(1==e)return"DeviceGrayCS";if(3==e)return"DeviceRgbCS";if(4==e)return"DeviceCmykCS";break;
+case "Pattern":return(a=a[1])&&(a=f.parseToIR(a,b,c)),["PatternCS",a];case "Indexed":case "I":return c=f.parseToIR(a[1],b,c),e=a[2]+1,b=b.fetchIfRef(a[3]),da(b)&&(b=b.getBytes()),["IndexedCS",c,e,b];case "Separation":case "DeviceN":var d=a[1],e=1;H(d)?e=1:ca(d)&&(e=d.length);c=f.parseToIR(a[2],b,c);b=Ea.getIR(b,b.fetchIfRef(a[3]));return["AlternateCS",e,c,b];case "Lab":return b=a[1].getAll(),["LabCS",b];default:y('unimplemented color space object "'+e+'"')}else y('unrecognized color space object: "'+
+a+'"');return null};f.isDefaultDecode=function(a,b){if(!a)return!0;if(2*b!==a.length)return O("The decode map is not the correct length"),!0;for(var c=0,e=a.length;c<e;c+=2)if(0!==a[c]||1!=a[c+1])return!1;return!0};f.singletons={get gray(){return W(this,"gray",new Sd)},get rgb(){return W(this,"rgb",new Td)},get cmyk(){return W(this,"cmyk",new Ud)}};return f}(),Rc=function(){function f(a,b,c){this.name="Alternate";this.numComps=a;this.defaultColor=new Float32Array(a);for(var e=0;e<a;++e)this.defaultColor[e]=
+1;this.base=b;this.tintFn=c}f.prototype={getRgb:L.prototype.getRgb,getRgbItem:function(a,b,c,e){a="subarray"in a?a.subarray(b,b+this.numComps):Array.prototype.slice.call(a,b,b+this.numComps);a=this.tintFn(a);this.base.getRgbItem(a,0,c,e)},getRgbBuffer:function(a,b,c,e,d,g,h){var k,l=this.tintFn,m=this.base;g=1/((1<<g)-1);var f=m.numComps;k=m.usesZeroToOneRange;var q=(m.isPassthrough(8)||!k)&&0===h,s=q?d:0,p=q?e:new Uint8Array(f*c),x=this.numComps,r=new Float32Array(x),u,v;if(k)for(u=0;u<c;u++){for(v=
+0;v<x;v++)r[v]=a[b++]*g;k=l(r);for(v=0;v<f;v++)p[s++]=255*k[v]}else for(u=0;u<c;u++){for(v=0;v<x;v++)r[v]=a[b++]*g;k=l(r);m.getRgbItem(k,0,p,s);s+=f}q||m.getRgbBuffer(p,0,c,e,d,8,h)},getOutputLength:function(a,b){return this.base.getOutputLength(a*this.base.numComps/this.numComps,b)},isPassthrough:L.prototype.isPassthrough,fillRgb:L.prototype.fillRgb,isDefaultDecode:function(a){return L.isDefaultDecode(a,this.numComps)},usesZeroToOneRange:!0};return f}(),Pd=function(){function f(a){this.name="Pattern";
+this.base=a}f.prototype={};return f}(),Qd=function(){function f(a,b,c){this.name="Indexed";this.numComps=1;this.defaultColor=new Uint8Array([0]);this.base=a;this.highVal=b;a=a.numComps*b;var e;if(da(c))e=new Uint8Array(a),c=c.getBytes(a),e.set(c);else if(ma(c))for(e=new Uint8Array(a),b=0;b<a;++b)e[b]=c.charCodeAt(b);else c instanceof Uint8Array||c instanceof Array?e=c:y("Unrecognized lookup table: "+c);this.lookup=e}f.prototype={getRgb:L.prototype.getRgb,getRgbItem:function(a,b,c,e){this.base.getRgbItem(this.lookup,
+a[b]*this.base.numComps,c,e)},getRgbBuffer:function(a,b,c,e,d,g,h){g=this.base;for(var k=g.numComps,l=g.getOutputLength(k,h),m=this.lookup,f=0;f<c;++f){var q=a[b++]*k;g.getRgbBuffer(m,q,1,e,d,8,h);d+=l}},getOutputLength:function(a,b){return this.base.getOutputLength(a*this.base.numComps,b)},isPassthrough:L.prototype.isPassthrough,fillRgb:L.prototype.fillRgb,isDefaultDecode:function(a){return!0},usesZeroToOneRange:!0};return f}(),Sd=function(){function f(){this.name="DeviceGray";this.numComps=1;this.defaultColor=
+new Float32Array([0])}f.prototype={getRgb:L.prototype.getRgb,getRgbItem:function(a,b,c,e){a=255*a[b]|0;c[e]=c[e+1]=c[e+2]=0>a?0:255<a?255:a},getRgbBuffer:function(a,b,c,e,d,g,h){g=255/((1<<g)-1);for(var k=0;k<c;++k){var l=g*a[b++]|0;e[d++]=l;e[d++]=l;e[d++]=l;d+=h}},getOutputLength:function(a,b){return a*(3+b)},isPassthrough:L.prototype.isPassthrough,fillRgb:L.prototype.fillRgb,isDefaultDecode:function(a){return L.isDefaultDecode(a,this.numComps)},usesZeroToOneRange:!0};return f}(),Td=function(){function f(){this.name=
+"DeviceRGB";this.numComps=3;this.defaultColor=new Float32Array([0,0,0])}f.prototype={getRgb:L.prototype.getRgb,getRgbItem:function(a,b,c,e){var d=255*a[b]|0,g=255*a[b+1]|0;a=255*a[b+2]|0;c[e]=0>d?0:255<d?255:d;c[e+1]=0>g?0:255<g?255:g;c[e+2]=0>a?0:255<a?255:a},getRgbBuffer:function(a,b,c,e,d,g,h){if(8===g&&0===h)e.set(a.subarray(b,b+3*c),d);else{g=255/((1<<g)-1);for(var k=0;k<c;++k)e[d++]=g*a[b++]|0,e[d++]=g*a[b++]|0,e[d++]=g*a[b++]|0,d+=h}},getOutputLength:function(a,b){return a*(3+b)/3|0},isPassthrough:function(a){return 8==
+a},fillRgb:L.prototype.fillRgb,isDefaultDecode:function(a){return L.isDefaultDecode(a,this.numComps)},usesZeroToOneRange:!0};return f}(),Ud=function(){function f(a,c,e,d,g){var h=a[c+0]*e,k=a[c+1]*e,l=a[c+2]*e;e*=a[c+3];a=h*(-4.387332384609988*h+54.48615194189176*k+18.82290502165302*l+212.25662451639585*e+-285.2331026137004)+k*(1.7149763477362134*k-5.6096736904047315*l+-17.873870861415444*e-5.497006427196366)+l*(-2.5217340131683033*l-21.248923337353073*e+17.5119270841813)+e*(-21.86122147463605*e-
+189.48180835922747)+255|0;c=h*(8.841041422036149*h+60.118027045597366*k+6.871425592049007*l+31.159100130055922*e+-79.2970844816548)+k*(-15.310361306967817*k+17.575251261109482*l+131.35250912493976*e-190.9453302588951)+l*(4.444339102852739*l+9.8632861493405*e-24.86741582555878)+e*(-20.737325471181034*e-187.80453709719578)+255|0;h=h*(0.8842522430003296*h+8.078677503112928*k+30.89978309703729*l-0.23883238689178934*e+-14.183576799673286)+k*(10.49593273432072*k+63.02378494754052*l+50.606957656360734*e-
+112.23884253719248)+l*(0.03296041114873217*l+115.60384449646641*e+-193.58209356861505)+e*(-22.33816807309886*e-180.12613974708367)+255|0;d[g]=255<a?255:0>a?0:a;d[g+1]=255<c?255:0>c?0:c;d[g+2]=255<h?255:0>h?0:h}function a(){this.name="DeviceCMYK";this.numComps=4;this.defaultColor=new Float32Array([0,0,0,1])}a.prototype={getRgb:L.prototype.getRgb,getRgbItem:function(a,c,e,d){f(a,c,1,e,d)},getRgbBuffer:function(a,c,e,d,g,h,k){h=1/((1<<h)-1);for(var l=0;l<e;l++)f(a,c,h,d,g),c+=4,g+=3+k},getOutputLength:function(a,
+c){return a/4*(3+c)|0},isPassthrough:L.prototype.isPassthrough,fillRgb:L.prototype.fillRgb,isDefaultDecode:function(a){return L.isDefaultDecode(a,this.numComps)},usesZeroToOneRange:!0};return a}(),Od=function(){function f(a,c,e){this.name="CalGray";this.numComps=1;this.defaultColor=new Float32Array([0]);a||y("WhitePoint missing - required for color space CalGray");c=c||[0,0,0];this.XW=a[0];this.YW=a[1];this.ZW=a[2];this.XB=c[0];this.YB=c[1];this.ZB=c[2];this.G=e||1;(0>this.XW||0>this.ZW||1!==this.YW)&&
+y("Invalid WhitePoint components for "+this.name+", no fallback available");if(0>this.XB||0>this.YB||0>this.ZB)R("Invalid BlackPoint for "+this.name+", falling back to default"),this.XB=this.YB=this.ZB=0;0===this.XB&&0===this.YB&&0===this.ZB||O(this.name+", BlackPoint: XB: "+this.XB+", YB: "+this.YB+", ZB: "+this.ZB+", only default values are supported.");1>this.G&&(R("Invalid Gamma: "+this.G+" for "+this.name+", falling back to default"),this.G=1)}function a(a,c,e,d,g,h){c=Math.pow(c[e]*h,a.G);a=
+Math.max(295.8*Math.pow(a.YW*c,0.3333333333333333)-40.8,0)|0;d[g]=a;d[g+1]=a;d[g+2]=a}f.prototype={getRgb:L.prototype.getRgb,getRgbItem:function(b,c,e,d){a(this,b,c,e,d,1)},getRgbBuffer:function(b,c,e,d,g,h,k){h=1/((1<<h)-1);for(var l=0;l<e;++l)a(this,b,c,d,g,h),c+=1,g+=3+k},getOutputLength:function(a,c){return a*(3+c)},isPassthrough:L.prototype.isPassthrough,fillRgb:L.prototype.fillRgb,isDefaultDecode:function(a){return L.isDefaultDecode(a,this.numComps)},usesZeroToOneRange:!0};return f}(),Rd=function(){function f(a,
+b,d){this.name="Lab";this.numComps=3;this.defaultColor=new Float32Array([0,0,0]);a||y("WhitePoint missing - required for color space Lab");b=b||[0,0,0];d=d||[-100,100,-100,100];this.XW=a[0];this.YW=a[1];this.ZW=a[2];this.amin=d[0];this.amax=d[1];this.bmin=d[2];this.bmax=d[3];this.XB=b[0];this.YB=b[1];this.ZB=b[2];(0>this.XW||0>this.ZW||1!==this.YW)&&y("Invalid WhitePoint components, no fallback available");if(0>this.XB||0>this.YB||0>this.ZB)R("Invalid BlackPoint, falling back to default"),this.XB=
+this.YB=this.ZB=0;if(this.amin>this.amax||this.bmin>this.bmax)R("Invalid Range, falling back to defaults"),this.amin=-100,this.amax=100,this.bmin=-100,this.bmax=100}function a(a){return a>=6/29?a*a*a:108/841*(a-4/29)}function b(c,b,d,g,h,k){var l=b[d],f=b[d+1];b=b[d+2];!1!==g&&(l=0+100*l/g,f=c.amin+f*(c.amax-c.amin)/g,b=c.bmin+b*(c.bmax-c.bmin)/g);f=f>c.amax?c.amax:f<c.amin?c.amin:f;b=b>c.bmax?c.bmax:b<c.bmin?c.bmin:b;g=(l+16)/116;l=g-b/200;f=c.XW*a(g+f/500);g=c.YW*a(g);l=c.ZW*a(l);1>c.ZW?(c=3.1339*
+f+-1.617*g+-0.4906*l,b=-0.9785*f+1.916*g+0.0333*l,f=0.072*f+-0.229*g+1.4057*l):(c=3.2406*f+-1.5372*g+-0.4986*l,b=-0.9689*f+1.8758*g+0.0415*l,f=0.0557*f+-0.204*g+1.057*l);h[k]=0>=c?0:1<=c?255:255*Math.sqrt(c)|0;h[k+1]=0>=b?0:1<=b?255:255*Math.sqrt(b)|0;h[k+2]=0>=f?0:1<=f?255:255*Math.sqrt(f)|0}f.prototype={getRgb:L.prototype.getRgb,getRgbItem:function(a,e,d,g){b(this,a,e,!1,d,g)},getRgbBuffer:function(a,e,d,g,h,k,l){k=(1<<k)-1;for(var f=0;f<d;f++)b(this,a,e,k,g,h),e+=3,h+=3+l},getOutputLength:function(a,
+b){return a*(3+b)/3|0},isPassthrough:L.prototype.isPassthrough,isDefaultDecode:function(a){return!0},usesZeroToOneRange:!1};return f}(),Na=function(){function f(a){this.b=this.a=0;var b=new Uint8Array(256),c,e=0,d,g=a.length;for(c=0;256>c;++c)b[c]=c;for(c=0;256>c;++c)d=b[c],e=e+d+a[c%g]&255,b[c]=b[e],b[e]=d;this.s=b}f.prototype={encryptBlock:function(a){var b,c=a.length,e,d,g=this.a,h=this.b,k=this.s,l=new Uint8Array(c);for(b=0;b<c;++b)g=g+1&255,e=k[g],h=h+e&255,d=k[h],k[g]=d,k[h]=e,l[b]=a[b]^k[e+
+d&255];this.a=g;this.b=h;return l}};f.prototype.decryptBlock=f.prototype.encryptBlock;return f}(),Wa=function(){var f=new Uint8Array([7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21]),a=new Int32Array([-680876936,-389564586,606105819,-1044525330,-176418897,1200080426,-1473231341,-45705983,1770035416,-1958414417,-42063,-1990404162,1804603682,-40341101,-1502002290,1236535329,-165796510,
+-1069501632,643717713,-373897302,-701558691,38016083,-660478335,-405537848,568446438,-1019803690,-187363961,1163531501,-1444681467,-51403784,1735328473,-1926607734,-378558,-2022574463,1839030562,-35309556,-1530992060,1272893353,-155497632,-1094730640,681279174,-358537222,-722521979,76029189,-640364487,-421815835,530742520,-995338651,-198630844,1126891415,-1416354905,-57434055,1700485571,-1894986606,-1051523,-2054922799,1873313359,-30611744,-1560198380,1309151649,-145523070,-1120210379,718787259,-343485551]);
+return function(b,c,e){var d=1732584193,g=-271733879,h=-1732584194,k=271733878,l=e+72&-64,m=new Uint8Array(l),n;for(n=0;n<e;++n)m[n]=b[c++];m[n++]=128;for(b=l-8;n<b;)m[n++]=0;m[n++]=e<<3&255;m[n++]=e>>5&255;m[n++]=e>>13&255;m[n++]=e>>21&255;m[n++]=e>>>29&255;m[n++]=0;m[n++]=0;m[n++]=0;b=new Int32Array(16);for(n=0;n<l;){for(e=0;16>e;++e,n+=4)b[e]=m[n]|m[n+1]<<8|m[n+2]<<16|m[n+3]<<24;var q=d;c=g;var s=h,p=k,x,r;for(e=0;64>e;++e){16>e?(x=c&s|~c&p,r=e):32>e?(x=p&c|~p&s,r=5*e+1&15):48>e?(x=c^s^p,r=3*e+
+5&15):(x=s^(c|~p),r=7*e&15);var u=p,q=q+x+a[e]+b[r]|0;x=f[e];p=s;s=c;c=c+(q<<x|q>>>32-x)|0;q=u}d=d+q|0;g=g+c|0;h=h+s|0;k=k+p|0}return new Uint8Array([d&255,d>>8&255,d>>16&255,d>>>24&255,g&255,g>>8&255,g>>16&255,g>>>24&255,h&255,h>>8&255,h>>16&255,h>>>24&255,k&255,k>>8&255,k>>16&255,k>>>24&255])}}(),Vd=function(){function f(){}f.prototype={decryptBlock:function(a){return a}};return f}(),Wd=function(){function f(a){var e=new Uint8Array(176);e.set(a);a=16;for(var d=1;176>a;++d)for(var l=e[a-3],f=e[a-
+2],n=e[a-1],q=e[a-4],l=c[l],f=c[f],n=c[n],q=c[q],l=l^b[d],s=0;4>s;++s)e[a]=l^=e[a-16],a++,e[a]=f^=e[a-16],a++,e[a]=n^=e[a-16],a++,e[a]=q^=e[a-16],a++;this.key=e;this.buffer=new Uint8Array(16);this.bufferPosition=0}function a(a,c){var b,l,f;f=a.length;var n=this.buffer;l=this.bufferPosition;var q=[],s=this.iv;for(b=0;b<f;++b)if(n[l]=a[b],++l,!(16>l)){var p,x=n;l=this.key;p=new Uint8Array(16);p.set(x);for(var r=x=void 0,u=void 0,v=r=u=void 0,r=0,u=160;16>r;++r,++u)p[r]^=l[u];for(x=9;1<=x;--x){u=p[13];
+p[13]=p[9];p[9]=p[5];p[5]=p[1];p[1]=u;u=p[14];r=p[10];p[14]=p[6];p[10]=p[2];p[6]=u;p[2]=r;u=p[15];r=p[11];v=p[7];p[15]=p[3];p[11]=u;p[7]=r;p[3]=v;for(r=0;16>r;++r)p[r]=e[p[r]];r=0;for(u=16*x;16>r;++r,++u)p[r]^=l[u];for(r=0;16>r;r+=4){var u=d[p[r+1]],v=d[p[r+2]],P=d[p[r+3]],u=d[p[r]]^u>>>8^u<<24^v>>>16^v<<16^P>>>24^P<<8;p[r]=u>>>24&255;p[r+1]=u>>16&255;p[r+2]=u>>8&255;p[r+3]=u&255}}u=p[13];p[13]=p[9];p[9]=p[5];p[5]=p[1];p[1]=u;u=p[14];r=p[10];p[14]=p[6];p[10]=p[2];p[6]=u;p[2]=r;u=p[15];r=p[11];v=p[7];
+p[15]=p[3];p[11]=u;p[7]=r;p[3]=v;for(r=0;16>r;++r)p[r]=e[p[r]],p[r]^=l[r];for(l=0;16>l;++l)p[l]^=s[l];s=n;q.push(p);n=new Uint8Array(16);l=0}this.buffer=n;this.bufferLength=l;this.iv=s;if(0===q.length)return new Uint8Array([]);b=16*q.length;c&&(f=q[q.length-1],b-=f[15],q[q.length-1]=f.subarray(0,16-f[15]));n=new Uint8Array(b);l=b=0;for(f=q.length;b<f;++b,l+=16)n.set(q[b],l);return n}var b=new Uint8Array([141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,
+239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,
+99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141]),c=new Uint8Array([99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,
+4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,
+8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22]),e=new Uint8Array([82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,
+104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,
+127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125]),d=new Uint32Array([0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,
+3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,
+4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,
+3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,
+3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,
+1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795]);f.prototype={decryptBlock:function(c,b){var e,d=c.length,f=this.buffer,n=this.bufferPosition;for(e=0;16>n&&e<d;++e,
+++n)f[n]=c[e];if(16>n)return this.bufferLength=n,new Uint8Array([]);this.iv=f;this.buffer=new Uint8Array(16);this.bufferLength=0;this.decryptBlock=a;return this.decryptBlock(c.subarray(16),b)}};return f}(),Sc=function(){function f(a,b){this.stringCipherConstructor=a;this.streamCipherConstructor=b}f.prototype={createStream:function(a,b){var c=new this.streamCipherConstructor;return new Xd(a,b,function(a,b){return c.decryptBlock(a,b)})},decryptString:function(a){var b=new this.stringCipherConstructor;
+a=La(a);a=b.decryptBlock(a,!0);return na(a)}};return f}(),Gd=function(){function f(a,c,b,d,f,n,q,s){var p=new Uint8Array(40+b.length+a.length),x=0,r;if(c)for(r=Math.min(32,c.length);x<r;++x)p[x]=c[x];for(c=0;32>x;)p[x++]=e[c++];c=0;for(r=b.length;c<r;++c)p[x++]=b[c];p[x++]=f&255;p[x++]=f>>8&255;p[x++]=f>>16&255;p[x++]=f>>>24&255;c=0;for(r=a.length;c<r;++c)p[x++]=a[c];4<=n&&!s&&(p[x++]=255,p[x++]=255,p[x++]=255,p[x++]=255);r=Wa(p,0,x);x=q>>3;if(3<=n)for(c=0;50>c;++c)r=Wa(r,0,x);q=r.subarray(0,x);if(3<=
+n){for(x=0;32>x;++x)p[x]=e[x];c=0;for(r=a.length;c<r;++c)p[x++]=a[c];a=new Na(q);p=a.encryptBlock(Wa(p,0,x));r=q.length;n=new Uint8Array(r);for(c=1;19>=c;++c){for(a=0;a<r;++a)n[a]=q[a]^c;a=new Na(n);p=a.encryptBlock(p)}}else a=new Na(q),p=a.encryptBlock(e);c=0;for(r=p.length;c<r;++c)if(d[c]!=p[c])return null;return q}function a(a,c,b){var l=a.get("Filter");H(l)&&"Standard"==l.name||y("unknown encryption method");this.dict=a;l=a.get("V");(!V(l)||1!=l&&2!=l&&4!=l)&&y("unsupported encryption algorithm");
+this.algorithm=l;var m=a.get("Length")||40;(!V(m)||40>m||0!==m%8)&&y("invalid key length");var n=La(a.get("O")).subarray(0,32),q=La(a.get("U")).subarray(0,32),s=a.get("P"),p=a.get("R"),x=4==l&&!1!==a.get("EncryptMetadata");this.encryptMetadata=x;c=La(c);var r;b&&(r=La(b));var u=f(c,r,n,q,s,p,m,x);if(!u&&!b)throw new Kb("No password given",Jb.NEED_PASSWORD);if(!u&&b){b=r;r=new Uint8Array(32);var u=0,v;for(v=Math.min(32,b.length);u<v;++u)r[u]=b[u];for(b=0;32>u;)r[u++]=e[b++];r=Wa(r,0,u);u=m>>3;if(3<=
+p)for(b=0;50>b;++b)r=Wa(r,0,r.length);var P;if(3<=p){v=n;var K=new Uint8Array(u);for(b=19;0<=b;b--){for(P=0;P<u;++P)K[P]=r[P]^b;P=new Na(K);v=P.encryptBlock(v)}}else P=new Na(r.subarray(0,u)),v=P.encryptBlock(n);u=f(c,v,n,q,s,p,m,x)}if(!u)throw new Kb("Incorrect Password",Jb.INCORRECT_PASSWORD);this.encryptionKey=u;4==l&&(this.cf=a.get("CF"),this.stmf=a.get("StmF")||d,this.strf=a.get("StrF")||d,this.eff=a.get("EFF")||this.strf)}function b(a,c,b,e){var d=new Uint8Array(b.length+9),f,q;f=0;for(q=b.length;f<
+q;++f)d[f]=b[f];d[f++]=a&255;d[f++]=a>>8&255;d[f++]=a>>16&255;d[f++]=c&255;d[f++]=c>>8&255;e&&(d[f++]=115,d[f++]=65,d[f++]=108,d[f++]=84);return Wa(d,0,f).subarray(0,Math.min(b.length+5,16))}function c(a,c,e,d,f){a=a.get(c.name);var n;null!==a&&void 0!==a&&(n=a.get("CFM"));if(!n||"None"==n.name)return function(){return new Vd};if("V2"==n.name)return function(){return new Na(b(e,d,f,!1))};if("AESV2"==n.name)return function(){return new Wd(b(e,d,f,!0))};y("Unknown crypto method")}var e=new Uint8Array([40,
+191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]),d=Da.get("Identity");a.prototype={createCipherTransform:function(a,e){if(4==this.algorithm)return new Sc(c(this.cf,this.stmf,a,e,this.encryptionKey),c(this.cf,this.strf,a,e,this.encryptionKey));var d=b(a,e,this.encryptionKey,!1),l=function(){return new Na(d)};return new Sc(l,l)}};return a}();ya=3;tb=4;Eb=5;Fb=6;ub=7;var Tc=function(){function f(){y("should not call Pattern constructor")}f.prototype=
+{getPattern:function(a){y("Should not call Pattern.getStyle: "+a)}};f.parseShading=function(a,b,c,e){var d=da(a)?a.dict:a;switch(d.get("ShadingType")){case 2:case ya:return new Ca.RadialAxial(d,b,c,e);case tb:case Eb:case Fb:case ub:return new Ca.Mesh(a,b,c,e);default:return Gb.notify(Yb.shadingPattern),new Ca.Dummy}};return f}(),Ca={SMALL_NUMBER:0.01};Ca.RadialAxial=function(){function f(a,b,c,e){this.matrix=b;this.coordsArr=a.get("Coords");this.shadingType=a.get("ShadingType");this.type="Pattern";
+b=a.get("ColorSpace","CS");this.cs=b=L.parse(b,c,e);e=0;var d=1;if(a.has("Domain")){var g=a.get("Domain");e=g[0];d=g[1]}var h=g=!1;a.has("Extend")&&(h=a.get("Extend"),g=h[0],h=h[1]);if(!(this.shadingType!==ya||g&&h)){var k=this.coordsArr[0],l=this.coordsArr[1],f=this.coordsArr[2],n=this.coordsArr[3],q=this.coordsArr[4],s=this.coordsArr[5],k=Math.sqrt((k-n)*(k-n)+(l-q)*(l-q));f<=s+k&&s<=f+k&&O("Unsupported radial gradient.")}this.extendStart=g;this.extendEnd=h;f=a.get("Function");if(ca(f)){for(var p=
+[],s=0,k=f.length;s<k;s++)l=c.fetchIfRef(f[s]),Ib(l)||y("Invalid function"),p.push(Ea.parse(c,l));f=function(a){for(var c=[],b=0,e=p.length;b<e;b++)c.push(p[b](a)[0]);return c}}else Ib(f)||y("Invalid function"),f=Ea.parse(c,f);s=d-e;k=s/10;c=this.colorStops=[];if(e>=d||0>=k)R("Bad shading domain.");else{for(l=e;l<=d;l+=k)n=b.getRgb(f([l]),0),n=Q.makeCssRgb(n),c.push([(l-e)/s,n]);e="transparent";a.has("Background")&&(n=b.getRgb(a.get("Background"),0),e=Q.makeCssRgb(n));g||(c.unshift([0,e]),c[1][0]+=
+Ca.SMALL_NUMBER);h||(c[c.length-1][0]-=Ca.SMALL_NUMBER,c.push([1,e]));this.colorStops=c}}f.prototype={getIR:function(){var a=this.coordsArr,b=this.shadingType,c,e,d,g,h;2==b?(e=[a[0],a[1]],d=[a[2],a[3]],h=g=null,c="axial"):b==ya?(e=[a[0],a[1]],d=[a[3],a[4]],g=a[2],h=a[5],c="radial"):y("getPattern type unknown: "+b);if(a=this.matrix)e=Q.applyTransform(e,a),d=Q.applyTransform(d,a);return["RadialAxial",c,this.colorStops,e,d,g,h]}};return f}();Ca.Mesh=function(){function f(a,c){this.stream=a;this.context=
+c;this.bufferLength=this.buffer=0}function a(a,c){for(var b=a.coords,e=a.colors,d=[],h=[],g=0;c.hasData;){var k=c.readFlag(),l=c.readCoordinate(),f=c.readComponents();if(0===g){U(0<=k&&2>=k,"Unknown type4 flag");switch(k){case 0:g=3;break;case 1:h.push(h[h.length-2],h[h.length-1]);g=1;break;case 2:h.push(h[h.length-3],h[h.length-1]),g=1}d.push(k)}h.push(b.length);b.push(l);e.push(f);g--;c.align()}b=new Int32Array(h);a.figures.push({type:"triangles",coords:b,colors:b})}function b(a,c,b){for(var e=
+a.coords,d=a.colors,h=[];c.hasData;){var g=c.readCoordinate(),k=c.readComponents();h.push(e.length);e.push(g);d.push(k)}c=new Int32Array(h);a.figures.push({type:"lattice",coords:c,colors:c,verticesPerRow:b})}function c(a,c){var b=a.figures[c];U("patch"===b.type,"Unexpected patch mesh figure");for(var e=a.coords,d=a.colors,h=b.coords,b=b.colors,g=Math.min(e[h[0]][0],e[h[3]][0],e[h[12]][0],e[h[15]][0]),k=Math.min(e[h[0]][1],e[h[3]][1],e[h[12]][1],e[h[15]][1]),f=Math.max(e[h[0]][0],e[h[3]][0],e[h[12]][0],
+e[h[15]][0]),$=Math.max(e[h[0]][1],e[h[3]][1],e[h[12]][1],e[h[15]][1]),g=Math.ceil((f-g)*n/(a.bounds[2]-a.bounds[0])),g=Math.max(l,Math.min(m,g)),k=Math.ceil(($-k)*n/(a.bounds[3]-a.bounds[1])),k=Math.max(l,Math.min(m,k)),$=g+1,f=new Int32Array((k+1)*$),z=new Int32Array((k+1)*$),A=0,C=new Uint8Array(3),w=new Uint8Array(3),T=d[b[0]],G=d[b[1]],B=d[b[2]],t=d[b[3]],D=q(k),y=q(g),F=0;F<=k;F++){C[0]=(T[0]*(k-F)+B[0]*F)/k|0;C[1]=(T[1]*(k-F)+B[1]*F)/k|0;C[2]=(T[2]*(k-F)+B[2]*F)/k|0;w[0]=(G[0]*(k-F)+t[0]*F)/
+k|0;w[1]=(G[1]*(k-F)+t[1]*F)/k|0;w[2]=(G[2]*(k-F)+t[2]*F)/k|0;for(var S=0;S<=g;S++,A++)if(0!==F&&F!==k||0!==S&&S!==g){for(var M=0,J=0,ra=0,Oa=0;3>=Oa;Oa++)for(var O=0;3>=O;O++,ra++)var aa=D[F][Oa]*y[S][O],M=M+e[h[ra]][0]*aa,J=J+e[h[ra]][1]*aa;f[A]=e.length;e.push([M,J]);z[A]=d.length;M=new Uint8Array(3);M[0]=(C[0]*(g-S)+w[0]*S)/g|0;M[1]=(C[1]*(g-S)+w[1]*S)/g|0;M[2]=(C[2]*(g-S)+w[2]*S)/g|0;d.push(M)}}f[0]=h[0];z[0]=b[0];f[g]=h[3];z[g]=b[1];f[$*k]=h[12];z[$*k]=b[2];f[$*k+g]=h[15];z[$*k+g]=b[3];a.figures[c]=
+{type:"lattice",coords:f,colors:z,verticesPerRow:$}}function e(a,c){for(var b=a.coords,e=a.colors,d=new Int32Array(16),h=new Int32Array(4);c.hasData;){var g=c.readFlag();U(0<=g&&3>=g,"Unknown type6 flag");var k,f,l=b.length;k=0;for(f=0!==g?8:12;k<f;k++)b.push(c.readCoordinate());var m=e.length;k=0;for(f=0!==g?2:4;k<f;k++)e.push(c.readComponents());var n;switch(g){case 0:d[12]=l+3;d[13]=l+4;d[14]=l+5;d[15]=l+6;d[8]=l+2;d[11]=l+7;d[4]=l+1;d[7]=l+8;d[0]=l;d[1]=l+11;d[2]=l+10;d[3]=l+9;h[2]=m+1;h[3]=m+
+2;h[0]=m;h[1]=m+3;break;case 1:g=d[12];k=d[13];f=d[14];n=d[15];d[12]=l+5;d[13]=l+4;d[14]=l+3;d[15]=l+2;d[8]=l+6;d[11]=l+1;d[4]=l+7;d[7]=l;d[0]=g;d[1]=k;d[2]=f;d[3]=n;g=h[2];k=h[3];h[2]=m+1;h[3]=m;h[0]=g;h[1]=k;break;case 2:d[12]=d[15];d[13]=l+7;d[14]=l+6;d[15]=l+5;d[8]=d[11];d[11]=l+4;d[4]=d[7];d[7]=l+3;d[0]=d[3];d[1]=l;d[2]=l+1;d[3]=l+2;h[2]=h[3];h[3]=m+1;h[0]=h[1];h[1]=m;break;case 3:d[12]=d[0],d[13]=d[1],d[14]=d[2],d[15]=d[3],d[8]=l,d[11]=l+7,d[4]=l+1,d[7]=l+6,d[0]=l+2,d[1]=l+3,d[2]=l+4,d[3]=l+
+5,h[2]=h[0],h[3]=h[1],h[0]=m,h[1]=m+1}d[5]=b.length;b.push([(-4*b[d[0]][0]-b[d[15]][0]+6*(b[d[4]][0]+b[d[1]][0])-2*(b[d[12]][0]+b[d[3]][0])+3*(b[d[13]][0]+b[d[7]][0]))/9,(-4*b[d[0]][1]-b[d[15]][1]+6*(b[d[4]][1]+b[d[1]][1])-2*(b[d[12]][1]+b[d[3]][1])+3*(b[d[13]][1]+b[d[7]][1]))/9]);d[6]=b.length;b.push([(-4*b[d[3]][0]-b[d[12]][0]+6*(b[d[2]][0]+b[d[7]][0])-2*(b[d[0]][0]+b[d[15]][0])+3*(b[d[4]][0]+b[d[14]][0]))/9,(-4*b[d[3]][1]-b[d[12]][1]+6*(b[d[2]][1]+b[d[7]][1])-2*(b[d[0]][1]+b[d[15]][1])+3*(b[d[4]][1]+
+b[d[14]][1]))/9]);d[9]=b.length;b.push([(-4*b[d[12]][0]-b[d[3]][0]+6*(b[d[8]][0]+b[d[13]][0])-2*(b[d[0]][0]+b[d[15]][0])+3*(b[d[11]][0]+b[d[1]][0]))/9,(-4*b[d[12]][1]-b[d[3]][1]+6*(b[d[8]][1]+b[d[13]][1])-2*(b[d[0]][1]+b[d[15]][1])+3*(b[d[11]][1]+b[d[1]][1]))/9]);d[10]=b.length;b.push([(-4*b[d[15]][0]-b[d[0]][0]+6*(b[d[11]][0]+b[d[14]][0])-2*(b[d[12]][0]+b[d[3]][0])+3*(b[d[2]][0]+b[d[8]][0]))/9,(-4*b[d[15]][1]-b[d[0]][1]+6*(b[d[11]][1]+b[d[14]][1])-2*(b[d[12]][1]+b[d[3]][1])+3*(b[d[2]][1]+b[d[8]][1]))/
+9]);a.figures.push({type:"patch",coords:new Int32Array(d),colors:new Int32Array(h)})}}function d(a,c){for(var b=a.coords,e=a.colors,d=new Int32Array(16),h=new Int32Array(4);c.hasData;){var g=c.readFlag();U(0<=g&&3>=g,"Unknown type7 flag");var k,l,f=b.length;k=0;for(l=0!==g?12:16;k<l;k++)b.push(c.readCoordinate());var m=e.length;k=0;for(l=0!==g?2:4;k<l;k++)e.push(c.readComponents());var n;switch(g){case 0:d[12]=f+3;d[13]=f+4;d[14]=f+5;d[15]=f+6;d[8]=f+2;d[9]=f+13;d[10]=f+14;d[11]=f+7;d[4]=f+1;d[5]=
+f+12;d[6]=f+15;d[7]=f+8;d[0]=f;d[1]=f+11;d[2]=f+10;d[3]=f+9;h[2]=m+1;h[3]=m+2;h[0]=m;h[1]=m+3;break;case 1:g=d[12];k=d[13];l=d[14];n=d[15];d[12]=f+5;d[13]=f+4;d[14]=f+3;d[15]=f+2;d[8]=f+6;d[9]=f+11;d[10]=f+10;d[11]=f+1;d[4]=f+7;d[5]=f+8;d[6]=f+9;d[7]=f;d[0]=g;d[1]=k;d[2]=l;d[3]=n;g=h[2];k=h[3];h[2]=m+1;h[3]=m;h[0]=g;h[1]=k;break;case 2:d[12]=d[15];d[13]=f+7;d[14]=f+6;d[15]=f+5;d[8]=d[11];d[9]=f+8;d[10]=f+11;d[11]=f+4;d[4]=d[7];d[5]=f+9;d[6]=f+10;d[7]=f+3;d[0]=d[3];d[1]=f;d[2]=f+1;d[3]=f+2;h[2]=h[3];
+h[3]=m+1;h[0]=h[1];h[1]=m;break;case 3:d[12]=d[0],d[13]=d[1],d[14]=d[2],d[15]=d[3],d[8]=f,d[9]=f+9,d[10]=f+8,d[11]=f+7,d[4]=f+1,d[5]=f+10,d[6]=f+11,d[7]=f+6,d[0]=f+2,d[1]=f+3,d[2]=f+4,d[3]=f+5,h[2]=h[0],h[3]=h[1],h[0]=m,h[1]=m+1}a.figures.push({type:"patch",coords:new Int32Array(d),colors:new Int32Array(h)})}}function g(a){for(var c=a.coords[0][0],b=a.coords[0][1],d=c,e=b,h=1,g=a.coords.length;h<g;h++)var k=a.coords[h][0],f=a.coords[h][1],c=c>k?k:c,b=b>f?f:b,d=d<k?k:d,e=e<f?f:e;a.bounds=[c,b,d,e]}
+function h(a){var c,b,d,e,h=a.coords;e=new Float32Array(2*h.length);d=c=0;for(b=h.length;c<b;c++){var g=h[c];e[d++]=g[0];e[d++]=g[1]}a.coords=e;h=a.colors;e=new Uint8Array(3*h.length);d=c=0;for(b=h.length;c<b;c++)g=h[c],e[d++]=g[0],e[d++]=g[1],e[d++]=g[2];a.colors=e;a=a.figures;c=0;for(b=a.length;c<b;c++)for(d=a[c],h=d.coords,g=d.colors,d=0,e=h.length;d<e;d++)h[d]*=2,g[d]*=3}function k(k,l,x,r){U(da(k),"Mesh data is not a stream");var m=k.dict;this.matrix=l;this.shadingType=m.get("ShadingType");this.type=
+"Pattern";this.bbox=m.get("BBox");l=m.get("ColorSpace","CS");this.cs=l=L.parse(l,x,r);this.background=m.has("Background")?l.getRgb(m.get("Background"),0):null;if(r=m.get("Function"))if(ca(r)){for(var v=[],n=0,q=r.length;n<q;n++){var I=x.fetchIfRef(r[n]);Ib(I)||y("Invalid function");v.push(Ea.parse(x,I))}x=function(a){for(var c=[],b=0,d=v.length;b<d;b++)c.push(v[b](a)[0]);return c}}else Ib(r)||y("Invalid function"),x=Ea.parse(x,r);else x=null;this.coords=[];this.colors=[];this.figures=[];x={bitsPerCoordinate:m.get("BitsPerCoordinate"),
+bitsPerComponent:m.get("BitsPerComponent"),bitsPerFlag:m.get("BitsPerFlag"),decode:m.get("Decode"),colorFn:x,colorSpace:l,numComps:x?1:l.numComps};k=new f(k,x);x=!1;switch(this.shadingType){case tb:a(this,k);break;case Eb:m=m.get("VerticesPerRow")|0;U(2<=m,"Invalid VerticesPerRow");b(this,k,m);break;case Fb:e(this,k);x=!0;break;case ub:d(this,k);x=!0;break;default:y("Unsupported mesh type.")}if(x)for(g(this),m=0,k=this.figures.length;m<k;m++)c(this,m);g(this);h(this)}f.prototype={get hasData(){if(this.stream.end)return this.stream.pos<
+this.stream.end;if(0<this.bufferLength)return!0;var a=this.stream.getByte();if(0>a)return!1;this.buffer=a;this.bufferLength=8;return!0},readBits:function(a){var c=this.buffer,b=this.bufferLength;if(32===a){if(0===b)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;c=c<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();a=this.stream.getByte();this.buffer=a&(1<<b)-1;return(c<<8-b|(a&255)>>b)>>>0}if(8===a&&0===b)return this.stream.getByte();
+for(;b<a;)c=c<<8|this.stream.getByte(),b+=8;this.bufferLength=b-=a;this.buffer=c&(1<<b)-1;return c>>b},align:function(){this.bufferLength=this.buffer=0},readFlag:function(){return this.readBits(this.context.bitsPerFlag)},readCoordinate:function(){var a=this.context.bitsPerCoordinate,c=this.readBits(a),b=this.readBits(a),d=this.context.decode,a=32>a?1/((1<<a)-1):2.3283064365386963E-10;return[c*a*(d[1]-d[0])+d[0],b*a*(d[3]-d[2])+d[2]]},readComponents:function(){for(var a=this.context.numComps,c=this.context.bitsPerComponent,
+b=32>c?1/((1<<c)-1):2.3283064365386963E-10,d=this.context.decode,e=[],h=0,g=4;h<a;h++,g+=2){var k=this.readBits(c);e.push(k*b*(d[g+1]-d[g])+d[g])}this.context.colorFn&&(e=this.context.colorFn(e));return this.context.colorSpace.getRgb(e,0)}};var l=3,m=20,n=20,q=function(){var a=[];return function(c){if(!a[c]){for(var b=[],d=0;d<=c;d++){var e=d/c,h=1-e;b.push(new Float32Array([h*h*h,3*e*h*h,3*e*e*h,e*e*e]))}a[c]=b}return a[c]}}();k.prototype={getIR:function(){return["Mesh",this.shadingType,this.coords,
+this.colors,this.figures,this.bounds,this.matrix,this.bbox,this.background]}};return k}();Ca.Dummy=function(){function f(){this.type="Pattern"}f.prototype={getIR:function(){return["Dummy"]}};return f}();var fc=function(){function f(a,b,d,g,h,k,f){this.pdfManager=a;this.xref=b;this.handler=d;this.pageIndex=g;this.uniquePrefix=h;this.idCounters=k;this.fontCache=f}function a(){this.reset()}a.prototype={check:function(){if(100>++this.checked)return!1;this.checked=0;return this.endTime<=Date.now()},reset:function(){this.endTime=
+Date.now()+20;this.checked=0}};var b=Promise.resolve();f.prototype={hasBlendModes:function(a){if(!N(a))return!1;var b=Object.create(null);a.objId&&(b[a.objId]=!0);for(a=[a];a.length;){var d,g=a.shift(),h=g.get("ExtGState");if(N(h))for(d in h=h.getAll(),h){var k=h[d].BM;if(H(k)&&"Normal"!==k.name)return!0}g=g.get("XObject");if(N(g))for(d in g=g.getAll(),g)h=g[d],da(h)&&(h=h.dict.get("Resources"),!N(h)||h.objId&&b[h.objId]||(a.push(h),h.objId&&(b[h.objId]=!0)))}return!1},buildFormXObject:function(a,
+b,d,g,h){var k=b.dict.get("Matrix"),f=b.dict.get("BBox"),m=b.dict.get("Group");if(m){var n={matrix:k,bbox:f,smask:d,isolated:!1,knockout:!1},q=m.get("S"),s;H(q)&&"Transparency"===q.name&&(n.isolated=m.get("I")||!1,n.knockout=m.get("K")||!1,s=m.has("CS")?L.parse(m.get("CS"),this.xref,a):null);d&&d.backdrop&&(s=s||L.singletons.rgb,d.backdrop=s.getRgb(d.backdrop,0));g.addOp(t.beginGroup,[n])}g.addOp(t.paintFormXObjectBegin,[k,f]);return this.getOperatorList(b,b.dict.get("Resources")||a,g,h).then(function(){g.addOp(t.paintFormXObjectEnd,
+[]);m&&g.addOp(t.endGroup,[n])})},buildPaintImageXObject:function(a,b,d,g,h,k){var f=this,m=b.dict,n=m.get("Width","W"),q=m.get("Height","H");if(n&&Ha(n)&&q&&Ha(q))if(-1!==PDFJS.maxImageSize&&n*q>PDFJS.maxImageSize)O("Image exceeded maximum allowed size and was removed.");else if(m.get("ImageMask","IM")){a=m.get("Width","W");d=m.get("Height","H");var s=b.getBytes((a+7>>3)*d),m=m.get("Decode","D");b=jb.createMask(s,a,d,b instanceof Z,!!m&&0<m[0]);b.cached=!0;n=[b];g.addOp(t.paintImageMaskXObject,n);
+h&&(k.key=h,k.fn=t.paintImageMaskXObject,k.args=n)}else if(s=m.get("SMask","SM")||!1,m=m.get("Mask")||!1,d&&!(s||m||b instanceof xb)&&200>n+q)b=(new jb(this.xref,a,b,d,null,null)).createImageData(!0),g.addOp(t.paintInlineImageXObject,[b]);else{var p="img_"+(this.uniquePrefix||"")+ ++this.idCounters.obj;g.addDependency(p);n=[p,n,q];!s&&!m&&b instanceof xb&&b.isNativelySupported(this.xref,a)?(g.addOp(t.paintJpegXObject,n),this.handler.send("obj",[p,this.pageIndex,"JpegStream",b.getIR()])):(jb.buildImage(f.handler,
+f.xref,a,b,d).then(function(a){a=a.createImageData(!1);f.handler.send("obj",[p,f.pageIndex,"Image",a],[a.data.buffer])}).then(null,function(a){O("Unable to decode image: "+a);f.handler.send("obj",[p,f.pageIndex,"Image",null])}),g.addOp(t.paintImageXObject,n),h&&(k.key=h,k.fn=t.paintImageXObject,k.args=n))}else O("Image dimensions are missing, or not numbers.")},handleSMask:function(a,b,d,g){var h=a.get("G");a={subtype:a.get("S").name,backdrop:a.get("BC")};return this.buildFormXObject(b,h,a,d,g.state.clone())},
+handleTilingType:function(a,b,d,g,h,k){var f=new eb;return this.getOperatorList(g,h.get("Resources")||d,f).then(function(){k.addDependencies(f.dependencies);k.addOp(a,qd({fnArray:f.fnArray,argsArray:f.argsArray},h,b))})},handleSetFont:function(a,b,d,g,h){var k;b&&(b=b.slice(),k=b[0].name);var f=this;return this.loadFont(k,d,this.xref,a).then(function(b){return b.font.isType3Font?b.loadType3Data(f,a,g).then(function(){return b}):b}).then(function(a){h.font=a.font;a.send(f.handler);return a.loadedName})},
+handleText:function(a,b){var d=b.font,g=d.charsToGlyphs(a),h=!!(b.textRenderingMode&4);if(d.data&&(h||PDFJS.disableFontFace))for(var h=function(a){if(!d.renderer.hasBuiltPath(a)){var c=d.renderer.getPathJs(a);this.handler.send("commonobj",[d.loadedName+"_path_"+a,"FontPath",c])}}.bind(this),k=0,f=g.length;k<f;k++){var m=g[k];null!==m&&(h(m.fontChar),(m=m.accent)&&m.fontChar&&h(m.fontChar))}return g},setGState:function(a,b,d,g,h){function k(b,e,k){switch(e){case "Type":break;case "LW":case "LC":case "LJ":case "ML":case "D":case "RI":case "FL":case "CA":case "ca":b.push([e,
+k]);break;case "Font":n=n.then(function(){return m.handleSetFont(a,null,k[0],d,h.state).then(function(a){d.addDependency(a);b.push([e,[a,k[1]]])})});break;case "BM":b.push([e,k]);break;case "SMask":if(H(k)&&"None"===k.name){b.push([e,!1]);break}var f=g.fetchIfRef(k);N(f)?(n=n.then(function(){return m.handleSMask(f,a,d,h)}),b.push([e,!0])):O("Unsupported SMask type");break;case "OP":case "op":case "OPM":case "BG":case "BG2":case "UCR":case "UCR2":case "TR":case "TR2":case "HT":case "SM":case "SA":case "AIS":case "TK":R("graphic state operator "+
+e);break;default:R("Unknown graphic state operator "+e)}}var f=[];b=b.map;var m=this,n=Promise.resolve(),q;for(q in b)k(f,q,b[q]);return n.then(function(){d.addOp(t.setGState,[f])})},loadFont:function(a,b,d,g){function h(){return Promise.resolve(new hc("g_font_error",new Uc("Font "+a+" is not available"),b))}if(b)U(qa(b)),g=b;else if(g=g.get("Font"))g=g.getRaw(a);else return O("fontRes not available"),h();if(this.fontCache.has(g))return this.fontCache.get(g);b=d.fetchIfRef(g);if(!N(b))return h();
+if(b.translated)return b.translated;var k=Ia(),f=this.preEvaluateFont(b,d),m=f.descriptor,n=g.num+"_"+g.gen;if(N(m)){m.fontAliases||(m.fontAliases=Object.create(null));n=m.fontAliases;m=f.hash;if(n[m]){var q=n[m].aliasRef;if(q&&this.fontCache.has(q))return this.fontCache.putAlias(g,q),this.fontCache.get(g)}n[m]||(n[m]={fontID:yb.getFontID()});n[m].aliasRef=g;n=n[m].fontID}(m=N(g))||this.fontCache.put(g,k.promise);b.loadedName="g_font_"+(m?a.replace(/\W/g,""):n);b.translated=k.promise;var s;try{s=
+Promise.resolve(this.translateFont(f,d))}catch(p){s=Promise.reject(p)}s.then(function(a){k.resolve(new hc(b.loadedName,a,b))},function(a){Gb.notify(Yb.font);k.resolve(new hc(b.loadedName,new Uc(a instanceof Error?a.message:a),b))});return k.promise},buildPath:function(a,b,d){var g=a.length-1;0>g||a.fnArray[g]!==t.constructPath?a.addOp(t.constructPath,[[b],d]):(a=a.argsArray[g],a[0].push(b),Array.prototype.push.apply(a[1],d))},handleColorN:function(a,b,d,g,h,k,f){var m=d[d.length-1],n;if(H(m)&&(n=
+h.get(m.name)))return h=da(n)?n.dict:n,m=h.get("PatternType"),1==m?(f=g.base?g.base.getRgb(d,0):null,this.handleTilingType(b,f,k,n,h,a)):2==m?(n=h.get("Shading"),d=h.get("Matrix"),n=Tc.parseShading(n,d,f,k),a.addOp(b,n.getIR()),Promise.resolve()):Promise.reject("Unknown PatternType: "+m);a.addOp(b,d);return Promise.resolve()},getOperatorList:function(c,e,d,g){var h=this,k=this.xref,f={};U(d);e=e||oa.empty;var m=e.get("XObject")||oa.empty,n=e.get("Pattern")||oa.empty,q=new Vc(g||new Yd),s=new Wc(c,
+k,q),p=new a;return new Promise(function r(a,c){p.reset();for(var g,K,I;!(g=p.check())&&(K=s.read());){g=K.args;I=K.fn;switch(I|0){case t.paintXObject:if(g[0].code)break;var $=g[0].name;if(f.key===$){d.addOp(f.fn,f.args);g=[];continue}var z=m.get($);if(z){U(da(z),"XObject should be a stream");var A=z.dict.get("Subtype");U(H(A),"XObject should have a Name subtype");if("Form"===A.name)return q.save(),h.buildFormXObject(e,z,null,d,q.state.clone()).then(function(){q.restore();r(a,c)},c);if("Image"===
+A.name){h.buildPaintImageXObject(e,z,!1,d,$,f);g=[];continue}else if("PS"===A.name){R("Ignored XObject subtype PS");continue}else y("Unhandled XObject subtype "+A.name)}break;case t.setFont:var C=g[1];return h.handleSetFont(e,g,null,d,q.state).then(function(b){d.addDependency(b);d.addOp(t.setFont,[b,C]);r(a,c)},c);case t.endInlineImage:if((I=g[0].cacheKey)&&f.key===I){d.addOp(f.fn,f.args);g=[];continue}h.buildPaintImageXObject(e,g[0],!0,d,I,f);g=[];continue;case t.showText:g[0]=h.handleText(g[0],
+q.state);break;case t.showSpacedText:$=g[0];z=[];A=$.length;for(I=0;I<A;++I){var w=$[I];ma(w)?Array.prototype.push.apply(z,h.handleText(w,q.state)):Ha(w)&&z.push(w)}g[0]=z;I=t.showText;break;case t.nextLineShowText:d.addOp(t.nextLine);g[0]=h.handleText(g[0],q.state);I=t.showText;break;case t.nextLineSetSpacingShowText:d.addOp(t.nextLine);d.addOp(t.setWordSpacing,[g.shift()]);d.addOp(t.setCharSpacing,[g.shift()]);g[0]=h.handleText(g[0],q.state);I=t.showText;break;case t.setTextRenderingMode:q.state.textRenderingMode=
+g[0];break;case t.setFillColorSpace:q.state.fillColorSpace=L.parse(g[0],k,e);continue;case t.setStrokeColorSpace:q.state.strokeColorSpace=L.parse(g[0],k,e);continue;case t.setFillColor:I=q.state.fillColorSpace;g=I.getRgb(g,0);I=t.setFillRGBColor;break;case t.setStrokeColor:I=q.state.strokeColorSpace;g=I.getRgb(g,0);I=t.setStrokeRGBColor;break;case t.setFillGray:q.state.fillColorSpace=L.singletons.gray;g=L.singletons.gray.getRgb(g,0);I=t.setFillRGBColor;break;case t.setStrokeGray:q.state.strokeColorSpace=
+L.singletons.gray;g=L.singletons.gray.getRgb(g,0);I=t.setStrokeRGBColor;break;case t.setFillCMYKColor:q.state.fillColorSpace=L.singletons.cmyk;g=L.singletons.cmyk.getRgb(g,0);I=t.setFillRGBColor;break;case t.setStrokeCMYKColor:q.state.strokeColorSpace=L.singletons.cmyk;g=L.singletons.cmyk.getRgb(g,0);I=t.setStrokeRGBColor;break;case t.setFillRGBColor:q.state.fillColorSpace=L.singletons.rgb;g=L.singletons.rgb.getRgb(g,0);break;case t.setStrokeRGBColor:q.state.strokeColorSpace=L.singletons.rgb;g=L.singletons.rgb.getRgb(g,
+0);break;case t.setFillColorN:I=q.state.fillColorSpace;if("Pattern"===I.name)return h.handleColorN(d,t.setFillColorN,g,I,n,e,k).then(function(){r(a,c)},c);g=I.getRgb(g,0);I=t.setFillRGBColor;break;case t.setStrokeColorN:I=q.state.strokeColorSpace;if("Pattern"===I.name)return h.handleColorN(d,t.setStrokeColorN,g,I,n,e,k).then(function(){r(a,c)},c);g=I.getRgb(g,0);I=t.setStrokeRGBColor;break;case t.shadingFill:(I=e.get("Shading"))||y("No shading resource found");(g=I.get(g[0].name))||y("No shading object found");
+g=[Tc.parseShading(g,null,k,e).getIR()];I=t.shadingFill;break;case t.setGState:$=g[0];z=e.get("ExtGState");if(!N(z)||!z.has($.name))break;K=z.get($.name);return h.setGState(e,K,d,k,q).then(function(){r(a,c)},c);case t.moveTo:case t.lineTo:case t.curveTo:case t.curveTo2:case t.curveTo3:case t.closePath:h.buildPath(d,I,g);continue}d.addOp(I,g)}if(g)b.then(function(){r(a,c)});else{I=0;for(K=s.savedStatesDepth;I<K;I++)d.addOp(t.restore,[]);a()}})},getTextContent:function(c,e,d){function g(){var a=v.font;
+a.loadedName in m.styles||(m.styles[a.loadedName]={fontFamily:a.fallbackName,ascent:a.ascent,descent:a.descent,vertical:a.vertical});return{str:"",dir:null,width:0,height:0,transform:null,fontName:a.loadedName}}function h(a){var c=PDFJS.bidi(a.str,-1,v.font.vertical);a.str=c.str;a.dir=c.dir;return a}function k(a,c){return q.loadFont(a,c,s,e).then(function(a){v.font=a.font;v.fontMatrix=a.font.fontMatrix||Ja})}function f(a,c){var b=v.font;c=c||g();if(!c.transform){var d=c.transform=Q.transform(v.ctm,
+Q.transform(v.textMatrix,[v.fontSize*v.textHScale,0,0,v.fontSize,0,v.textRise]));b.vertical?c.width=Math.sqrt(d[0]*d[0]+d[1]*d[1]):c.height=Math.sqrt(d[2]*d[2]+d[3]*d[3])}for(var e=d=0,h=b.charsToGlyphs(a),k=0;k<h.length;k++){var l=h[k];if(l){var p=null,p=b.vertical?l.vmetric?l.vmetric[0]:l.width:l.width,l=l.unicode;l in Xc&&(l=Xc[l]);var m=l.length,r;if(!(r=1>=m)){r=l.charCodeAt(0);var x=Nb[13];r>=x.begin&&r<x.end?r=!0:(x=Nb[11],r=r>=x.begin&&r<x.end?!0:!1);r=!r}if(!r){r="";for(m-=1;0<=m;m--)r+=
+l[m];l=r}r=m=0;b.vertical?(r=p*v.fontMatrix[0]*v.fontSize+v.charSpacing,e+=r):(m=(p*v.fontMatrix[0]*v.fontSize+v.charSpacing)*v.textHScale,d+=m);v.translateTextMatrix(m,r);c.str+=l}else d+=v.wordSpacing*v.textHScale}k=v.textLineMatrix[0];p=v.textLineMatrix[1];h=Math.sqrt(k*k+p*p);k=v.ctm[0];p=v.ctm[1];k=Math.sqrt(k*k+p*p);b.vertical?c.height+=Math.abs(e*k*h):c.width+=d*k*h;return c}d=d||new Vc(new Zd);var m={items:[],styles:Object.create(null)},n=m.items,q=this,s=this.xref;e=s.fetchIfRef(e)||oa.empty;
+var p=null,x={},r=new Wc(c,s,d),u,v,P=new a;return new Promise(function I(a,c){P.reset();for(var s;!(s=P.check())&&(u=r.read());)switch(v=d.state,s=u.args,u.fn|0){case t.setFont:return v.fontSize=s[1],k(s[0].name).then(function(){I(a,c)},c);case t.setTextRise:v.textRise=s[0];break;case t.setHScale:v.textHScale=s[0]/100;break;case t.setLeading:v.leading=s[0];break;case t.moveText:v.translateTextLineMatrix(s[0],s[1]);v.textMatrix=v.textLineMatrix.slice();break;case t.setLeadingMoveText:v.leading=-s[1];
+v.translateTextLineMatrix(s[0],s[1]);v.textMatrix=v.textLineMatrix.slice();break;case t.nextLine:v.carriageReturn();break;case t.setTextMatrix:v.setTextMatrix(s[0],s[1],s[2],s[3],s[4],s[5]);v.setTextLineMatrix(s[0],s[1],s[2],s[3],s[4],s[5]);break;case t.setCharSpacing:v.charSpacing=s[0];break;case t.setWordSpacing:v.wordSpacing=s[0];break;case t.beginText:v.textMatrix=Ka.slice();v.textLineMatrix=Ka.slice();break;case t.showSpacedText:s=s[0];for(var C=g(),w,T=0,G=s.length;T<G;T++)if("string"===typeof s[T])f(s[T],
+C);else if(w=s[T]/1E3,v.font.vertical?(w=-w*v.fontSize*v.textMatrix[3],v.translateTextMatrix(0,w),C.height+=w):(w=-w*v.fontSize*v.textHScale*v.textMatrix[0],v.translateTextMatrix(w,0),C.width+=w),0>s[T]&&0<v.font.spaceWidth)if(w=-s[T]/v.font.spaceWidth,1.5<w)for(w=Math.round(w);w--;)C.str+=" ";else 0.35<w&&(C.str+=" ");n.push(h(C));break;case t.showText:n.push(h(f(s[0])));break;case t.nextLineShowText:v.carriageReturn();n.push(h(f(s[0])));break;case t.nextLineSetSpacingShowText:v.wordSpacing=s[0];
+v.charSpacing=s[1];v.carriageReturn();n.push(h(f(s[2])));break;case t.paintXObject:if(s[0].code)break;p||(p=e.get("XObject")||oa.empty);var B=s[0].name;if(x.key===B){x.texts&&(Q.concatenateToArray(n,x.texts.items),Q.extendObj(m.styles,x.texts.styles));break}s=p.get(B);if(!s)break;U(da(s),"XObject should be a stream");C=s.dict.get("Subtype");U(H(C),"XObject should have a Name subtype");if("Form"!==C.name){x.key=B;x.texts=null;break}d.save();var y=s.dict.get("Matrix");ca(y)&&6===y.length&&d.transform(y);
+return q.getTextContent(s,s.dict.get("Resources")||e,d).then(function(b){Q.concatenateToArray(n,b.items);Q.extendObj(m.styles,b.styles);d.restore();x.key=B;x.texts=b;I(a,c)},c);case t.setGState:s=s[0];C=e.get("ExtGState");if(!N(C)||!C.has(s.name))break;s=C.get(s.name);C=null;for(y in s)"Font"===y&&(U(!C),C=s[y]);if(C)return v.fontSize=C[1],k(C[0]).then(function(){I(a,c)},c)}s?b.then(function(){I(a,c)}):a(m)})},extractDataStructures:function(a,b,d,g){if(b=a.get("ToUnicode")||b.get("ToUnicode"))g.toUnicode=
+this.readToUnicode(b,d,g);g.composite&&(d=a.get("CIDSystemInfo"),N(d)&&(g.cidSystemInfo={registry:d.get("Registry"),ordering:d.get("Ordering"),supplement:d.get("Supplement")}),d=a.get("CIDToGIDMap"),da(d)&&(g.cidToGidMap=this.readCidToGidMap(d)));d=[];b=null;var h;if(a.has("Encoding")){h=a.get("Encoding");if(N(h)){if(b=h.get("BaseEncoding"),b=H(b)?b.name:null,h.has("Differences")){h=h.get("Differences");for(var k=0,f=0,m=h.length;f<m;f++){var n=h[f];Ha(n)?k=n:d[k++]=n.name}}}else H(h)?b=h.name:y("Encoding is not a Name nor a Dict");
+"MacRomanEncoding"!==b&&"MacExpertEncoding"!==b&&"WinAnsiEncoding"!==b&&(b=null)}b?g.defaultEncoding=ja[b].slice():(h="TrueType"===g.type?ja.WinAnsiEncoding:ja.StandardEncoding,g.flags&Ba.Symbolic&&(h=!g.file&&/Symbol/i.test(g.name)?ja.SymbolSetEncoding:ja.MacRomanEncoding),g.defaultEncoding=h);g.differences=d;g.baseEncodingName=b;g.dict=a},readToUnicode:function(a){if(H(a))return zb.create(a).map;if(da(a)){var b=zb.create(a).map;b.forEach(function(a,c){for(var h=[],k=0;k<a.length;k+=2){var f=a.charCodeAt(k)<<
+8|a.charCodeAt(k+1);if(55296!==(f&63488))h.push(f);else{var k=k+2,m=a.charCodeAt(k)<<8|a.charCodeAt(k+1);h.push(((f&1023)<<10)+(m&1023)+65536)}}b[c]=String.fromCharCode.apply(String,h)});return b}return null},readCidToGidMap:function(a){a=a.getBytes();for(var b=[],d=0,g=a.length;d<g;d++){var h=a[d++]<<8|a[d];0!==h&&(b[d>>1]=h)}return b},extractWidths:function(a,b,d,g){var h=[],k=0,f=[],m,n,q,s,p,x,r;if(g.composite){k=a.get("DW")||1E3;if(r=a.get("W"))for(n=0,q=r.length;n<q;n++)if(d=r[n++],x=b.fetchIfRef(r[n]),
+ca(x))for(s=0,p=x.length;s<p;s++)h[d++]=x[s];else for(p=r[++n],s=d;s<=x;s++)h[s]=p;if(g.vertical&&(r=a.get("DW2")||[880,-1E3],m=[r[1],0.5*k,r[0]],r=a.get("W2")))for(n=0,q=r.length;n<q;n++)if(d=r[n++],x=b.fetchIfRef(r[n]),ca(x))for(s=0,p=x.length;s<p;s++)f[d++]=[x[s++],x[s++],x[s]];else for(a=[r[++n],r[++n],r[++n]],s=d;s<=x;s++)f[s]=a}else if(b=g.firstChar,r=a.get("Widths")){s=b;n=0;for(q=r.length;n<q;n++)h[s++]=r[n];k=parseFloat(d.get("MissingWidth"))||0}else a=a.get("BaseFont"),H(a)&&(k=this.getBaseFontMetrics(a.name),
+h=this.buildCharCodeToWidth(k.widths,g),k=k.defaultWidth);a=!0;b=k;for(var u in h)if(n=h[u])if(!b)b=n;else if(b!=n){a=!1;break}a&&(g.flags|=Ba.FixedPitch);g.defaultWidth=k;g.widths=h;g.defaultVMetrics=m;g.vmetrics=f},isSerifFont:function(a){a=a.split("-")[0];return a in $d||-1!==a.search(/serif/gi)},getBaseFontMetrics:function(a){var b=0,d=[],g=!1,h=Ob[a]||a;h in Yc||(h=this.isSerifFont(a)?"Times-Roman":"Helvetica");a=Yc[h];Ha(a)?(b=a,g=!0):d=a;return{defaultWidth:b,monospace:g,widths:d}},buildCharCodeToWidth:function(a,
+b){for(var d=Object.create(null),g=b.differences,h=b.defaultEncoding,k=0;256>k;k++)k in g&&a[g[k]]?d[k]=a[g[k]]:k in h&&a[h[k]]&&(d[k]=a[h[k]]);return d},preEvaluateFont:function(a,b){var d=a,g=a.get("Subtype");U(H(g),"invalid font Subtype");var h=!1,k;"Type0"==g.name&&((h=a.get("DescendantFonts"))||y("Descendant fonts are not specified"),a=ca(h)?b.fetchIfRef(h[0]):h,g=a.get("Subtype"),U(H(g),"invalid font Subtype"),h=!0);if(g=a.get("FontDescriptor")){var f=new ae;k=d.getRaw("Encoding");H(k)?f.update(k.name):
+qa(k)&&f.update(k.num+"_"+k.gen);k=a.get("ToUnicode")||d.get("ToUnicode");da(k)?(k=k.str||k,k=k.buffer?new Uint8Array(k.buffer.buffer,0,k.bufferLength):new Uint8Array(k.bytes.buffer,k.start,k.end-k.start),f.update(k)):H(k)&&f.update(k.name);if(k=a.get("Widths")||d.get("Widths"))k=new Uint8Array((new Uint32Array(k)).buffer),f.update(k)}return{descriptor:g,dict:a,baseDict:d,composite:h,hash:f?f.hexdigest():""}},translateFont:function(a,b){var d=a.baseDict,g=a.dict,h=a.composite,k=a.descriptor,f=g.get("Subtype"),
+m=h?65535:255;if(!k)if("Type3"==f.name)k=new oa(null),k.set("FontName",Da.get(f.name));else{d=g.get("BaseFont");H(d)||y("Base font is not specified");var d=d.name.replace(/[,_]/g,"-"),k=this.getBaseFontMetrics(d),n=d.split("-")[0],n=(this.isSerifFont(n)?Ba.Serif:0)|(k.monospace?Ba.FixedPitch:0)|(be[n]?Ba.Symbolic:Ba.Nonsymbolic),m={type:f.name,name:d,widths:k.widths,defaultWidth:k.defaultWidth,flags:n,firstChar:0,lastChar:m};this.extractDataStructures(g,g,b,m);m.widths=this.buildCharCodeToWidth(k.widths,
+m);return new yb(d,null,m)}var q=g.get("FirstChar")||0,s=g.get("LastChar")||m,n=k.get("FontName"),p=g.get("BaseFont");ma(n)&&(n=Da.get(n));ma(p)&&(p=Da.get(p));if("Type3"!==f.name){var x=n&&n.name,r=p&&p.name;x!==r&&(R("The FontDescriptor's FontName is \""+x+'" but should be the same as the Font\'s BaseFont "'+r+'"'),x&&r&&0===r.search(x)&&(n=p))}n=n||p;U(H(n),"invalid font name");if((p=k.get("FontFile","FontFile2","FontFile3"))&&p.dict){var u=p.dict.get("Subtype");u&&(u=u.name);var v=p.dict.get("Length1"),
+P=p.dict.get("Length2")}m={type:f.name,name:n.name,subtype:u,file:p,length1:v,length2:P,loadedName:d.loadedName,composite:h,wideChars:h,fixedPitch:!1,fontMatrix:g.get("FontMatrix")||Ja,firstChar:q||0,lastChar:s||m,bbox:k.get("FontBBox"),ascent:k.get("Ascent"),descent:k.get("Descent"),xHeight:k.get("XHeight"),capHeight:k.get("CapHeight"),flags:k.get("Flags"),italicAngle:k.get("ItalicAngle"),coded:!1};h&&(h=d.get("Encoding"),H(h)&&(m.cidEncoding=h.name),m.cMap=zb.create(h,{url:PDFJS.cMapUrl,packed:PDFJS.cMapPacked},
+null),m.vertical=m.cMap.vertical);this.extractDataStructures(g,d,b,m);this.extractWidths(g,b,k,m);"Type3"===f.name&&(m.isType3Font=!0);return new yb(n.name,p,m)}};return f}(),hc=function(){function f(a,b,c){this.loadedName=a;this.font=b;this.dict=c;this.type3Loaded=null;this.sent=!1}f.prototype={send:function(a){if(!this.sent){var b=this.font.exportData();a.send("commonobj",[this.loadedName,"Font",b]);this.sent=!0}},loadType3Data:function(a,b,c){U(this.font.isType3Font);if(this.type3Loaded)return this.type3Loaded;
+var e=this.font,d=Promise.resolve(),g=this.dict.get("CharProcs").getAll(),h=this.dict.get("Resources")||b;b=Object.keys(g);for(var k={},f=0,m=b.length;f<m;++f)d=d.then(function(b){var d=g[b],e=new eb;return a.getOperatorList(d,h,e).then(function(){k[b]=e.getIR();c.addDependencies(e.dependencies)})}.bind(this,b[f]));return this.type3Loaded=d.then(function(){e.charProcOperatorList=k})}};return f}(),eb=function(){function f(a,b,c){this.messageHandler=b;this.fnArray=[];this.argsArray=[];this.dependencies=
+{};this.pageIndex=c;this.intent=a}f.prototype={get length(){return this.argsArray.length},addOp:function(a,b){this.fnArray.push(a);this.argsArray.push(b);this.messageHandler&&(1E3<=this.fnArray.length?this.flush():995<=this.fnArray.length&&(a===t.restore||a===t.endText)&&this.flush())},addDependency:function(a){a in this.dependencies||(this.dependencies[a]=!0,this.addOp(t.dependency,[a]))},addDependencies:function(a){for(var b in a)this.addDependency(b)},addOpList:function(a){Q.extendObj(this.dependencies,
+a.dependencies);for(var b=0,c=a.length;b<c;b++)this.addOp(a.fnArray[b],a.argsArray[b])},getIR:function(){return{fnArray:this.fnArray,argsArray:this.argsArray,length:this.length}},flush:function(a){(new ce).optimize(this);for(var b=[],c=this.fnArray,e=this.argsArray,d=0,g=this.length;d<g;d++)switch(c[d]){case t.paintInlineImageXObject:case t.paintInlineImageXObjectGroup:case t.paintImageMaskXObject:var h=e[d][0];h.cached||b.push(h.data.buffer)}this.messageHandler.send("RenderPageChunk",{operatorList:{fnArray:this.fnArray,
+argsArray:this.argsArray,lastChunk:a,length:this.length},pageIndex:this.pageIndex,intent:this.intent},b);this.dependencies={};this.fnArray.length=0;this.argsArray.length=0}};return f}(),Vc=function(){function f(a){this.state=a;this.stateStack=[]}f.prototype={save:function(){var a=this.state;this.stateStack.push(this.state);this.state=a.clone()},restore:function(){var a=this.stateStack.pop();a&&(this.state=a)},transform:function(a){this.state.ctm=Q.transform(this.state.ctm,a)}};return f}(),Zd=function(){function f(){this.ctm=
+new Float32Array(Ka);this.fontSize=0;this.font=null;this.fontMatrix=Ja;this.textMatrix=Ka.slice();this.textLineMatrix=Ka.slice();this.leading=this.wordSpacing=this.charSpacing=0;this.textHScale=1;this.textRise=0}f.prototype={setTextMatrix:function(a,b,c,e,d,g){var h=this.textMatrix;h[0]=a;h[1]=b;h[2]=c;h[3]=e;h[4]=d;h[5]=g},setTextLineMatrix:function(a,b,c,e,d,g){var h=this.textLineMatrix;h[0]=a;h[1]=b;h[2]=c;h[3]=e;h[4]=d;h[5]=g},translateTextMatrix:function(a,b){var c=this.textMatrix;c[4]=c[0]*
+a+c[2]*b+c[4];c[5]=c[1]*a+c[3]*b+c[5]},translateTextLineMatrix:function(a,b){var c=this.textLineMatrix;c[4]=c[0]*a+c[2]*b+c[4];c[5]=c[1]*a+c[3]*b+c[5]},calcRenderMatrix:function(a){return Q.transform(a,Q.transform(this.textMatrix,[this.fontSize*this.textHScale,0,0,this.fontSize,0,this.textRise]))},carriageReturn:function(){this.translateTextLineMatrix(0,-this.leading);this.textMatrix=this.textLineMatrix.slice()},clone:function(){var a=Object.create(this);a.textMatrix=this.textMatrix.slice();a.textLineMatrix=
+this.textLineMatrix.slice();a.fontMatrix=this.fontMatrix.slice();return a}};return f}(),Yd=function(){function f(){this.ctm=new Float32Array(Ka);this.font=null;this.textRenderingMode=Xb;this.strokeColorSpace=this.fillColorSpace=L.singletons.gray}f.prototype={clone:function(){return Object.create(this)}};return f}(),Wc=function(){function f(b,c,e){this.parser=new Xa(new wa(b,a),!1,c);this.stateManager=e;this.nonProcessedArgs=[]}var a={w:{id:t.setLineWidth,numArgs:1,variableArgs:!1},J:{id:t.setLineCap,
+numArgs:1,variableArgs:!1},j:{id:t.setLineJoin,numArgs:1,variableArgs:!1},M:{id:t.setMiterLimit,numArgs:1,variableArgs:!1},d:{id:t.setDash,numArgs:2,variableArgs:!1},ri:{id:t.setRenderingIntent,numArgs:1,variableArgs:!1},i:{id:t.setFlatness,numArgs:1,variableArgs:!1},gs:{id:t.setGState,numArgs:1,variableArgs:!1},q:{id:t.save,numArgs:0,variableArgs:!1},Q:{id:t.restore,numArgs:0,variableArgs:!1},cm:{id:t.transform,numArgs:6,variableArgs:!1},m:{id:t.moveTo,numArgs:2,variableArgs:!1},l:{id:t.lineTo,numArgs:2,
+variableArgs:!1},c:{id:t.curveTo,numArgs:6,variableArgs:!1},v:{id:t.curveTo2,numArgs:4,variableArgs:!1},y:{id:t.curveTo3,numArgs:4,variableArgs:!1},h:{id:t.closePath,numArgs:0,variableArgs:!1},re:{id:t.rectangle,numArgs:4,variableArgs:!1},S:{id:t.stroke,numArgs:0,variableArgs:!1},s:{id:t.closeStroke,numArgs:0,variableArgs:!1},f:{id:t.fill,numArgs:0,variableArgs:!1},F:{id:t.fill,numArgs:0,variableArgs:!1},"f*":{id:t.eoFill,numArgs:0,variableArgs:!1},B:{id:t.fillStroke,numArgs:0,variableArgs:!1},"B*":{id:t.eoFillStroke,
+numArgs:0,variableArgs:!1},b:{id:t.closeFillStroke,numArgs:0,variableArgs:!1},"b*":{id:t.closeEOFillStroke,numArgs:0,variableArgs:!1},n:{id:t.endPath,numArgs:0,variableArgs:!1},W:{id:t.clip,numArgs:0,variableArgs:!1},"W*":{id:t.eoClip,numArgs:0,variableArgs:!1},BT:{id:t.beginText,numArgs:0,variableArgs:!1},ET:{id:t.endText,numArgs:0,variableArgs:!1},Tc:{id:t.setCharSpacing,numArgs:1,variableArgs:!1},Tw:{id:t.setWordSpacing,numArgs:1,variableArgs:!1},Tz:{id:t.setHScale,numArgs:1,variableArgs:!1},TL:{id:t.setLeading,
+numArgs:1,variableArgs:!1},Tf:{id:t.setFont,numArgs:2,variableArgs:!1},Tr:{id:t.setTextRenderingMode,numArgs:1,variableArgs:!1},Ts:{id:t.setTextRise,numArgs:1,variableArgs:!1},Td:{id:t.moveText,numArgs:2,variableArgs:!1},TD:{id:t.setLeadingMoveText,numArgs:2,variableArgs:!1},Tm:{id:t.setTextMatrix,numArgs:6,variableArgs:!1},"T*":{id:t.nextLine,numArgs:0,variableArgs:!1},Tj:{id:t.showText,numArgs:1,variableArgs:!1},TJ:{id:t.showSpacedText,numArgs:1,variableArgs:!1},"'":{id:t.nextLineShowText,numArgs:1,
+variableArgs:!1},'"':{id:t.nextLineSetSpacingShowText,numArgs:3,variableArgs:!1},d0:{id:t.setCharWidth,numArgs:2,variableArgs:!1},d1:{id:t.setCharWidthAndBounds,numArgs:6,variableArgs:!1},CS:{id:t.setStrokeColorSpace,numArgs:1,variableArgs:!1},cs:{id:t.setFillColorSpace,numArgs:1,variableArgs:!1},SC:{id:t.setStrokeColor,numArgs:4,variableArgs:!0},SCN:{id:t.setStrokeColorN,numArgs:33,variableArgs:!0},sc:{id:t.setFillColor,numArgs:4,variableArgs:!0},scn:{id:t.setFillColorN,numArgs:33,variableArgs:!0},
+G:{id:t.setStrokeGray,numArgs:1,variableArgs:!1},g:{id:t.setFillGray,numArgs:1,variableArgs:!1},RG:{id:t.setStrokeRGBColor,numArgs:3,variableArgs:!1},rg:{id:t.setFillRGBColor,numArgs:3,variableArgs:!1},K:{id:t.setStrokeCMYKColor,numArgs:4,variableArgs:!1},k:{id:t.setFillCMYKColor,numArgs:4,variableArgs:!1},sh:{id:t.shadingFill,numArgs:1,variableArgs:!1},BI:{id:t.beginInlineImage,numArgs:0,variableArgs:!1},ID:{id:t.beginImageData,numArgs:0,variableArgs:!1},EI:{id:t.endInlineImage,numArgs:1,variableArgs:!1},
+Do:{id:t.paintXObject,numArgs:1,variableArgs:!1},MP:{id:t.markPoint,numArgs:1,variableArgs:!1},DP:{id:t.markPointProps,numArgs:2,variableArgs:!1},BMC:{id:t.beginMarkedContent,numArgs:1,variableArgs:!1},BDC:{id:t.beginMarkedContentProps,numArgs:2,variableArgs:!1},EMC:{id:t.endMarkedContent,numArgs:0,variableArgs:!1},BX:{id:t.beginCompat,numArgs:0,variableArgs:!1},EX:{id:t.endCompat,numArgs:0,variableArgs:!1},BM:null,BD:null,"true":null,fa:null,fal:null,fals:null,"false":null,nu:null,nul:null,"null":null};
+f.prototype={get savedStatesDepth(){return this.stateManager.stateStack.length},read:function(){for(var b=[];;){var c=this.parser.getObj();if(c===ea)return null;if(Y(c)){var e=c.cmd;if(c=a[e]){e=c.id;if(!c.variableArgs&&b.length!==c.numArgs){for(;b.length>c.numArgs;)this.nonProcessedArgs.push(b.shift());for(;b.length<c.numArgs&&this.nonProcessedArgs.length;)b.unshift(this.nonProcessedArgs.pop())}if(c.variableArgs)b.length>c.numArgs&&R("Command "+e+": expected [0,"+c.numArgs+"] args, but received "+
+b.length+" args");else if(b.length<c.numArgs){R("Command "+e+": because expected "+c.numArgs+" args, but received "+b.length+" args; skipping");b=[];continue}else b.length>c.numArgs&&R("Command "+e+": expected "+c.numArgs+" args, but received "+b.length+" args");this.preprocessCommand(e,b);return{fn:e,args:b}}O('Unknown command "'+e+'"')}else null!==c&&void 0!==c&&(b.push(c instanceof oa?c.getAll():c),U(33>=b.length,"Too many arguments"))}},preprocessCommand:function(a,c){switch(a|0){case t.save:this.stateManager.save();
+break;case t.restore:this.stateManager.restore();break;case t.transform:this.stateManager.transform(c)}}};return f}(),ce=function(){function f(a,b,d){for(var g=0,h=b.length-1;g<h;g++){var k=b[g];a=a[k]||(a[k]=[])}a[b[b.length-1]]=d}function a(){}var b=[];f(b,[t.save,t.transform,t.paintInlineImageXObject,t.restore],function(a){for(var b=a.fnArray,d=a.argsArray,g=a.currentOperation-3,h=g+4,k=b.length;h<k&&b[h-4]===b[h];h++);k=Math.min(h-g>>2,200);if(10>k)a.currentOperation=h-1;else{var f=0,h=[],m=0,
+n=1,q=1,s;for(s=0;s<k;s++){var p=d[g+(s<<2)+1],x=d[g+(s<<2)+2][0];1E3<n+x.width&&(f=Math.max(f,n),q+=m+2,m=n=0);h.push({transform:p,x:n,y:q,w:x.width,h:x.height});n+=x.width+2;m=Math.max(m,x.height)}f=Math.max(f,n)+1;m=q+m+1;q=new Uint8Array(f*m*4);n=f<<2;for(s=0;s<k;s++){var p=d[g+(s<<2)+2][0].data,x=h[s].w<<2,r=0,u=h[s].x+h[s].y*f<<2;q.set(p.subarray(0,x),u-n);for(var v=0,P=h[s].h;v<P;v++)q.set(p.subarray(r,r+x),u),r+=x,u+=n;for(q.set(p.subarray(r-x,r),u);0<=u;)p[u-4]=p[u],p[u-3]=p[u+1],p[u-2]=
+p[u+2],p[u-1]=p[u+3],p[u+x]=p[u+x-4],p[u+x+1]=p[u+x-3],p[u+x+2]=p[u+x-2],p[u+x+3]=p[u+x-1],u-=n}b.splice(g,4*k,t.paintInlineImageXObjectGroup);d.splice(g,4*k,[{width:f,height:m,kind:3,data:q},h]);a.currentOperation=g}});f(b,[t.save,t.transform,t.paintImageMaskXObject,t.restore],function(a){for(var b=a.fnArray,d=a.argsArray,g=a.currentOperation-3,h=g+4,k=b.length;h<k&&b[h-4]===b[h];h++);var f,k=h-g>>2;for(f=0;f<k;f++){var m=d[g+4*f+2];if((m=1==m.length&&m[0])&&1==m.width&&1==m.height&&(!m.data.length||
+1==m.data.length&&0===m.data[0]))b[g+4*f+2]=t.paintSolidColorImageMask;else break}f=k-f;if(10>f)a.currentOperation=h-1;else{var n=!1;if(0===d[g+1][1]&&0===d[g+1][2])for(h=g+4,n=!0,k=1;k<f;k++,h+=4){var q=d[h-3],m=d[h+1];if(d[h-2][0]!==d[h+2][0]||q[0]!==m[0]||q[1]!==m[1]||q[2]!==m[2]||q[3]!==m[3]){10>k?n=!1:f=k;break}}if(n){f=Math.min(f,1E3);n=new Float32Array(2*f);h=g+1;for(k=0;k<f;k++)m=d[h],n[k<<1]=m[4],n[(k<<1)+1]=m[5],h+=4;b.splice(g,4*f,t.paintImageMaskXObjectRepeat);d.splice(g,4*f,[d[g+2][0],
+d[g+1][0],d[g+1][3],n])}else{f=Math.min(f,100);h=[];for(k=0;k<f;k++)m=d[g+(k<<2)+1],n=d[g+(k<<2)+2][0],h.push({data:n.data,width:n.width,height:n.height,transform:m});b.splice(g,4*f,t.paintImageMaskXObjectGroup);d.splice(g,4*f,[h])}a.currentOperation=g}});f(b,[t.save,t.transform,t.paintImageXObject,t.restore],function(a){var b=a.fnArray,d=a.argsArray,g=a.currentOperation-3,h=g+4;if(0===d[g+1][1]&&0===d[g+1][2]){for(var k=b.length,f;h+3<k&&b[h-4]===b[h]&&b[h-3]===b[h+1]&&b[h-2]===b[h+2]&&b[h-1]===
+b[h+3]&&d[h-2][0]===d[h+2][0];h+=4){var m=d[h-3];f=d[h+1];if(m[0]!==f[0]||m[1]!==f[1]||m[2]!==f[2]||m[3]!==f[3])break}k=Math.min(h-g>>2,1E3);if(3>k)a.currentOperation=h-1;else{for(var m=new Float32Array(2*k),h=g+1,n=0;n<k;n++)f=d[h],m[n<<1]=f[4],m[(n<<1)+1]=f[5],h+=4;h=[d[g+2][0],d[g+1][0],d[g+1][3],m];b.splice(g,4*k,t.paintImageXObjectRepeat);d.splice(g,4*k,h);a.currentOperation=g}}});f(b,[t.beginText,t.setFont,t.setTextMatrix,t.showText,t.endText],function(a){for(var b=a.fnArray,d=a.argsArray,g=
+a.currentOperation-4,h=g+5,k=b.length;h<k&&b[h-5]===b[h]&&(b[h]!==t.setFont||d[h-5][0]===d[h][0]&&d[h-5][1]===d[h][1]);h++);k=Math.min((h-g)/5|0,1E3);if(3>k)a.currentOperation=h-1;else{4<=g&&b[g-4]===b[g+1]&&b[g-3]===b[g+2]&&b[g-2]===b[g+3]&&b[g-1]===b[g+4]&&d[g-4][0]===d[g+1][0]&&d[g-4][1]===d[g+1][1]&&(k++,g-=5);for(var f=g+7,h=g+4,g=1;g<k;g++)b[h]=b[f],d[h]=d[f],b[h+1]=b[f+1],d[h+1]=d[f+1],h+=2,f+=5;g=3*(k-1);b.splice(h,g);d.splice(h,g);a.currentOperation=h}});a.prototype={optimize:function(a){var e=
+a.fnArray,d=a.argsArray;a={currentOperation:0,fnArray:e,argsArray:d};for(var g=d.length,h,d=0;d<g;d++)h=(h||b)[e[d]],"function"===typeof h&&(a.currentOperation=d,h=h(a),d=a.currentOperation,g=a.fnArray.length)}};return a}(),de="Adobe-GB1-UCS2 Adobe-CNS1-UCS2 Adobe-Japan1-UCS2 Adobe-Korea1-UCS2 78-EUC-H 78-EUC-V 78-H 78-RKSJ-H 78-RKSJ-V 78-V 78ms-RKSJ-H 78ms-RKSJ-V 83pv-RKSJ-H 90ms-RKSJ-H 90ms-RKSJ-V 90msp-RKSJ-H 90msp-RKSJ-V 90pv-RKSJ-H 90pv-RKSJ-V Add-H Add-RKSJ-H Add-RKSJ-V Add-V Adobe-CNS1-0 Adobe-CNS1-1 Adobe-CNS1-2 Adobe-CNS1-3 Adobe-CNS1-4 Adobe-CNS1-5 Adobe-CNS1-6 Adobe-GB1-0 Adobe-GB1-1 Adobe-GB1-2 Adobe-GB1-3 Adobe-GB1-4 Adobe-GB1-5 Adobe-Japan1-0 Adobe-Japan1-1 Adobe-Japan1-2 Adobe-Japan1-3 Adobe-Japan1-4 Adobe-Japan1-5 Adobe-Japan1-6 Adobe-Korea1-0 Adobe-Korea1-1 Adobe-Korea1-2 B5-H B5-V B5pc-H B5pc-V CNS-EUC-H CNS-EUC-V CNS1-H CNS1-V CNS2-H CNS2-V ETHK-B5-H ETHK-B5-V ETen-B5-H ETen-B5-V ETenms-B5-H ETenms-B5-V EUC-H EUC-V Ext-H Ext-RKSJ-H Ext-RKSJ-V Ext-V GB-EUC-H GB-EUC-V GB-H GB-V GBK-EUC-H GBK-EUC-V GBK2K-H GBK2K-V GBKp-EUC-H GBKp-EUC-V GBT-EUC-H GBT-EUC-V GBT-H GBT-V GBTpc-EUC-H GBTpc-EUC-V GBpc-EUC-H GBpc-EUC-V H HKdla-B5-H HKdla-B5-V HKdlb-B5-H HKdlb-B5-V HKgccs-B5-H HKgccs-B5-V HKm314-B5-H HKm314-B5-V HKm471-B5-H HKm471-B5-V HKscs-B5-H HKscs-B5-V Hankaku Hiragana KSC-EUC-H KSC-EUC-V KSC-H KSC-Johab-H KSC-Johab-V KSC-V KSCms-UHC-H KSCms-UHC-HW-H KSCms-UHC-HW-V KSCms-UHC-V KSCpc-EUC-H KSCpc-EUC-V Katakana NWP-H NWP-V RKSJ-H RKSJ-V Roman UniCNS-UCS2-H UniCNS-UCS2-V UniCNS-UTF16-H UniCNS-UTF16-V UniCNS-UTF32-H UniCNS-UTF32-V UniCNS-UTF8-H UniCNS-UTF8-V UniGB-UCS2-H UniGB-UCS2-V UniGB-UTF16-H UniGB-UTF16-V UniGB-UTF32-H UniGB-UTF32-V UniGB-UTF8-H UniGB-UTF8-V UniJIS-UCS2-H UniJIS-UCS2-HW-H UniJIS-UCS2-HW-V UniJIS-UCS2-V UniJIS-UTF16-H UniJIS-UTF16-V UniJIS-UTF32-H UniJIS-UTF32-V UniJIS-UTF8-H UniJIS-UTF8-V UniJIS2004-UTF16-H UniJIS2004-UTF16-V UniJIS2004-UTF32-H UniJIS2004-UTF32-V UniJIS2004-UTF8-H UniJIS2004-UTF8-V UniJISPro-UCS2-HW-V UniJISPro-UCS2-V UniJISPro-UTF8-V UniJISX0213-UTF32-H UniJISX0213-UTF32-V UniJISX02132004-UTF32-H UniJISX02132004-UTF32-V UniKS-UCS2-H UniKS-UCS2-V UniKS-UTF16-H UniKS-UTF16-V UniKS-UTF32-H UniKS-UTF32-V UniKS-UTF8-H UniKS-UTF8-V V WP-Symbol".split(" "),
+fb=function(){function f(a){this.codespaceRanges=[[],[],[],[]];this.numCodespaceRanges=0;this.map=[];this.vertical=!1;this.useCMap=null;this.builtInCMap=a}f.prototype={addCodespaceRange:function(a,b,c){this.codespaceRanges[a-1].push(b,c);this.numCodespaceRanges++},mapRange:function(a,b,c){for(var e=c.length-1;a<=b;)this.map[a]=c,c=c.substr(0,e)+String.fromCharCode(c.charCodeAt(e)+1),++a},mapRangeToArray:function(a,b,c){for(var e=0;a<=b;)this.map[a]=c[e++],++a},mapOne:function(a,b){this.map[a]=b},
+lookup:function(a){return this.map[a]},readCharCode:function(a,b){for(var c=0,e=this.codespaceRanges,d=this.codespaceRanges.length,g=0;g<d;g++)for(var c=(c<<8|a.charCodeAt(b+g))>>>0,h=e[g],k=0,f=h.length;k<f;){var m=h[k++],n=h[k++];if(c>=m&&c<=n)return[c,g+1]}return[0,1]}};return f}(),ic=function(){function f(a,b){fb.call(this);this.vertical=a;this.addCodespaceRange(b,0,65535);this.mapRange(0,65535,"\x00")}Q.inherit(f,fb,{});return f}(),ee=function(){function f(a){var b=PDFJS.disableWorker,c=new XMLHttpRequest;
+c.open("GET",a,!1);if(!b)try{c.responseType="arraybuffer",b="arraybuffer"!==c.responseType}catch(d){b=!0}b&&c.overrideMimeType&&c.overrideMimeType("text/plain; charset=x-user-defined");c.send(null);0===c.status&&/^https?:/i.test(a)&&y("Unable to get binary cMap at: "+a);return b?(a=Array.prototype.map.call(c.responseText,function(a){return a.charCodeAt(0)&255}),new Uint8Array(a)):new Uint8Array(c.response)}function a(a,b){for(var c=0,d=0;d<=b;d++)c=c<<8|a[d];return c>>>0}function b(a,b){return String.fromCharCode.apply(null,
+a.subarray(0,b+1))}function c(a,b,c){for(var d=0;0<=c;c--)d+=a[c]+b[c],a[c]=d&255,d>>=8}function e(a,b){for(var c=1,d=b;0<=d&&0<c;d--)c+=a[d],a[d]=c&255,c>>=8}function d(a){this.buffer=a;this.pos=0;this.end=a.length;this.tmpBuf=new Uint8Array(h)}function g(){}var h=19;d.prototype={readByte:function(){return this.pos>=this.end?-1:this.buffer[this.pos++]},readNumber:function(){var a=0,b;do{var c=this.readByte();0>c&&y("unexpected EOF in bcmap");b=!(c&128);a=a<<7|c&127}while(!b);return a},readSigned:function(){var a=
+this.readNumber();return a&1?~(a>>>1):a>>>1},readHex:function(a,b){a.set(this.buffer.subarray(this.pos,this.pos+b+1));this.pos+=b+1},readHexNumber:function(a,b){var c,d=this.tmpBuf,e=0;do{var h=this.readByte();0>h&&y("unexpected EOF in bcmap");c=!(h&128);d[e++]=h&127}while(!c);c=b;for(var g=h=0;0<=c;){for(;8>g&&0<d.length;)h|=d[--e]<<g,g+=7;a[c]=h&255;c--;h>>=8;g-=8}},readHexSigned:function(a,b){this.readHexNumber(a,b);for(var c=a[b]&1?255:0,d=0,e=0;e<=b;e++)d=(d&1)<<8|a[e],a[e]=d>>1^c},readString:function(){for(var a=
+this.readNumber(),b="",c=0;c<a;c++)b+=String.fromCharCode(this.readNumber());return b}};g.prototype={read:function(h,g,m){h=f(h);h=new d(h);var n=h.readByte();g.vertical=!!(n&1);for(var n=null,q=new Uint8Array(16),s=new Uint8Array(16),p=new Uint8Array(16),x=new Uint8Array(16),r=new Uint8Array(16),u,v;0<=(v=h.readByte());)if(u=v>>5,7===u)switch(v&31){case 0:h.readString();break;case 1:n=h.readString()}else{var P=!!(v&16);v&=15;U(16>=v+1);var K=h.readNumber(),I;switch(u){case 0:h.readHex(q,v);h.readHexNumber(s,
+v);c(s,q,v);g.addCodespaceRange(v+1,a(q,v),a(s,v));for(I=1;I<K;I++)e(s,v),h.readHexNumber(q,v),c(q,s,v),h.readHexNumber(s,v),c(s,q,v),g.addCodespaceRange(v+1,a(q,v),a(s,v));break;case 1:h.readHex(q,v);h.readHexNumber(s,v);c(s,q,v);h.readNumber();for(I=1;I<K;I++)e(s,v),h.readHexNumber(q,v),c(q,s,v),h.readHexNumber(s,v),c(s,q,v),h.readNumber();break;case 2:h.readHex(p,v);u=h.readNumber();g.mapOne(a(p,v),String.fromCharCode(u));for(I=1;I<K;I++)e(p,v),P||(h.readHexNumber(r,v),c(p,r,v)),u=h.readSigned()+
+(u+1),g.mapOne(a(p,v),String.fromCharCode(u));break;case 3:h.readHex(q,v);h.readHexNumber(s,v);c(s,q,v);u=h.readNumber();g.mapRange(a(q,v),a(s,v),String.fromCharCode(u));for(I=1;I<K;I++)e(s,v),P?q.set(s):(h.readHexNumber(q,v),c(q,s,v)),h.readHexNumber(s,v),c(s,q,v),u=h.readNumber(),g.mapRange(a(q,v),a(s,v),String.fromCharCode(u));break;case 4:h.readHex(p,1);h.readHex(x,v);g.mapOne(a(p,1),b(x,v));for(I=1;I<K;I++)e(p,1),P||(h.readHexNumber(r,1),c(p,r,1)),e(x,v),h.readHexSigned(r,v),c(x,r,v),g.mapOne(a(p,
+1),b(x,v));break;case 5:h.readHex(q,1);h.readHexNumber(s,1);c(s,q,1);h.readHex(x,v);g.mapRange(a(q,1),a(s,1),b(x,v));for(I=1;I<K;I++)e(s,1),P?q.set(s):(h.readHexNumber(q,1),c(q,s,1)),h.readHexNumber(s,1),c(s,q,1),h.readHex(x,v),g.mapRange(a(q,1),a(s,1),b(x,v));break;default:y("Unknown type: "+u)}}n&&m(n);return g}};return g}(),zb=function(){function f(a){for(var b=0,c=0;c<a.length;c++)b=b<<8|a.charCodeAt(c);return b>>>0}function a(a){ma(a)||y("Malformed CMap: expected string.")}function b(a){V(a)||
+y("Malformed CMap: expected int.")}function c(c,d,g,m){var n,q;a:for(;;){var s=d.getObj();if(s===ea)break;else if(H(s)){if("WMode"===s.name){n=c;var p=d.getObj();V(p)&&(n.vertical=!!p)}n=s}else if(Y(s))switch(s.cmd){case "endcmap":break a;case "usecmap":H(n)&&(q=n.name);break;case "begincodespacerange":b:{s=c;for(p=d;;){var x=p.getObj();if(x===ea)break;if(Y(x,"endcodespacerange"))break b;if(!ma(x))break;var r=f(x),x=p.getObj();if(!ma(x))break;var u=f(x);s.addCodespaceRange(x.length,r,u)}y("Invalid codespace range.")}break;
+case "beginbfchar":b:for(s=c,p=d;;){x=p.getObj();if(x===ea)break;if(Y(x,"endbfchar"))break b;a(x);r=f(x);x=p.getObj();a(x);s.mapOne(r,x)}break;case "begincidchar":b:for(s=c,p=d;;){r=p.getObj();if(r===ea)break;if(Y(r,"endcidchar"))break b;a(r);x=f(r);r=p.getObj();b(r);r=String.fromCharCode(r);s.mapOne(x,r)}break;case "beginbfrange":b:{s=c;for(p=d;;){u=p.getObj();if(u===ea)break;if(Y(u,"endbfrange"))break b;a(u);x=f(u);u=p.getObj();a(u);r=f(u);u=p.getObj();if(V(u)||ma(u))u=V(u)?String.fromCharCode(u):
+u,s.mapRange(x,r,u);else if(Y(u,"[")){for(var u=p.getObj(),v=[];!Y(u,"]")&&u!==ea;)v.push(u),u=p.getObj();s.mapRangeToArray(x,r,v)}else break}y("Invalid bf range.")}break;case "begincidrange":b:for(s=c,p=d;;){u=p.getObj();if(u===ea)break;if(Y(u,"endcidrange"))break b;a(u);x=f(u);u=p.getObj();a(u);r=f(u);u=p.getObj();b(u);u=String.fromCharCode(u);s.mapRange(x,r,u)}}}!m&&q&&(m=q);m&&e(c,g,m)}function e(a,b,c){a.useCMap=g(c,b);if(0===a.numCodespaceRanges){b=a.useCMap.codespaceRanges;for(c=0;c<b.length;c++)a.codespaceRanges[c]=
+b[c].slice();a.numCodespaceRanges=a.useCMap.numCodespaceRanges}for(var d in a.useCMap.map)d in a.map||(a.map[d]=a.useCMap.map[d])}function d(a,b){var c=b.url+a+".bcmap",d=new fb(!0);(new ee).read(c,d,function(a){e(d,b,a)});return d}function g(a,b){if("Identity-H"===a)return new ic(!1,2);if("Identity-V"===a)return new ic(!0,2);-1===de.indexOf(a)&&y("Unknown cMap name: "+a);U(b,"buildin cmap parameters are not provided");if(b.packed)return d(a,b);var e=new XMLHttpRequest,g=b.url+a;e.open("GET",g,!1);
+e.send(null);0===e.status&&/^https?:/i.test(g)&&y("Unable to get cMap at: "+g);g=new fb(!0);e=new wa(new fe(e.responseText));c(g,e,b,null);return g}return{create:function(a,b,d){if(H(a))return g(a.name,b);if(da(a)){var e=new fb;a=new wa(a);try{c(e,a,b,d)}catch(f){O("Invalid CMap data. "+f)}return e}y("Encoding required.")}}}(),ge=57344,Zc=63743,$c=!1,jc=1E3,kb=!1,Ba={FixedPitch:1,Serif:2,Symbolic:4,Script:8,Nonsymbolic:32,Italic:64,AllCap:65536,SmallCap:131072,ForceBold:262144},ja={ExpertEncoding:" space exclamsmall Hungarumlautsmall dollaroldstyle dollarsuperior ampersandsmall Acutesmall parenleftsuperior parenrightsuperior twodotenleader onedotenleader comma hyphen period fraction zerooldstyle oneoldstyle twooldstyle threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle eightoldstyle nineoldstyle colon semicolon commasuperior threequartersemdash periodsuperior questionsmall asuperior bsuperior centsuperior dsuperior esuperior isuperior lsuperior msuperior nsuperior osuperior rsuperior ssuperior tsuperior ff fi fl ffi ffl parenleftinferior parenrightinferior Circumflexsmall hyphensuperior Gravesmall Asmall Bsmall Csmall Dsmall Esmall Fsmall Gsmall Hsmall Ismall Jsmall Ksmall Lsmall Msmall Nsmall Osmall Psmall Qsmall Rsmall Ssmall Tsmall Usmall Vsmall Wsmall Xsmall Ysmall Zsmall colonmonetary onefitted rupiah Tildesmall exclamdownsmall centoldstyle Lslashsmall Scaronsmall Zcaronsmall Dieresissmall Brevesmall Caronsmall Dotaccentsmall Macronsmall figuredash hypheninferior Ogoneksmall Ringsmall Cedillasmall onequarter onehalf threequarters questiondownsmall oneeighth threeeighths fiveeighths seveneighths onethird twothirds zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior centinferior dollarinferior periodinferior commainferior Agravesmall Aacutesmall Acircumflexsmall Atildesmall Adieresissmall Aringsmall AEsmall Ccedillasmall Egravesmall Eacutesmall Ecircumflexsmall Edieresissmall Igravesmall Iacutesmall Icircumflexsmall Idieresissmall Ethsmall Ntildesmall Ogravesmall Oacutesmall Ocircumflexsmall Otildesmall Odieresissmall OEsmall Oslashsmall Ugravesmall Uacutesmall Ucircumflexsmall Udieresissmall Yacutesmall Thornsmall Ydieresissmall".split(" "),
+MacExpertEncoding:" space exclamsmall Hungarumlautsmall centoldstyle dollaroldstyle dollarsuperior ampersandsmall Acutesmall parenleftsuperior parenrightsuperior twodotenleader onedotenleader comma hyphen period fraction zerooldstyle oneoldstyle twooldstyle threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle eightoldstyle nineoldstyle colon semicolon threequartersemdash questionsmall Ethsmall onequarter onehalf threequarters oneeighth threeeighths fiveeighths seveneighths onethird twothirds ff fi fl ffi ffl parenleftinferior parenrightinferior Circumflexsmall hypheninferior Gravesmall Asmall Bsmall Csmall Dsmall Esmall Fsmall Gsmall Hsmall Ismall Jsmall Ksmall Lsmall Msmall Nsmall Osmall Psmall Qsmall Rsmall Ssmall Tsmall Usmall Vsmall Wsmall Xsmall Ysmall Zsmall colonmonetary onefitted rupiah Tildesmall asuperior centsuperior Aacutesmall Agravesmall Acircumflexsmall Adieresissmall Atildesmall Aringsmall Ccedillasmall Eacutesmall Egravesmall Ecircumflexsmall Edieresissmall Iacutesmall Igravesmall Icircumflexsmall Idieresissmall Ntildesmall Oacutesmall Ogravesmall Ocircumflexsmall Odieresissmall Otildesmall Uacutesmall Ugravesmall Ucircumflexsmall Udieresissmall eightsuperior fourinferior threeinferior sixinferior eightinferior seveninferior Scaronsmall centinferior twoinferior Dieresissmall Caronsmall osuperior fiveinferior commainferior periodinferior Yacutesmall dollarinferior Thornsmall nineinferior zeroinferior Zcaronsmall AEsmall Oslashsmall questiondownsmall oneinferior Lslashsmall Cedillasmall OEsmall figuredash hyphensuperior exclamdownsmall Ydieresissmall onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior ninesuperior zerosuperior esuperior rsuperior tsuperior isuperior ssuperior dsuperior lsuperior Ogoneksmall Brevesmall Macronsmall bsuperior nsuperior msuperior commasuperior periodsuperior Dotaccentsmall Ringsmall".split(" "),
+MacRomanEncoding:" space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis space Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron".split(" "),
+StandardEncoding:" space exclam quotedbl numbersign dollar percent ampersand quoteright parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore quoteleft a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde exclamdown cent sterling fraction yen florin section currency quotesingle quotedblleft guillemotleft guilsinglleft guilsinglright fi fl endash dagger daggerdbl periodcentered paragraph bullet quotesinglbase quotedblbase quotedblright guillemotright ellipsis perthousand questiondown grave acute circumflex tilde macron breve dotaccent dieresis ring cedilla hungarumlaut ogonek caron emdash AE ordfeminine Lslash Oslash OE ordmasculine ae dotlessi lslash oslash oe germandbls".split(" "),
+WinAnsiEncoding:" space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde bullet Euro bullet quotesinglbase florin quotedblbase ellipsis dagger daggerdbl circumflex perthousand Scaron guilsinglleft OE bullet Zcaron bullet bullet quoteleft quoteright quotedblleft quotedblright bullet endash emdash tilde trademark scaron guilsinglright oe bullet zcaron Ydieresis space exclamdown cent sterling currency yen brokenbar section dieresis copyright ordfeminine guillemotleft logicalnot hyphen registered macron degree plusminus twosuperior threesuperior acute mu paragraph periodcentered cedilla onesuperior ordmasculine guillemotright onequarter onehalf threequarters questiondown Agrave Aacute Acircumflex Atilde Adieresis Aring AE Ccedilla Egrave Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis Eth Ntilde Ograve Oacute Ocircumflex Otilde Odieresis multiply Oslash Ugrave Uacute Ucircumflex Udieresis Yacute Thorn germandbls agrave aacute acircumflex atilde adieresis aring ae ccedilla egrave eacute ecircumflex edieresis igrave iacute icircumflex idieresis eth ntilde ograve oacute ocircumflex otilde odieresis divide oslash ugrave uacute ucircumflex udieresis yacute thorn ydieresis".split(" "),
+SymbolSetEncoding:" space exclam universal numbersign existential percent ampersand suchthat parenleft parenright asteriskmath plus comma minus period slash zero one two three four five six seven eight nine colon semicolon less equal greater question congruent Alpha Beta Chi Delta Epsilon Phi Gamma Eta Iota theta1 Kappa Lambda Mu Nu Omicron Pi Theta Rho Sigma Tau Upsilon sigma1 Omega Xi Psi Zeta bracketleft therefore bracketright perpendicular underscore radicalex alpha beta chi delta epsilon phi gamma eta iota phi1 kappa lambda mu nu omicron pi theta rho sigma tau upsilon omega1 omega xi psi zeta braceleft bar braceright similar Euro Upsilon1 minute lessequal fraction infinity florin club diamond heart spade arrowboth arrowleft arrowup arrowright arrowdown degree plusminus second greaterequal multiply proportional partialdiff bullet divide notequal equivalence approxequal ellipsis arrowvertex arrowhorizex carriagereturn aleph Ifraktur Rfraktur weierstrass circlemultiply circleplus emptyset intersection union propersuperset reflexsuperset notsubset propersubset reflexsubset element notelement angle gradient registerserif copyrightserif trademarkserif product radical dotmath logicalnot logicaland logicalor arrowdblboth arrowdblleft arrowdblup arrowdblright arrowdbldown lozenge angleleft registersans copyrightsans trademarksans summation parenlefttp parenleftex parenleftbt bracketlefttp bracketleftex bracketleftbt bracelefttp braceleftmid braceleftbt braceex angleright integral integraltp integralex integralbt parenrighttp parenrightex parenrightbt bracketrighttp bracketrightex bracketrightbt bracerighttp bracerightmid bracerightbt".split(" "),
+zapfDingbatsEncoding:" space a1 a2 a202 a3 a4 a5 a119 a118 a117 a11 a12 a13 a14 a15 a16 a105 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26 a27 a28 a6 a7 a8 a9 a10 a29 a30 a31 a32 a33 a34 a35 a36 a37 a38 a39 a40 a41 a42 a43 a44 a45 a46 a47 a48 a49 a50 a51 a52 a53 a54 a55 a56 a57 a58 a59 a60 a61 a62 a63 a64 a65 a66 a67 a68 a69 a70 a71 a72 a73 a74 a203 a75 a204 a76 a77 a78 a79 a81 a82 a83 a84 a97 a98 a99 a100 a101 a102 a103 a104 a106 a107 a108 a112 a111 a110 a109 a120 a121 a122 a123 a124 a125 a126 a127 a128 a129 a130 a131 a132 a133 a134 a135 a136 a137 a138 a139 a140 a141 a142 a143 a144 a145 a146 a147 a148 a149 a150 a151 a152 a153 a154 a155 a156 a157 a158 a159 a160 a161 a163 a164 a196 a165 a192 a166 a167 a168 a169 a170 a171 a172 a173 a162 a174 a175 a176 a177 a178 a179 a193 a180 a199 a181 a200 a182 a201 a183 a184 a197 a185 a194 a198 a186 a195 a187 a188 a189 a190 a191".split(" ")},
+Ob={ArialNarrow:"Helvetica","ArialNarrow-Bold":"Helvetica-Bold","ArialNarrow-BoldItalic":"Helvetica-BoldOblique","ArialNarrow-Italic":"Helvetica-Oblique",ArialBlack:"Helvetica","ArialBlack-Bold":"Helvetica-Bold","ArialBlack-BoldItalic":"Helvetica-BoldOblique","ArialBlack-Italic":"Helvetica-Oblique",Arial:"Helvetica","Arial-Bold":"Helvetica-Bold","Arial-BoldItalic":"Helvetica-BoldOblique","Arial-Italic":"Helvetica-Oblique","Arial-BoldItalicMT":"Helvetica-BoldOblique","Arial-BoldMT":"Helvetica-Bold",
+"Arial-ItalicMT":"Helvetica-Oblique",ArialMT:"Helvetica","Courier-Bold":"Courier-Bold","Courier-BoldItalic":"Courier-BoldOblique","Courier-Italic":"Courier-Oblique",CourierNew:"Courier","CourierNew-Bold":"Courier-Bold","CourierNew-BoldItalic":"Courier-BoldOblique","CourierNew-Italic":"Courier-Oblique","CourierNewPS-BoldItalicMT":"Courier-BoldOblique","CourierNewPS-BoldMT":"Courier-Bold","CourierNewPS-ItalicMT":"Courier-Oblique",CourierNewPSMT:"Courier","Helvetica-Bold":"Helvetica-Bold","Helvetica-BoldItalic":"Helvetica-BoldOblique",
+"Helvetica-Italic":"Helvetica-Oblique","Symbol-Bold":"Symbol","Symbol-BoldItalic":"Symbol","Symbol-Italic":"Symbol",TimesNewRoman:"Times-Roman","TimesNewRoman-Bold":"Times-Bold","TimesNewRoman-BoldItalic":"Times-BoldItalic","TimesNewRoman-Italic":"Times-Italic",TimesNewRomanPS:"Times-Roman","TimesNewRomanPS-Bold":"Times-Bold","TimesNewRomanPS-BoldItalic":"Times-BoldItalic","TimesNewRomanPS-BoldItalicMT":"Times-BoldItalic","TimesNewRomanPS-BoldMT":"Times-Bold","TimesNewRomanPS-Italic":"Times-Italic",
+"TimesNewRomanPS-ItalicMT":"Times-Italic",TimesNewRomanPSMT:"Times-Roman","TimesNewRomanPSMT-Bold":"Times-Bold","TimesNewRomanPSMT-BoldItalic":"Times-BoldItalic","TimesNewRomanPSMT-Italic":"Times-Italic"},he={ComicSansMS:"Comic Sans MS","ComicSansMS-Bold":"Comic Sans MS-Bold","ComicSansMS-BoldItalic":"Comic Sans MS-BoldItalic","ComicSansMS-Italic":"Comic Sans MS-Italic",LucidaConsole:"Courier","LucidaConsole-Bold":"Courier-Bold","LucidaConsole-BoldItalic":"Courier-BoldOblique","LucidaConsole-Italic":"Courier-Oblique",
+"MS-Gothic":"MS Gothic","MS-Gothic-Bold":"MS Gothic-Bold","MS-Gothic-BoldItalic":"MS Gothic-BoldItalic","MS-Gothic-Italic":"MS Gothic-Italic","MS-Mincho":"MS Mincho","MS-Mincho-Bold":"MS Mincho-Bold","MS-Mincho-BoldItalic":"MS Mincho-BoldItalic","MS-Mincho-Italic":"MS Mincho-Italic","MS-PGothic":"MS PGothic","MS-PGothic-Bold":"MS PGothic-Bold","MS-PGothic-BoldItalic":"MS PGothic-BoldItalic","MS-PGothic-Italic":"MS PGothic-Italic","MS-PMincho":"MS PMincho","MS-PMincho-Bold":"MS PMincho-Bold","MS-PMincho-BoldItalic":"MS PMincho-BoldItalic",
+"MS-PMincho-Italic":"MS PMincho-Italic"},$d={"Adobe Jenson":!0,"Adobe Text":!0,Albertus:!0,Aldus:!0,Alexandria:!0,Algerian:!0,"American Typewriter":!0,Antiqua:!0,Apex:!0,Arno:!0,Aster:!0,Aurora:!0,Baskerville:!0,Bell:!0,Bembo:!0,"Bembo Schoolbook":!0,Benguiat:!0,"Berkeley Old Style":!0,"Bernhard Modern":!0,"Berthold City":!0,Bodoni:!0,"Bauer Bodoni":!0,"Book Antiqua":!0,Bookman:!0,"Bordeaux Roman":!0,"Californian FB":!0,Calisto:!0,Calvert:!0,Capitals:!0,Cambria:!0,Cartier:!0,Caslon:!0,Catull:!0,Centaur:!0,
+"Century Old Style":!0,"Century Schoolbook":!0,Chaparral:!0,"Charis SIL":!0,Cheltenham:!0,"Cholla Slab":!0,Clarendon:!0,Clearface:!0,Cochin:!0,Colonna:!0,"Computer Modern":!0,"Concrete Roman":!0,Constantia:!0,"Cooper Black":!0,Corona:!0,Ecotype:!0,Egyptienne:!0,Elephant:!0,Excelsior:!0,Fairfield:!0,"FF Scala":!0,Folkard:!0,Footlight:!0,FreeSerif:!0,"Friz Quadrata":!0,Garamond:!0,Gentium:!0,Georgia:!0,Gloucester:!0,"Goudy Old Style":!0,"Goudy Schoolbook":!0,"Goudy Pro Font":!0,Granjon:!0,"Guardian Egyptian":!0,
+Heather:!0,Hercules:!0,"High Tower Text":!0,Hiroshige:!0,"Hoefler Text":!0,"Humana Serif":!0,Imprint:!0,"Ionic No. 5":!0,Janson:!0,Joanna:!0,Korinna:!0,Lexicon:!0,"Liberation Serif":!0,"Linux Libertine":!0,Literaturnaya:!0,Lucida:!0,"Lucida Bright":!0,Melior:!0,Memphis:!0,Miller:!0,Minion:!0,Modern:!0,"Mona Lisa":!0,"Mrs Eaves":!0,"MS Serif":!0,"Museo Slab":!0,"New York":!0,"Nimbus Roman":!0,"NPS Rawlinson Roadway":!0,Palatino:!0,Perpetua:!0,Plantin:!0,"Plantin Schoolbook":!0,Playbill:!0,"Poor Richard":!0,
+"Rawlinson Roadway":!0,Renault:!0,Requiem:!0,Rockwell:!0,Roman:!0,"Rotis Serif":!0,Sabon:!0,Scala:!0,Seagull:!0,Sistina:!0,Souvenir:!0,STIX:!0,"Stone Informal":!0,"Stone Serif":!0,Sylfaen:!0,Times:!0,Trajan:!0,"Trinit\u00e9":!0,"Trump Mediaeval":!0,Utopia:!0,"Vale Type":!0,"Bitstream Vera":!0,"Vera Serif":!0,Versailles:!0,Wanted:!0,Weiss:!0,"Wide Latin":!0,Windsor:!0,XITS:!0},be={Dingbats:!0,Symbol:!0,ZapfDingbats:!0},ad={2:10,3:32,4:33,5:34,6:35,7:36,8:37,9:38,10:39,11:40,12:41,13:42,14:43,15:44,
+16:45,17:46,18:47,19:48,20:49,21:50,22:51,23:52,24:53,25:54,26:55,27:56,28:57,29:58,30:894,31:60,32:61,33:62,34:63,35:64,36:65,37:66,38:67,39:68,40:69,41:70,42:71,43:72,44:73,45:74,46:75,47:76,48:77,49:78,50:79,51:80,52:81,53:82,54:83,55:84,56:85,57:86,58:87,59:88,60:89,61:90,62:91,63:92,64:93,65:94,66:95,67:96,68:97,69:98,70:99,71:100,72:101,73:102,74:103,75:104,76:105,77:106,78:107,79:108,80:109,81:110,82:111,83:112,84:113,85:114,86:115,87:116,88:117,89:118,90:119,91:120,92:121,93:122,94:123,95:124,
+96:125,97:126,98:196,99:197,100:199,101:201,102:209,103:214,104:220,105:225,106:224,107:226,108:228,109:227,110:229,111:231,112:233,113:232,114:234,115:235,116:237,117:236,118:238,119:239,120:241,121:243,122:242,123:244,124:246,125:245,126:250,127:249,128:251,129:252,130:8224,131:176,132:162,133:163,134:167,135:8226,136:182,137:223,138:174,139:169,140:8482,141:180,142:168,143:8800,144:198,145:216,146:8734,147:177,148:8804,149:8805,150:165,151:181,152:8706,153:8721,154:8719,156:8747,157:170,158:186,
+159:8486,160:230,161:248,162:191,163:161,164:172,165:8730,166:402,167:8776,168:8710,169:171,170:187,171:8230,210:218,223:711,227:353,229:382,234:253,253:268,254:269,258:258,268:283,269:313,278:328,284:345,292:367,305:963,306:964,307:966,308:8215,309:8252,310:8319,311:8359,312:8592,313:8593,337:9552,493:1039,494:1040,705:1524,706:8362,710:64288,711:64298,759:1617,761:1776,763:1778,775:1652,777:1764,778:1780,779:1781,780:1782,782:771,783:64726,786:8363,788:8532,790:768,791:769,792:768,795:803,797:64336,
+798:64337,799:64342,800:64343,801:64344,802:64345,803:64362,804:64363,805:64364,2424:7821,2425:7822,2426:7823,2427:7824,2428:7825,2429:7826,2430:7827,2433:7682,2678:8045,2679:8046,2830:1552,2838:686,2840:751,2842:753,2843:754,2844:755,2846:757,2856:767,2857:848,2858:849,2862:853,2863:854,2864:855,2865:861,2866:862,2906:7460,2908:7462,2909:7463,2910:7464,2912:7466,2913:7467,2914:7468,2916:7470,2917:7471,2918:7472,2920:7474,2921:7475,2922:7476,2924:7478,2925:7479,2926:7480,2928:7482,2929:7483,2930:7484,
+2932:7486,2933:7487,2934:7488,2936:7490,2937:7491,2938:7492,2940:7494,2941:7495,2942:7496,2944:7498,2946:7500,2948:7502,2950:7504,2951:7505,2952:7506,2954:7508,2955:7509,2956:7510,2958:7512,2959:7513,2960:7514,2962:7516,2963:7517,2964:7518,2966:7520,2967:7521,2968:7522,2970:7524,2971:7525,2972:7526,2974:7528,2975:7529,2976:7530,2978:1537,2979:1538,2980:1539,2982:1549,2983:1551,2984:1552,2986:1554,2987:1555,2988:1556,2990:1623,2991:1624,2995:1775,2999:1791,3002:64290,3003:64291,3004:64292,3006:64294,
+3007:64295,3008:64296,3011:1900,3014:8223,3015:8244,3017:7532,3018:7533,3019:7534,3075:7590,3076:7591,3079:7594,3080:7595,3083:7598,3084:7599,3087:7602,3088:7603,3091:7606,3092:7607,3095:7610,3096:7611,3099:7614,3100:7615,3103:7618,3104:7619,3107:8337,3108:8338,3116:1884,3119:1885,3120:1885,3123:1886,3124:1886,3127:1887,3128:1887,3131:1888,3132:1888,3135:1889,3136:1889,3139:1890,3140:1890,3143:1891,3144:1891,3147:1892,3148:1892,3153:580,3154:581,3157:584,3158:585,3161:588,3162:589,3165:891,3166:892,
+3169:1274,3170:1275,3173:1278,3174:1279,3181:7622,3182:7623,3282:11799,3316:578,3379:42785,3393:1159,3416:8377},Nb=[{begin:0,end:127},{begin:128,end:255},{begin:256,end:383},{begin:384,end:591},{begin:592,end:687},{begin:688,end:767},{begin:768,end:879},{begin:880,end:1023},{begin:11392,end:11519},{begin:1024,end:1279},{begin:1328,end:1423},{begin:1424,end:1535},{begin:42240,end:42559},{begin:1536,end:1791},{begin:1984,end:2047},{begin:2304,end:2431},{begin:2432,end:2559},{begin:2560,end:2687},{begin:2688,
+end:2815},{begin:2816,end:2943},{begin:2944,end:3071},{begin:3072,end:3199},{begin:3200,end:3327},{begin:3328,end:3455},{begin:3584,end:3711},{begin:3712,end:3839},{begin:4256,end:4351},{begin:6912,end:7039},{begin:4352,end:4607},{begin:7680,end:7935},{begin:7936,end:8191},{begin:8192,end:8303},{begin:8304,end:8351},{begin:8352,end:8399},{begin:8400,end:8447},{begin:8448,end:8527},{begin:8528,end:8591},{begin:8592,end:8703},{begin:8704,end:8959},{begin:8960,end:9215},{begin:9216,end:9279},{begin:9280,
+end:9311},{begin:9312,end:9471},{begin:9472,end:9599},{begin:9600,end:9631},{begin:9632,end:9727},{begin:9728,end:9983},{begin:9984,end:10175},{begin:12288,end:12351},{begin:12352,end:12447},{begin:12448,end:12543},{begin:12544,end:12591},{begin:12592,end:12687},{begin:43072,end:43135},{begin:12800,end:13055},{begin:13056,end:13311},{begin:44032,end:55215},{begin:55296,end:57343},{begin:67840,end:67871},{begin:19968,end:40959},{begin:57344,end:63743},{begin:12736,end:12783},{begin:64256,end:64335},
+{begin:64336,end:65023},{begin:65056,end:65071},{begin:65040,end:65055},{begin:65104,end:65135},{begin:65136,end:65279},{begin:65280,end:65519},{begin:65520,end:65535},{begin:3840,end:4095},{begin:1792,end:1871},{begin:1920,end:1983},{begin:3456,end:3583},{begin:4096,end:4255},{begin:4608,end:4991},{begin:5024,end:5119},{begin:5120,end:5759},{begin:5760,end:5791},{begin:5792,end:5887},{begin:6016,end:6143},{begin:6144,end:6319},{begin:10240,end:10495},{begin:40960,end:42127},{begin:5888,end:5919},
+{begin:66304,end:66351},{begin:66352,end:66383},{begin:66560,end:66639},{begin:118784,end:119039},{begin:119808,end:120831},{begin:1044480,end:1048573},{begin:65024,end:65039},{begin:917504,end:917631},{begin:6400,end:6479},{begin:6480,end:6527},{begin:6528,end:6623},{begin:6656,end:6687},{begin:11264,end:11359},{begin:11568,end:11647},{begin:19904,end:19967},{begin:43008,end:43055},{begin:65536,end:65663},{begin:65856,end:65935},{begin:66432,end:66463},{begin:66464,end:66527},{begin:66640,end:66687},
+{begin:66688,end:66735},{begin:67584,end:67647},{begin:68096,end:68191},{begin:119552,end:119647},{begin:73728,end:74751},{begin:119648,end:119679},{begin:7040,end:7103},{begin:7168,end:7247},{begin:7248,end:7295},{begin:43136,end:43231},{begin:43264,end:43311},{begin:43312,end:43359},{begin:43520,end:43615},{begin:65936,end:65999},{begin:66E3,end:66047},{begin:66208,end:66271},{begin:127024,end:127135}],bd=".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat".split(" "),
+Xc={"\u00a8":" \u0308","\u00af":" \u0304","\u00b4":" \u0301","\u00b5":"\u03bc","\u00b8":" \u0327","\u0132":"IJ","\u0133":"ij","\u013f":"L\u00b7","\u0140":"l\u00b7","\u0149":"\u02bcn","\u017f":"s","\u01c4":"D\u017d","\u01c5":"D\u017e","\u01c6":"d\u017e","\u01c7":"LJ","\u01c8":"Lj","\u01c9":"lj","\u01ca":"NJ","\u01cb":"Nj","\u01cc":"nj","\u01f1":"DZ","\u01f2":"Dz","\u01f3":"dz","\u02d8":" \u0306","\u02d9":" \u0307","\u02da":" \u030a","\u02db":" \u0328","\u02dc":" \u0303","\u02dd":" \u030b","\u037a":" \u0345",
+"\u0384":" \u0301","\u03d0":"\u03b2","\u03d1":"\u03b8","\u03d2":"\u03a5","\u03d5":"\u03c6","\u03d6":"\u03c0","\u03f0":"\u03ba","\u03f1":"\u03c1","\u03f2":"\u03c2","\u03f4":"\u0398","\u03f5":"\u03b5","\u03f9":"\u03a3","\u0587":"\u0565\u0582","\u0675":"\u0627\u0674","\u0676":"\u0648\u0674","\u0677":"\u06c7\u0674","\u0678":"\u064a\u0674","\u0e33":"\u0e4d\u0e32","\u0eb3":"\u0ecd\u0eb2","\u0edc":"\u0eab\u0e99","\u0edd":"\u0eab\u0ea1","\u0f77":"\u0fb2\u0f81","\u0f79":"\u0fb3\u0f81","\u1e9a":"a\u02be","\u1fbd":" \u0313",
+"\u1fbf":" \u0313","\u1fc0":" \u0342","\u1ffe":" \u0314","\u2002":" ","\u2003":" ","\u2004":" ","\u2005":" ","\u2006":" ","\u2008":" ","\u2009":" ","\u200a":" ","\u2017":" \u0333","\u2024":".","\u2025":"..","\u2026":"...","\u2033":"\u2032\u2032","\u2034":"\u2032\u2032\u2032","\u2036":"\u2035\u2035","\u2037":"\u2035\u2035\u2035","\u203c":"!!","\u203e":" \u0305","\u2047":"??","\u2048":"?!","\u2049":"!?","\u2057":"\u2032\u2032\u2032\u2032","\u205f":" ","\u20a8":"Rs","\u2100":"a/c","\u2101":"a/s","\u2103":"\u00b0C",
+"\u2105":"c/o","\u2106":"c/u","\u2107":"\u0190","\u2109":"\u00b0F","\u2116":"No","\u2121":"TEL","\u2135":"\u05d0","\u2136":"\u05d1","\u2137":"\u05d2","\u2138":"\u05d3","\u213b":"FAX","\u2160":"I","\u2161":"II","\u2162":"III","\u2163":"IV","\u2164":"V","\u2165":"VI","\u2166":"VII","\u2167":"VIII","\u2168":"IX","\u2169":"X","\u216a":"XI","\u216b":"XII","\u216c":"L","\u216d":"C","\u216e":"D","\u216f":"M","\u2170":"i","\u2171":"ii","\u2172":"iii","\u2173":"iv","\u2174":"v","\u2175":"vi","\u2176":"vii",
+"\u2177":"viii","\u2178":"ix","\u2179":"x","\u217a":"xi","\u217b":"xii","\u217c":"l","\u217d":"c","\u217e":"d","\u217f":"m","\u222c":"\u222b\u222b","\u222d":"\u222b\u222b\u222b","\u222f":"\u222e\u222e","\u2230":"\u222e\u222e\u222e","\u2474":"(1)","\u2475":"(2)","\u2476":"(3)","\u2477":"(4)","\u2478":"(5)","\u2479":"(6)","\u247a":"(7)","\u247b":"(8)","\u247c":"(9)","\u247d":"(10)","\u247e":"(11)","\u247f":"(12)","\u2480":"(13)","\u2481":"(14)","\u2482":"(15)","\u2483":"(16)","\u2484":"(17)","\u2485":"(18)",
+"\u2486":"(19)","\u2487":"(20)","\u2488":"1.","\u2489":"2.","\u248a":"3.","\u248b":"4.","\u248c":"5.","\u248d":"6.","\u248e":"7.","\u248f":"8.","\u2490":"9.","\u2491":"10.","\u2492":"11.","\u2493":"12.","\u2494":"13.","\u2495":"14.","\u2496":"15.","\u2497":"16.","\u2498":"17.","\u2499":"18.","\u249a":"19.","\u249b":"20.","\u249c":"(a)","\u249d":"(b)","\u249e":"(c)","\u249f":"(d)","\u24a0":"(e)","\u24a1":"(f)","\u24a2":"(g)","\u24a3":"(h)","\u24a4":"(i)","\u24a5":"(j)","\u24a6":"(k)","\u24a7":"(l)",
+"\u24a8":"(m)","\u24a9":"(n)","\u24aa":"(o)","\u24ab":"(p)","\u24ac":"(q)","\u24ad":"(r)","\u24ae":"(s)","\u24af":"(t)","\u24b0":"(u)","\u24b1":"(v)","\u24b2":"(w)","\u24b3":"(x)","\u24b4":"(y)","\u24b5":"(z)","\u2a0c":"\u222b\u222b\u222b\u222b","\u2a74":"::=","\u2a75":"==","\u2a76":"===","\u2e9f":"\u6bcd","\u2ef3":"\u9f9f","\u2f00":"\u4e00","\u2f01":"\u4e28","\u2f02":"\u4e36","\u2f03":"\u4e3f","\u2f04":"\u4e59","\u2f05":"\u4e85","\u2f06":"\u4e8c","\u2f07":"\u4ea0","\u2f08":"\u4eba","\u2f09":"\u513f",
+"\u2f0a":"\u5165","\u2f0b":"\u516b","\u2f0c":"\u5182","\u2f0d":"\u5196","\u2f0e":"\u51ab","\u2f0f":"\u51e0","\u2f10":"\u51f5","\u2f11":"\u5200","\u2f12":"\u529b","\u2f13":"\u52f9","\u2f14":"\u5315","\u2f15":"\u531a","\u2f16":"\u5338","\u2f17":"\u5341","\u2f18":"\u535c","\u2f19":"\u5369","\u2f1a":"\u5382","\u2f1b":"\u53b6","\u2f1c":"\u53c8","\u2f1d":"\u53e3","\u2f1e":"\u56d7","\u2f1f":"\u571f","\u2f20":"\u58eb","\u2f21":"\u5902","\u2f22":"\u590a","\u2f23":"\u5915","\u2f24":"\u5927","\u2f25":"\u5973",
+"\u2f26":"\u5b50","\u2f27":"\u5b80","\u2f28":"\u5bf8","\u2f29":"\u5c0f","\u2f2a":"\u5c22","\u2f2b":"\u5c38","\u2f2c":"\u5c6e","\u2f2d":"\u5c71","\u2f2e":"\u5ddb","\u2f2f":"\u5de5","\u2f30":"\u5df1","\u2f31":"\u5dfe","\u2f32":"\u5e72","\u2f33":"\u5e7a","\u2f34":"\u5e7f","\u2f35":"\u5ef4","\u2f36":"\u5efe","\u2f37":"\u5f0b","\u2f38":"\u5f13","\u2f39":"\u5f50","\u2f3a":"\u5f61","\u2f3b":"\u5f73","\u2f3c":"\u5fc3","\u2f3d":"\u6208","\u2f3e":"\u6236","\u2f3f":"\u624b","\u2f40":"\u652f","\u2f41":"\u6534",
+"\u2f42":"\u6587","\u2f43":"\u6597","\u2f44":"\u65a4","\u2f45":"\u65b9","\u2f46":"\u65e0","\u2f47":"\u65e5","\u2f48":"\u66f0","\u2f49":"\u6708","\u2f4a":"\u6728","\u2f4b":"\u6b20","\u2f4c":"\u6b62","\u2f4d":"\u6b79","\u2f4e":"\u6bb3","\u2f4f":"\u6bcb","\u2f50":"\u6bd4","\u2f51":"\u6bdb","\u2f52":"\u6c0f","\u2f53":"\u6c14","\u2f54":"\u6c34","\u2f55":"\u706b","\u2f56":"\u722a","\u2f57":"\u7236","\u2f58":"\u723b","\u2f59":"\u723f","\u2f5a":"\u7247","\u2f5b":"\u7259","\u2f5c":"\u725b","\u2f5d":"\u72ac",
+"\u2f5e":"\u7384","\u2f5f":"\u7389","\u2f60":"\u74dc","\u2f61":"\u74e6","\u2f62":"\u7518","\u2f63":"\u751f","\u2f64":"\u7528","\u2f65":"\u7530","\u2f66":"\u758b","\u2f67":"\u7592","\u2f68":"\u7676","\u2f69":"\u767d","\u2f6a":"\u76ae","\u2f6b":"\u76bf","\u2f6c":"\u76ee","\u2f6d":"\u77db","\u2f6e":"\u77e2","\u2f6f":"\u77f3","\u2f70":"\u793a","\u2f71":"\u79b8","\u2f72":"\u79be","\u2f73":"\u7a74","\u2f74":"\u7acb","\u2f75":"\u7af9","\u2f76":"\u7c73","\u2f77":"\u7cf8","\u2f78":"\u7f36","\u2f79":"\u7f51",
+"\u2f7a":"\u7f8a","\u2f7b":"\u7fbd","\u2f7c":"\u8001","\u2f7d":"\u800c","\u2f7e":"\u8012","\u2f7f":"\u8033","\u2f80":"\u807f","\u2f81":"\u8089","\u2f82":"\u81e3","\u2f83":"\u81ea","\u2f84":"\u81f3","\u2f85":"\u81fc","\u2f86":"\u820c","\u2f87":"\u821b","\u2f88":"\u821f","\u2f89":"\u826e","\u2f8a":"\u8272","\u2f8b":"\u8278","\u2f8c":"\u864d","\u2f8d":"\u866b","\u2f8e":"\u8840","\u2f8f":"\u884c","\u2f90":"\u8863","\u2f91":"\u897e","\u2f92":"\u898b","\u2f93":"\u89d2","\u2f94":"\u8a00","\u2f95":"\u8c37",
+"\u2f96":"\u8c46","\u2f97":"\u8c55","\u2f98":"\u8c78","\u2f99":"\u8c9d","\u2f9a":"\u8d64","\u2f9b":"\u8d70","\u2f9c":"\u8db3","\u2f9d":"\u8eab","\u2f9e":"\u8eca","\u2f9f":"\u8f9b","\u2fa0":"\u8fb0","\u2fa1":"\u8fb5","\u2fa2":"\u9091","\u2fa3":"\u9149","\u2fa4":"\u91c6","\u2fa5":"\u91cc","\u2fa6":"\u91d1","\u2fa7":"\u9577","\u2fa8":"\u9580","\u2fa9":"\u961c","\u2faa":"\u96b6","\u2fab":"\u96b9","\u2fac":"\u96e8","\u2fad":"\u9751","\u2fae":"\u975e","\u2faf":"\u9762","\u2fb0":"\u9769","\u2fb1":"\u97cb",
+"\u2fb2":"\u97ed","\u2fb3":"\u97f3","\u2fb4":"\u9801","\u2fb5":"\u98a8","\u2fb6":"\u98db","\u2fb7":"\u98df","\u2fb8":"\u9996","\u2fb9":"\u9999","\u2fba":"\u99ac","\u2fbb":"\u9aa8","\u2fbc":"\u9ad8","\u2fbd":"\u9adf","\u2fbe":"\u9b25","\u2fbf":"\u9b2f","\u2fc0":"\u9b32","\u2fc1":"\u9b3c","\u2fc2":"\u9b5a","\u2fc3":"\u9ce5","\u2fc4":"\u9e75","\u2fc5":"\u9e7f","\u2fc6":"\u9ea5","\u2fc7":"\u9ebb","\u2fc8":"\u9ec3","\u2fc9":"\u9ecd","\u2fca":"\u9ed1","\u2fcb":"\u9ef9","\u2fcc":"\u9efd","\u2fcd":"\u9f0e",
+"\u2fce":"\u9f13","\u2fcf":"\u9f20","\u2fd0":"\u9f3b","\u2fd1":"\u9f4a","\u2fd2":"\u9f52","\u2fd3":"\u9f8d","\u2fd4":"\u9f9c","\u2fd5":"\u9fa0","\u3036":"\u3012","\u3038":"\u5341","\u3039":"\u5344","\u303a":"\u5345","\u309b":" \u3099","\u309c":" \u309a","\u3131":"\u1100","\u3132":"\u1101","\u3133":"\u11aa","\u3134":"\u1102","\u3135":"\u11ac","\u3136":"\u11ad","\u3137":"\u1103","\u3138":"\u1104","\u3139":"\u1105","\u313a":"\u11b0","\u313b":"\u11b1","\u313c":"\u11b2","\u313d":"\u11b3","\u313e":"\u11b4",
+"\u313f":"\u11b5","\u3140":"\u111a","\u3141":"\u1106","\u3142":"\u1107","\u3143":"\u1108","\u3144":"\u1121","\u3145":"\u1109","\u3146":"\u110a","\u3147":"\u110b","\u3148":"\u110c","\u3149":"\u110d","\u314a":"\u110e","\u314b":"\u110f","\u314c":"\u1110","\u314d":"\u1111","\u314e":"\u1112","\u314f":"\u1161","\u3150":"\u1162","\u3151":"\u1163","\u3152":"\u1164","\u3153":"\u1165","\u3154":"\u1166","\u3155":"\u1167","\u3156":"\u1168","\u3157":"\u1169","\u3158":"\u116a","\u3159":"\u116b","\u315a":"\u116c",
+"\u315b":"\u116d","\u315c":"\u116e","\u315d":"\u116f","\u315e":"\u1170","\u315f":"\u1171","\u3160":"\u1172","\u3161":"\u1173","\u3162":"\u1174","\u3163":"\u1175","\u3164":"\u1160","\u3165":"\u1114","\u3166":"\u1115","\u3167":"\u11c7","\u3168":"\u11c8","\u3169":"\u11cc","\u316a":"\u11ce","\u316b":"\u11d3","\u316c":"\u11d7","\u316d":"\u11d9","\u316e":"\u111c","\u316f":"\u11dd","\u3170":"\u11df","\u3171":"\u111d","\u3172":"\u111e","\u3173":"\u1120","\u3174":"\u1122","\u3175":"\u1123","\u3176":"\u1127",
+"\u3177":"\u1129","\u3178":"\u112b","\u3179":"\u112c","\u317a":"\u112d","\u317b":"\u112e","\u317c":"\u112f","\u317d":"\u1132","\u317e":"\u1136","\u317f":"\u1140","\u3180":"\u1147","\u3181":"\u114c","\u3182":"\u11f1","\u3183":"\u11f2","\u3184":"\u1157","\u3185":"\u1158","\u3186":"\u1159","\u3187":"\u1184","\u3188":"\u1185","\u3189":"\u1188","\u318a":"\u1191","\u318b":"\u1192","\u318c":"\u1194","\u318d":"\u119e","\u318e":"\u11a1","\u3200":"(\u1100)","\u3201":"(\u1102)","\u3202":"(\u1103)","\u3203":"(\u1105)",
+"\u3204":"(\u1106)","\u3205":"(\u1107)","\u3206":"(\u1109)","\u3207":"(\u110b)","\u3208":"(\u110c)","\u3209":"(\u110e)","\u320a":"(\u110f)","\u320b":"(\u1110)","\u320c":"(\u1111)","\u320d":"(\u1112)","\u320e":"(\u1100\u1161)","\u320f":"(\u1102\u1161)","\u3210":"(\u1103\u1161)","\u3211":"(\u1105\u1161)","\u3212":"(\u1106\u1161)","\u3213":"(\u1107\u1161)","\u3214":"(\u1109\u1161)","\u3215":"(\u110b\u1161)","\u3216":"(\u110c\u1161)","\u3217":"(\u110e\u1161)","\u3218":"(\u110f\u1161)","\u3219":"(\u1110\u1161)",
+"\u321a":"(\u1111\u1161)","\u321b":"(\u1112\u1161)","\u321c":"(\u110c\u116e)","\u321d":"(\u110b\u1169\u110c\u1165\u11ab)","\u321e":"(\u110b\u1169\u1112\u116e)","\u3220":"(\u4e00)","\u3221":"(\u4e8c)","\u3222":"(\u4e09)","\u3223":"(\u56db)","\u3224":"(\u4e94)","\u3225":"(\u516d)","\u3226":"(\u4e03)","\u3227":"(\u516b)","\u3228":"(\u4e5d)","\u3229":"(\u5341)","\u322a":"(\u6708)","\u322b":"(\u706b)","\u322c":"(\u6c34)","\u322d":"(\u6728)","\u322e":"(\u91d1)","\u322f":"(\u571f)","\u3230":"(\u65e5)","\u3231":"(\u682a)",
+"\u3232":"(\u6709)","\u3233":"(\u793e)","\u3234":"(\u540d)","\u3235":"(\u7279)","\u3236":"(\u8ca1)","\u3237":"(\u795d)","\u3238":"(\u52b4)","\u3239":"(\u4ee3)","\u323a":"(\u547c)","\u323b":"(\u5b66)","\u323c":"(\u76e3)","\u323d":"(\u4f01)","\u323e":"(\u8cc7)","\u323f":"(\u5354)","\u3240":"(\u796d)","\u3241":"(\u4f11)","\u3242":"(\u81ea)","\u3243":"(\u81f3)","\u32c0":"1\u6708","\u32c1":"2\u6708","\u32c2":"3\u6708","\u32c3":"4\u6708","\u32c4":"5\u6708","\u32c5":"6\u6708","\u32c6":"7\u6708","\u32c7":"8\u6708",
+"\u32c8":"9\u6708","\u32c9":"10\u6708","\u32ca":"11\u6708","\u32cb":"12\u6708","\u3358":"0\u70b9","\u3359":"1\u70b9","\u335a":"2\u70b9","\u335b":"3\u70b9","\u335c":"4\u70b9","\u335d":"5\u70b9","\u335e":"6\u70b9","\u335f":"7\u70b9","\u3360":"8\u70b9","\u3361":"9\u70b9","\u3362":"10\u70b9","\u3363":"11\u70b9","\u3364":"12\u70b9","\u3365":"13\u70b9","\u3366":"14\u70b9","\u3367":"15\u70b9","\u3368":"16\u70b9","\u3369":"17\u70b9","\u336a":"18\u70b9","\u336b":"19\u70b9","\u336c":"20\u70b9","\u336d":"21\u70b9",
+"\u336e":"22\u70b9","\u336f":"23\u70b9","\u3370":"24\u70b9","\u33e0":"1\u65e5","\u33e1":"2\u65e5","\u33e2":"3\u65e5","\u33e3":"4\u65e5","\u33e4":"5\u65e5","\u33e5":"6\u65e5","\u33e6":"7\u65e5","\u33e7":"8\u65e5","\u33e8":"9\u65e5","\u33e9":"10\u65e5","\u33ea":"11\u65e5","\u33eb":"12\u65e5","\u33ec":"13\u65e5","\u33ed":"14\u65e5","\u33ee":"15\u65e5","\u33ef":"16\u65e5","\u33f0":"17\u65e5","\u33f1":"18\u65e5","\u33f2":"19\u65e5","\u33f3":"20\u65e5","\u33f4":"21\u65e5","\u33f5":"22\u65e5","\u33f6":"23\u65e5",
+"\u33f7":"24\u65e5","\u33f8":"25\u65e5","\u33f9":"26\u65e5","\u33fa":"27\u65e5","\u33fb":"28\u65e5","\u33fc":"29\u65e5","\u33fd":"30\u65e5","\u33fe":"31\u65e5","\ufb00":"ff","\ufb01":"fi","\ufb02":"fl","\ufb03":"ffi","\ufb04":"ffl","\ufb05":"\u017ft","\ufb06":"st","\ufb13":"\u0574\u0576","\ufb14":"\u0574\u0565","\ufb15":"\u0574\u056b","\ufb16":"\u057e\u0576","\ufb17":"\u0574\u056d","\ufb4f":"\u05d0\u05dc","\ufb50":"\u0671","\ufb51":"\u0671","\ufb52":"\u067b","\ufb53":"\u067b","\ufb54":"\u067b","\ufb55":"\u067b",
+"\ufb56":"\u067e","\ufb57":"\u067e","\ufb58":"\u067e","\ufb59":"\u067e","\ufb5a":"\u0680","\ufb5b":"\u0680","\ufb5c":"\u0680","\ufb5d":"\u0680","\ufb5e":"\u067a","\ufb5f":"\u067a","\ufb60":"\u067a","\ufb61":"\u067a","\ufb62":"\u067f","\ufb63":"\u067f","\ufb64":"\u067f","\ufb65":"\u067f","\ufb66":"\u0679","\ufb67":"\u0679","\ufb68":"\u0679","\ufb69":"\u0679","\ufb6a":"\u06a4","\ufb6b":"\u06a4","\ufb6c":"\u06a4","\ufb6d":"\u06a4","\ufb6e":"\u06a6","\ufb6f":"\u06a6","\ufb70":"\u06a6","\ufb71":"\u06a6",
+"\ufb72":"\u0684","\ufb73":"\u0684","\ufb74":"\u0684","\ufb75":"\u0684","\ufb76":"\u0683","\ufb77":"\u0683","\ufb78":"\u0683","\ufb79":"\u0683","\ufb7a":"\u0686","\ufb7b":"\u0686","\ufb7c":"\u0686","\ufb7d":"\u0686","\ufb7e":"\u0687","\ufb7f":"\u0687","\ufb80":"\u0687","\ufb81":"\u0687","\ufb82":"\u068d","\ufb83":"\u068d","\ufb84":"\u068c","\ufb85":"\u068c","\ufb86":"\u068e","\ufb87":"\u068e","\ufb88":"\u0688","\ufb89":"\u0688","\ufb8a":"\u0698","\ufb8b":"\u0698","\ufb8c":"\u0691","\ufb8d":"\u0691",
+"\ufb8e":"\u06a9","\ufb8f":"\u06a9","\ufb90":"\u06a9","\ufb91":"\u06a9","\ufb92":"\u06af","\ufb93":"\u06af","\ufb94":"\u06af","\ufb95":"\u06af","\ufb96":"\u06b3","\ufb97":"\u06b3","\ufb98":"\u06b3","\ufb99":"\u06b3","\ufb9a":"\u06b1","\ufb9b":"\u06b1","\ufb9c":"\u06b1","\ufb9d":"\u06b1","\ufb9e":"\u06ba","\ufb9f":"\u06ba","\ufba0":"\u06bb","\ufba1":"\u06bb","\ufba2":"\u06bb","\ufba3":"\u06bb","\ufba4":"\u06c0","\ufba5":"\u06c0","\ufba6":"\u06c1","\ufba7":"\u06c1","\ufba8":"\u06c1","\ufba9":"\u06c1",
+"\ufbaa":"\u06be","\ufbab":"\u06be","\ufbac":"\u06be","\ufbad":"\u06be","\ufbae":"\u06d2","\ufbaf":"\u06d2","\ufbb0":"\u06d3","\ufbb1":"\u06d3","\ufbd3":"\u06ad","\ufbd4":"\u06ad","\ufbd5":"\u06ad","\ufbd6":"\u06ad","\ufbd7":"\u06c7","\ufbd8":"\u06c7","\ufbd9":"\u06c6","\ufbda":"\u06c6","\ufbdb":"\u06c8","\ufbdc":"\u06c8","\ufbdd":"\u0677","\ufbde":"\u06cb","\ufbdf":"\u06cb","\ufbe0":"\u06c5","\ufbe1":"\u06c5","\ufbe2":"\u06c9","\ufbe3":"\u06c9","\ufbe4":"\u06d0","\ufbe5":"\u06d0","\ufbe6":"\u06d0",
+"\ufbe7":"\u06d0","\ufbe8":"\u0649","\ufbe9":"\u0649","\ufbea":"\u0626\u0627","\ufbeb":"\u0626\u0627","\ufbec":"\u0626\u06d5","\ufbed":"\u0626\u06d5","\ufbee":"\u0626\u0648","\ufbef":"\u0626\u0648","\ufbf0":"\u0626\u06c7","\ufbf1":"\u0626\u06c7","\ufbf2":"\u0626\u06c6","\ufbf3":"\u0626\u06c6","\ufbf4":"\u0626\u06c8","\ufbf5":"\u0626\u06c8","\ufbf6":"\u0626\u06d0","\ufbf7":"\u0626\u06d0","\ufbf8":"\u0626\u06d0","\ufbf9":"\u0626\u0649","\ufbfa":"\u0626\u0649","\ufbfb":"\u0626\u0649","\ufbfc":"\u06cc",
+"\ufbfd":"\u06cc","\ufbfe":"\u06cc","\ufbff":"\u06cc","\ufc00":"\u0626\u062c","\ufc01":"\u0626\u062d","\ufc02":"\u0626\u0645","\ufc03":"\u0626\u0649","\ufc04":"\u0626\u064a","\ufc05":"\u0628\u062c","\ufc06":"\u0628\u062d","\ufc07":"\u0628\u062e","\ufc08":"\u0628\u0645","\ufc09":"\u0628\u0649","\ufc0a":"\u0628\u064a","\ufc0b":"\u062a\u062c","\ufc0c":"\u062a\u062d","\ufc0d":"\u062a\u062e","\ufc0e":"\u062a\u0645","\ufc0f":"\u062a\u0649","\ufc10":"\u062a\u064a","\ufc11":"\u062b\u062c","\ufc12":"\u062b\u0645",
+"\ufc13":"\u062b\u0649","\ufc14":"\u062b\u064a","\ufc15":"\u062c\u062d","\ufc16":"\u062c\u0645","\ufc17":"\u062d\u062c","\ufc18":"\u062d\u0645","\ufc19":"\u062e\u062c","\ufc1a":"\u062e\u062d","\ufc1b":"\u062e\u0645","\ufc1c":"\u0633\u062c","\ufc1d":"\u0633\u062d","\ufc1e":"\u0633\u062e","\ufc1f":"\u0633\u0645","\ufc20":"\u0635\u062d","\ufc21":"\u0635\u0645","\ufc22":"\u0636\u062c","\ufc23":"\u0636\u062d","\ufc24":"\u0636\u062e","\ufc25":"\u0636\u0645","\ufc26":"\u0637\u062d","\ufc27":"\u0637\u0645",
+"\ufc28":"\u0638\u0645","\ufc29":"\u0639\u062c","\ufc2a":"\u0639\u0645","\ufc2b":"\u063a\u062c","\ufc2c":"\u063a\u0645","\ufc2d":"\u0641\u062c","\ufc2e":"\u0641\u062d","\ufc2f":"\u0641\u062e","\ufc30":"\u0641\u0645","\ufc31":"\u0641\u0649","\ufc32":"\u0641\u064a","\ufc33":"\u0642\u062d","\ufc34":"\u0642\u0645","\ufc35":"\u0642\u0649","\ufc36":"\u0642\u064a","\ufc37":"\u0643\u0627","\ufc38":"\u0643\u062c","\ufc39":"\u0643\u062d","\ufc3a":"\u0643\u062e","\ufc3b":"\u0643\u0644","\ufc3c":"\u0643\u0645",
+"\ufc3d":"\u0643\u0649","\ufc3e":"\u0643\u064a","\ufc3f":"\u0644\u062c","\ufc40":"\u0644\u062d","\ufc41":"\u0644\u062e","\ufc42":"\u0644\u0645","\ufc43":"\u0644\u0649","\ufc44":"\u0644\u064a","\ufc45":"\u0645\u062c","\ufc46":"\u0645\u062d","\ufc47":"\u0645\u062e","\ufc48":"\u0645\u0645","\ufc49":"\u0645\u0649","\ufc4a":"\u0645\u064a","\ufc4b":"\u0646\u062c","\ufc4c":"\u0646\u062d","\ufc4d":"\u0646\u062e","\ufc4e":"\u0646\u0645","\ufc4f":"\u0646\u0649","\ufc50":"\u0646\u064a","\ufc51":"\u0647\u062c",
+"\ufc52":"\u0647\u0645","\ufc53":"\u0647\u0649","\ufc54":"\u0647\u064a","\ufc55":"\u064a\u062c","\ufc56":"\u064a\u062d","\ufc57":"\u064a\u062e","\ufc58":"\u064a\u0645","\ufc59":"\u064a\u0649","\ufc5a":"\u064a\u064a","\ufc5b":"\u0630\u0670","\ufc5c":"\u0631\u0670","\ufc5d":"\u0649\u0670","\ufc5e":" \u064c\u0651","\ufc5f":" \u064d\u0651","\ufc60":" \u064e\u0651","\ufc61":" \u064f\u0651","\ufc62":" \u0650\u0651","\ufc63":" \u0651\u0670","\ufc64":"\u0626\u0631","\ufc65":"\u0626\u0632","\ufc66":"\u0626\u0645",
+"\ufc67":"\u0626\u0646","\ufc68":"\u0626\u0649","\ufc69":"\u0626\u064a","\ufc6a":"\u0628\u0631","\ufc6b":"\u0628\u0632","\ufc6c":"\u0628\u0645","\ufc6d":"\u0628\u0646","\ufc6e":"\u0628\u0649","\ufc6f":"\u0628\u064a","\ufc70":"\u062a\u0631","\ufc71":"\u062a\u0632","\ufc72":"\u062a\u0645","\ufc73":"\u062a\u0646","\ufc74":"\u062a\u0649","\ufc75":"\u062a\u064a","\ufc76":"\u062b\u0631","\ufc77":"\u062b\u0632","\ufc78":"\u062b\u0645","\ufc79":"\u062b\u0646","\ufc7a":"\u062b\u0649","\ufc7b":"\u062b\u064a",
+"\ufc7c":"\u0641\u0649","\ufc7d":"\u0641\u064a","\ufc7e":"\u0642\u0649","\ufc7f":"\u0642\u064a","\ufc80":"\u0643\u0627","\ufc81":"\u0643\u0644","\ufc82":"\u0643\u0645","\ufc83":"\u0643\u0649","\ufc84":"\u0643\u064a","\ufc85":"\u0644\u0645","\ufc86":"\u0644\u0649","\ufc87":"\u0644\u064a","\ufc88":"\u0645\u0627","\ufc89":"\u0645\u0645","\ufc8a":"\u0646\u0631","\ufc8b":"\u0646\u0632","\ufc8c":"\u0646\u0645","\ufc8d":"\u0646\u0646","\ufc8e":"\u0646\u0649","\ufc8f":"\u0646\u064a","\ufc90":"\u0649\u0670",
+"\ufc91":"\u064a\u0631","\ufc92":"\u064a\u0632","\ufc93":"\u064a\u0645","\ufc94":"\u064a\u0646","\ufc95":"\u064a\u0649","\ufc96":"\u064a\u064a","\ufc97":"\u0626\u062c","\ufc98":"\u0626\u062d","\ufc99":"\u0626\u062e","\ufc9a":"\u0626\u0645","\ufc9b":"\u0626\u0647","\ufc9c":"\u0628\u062c","\ufc9d":"\u0628\u062d","\ufc9e":"\u0628\u062e","\ufc9f":"\u0628\u0645","\ufca0":"\u0628\u0647","\ufca1":"\u062a\u062c","\ufca2":"\u062a\u062d","\ufca3":"\u062a\u062e","\ufca4":"\u062a\u0645","\ufca5":"\u062a\u0647",
+"\ufca6":"\u062b\u0645","\ufca7":"\u062c\u062d","\ufca8":"\u062c\u0645","\ufca9":"\u062d\u062c","\ufcaa":"\u062d\u0645","\ufcab":"\u062e\u062c","\ufcac":"\u062e\u0645","\ufcad":"\u0633\u062c","\ufcae":"\u0633\u062d","\ufcaf":"\u0633\u062e","\ufcb0":"\u0633\u0645","\ufcb1":"\u0635\u062d","\ufcb2":"\u0635\u062e","\ufcb3":"\u0635\u0645","\ufcb4":"\u0636\u062c","\ufcb5":"\u0636\u062d","\ufcb6":"\u0636\u062e","\ufcb7":"\u0636\u0645","\ufcb8":"\u0637\u062d","\ufcb9":"\u0638\u0645","\ufcba":"\u0639\u062c",
+"\ufcbb":"\u0639\u0645","\ufcbc":"\u063a\u062c","\ufcbd":"\u063a\u0645","\ufcbe":"\u0641\u062c","\ufcbf":"\u0641\u062d","\ufcc0":"\u0641\u062e","\ufcc1":"\u0641\u0645","\ufcc2":"\u0642\u062d","\ufcc3":"\u0642\u0645","\ufcc4":"\u0643\u062c","\ufcc5":"\u0643\u062d","\ufcc6":"\u0643\u062e","\ufcc7":"\u0643\u0644","\ufcc8":"\u0643\u0645","\ufcc9":"\u0644\u062c","\ufcca":"\u0644\u062d","\ufccb":"\u0644\u062e","\ufccc":"\u0644\u0645","\ufccd":"\u0644\u0647","\ufcce":"\u0645\u062c","\ufccf":"\u0645\u062d",
+"\ufcd0":"\u0645\u062e","\ufcd1":"\u0645\u0645","\ufcd2":"\u0646\u062c","\ufcd3":"\u0646\u062d","\ufcd4":"\u0646\u062e","\ufcd5":"\u0646\u0645","\ufcd6":"\u0646\u0647","\ufcd7":"\u0647\u062c","\ufcd8":"\u0647\u0645","\ufcd9":"\u0647\u0670","\ufcda":"\u064a\u062c","\ufcdb":"\u064a\u062d","\ufcdc":"\u064a\u062e","\ufcdd":"\u064a\u0645","\ufcde":"\u064a\u0647","\ufcdf":"\u0626\u0645","\ufce0":"\u0626\u0647","\ufce1":"\u0628\u0645","\ufce2":"\u0628\u0647","\ufce3":"\u062a\u0645","\ufce4":"\u062a\u0647",
+"\ufce5":"\u062b\u0645","\ufce6":"\u062b\u0647","\ufce7":"\u0633\u0645","\ufce8":"\u0633\u0647","\ufce9":"\u0634\u0645","\ufcea":"\u0634\u0647","\ufceb":"\u0643\u0644","\ufcec":"\u0643\u0645","\ufced":"\u0644\u0645","\ufcee":"\u0646\u0645","\ufcef":"\u0646\u0647","\ufcf0":"\u064a\u0645","\ufcf1":"\u064a\u0647","\ufcf2":"\u0640\u064e\u0651","\ufcf3":"\u0640\u064f\u0651","\ufcf4":"\u0640\u0650\u0651","\ufcf5":"\u0637\u0649","\ufcf6":"\u0637\u064a","\ufcf7":"\u0639\u0649","\ufcf8":"\u0639\u064a","\ufcf9":"\u063a\u0649",
+"\ufcfa":"\u063a\u064a","\ufcfb":"\u0633\u0649","\ufcfc":"\u0633\u064a","\ufcfd":"\u0634\u0649","\ufcfe":"\u0634\u064a","\ufcff":"\u062d\u0649","\ufd00":"\u062d\u064a","\ufd01":"\u062c\u0649","\ufd02":"\u062c\u064a","\ufd03":"\u062e\u0649","\ufd04":"\u062e\u064a","\ufd05":"\u0635\u0649","\ufd06":"\u0635\u064a","\ufd07":"\u0636\u0649","\ufd08":"\u0636\u064a","\ufd09":"\u0634\u062c","\ufd0a":"\u0634\u062d","\ufd0b":"\u0634\u062e","\ufd0c":"\u0634\u0645","\ufd0d":"\u0634\u0631","\ufd0e":"\u0633\u0631",
+"\ufd0f":"\u0635\u0631","\ufd10":"\u0636\u0631","\ufd11":"\u0637\u0649","\ufd12":"\u0637\u064a","\ufd13":"\u0639\u0649","\ufd14":"\u0639\u064a","\ufd15":"\u063a\u0649","\ufd16":"\u063a\u064a","\ufd17":"\u0633\u0649","\ufd18":"\u0633\u064a","\ufd19":"\u0634\u0649","\ufd1a":"\u0634\u064a","\ufd1b":"\u062d\u0649","\ufd1c":"\u062d\u064a","\ufd1d":"\u062c\u0649","\ufd1e":"\u062c\u064a","\ufd1f":"\u062e\u0649","\ufd20":"\u062e\u064a","\ufd21":"\u0635\u0649","\ufd22":"\u0635\u064a","\ufd23":"\u0636\u0649",
+"\ufd24":"\u0636\u064a","\ufd25":"\u0634\u062c","\ufd26":"\u0634\u062d","\ufd27":"\u0634\u062e","\ufd28":"\u0634\u0645","\ufd29":"\u0634\u0631","\ufd2a":"\u0633\u0631","\ufd2b":"\u0635\u0631","\ufd2c":"\u0636\u0631","\ufd2d":"\u0634\u062c","\ufd2e":"\u0634\u062d","\ufd2f":"\u0634\u062e","\ufd30":"\u0634\u0645","\ufd31":"\u0633\u0647","\ufd32":"\u0634\u0647","\ufd33":"\u0637\u0645","\ufd34":"\u0633\u062c","\ufd35":"\u0633\u062d","\ufd36":"\u0633\u062e","\ufd37":"\u0634\u062c","\ufd38":"\u0634\u062d",
+"\ufd39":"\u0634\u062e","\ufd3a":"\u0637\u0645","\ufd3b":"\u0638\u0645","\ufd3c":"\u0627\u064b","\ufd3d":"\u0627\u064b","\ufd50":"\u062a\u062c\u0645","\ufd51":"\u062a\u062d\u062c","\ufd52":"\u062a\u062d\u062c","\ufd53":"\u062a\u062d\u0645","\ufd54":"\u062a\u062e\u0645","\ufd55":"\u062a\u0645\u062c","\ufd56":"\u062a\u0645\u062d","\ufd57":"\u062a\u0645\u062e","\ufd58":"\u062c\u0645\u062d","\ufd59":"\u062c\u0645\u062d","\ufd5a":"\u062d\u0645\u064a","\ufd5b":"\u062d\u0645\u0649","\ufd5c":"\u0633\u062d\u062c",
+"\ufd5d":"\u0633\u062c\u062d","\ufd5e":"\u0633\u062c\u0649","\ufd5f":"\u0633\u0645\u062d","\ufd60":"\u0633\u0645\u062d","\ufd61":"\u0633\u0645\u062c","\ufd62":"\u0633\u0645\u0645","\ufd63":"\u0633\u0645\u0645","\ufd64":"\u0635\u062d\u062d","\ufd65":"\u0635\u062d\u062d","\ufd66":"\u0635\u0645\u0645","\ufd67":"\u0634\u062d\u0645","\ufd68":"\u0634\u062d\u0645","\ufd69":"\u0634\u062c\u064a","\ufd6a":"\u0634\u0645\u062e","\ufd6b":"\u0634\u0645\u062e","\ufd6c":"\u0634\u0645\u0645","\ufd6d":"\u0634\u0645\u0645",
+"\ufd6e":"\u0636\u062d\u0649","\ufd6f":"\u0636\u062e\u0645","\ufd70":"\u0636\u062e\u0645","\ufd71":"\u0637\u0645\u062d","\ufd72":"\u0637\u0645\u062d","\ufd73":"\u0637\u0645\u0645","\ufd74":"\u0637\u0645\u064a","\ufd75":"\u0639\u062c\u0645","\ufd76":"\u0639\u0645\u0645","\ufd77":"\u0639\u0645\u0645","\ufd78":"\u0639\u0645\u0649","\ufd79":"\u063a\u0645\u0645","\ufd7a":"\u063a\u0645\u064a","\ufd7b":"\u063a\u0645\u0649","\ufd7c":"\u0641\u062e\u0645","\ufd7d":"\u0641\u062e\u0645","\ufd7e":"\u0642\u0645\u062d",
+"\ufd7f":"\u0642\u0645\u0645","\ufd80":"\u0644\u062d\u0645","\ufd81":"\u0644\u062d\u064a","\ufd82":"\u0644\u062d\u0649","\ufd83":"\u0644\u062c\u062c","\ufd84":"\u0644\u062c\u062c","\ufd85":"\u0644\u062e\u0645","\ufd86":"\u0644\u062e\u0645","\ufd87":"\u0644\u0645\u062d","\ufd88":"\u0644\u0645\u062d","\ufd89":"\u0645\u062d\u062c","\ufd8a":"\u0645\u062d\u0645","\ufd8b":"\u0645\u062d\u064a","\ufd8c":"\u0645\u062c\u062d","\ufd8d":"\u0645\u062c\u0645","\ufd8e":"\u0645\u062e\u062c","\ufd8f":"\u0645\u062e\u0645",
+"\ufd92":"\u0645\u062c\u062e","\ufd93":"\u0647\u0645\u062c","\ufd94":"\u0647\u0645\u0645","\ufd95":"\u0646\u062d\u0645","\ufd96":"\u0646\u062d\u0649","\ufd97":"\u0646\u062c\u0645","\ufd98":"\u0646\u062c\u0645","\ufd99":"\u0646\u062c\u0649","\ufd9a":"\u0646\u0645\u064a","\ufd9b":"\u0646\u0645\u0649","\ufd9c":"\u064a\u0645\u0645","\ufd9d":"\u064a\u0645\u0645","\ufd9e":"\u0628\u062e\u064a","\ufd9f":"\u062a\u062c\u064a","\ufda0":"\u062a\u062c\u0649","\ufda1":"\u062a\u062e\u064a","\ufda2":"\u062a\u062e\u0649",
+"\ufda3":"\u062a\u0645\u064a","\ufda4":"\u062a\u0645\u0649","\ufda5":"\u062c\u0645\u064a","\ufda6":"\u062c\u062d\u0649","\ufda7":"\u062c\u0645\u0649","\ufda8":"\u0633\u062e\u0649","\ufda9":"\u0635\u062d\u064a","\ufdaa":"\u0634\u062d\u064a","\ufdab":"\u0636\u062d\u064a","\ufdac":"\u0644\u062c\u064a","\ufdad":"\u0644\u0645\u064a","\ufdae":"\u064a\u062d\u064a","\ufdaf":"\u064a\u062c\u064a","\ufdb0":"\u064a\u0645\u064a","\ufdb1":"\u0645\u0645\u064a","\ufdb2":"\u0642\u0645\u064a","\ufdb3":"\u0646\u062d\u064a",
+"\ufdb4":"\u0642\u0645\u062d","\ufdb5":"\u0644\u062d\u0645","\ufdb6":"\u0639\u0645\u064a","\ufdb7":"\u0643\u0645\u064a","\ufdb8":"\u0646\u062c\u062d","\ufdb9":"\u0645\u062e\u064a","\ufdba":"\u0644\u062c\u0645","\ufdbb":"\u0643\u0645\u0645","\ufdbc":"\u0644\u062c\u0645","\ufdbd":"\u0646\u062c\u062d","\ufdbe":"\u062c\u062d\u064a","\ufdbf":"\u062d\u062c\u064a","\ufdc0":"\u0645\u062c\u064a","\ufdc1":"\u0641\u0645\u064a","\ufdc2":"\u0628\u062d\u064a","\ufdc3":"\u0643\u0645\u0645","\ufdc4":"\u0639\u062c\u0645",
+"\ufdc5":"\u0635\u0645\u0645","\ufdc6":"\u0633\u062e\u064a","\ufdc7":"\u0646\u062c\u064a","\ufe49":"\u203e","\ufe4a":"\u203e","\ufe4b":"\u203e","\ufe4c":"\u203e","\ufe4d":"_","\ufe4e":"_","\ufe4f":"_","\ufe80":"\u0621","\ufe81":"\u0622","\ufe82":"\u0622","\ufe83":"\u0623","\ufe84":"\u0623","\ufe85":"\u0624","\ufe86":"\u0624","\ufe87":"\u0625","\ufe88":"\u0625","\ufe89":"\u0626","\ufe8a":"\u0626","\ufe8b":"\u0626","\ufe8c":"\u0626","\ufe8d":"\u0627","\ufe8e":"\u0627","\ufe8f":"\u0628","\ufe90":"\u0628",
+"\ufe91":"\u0628","\ufe92":"\u0628","\ufe93":"\u0629","\ufe94":"\u0629","\ufe95":"\u062a","\ufe96":"\u062a","\ufe97":"\u062a","\ufe98":"\u062a","\ufe99":"\u062b","\ufe9a":"\u062b","\ufe9b":"\u062b","\ufe9c":"\u062b","\ufe9d":"\u062c","\ufe9e":"\u062c","\ufe9f":"\u062c","\ufea0":"\u062c","\ufea1":"\u062d","\ufea2":"\u062d","\ufea3":"\u062d","\ufea4":"\u062d","\ufea5":"\u062e","\ufea6":"\u062e","\ufea7":"\u062e","\ufea8":"\u062e","\ufea9":"\u062f","\ufeaa":"\u062f","\ufeab":"\u0630","\ufeac":"\u0630",
+"\ufead":"\u0631","\ufeae":"\u0631","\ufeaf":"\u0632","\ufeb0":"\u0632","\ufeb1":"\u0633","\ufeb2":"\u0633","\ufeb3":"\u0633","\ufeb4":"\u0633","\ufeb5":"\u0634","\ufeb6":"\u0634","\ufeb7":"\u0634","\ufeb8":"\u0634","\ufeb9":"\u0635","\ufeba":"\u0635","\ufebb":"\u0635","\ufebc":"\u0635","\ufebd":"\u0636","\ufebe":"\u0636","\ufebf":"\u0636","\ufec0":"\u0636","\ufec1":"\u0637","\ufec2":"\u0637","\ufec3":"\u0637","\ufec4":"\u0637","\ufec5":"\u0638","\ufec6":"\u0638","\ufec7":"\u0638","\ufec8":"\u0638",
+"\ufec9":"\u0639","\ufeca":"\u0639","\ufecb":"\u0639","\ufecc":"\u0639","\ufecd":"\u063a","\ufece":"\u063a","\ufecf":"\u063a","\ufed0":"\u063a","\ufed1":"\u0641","\ufed2":"\u0641","\ufed3":"\u0641","\ufed4":"\u0641","\ufed5":"\u0642","\ufed6":"\u0642","\ufed7":"\u0642","\ufed8":"\u0642","\ufed9":"\u0643","\ufeda":"\u0643","\ufedb":"\u0643","\ufedc":"\u0643","\ufedd":"\u0644","\ufede":"\u0644","\ufedf":"\u0644","\ufee0":"\u0644","\ufee1":"\u0645","\ufee2":"\u0645","\ufee3":"\u0645","\ufee4":"\u0645",
+"\ufee5":"\u0646","\ufee6":"\u0646","\ufee7":"\u0646","\ufee8":"\u0646","\ufee9":"\u0647","\ufeea":"\u0647","\ufeeb":"\u0647","\ufeec":"\u0647","\ufeed":"\u0648","\ufeee":"\u0648","\ufeef":"\u0649","\ufef0":"\u0649","\ufef1":"\u064a","\ufef2":"\u064a","\ufef3":"\u064a","\ufef4":"\u064a","\ufef5":"\u0644\u0622","\ufef6":"\u0644\u0622","\ufef7":"\u0644\u0623","\ufef8":"\u0644\u0623","\ufef9":"\u0644\u0625","\ufefa":"\u0644\u0625","\ufefb":"\u0644\u0627","\ufefc":"\u0644\u0627"},ie=function(){function f(a,
+b,c,e,d,g){this.fontChar=a;this.unicode=b;this.accent=c;this.width=e;this.vmetric=d;this.operatorListId=g}f.prototype.matchesForCache=function(a,b,c,e,d,g){return this.fontChar===a&&this.unicode===b&&this.accent===c&&this.width===e&&this.vmetric===d&&this.operatorListId===g};return f}(),yb=function(){function f(a,b,c){var d;this.name=a;this.loadedName=c.loadedName;this.isType3Font=c.isType3Font;this.sizes=[];this.glyphCache={};var e=a.split("+"),e=1<e.length?e[1]:e[0];e.split(/[-,_]/g);this.isSerifFont=
+!!(c.flags&Ba.Serif);this.isSymbolicFont=!!(c.flags&Ba.Symbolic);this.isMonospace=!!(c.flags&Ba.FixedPitch);this.type=e=c.type;this.fallbackName=this.isMonospace?"monospace":this.isSerifFont?"serif":"sans-serif";this.differences=c.differences;this.widths=c.widths;this.defaultWidth=c.defaultWidth;this.composite=c.composite;this.wideChars=c.wideChars;this.cMap=c.cMap;this.ascent=c.ascent/jc;this.descent=c.descent/jc;this.fontMatrix=c.fontMatrix;var h=this.buildToUnicode(c);this.toUnicode=c.toUnicode=
+h.toUnicode;this.isIdentityUnicode=c.isIdentityUnicode=h.isIdentity;this.toFontChar=[];if("Type3"==c.type)for(d=0;256>d;d++)this.toFontChar[d]=this.differences[d]||c.defaultEncoding[d];else{this.cidEncoding=c.cidEncoding;if(this.vertical=c.vertical)this.vmetrics=c.vmetrics,this.defaultVMetrics=c.defaultVMetrics;if(!b||b.isEmpty){b&&O('Font file is empty in "'+a+'" ('+this.loadedName+")");this.missingFile=!0;var g=a.replace(/[,_]/g,"-");b=g in Ob;g=Ob[g]||he[g]||g;this.bold=-1!=g.search(/bold/gi);
+this.italic=-1!=g.search(/oblique/gi)||-1!=g.search(/italic/gi);this.black=-1!=a.search(/Black/g);this.remeasure=0<Object.keys(this.widths).length;if(b&&"CIDFontType2"===e&&0===c.cidEncoding.indexOf("Identity-")){a=[];for(var f in ad)a[+f]=ad[f];this.toUnicode=this.toFontChar=a}else if(/Symbol/i.test(g))for(d in a=ja.SymbolSetEncoding,a)(c=Ya[a[d]])&&(this.toFontChar[d]=c);else if(b)for(d in this.toFontChar=[],c.defaultEncoding)this.toFontChar[d]=Ya[c.differences[d]||c.defaultEncoding[d]];else for(d in this.toUnicode)this.toFontChar[d]=
+this.toUnicode[d].charCodeAt(0);this.loadedName=g.split("-")[0];this.loading=!1}else{d=c.subtype;"Type1C"==d&&"Type1"!=e&&"MMType1"!=e&&(f=b.peekBytes(4),65536===fa(f,0)?d="TrueType":e="Type1");"CIDFontType0C"==d&&"CIDFontType0"!=e&&(e="CIDFontType0");"OpenType"===d&&(e="OpenType");var k;switch(e){case "Type1":case "CIDFontType0":this.mimetype="font/opentype";d="Type1C"==d||"CIDFontType0C"==d?new cd(b,c):new dd(a,b,c);if(c.fontMatrix[0]!==Ja[0]){e=0.001/c.fontMatrix[0];f=c.widths;for(g in f)f[g]*=
+e;c.defaultWidth*=e}k=this.convert(a,d,c);break;case "OpenType":case "TrueType":case "CIDFontType2":this.mimetype="font/opentype";k=this.checkAndRepair(a,b,c);break;default:y("Font "+e+" is not supported")}this.data=k;this.fontMatrix=c.fontMatrix;this.widths=c.widths;this.defaultWidth=c.defaultWidth;this.encoding=c.baseEncoding;this.seacMap=c.seacMap;this.loading=!0}}}function a(a){for(var b=0;2<=a;)a/=2,b++;a=2;for(var c=1;c<b;c++)a*=2;return a}function b(a){return String.fromCharCode(a>>8&255,a&
+255)}function c(a){a=32767<a?32767:-32768>a?-32768:a;return String.fromCharCode(a>>8&255,a&255)}function e(c,d,e){"true"==c&&(c=ia(65536));c+=b(e);var g=a(e),h=16*g;c+=b(h);c+=b(Math.log(g)/Math.log(2));c+=b(16*e-h);d.file+=c;d.virtualOffset+=c.length}function d(a,b,c){for(var d=a.virtualOffset,e=c.length;c.length&3;)c.push(0);for(;a.virtualOffset&3;)a.virtualOffset++;for(var g=0,h=c.length,f=0;f<h;f+=4)g=g+((c[f]<<24)+(c[f+1]<<16)+(c[f+2]<<8)+c[f+3])|0;b=b+ia(g)+ia(d)+ia(e);a.file+=b;a.virtualOffset+=
+c.length}function g(a,b){var c=b.toUnicode,d=!!(b.flags&Ba.Symbolic),e=b.isIdentityUnicode,g=Object.create(null),h=[],f=[],k=ge,l;for(l in a){l|=0;var m=a[l],n=l;if(!e&&l in c){var q=c[n];1===q.length&&(n=q.charCodeAt(0))}if((n in f||31>=n||127===n||173===n||128<=n&&159>=n||65520<=n&&65535>=n||d&&e)&&k<=Zc){do n=k++,$c&&61440===n&&(n=61472,k=n+1);while(n in f&&k<=Zc)}g[n]=m;h[l]=n;f[n]=!0}return{toFontChar:h,charCodeToGlyphId:g,nextAvailableFontCharCode:k}}function h(a){var b=[],c;for(c in a)b.push({fontCharCode:c|
+0,glyphId:a[c]});b.sort(function(a,b){return a.fontCharCode-b.fontCharCode});a=[];c=b.length;for(var d=0;d<c;){var e=b[d].fontCharCode,g=[b[d].glyphId];++d;for(var h=e;d<c&&h+1==b[d].fontCharCode&&(g.push(b[d].glyphId),++h,++d,65535!==h););a.push([e,h,g])}return a}function k(c){c=h(c);var d=65535<c[c.length-1][1]?2:1,e="\x00\x00"+b(d)+"\x00\u0003\x00\u0001"+ia(4+8*d),g,f,k,l;for(g=c.length-1;0<=g&&!(65535>=c[g][0]);--g);f=g+1;65535>c[g][0]&&65535===c[g][1]&&(c[g][1]=65534);var m=65535>c[g][1]?1:0,
+n=f+m,q=2*n,z=2*a(n),A=Math.log(n)/Math.log(2),C=2*n-z,w="",T="",G="",B="",t="",y=0,E,F,S,M;for(g=0;g<f;g++){E=c[g];F=E[0];S=E[1];w+=b(F);T+=b(S);M=E[2];E=!0;k=1;for(l=M.length;k<l;++k)if(M[k]!==M[k-1]+1){E=!1;break}if(E)G+=b(M[0]-F&65535),B+=b(0);else for(k=2*(n-g)+2*y,y+=S-F+1,G+=b(0),B+=b(k),k=0,l=M.length;k<l;++k)t+=b(M[k])}0<m&&(T+="\u00ff\u00ff",w+="\u00ff\u00ff",G+="\x00\u0001",B+="\x00\x00");m="\x00\x00"+b(q)+b(z)+b(A)+b(C)+T+"\x00\x00"+w+G+B+t;g=n="";if(1<d){e+="\x00\u0003\x00\n"+ia(8*d+
+8+m.length);n="";g=0;for(f=c.length;g<f;g++){E=c[g];F=E[0];M=E[2];d=M[0];k=1;for(l=M.length;k<l;++k)M[k]!==M[k-1]+1&&(S=E[0]+k-1,n+=ia(F)+ia(S)+ia(d),F=S+1,d=M[k]);n+=ia(F)+ia(E[1])+ia(d)}g="\x00\f\x00\x00"+ia(n.length+16)+"\x00\x00\x00\x00"+ia(n.length/12)}return pa(e+"\x00\u0004"+b(m.length+4)+m+g+n)}function l(a){var b=new ha(a.data),c=b.getUint16();b.getBytes(60);var d=b.getUint16();if(4>c&&d&768)return!1;c=b.getUint16();d=b.getUint16();if(c>d)return!1;b.getBytes(6);if(0===b.getUint16())return!1;
+a.data[8]=a.data[9]=0;return!0}function m(a,c,d){d=d||{unitsPerEm:0,yMax:0,yMin:0,ascent:0,descent:0};var e=0,g=0,h=0,f=0,k=null,l=0;if(c)for(var m in c){m|=0;if(k>m||!k)k=m;l<m&&(l=m);a:{c=0;for(var n=Nb.length;c<n;c++){var q=Nb[c];if(m>=q.begin&&m<q.end)break a}c=-1}32>c?e|=1<<c:64>c?g|=1<<c-32:96>c?h|=1<<c-64:123>c?f|=1<<c-96:y("Unicode ranges Bits > 123 are reserved for internal usage")}else k=0,l=255;c=a.bbox||[0,0,0,0];m=d.unitsPerEm||1/(a.fontMatrix||Ja)[0];n=a.ascentScaled?1:m/jc;m=d.ascent||
+Math.round(n*(a.ascent||c[3]));n=d.descent||Math.round(n*(a.descent||c[1]));0<n&&0<a.descent&&0>c[1]&&(n=-n);c=d.yMax||m;d=-d.yMin||-n;return"\x00\u0003\u0002$\u0001\u00f4\x00\u0005\x00\x00\u0002\u008a\u0002\u00bb\x00\x00\x00\u008c\u0002\u008a\u0002\u00bb\x00\x00\u0001\u00df\x001\u0001\u0002\x00\x00\x00\x00\u0006"+String.fromCharCode(a.fixedPitch?9:0)+"\x00\x00\x00\x00\x00\x00"+ia(e)+ia(g)+ia(h)+ia(f)+"*21*"+b(a.italicAngle?1:0)+b(k||a.firstChar)+b(l||a.lastChar)+b(m)+b(n)+"\x00d"+b(c)+b(d)+"\x00\x00\x00\x00\x00\x00\x00\x00"+
+b(a.xHeight)+b(a.capHeight)+b(0)+b(k||a.firstChar)+"\x00\u0003"}function n(a){var c=Math.floor(a.italicAngle*Math.pow(2,16));return"\x00\u0003\x00\x00"+ia(c)+"\x00\x00\x00\x00"+ia(a.fixedPitch)+"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}function q(a,c){c||(c=[[],[]]);var d=[c[0][0]||"Original licence",c[0][1]||a,c[0][2]||"Unknown",c[0][3]||"uniqueID",c[0][4]||a,c[0][5]||"Version 0.11",c[0][6]||"",c[0][7]||"Unknown",c[0][8]||"Unknown",c[0][9]||"Unknown"],e=[],g,h,f,k,l;g=0;
+for(h=d.length;g<h;g++){l=c[1][g]||d[g];var m=[];f=0;for(k=l.length;f<k;f++)m.push(b(l.charCodeAt(f)));e.push(m.join(""))}var m=[d,e],n=["\x00\u0001","\x00\u0003"],q=["\x00\x00","\x00\u0001"],C=["\x00\x00","\u0004\t"];g=d.length*n.length;var w="\x00\x00"+b(g)+b(12*g+6),T=0;g=0;for(h=n.length;g<h;g++){var G=m[g];f=0;for(k=G.length;f<k;f++){l=G[f];var B=n[g]+q[g]+C[g]+b(f)+b(l.length)+b(T),w=w+B,T=T+l.length}}return w+=d.join("")+e.join("")}f.getFontID=function(){var a=1;return function(){return String(a++)}}();
+f.prototype={name:null,font:null,mimetype:null,encoding:null,get renderer(){var a=je.create(this);return W(this,"renderer",a)},exportData:function(){var a={},c;for(c in this)this.hasOwnProperty(c)&&(a[c]=this[c]);return a},checkAndRepair:function(a,c,b){function h(a){var c=na(a.getBytes(4)),b=a.getInt32(),d=a.getInt32()>>>0,e=a.getInt32()>>>0,g=a.pos;a.pos=a.start?a.start:0;a.skip(d);var f=a.getBytes(e);a.pos=g;"head"==c&&(f[8]=f[9]=f[10]=f[11]=0,f[17]|=32);return{tag:c,checksum:b,length:e,offset:d,
+data:f}}function f(a,c,b){var d;a=(c.start?c.start:0)+a.offset;c.pos=a;c.getUint16();var e=c.getUint16(),g,h=!1;for(d=0;d<e;d++){var k=c.getUint16(),l=c.getUint16(),m=c.getInt32()>>>0,p=!1;1==k&&0===l?p=!0:b||3!==k||1!==l?b&&3===k&&0===l&&(h=p=!0):h=p=!0;p&&(g={platformId:k,encodingId:l,offset:m});if(h)break}if(!g)return O("Could not find a preferred cmap table."),[];c.pos=a+g.offset;a=c.getUint16();c.getUint16();c.getUint16();e=!1;b=[];if(0===a){for(d=0;256>d;d++)(a=c.getByte())&&b.push({charCode:d,
+glyphId:a});e=!0}else if(4===a){h=c.getUint16()>>1;c.getBytes(6);l=[];for(k=0;k<h;k++)l.push({end:c.getUint16()});c.getUint16();for(k=0;k<h;k++)l[k].start=c.getUint16();for(k=0;k<h;k++)l[k].delta=c.getUint16();for(k=a=0;k<h;k++)d=l[k],(m=c.getUint16())?(p=(m>>1)-(h-k),d.offsetIndex=p,a=Math.max(a,p+d.end-d.start+1)):d.offsetIndex=-1;var r=[];for(d=0;d<a;d++)r.push(c.getUint16());for(k=0;k<h;k++){d=l[k];a=d.start;c=d.end;var u=d.delta,p=d.offsetIndex;for(d=a;d<=c;d++)65535!=d&&(m=0>p?d:r[p+d-a],m=
+m+u&65535,0!==m&&b.push({charCode:d,glyphId:m}))}}else if(6==a)for(a=c.getUint16(),h=c.getUint16(),d=0;d<h;d++)m=c.getUint16(),b.push({charCode:a+d,glyphId:m});else y("cmap table has unsupported format: "+a);b.sort(function(a,c){return a.charCode-c.charCode});for(d=1;d<b.length;d++)b[d-1].charCode===b[d].charCode&&(b.splice(d,1),d--);return{platformId:g.platformId,encodingId:g.encodingId,mappings:b,hasShortCmap:e}}function v(a,c,b,d,e,g){if(12>=b-c)return 0;a=a.subarray(c,b);var h=a[0]<<8|a[1];if(h&
+32768)return d.set(a,e),a.length;b=10;var f=0;for(c=0;c<h;c++)f=(a[b]<<8|a[b+1])+1,b+=2;var h=b,k=a[b]<<8|a[b+1],l=b+=2+k,m=0;for(c=0;c<f;c++){var p=a[b++];p&192&&(a[b-1]=p&63);var r=(p&2?1:p&16?0:2)+(p&4?1:p&32?0:2),m=m+r;p&8&&(p=a[b++],c+=p,m+=p*r)}if(0===m)return 0;c=b+m;if(c>a.length)return 0;if(!g&&0<k)return d.set(a.subarray(0,h),e),d.set([0,0],e+h),d.set(a.subarray(l,c),e+h+2),c-=k,3<a.length-c&&(c=c+3&-4),c;if(3<a.length-c)return c=c+3&-4,d.set(a.subarray(0,c),e),c;d.set(a,e);return a.length}
+function P(a,c,b,d,e,g){var h,f;d?(d=4,h=function(a,c){return a[c]<<24|a[c+1]<<16|a[c+2]<<8|a[c+3]},f=function(a,c,b){a[c]=b>>>24&255;a[c+1]=b>>16&255;a[c+2]=b>>8&255;a[c+3]=b&255}):(d=2,h=function(a,c){return a[c]<<9|a[c+1]<<1},f=function(a,c,b){a[c]=b>>9&255;a[c+1]=b>>1&255});var k=a.data,l=d*(1+b);k.length!==l&&(k=new Uint8Array(l),k.set(a.data.subarray(0,l)),a.data=k);var m=c.data,p=m.length,l=new Uint8Array(p),r=h(k,0),u=0;f(k,0,u);var s,x;s=0;for(x=d;s<b;s++,x+=d){var n=h(k,x);n>p&&(p+3&-4)===
+n&&(n=p);n>p||(r=v(m,r,n,l,u,e),u+=r);f(k,x,u);r=n}if(0===u){a=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);s=0;for(x=d;s<b;s++,x+=d)f(k,x,a.length);c.data=a}else g?(b=h(k,d),l.length>b+u?c.data=l.subarray(0,b+u):(c.data=new Uint8Array(b+u),c.data.set(l.subarray(0,u))),c.data.set(l.subarray(0,b),u),f(a.data,k.length-d,u+b)):c.data=l.subarray(0,u)}function K(a,b,d){var e=(c.start?c.start:0)+a.offset;c.pos=e;var e=e+a.length,g=c.getInt32();c.getBytes(28);var h;a=!0;switch(g){case 65536:h=bd;break;
+case 131072:g=c.getUint16();if(g!=d){a=!1;break}var f=[];for(d=0;d<g;++d){var k=c.getUint16();if(32768<=k){a=!1;break}f.push(k)}if(!a)break;for(k=[];c.pos<e;){h=c.getByte();var l="";for(d=0;d<h;++d)l+=String.fromCharCode(c.getByte());k.push(l)}h=[];for(d=0;d<g;++d)e=f[d],258>e?h.push(bd[e]):h.push(k[e-258]);break;case 196608:break;default:O("Unknown/unsupported post table version "+g),a=!1}b.glyphNames=h;return a}function I(a){var b=(c.start?c.start:0)+a.offset;c.pos=b;var d=[[],[]],e=a.length;a=
+b+e;if(0!==c.getUint16()||6>e)return d;var g=c.getUint16(),e=c.getUint16(),h=[],f;for(f=0;f<g&&c.pos+12<=a;f++){var k={platform:c.getUint16(),encoding:c.getUint16(),language:c.getUint16(),name:c.getUint16(),length:c.getUint16(),offset:c.getUint16()};(1==k.platform&&0===k.encoding&&0===k.language||3==k.platform&&1==k.encoding&&1033==k.language)&&h.push(k)}f=0;for(g=h.length;f<g;f++){var k=h[f],l=b+e+k.offset;if(!(l+k.length>a))if(c.pos=l,l=k.name,k.encoding){for(var m="",r=0,k=k.length;r<k;r+=2)m+=
+String.fromCharCode(c.getUint16());d[1][l]=m}else d[0][l]=na(c.getBytes(k.length))}return d}function $(a,c){for(var b=a.data,d=0,e,g,h,f=0,k=0,l=[],m=[],p=[],r=c.tooComplexToFollowFunctions,u=!1,s=0,x=0,v=b.length;d<v;){var n=b[d++];if(64===n)if(g=b[d++],u||x)d+=g;else for(e=0;e<g;e++)l.push(b[d++]);else if(65===n)if(g=b[d++],u||x)d+=2*g;else for(e=0;e<g;e++)h=b[d++],l.push(h<<8|b[d++]);else if(176===(n&248))if(g=n-176+1,u||x)d+=g;else for(e=0;e<g;e++)l.push(b[d++]);else if(184===(n&248))if(g=n-184+
+1,u||x)d+=2*g;else for(e=0;e<g;e++)h=b[d++],l.push(h<<8|b[d++]);else if(43!==n||r)if(44!==n||r)if(45===n)if(u)u=!1,f=d;else{e=m.pop();if(!e){O("TT: ENDF bad stack");c.hintsValid=!1;return}g=p.pop();b=e.data;d=e.i;c.functionsStackDeltas[g]=l.length-e.stackTop}else if(137===n){if(u||x)O("TT: nested IDEFs not allowed"),r=!0;u=!0;k=d}else 88===n?++s:27===n?x=s:89===n?(x===s&&(x=0),--s):28!==n||u||x||(g=l[l.length-1],0<g&&(d+=g-1));else{if(u||x)O("TT: nested FDEFs not allowed"),r=!0;u=!0;k=d;g=l.pop();
+c.functionsDefined[g]={data:b,i:d}}else if(!u&&!x)if(g=l[l.length-1],c.functionsUsed[g]=!0,g in c.functionsStackDeltas)l.length+=c.functionsStackDeltas[g];else if(g in c.functionsDefined&&0>p.indexOf(g)){m.push({data:b,i:d,stackTop:l.length-1});p.push(g);e=c.functionsDefined[g];if(!e){O("TT: CALL non-existent function");c.hintsValid=!1;return}b=e.data;d=e.i}if(!u&&!x){e=142>=n?z[n]:192<=n&&223>=n?-1:224<=n?-2:0;113<=n&&117>=n&&(g=l.pop(),g===g&&(e=2*-g));for(;0>e&&0<l.length;)l.pop(),e++;for(;0<e;)l.push(NaN),
+e--}}c.tooComplexToFollowFunctions=r;l=[b];d>b.length&&l.push(new Uint8Array(d-b.length));k>f&&(O("TT: complementing a missing function tail"),l.push(new Uint8Array([34,45])));if(1<l.length){d=b=0;for(f=l.length;d<f;d++)b+=l[d].length;b=b+3&-4;k=new Uint8Array(b);d=m=0;for(f=l.length;d<f;d++)k.set(l[d],m),m+=l[d].length;a.data=k;a.length=b}}var z=[0,0,0,0,0,0,0,0,-2,-2,-2,-2,0,0,-2,-5,-1,-1,-1,-1,-1,-1,-1,-1,0,0,-1,0,-1,-1,-1,-1,1,-1,-999,0,1,0,-1,-2,0,-1,-2,-1,-1,0,-1,-1,0,0,-999,-999,-1,-1,-1,-1,
+-2,-999,-2,-2,-999,0,-2,-2,0,0,-2,0,-2,0,0,0,-2,-1,-1,1,1,0,0,-1,-1,-1,-1,-1,-1,-1,0,0,-1,0,-1,-1,0,-999,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,-2,-999,-999,-999,-999,-999,-1,-1,-2,-2,0,0,0,0,-1,-1,-999,-2,-2,0,0,-1,-2,-2,0,0,0,-1,-1,-1,-2];c=new ha(new Uint8Array(c.getBytes()));var A="OS/2;cmap;head;hhea;hmtx;maxp;name;post;loca;glyf;fpgm;prep;cvt ;CFF ".split(";"),C=na(c.getBytes(4)),w=c.getUint16();c.getUint16();c.getUint16();c.getUint16();for(var T=w,G,B,w={"OS/2":null,cmap:null,head:null,
+hhea:null,hmtx:null,maxp:null,name:null,post:null},t,D=0;D<T;D++)t=h(c),0>A.indexOf(t.tag)||0!==t.length&&(w[t.tag]=t);if(t=!w["CFF "])w.glyf&&w.loca||y('Required "glyf" or "loca" tables are not found');else{if(!(w.head&&w.hhea&&w.maxp&&w.post))return B=new ha(w["CFF "].data),G=new cd(B,b),this.convert(a,G,b);delete w.glyf;delete w.loca;delete w.fpgm;delete w.prep;delete w["cvt "]}w.maxp||y('Required "maxp" table is not found');c.pos=(c.start||0)+w.maxp.offset;var T=c.getInt32(),E=c.getUint16(),F=
+0;65536<=T&&22<=w.maxp.length&&(c.pos+=8,2<c.getUint16()&&(w.maxp.data[14]=0,w.maxp.data[15]=2),c.pos+=4,F=c.getUint16());var S=!1;"CIDFontType2"==b.type&&b.toUnicode&&"\x00"<b.toUnicode[0]&&(S=!0,E++,w.maxp.data[4]=E>>8,w.maxp.data[5]=E&255);D=function(a,c,b){var d={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};a&&$(a,d);c&&$(c,d);if(a&&(a=F,!d.tooComplexToFollowFunctions))if(d.functionsDefined.length>a)O("TT: more functions defined than expected"),
+d.hintsValid=!1;else{c=0;for(var e=d.functionsUsed.length;c<e;c++){if(c>a){O("TT: invalid function id: "+c);d.hintsValid=!1;break}if(d.functionsUsed[c]&&!d.functionsDefined[c]){O("TT: undefined function: "+c);d.hintsValid=!1;break}}}b&&b.length&1&&(a=new Uint8Array(b.length+1),a.set(b.data),b.data=a);return d.hintsValid}(w.fpgm,w.prep,w["cvt "],F);D||(delete w.fpgm,delete w.prep,delete w["cvt "]);A=Object.keys(w);A.sort();var T=A.length,M={file:"",virtualOffset:16*T};e(C,M,T);(function(a,c,b,d){if(c){a.pos=
+(a.start?a.start:0)+c.offset;a.pos+=c.length-2;var e=a.getUint16();e>d&&(R("The numOfMetrics ("+e+") should not be greater than the numGlyphs ("+d+")"),e=d,c.data[34]=(e&65280)>>8,c.data[35]=e&255);c=d-e-(b.length-4*e>>1);if(0<c){a.pos=(a.start?a.start:0)+b.offset;var g="";d=0;for(e=b.length;d<e;d++)g+=String.fromCharCode(a.getByte());for(d=0;d<c;d++)g+="\x00\x00";b.data=pa(g)}}else b&&(b.data=null)})(c,w.hhea,w.hmtx,E);w.head||y('Required "head" table is not found');(function(a,c,b){a=a.data;var d=
+(a[0]<<24)+(a[1]<<16)+(a[2]<<8)+a[3];1!==d>>16&&(R("Attempting to fix invalid version in head table: "+d),a[0]=0,a[1]=1,a[2]=0,a[3]=0);d=(a[50]<<8)+a[51];if(0>d||1<d)R("Attempting to fix invalid indexToLocFormat in head table: "+d),c+=1,b===c<<1?(a[50]=0,a[51]=0):b===c<<2?(a[50]=0,a[51]=1):O("Could not fix indexToLocFormat: "+d)})(w.head,E,t?w.loca.length:0);t&&P(w.loca,w.glyf,E,(w.head.data[50]<<8)+w.head.data[51],D,S);w.hhea||y('Required "hhea" table is not found');0===w.hhea.data[10]&&0===w.hhea.data[11]&&
+(w.hhea.data[10]=255,w.hhea.data[11]=255);w.post&&!K(w.post,b,E)&&(w.post=null);var C=[],J;if("CIDFontType2"==b.type){var ra=b.cidToGidMap||[],Oa=b.cMap.map;for(J in Oa){J|=0;var L=Oa[J];U(1===L.length,"Max size of CID is 65,535");L=L.charCodeAt(0);D=-1;0===ra.length?D=J:L in ra&&(D=ra[L]);0<=D&&D<E&&(C[J]=D)}S&&(C[0]=E-1)}else if(J=f(w.cmap,c,this.isSymbolicFont),E=J.platformId,S=J.encodingId,Oa=J.mappings,L=Oa.length,(b.differences.length||b.baseEncodingName)&&(3===E&&1===S||1===E&&0===S)){var aa=
+[];if("MacRomanEncoding"===b.baseEncodingName||"WinAnsiEncoding"===b.baseEncodingName)aa=ja[b.baseEncodingName];for(J=0;256>J;J++){var Ac;if(Ac=this.differences&&J in this.differences?this.differences[J]:J in aa&&""!==aa[J]?aa[J]:ja.StandardEncoding[J]){3===E&&1===S?ra=Ya[Ac]:1===E&&0===S&&(ra=ja.MacRomanEncoding.indexOf(Ac));for(var H=!1,D=0;D<L;++D)if(Oa[D].charCode===ra){C[J]=Oa[D].glyphId;H=!0;break}!H&&b.glyphNames&&(D=b.glyphNames.indexOf(Ac),0<D&&(C[J]=D))}}}else for(D=0;D<L;++D)J=Oa[D].charCode&
+255,C[J]=Oa[D].glyphId;0===C.length&&(C[0]=0);J=g(C,b);this.toFontChar=J.toFontChar;w.cmap={tag:"cmap",data:k(J.charCodeToGlyphId)};w["OS/2"]&&l(w["OS/2"])||(w["OS/2"]={tag:"OS/2",data:pa(m(b,J.charCodeToGlyphId,{unitsPerEm:(w.head.data[18]<<8)+w.head.data[19],yMax:(w.head.data[42]<<8)+w.head.data[43],yMin:(w.head.data[38]<<8)+w.head.data[39]-65536,ascent:(w.hhea.data[4]<<8)+w.hhea.data[5],descent:(w.hhea.data[6]<<8)+w.hhea.data[7]-65536}))});w.post||(w.post={tag:"post",data:pa(n(b))});if(!t)try{B=
+new ha(w["CFF "].data);G=(new kc(B,b)).parse();var N=new Pb(G);w["CFF "].data=N.compile()}catch(Q){O("Failed to compile font "+b.loadedName)}w.name?(b=I(w.name),w.name.data=pa(q(a,b))):w.name={tag:"name",data:pa(q(this.name))};for(D=0;D<T;D++){t=w[A[D]];b=[];a=t.data;G=0;for(B=a.length;G<B;G++)b.push(a[G]);d(M,t.tag,b)}for(D=0;D<T;D++)for(t=w[A[D]],a=t.data,M.file+=na(new Uint8Array(a));M.file.length&3;)M.file+=String.fromCharCode(0);return pa(M.file)},convert:function(a,h,f){function l(a,c,b){for(var d in a)if(c===
+a[d])return d|0;return b?(P.charCodeToGlyphId[P.nextAvailableFontCharCode]=c,P.nextAvailableFontCharCode++):null}var u={file:"",virtualOffset:144};e("OTTO",u,9);f.fixedPitch=!1;var v=h.getGlyphMapping(f),P=g(v,f);this.toFontChar=P.toFontChar;var K=h.numGlyphs,I=h.seacs;if(kb&&I&&I.length){var $=f.fontMatrix||Ja,z=h.getCharset(),A=Object.create(null),C;for(C in I){C|=0;var w=I[C],T=ja.StandardEncoding[w[3]],t=z.indexOf(ja.StandardEncoding[w[2]]),T=z.indexOf(T);if(!(0>t||0>T)){var w={x:w[0]*$[0]+w[1]*
+$[2]+$[4],y:w[0]*$[1]+w[1]*$[3]+$[5]},B=l(v,C);if(null!==B){var y=P.charCodeToGlyphId,t=l(y,t,!0),T=l(y,T,!0);A[B]={baseFontCharCode:t,accentFontCharCode:T,accentOffset:w}}}}f.seacMap=A}v=1/(f.fontMatrix||Ja)[0];a={"CFF ":h.data,"OS/2":pa(m(f,P.charCodeToGlyphId)),cmap:k(P.charCodeToGlyphId),head:pa("\x00\u0001\x00\x00\x00\x00\u0010\x00\x00\x00\x00\x00_\u000f<\u00f5\x00\x00"+c(v)+"\x00\x00\x00\x00\u009e\x0B~'\x00\x00\x00\x00\u009e\x0B~'\x00\x00"+c(f.descent)+"\u000f\u00ff"+c(f.ascent)+b(f.italicAngle?
+2:0)+"\x00\u0011\x00\x00\x00\x00\x00\x00"),hhea:pa("\x00\u0001\x00\x00"+c(f.ascent)+c(f.descent)+"\x00\x00\u00ff\u00ff\x00\x00\x00\x00\x00\x00"+c(f.capHeight)+c(Math.tan(f.italicAngle)*f.xHeight)+"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+b(K)),hmtx:function(){for(var a=h.charstrings,c="\x00\x00\x00\x00",d=1;d<K;d++)var e=a?a[d-1]:{},c=c+(b("width"in e?e.width:0)+b(0));return pa(c)}(),maxp:pa("\x00\x00P\x00"+b(K)),name:pa(q(a)),post:pa(n(f))};for(var D in a)d(u,D,a[D]);for(D in a)u.file+=
+na(new Uint8Array(a[D]));return pa(u.file)},buildToUnicode:function(a){var c={isIdentity:!1,toUnicode:null};if(a.toUnicode&&0!==a.toUnicode.length)return c.toUnicode=a.toUnicode,c;var b,d;if(!a.composite){b=[];var e=a.defaultEncoding.slice();a=a.differences;for(d in a)e[d]=a[d];for(d in e)if(a=e[d],""!==a&&a in Ya)b[d]=String.fromCharCode(Ya[a]);else{var g;3===a.length&&"G"===a[0]&&(g=parseInt(a.substr(1),16))&&(b[d]=String.fromCharCode(g));3<=a.length&&"C"===a[0]&&(g=+a.substr(1))&&(b[d]=String.fromCharCode(g))}c.toUnicode=
+b;return c}if(a.composite&&(a.cMap.builtInCMap&&!(a.cMap instanceof ic)||"Adobe"===a.cidSystemInfo.registry&&("GB1"===a.cidSystemInfo.ordering||"CNS1"===a.cidSystemInfo.ordering||"Japan1"===a.cidSystemInfo.ordering||"Korea1"===a.cidSystemInfo.ordering))){b=new Da(a.cidSystemInfo.registry+"-"+a.cidSystemInfo.ordering+"-UCS2");e=zb.create(b,{url:PDFJS.cMapUrl,packed:PDFJS.cMapPacked},null);a=a.cMap;b=[];for(d in a.map)g=a.map[d],U(1===g.length,"Max size of CID is 65,535"),(g=e.map[g.charCodeAt(0)])&&
+(b[d]=String.fromCharCode((g.charCodeAt(0)<<8)+g.charCodeAt(1)));c.toUnicode=b;return c}b=[];d=a.lastChar;for(a=a.firstChar;a<=d;a++)b[a]=String.fromCharCode(a);c.isIdentity=!0;c.toUnicode=b;return c},get spaceWidth(){if("_shadowWidth"in this)return this._shadowWidth;for(var a=["space","minus","one","i"],c,b=0,d=a.length;b<d;b++){c=a[b];if(c in this.widths){c=this.widths[c];break}c=Ya[c];var e=0;this.composite&&c in this.cMap.map&&(e=this.cMap.lookup(c).charCodeAt(0));!e&&"toUnicode"in this&&(e=this.toUnicode.indexOf(c));
+0>=e&&(e=c);if(c=this.widths[e])break}return this._shadowWidth=c=c||this.defaultWidth},charToGlyph:function(a){var c,b,d,e=a;this.cMap&&a in this.cMap.map&&(e=this.cMap.map[a].charCodeAt(0));b=this.widths[e];b=Ha(b)?b:this.defaultWidth;var e=this.vmetrics&&this.vmetrics[e],g=this.toUnicode[a]||a;"number"===typeof g&&(g=String.fromCharCode(g));c=this.toFontChar[a]||a;this.missingFile&&(c=rd(c));this.isType3Font&&(d=c);var h=null;this.seacMap&&this.seacMap[a]&&(h=this.seacMap[a],c=h.baseFontCharCode,
+h={fontChar:String.fromCharCode(h.accentFontCharCode),offset:h.accentOffset});c=String.fromCharCode(c);var f=this.glyphCache[a];f&&f.matchesForCache(c,g,h,b,e,d)||(f=new ie(c,g,h,b,e,d),this.glyphCache[a]=f);return f},charsToGlyphs:function(a){var c=this.charsCache,b,d,e;if(c&&(b=c[a]))return b;c||(c=this.charsCache=Object.create(null));b=[];var g=0,h;if(this.cMap)for(;g<a.length;)d=this.cMap.readCharCode(a,g),e=d[0],h=d[1],g+=h,d=this.charToGlyph(e),b.push(d),1===h&&32===a.charCodeAt(g-1)&&b.push(null);
+else for(g=0,h=a.length;g<h;++g)e=a.charCodeAt(g),d=this.charToGlyph(e),b.push(d),32==e&&b.push(null);return c[a]=b}};return f}(),Uc=function(){function f(a){this.error=a;this.loadedName="g_font_error";this.loading=!1}f.prototype={charsToGlyphs:function(){return[]},exportData:function(){return{error:this.error}}};return f}(),ke=function(){function f(){this.lsb=this.width=0;this.flexing=!1;this.output=[];this.stack=[]}var a=[4],b=[5],c=[6],e=[7],d=[8],g=[12,35],h=[14],k=[21],l=[22],m=[30],n=[31];f.prototype=
+{convert:function(f,s){for(var p=f.length,x=!1,r,u=0;u<p;u++)if(r=f[u],32>r){12===r&&(r=(r<<8)+f[++u]);switch(r){case 1:this.stack=[];break;case 3:this.stack=[];break;case 4:if(this.flexing){if(1>this.stack.length){x=!0;break}r=this.stack.pop();this.stack.push(0,r);break}x=this.executeCommand(1,a);break;case 5:x=this.executeCommand(2,b);break;case 6:x=this.executeCommand(1,c);break;case 7:x=this.executeCommand(1,e);break;case 8:x=this.executeCommand(6,d);break;case 9:this.stack=[];break;case 10:if(1>
+this.stack.length){x=!0;break}r=this.stack.pop();x=this.convert(s[r],s);break;case 11:return x;case 13:if(2>this.stack.length){x=!0;break}x=this.stack.pop();this.lsb=r=this.stack.pop();this.width=x;this.stack.push(r);x=this.executeCommand(1,l);break;case 14:this.output.push(h[0]);break;case 21:if(this.flexing)break;x=this.executeCommand(2,k);break;case 22:if(this.flexing){this.stack.push(0);break}x=this.executeCommand(1,l);break;case 30:x=this.executeCommand(4,m);break;case 31:x=this.executeCommand(4,
+n);break;case 3072:this.stack=[];break;case 3073:this.stack=[];break;case 3074:this.stack=[];break;case 3078:kb?(this.seac=this.stack.splice(-4,4),x=this.executeCommand(0,h)):x=this.executeCommand(4,h);break;case 3079:if(4>this.stack.length){x=!0;break}this.stack.pop();var x=this.stack.pop(),v=this.stack.pop();this.lsb=r=this.stack.pop();this.width=x;this.stack.push(r,v);x=this.executeCommand(2,k);break;case 3084:if(2>this.stack.length){x=!0;break}r=this.stack.pop();v=this.stack.pop();this.stack.push(v/
+r);break;case 3088:if(2>this.stack.length){x=!0;break}r=this.stack.pop();v=this.stack.pop();0===r&&3===v?(r=this.stack.splice(this.stack.length-17,17),this.stack.push(r[2]+r[0],r[3]+r[1],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14]),x=this.executeCommand(13,g,!0),this.flexing=!1,this.stack.push(r[15],r[16])):1===r&&0===v&&(this.flexing=!0);break;case 3089:break;case 3105:this.stack=[];break;default:O('Unknown type 1 charstring command of "'+r+'"')}if(x)break}else r=246>=r?r-139:250>=
+r?256*(r-247)+f[++u]+108:254>=r?-(256*(r-251))-f[++u]-108:(f[++u]&255)<<24|(f[++u]&255)<<16|(f[++u]&255)<<8|(f[++u]&255)<<0,this.stack.push(r);return x},executeCommand:function(a,c,b){var d=this.stack.length;if(a>d)return!0;for(var e=d-a,g=e;g<d;g++){var h=this.stack[g];h===(h|0)?this.output.push(28,h>>8&255,h&255):(h=65536*h|0,this.output.push(255,h>>24&255,h>>16&255,h>>8&255,h&255))}this.output.push.apply(this.output,c);b?this.stack.splice(e,a):this.stack.length=0;return!1}};return f}(),ed=function(){function f(a){return 48<=
+a&&57>=a||65<=a&&70>=a||97<=a&&102>=a}function a(a,c,b){c|=0;for(var e=a.length,f=new Uint8Array(e),m=0;m<e;m++){var n=a[m];f[m]=n^c>>8;c=52845*(n+c)+22719&65535}return Array.prototype.slice.call(f,b)}function b(a){return 47===a||91===a||93===a||123===a||125===a||40===a||41===a}function c(c,b){if(b){var h=c.getBytes(),k=!(f(h[0])&&f(h[1])&&f(h[2])&&f(h[3])),l=ha;if(k)h=a(h,e,4);else{var k=e|0,m=h.length,n=new Uint8Array(m>>>1),q,s;for(s=q=0;q<m;q++){var p=h[q];if(f(p)){q++;for(var x;q<m&&!f(x=h[q]);)q++;
+q<m&&(p=parseInt(String.fromCharCode(p,x),16),n[s++]=p^k>>8,k=52845*(p+k)+22719&65535)}}h=Array.prototype.slice.call(n,4,s)}c=new l(h)}this.stream=c;this.nextChar()}var e=55665;c.prototype={readNumberArray:function(){this.getToken();for(var a=[];;){var c=this.getToken();if(null===c||"]"===c||"}"===c)break;a.push(parseFloat(c||0))}return a},readNumber:function(){var a=this.getToken();return parseFloat(a||0)},readInt:function(){var a=this.getToken();return parseInt(a||0,10)|0},readBoolean:function(){return"true"===
+this.getToken()?1:0},nextChar:function(){return this.currentChar=this.stream.getByte()},getToken:function(){for(var a=!1,c=this.currentChar;;){if(-1===c)return null;if(a){if(10===c||13===c)a=!1}else if(37===c)a=!0;else if(!wa.isSpace(c))break;c=this.nextChar()}if(b(c))return this.nextChar(),String.fromCharCode(c);a="";do a+=String.fromCharCode(c),c=this.nextChar();while(0<=c&&!wa.isSpace(c)&&!b(c));return a},extractFontProgram:function(){for(var c=this.stream,b=[],e=[],f={subrs:[],charstrings:[],
+properties:{privateData:{lenIV:4}}},l,m,n;null!==(l=this.getToken());)if("/"===l)switch(l=this.getToken(),l){case "CharStrings":this.getToken();this.getToken();this.getToken();for(this.getToken();;){l=this.getToken();if(null===l||"end"===l)break;if("/"===l){var q=this.getToken();l=this.readInt();this.getToken();m=c.makeSubStream(c.pos,l);n=f.properties.privateData.lenIV;m=a(m.getBytes(),4330,n);c.skip(l);this.nextChar();l=this.getToken();"noaccess"===l&&this.getToken();e.push({glyph:q,encoded:m})}}break;
+case "Subrs":this.readInt();for(this.getToken();"dup"===this.getToken();)q=this.readInt(),l=this.readInt(),this.getToken(),m=c.makeSubStream(c.pos,l),n=f.properties.privateData.lenIV,m=a(m.getBytes(),4330,n),c.skip(l),this.nextChar(),l=this.getToken(),"noaccess"===l&&this.getToken(),b[q]=m;break;case "BlueValues":case "OtherBlues":case "FamilyBlues":case "FamilyOtherBlues":this.readNumberArray();break;case "StemSnapH":case "StemSnapV":f.properties.privateData[l]=this.readNumberArray();break;case "StdHW":case "StdVW":f.properties.privateData[l]=
+this.readNumberArray()[0];break;case "BlueShift":case "lenIV":case "BlueFuzz":case "BlueScale":case "LanguageGroup":case "ExpansionFactor":f.properties.privateData[l]=this.readNumber();break;case "ForceBold":f.properties.privateData[l]=this.readBoolean()}for(c=0;c<e.length;c++)q=e[c].glyph,m=e[c].encoded,l=new ke,m=l.convert(m,b),n=l.output,m&&(n=[14]),f.charstrings.push({glyphName:q,charstring:n,width:l.width,lsb:l.lsb,seac:l.seac});return f},extractFontHeader:function(a){for(var c;null!==(c=this.getToken());)if("/"===
+c)switch(c=this.getToken(),c){case "FontMatrix":var b=this.readNumberArray();a.fontMatrix=b;break;case "Encoding":var e=this.getToken();if(/^\d+$/.test(e)){b=[];e=parseInt(e,10)|0;this.getToken();for(var f=0;f<e;f++){for(c=this.getToken();"dup"!==c&&"def"!==c;)if(c=this.getToken(),null===c)return;if("def"===c)break;c=this.readInt();this.getToken();var m=this.getToken();b[c]=m;this.getToken()}}else b=ja[e];a.builtInEncoding=b;break;case "FontBBox":b=this.readNumberArray(),a.ascent=b[3],a.descent=b[1],
+a.ascentScaled=!0}}};return c}(),lc=".notdef space exclam quotedbl numbersign dollar percent ampersand quoteright parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore quoteleft a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde exclamdown cent sterling fraction yen florin section currency quotesingle quotedblleft guillemotleft guilsinglleft guilsinglright fi fl endash dagger daggerdbl periodcentered paragraph bullet quotesinglbase quotedblbase quotedblright guillemotright ellipsis perthousand questiondown grave acute circumflex tilde macron breve dotaccent dieresis ring cedilla hungarumlaut ogonek caron emdash AE ordfeminine Lslash Oslash OE ordmasculine ae dotlessi lslash oslash oe germandbls onesuperior logicalnot mu trademark Eth onehalf plusminus Thorn onequarter divide brokenbar degree thorn threequarters twosuperior registered minus eth multiply threesuperior copyright Aacute Acircumflex Adieresis Agrave Aring Atilde Ccedilla Eacute Ecircumflex Edieresis Egrave Iacute Icircumflex Idieresis Igrave Ntilde Oacute Ocircumflex Odieresis Ograve Otilde Scaron Uacute Ucircumflex Udieresis Ugrave Yacute Ydieresis Zcaron aacute acircumflex adieresis agrave aring atilde ccedilla eacute ecircumflex edieresis egrave iacute icircumflex idieresis igrave ntilde oacute ocircumflex odieresis ograve otilde scaron uacute ucircumflex udieresis ugrave yacute ydieresis zcaron exclamsmall Hungarumlautsmall dollaroldstyle dollarsuperior ampersandsmall Acutesmall parenleftsuperior parenrightsuperior twodotenleader onedotenleader zerooldstyle oneoldstyle twooldstyle threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle eightoldstyle nineoldstyle commasuperior threequartersemdash periodsuperior questionsmall asuperior bsuperior centsuperior dsuperior esuperior isuperior lsuperior msuperior nsuperior osuperior rsuperior ssuperior tsuperior ff ffi ffl parenleftinferior parenrightinferior Circumflexsmall hyphensuperior Gravesmall Asmall Bsmall Csmall Dsmall Esmall Fsmall Gsmall Hsmall Ismall Jsmall Ksmall Lsmall Msmall Nsmall Osmall Psmall Qsmall Rsmall Ssmall Tsmall Usmall Vsmall Wsmall Xsmall Ysmall Zsmall colonmonetary onefitted rupiah Tildesmall exclamdownsmall centoldstyle Lslashsmall Scaronsmall Zcaronsmall Dieresissmall Brevesmall Caronsmall Dotaccentsmall Macronsmall figuredash hypheninferior Ogoneksmall Ringsmall Cedillasmall questiondownsmall oneeighth threeeighths fiveeighths seveneighths onethird twothirds zerosuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior centinferior dollarinferior periodinferior commainferior Agravesmall Aacutesmall Acircumflexsmall Atildesmall Adieresissmall Aringsmall AEsmall Ccedillasmall Egravesmall Eacutesmall Ecircumflexsmall Edieresissmall Igravesmall Iacutesmall Icircumflexsmall Idieresissmall Ethsmall Ntildesmall Ogravesmall Oacutesmall Ocircumflexsmall Otildesmall Odieresissmall OEsmall Oslashsmall Ugravesmall Uacutesmall Ucircumflexsmall Udieresissmall Yacutesmall Thornsmall Ydieresissmall 001.000 001.001 001.002 001.003 Black Bold Book Light Medium Regular Roman Semibold".split(" "),
+dd=function(f,a,b){var c=b.length1,e=b.length2,d=a.peekBytes(6),g=128==d[0]&&1==d[1];g&&(a.skip(6),c=d[5]<<24|d[4]<<16|d[3]<<8|d[2]);c=new ha(a.getBytes(c));(new ed(c)).extractFontHeader(b);g&&(d=a.getBytes(6),e=d[5]<<24|d[4]<<16|d[3]<<8|d[2]);a=new ha(a.getBytes(e));a=(new ed(a,!0)).extractFontProgram();for(var h in a.properties)b[h]=a.properties[h];h=a.charstrings;e=this.getType2Charstrings(h);g=this.getType2Subrs(a.subrs);this.charstrings=h;this.data=this.wrap(f,e,this.charstrings,g,b);this.seacs=
+this.getSeacs(a.charstrings)};dd.prototype={get numGlyphs(){return this.charstrings.length+1},getCharset:function(){for(var f=[".notdef"],a=this.charstrings,b=0;b<a.length;b++)f.push(a[b].glyphName);return f},getGlyphMapping:function(f){var a=this.charstrings,b=[".notdef"],c;for(c=0;c<a.length;c++)b.push(a[c].glyphName);if(a=f.builtInEncoding){var e={},d;for(d in a)c=b.indexOf(a[d]),0<=c&&(e[d]=c)}return qc(f,e,b)},getSeacs:function(f){var a,b,c=[];a=0;for(b=f.length;a<b;a++){var e=f[a];e.seac&&(c[a+
+1]=e.seac)}return c},getType2Charstrings:function(f){for(var a=[],b=0,c=f.length;b<c;b++)a.push(f[b].charstring);return a},getType2Subrs:function(f){var a=0,b=f.length,a=1133>b?107:33769>b?1131:32768,c=[],e;for(e=0;e<a;e++)c.push([11]);for(e=0;e<b;e++)c.push(f[e]);return c},wrap:function(f,a,b,c,e){var d=new fd;d.header=new gd(1,0,4,4);d.names=[f];var g=new mc;g.setByName("version",391);g.setByName("Notice",392);g.setByName("FullName",393);g.setByName("FamilyName",394);g.setByName("Weight",395);g.setByName("Encoding",
+null);g.setByName("FontMatrix",e.fontMatrix);g.setByName("FontBBox",e.bbox);g.setByName("charset",null);g.setByName("CharStrings",null);g.setByName("Private",null);d.topDict=g;g=new Ab;g.add("Version 0.11");g.add("See original notice");g.add(f);g.add(f);g.add("Medium");d.strings=g;d.globalSubrIndex=new Za;var g=a.length,h=[0];for(f=0;f<g;f++){var k=lc.indexOf(b[f].glyphName);-1==k&&(k=0);h.push(k>>8&255,k&255)}d.charset=new gb(!1,0,[],h);b=new Za;b.add([139,14]);for(f=0;f<g;f++)b.add(a[f]);d.charStrings=
+b;b=new nc;b.setByName("Subrs",null);g="BlueValues OtherBlues FamilyBlues FamilyOtherBlues StemSnapH StemSnapV BlueShift BlueFuzz BlueScale LanguageGroup ExpansionFactor ForceBold StdHW StdVW".split(" ");f=0;for(a=g.length;f<a;f++)if(h=g[f],e.privateData.hasOwnProperty(h)){k=e.privateData[h];if(ca(k))for(var l=k.length-1;0<l;l--)k[l]-=k[l-1];b.setByName(h,k)}d.topDict.privateDict=b;e=new Za;f=0;for(a=c.length;f<a;f++)e.add(c[f]);b.subrsIndex=e;return(new Pb(d)).compile()}};var cd=function(){function f(a,
+b){this.properties=b;this.cff=(new kc(a,b)).parse();var c=new Pb(this.cff);this.seacs=this.cff.seacs;try{this.data=c.compile()}catch(e){O("Failed to compile font "+b.loadedName),this.data=a}}f.prototype={get numGlyphs(){return this.cff.charStrings.count},getCharset:function(){return this.cff.charset.charset},getGlyphMapping:function(){var a=this.cff,b=this.properties,c=a.charset.charset,e,d;if(b.composite){e=Object.create(null);if(a.isCIDFont)for(d=0;d<c.length;d++)a=String.fromCharCode(c[d]),a=b.cMap.map.indexOf(a),
+e[a]=d;else for(d=0;d<a.charStrings.count;d++)e[d]=d;return e}return e=qc(b,a.encoding?a.encoding.encoding:null,c)}};return f}(),kc=function(){function f(a,b){this.bytes=a.getBytes();this.properties=b}var a=[null,{id:"hstem",min:2,resetStack:!0,stem:!0},null,{id:"vstem",min:2,resetStack:!0,stem:!0},{id:"vmoveto",min:1,resetStack:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,
+undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,null,null,null,null,{id:"hstemhm",min:2,resetStack:!0,stem:!0},null,null,{id:"rmoveto",min:2,resetStack:!0},{id:"hmoveto",min:1,resetStack:!0},{id:"vstemhm",min:2,resetStack:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],
+b=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn:function(a,b){a[b-2]+=a[b-1]}},{id:"sub",min:2,stackDelta:-1,stackFn:function(a,b){a[b-2]-=a[b-1]}},{id:"div",min:2,stackDelta:-1,stackFn:function(a,b){a[b-2]/=a[b-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn:function(a,b){a[b-1]=-a[b-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},
+null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn:function(a,b){a[b-2]*=a[b-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];
+f.prototype={parse:function(){var a=this.properties,b=new fd;this.cff=b;var d=this.parseHeader(),g=this.parseIndex(d.endPos),h=this.parseIndex(g.endPos),f=this.parseIndex(h.endPos),l=this.parseIndex(f.endPos),h=this.parseDict(h.obj.get(0)),h=this.createDict(mc,h,b.strings);b.header=d.obj;b.names=this.parseNameIndex(g.obj);b.strings=this.parseStringIndex(f.obj);b.topDict=h;b.globalSubrIndex=l.obj;this.parsePrivateDict(b.topDict);b.isCIDFont=h.hasName("ROS");d=h.getByName("CharStrings");d=this.parseCharStrings(d);
+b.charStrings=d.charStrings;b.seacs=d.seacs;if(d=h.getByName("FontMatrix"))a.fontMatrix=d;if(d=h.getByName("FontBBox"))a.ascent=d[3],a.descent=d[1],a.ascentScaled=!0;if(b.isCIDFont){a=this.parseIndex(h.getByName("FDArray")).obj;d=0;for(g=a.count;d<g;++d)f=a.get(d),f=this.createDict(mc,this.parseDict(f),b.strings),this.parsePrivateDict(f),b.fdArray.push(f);a=null;d=this.parseCharsets(h.getByName("charset"),b.charStrings.count,b.strings,!0);b.fdSelect=this.parseFDSelect(h.getByName("FDSelect"),b.charStrings.count)}else d=
+this.parseCharsets(h.getByName("charset"),b.charStrings.count,b.strings,!1),a=this.parseEncoding(h.getByName("Encoding"),a,b.strings,d.charset);b.charset=d;b.encoding=a;return b},parseHeader:function(){for(var a=this.bytes,b=a.length,d=0;d<b&&1!==a[d];)++d;d>=b?y("Invalid CFF header"):0!==d&&(R("cff data is shifted"),this.bytes=a=a.subarray(d));b=a[2];return{obj:new gd(a[0],a[1],b,a[3]),endPos:b}},parseDict:function(a){function b(){var e=a[d++];if(30===e){for(var e="",g=["0","1","2","3","4","5","6",
+"7","8","9",".","E","E-",null,"-"],h=a.length;d<h;){var f=a[d++],k=f>>4,f=f&15;if(15==k)break;e+=g[k];if(15==f)break;e+=g[f]}return parseFloat(e)}if(28===e)return e=a[d++],e=(e<<24|a[d++]<<16)>>16;if(29===e)return e=a[d++],e=e<<8|a[d++],e=e<<8|a[d++],e=e<<8|a[d++];if(32<=e&&246>=e)return e-139;if(247<=e&&250>=e)return 256*(e-247)+a[d++]+108;if(251<=e&&254>=e)return-(256*(e-251))-a[d++]-108;y("255 is not a valid DICT command");return-1}for(var d=0,g=[],h=[],d=0,f=a.length;d<f;){var l=a[d];21>=l?(12===
+l&&(l=l<<8|a[++d]),h.push([l,g]),g=[],++d):g.push(b())}return h},parseIndex:function(a){var b=new Za,d=this.bytes,g=d[a++]<<8|d[a++],h=[],f=a,l,m;if(0!==g){var f=d[a++],n=a+(g+1)*f-1;l=0;for(m=g+1;l<m;++l){for(var q=0,s=0;s<f;++s)q<<=8,q+=d[a++];h.push(n+q)}f=h[g]}l=0;for(m=h.length-1;l<m;++l)b.add(d.subarray(h[l],h[l+1]));return{obj:b,endPos:f}},parseNameIndex:function(a){for(var b=[],d=0,g=a.count;d<g;++d){for(var h=a.get(d),f=Math.min(h.length,127),l=[],m=0;m<f;++m){var n=h[m];l[m]=0===m&&0===
+n?n:33>n||126<n||91===n||93===n||40===n||41===n||123===n||125===n||60===n||62===n||47===n||37===n||35===n?95:n}b.push(na(l))}return b},parseStringIndex:function(a){for(var b=new Ab,d=0,g=a.count;d<g;++d){var h=a.get(d);b.add(na(h))}return b},createDict:function(a,b,d){a=new a(d);d=0;for(var g=b.length;d<g;++d){var h=b[d];a.setByKey(h[0],h[1])}return a},parseCharStrings:function(c){c=this.parseIndex(c).obj;for(var e=[],d=c.count,g=0;g<d;g++){for(var h=0,f=[],l=!0,m=0,n=!0,q=c.get(g),s=q.length,p=0;p<
+s;){var x=q[p++],r=null;12==x?(x=q[p++],0===x?(q[p-2]=139,q[p-1]=22,h=0):r=b[x]):28===x?(f[h]=(q[p]<<24|q[p+1]<<16)>>16,p+=2,h++):14==x?4<=h&&(h-=4,kb&&(e[g]=f.slice(h,h+4),n=!1)):32<=x&&246>=x?(f[h]=x-139,h++):247<=x&&254>=x?(f[h]=251>x?(x-247<<8)+q[p]+108:-(x-251<<8)-q[p]-108,p++,h++):255==x?(f[h]=(q[p]<<24|q[p+1]<<16|q[p+2]<<8|q[p+3])/65536,p+=4,h++):19==x||20==x?(m+=h>>1,p+=m+7>>3,h=0):r=a[x];if(r){r.stem&&(m+=h>>1);if("min"in r&&!l&&h<r.min){O("Not enough parameters for "+r.id+"; actual: "+h+
+", expected: "+r.min);n=!1;break}"stackDelta"in r?("stackFn"in r&&r.stackFn(f,h),h+=r.stackDelta):r.resetStack?(h=0,l=!1):r.undefStack&&(h=0,l=!0)}}n||c.set(g,new Uint8Array([14]))}return{charStrings:c,seacs:e}},emptyPrivateDictionary:function(a){var b=this.createDict(nc,[],a.strings);a.setByKey(18,[0,0]);a.privateDict=b},parsePrivateDict:function(a){if(a.hasName("Private")){var b=a.getByName("Private");if(ca(b)&&2===b.length){var d=b[0],b=b[1];if(0===d||b>=this.bytes.length)this.emptyPrivateDictionary(a);
+else if(d=this.bytes.subarray(b,b+d),d=this.parseDict(d),d=this.createDict(nc,d,a.strings),a.privateDict=d,d.getByName("Subrs")){var g=d.getByName("Subrs"),b=b+g;0===g||b>=this.bytes.length?this.emptyPrivateDictionary(a):(a=this.parseIndex(b),d.subrsIndex=a.obj)}}else a.removeByName("Private")}else this.emptyPrivateDictionary(a)},parseCharsets:function(a,b,d,g){if(0===a)return new gb(!0,Bb.ISO_ADOBE,Hd);if(1==a)return new gb(!0,Bb.EXPERT,Id);if(2==a)return new gb(!0,Bb.EXPERT_SUBSET,Jd);var h=this.bytes,
+f=a,l=h[a++],m=[".notdef"],n,q,s;b-=1;switch(l){case 0:for(s=0;s<b;s++)n=h[a++]<<8|h[a++],m.push(g?n:d.get(n));break;case 1:for(;m.length<=b;)for(n=h[a++]<<8|h[a++],q=h[a++],s=0;s<=q;s++)m.push(g?n++:d.get(n++));break;case 2:for(;m.length<=b;)for(n=h[a++]<<8|h[a++],q=h[a++]<<8|h[a++],s=0;s<=q;s++)m.push(g?n++:d.get(n++));break;default:y("Unknown charset format")}a=h.subarray(f,a);return new gb(!1,l,m,a)},parseEncoding:function(a,b,d,g){b={};var h=this.bytes,f=!1,l,m,n=null;if(0===a||1==a)for(f=!0,
+d=(l=a)?ja.ExpertEncoding:ja.StandardEncoding,m=0,a=g.length;m<a;m++)h=d.indexOf(g[m]),-1!=h&&(b[h]=m);else{n=a;l=h[a++];switch(l&127){case 0:var q=h[a++];for(m=1;m<=q;m++)b[h[a++]]=m;break;case 1:var q=h[a++],s=1;for(m=0;m<q;m++)for(var p=h[a++],x=h[a++],r=p;r<=p+x;r++)b[r]=s++;break;default:y("Unknow encoding format: "+l+" in CFF")}q=a;if(l&128)for(h[n]&=127,s=h[a++],m=0;m<s;m++)p=h[a++],x=(h[a++]<<8)+(h[a++]&255),b[p]=g.indexOf(d.get(x));n=h.subarray(n,q)}return new le(f,l&127,b,n)},parseFDSelect:function(a,
+b){var d=a,g=this.bytes,h=g[a++],f=[];switch(h){case 0:for(h=0;h<b;++h){var l=g[a++];f.push(l)}break;case 3:l=g[a++]<<8|g[a++];for(h=0;h<l;++h)for(var m=g[a++]<<8|g[a++],n=g[a++],q=g[a]<<8|g[a+1];m<q;++m)f.push(n);a+=2;break;default:y("Unknown fdselect format "+h)}return new me(f,g.subarray(d,a))}};return f}(),fd=function(){return function(){this.header=null;this.names=[];this.topDict=null;this.strings=new Ab;this.charStrings=this.charset=this.encoding=this.globalSubrIndex=null;this.fdArray=[];this.fdSelect=
+null;this.isCIDFont=!1}}(),gd=function(){return function(f,a,b,c){this.major=f;this.minor=a;this.hdrSize=b;this.offSize=c}}(),Ab=function(){function f(){this.strings=[]}f.prototype={get:function(a){return 0<=a&&390>=a?lc[a]:a-391<=this.strings.length?this.strings[a-391]:lc[0]},add:function(a){this.strings.push(a)},get count(){return this.strings.length}};return f}(),Za=function(){function f(){this.objects=[];this.length=0}f.prototype={add:function(a){this.length+=a.length;this.objects.push(a)},set:function(a,
+b){this.length+=b.length-this.objects[a].length;this.objects[a]=b},get:function(a){return this.objects[a]},get count(){return this.objects.length}};return f}(),lb=function(){function f(a,b){this.keyToNameMap=a.keyToNameMap;this.nameToKeyMap=a.nameToKeyMap;this.defaults=a.defaults;this.types=a.types;this.opcodes=a.opcodes;this.order=a.order;this.strings=b;this.values={}}f.prototype={setByKey:function(a,b){if(!(a in this.keyToNameMap))return!1;if(0===b.length)return!0;var c=this.types[a];if("num"===
+c||"sid"===c||"offset"===c)b=b[0];this.values[a]=b;return!0},setByName:function(a,b){a in this.nameToKeyMap||y('Invalid dictionary name "'+a+'"');this.values[this.nameToKeyMap[a]]=b},hasName:function(a){return this.nameToKeyMap[a]in this.values},getByName:function(a){a in this.nameToKeyMap||y('Invalid dictionary name "'+a+'"');a=this.nameToKeyMap[a];return a in this.values?this.values[a]:this.defaults[a]},removeByName:function(a){delete this.values[this.nameToKeyMap[a]]}};f.createTables=function(a){for(var b=
+{keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]},c=0,e=a.length;c<e;++c){var d=a[c],g=ca(d[0])?(d[0][0]<<8)+d[0][1]:d[0];b.keyToNameMap[g]=d[1];b.nameToKeyMap[d[1]]=g;b.types[g]=d[2];b.defaults[g]=d[3];b.opcodes[g]=ca(d[0])?d[0]:[d[0]];b.order.push(g)}return b};return f}(),mc=function(){function f(c){null===b&&(b=lb.createTables(a));lb.call(this,b,c);this.privateDict=null}var a=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",
+null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix","num num num num num num".split(" "),[0.001,0,0,0.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],
+[[12,8],"StrokeWidth","num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray",
+"offset",null],[[12,38],"FontName","sid",null]],b=null;f.prototype=Object.create(lb.prototype);return f}(),nc=function(){function f(c){null===b&&(b=lb.createTables(a));lb.call(this,b,c);this.subrsIndex=null}var a=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",0.039625],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH",
+"delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",0.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]],b=null;f.prototype=Object.create(lb.prototype);return f}(),Bb={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2},gb=function(){return function(f,a,b,c){this.predefined=f;this.format=a;this.charset=b;this.raw=c}}(),le=function(){return function(f,
+a,b,c){this.predefined=f;this.format=a;this.encoding=b;this.raw=c}}(),me=function(){return function(f,a){this.fdSelect=f;this.raw=a}}(),hd=function(){function f(){this.offsets={}}f.prototype={isTracking:function(a){return a in this.offsets},track:function(a,b){a in this.offsets&&y("Already tracking location of "+a);this.offsets[a]=b},offset:function(a){for(var b in this.offsets)this.offsets[b]+=a},setEntryLocation:function(a,b,c){a in this.offsets||y("Not tracking location of "+a);c=c.data;a=this.offsets[a];
+for(var e=0,d=b.length;e<d;++e){var g=5*e+a,h=g+1,f=g+2,l=g+3,m=g+4;29===c[g]&&0===c[h]&&0===c[f]&&0===c[l]&&0===c[m]||y("writing to an offset that is not empty");var n=b[e];c[g]=29;c[h]=n>>24&255;c[f]=n>>16&255;c[l]=n>>8&255;c[m]=n&255}}};return f}(),Pb=function(){function f(a){this.cff=a}f.prototype={compile:function(){var a=this.cff,b={data:[],length:0,add:function(a){this.data=this.data.concat(a);this.length=this.data.length}},c=this.compileHeader(a.header);b.add(c);c=this.compileNameIndex(a.names);
+b.add(c);if(a.isCIDFont&&a.topDict.hasName("FontMatrix")){c=a.topDict.getByName("FontMatrix");a.topDict.removeByName("FontMatrix");for(var e=0,d=a.fdArray.length;e<d;e++){var g=a.fdArray[e],h=c.slice(0);g.hasName("FontMatrix")&&(h=Q.transform(h,g.getByName("FontMatrix")));g.setByName("FontMatrix",h)}}e=this.compileTopDicts([a.topDict],b.length,a.isCIDFont);b.add(e.output);c=e.trackers[0];e=this.compileStringIndex(a.strings.strings);b.add(e);e=this.compileIndex(a.globalSubrIndex);b.add(e);a.encoding&&
+a.topDict.hasName("Encoding")&&(a.encoding.predefined?c.setEntryLocation("Encoding",[a.encoding.format],b):(e=this.compileEncoding(a.encoding),c.setEntryLocation("Encoding",[b.length],b),b.add(e)));a.charset&&a.topDict.hasName("charset")&&(a.charset.predefined?c.setEntryLocation("charset",[a.charset.format],b):(e=this.compileCharset(a.charset),c.setEntryLocation("charset",[b.length],b),b.add(e)));e=this.compileCharStrings(a.charStrings);c.setEntryLocation("CharStrings",[b.length],b);b.add(e);a.isCIDFont&&
+(c.setEntryLocation("FDSelect",[b.length],b),e=this.compileFDSelect(a.fdSelect.raw),b.add(e),e=this.compileTopDicts(a.fdArray,b.length,!0),c.setEntryLocation("FDArray",[b.length],b),b.add(e.output),this.compilePrivateDicts(a.fdArray,e.trackers,b));this.compilePrivateDicts([a.topDict],[c],b);b.add([0]);return b.data},encodeNumber:function(a){return parseFloat(a)!=parseInt(a,10)||isNaN(a)?this.encodeFloat(a):this.encodeInteger(a)},encodeFloat:function(a){var b=a.toString(),c=/\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(b);
+c&&(b=parseFloat("1e"+((c[2]?+c[2]:0)+c[1].length)),b=(Math.round(a*b)/b).toString());a="";var e,c=0;for(e=b.length;c<e;++c){var d=b[c];a="e"===d?a+("-"===b[++c]?"c":"b"):"."===d?a+"a":"-"===d?a+"e":a+d}a+=a.length&1?"f":"ff";b=[30];c=0;for(e=a.length;c<e;c+=2)b.push(parseInt(a.substr(c,2),16));return b},encodeInteger:function(a){-107<=a&&107>=a?a=[a+139]:108<=a&&1131>=a?(a=[a-108],a=[(a>>8)+247,a&255]):-1131<=a&&-108>=a?(a=-a-108,a=[(a>>8)+251,a&255]):a=-32768<=a&&32767>=a?[28,a>>8&255,a&255]:[29,
+a>>24&255,a>>16&255,a>>8&255,a&255];return a},compileHeader:function(a){return[a.major,a.minor,a.hdrSize,a.offSize]},compileNameIndex:function(a){for(var b=new Za,c=0,e=a.length;c<e;++c)b.add(pa(a[c]));return this.compileIndex(b)},compileTopDicts:function(a,b,c){for(var e=[],d=new Za,g=0,h=a.length;g<h;++g){var f=a[g];c&&(f.removeByName("CIDFontVersion"),f.removeByName("CIDFontRevision"),f.removeByName("CIDFontType"),f.removeByName("CIDCount"),f.removeByName("UIDBase"));var l=new hd,f=this.compileDict(f,
+l);e.push(l);d.add(f);l.offset(b)}d=this.compileIndex(d,e);return{trackers:e,output:d}},compilePrivateDicts:function(a,b,c){for(var e=0,d=a.length;e<d;++e){var g=a[e];U(g.privateDict&&g.hasName("Private"),"There must be an private dictionary.");var h=g.privateDict,g=new hd,f=this.compileDict(h,g),l=c.length;g.offset(l);f.length||(l=0);b[e].setEntryLocation("Private",[f.length,l],c);c.add(f);h.subrsIndex&&h.hasName("Subrs")&&(h=this.compileIndex(h.subrsIndex),g.setEntryLocation("Subrs",[f.length],
+c),c.add(h))}},compileDict:function(a,b){for(var c=[],e=a.order,d=0;d<e.length;++d){var g=e[d];if(g in a.values){var h=a.values[g],f=a.types[g];ca(f)||(f=[f]);ca(h)||(h=[h]);if(0!==h.length){for(var l=0,m=f.length;l<m;++l){var n=f[l],q=h[l];switch(n){case "num":case "sid":c=c.concat(this.encodeNumber(q));break;case "offset":n=a.keyToNameMap[g];b.isTracking(n)||b.track(n,c.length);c=c.concat([29,0,0,0,0]);break;case "array":case "delta":c=c.concat(this.encodeNumber(q));n=1;for(q=h.length;n<q;++n)c=
+c.concat(this.encodeNumber(h[n]));break;default:y("Unknown data type of "+n)}}c=c.concat(a.opcodes[g])}}}return c},compileStringIndex:function(a){for(var b=new Za,c=0,e=a.length;c<e;++c)b.add(pa(a[c]));return this.compileIndex(b)},compileGlobalSubrIndex:function(){this.out.writeByteArray(this.compileIndex(this.cff.globalSubrIndex))},compileCharStrings:function(a){return this.compileIndex(a)},compileCharset:function(a){return this.compileTypedArray(a.raw)},compileEncoding:function(a){return this.compileTypedArray(a.raw)},
+compileFDSelect:function(a){return this.compileTypedArray(a)},compileTypedArray:function(a){for(var b=[],c=0,e=a.length;c<e;++c)b[c]=a[c];return b},compileIndex:function(a,b){b=b||[];var c=a.objects,e=c.length;if(0===e)return[0,0,0];var d=[e>>8&255,e&255],g=1,h;for(h=0;h<e;++h)g+=c[h].length;g=256>g?1:65536>g?2:16777216>g?3:4;d.push(g);var f=1;for(h=0;h<e+1;h++)1===g?d.push(f&255):2===g?d.push(f>>8&255,f&255):3===g?d.push(f>>16&255,f>>8&255,f&255):d.push(f>>>24&255,f>>16&255,f>>8&255,f&255),c[h]&&
+(f+=c[h].length);for(h=0;h<e;h++)for(b[h]&&b[h].offset(d.length),g=0,f=c[h].length;g<f;g++)d.push(c[h][g]);return d}};return f}();/Windows/.test(navigator.userAgent)&&(kb=!0);/Windows.*Chrome/.test(navigator.userAgent)&&($c=!0);var je=function(){function f(a,b){return a[b]<<24|a[b+1]<<16|a[b+2]<<8|a[b+3]}function a(a,b){return a[b]<<8|a[b+1]}function b(a,b,c){var d;c?(c=4,d=function(a,b){return a[b]<<24|a[b+1]<<16|a[b+2]<<8|a[b+3]}):(c=2,d=function(a,b){return a[b]<<9|a[b+1]<<1});for(var e=[],g=d(b,
+0),h=c;h<b.length;h+=c){var f=d(b,h);e.push(a.subarray(g,f));g=f}return e}function c(a,b){for(var c=b.charCodeAt(0),d=0,e=a.length-1;d<e;){var g=d+e+1>>1;c<a[g].start?e=g-1:d=g}return a[d].start<=c&&c<=a[d].end?a[d].idDelta+(a[d].ids?a[d].ids[c-a[d].start]:c)&65535:0}function e(a,b,c){function d(a,c,e,g){b.push("c.quadraticCurveTo("+a+","+c+","+e+","+g+");")}var g=0,h=(a[g]<<24|a[g+1]<<16)>>16,f,k=0,u=0,g=g+10;if(0>h){do{f=a[g]<<8|a[g+1];h=a[g+2]<<8|a[g+3];g+=4;f&1?(k=(a[g]<<24|a[g+1]<<16)>>16,u=
+(a[g+2]<<24|a[g+3]<<16)>>16,g+=4):(k=a[g++],u=a[g++]);f&2||(u=k=0);var v=1,P=1,K=0,I=0;f&8?(v=P=(a[g]<<24|a[g+1]<<16)/1073741824,g+=2):f&64?(v=(a[g]<<24|a[g+1]<<16)/1073741824,P=(a[g+2]<<24|a[g+3]<<16)/1073741824,g+=4):f&128&&(v=(a[g]<<24|a[g+1]<<16)/1073741824,K=(a[g+2]<<24|a[g+3]<<16)/1073741824,I=(a[g+4]<<24|a[g+5]<<16)/1073741824,P=(a[g+6]<<24|a[g+7]<<16)/1073741824,g+=8);if(h=c.glyphs[h])b.push("c.save();"),b.push("c.transform("+v+","+K+","+I+","+P+","+k+","+u+");"),e(h,b,c),b.push("c.restore();")}while(f&
+32)}else{c=[];for(f=0;f<h;f++)c.push(a[g]<<8|a[g+1]),g+=2;g+=2+(a[g]<<8|a[g+1]);P=c[c.length-1]+1;for(v=[];v.length<P;)for(f=a[g++],K=1,f&8&&(K+=a[g++]);0<K--;)v.push({flags:f});for(f=0;f<P;f++){switch(v[f].flags&18){case 0:k+=(a[g]<<24|a[g+1]<<16)>>16;g+=2;break;case 2:k-=a[g++];break;case 18:k+=a[g++]}v[f].x=k}for(f=0;f<P;f++){switch(v[f].flags&36){case 0:u+=(a[g]<<24|a[g+1]<<16)>>16;g+=2;break;case 4:u-=a[g++];break;case 36:u+=a[g++]}v[f].y=u}for(g=f=0;g<h;g++){a=c[g];k=v.slice(f,a+1);k[0].flags&
+1?k.push(k[0]):k[k.length-1].flags&1?k.unshift(k[k.length-1]):(f={flags:1,x:(k[0].x+k[k.length-1].x)/2,y:(k[0].y+k[k.length-1].y)/2},k.unshift(f),k.push(f));b.push("c.moveTo("+k[0].x+","+k[0].y+");");f=1;for(u=k.length;f<u;f++)k[f].flags&1?b.push("c.lineTo("+k[f].x+","+k[f].y+");"):k[f+1].flags&1?(d(k[f].x,k[f].y,k[f+1].x,k[f+1].y),f++):d(k[f].x,k[f].y,(k[f].x+k[f+1].x)/2,(k[f].y+k[f+1].y)/2);f=a+1}}}function d(a,b,e){function g(a,c){b.push("c.moveTo("+a+","+c+");")}function h(a,c){b.push("c.lineTo("+
+a+","+c+");")}function f(a,c,d,e,g,h){b.push("c.bezierCurveTo("+a+","+c+","+d+","+e+","+g+","+h+");")}function k(a){for(var l=0;l<a.length;){var t=!1,z=a[l++],A,C,w;switch(z){case 1:P+=r.length>>1;t=!0;break;case 3:P+=r.length>>1;t=!0;break;case 4:v+=r.pop();g(u,v);t=!0;break;case 5:for(;0<r.length;)u+=r.shift(),v+=r.shift(),h(u,v);break;case 6:for(;0<r.length;){u+=r.shift();h(u,v);if(0===r.length)break;v+=r.shift();h(u,v)}break;case 7:for(;0<r.length;){v+=r.shift();h(u,v);if(0===r.length)break;u+=
+r.shift();h(u,v)}break;case 8:for(;0<r.length;)z=u+r.shift(),C=v+r.shift(),A=z+r.shift(),w=C+r.shift(),u=A+r.shift(),v=w+r.shift(),f(z,C,A,w,u,v);break;case 10:z=r.pop()+e.subrsBias;(z=e.subrs[z])&&k(z);break;case 11:return;case 12:z=a[l++];switch(z){case 34:z=u+r.shift();A=z+r.shift();w=v+r.shift();u=A+r.shift();f(z,v,A,w,u,w);z=u+r.shift();A=z+r.shift();u=A+r.shift();f(z,w,A,v,u,v);break;case 35:z=u+r.shift();C=v+r.shift();A=z+r.shift();w=C+r.shift();u=A+r.shift();v=w+r.shift();f(z,C,A,w,u,v);z=
+u+r.shift();C=v+r.shift();A=z+r.shift();w=C+r.shift();u=A+r.shift();v=w+r.shift();f(z,C,A,w,u,v);r.pop();break;case 36:z=u+r.shift();w=v+r.shift();A=z+r.shift();C=w+r.shift();u=A+r.shift();f(z,w,A,C,u,C);z=u+r.shift();A=z+r.shift();w=C+r.shift();u=A+r.shift();f(z,C,A,w,u,v);break;case 37:var T=u,G=v,z=u+r.shift();C=v+r.shift();A=z+r.shift();w=C+r.shift();u=A+r.shift();v=w+r.shift();f(z,C,A,w,u,v);z=u+r.shift();C=v+r.shift();A=z+r.shift();w=C+r.shift();u=A;v=w;Math.abs(u-T)>Math.abs(v-G)?u+=r.shift():
+v+=r.shift();f(z,C,A,w,u,v);break;default:y("unknown operator: 12 "+z)}break;case 14:4<=r.length&&(l=r.pop(),a=r.pop(),v=r.pop(),u=r.pop(),b.push("c.save();"),b.push("c.translate("+u+","+v+");"),l=c(e.cmap,String.fromCharCode(e.glyphNameMap[ja.StandardEncoding[l]])),d(e.glyphs[l],b,e),b.push("c.restore();"),l=c(e.cmap,String.fromCharCode(e.glyphNameMap[ja.StandardEncoding[a]])),d(e.glyphs[l],b,e));return;case 18:P+=r.length>>1;t=!0;break;case 19:P+=r.length>>1;l+=P+7>>3;t=!0;break;case 20:P+=r.length>>
+1;l+=P+7>>3;t=!0;break;case 21:v+=r.pop();u+=r.pop();g(u,v);t=!0;break;case 22:u+=r.pop();g(u,v);t=!0;break;case 23:P+=r.length>>1;t=!0;break;case 24:for(;2<r.length;)z=u+r.shift(),C=v+r.shift(),A=z+r.shift(),w=C+r.shift(),u=A+r.shift(),v=w+r.shift(),f(z,C,A,w,u,v);u+=r.shift();v+=r.shift();h(u,v);break;case 25:for(;6<r.length;)u+=r.shift(),v+=r.shift(),h(u,v);z=u+r.shift();C=v+r.shift();A=z+r.shift();w=C+r.shift();u=A+r.shift();v=w+r.shift();f(z,C,A,w,u,v);break;case 26:for(r.length%2&&(u+=r.shift());0<
+r.length;)z=u,C=v+r.shift(),A=z+r.shift(),w=C+r.shift(),u=A,v=w+r.shift(),f(z,C,A,w,u,v);break;case 27:for(r.length%2&&(v+=r.shift());0<r.length;)z=u+r.shift(),C=v,A=z+r.shift(),w=C+r.shift(),u=A+r.shift(),v=w,f(z,C,A,w,u,v);break;case 28:r.push((a[l]<<24|a[l+1]<<16)>>16);l+=2;break;case 29:z=r.pop()+e.gsubrsBias;(z=e.gsubrs[z])&&k(z);break;case 30:for(;0<r.length;){z=u;C=v+r.shift();A=z+r.shift();w=C+r.shift();u=A+r.shift();v=w+(1===r.length?r.shift():0);f(z,C,A,w,u,v);if(0===r.length)break;z=u+
+r.shift();C=v;A=z+r.shift();w=C+r.shift();v=w+r.shift();u=A+(1===r.length?r.shift():0);f(z,C,A,w,u,v)}break;case 31:for(;0<r.length;){z=u+r.shift();C=v;A=z+r.shift();w=C+r.shift();v=w+r.shift();u=A+(1===r.length?r.shift():0);f(z,C,A,w,u,v);if(0===r.length)break;z=u;C=v+r.shift();A=z+r.shift();w=C+r.shift();u=A+r.shift();v=w+(1===r.length?r.shift():0);f(z,C,A,w,u,v)}break;default:32>z&&y("unknown operator: "+z),247>z?r.push(z-139):251>z?r.push(256*(z-247)+a[l++]+108):255>z?r.push(256*-(z-251)-a[l++]-
+108):(r.push((a[l]<<24|a[l+1]<<16|a[l+2]<<8|a[l+3])/65536),l+=4)}t&&(r.length=0)}}var r=[],u=0,v=0,P=0;k(a)}function g(a){this.compiledGlyphs={};this.fontMatrix=a}function h(a,b,c){c=c||[4.88E-4,0,0,4.88E-4,0,0];g.call(this,c);this.glyphs=a;this.cmap=b;this.compiledGlyphs=[]}function k(a,b,c,d){c=c||[0.001,0,0,0.001,0,0];g.call(this,c);this.glyphs=a.glyphs;this.gsubrs=a.gsubrs||[];this.subrs=a.subrs||[];this.cmap=b;this.glyphNameMap=d||Ya;this.compiledGlyphs=[];this.gsubrsBias=1240>this.gsubrs.length?
+107:33900>this.gsubrs.length?1131:32768;this.subrsBias=1240>this.subrs.length?107:33900>this.subrs.length?1131:32768}g.prototype={getPathJs:function(a){a=c(this.cmap,a);var b=this.compiledGlyphs[a];b||(this.compiledGlyphs[a]=b=this.compileGlyph(this.glyphs[a]));return b},compileGlyph:function(a){if(!a||0===a.length||14===a[0])return"";var b=[];b.push("c.save();");b.push("c.transform("+this.fontMatrix.join(",")+");");b.push("c.scale(size, -size);");this.compileGlyphImpl(a,b);b.push("c.restore();");
+return b.join("\n")},compileGlyphImpl:function(){y("Children classes should implement this.")},hasBuiltPath:function(a){return c(this.cmap,a)in this.compiledGlyphs}};Q.inherit(h,g,{compileGlyphImpl:function(a,b){e(a,b,this)}});Q.inherit(k,g,{compileGlyphImpl:function(a,b){d(a,b,this)}});return{create:function(c){for(var d=new Uint8Array(c.data),e,g,s,p,x,r,u=a(d,4),v=0,P=12;v<u;v++,P+=16){var K=na(d.subarray(P,P+4)),I=f(d,P+8),t=f(d,P+12);switch(K){case "cmap":e=d;var z=I,A=1===a(e,z+2)?f(e,z+8):
+f(e,z+16),C=a(e,z+A),t=K=I=void 0;if(4===C){a(e,z+A+2);C=a(e,z+A+6)>>1;K=z+A+14;I=[];for(t=0;t<C;t++,K+=2)I[t]={end:a(e,K)};K+=2;for(t=0;t<C;t++,K+=2)I[t].start=a(e,K);for(t=0;t<C;t++,K+=2)I[t].idDelta=a(e,K);for(t=0;t<C;t++,K+=2)if(z=a(e,K),0!==z){I[t].ids=[];for(var A=0,w=I[t].end-I[t].start+1;A<w;A++)I[t].ids[A]=a(e,K+z),z+=2}e=I}else if(12===C){f(e,z+A+4);C=f(e,z+A+12);K=z+A+16;I=[];for(t=0;t<C;t++)I.push({start:f(e,K),end:f(e,K+4),idDelta:f(e,K+8)-f(e,K)}),K+=12;e=I}else y("not supported cmap: "+
+C),e=void 0;break;case "glyf":g=d.subarray(I,I+t);break;case "loca":s=d.subarray(I,I+t);break;case "head":r=a(d,I+18);x=a(d,I+50);break;case "CFF ":p=(new kc(new ha(d,I,I+t-I),{})).parse(),p={glyphs:p.charStrings.objects,subrs:p.topDict.privateDict&&p.topDict.privateDict.subrsIndex&&p.topDict.privateDict.subrsIndex.objects,gsubrs:p.globalSubrIndex&&p.globalSubrIndex.objects}}}return g?(c=r?[1/r,0,0,1/r,0,0]:c.fontMatrix,new h(b(g,s,x),e,c)):new k(p,e,c.fontMatrix,c.glyphNameMap)}}}(),Ya={A:65,AE:198,
+AEacute:508,AEmacron:482,AEsmall:63462,Aacute:193,Aacutesmall:63457,Abreve:258,Abreveacute:7854,Abrevecyrillic:1232,Abrevedotbelow:7862,Abrevegrave:7856,Abrevehookabove:7858,Abrevetilde:7860,Acaron:461,Acircle:9398,Acircumflex:194,Acircumflexacute:7844,Acircumflexdotbelow:7852,Acircumflexgrave:7846,Acircumflexhookabove:7848,Acircumflexsmall:63458,Acircumflextilde:7850,Acute:63177,Acutesmall:63412,Acyrillic:1040,Adblgrave:512,Adieresis:196,Adieresiscyrillic:1234,Adieresismacron:478,Adieresissmall:63460,
+Adotbelow:7840,Adotmacron:480,Agrave:192,Agravesmall:63456,Ahookabove:7842,Aiecyrillic:1236,Ainvertedbreve:514,Alpha:913,Alphatonos:902,Amacron:256,Amonospace:65313,Aogonek:260,Aring:197,Aringacute:506,Aringbelow:7680,Aringsmall:63461,Asmall:63329,Atilde:195,Atildesmall:63459,Aybarmenian:1329,B:66,Bcircle:9399,Bdotaccent:7682,Bdotbelow:7684,Becyrillic:1041,Benarmenian:1330,Beta:914,Bhook:385,Blinebelow:7686,Bmonospace:65314,Brevesmall:63220,Bsmall:63330,Btopbar:386,C:67,Caarmenian:1342,Cacute:262,
+Caron:63178,Caronsmall:63221,Ccaron:268,Ccedilla:199,Ccedillaacute:7688,Ccedillasmall:63463,Ccircle:9400,Ccircumflex:264,Cdot:266,Cdotaccent:266,Cedillasmall:63416,Chaarmenian:1353,Cheabkhasiancyrillic:1212,Checyrillic:1063,Chedescenderabkhasiancyrillic:1214,Chedescendercyrillic:1206,Chedieresiscyrillic:1268,Cheharmenian:1347,Chekhakassiancyrillic:1227,Cheverticalstrokecyrillic:1208,Chi:935,Chook:391,Circumflexsmall:63222,Cmonospace:65315,Coarmenian:1361,Csmall:63331,D:68,DZ:497,DZcaron:452,Daarmenian:1332,
+Dafrican:393,Dcaron:270,Dcedilla:7696,Dcircle:9401,Dcircumflexbelow:7698,Dcroat:272,Ddotaccent:7690,Ddotbelow:7692,Decyrillic:1044,Deicoptic:1006,Delta:8710,Deltagreek:916,Dhook:394,Dieresis:63179,DieresisAcute:63180,DieresisGrave:63181,Dieresissmall:63400,Digammagreek:988,Djecyrillic:1026,Dlinebelow:7694,Dmonospace:65316,Dotaccentsmall:63223,Dslash:272,Dsmall:63332,Dtopbar:395,Dz:498,Dzcaron:453,Dzeabkhasiancyrillic:1248,Dzecyrillic:1029,Dzhecyrillic:1039,E:69,Eacute:201,Eacutesmall:63465,Ebreve:276,
+Ecaron:282,Ecedillabreve:7708,Echarmenian:1333,Ecircle:9402,Ecircumflex:202,Ecircumflexacute:7870,Ecircumflexbelow:7704,Ecircumflexdotbelow:7878,Ecircumflexgrave:7872,Ecircumflexhookabove:7874,Ecircumflexsmall:63466,Ecircumflextilde:7876,Ecyrillic:1028,Edblgrave:516,Edieresis:203,Edieresissmall:63467,Edot:278,Edotaccent:278,Edotbelow:7864,Efcyrillic:1060,Egrave:200,Egravesmall:63464,Eharmenian:1335,Ehookabove:7866,Eightroman:8551,Einvertedbreve:518,Eiotifiedcyrillic:1124,Elcyrillic:1051,Elevenroman:8554,
+Emacron:274,Emacronacute:7702,Emacrongrave:7700,Emcyrillic:1052,Emonospace:65317,Encyrillic:1053,Endescendercyrillic:1186,Eng:330,Enghecyrillic:1188,Enhookcyrillic:1223,Eogonek:280,Eopen:400,Epsilon:917,Epsilontonos:904,Ercyrillic:1056,Ereversed:398,Ereversedcyrillic:1069,Escyrillic:1057,Esdescendercyrillic:1194,Esh:425,Esmall:63333,Eta:919,Etarmenian:1336,Etatonos:905,Eth:208,Ethsmall:63472,Etilde:7868,Etildebelow:7706,Euro:8364,Ezh:439,Ezhcaron:494,Ezhreversed:440,F:70,Fcircle:9403,Fdotaccent:7710,
+Feharmenian:1366,Feicoptic:996,Fhook:401,Fitacyrillic:1138,Fiveroman:8548,Fmonospace:65318,Fourroman:8547,Fsmall:63334,G:71,GBsquare:13191,Gacute:500,Gamma:915,Gammaafrican:404,Gangiacoptic:1002,Gbreve:286,Gcaron:486,Gcedilla:290,Gcircle:9404,Gcircumflex:284,Gcommaaccent:290,Gdot:288,Gdotaccent:288,Gecyrillic:1043,Ghadarmenian:1346,Ghemiddlehookcyrillic:1172,Ghestrokecyrillic:1170,Gheupturncyrillic:1168,Ghook:403,Gimarmenian:1331,Gjecyrillic:1027,Gmacron:7712,Gmonospace:65319,Grave:63182,Gravesmall:63328,
+Gsmall:63335,Gsmallhook:667,Gstroke:484,H:72,H18533:9679,H18543:9642,H18551:9643,H22073:9633,HPsquare:13259,Haabkhasiancyrillic:1192,Hadescendercyrillic:1202,Hardsigncyrillic:1066,Hbar:294,Hbrevebelow:7722,Hcedilla:7720,Hcircle:9405,Hcircumflex:292,Hdieresis:7718,Hdotaccent:7714,Hdotbelow:7716,Hmonospace:65320,Hoarmenian:1344,Horicoptic:1E3,Hsmall:63336,Hungarumlaut:63183,Hungarumlautsmall:63224,Hzsquare:13200,I:73,IAcyrillic:1071,IJ:306,IUcyrillic:1070,Iacute:205,Iacutesmall:63469,Ibreve:300,Icaron:463,
+Icircle:9406,Icircumflex:206,Icircumflexsmall:63470,Icyrillic:1030,Idblgrave:520,Idieresis:207,Idieresisacute:7726,Idieresiscyrillic:1252,Idieresissmall:63471,Idot:304,Idotaccent:304,Idotbelow:7882,Iebrevecyrillic:1238,Iecyrillic:1045,Ifraktur:8465,Igrave:204,Igravesmall:63468,Ihookabove:7880,Iicyrillic:1048,Iinvertedbreve:522,Iishortcyrillic:1049,Imacron:298,Imacroncyrillic:1250,Imonospace:65321,Iniarmenian:1339,Iocyrillic:1025,Iogonek:302,Iota:921,Iotaafrican:406,Iotadieresis:938,Iotatonos:906,
+Ismall:63337,Istroke:407,Itilde:296,Itildebelow:7724,Izhitsacyrillic:1140,Izhitsadblgravecyrillic:1142,J:74,Jaarmenian:1345,Jcircle:9407,Jcircumflex:308,Jecyrillic:1032,Jheharmenian:1355,Jmonospace:65322,Jsmall:63338,K:75,KBsquare:13189,KKsquare:13261,Kabashkircyrillic:1184,Kacute:7728,Kacyrillic:1050,Kadescendercyrillic:1178,Kahookcyrillic:1219,Kappa:922,Kastrokecyrillic:1182,Kaverticalstrokecyrillic:1180,Kcaron:488,Kcedilla:310,Kcircle:9408,Kcommaaccent:310,Kdotbelow:7730,Keharmenian:1364,Kenarmenian:1343,
+Khacyrillic:1061,Kheicoptic:998,Khook:408,Kjecyrillic:1036,Klinebelow:7732,Kmonospace:65323,Koppacyrillic:1152,Koppagreek:990,Ksicyrillic:1134,Ksmall:63339,L:76,LJ:455,LL:63167,Lacute:313,Lambda:923,Lcaron:317,Lcedilla:315,Lcircle:9409,Lcircumflexbelow:7740,Lcommaaccent:315,Ldot:319,Ldotaccent:319,Ldotbelow:7734,Ldotbelowmacron:7736,Liwnarmenian:1340,Lj:456,Ljecyrillic:1033,Llinebelow:7738,Lmonospace:65324,Lslash:321,Lslashsmall:63225,Lsmall:63340,M:77,MBsquare:13190,Macron:63184,Macronsmall:63407,
+Macute:7742,Mcircle:9410,Mdotaccent:7744,Mdotbelow:7746,Menarmenian:1348,Mmonospace:65325,Msmall:63341,Mturned:412,Mu:924,N:78,NJ:458,Nacute:323,Ncaron:327,Ncedilla:325,Ncircle:9411,Ncircumflexbelow:7754,Ncommaaccent:325,Ndotaccent:7748,Ndotbelow:7750,Nhookleft:413,Nineroman:8552,Nj:459,Njecyrillic:1034,Nlinebelow:7752,Nmonospace:65326,Nowarmenian:1350,Nsmall:63342,Ntilde:209,Ntildesmall:63473,Nu:925,O:79,OE:338,OEsmall:63226,Oacute:211,Oacutesmall:63475,Obarredcyrillic:1256,Obarreddieresiscyrillic:1258,
+Obreve:334,Ocaron:465,Ocenteredtilde:415,Ocircle:9412,Ocircumflex:212,Ocircumflexacute:7888,Ocircumflexdotbelow:7896,Ocircumflexgrave:7890,Ocircumflexhookabove:7892,Ocircumflexsmall:63476,Ocircumflextilde:7894,Ocyrillic:1054,Odblacute:336,Odblgrave:524,Odieresis:214,Odieresiscyrillic:1254,Odieresissmall:63478,Odotbelow:7884,Ogoneksmall:63227,Ograve:210,Ogravesmall:63474,Oharmenian:1365,Ohm:8486,Ohookabove:7886,Ohorn:416,Ohornacute:7898,Ohorndotbelow:7906,Ohorngrave:7900,Ohornhookabove:7902,Ohorntilde:7904,
+Ohungarumlaut:336,Oi:418,Oinvertedbreve:526,Omacron:332,Omacronacute:7762,Omacrongrave:7760,Omega:8486,Omegacyrillic:1120,Omegagreek:937,Omegaroundcyrillic:1146,Omegatitlocyrillic:1148,Omegatonos:911,Omicron:927,Omicrontonos:908,Omonospace:65327,Oneroman:8544,Oogonek:490,Oogonekmacron:492,Oopen:390,Oslash:216,Oslashacute:510,Oslashsmall:63480,Osmall:63343,Ostrokeacute:510,Otcyrillic:1150,Otilde:213,Otildeacute:7756,Otildedieresis:7758,Otildesmall:63477,P:80,Pacute:7764,Pcircle:9413,Pdotaccent:7766,
+Pecyrillic:1055,Peharmenian:1354,Pemiddlehookcyrillic:1190,Phi:934,Phook:420,Pi:928,Piwrarmenian:1363,Pmonospace:65328,Psi:936,Psicyrillic:1136,Psmall:63344,Q:81,Qcircle:9414,Qmonospace:65329,Qsmall:63345,R:82,Raarmenian:1356,Racute:340,Rcaron:344,Rcedilla:342,Rcircle:9415,Rcommaaccent:342,Rdblgrave:528,Rdotaccent:7768,Rdotbelow:7770,Rdotbelowmacron:7772,Reharmenian:1360,Rfraktur:8476,Rho:929,Ringsmall:63228,Rinvertedbreve:530,Rlinebelow:7774,Rmonospace:65330,Rsmall:63346,Rsmallinverted:641,Rsmallinvertedsuperior:694,
+S:83,SF010000:9484,SF020000:9492,SF030000:9488,SF040000:9496,SF050000:9532,SF060000:9516,SF070000:9524,SF080000:9500,SF090000:9508,SF100000:9472,SF110000:9474,SF190000:9569,SF200000:9570,SF210000:9558,SF220000:9557,SF230000:9571,SF240000:9553,SF250000:9559,SF260000:9565,SF270000:9564,SF280000:9563,SF360000:9566,SF370000:9567,SF380000:9562,SF390000:9556,SF400000:9577,SF410000:9574,SF420000:9568,SF430000:9552,SF440000:9580,SF450000:9575,SF460000:9576,SF470000:9572,SF480000:9573,SF490000:9561,SF500000:9560,
+SF510000:9554,SF520000:9555,SF530000:9579,SF540000:9578,Sacute:346,Sacutedotaccent:7780,Sampigreek:992,Scaron:352,Scarondotaccent:7782,Scaronsmall:63229,Scedilla:350,Schwa:399,Schwacyrillic:1240,Schwadieresiscyrillic:1242,Scircle:9416,Scircumflex:348,Scommaaccent:536,Sdotaccent:7776,Sdotbelow:7778,Sdotbelowdotaccent:7784,Seharmenian:1357,Sevenroman:8550,Shaarmenian:1351,Shacyrillic:1064,Shchacyrillic:1065,Sheicoptic:994,Shhacyrillic:1210,Shimacoptic:1004,Sigma:931,Sixroman:8549,Smonospace:65331,Softsigncyrillic:1068,
+Ssmall:63347,Stigmagreek:986,T:84,Tau:932,Tbar:358,Tcaron:356,Tcedilla:354,Tcircle:9417,Tcircumflexbelow:7792,Tcommaaccent:354,Tdotaccent:7786,Tdotbelow:7788,Tecyrillic:1058,Tedescendercyrillic:1196,Tenroman:8553,Tetsecyrillic:1204,Theta:920,Thook:428,Thorn:222,Thornsmall:63486,Threeroman:8546,Tildesmall:63230,Tiwnarmenian:1359,Tlinebelow:7790,Tmonospace:65332,Toarmenian:1337,Tonefive:444,Tonesix:388,Tonetwo:423,Tretroflexhook:430,Tsecyrillic:1062,Tshecyrillic:1035,Tsmall:63348,Twelveroman:8555,Tworoman:8545,
+U:85,Uacute:218,Uacutesmall:63482,Ubreve:364,Ucaron:467,Ucircle:9418,Ucircumflex:219,Ucircumflexbelow:7798,Ucircumflexsmall:63483,Ucyrillic:1059,Udblacute:368,Udblgrave:532,Udieresis:220,Udieresisacute:471,Udieresisbelow:7794,Udieresiscaron:473,Udieresiscyrillic:1264,Udieresisgrave:475,Udieresismacron:469,Udieresissmall:63484,Udotbelow:7908,Ugrave:217,Ugravesmall:63481,Uhookabove:7910,Uhorn:431,Uhornacute:7912,Uhorndotbelow:7920,Uhorngrave:7914,Uhornhookabove:7916,Uhorntilde:7918,Uhungarumlaut:368,
+Uhungarumlautcyrillic:1266,Uinvertedbreve:534,Ukcyrillic:1144,Umacron:362,Umacroncyrillic:1262,Umacrondieresis:7802,Umonospace:65333,Uogonek:370,Upsilon:933,Upsilon1:978,Upsilonacutehooksymbolgreek:979,Upsilonafrican:433,Upsilondieresis:939,Upsilondieresishooksymbolgreek:980,Upsilonhooksymbol:978,Upsilontonos:910,Uring:366,Ushortcyrillic:1038,Usmall:63349,Ustraightcyrillic:1198,Ustraightstrokecyrillic:1200,Utilde:360,Utildeacute:7800,Utildebelow:7796,V:86,Vcircle:9419,Vdotbelow:7806,Vecyrillic:1042,
+Vewarmenian:1358,Vhook:434,Vmonospace:65334,Voarmenian:1352,Vsmall:63350,Vtilde:7804,W:87,Wacute:7810,Wcircle:9420,Wcircumflex:372,Wdieresis:7812,Wdotaccent:7814,Wdotbelow:7816,Wgrave:7808,Wmonospace:65335,Wsmall:63351,X:88,Xcircle:9421,Xdieresis:7820,Xdotaccent:7818,Xeharmenian:1341,Xi:926,Xmonospace:65336,Xsmall:63352,Y:89,Yacute:221,Yacutesmall:63485,Yatcyrillic:1122,Ycircle:9422,Ycircumflex:374,Ydieresis:376,Ydieresissmall:63487,Ydotaccent:7822,Ydotbelow:7924,Yericyrillic:1067,Yerudieresiscyrillic:1272,
+Ygrave:7922,Yhook:435,Yhookabove:7926,Yiarmenian:1349,Yicyrillic:1031,Yiwnarmenian:1362,Ymonospace:65337,Ysmall:63353,Ytilde:7928,Yusbigcyrillic:1130,Yusbigiotifiedcyrillic:1132,Yuslittlecyrillic:1126,Yuslittleiotifiedcyrillic:1128,Z:90,Zaarmenian:1334,Zacute:377,Zcaron:381,Zcaronsmall:63231,Zcircle:9423,Zcircumflex:7824,Zdot:379,Zdotaccent:379,Zdotbelow:7826,Zecyrillic:1047,Zedescendercyrillic:1176,Zedieresiscyrillic:1246,Zeta:918,Zhearmenian:1338,Zhebrevecyrillic:1217,Zhecyrillic:1046,Zhedescendercyrillic:1174,
+Zhedieresiscyrillic:1244,Zlinebelow:7828,Zmonospace:65338,Zsmall:63354,Zstroke:437,a:97,aabengali:2438,aacute:225,aadeva:2310,aagujarati:2694,aagurmukhi:2566,aamatragurmukhi:2622,aarusquare:13059,aavowelsignbengali:2494,aavowelsigndeva:2366,aavowelsigngujarati:2750,abbreviationmarkarmenian:1375,abbreviationsigndeva:2416,abengali:2437,abopomofo:12570,abreve:259,abreveacute:7855,abrevecyrillic:1233,abrevedotbelow:7863,abrevegrave:7857,abrevehookabove:7859,abrevetilde:7861,acaron:462,acircle:9424,acircumflex:226,
+acircumflexacute:7845,acircumflexdotbelow:7853,acircumflexgrave:7847,acircumflexhookabove:7849,acircumflextilde:7851,acute:180,acutebelowcmb:791,acutecmb:769,acutecomb:769,acutedeva:2388,acutelowmod:719,acutetonecmb:833,acyrillic:1072,adblgrave:513,addakgurmukhi:2673,adeva:2309,adieresis:228,adieresiscyrillic:1235,adieresismacron:479,adotbelow:7841,adotmacron:481,ae:230,aeacute:509,aekorean:12624,aemacron:483,afii00208:8213,afii08941:8356,afii10017:1040,afii10018:1041,afii10019:1042,afii10020:1043,
+afii10021:1044,afii10022:1045,afii10023:1025,afii10024:1046,afii10025:1047,afii10026:1048,afii10027:1049,afii10028:1050,afii10029:1051,afii10030:1052,afii10031:1053,afii10032:1054,afii10033:1055,afii10034:1056,afii10035:1057,afii10036:1058,afii10037:1059,afii10038:1060,afii10039:1061,afii10040:1062,afii10041:1063,afii10042:1064,afii10043:1065,afii10044:1066,afii10045:1067,afii10046:1068,afii10047:1069,afii10048:1070,afii10049:1071,afii10050:1168,afii10051:1026,afii10052:1027,afii10053:1028,afii10054:1029,
+afii10055:1030,afii10056:1031,afii10057:1032,afii10058:1033,afii10059:1034,afii10060:1035,afii10061:1036,afii10062:1038,afii10063:63172,afii10064:63173,afii10065:1072,afii10066:1073,afii10067:1074,afii10068:1075,afii10069:1076,afii10070:1077,afii10071:1105,afii10072:1078,afii10073:1079,afii10074:1080,afii10075:1081,afii10076:1082,afii10077:1083,afii10078:1084,afii10079:1085,afii10080:1086,afii10081:1087,afii10082:1088,afii10083:1089,afii10084:1090,afii10085:1091,afii10086:1092,afii10087:1093,afii10088:1094,
+afii10089:1095,afii10090:1096,afii10091:1097,afii10092:1098,afii10093:1099,afii10094:1100,afii10095:1101,afii10096:1102,afii10097:1103,afii10098:1169,afii10099:1106,afii10100:1107,afii10101:1108,afii10102:1109,afii10103:1110,afii10104:1111,afii10105:1112,afii10106:1113,afii10107:1114,afii10108:1115,afii10109:1116,afii10110:1118,afii10145:1039,afii10146:1122,afii10147:1138,afii10148:1140,afii10192:63174,afii10193:1119,afii10194:1123,afii10195:1139,afii10196:1141,afii10831:63175,afii10832:63176,afii10846:1241,
+afii299:8206,afii300:8207,afii301:8205,afii57381:1642,afii57388:1548,afii57392:1632,afii57393:1633,afii57394:1634,afii57395:1635,afii57396:1636,afii57397:1637,afii57398:1638,afii57399:1639,afii57400:1640,afii57401:1641,afii57403:1563,afii57407:1567,afii57409:1569,afii57410:1570,afii57411:1571,afii57412:1572,afii57413:1573,afii57414:1574,afii57415:1575,afii57416:1576,afii57417:1577,afii57418:1578,afii57419:1579,afii57420:1580,afii57421:1581,afii57422:1582,afii57423:1583,afii57424:1584,afii57425:1585,
+afii57426:1586,afii57427:1587,afii57428:1588,afii57429:1589,afii57430:1590,afii57431:1591,afii57432:1592,afii57433:1593,afii57434:1594,afii57440:1600,afii57441:1601,afii57442:1602,afii57443:1603,afii57444:1604,afii57445:1605,afii57446:1606,afii57448:1608,afii57449:1609,afii57450:1610,afii57451:1611,afii57452:1612,afii57453:1613,afii57454:1614,afii57455:1615,afii57456:1616,afii57457:1617,afii57458:1618,afii57470:1607,afii57505:1700,afii57506:1662,afii57507:1670,afii57508:1688,afii57509:1711,afii57511:1657,
+afii57512:1672,afii57513:1681,afii57514:1722,afii57519:1746,afii57534:1749,afii57636:8362,afii57645:1470,afii57658:1475,afii57664:1488,afii57665:1489,afii57666:1490,afii57667:1491,afii57668:1492,afii57669:1493,afii57670:1494,afii57671:1495,afii57672:1496,afii57673:1497,afii57674:1498,afii57675:1499,afii57676:1500,afii57677:1501,afii57678:1502,afii57679:1503,afii57680:1504,afii57681:1505,afii57682:1506,afii57683:1507,afii57684:1508,afii57685:1509,afii57686:1510,afii57687:1511,afii57688:1512,afii57689:1513,
+afii57690:1514,afii57694:64298,afii57695:64299,afii57700:64331,afii57705:64287,afii57716:1520,afii57717:1521,afii57718:1522,afii57723:64309,afii57793:1460,afii57794:1461,afii57795:1462,afii57796:1467,afii57797:1464,afii57798:1463,afii57799:1456,afii57800:1458,afii57801:1457,afii57802:1459,afii57803:1474,afii57804:1473,afii57806:1465,afii57807:1468,afii57839:1469,afii57841:1471,afii57842:1472,afii57929:700,afii61248:8453,afii61289:8467,afii61352:8470,afii61573:8236,afii61574:8237,afii61575:8238,afii61664:8204,
+afii63167:1645,afii64937:701,agrave:224,agujarati:2693,agurmukhi:2565,ahiragana:12354,ahookabove:7843,aibengali:2448,aibopomofo:12574,aideva:2320,aiecyrillic:1237,aigujarati:2704,aigurmukhi:2576,aimatragurmukhi:2632,ainarabic:1593,ainfinalarabic:65226,aininitialarabic:65227,ainmedialarabic:65228,ainvertedbreve:515,aivowelsignbengali:2504,aivowelsigndeva:2376,aivowelsigngujarati:2760,akatakana:12450,akatakanahalfwidth:65393,akorean:12623,alef:1488,alefarabic:1575,alefdageshhebrew:64304,aleffinalarabic:65166,
+alefhamzaabovearabic:1571,alefhamzaabovefinalarabic:65156,alefhamzabelowarabic:1573,alefhamzabelowfinalarabic:65160,alefhebrew:1488,aleflamedhebrew:64335,alefmaddaabovearabic:1570,alefmaddaabovefinalarabic:65154,alefmaksuraarabic:1609,alefmaksurafinalarabic:65264,alefmaksurainitialarabic:65267,alefmaksuramedialarabic:65268,alefpatahhebrew:64302,alefqamatshebrew:64303,aleph:8501,allequal:8780,alpha:945,alphatonos:940,amacron:257,amonospace:65345,ampersand:38,ampersandmonospace:65286,ampersandsmall:63270,
+amsquare:13250,anbopomofo:12578,angbopomofo:12580,angbracketleft:12296,angbracketright:12297,angkhankhuthai:3674,angle:8736,anglebracketleft:12296,anglebracketleftvertical:65087,anglebracketright:12297,anglebracketrightvertical:65088,angleleft:9001,angleright:9002,angstrom:8491,anoteleia:903,anudattadeva:2386,anusvarabengali:2434,anusvaradeva:2306,anusvaragujarati:2690,aogonek:261,apaatosquare:13056,aparen:9372,apostrophearmenian:1370,apostrophemod:700,apple:63743,approaches:8784,approxequal:8776,
+approxequalorimage:8786,approximatelyequal:8773,araeaekorean:12686,araeakorean:12685,arc:8978,arighthalfring:7834,aring:229,aringacute:507,aringbelow:7681,arrowboth:8596,arrowdashdown:8675,arrowdashleft:8672,arrowdashright:8674,arrowdashup:8673,arrowdblboth:8660,arrowdbldown:8659,arrowdblleft:8656,arrowdblright:8658,arrowdblup:8657,arrowdown:8595,arrowdownleft:8601,arrowdownright:8600,arrowdownwhite:8681,arrowheaddownmod:709,arrowheadleftmod:706,arrowheadrightmod:707,arrowheadupmod:708,arrowhorizex:63719,
+arrowleft:8592,arrowleftdbl:8656,arrowleftdblstroke:8653,arrowleftoverright:8646,arrowleftwhite:8678,arrowright:8594,arrowrightdblstroke:8655,arrowrightheavy:10142,arrowrightoverleft:8644,arrowrightwhite:8680,arrowtableft:8676,arrowtabright:8677,arrowup:8593,arrowupdn:8597,arrowupdnbse:8616,arrowupdownbase:8616,arrowupleft:8598,arrowupleftofdown:8645,arrowupright:8599,arrowupwhite:8679,arrowvertex:63718,asciicircum:94,asciicircummonospace:65342,asciitilde:126,asciitildemonospace:65374,ascript:593,
+ascriptturned:594,asmallhiragana:12353,asmallkatakana:12449,asmallkatakanahalfwidth:65383,asterisk:42,asteriskaltonearabic:1645,asteriskarabic:1645,asteriskmath:8727,asteriskmonospace:65290,asterisksmall:65121,asterism:8258,asuperior:63209,asymptoticallyequal:8771,at:64,atilde:227,atmonospace:65312,atsmall:65131,aturned:592,aubengali:2452,aubopomofo:12576,audeva:2324,augujarati:2708,augurmukhi:2580,aulengthmarkbengali:2519,aumatragurmukhi:2636,auvowelsignbengali:2508,auvowelsigndeva:2380,auvowelsigngujarati:2764,
+avagrahadeva:2365,aybarmenian:1377,ayin:1506,ayinaltonehebrew:64288,ayinhebrew:1506,b:98,babengali:2476,backslash:92,backslashmonospace:65340,badeva:2348,bagujarati:2732,bagurmukhi:2604,bahiragana:12400,bahtthai:3647,bakatakana:12496,bar:124,barmonospace:65372,bbopomofo:12549,bcircle:9425,bdotaccent:7683,bdotbelow:7685,beamedsixteenthnotes:9836,because:8757,becyrillic:1073,beharabic:1576,behfinalarabic:65168,behinitialarabic:65169,behiragana:12409,behmedialarabic:65170,behmeeminitialarabic:64671,
+behmeemisolatedarabic:64520,behnoonfinalarabic:64621,bekatakana:12505,benarmenian:1378,bet:1489,beta:946,betasymbolgreek:976,betdagesh:64305,betdageshhebrew:64305,bethebrew:1489,betrafehebrew:64332,bhabengali:2477,bhadeva:2349,bhagujarati:2733,bhagurmukhi:2605,bhook:595,bihiragana:12403,bikatakana:12499,bilabialclick:664,bindigurmukhi:2562,birusquare:13105,blackcircle:9679,blackdiamond:9670,blackdownpointingtriangle:9660,blackleftpointingpointer:9668,blackleftpointingtriangle:9664,blacklenticularbracketleft:12304,
+blacklenticularbracketleftvertical:65083,blacklenticularbracketright:12305,blacklenticularbracketrightvertical:65084,blacklowerlefttriangle:9699,blacklowerrighttriangle:9698,blackrectangle:9644,blackrightpointingpointer:9658,blackrightpointingtriangle:9654,blacksmallsquare:9642,blacksmilingface:9787,blacksquare:9632,blackstar:9733,blackupperlefttriangle:9700,blackupperrighttriangle:9701,blackuppointingsmalltriangle:9652,blackuppointingtriangle:9650,blank:9251,blinebelow:7687,block:9608,bmonospace:65346,
+bobaimaithai:3610,bohiragana:12412,bokatakana:12508,bparen:9373,bqsquare:13251,braceex:63732,braceleft:123,braceleftbt:63731,braceleftmid:63730,braceleftmonospace:65371,braceleftsmall:65115,bracelefttp:63729,braceleftvertical:65079,braceright:125,bracerightbt:63742,bracerightmid:63741,bracerightmonospace:65373,bracerightsmall:65116,bracerighttp:63740,bracerightvertical:65080,bracketleft:91,bracketleftbt:63728,bracketleftex:63727,bracketleftmonospace:65339,bracketlefttp:63726,bracketright:93,bracketrightbt:63739,
+bracketrightex:63738,bracketrightmonospace:65341,bracketrighttp:63737,breve:728,brevebelowcmb:814,brevecmb:774,breveinvertedbelowcmb:815,breveinvertedcmb:785,breveinverteddoublecmb:865,bridgebelowcmb:810,bridgeinvertedbelowcmb:826,brokenbar:166,bstroke:384,bsuperior:63210,btopbar:387,buhiragana:12406,bukatakana:12502,bullet:8226,bulletinverse:9688,bulletoperator:8729,bullseye:9678,c:99,caarmenian:1390,cabengali:2458,cacute:263,cadeva:2330,cagujarati:2714,cagurmukhi:2586,calsquare:13192,candrabindubengali:2433,
+candrabinducmb:784,candrabindudeva:2305,candrabindugujarati:2689,capslock:8682,careof:8453,caron:711,caronbelowcmb:812,caroncmb:780,carriagereturn:8629,cbopomofo:12568,ccaron:269,ccedilla:231,ccedillaacute:7689,ccircle:9426,ccircumflex:265,ccurl:597,cdot:267,cdotaccent:267,cdsquare:13253,cedilla:184,cedillacmb:807,cent:162,centigrade:8451,centinferior:63199,centmonospace:65504,centoldstyle:63394,centsuperior:63200,chaarmenian:1401,chabengali:2459,chadeva:2331,chagujarati:2715,chagurmukhi:2587,chbopomofo:12564,
+cheabkhasiancyrillic:1213,checkmark:10003,checyrillic:1095,chedescenderabkhasiancyrillic:1215,chedescendercyrillic:1207,chedieresiscyrillic:1269,cheharmenian:1395,chekhakassiancyrillic:1228,cheverticalstrokecyrillic:1209,chi:967,chieuchacirclekorean:12919,chieuchaparenkorean:12823,chieuchcirclekorean:12905,chieuchkorean:12618,chieuchparenkorean:12809,chochangthai:3594,chochanthai:3592,chochingthai:3593,chochoethai:3596,chook:392,cieucacirclekorean:12918,cieucaparenkorean:12822,cieuccirclekorean:12904,
+cieuckorean:12616,cieucparenkorean:12808,cieucuparenkorean:12828,circle:9675,circlecopyrt:169,circlemultiply:8855,circleot:8857,circleplus:8853,circlepostalmark:12342,circlewithlefthalfblack:9680,circlewithrighthalfblack:9681,circumflex:710,circumflexbelowcmb:813,circumflexcmb:770,clear:8999,clickalveolar:450,clickdental:448,clicklateral:449,clickretroflex:451,club:9827,clubsuitblack:9827,clubsuitwhite:9831,cmcubedsquare:13220,cmonospace:65347,cmsquaredsquare:13216,coarmenian:1409,colon:58,colonmonetary:8353,
+colonmonospace:65306,colonsign:8353,colonsmall:65109,colontriangularhalfmod:721,colontriangularmod:720,comma:44,commaabovecmb:787,commaaboverightcmb:789,commaaccent:63171,commaarabic:1548,commaarmenian:1373,commainferior:63201,commamonospace:65292,commareversedabovecmb:788,commareversedmod:701,commasmall:65104,commasuperior:63202,commaturnedabovecmb:786,commaturnedmod:699,compass:9788,congruent:8773,contourintegral:8750,control:8963,controlACK:6,controlBEL:7,controlBS:8,controlCAN:24,controlCR:13,
+controlDC1:17,controlDC2:18,controlDC3:19,controlDC4:20,controlDEL:127,controlDLE:16,controlEM:25,controlENQ:5,controlEOT:4,controlESC:27,controlETB:23,controlETX:3,controlFF:12,controlFS:28,controlGS:29,controlHT:9,controlLF:10,controlNAK:21,controlRS:30,controlSI:15,controlSO:14,controlSOT:2,controlSTX:1,controlSUB:26,controlSYN:22,controlUS:31,controlVT:11,copyright:169,copyrightsans:63721,copyrightserif:63193,cornerbracketleft:12300,cornerbracketlefthalfwidth:65378,cornerbracketleftvertical:65089,
+cornerbracketright:12301,cornerbracketrighthalfwidth:65379,cornerbracketrightvertical:65090,corporationsquare:13183,cosquare:13255,coverkgsquare:13254,cparen:9374,cruzeiro:8354,cstretched:663,curlyand:8911,curlyor:8910,currency:164,cyrBreve:63185,cyrFlex:63186,cyrbreve:63188,cyrflex:63189,d:100,daarmenian:1380,dabengali:2470,dadarabic:1590,dadeva:2342,dadfinalarabic:65214,dadinitialarabic:65215,dadmedialarabic:65216,dagesh:1468,dageshhebrew:1468,dagger:8224,daggerdbl:8225,dagujarati:2726,dagurmukhi:2598,
+dahiragana:12384,dakatakana:12480,dalarabic:1583,dalet:1491,daletdagesh:64307,daletdageshhebrew:64307,dalethebrew:1491,dalfinalarabic:65194,dammaarabic:1615,dammalowarabic:1615,dammatanaltonearabic:1612,dammatanarabic:1612,danda:2404,dargahebrew:1447,dargalefthebrew:1447,dasiapneumatacyrilliccmb:1157,dblGrave:63187,dblanglebracketleft:12298,dblanglebracketleftvertical:65085,dblanglebracketright:12299,dblanglebracketrightvertical:65086,dblarchinvertedbelowcmb:811,dblarrowleft:8660,dblarrowright:8658,
+dbldanda:2405,dblgrave:63190,dblgravecmb:783,dblintegral:8748,dbllowline:8215,dbllowlinecmb:819,dbloverlinecmb:831,dblprimemod:698,dblverticalbar:8214,dblverticallineabovecmb:782,dbopomofo:12553,dbsquare:13256,dcaron:271,dcedilla:7697,dcircle:9427,dcircumflexbelow:7699,dcroat:273,ddabengali:2465,ddadeva:2337,ddagujarati:2721,ddagurmukhi:2593,ddalarabic:1672,ddalfinalarabic:64393,dddhadeva:2396,ddhabengali:2466,ddhadeva:2338,ddhagujarati:2722,ddhagurmukhi:2594,ddotaccent:7691,ddotbelow:7693,decimalseparatorarabic:1643,
+decimalseparatorpersian:1643,decyrillic:1076,degree:176,dehihebrew:1453,dehiragana:12391,deicoptic:1007,dekatakana:12487,deleteleft:9003,deleteright:8998,delta:948,deltaturned:397,denominatorminusonenumeratorbengali:2552,dezh:676,dhabengali:2471,dhadeva:2343,dhagujarati:2727,dhagurmukhi:2599,dhook:599,dialytikatonos:901,dialytikatonoscmb:836,diamond:9830,diamondsuitwhite:9826,dieresis:168,dieresisacute:63191,dieresisbelowcmb:804,dieresiscmb:776,dieresisgrave:63192,dieresistonos:901,dihiragana:12386,
+dikatakana:12482,dittomark:12291,divide:247,divides:8739,divisionslash:8725,djecyrillic:1106,dkshade:9619,dlinebelow:7695,dlsquare:13207,dmacron:273,dmonospace:65348,dnblock:9604,dochadathai:3598,dodekthai:3604,dohiragana:12393,dokatakana:12489,dollar:36,dollarinferior:63203,dollarmonospace:65284,dollaroldstyle:63268,dollarsmall:65129,dollarsuperior:63204,dong:8363,dorusquare:13094,dotaccent:729,dotaccentcmb:775,dotbelowcmb:803,dotbelowcomb:803,dotkatakana:12539,dotlessi:305,dotlessj:63166,dotlessjstrokehook:644,
+dotmath:8901,dottedcircle:9676,doubleyodpatah:64287,doubleyodpatahhebrew:64287,downtackbelowcmb:798,downtackmod:725,dparen:9375,dsuperior:63211,dtail:598,dtopbar:396,duhiragana:12389,dukatakana:12485,dz:499,dzaltone:675,dzcaron:454,dzcurl:677,dzeabkhasiancyrillic:1249,dzecyrillic:1109,dzhecyrillic:1119,e:101,eacute:233,earth:9793,ebengali:2447,ebopomofo:12572,ebreve:277,ecandradeva:2317,ecandragujarati:2701,ecandravowelsigndeva:2373,ecandravowelsigngujarati:2757,ecaron:283,ecedillabreve:7709,echarmenian:1381,
+echyiwnarmenian:1415,ecircle:9428,ecircumflex:234,ecircumflexacute:7871,ecircumflexbelow:7705,ecircumflexdotbelow:7879,ecircumflexgrave:7873,ecircumflexhookabove:7875,ecircumflextilde:7877,ecyrillic:1108,edblgrave:517,edeva:2319,edieresis:235,edot:279,edotaccent:279,edotbelow:7865,eegurmukhi:2575,eematragurmukhi:2631,efcyrillic:1092,egrave:232,egujarati:2703,eharmenian:1383,ehbopomofo:12573,ehiragana:12360,ehookabove:7867,eibopomofo:12575,eight:56,eightarabic:1640,eightbengali:2542,eightcircle:9319,
+eightcircleinversesansserif:10129,eightdeva:2414,eighteencircle:9329,eighteenparen:9349,eighteenperiod:9369,eightgujarati:2798,eightgurmukhi:2670,eighthackarabic:1640,eighthangzhou:12328,eighthnotebeamed:9835,eightideographicparen:12839,eightinferior:8328,eightmonospace:65304,eightoldstyle:63288,eightparen:9339,eightperiod:9359,eightpersian:1784,eightroman:8567,eightsuperior:8312,eightthai:3672,einvertedbreve:519,eiotifiedcyrillic:1125,ekatakana:12456,ekatakanahalfwidth:65396,ekonkargurmukhi:2676,
+ekorean:12628,elcyrillic:1083,element:8712,elevencircle:9322,elevenparen:9342,elevenperiod:9362,elevenroman:8570,ellipsis:8230,ellipsisvertical:8942,emacron:275,emacronacute:7703,emacrongrave:7701,emcyrillic:1084,emdash:8212,emdashvertical:65073,emonospace:65349,emphasismarkarmenian:1371,emptyset:8709,enbopomofo:12579,encyrillic:1085,endash:8211,endashvertical:65074,endescendercyrillic:1187,eng:331,engbopomofo:12581,enghecyrillic:1189,enhookcyrillic:1224,enspace:8194,eogonek:281,eokorean:12627,eopen:603,
+eopenclosed:666,eopenreversed:604,eopenreversedclosed:606,eopenreversedhook:605,eparen:9376,epsilon:949,epsilontonos:941,equal:61,equalmonospace:65309,equalsmall:65126,equalsuperior:8316,equivalence:8801,erbopomofo:12582,ercyrillic:1088,ereversed:600,ereversedcyrillic:1101,escyrillic:1089,esdescendercyrillic:1195,esh:643,eshcurl:646,eshortdeva:2318,eshortvowelsigndeva:2374,eshreversedloop:426,eshsquatreversed:645,esmallhiragana:12359,esmallkatakana:12455,esmallkatakanahalfwidth:65386,estimated:8494,
+esuperior:63212,eta:951,etarmenian:1384,etatonos:942,eth:240,etilde:7869,etildebelow:7707,etnahtafoukhhebrew:1425,etnahtafoukhlefthebrew:1425,etnahtahebrew:1425,etnahtalefthebrew:1425,eturned:477,eukorean:12641,euro:8364,evowelsignbengali:2503,evowelsigndeva:2375,evowelsigngujarati:2759,exclam:33,exclamarmenian:1372,exclamdbl:8252,exclamdown:161,exclamdownsmall:63393,exclammonospace:65281,exclamsmall:63265,existential:8707,ezh:658,ezhcaron:495,ezhcurl:659,ezhreversed:441,ezhtail:442,f:102,fadeva:2398,
+fagurmukhi:2654,fahrenheit:8457,fathaarabic:1614,fathalowarabic:1614,fathatanarabic:1611,fbopomofo:12552,fcircle:9429,fdotaccent:7711,feharabic:1601,feharmenian:1414,fehfinalarabic:65234,fehinitialarabic:65235,fehmedialarabic:65236,feicoptic:997,female:9792,ff:64256,ffi:64259,ffl:64260,fi:64257,fifteencircle:9326,fifteenparen:9346,fifteenperiod:9366,figuredash:8210,filledbox:9632,filledrect:9644,finalkaf:1498,finalkafdagesh:64314,finalkafdageshhebrew:64314,finalkafhebrew:1498,finalmem:1501,finalmemhebrew:1501,
+finalnun:1503,finalnunhebrew:1503,finalpe:1507,finalpehebrew:1507,finaltsadi:1509,finaltsadihebrew:1509,firsttonechinese:713,fisheye:9673,fitacyrillic:1139,five:53,fivearabic:1637,fivebengali:2539,fivecircle:9316,fivecircleinversesansserif:10126,fivedeva:2411,fiveeighths:8541,fivegujarati:2795,fivegurmukhi:2667,fivehackarabic:1637,fivehangzhou:12325,fiveideographicparen:12836,fiveinferior:8325,fivemonospace:65301,fiveoldstyle:63285,fiveparen:9336,fiveperiod:9356,fivepersian:1781,fiveroman:8564,fivesuperior:8309,
+fivethai:3669,fl:64258,florin:402,fmonospace:65350,fmsquare:13209,fofanthai:3615,fofathai:3613,fongmanthai:3663,forall:8704,four:52,fourarabic:1636,fourbengali:2538,fourcircle:9315,fourcircleinversesansserif:10125,fourdeva:2410,fourgujarati:2794,fourgurmukhi:2666,fourhackarabic:1636,fourhangzhou:12324,fourideographicparen:12835,fourinferior:8324,fourmonospace:65300,fournumeratorbengali:2551,fouroldstyle:63284,fourparen:9335,fourperiod:9355,fourpersian:1780,fourroman:8563,foursuperior:8308,fourteencircle:9325,
+fourteenparen:9345,fourteenperiod:9365,fourthai:3668,fourthtonechinese:715,fparen:9377,fraction:8260,franc:8355,g:103,gabengali:2455,gacute:501,gadeva:2327,gafarabic:1711,gaffinalarabic:64403,gafinitialarabic:64404,gafmedialarabic:64405,gagujarati:2711,gagurmukhi:2583,gahiragana:12364,gakatakana:12460,gamma:947,gammalatinsmall:611,gammasuperior:736,gangiacoptic:1003,gbopomofo:12557,gbreve:287,gcaron:487,gcedilla:291,gcircle:9430,gcircumflex:285,gcommaaccent:291,gdot:289,gdotaccent:289,gecyrillic:1075,
+gehiragana:12370,gekatakana:12466,geometricallyequal:8785,gereshaccenthebrew:1436,gereshhebrew:1523,gereshmuqdamhebrew:1437,germandbls:223,gershayimaccenthebrew:1438,gershayimhebrew:1524,getamark:12307,ghabengali:2456,ghadarmenian:1394,ghadeva:2328,ghagujarati:2712,ghagurmukhi:2584,ghainarabic:1594,ghainfinalarabic:65230,ghaininitialarabic:65231,ghainmedialarabic:65232,ghemiddlehookcyrillic:1173,ghestrokecyrillic:1171,gheupturncyrillic:1169,ghhadeva:2394,ghhagurmukhi:2650,ghook:608,ghzsquare:13203,
+gihiragana:12366,gikatakana:12462,gimarmenian:1379,gimel:1490,gimeldagesh:64306,gimeldageshhebrew:64306,gimelhebrew:1490,gjecyrillic:1107,glottalinvertedstroke:446,glottalstop:660,glottalstopinverted:662,glottalstopmod:704,glottalstopreversed:661,glottalstopreversedmod:705,glottalstopreversedsuperior:740,glottalstopstroke:673,glottalstopstrokereversed:674,gmacron:7713,gmonospace:65351,gohiragana:12372,gokatakana:12468,gparen:9378,gpasquare:13228,gradient:8711,grave:96,gravebelowcmb:790,gravecmb:768,
+gravecomb:768,gravedeva:2387,gravelowmod:718,gravemonospace:65344,gravetonecmb:832,greater:62,greaterequal:8805,greaterequalorless:8923,greatermonospace:65310,greaterorequivalent:8819,greaterorless:8823,greateroverequal:8807,greatersmall:65125,gscript:609,gstroke:485,guhiragana:12368,guillemotleft:171,guillemotright:187,guilsinglleft:8249,guilsinglright:8250,gukatakana:12464,guramusquare:13080,gysquare:13257,h:104,haabkhasiancyrillic:1193,haaltonearabic:1729,habengali:2489,hadescendercyrillic:1203,
+hadeva:2361,hagujarati:2745,hagurmukhi:2617,haharabic:1581,hahfinalarabic:65186,hahinitialarabic:65187,hahiragana:12399,hahmedialarabic:65188,haitusquare:13098,hakatakana:12495,hakatakanahalfwidth:65418,halantgurmukhi:2637,hamzaarabic:1569,hamzalowarabic:1569,hangulfiller:12644,hardsigncyrillic:1098,harpoonleftbarbup:8636,harpoonrightbarbup:8640,hasquare:13258,hatafpatah:1458,hatafpatah16:1458,hatafpatah23:1458,hatafpatah2f:1458,hatafpatahhebrew:1458,hatafpatahnarrowhebrew:1458,hatafpatahquarterhebrew:1458,
+hatafpatahwidehebrew:1458,hatafqamats:1459,hatafqamats1b:1459,hatafqamats28:1459,hatafqamats34:1459,hatafqamatshebrew:1459,hatafqamatsnarrowhebrew:1459,hatafqamatsquarterhebrew:1459,hatafqamatswidehebrew:1459,hatafsegol:1457,hatafsegol17:1457,hatafsegol24:1457,hatafsegol30:1457,hatafsegolhebrew:1457,hatafsegolnarrowhebrew:1457,hatafsegolquarterhebrew:1457,hatafsegolwidehebrew:1457,hbar:295,hbopomofo:12559,hbrevebelow:7723,hcedilla:7721,hcircle:9431,hcircumflex:293,hdieresis:7719,hdotaccent:7715,hdotbelow:7717,
+he:1492,heart:9829,heartsuitblack:9829,heartsuitwhite:9825,hedagesh:64308,hedageshhebrew:64308,hehaltonearabic:1729,heharabic:1607,hehebrew:1492,hehfinalaltonearabic:64423,hehfinalalttwoarabic:65258,hehfinalarabic:65258,hehhamzaabovefinalarabic:64421,hehhamzaaboveisolatedarabic:64420,hehinitialaltonearabic:64424,hehinitialarabic:65259,hehiragana:12408,hehmedialaltonearabic:64425,hehmedialarabic:65260,heiseierasquare:13179,hekatakana:12504,hekatakanahalfwidth:65421,hekutaarusquare:13110,henghook:615,
+herutusquare:13113,het:1495,hethebrew:1495,hhook:614,hhooksuperior:689,hieuhacirclekorean:12923,hieuhaparenkorean:12827,hieuhcirclekorean:12909,hieuhkorean:12622,hieuhparenkorean:12813,hihiragana:12402,hikatakana:12498,hikatakanahalfwidth:65419,hiriq:1460,hiriq14:1460,hiriq21:1460,hiriq2d:1460,hiriqhebrew:1460,hiriqnarrowhebrew:1460,hiriqquarterhebrew:1460,hiriqwidehebrew:1460,hlinebelow:7830,hmonospace:65352,hoarmenian:1392,hohipthai:3627,hohiragana:12411,hokatakana:12507,hokatakanahalfwidth:65422,
+holam:1465,holam19:1465,holam26:1465,holam32:1465,holamhebrew:1465,holamnarrowhebrew:1465,holamquarterhebrew:1465,holamwidehebrew:1465,honokhukthai:3630,hookabovecomb:777,hookcmb:777,hookpalatalizedbelowcmb:801,hookretroflexbelowcmb:802,hoonsquare:13122,horicoptic:1001,horizontalbar:8213,horncmb:795,hotsprings:9832,house:8962,hparen:9379,hsuperior:688,hturned:613,huhiragana:12405,huiitosquare:13107,hukatakana:12501,hukatakanahalfwidth:65420,hungarumlaut:733,hungarumlautcmb:779,hv:405,hyphen:45,hypheninferior:63205,
+hyphenmonospace:65293,hyphensmall:65123,hyphensuperior:63206,hyphentwo:8208,i:105,iacute:237,iacyrillic:1103,ibengali:2439,ibopomofo:12583,ibreve:301,icaron:464,icircle:9432,icircumflex:238,icyrillic:1110,idblgrave:521,ideographearthcircle:12943,ideographfirecircle:12939,ideographicallianceparen:12863,ideographiccallparen:12858,ideographiccentrecircle:12965,ideographicclose:12294,ideographiccomma:12289,ideographiccommaleft:65380,ideographiccongratulationparen:12855,ideographiccorrectcircle:12963,
+ideographicearthparen:12847,ideographicenterpriseparen:12861,ideographicexcellentcircle:12957,ideographicfestivalparen:12864,ideographicfinancialcircle:12950,ideographicfinancialparen:12854,ideographicfireparen:12843,ideographichaveparen:12850,ideographichighcircle:12964,ideographiciterationmark:12293,ideographiclaborcircle:12952,ideographiclaborparen:12856,ideographicleftcircle:12967,ideographiclowcircle:12966,ideographicmedicinecircle:12969,ideographicmetalparen:12846,ideographicmoonparen:12842,
+ideographicnameparen:12852,ideographicperiod:12290,ideographicprintcircle:12958,ideographicreachparen:12867,ideographicrepresentparen:12857,ideographicresourceparen:12862,ideographicrightcircle:12968,ideographicsecretcircle:12953,ideographicselfparen:12866,ideographicsocietyparen:12851,ideographicspace:12288,ideographicspecialparen:12853,ideographicstockparen:12849,ideographicstudyparen:12859,ideographicsunparen:12848,ideographicsuperviseparen:12860,ideographicwaterparen:12844,ideographicwoodparen:12845,
+ideographiczero:12295,ideographmetalcircle:12942,ideographmooncircle:12938,ideographnamecircle:12948,ideographsuncircle:12944,ideographwatercircle:12940,ideographwoodcircle:12941,ideva:2311,idieresis:239,idieresisacute:7727,idieresiscyrillic:1253,idotbelow:7883,iebrevecyrillic:1239,iecyrillic:1077,ieungacirclekorean:12917,ieungaparenkorean:12821,ieungcirclekorean:12903,ieungkorean:12615,ieungparenkorean:12807,igrave:236,igujarati:2695,igurmukhi:2567,ihiragana:12356,ihookabove:7881,iibengali:2440,
+iicyrillic:1080,iideva:2312,iigujarati:2696,iigurmukhi:2568,iimatragurmukhi:2624,iinvertedbreve:523,iishortcyrillic:1081,iivowelsignbengali:2496,iivowelsigndeva:2368,iivowelsigngujarati:2752,ij:307,ikatakana:12452,ikatakanahalfwidth:65394,ikorean:12643,ilde:732,iluyhebrew:1452,imacron:299,imacroncyrillic:1251,imageorapproximatelyequal:8787,imatragurmukhi:2623,imonospace:65353,increment:8710,infinity:8734,iniarmenian:1387,integral:8747,integralbottom:8993,integralbt:8993,integralex:63733,integraltop:8992,
+integraltp:8992,intersection:8745,intisquare:13061,invbullet:9688,invcircle:9689,invsmileface:9787,iocyrillic:1105,iogonek:303,iota:953,iotadieresis:970,iotadieresistonos:912,iotalatin:617,iotatonos:943,iparen:9380,irigurmukhi:2674,ismallhiragana:12355,ismallkatakana:12451,ismallkatakanahalfwidth:65384,issharbengali:2554,istroke:616,isuperior:63213,iterationhiragana:12445,iterationkatakana:12541,itilde:297,itildebelow:7725,iubopomofo:12585,iucyrillic:1102,ivowelsignbengali:2495,ivowelsigndeva:2367,
+ivowelsigngujarati:2751,izhitsacyrillic:1141,izhitsadblgravecyrillic:1143,j:106,jaarmenian:1393,jabengali:2460,jadeva:2332,jagujarati:2716,jagurmukhi:2588,jbopomofo:12560,jcaron:496,jcircle:9433,jcircumflex:309,jcrossedtail:669,jdotlessstroke:607,jecyrillic:1112,jeemarabic:1580,jeemfinalarabic:65182,jeeminitialarabic:65183,jeemmedialarabic:65184,jeharabic:1688,jehfinalarabic:64395,jhabengali:2461,jhadeva:2333,jhagujarati:2717,jhagurmukhi:2589,jheharmenian:1403,jis:12292,jmonospace:65354,jparen:9381,
+jsuperior:690,k:107,kabashkircyrillic:1185,kabengali:2453,kacute:7729,kacyrillic:1082,kadescendercyrillic:1179,kadeva:2325,kaf:1499,kafarabic:1603,kafdagesh:64315,kafdageshhebrew:64315,kaffinalarabic:65242,kafhebrew:1499,kafinitialarabic:65243,kafmedialarabic:65244,kafrafehebrew:64333,kagujarati:2709,kagurmukhi:2581,kahiragana:12363,kahookcyrillic:1220,kakatakana:12459,kakatakanahalfwidth:65398,kappa:954,kappasymbolgreek:1008,kapyeounmieumkorean:12657,kapyeounphieuphkorean:12676,kapyeounpieupkorean:12664,
+kapyeounssangpieupkorean:12665,karoriisquare:13069,kashidaautoarabic:1600,kashidaautonosidebearingarabic:1600,kasmallkatakana:12533,kasquare:13188,kasraarabic:1616,kasratanarabic:1613,kastrokecyrillic:1183,katahiraprolongmarkhalfwidth:65392,kaverticalstrokecyrillic:1181,kbopomofo:12558,kcalsquare:13193,kcaron:489,kcedilla:311,kcircle:9434,kcommaaccent:311,kdotbelow:7731,keharmenian:1412,kehiragana:12369,kekatakana:12465,kekatakanahalfwidth:65401,kenarmenian:1391,kesmallkatakana:12534,kgreenlandic:312,
+khabengali:2454,khacyrillic:1093,khadeva:2326,khagujarati:2710,khagurmukhi:2582,khaharabic:1582,khahfinalarabic:65190,khahinitialarabic:65191,khahmedialarabic:65192,kheicoptic:999,khhadeva:2393,khhagurmukhi:2649,khieukhacirclekorean:12920,khieukhaparenkorean:12824,khieukhcirclekorean:12906,khieukhkorean:12619,khieukhparenkorean:12810,khokhaithai:3586,khokhonthai:3589,khokhuatthai:3587,khokhwaithai:3588,khomutthai:3675,khook:409,khorakhangthai:3590,khzsquare:13201,kihiragana:12365,kikatakana:12461,
+kikatakanahalfwidth:65399,kiroguramusquare:13077,kiromeetorusquare:13078,kirosquare:13076,kiyeokacirclekorean:12910,kiyeokaparenkorean:12814,kiyeokcirclekorean:12896,kiyeokkorean:12593,kiyeokparenkorean:12800,kiyeoksioskorean:12595,kjecyrillic:1116,klinebelow:7733,klsquare:13208,kmcubedsquare:13222,kmonospace:65355,kmsquaredsquare:13218,kohiragana:12371,kohmsquare:13248,kokaithai:3585,kokatakana:12467,kokatakanahalfwidth:65402,kooposquare:13086,koppacyrillic:1153,koreanstandardsymbol:12927,koroniscmb:835,
+kparen:9382,kpasquare:13226,ksicyrillic:1135,ktsquare:13263,kturned:670,kuhiragana:12367,kukatakana:12463,kukatakanahalfwidth:65400,kvsquare:13240,kwsquare:13246,l:108,labengali:2482,lacute:314,ladeva:2354,lagujarati:2738,lagurmukhi:2610,lakkhangyaothai:3653,lamaleffinalarabic:65276,lamalefhamzaabovefinalarabic:65272,lamalefhamzaaboveisolatedarabic:65271,lamalefhamzabelowfinalarabic:65274,lamalefhamzabelowisolatedarabic:65273,lamalefisolatedarabic:65275,lamalefmaddaabovefinalarabic:65270,lamalefmaddaaboveisolatedarabic:65269,
+lamarabic:1604,lambda:955,lambdastroke:411,lamed:1500,lameddagesh:64316,lameddageshhebrew:64316,lamedhebrew:1500,lamfinalarabic:65246,lamhahinitialarabic:64714,laminitialarabic:65247,lamjeeminitialarabic:64713,lamkhahinitialarabic:64715,lamlamhehisolatedarabic:65010,lammedialarabic:65248,lammeemhahinitialarabic:64904,lammeeminitialarabic:64716,largecircle:9711,lbar:410,lbelt:620,lbopomofo:12556,lcaron:318,lcedilla:316,lcircle:9435,lcircumflexbelow:7741,lcommaaccent:316,ldot:320,ldotaccent:320,ldotbelow:7735,
+ldotbelowmacron:7737,leftangleabovecmb:794,lefttackbelowcmb:792,less:60,lessequal:8804,lessequalorgreater:8922,lessmonospace:65308,lessorequivalent:8818,lessorgreater:8822,lessoverequal:8806,lesssmall:65124,lezh:622,lfblock:9612,lhookretroflex:621,lira:8356,liwnarmenian:1388,lj:457,ljecyrillic:1113,ll:63168,lladeva:2355,llagujarati:2739,llinebelow:7739,llladeva:2356,llvocalicbengali:2529,llvocalicdeva:2401,llvocalicvowelsignbengali:2531,llvocalicvowelsigndeva:2403,lmiddletilde:619,lmonospace:65356,
+lmsquare:13264,lochulathai:3628,logicaland:8743,logicalnot:172,logicalnotreversed:8976,logicalor:8744,lolingthai:3621,longs:383,lowlinecenterline:65102,lowlinecmb:818,lowlinedashed:65101,lozenge:9674,lparen:9383,lslash:322,lsquare:8467,lsuperior:63214,ltshade:9617,luthai:3622,lvocalicbengali:2444,lvocalicdeva:2316,lvocalicvowelsignbengali:2530,lvocalicvowelsigndeva:2402,lxsquare:13267,m:109,mabengali:2478,macron:175,macronbelowcmb:817,macroncmb:772,macronlowmod:717,macronmonospace:65507,macute:7743,
+madeva:2350,magujarati:2734,magurmukhi:2606,mahapakhhebrew:1444,mahapakhlefthebrew:1444,mahiragana:12414,maichattawalowleftthai:63637,maichattawalowrightthai:63636,maichattawathai:3659,maichattawaupperleftthai:63635,maieklowleftthai:63628,maieklowrightthai:63627,maiekthai:3656,maiekupperleftthai:63626,maihanakatleftthai:63620,maihanakatthai:3633,maitaikhuleftthai:63625,maitaikhuthai:3655,maitholowleftthai:63631,maitholowrightthai:63630,maithothai:3657,maithoupperleftthai:63629,maitrilowleftthai:63634,
+maitrilowrightthai:63633,maitrithai:3658,maitriupperleftthai:63632,maiyamokthai:3654,makatakana:12510,makatakanahalfwidth:65423,male:9794,mansyonsquare:13127,maqafhebrew:1470,mars:9794,masoracirclehebrew:1455,masquare:13187,mbopomofo:12551,mbsquare:13268,mcircle:9436,mcubedsquare:13221,mdotaccent:7745,mdotbelow:7747,meemarabic:1605,meemfinalarabic:65250,meeminitialarabic:65251,meemmedialarabic:65252,meemmeeminitialarabic:64721,meemmeemisolatedarabic:64584,meetorusquare:13133,mehiragana:12417,meizierasquare:13182,
+mekatakana:12513,mekatakanahalfwidth:65426,mem:1502,memdagesh:64318,memdageshhebrew:64318,memhebrew:1502,menarmenian:1396,merkhahebrew:1445,merkhakefulahebrew:1446,merkhakefulalefthebrew:1446,merkhalefthebrew:1445,mhook:625,mhzsquare:13202,middledotkatakanahalfwidth:65381,middot:183,mieumacirclekorean:12914,mieumaparenkorean:12818,mieumcirclekorean:12900,mieumkorean:12609,mieumpansioskorean:12656,mieumparenkorean:12804,mieumpieupkorean:12654,mieumsioskorean:12655,mihiragana:12415,mikatakana:12511,
+mikatakanahalfwidth:65424,minus:8722,minusbelowcmb:800,minuscircle:8854,minusmod:727,minusplus:8723,minute:8242,miribaarusquare:13130,mirisquare:13129,mlonglegturned:624,mlsquare:13206,mmcubedsquare:13219,mmonospace:65357,mmsquaredsquare:13215,mohiragana:12418,mohmsquare:13249,mokatakana:12514,mokatakanahalfwidth:65427,molsquare:13270,momathai:3617,moverssquare:13223,moverssquaredsquare:13224,mparen:9384,mpasquare:13227,mssquare:13235,msuperior:63215,mturned:623,mu:181,mu1:181,muasquare:13186,muchgreater:8811,
+muchless:8810,mufsquare:13196,mugreek:956,mugsquare:13197,muhiragana:12416,mukatakana:12512,mukatakanahalfwidth:65425,mulsquare:13205,multiply:215,mumsquare:13211,munahhebrew:1443,munahlefthebrew:1443,musicalnote:9834,musicalnotedbl:9835,musicflatsign:9837,musicsharpsign:9839,mussquare:13234,muvsquare:13238,muwsquare:13244,mvmegasquare:13241,mvsquare:13239,mwmegasquare:13247,mwsquare:13245,n:110,nabengali:2472,nabla:8711,nacute:324,nadeva:2344,nagujarati:2728,nagurmukhi:2600,nahiragana:12394,nakatakana:12490,
+nakatakanahalfwidth:65413,napostrophe:329,nasquare:13185,nbopomofo:12555,nbspace:160,ncaron:328,ncedilla:326,ncircle:9437,ncircumflexbelow:7755,ncommaaccent:326,ndotaccent:7749,ndotbelow:7751,nehiragana:12397,nekatakana:12493,nekatakanahalfwidth:65416,newsheqelsign:8362,nfsquare:13195,ngabengali:2457,ngadeva:2329,ngagujarati:2713,ngagurmukhi:2585,ngonguthai:3591,nhiragana:12435,nhookleft:626,nhookretroflex:627,nieunacirclekorean:12911,nieunaparenkorean:12815,nieuncieuckorean:12597,nieuncirclekorean:12897,
+nieunhieuhkorean:12598,nieunkorean:12596,nieunpansioskorean:12648,nieunparenkorean:12801,nieunsioskorean:12647,nieuntikeutkorean:12646,nihiragana:12395,nikatakana:12491,nikatakanahalfwidth:65414,nikhahitleftthai:63641,nikhahitthai:3661,nine:57,ninearabic:1641,ninebengali:2543,ninecircle:9320,ninecircleinversesansserif:10130,ninedeva:2415,ninegujarati:2799,ninegurmukhi:2671,ninehackarabic:1641,ninehangzhou:12329,nineideographicparen:12840,nineinferior:8329,ninemonospace:65305,nineoldstyle:63289,nineparen:9340,
+nineperiod:9360,ninepersian:1785,nineroman:8568,ninesuperior:8313,nineteencircle:9330,nineteenparen:9350,nineteenperiod:9370,ninethai:3673,nj:460,njecyrillic:1114,nkatakana:12531,nkatakanahalfwidth:65437,nlegrightlong:414,nlinebelow:7753,nmonospace:65358,nmsquare:13210,nnabengali:2467,nnadeva:2339,nnagujarati:2723,nnagurmukhi:2595,nnnadeva:2345,nohiragana:12398,nokatakana:12494,nokatakanahalfwidth:65417,nonbreakingspace:160,nonenthai:3603,nonuthai:3609,noonarabic:1606,noonfinalarabic:65254,noonghunnaarabic:1722,
+noonghunnafinalarabic:64415,nooninitialarabic:65255,noonjeeminitialarabic:64722,noonjeemisolatedarabic:64587,noonmedialarabic:65256,noonmeeminitialarabic:64725,noonmeemisolatedarabic:64590,noonnoonfinalarabic:64653,notcontains:8716,notelement:8713,notelementof:8713,notequal:8800,notgreater:8815,notgreaternorequal:8817,notgreaternorless:8825,notidentical:8802,notless:8814,notlessnorequal:8816,notparallel:8742,notprecedes:8832,notsubset:8836,notsucceeds:8833,notsuperset:8837,nowarmenian:1398,nparen:9385,
+nssquare:13233,nsuperior:8319,ntilde:241,nu:957,nuhiragana:12396,nukatakana:12492,nukatakanahalfwidth:65415,nuktabengali:2492,nuktadeva:2364,nuktagujarati:2748,nuktagurmukhi:2620,numbersign:35,numbersignmonospace:65283,numbersignsmall:65119,numeralsigngreek:884,numeralsignlowergreek:885,numero:8470,nun:1504,nundagesh:64320,nundageshhebrew:64320,nunhebrew:1504,nvsquare:13237,nwsquare:13243,nyabengali:2462,nyadeva:2334,nyagujarati:2718,nyagurmukhi:2590,o:111,oacute:243,oangthai:3629,obarred:629,obarredcyrillic:1257,
+obarreddieresiscyrillic:1259,obengali:2451,obopomofo:12571,obreve:335,ocandradeva:2321,ocandragujarati:2705,ocandravowelsigndeva:2377,ocandravowelsigngujarati:2761,ocaron:466,ocircle:9438,ocircumflex:244,ocircumflexacute:7889,ocircumflexdotbelow:7897,ocircumflexgrave:7891,ocircumflexhookabove:7893,ocircumflextilde:7895,ocyrillic:1086,odblacute:337,odblgrave:525,odeva:2323,odieresis:246,odieresiscyrillic:1255,odotbelow:7885,oe:339,oekorean:12634,ogonek:731,ogonekcmb:808,ograve:242,ogujarati:2707,oharmenian:1413,
+ohiragana:12362,ohookabove:7887,ohorn:417,ohornacute:7899,ohorndotbelow:7907,ohorngrave:7901,ohornhookabove:7903,ohorntilde:7905,ohungarumlaut:337,oi:419,oinvertedbreve:527,okatakana:12458,okatakanahalfwidth:65397,okorean:12631,olehebrew:1451,omacron:333,omacronacute:7763,omacrongrave:7761,omdeva:2384,omega:969,omega1:982,omegacyrillic:1121,omegalatinclosed:631,omegaroundcyrillic:1147,omegatitlocyrillic:1149,omegatonos:974,omgujarati:2768,omicron:959,omicrontonos:972,omonospace:65359,one:49,onearabic:1633,
+onebengali:2535,onecircle:9312,onecircleinversesansserif:10122,onedeva:2407,onedotenleader:8228,oneeighth:8539,onefitted:63196,onegujarati:2791,onegurmukhi:2663,onehackarabic:1633,onehalf:189,onehangzhou:12321,oneideographicparen:12832,oneinferior:8321,onemonospace:65297,onenumeratorbengali:2548,oneoldstyle:63281,oneparen:9332,oneperiod:9352,onepersian:1777,onequarter:188,oneroman:8560,onesuperior:185,onethai:3665,onethird:8531,oogonek:491,oogonekmacron:493,oogurmukhi:2579,oomatragurmukhi:2635,oopen:596,
+oparen:9386,openbullet:9702,option:8997,ordfeminine:170,ordmasculine:186,orthogonal:8735,oshortdeva:2322,oshortvowelsigndeva:2378,oslash:248,oslashacute:511,osmallhiragana:12361,osmallkatakana:12457,osmallkatakanahalfwidth:65387,ostrokeacute:511,osuperior:63216,otcyrillic:1151,otilde:245,otildeacute:7757,otildedieresis:7759,oubopomofo:12577,overline:8254,overlinecenterline:65098,overlinecmb:773,overlinedashed:65097,overlinedblwavy:65100,overlinewavy:65099,overscore:175,ovowelsignbengali:2507,ovowelsigndeva:2379,
+ovowelsigngujarati:2763,p:112,paampssquare:13184,paasentosquare:13099,pabengali:2474,pacute:7765,padeva:2346,pagedown:8671,pageup:8670,pagujarati:2730,pagurmukhi:2602,pahiragana:12401,paiyannoithai:3631,pakatakana:12497,palatalizationcyrilliccmb:1156,palochkacyrillic:1216,pansioskorean:12671,paragraph:182,parallel:8741,parenleft:40,parenleftaltonearabic:64830,parenleftbt:63725,parenleftex:63724,parenleftinferior:8333,parenleftmonospace:65288,parenleftsmall:65113,parenleftsuperior:8317,parenlefttp:63723,
+parenleftvertical:65077,parenright:41,parenrightaltonearabic:64831,parenrightbt:63736,parenrightex:63735,parenrightinferior:8334,parenrightmonospace:65289,parenrightsmall:65114,parenrightsuperior:8318,parenrighttp:63734,parenrightvertical:65078,partialdiff:8706,paseqhebrew:1472,pashtahebrew:1433,pasquare:13225,patah:1463,patah11:1463,patah1d:1463,patah2a:1463,patahhebrew:1463,patahnarrowhebrew:1463,patahquarterhebrew:1463,patahwidehebrew:1463,pazerhebrew:1441,pbopomofo:12550,pcircle:9439,pdotaccent:7767,
+pe:1508,pecyrillic:1087,pedagesh:64324,pedageshhebrew:64324,peezisquare:13115,pefinaldageshhebrew:64323,peharabic:1662,peharmenian:1402,pehebrew:1508,pehfinalarabic:64343,pehinitialarabic:64344,pehiragana:12410,pehmedialarabic:64345,pekatakana:12506,pemiddlehookcyrillic:1191,perafehebrew:64334,percent:37,percentarabic:1642,percentmonospace:65285,percentsmall:65130,period:46,periodarmenian:1417,periodcentered:183,periodhalfwidth:65377,periodinferior:63207,periodmonospace:65294,periodsmall:65106,periodsuperior:63208,
+perispomenigreekcmb:834,perpendicular:8869,perthousand:8240,peseta:8359,pfsquare:13194,phabengali:2475,phadeva:2347,phagujarati:2731,phagurmukhi:2603,phi:966,phi1:981,phieuphacirclekorean:12922,phieuphaparenkorean:12826,phieuphcirclekorean:12908,phieuphkorean:12621,phieuphparenkorean:12812,philatin:632,phinthuthai:3642,phisymbolgreek:981,phook:421,phophanthai:3614,phophungthai:3612,phosamphaothai:3616,pi:960,pieupacirclekorean:12915,pieupaparenkorean:12819,pieupcieuckorean:12662,pieupcirclekorean:12901,
+pieupkiyeokkorean:12658,pieupkorean:12610,pieupparenkorean:12805,pieupsioskiyeokkorean:12660,pieupsioskorean:12612,pieupsiostikeutkorean:12661,pieupthieuthkorean:12663,pieuptikeutkorean:12659,pihiragana:12404,pikatakana:12500,pisymbolgreek:982,piwrarmenian:1411,plus:43,plusbelowcmb:799,pluscircle:8853,plusminus:177,plusmod:726,plusmonospace:65291,plussmall:65122,plussuperior:8314,pmonospace:65360,pmsquare:13272,pohiragana:12413,pointingindexdownwhite:9759,pointingindexleftwhite:9756,pointingindexrightwhite:9758,
+pointingindexupwhite:9757,pokatakana:12509,poplathai:3611,postalmark:12306,postalmarkface:12320,pparen:9387,precedes:8826,prescription:8478,primemod:697,primereversed:8245,product:8719,projective:8965,prolongedkana:12540,propellor:8984,propersubset:8834,propersuperset:8835,proportion:8759,proportional:8733,psi:968,psicyrillic:1137,psilipneumatacyrilliccmb:1158,pssquare:13232,puhiragana:12407,pukatakana:12503,pvsquare:13236,pwsquare:13242,q:113,qadeva:2392,qadmahebrew:1448,qafarabic:1602,qaffinalarabic:65238,
+qafinitialarabic:65239,qafmedialarabic:65240,qamats:1464,qamats10:1464,qamats1a:1464,qamats1c:1464,qamats27:1464,qamats29:1464,qamats33:1464,qamatsde:1464,qamatshebrew:1464,qamatsnarrowhebrew:1464,qamatsqatanhebrew:1464,qamatsqatannarrowhebrew:1464,qamatsqatanquarterhebrew:1464,qamatsqatanwidehebrew:1464,qamatsquarterhebrew:1464,qamatswidehebrew:1464,qarneyparahebrew:1439,qbopomofo:12561,qcircle:9440,qhook:672,qmonospace:65361,qof:1511,qofdagesh:64327,qofdageshhebrew:64327,qofhebrew:1511,qparen:9388,
+quarternote:9833,qubuts:1467,qubuts18:1467,qubuts25:1467,qubuts31:1467,qubutshebrew:1467,qubutsnarrowhebrew:1467,qubutsquarterhebrew:1467,qubutswidehebrew:1467,question:63,questionarabic:1567,questionarmenian:1374,questiondown:191,questiondownsmall:63423,questiongreek:894,questionmonospace:65311,questionsmall:63295,quotedbl:34,quotedblbase:8222,quotedblleft:8220,quotedblmonospace:65282,quotedblprime:12318,quotedblprimereversed:12317,quotedblright:8221,quoteleft:8216,quoteleftreversed:8219,quotereversed:8219,
+quoteright:8217,quoterightn:329,quotesinglbase:8218,quotesingle:39,quotesinglemonospace:65287,r:114,raarmenian:1404,rabengali:2480,racute:341,radeva:2352,radical:8730,radicalex:63717,radoverssquare:13230,radoverssquaredsquare:13231,radsquare:13229,rafe:1471,rafehebrew:1471,ragujarati:2736,ragurmukhi:2608,rahiragana:12425,rakatakana:12521,rakatakanahalfwidth:65431,ralowerdiagonalbengali:2545,ramiddlediagonalbengali:2544,ramshorn:612,ratio:8758,rbopomofo:12566,rcaron:345,rcedilla:343,rcircle:9441,rcommaaccent:343,
+rdblgrave:529,rdotaccent:7769,rdotbelow:7771,rdotbelowmacron:7773,referencemark:8251,reflexsubset:8838,reflexsuperset:8839,registered:174,registersans:63720,registerserif:63194,reharabic:1585,reharmenian:1408,rehfinalarabic:65198,rehiragana:12428,rekatakana:12524,rekatakanahalfwidth:65434,resh:1512,reshdageshhebrew:64328,reshhebrew:1512,reversedtilde:8765,reviahebrew:1431,reviamugrashhebrew:1431,revlogicalnot:8976,rfishhook:638,rfishhookreversed:639,rhabengali:2525,rhadeva:2397,rho:961,rhook:637,
+rhookturned:635,rhookturnedsuperior:693,rhosymbolgreek:1009,rhotichookmod:734,rieulacirclekorean:12913,rieulaparenkorean:12817,rieulcirclekorean:12899,rieulhieuhkorean:12608,rieulkiyeokkorean:12602,rieulkiyeoksioskorean:12649,rieulkorean:12601,rieulmieumkorean:12603,rieulpansioskorean:12652,rieulparenkorean:12803,rieulphieuphkorean:12607,rieulpieupkorean:12604,rieulpieupsioskorean:12651,rieulsioskorean:12605,rieulthieuthkorean:12606,rieultikeutkorean:12650,rieulyeorinhieuhkorean:12653,rightangle:8735,
+righttackbelowcmb:793,righttriangle:8895,rihiragana:12426,rikatakana:12522,rikatakanahalfwidth:65432,ring:730,ringbelowcmb:805,ringcmb:778,ringhalfleft:703,ringhalfleftarmenian:1369,ringhalfleftbelowcmb:796,ringhalfleftcentered:723,ringhalfright:702,ringhalfrightbelowcmb:825,ringhalfrightcentered:722,rinvertedbreve:531,rittorusquare:13137,rlinebelow:7775,rlongleg:636,rlonglegturned:634,rmonospace:65362,rohiragana:12429,rokatakana:12525,rokatakanahalfwidth:65435,roruathai:3619,rparen:9389,rrabengali:2524,
+rradeva:2353,rragurmukhi:2652,rreharabic:1681,rrehfinalarabic:64397,rrvocalicbengali:2528,rrvocalicdeva:2400,rrvocalicgujarati:2784,rrvocalicvowelsignbengali:2500,rrvocalicvowelsigndeva:2372,rrvocalicvowelsigngujarati:2756,rsuperior:63217,rtblock:9616,rturned:633,rturnedsuperior:692,ruhiragana:12427,rukatakana:12523,rukatakanahalfwidth:65433,rupeemarkbengali:2546,rupeesignbengali:2547,rupiah:63197,ruthai:3620,rvocalicbengali:2443,rvocalicdeva:2315,rvocalicgujarati:2699,rvocalicvowelsignbengali:2499,
+rvocalicvowelsigndeva:2371,rvocalicvowelsigngujarati:2755,s:115,sabengali:2488,sacute:347,sacutedotaccent:7781,sadarabic:1589,sadeva:2360,sadfinalarabic:65210,sadinitialarabic:65211,sadmedialarabic:65212,sagujarati:2744,sagurmukhi:2616,sahiragana:12373,sakatakana:12469,sakatakanahalfwidth:65403,sallallahoualayhewasallamarabic:65018,samekh:1505,samekhdagesh:64321,samekhdageshhebrew:64321,samekhhebrew:1505,saraaathai:3634,saraaethai:3649,saraaimaimalaithai:3652,saraaimaimuanthai:3651,saraamthai:3635,
+saraathai:3632,saraethai:3648,saraiileftthai:63622,saraiithai:3637,saraileftthai:63621,saraithai:3636,saraothai:3650,saraueeleftthai:63624,saraueethai:3639,saraueleftthai:63623,sarauethai:3638,sarauthai:3640,sarauuthai:3641,sbopomofo:12569,scaron:353,scarondotaccent:7783,scedilla:351,schwa:601,schwacyrillic:1241,schwadieresiscyrillic:1243,schwahook:602,scircle:9442,scircumflex:349,scommaaccent:537,sdotaccent:7777,sdotbelow:7779,sdotbelowdotaccent:7785,seagullbelowcmb:828,second:8243,secondtonechinese:714,
+section:167,seenarabic:1587,seenfinalarabic:65202,seeninitialarabic:65203,seenmedialarabic:65204,segol:1462,segol13:1462,segol1f:1462,segol2c:1462,segolhebrew:1462,segolnarrowhebrew:1462,segolquarterhebrew:1462,segoltahebrew:1426,segolwidehebrew:1462,seharmenian:1405,sehiragana:12379,sekatakana:12475,sekatakanahalfwidth:65406,semicolon:59,semicolonarabic:1563,semicolonmonospace:65307,semicolonsmall:65108,semivoicedmarkkana:12444,semivoicedmarkkanahalfwidth:65439,sentisquare:13090,sentosquare:13091,
+seven:55,sevenarabic:1639,sevenbengali:2541,sevencircle:9318,sevencircleinversesansserif:10128,sevendeva:2413,seveneighths:8542,sevengujarati:2797,sevengurmukhi:2669,sevenhackarabic:1639,sevenhangzhou:12327,sevenideographicparen:12838,seveninferior:8327,sevenmonospace:65303,sevenoldstyle:63287,sevenparen:9338,sevenperiod:9358,sevenpersian:1783,sevenroman:8566,sevensuperior:8311,seventeencircle:9328,seventeenparen:9348,seventeenperiod:9368,seventhai:3671,sfthyphen:173,shaarmenian:1399,shabengali:2486,
+shacyrillic:1096,shaddaarabic:1617,shaddadammaarabic:64609,shaddadammatanarabic:64606,shaddafathaarabic:64608,shaddakasraarabic:64610,shaddakasratanarabic:64607,shade:9618,shadedark:9619,shadelight:9617,shademedium:9618,shadeva:2358,shagujarati:2742,shagurmukhi:2614,shalshelethebrew:1427,shbopomofo:12565,shchacyrillic:1097,sheenarabic:1588,sheenfinalarabic:65206,sheeninitialarabic:65207,sheenmedialarabic:65208,sheicoptic:995,sheqel:8362,sheqelhebrew:8362,sheva:1456,sheva115:1456,sheva15:1456,sheva22:1456,
+sheva2e:1456,shevahebrew:1456,shevanarrowhebrew:1456,shevaquarterhebrew:1456,shevawidehebrew:1456,shhacyrillic:1211,shimacoptic:1005,shin:1513,shindagesh:64329,shindageshhebrew:64329,shindageshshindot:64300,shindageshshindothebrew:64300,shindageshsindot:64301,shindageshsindothebrew:64301,shindothebrew:1473,shinhebrew:1513,shinshindot:64298,shinshindothebrew:64298,shinsindot:64299,shinsindothebrew:64299,shook:642,sigma:963,sigma1:962,sigmafinal:962,sigmalunatesymbolgreek:1010,sihiragana:12375,sikatakana:12471,
+sikatakanahalfwidth:65404,siluqhebrew:1469,siluqlefthebrew:1469,similar:8764,sindothebrew:1474,siosacirclekorean:12916,siosaparenkorean:12820,sioscieuckorean:12670,sioscirclekorean:12902,sioskiyeokkorean:12666,sioskorean:12613,siosnieunkorean:12667,siosparenkorean:12806,siospieupkorean:12669,siostikeutkorean:12668,six:54,sixarabic:1638,sixbengali:2540,sixcircle:9317,sixcircleinversesansserif:10127,sixdeva:2412,sixgujarati:2796,sixgurmukhi:2668,sixhackarabic:1638,sixhangzhou:12326,sixideographicparen:12837,
+sixinferior:8326,sixmonospace:65302,sixoldstyle:63286,sixparen:9337,sixperiod:9357,sixpersian:1782,sixroman:8565,sixsuperior:8310,sixteencircle:9327,sixteencurrencydenominatorbengali:2553,sixteenparen:9347,sixteenperiod:9367,sixthai:3670,slash:47,slashmonospace:65295,slong:383,slongdotaccent:7835,smileface:9786,smonospace:65363,sofpasuqhebrew:1475,softhyphen:173,softsigncyrillic:1100,sohiragana:12381,sokatakana:12477,sokatakanahalfwidth:65407,soliduslongoverlaycmb:824,solidusshortoverlaycmb:823,sorusithai:3625,
+sosalathai:3624,sosothai:3595,sosuathai:3626,space:32,spacehackarabic:32,spade:9824,spadesuitblack:9824,spadesuitwhite:9828,sparen:9390,squarebelowcmb:827,squarecc:13252,squarecm:13213,squarediagonalcrosshatchfill:9641,squarehorizontalfill:9636,squarekg:13199,squarekm:13214,squarekmcapital:13262,squareln:13265,squarelog:13266,squaremg:13198,squaremil:13269,squaremm:13212,squaremsquared:13217,squareorthogonalcrosshatchfill:9638,squareupperlefttolowerrightfill:9639,squareupperrighttolowerleftfill:9640,
+squareverticalfill:9637,squarewhitewithsmallblack:9635,srsquare:13275,ssabengali:2487,ssadeva:2359,ssagujarati:2743,ssangcieuckorean:12617,ssanghieuhkorean:12677,ssangieungkorean:12672,ssangkiyeokkorean:12594,ssangnieunkorean:12645,ssangpieupkorean:12611,ssangsioskorean:12614,ssangtikeutkorean:12600,ssuperior:63218,sterling:163,sterlingmonospace:65505,strokelongoverlaycmb:822,strokeshortoverlaycmb:821,subset:8834,subsetnotequal:8842,subsetorequal:8838,succeeds:8827,suchthat:8715,suhiragana:12377,
+sukatakana:12473,sukatakanahalfwidth:65405,sukunarabic:1618,summation:8721,sun:9788,superset:8835,supersetnotequal:8843,supersetorequal:8839,svsquare:13276,syouwaerasquare:13180,t:116,tabengali:2468,tackdown:8868,tackleft:8867,tadeva:2340,tagujarati:2724,tagurmukhi:2596,taharabic:1591,tahfinalarabic:65218,tahinitialarabic:65219,tahiragana:12383,tahmedialarabic:65220,taisyouerasquare:13181,takatakana:12479,takatakanahalfwidth:65408,tatweelarabic:1600,tau:964,tav:1514,tavdages:64330,tavdagesh:64330,
+tavdageshhebrew:64330,tavhebrew:1514,tbar:359,tbopomofo:12554,tcaron:357,tccurl:680,tcedilla:355,tcheharabic:1670,tchehfinalarabic:64379,tchehinitialarabic:64380,tchehmedialarabic:64381,tcircle:9443,tcircumflexbelow:7793,tcommaaccent:355,tdieresis:7831,tdotaccent:7787,tdotbelow:7789,tecyrillic:1090,tedescendercyrillic:1197,teharabic:1578,tehfinalarabic:65174,tehhahinitialarabic:64674,tehhahisolatedarabic:64524,tehinitialarabic:65175,tehiragana:12390,tehjeeminitialarabic:64673,tehjeemisolatedarabic:64523,
+tehmarbutaarabic:1577,tehmarbutafinalarabic:65172,tehmedialarabic:65176,tehmeeminitialarabic:64676,tehmeemisolatedarabic:64526,tehnoonfinalarabic:64627,tekatakana:12486,tekatakanahalfwidth:65411,telephone:8481,telephoneblack:9742,telishagedolahebrew:1440,telishaqetanahebrew:1449,tencircle:9321,tenideographicparen:12841,tenparen:9341,tenperiod:9361,tenroman:8569,tesh:679,tet:1496,tetdagesh:64312,tetdageshhebrew:64312,tethebrew:1496,tetsecyrillic:1205,tevirhebrew:1435,tevirlefthebrew:1435,thabengali:2469,
+thadeva:2341,thagujarati:2725,thagurmukhi:2597,thalarabic:1584,thalfinalarabic:65196,thanthakhatlowleftthai:63640,thanthakhatlowrightthai:63639,thanthakhatthai:3660,thanthakhatupperleftthai:63638,theharabic:1579,thehfinalarabic:65178,thehinitialarabic:65179,thehmedialarabic:65180,thereexists:8707,therefore:8756,theta:952,theta1:977,thetasymbolgreek:977,thieuthacirclekorean:12921,thieuthaparenkorean:12825,thieuthcirclekorean:12907,thieuthkorean:12620,thieuthparenkorean:12811,thirteencircle:9324,thirteenparen:9344,
+thirteenperiod:9364,thonangmonthothai:3601,thook:429,thophuthaothai:3602,thorn:254,thothahanthai:3607,thothanthai:3600,thothongthai:3608,thothungthai:3606,thousandcyrillic:1154,thousandsseparatorarabic:1644,thousandsseparatorpersian:1644,three:51,threearabic:1635,threebengali:2537,threecircle:9314,threecircleinversesansserif:10124,threedeva:2409,threeeighths:8540,threegujarati:2793,threegurmukhi:2665,threehackarabic:1635,threehangzhou:12323,threeideographicparen:12834,threeinferior:8323,threemonospace:65299,
+threenumeratorbengali:2550,threeoldstyle:63283,threeparen:9334,threeperiod:9354,threepersian:1779,threequarters:190,threequartersemdash:63198,threeroman:8562,threesuperior:179,threethai:3667,thzsquare:13204,tihiragana:12385,tikatakana:12481,tikatakanahalfwidth:65409,tikeutacirclekorean:12912,tikeutaparenkorean:12816,tikeutcirclekorean:12898,tikeutkorean:12599,tikeutparenkorean:12802,tilde:732,tildebelowcmb:816,tildecmb:771,tildecomb:771,tildedoublecmb:864,tildeoperator:8764,tildeoverlaycmb:820,tildeverticalcmb:830,
+timescircle:8855,tipehahebrew:1430,tipehalefthebrew:1430,tippigurmukhi:2672,titlocyrilliccmb:1155,tiwnarmenian:1407,tlinebelow:7791,tmonospace:65364,toarmenian:1385,tohiragana:12392,tokatakana:12488,tokatakanahalfwidth:65412,tonebarextrahighmod:741,tonebarextralowmod:745,tonebarhighmod:742,tonebarlowmod:744,tonebarmidmod:743,tonefive:445,tonesix:389,tonetwo:424,tonos:900,tonsquare:13095,topatakthai:3599,tortoiseshellbracketleft:12308,tortoiseshellbracketleftsmall:65117,tortoiseshellbracketleftvertical:65081,
+tortoiseshellbracketright:12309,tortoiseshellbracketrightsmall:65118,tortoiseshellbracketrightvertical:65082,totaothai:3605,tpalatalhook:427,tparen:9391,trademark:8482,trademarksans:63722,trademarkserif:63195,tretroflexhook:648,triagdn:9660,triaglf:9668,triagrt:9658,triagup:9650,ts:678,tsadi:1510,tsadidagesh:64326,tsadidageshhebrew:64326,tsadihebrew:1510,tsecyrillic:1094,tsere:1461,tsere12:1461,tsere1e:1461,tsere2b:1461,tserehebrew:1461,tserenarrowhebrew:1461,tserequarterhebrew:1461,tserewidehebrew:1461,
+tshecyrillic:1115,tsuperior:63219,ttabengali:2463,ttadeva:2335,ttagujarati:2719,ttagurmukhi:2591,tteharabic:1657,ttehfinalarabic:64359,ttehinitialarabic:64360,ttehmedialarabic:64361,tthabengali:2464,tthadeva:2336,tthagujarati:2720,tthagurmukhi:2592,tturned:647,tuhiragana:12388,tukatakana:12484,tukatakanahalfwidth:65410,tusmallhiragana:12387,tusmallkatakana:12483,tusmallkatakanahalfwidth:65391,twelvecircle:9323,twelveparen:9343,twelveperiod:9363,twelveroman:8571,twentycircle:9331,twentyhangzhou:21316,
+twentyparen:9351,twentyperiod:9371,two:50,twoarabic:1634,twobengali:2536,twocircle:9313,twocircleinversesansserif:10123,twodeva:2408,twodotenleader:8229,twodotleader:8229,twodotleadervertical:65072,twogujarati:2792,twogurmukhi:2664,twohackarabic:1634,twohangzhou:12322,twoideographicparen:12833,twoinferior:8322,twomonospace:65298,twonumeratorbengali:2549,twooldstyle:63282,twoparen:9333,twoperiod:9353,twopersian:1778,tworoman:8561,twostroke:443,twosuperior:178,twothai:3666,twothirds:8532,u:117,uacute:250,
+ubar:649,ubengali:2441,ubopomofo:12584,ubreve:365,ucaron:468,ucircle:9444,ucircumflex:251,ucircumflexbelow:7799,ucyrillic:1091,udattadeva:2385,udblacute:369,udblgrave:533,udeva:2313,udieresis:252,udieresisacute:472,udieresisbelow:7795,udieresiscaron:474,udieresiscyrillic:1265,udieresisgrave:476,udieresismacron:470,udotbelow:7909,ugrave:249,ugujarati:2697,ugurmukhi:2569,uhiragana:12358,uhookabove:7911,uhorn:432,uhornacute:7913,uhorndotbelow:7921,uhorngrave:7915,uhornhookabove:7917,uhorntilde:7919,
+uhungarumlaut:369,uhungarumlautcyrillic:1267,uinvertedbreve:535,ukatakana:12454,ukatakanahalfwidth:65395,ukcyrillic:1145,ukorean:12636,umacron:363,umacroncyrillic:1263,umacrondieresis:7803,umatragurmukhi:2625,umonospace:65365,underscore:95,underscoredbl:8215,underscoremonospace:65343,underscorevertical:65075,underscorewavy:65103,union:8746,universal:8704,uogonek:371,uparen:9392,upblock:9600,upperdothebrew:1476,upsilon:965,upsilondieresis:971,upsilondieresistonos:944,upsilonlatin:650,upsilontonos:973,
+uptackbelowcmb:797,uptackmod:724,uragurmukhi:2675,uring:367,ushortcyrillic:1118,usmallhiragana:12357,usmallkatakana:12453,usmallkatakanahalfwidth:65385,ustraightcyrillic:1199,ustraightstrokecyrillic:1201,utilde:361,utildeacute:7801,utildebelow:7797,uubengali:2442,uudeva:2314,uugujarati:2698,uugurmukhi:2570,uumatragurmukhi:2626,uuvowelsignbengali:2498,uuvowelsigndeva:2370,uuvowelsigngujarati:2754,uvowelsignbengali:2497,uvowelsigndeva:2369,uvowelsigngujarati:2753,v:118,vadeva:2357,vagujarati:2741,vagurmukhi:2613,
+vakatakana:12535,vav:1493,vavdagesh:64309,vavdagesh65:64309,vavdageshhebrew:64309,vavhebrew:1493,vavholam:64331,vavholamhebrew:64331,vavvavhebrew:1520,vavyodhebrew:1521,vcircle:9445,vdotbelow:7807,vecyrillic:1074,veharabic:1700,vehfinalarabic:64363,vehinitialarabic:64364,vehmedialarabic:64365,vekatakana:12537,venus:9792,verticalbar:124,verticallineabovecmb:781,verticallinebelowcmb:809,verticallinelowmod:716,verticallinemod:712,vewarmenian:1406,vhook:651,vikatakana:12536,viramabengali:2509,viramadeva:2381,
+viramagujarati:2765,visargabengali:2435,visargadeva:2307,visargagujarati:2691,vmonospace:65366,voarmenian:1400,voicediterationhiragana:12446,voicediterationkatakana:12542,voicedmarkkana:12443,voicedmarkkanahalfwidth:65438,vokatakana:12538,vparen:9393,vtilde:7805,vturned:652,vuhiragana:12436,vukatakana:12532,w:119,wacute:7811,waekorean:12633,wahiragana:12431,wakatakana:12527,wakatakanahalfwidth:65436,wakorean:12632,wasmallhiragana:12430,wasmallkatakana:12526,wattosquare:13143,wavedash:12316,wavyunderscorevertical:65076,
+wawarabic:1608,wawfinalarabic:65262,wawhamzaabovearabic:1572,wawhamzaabovefinalarabic:65158,wbsquare:13277,wcircle:9446,wcircumflex:373,wdieresis:7813,wdotaccent:7815,wdotbelow:7817,wehiragana:12433,weierstrass:8472,wekatakana:12529,wekorean:12638,weokorean:12637,wgrave:7809,whitebullet:9702,whitecircle:9675,whitecircleinverse:9689,whitecornerbracketleft:12302,whitecornerbracketleftvertical:65091,whitecornerbracketright:12303,whitecornerbracketrightvertical:65092,whitediamond:9671,whitediamondcontainingblacksmalldiamond:9672,
+whitedownpointingsmalltriangle:9663,whitedownpointingtriangle:9661,whiteleftpointingsmalltriangle:9667,whiteleftpointingtriangle:9665,whitelenticularbracketleft:12310,whitelenticularbracketright:12311,whiterightpointingsmalltriangle:9657,whiterightpointingtriangle:9655,whitesmallsquare:9643,whitesmilingface:9786,whitesquare:9633,whitestar:9734,whitetelephone:9743,whitetortoiseshellbracketleft:12312,whitetortoiseshellbracketright:12313,whiteuppointingsmalltriangle:9653,whiteuppointingtriangle:9651,
+wihiragana:12432,wikatakana:12528,wikorean:12639,wmonospace:65367,wohiragana:12434,wokatakana:12530,wokatakanahalfwidth:65382,won:8361,wonmonospace:65510,wowaenthai:3623,wparen:9394,wring:7832,wsuperior:695,wturned:653,wynn:447,x:120,xabovecmb:829,xbopomofo:12562,xcircle:9447,xdieresis:7821,xdotaccent:7819,xeharmenian:1389,xi:958,xmonospace:65368,xparen:9395,xsuperior:739,y:121,yaadosquare:13134,yabengali:2479,yacute:253,yadeva:2351,yaekorean:12626,yagujarati:2735,yagurmukhi:2607,yahiragana:12420,
+yakatakana:12516,yakatakanahalfwidth:65428,yakorean:12625,yamakkanthai:3662,yasmallhiragana:12419,yasmallkatakana:12515,yasmallkatakanahalfwidth:65388,yatcyrillic:1123,ycircle:9448,ycircumflex:375,ydieresis:255,ydotaccent:7823,ydotbelow:7925,yeharabic:1610,yehbarreearabic:1746,yehbarreefinalarabic:64431,yehfinalarabic:65266,yehhamzaabovearabic:1574,yehhamzaabovefinalarabic:65162,yehhamzaaboveinitialarabic:65163,yehhamzaabovemedialarabic:65164,yehinitialarabic:65267,yehmedialarabic:65268,yehmeeminitialarabic:64733,
+yehmeemisolatedarabic:64600,yehnoonfinalarabic:64660,yehthreedotsbelowarabic:1745,yekorean:12630,yen:165,yenmonospace:65509,yeokorean:12629,yeorinhieuhkorean:12678,yerahbenyomohebrew:1450,yerahbenyomolefthebrew:1450,yericyrillic:1099,yerudieresiscyrillic:1273,yesieungkorean:12673,yesieungpansioskorean:12675,yesieungsioskorean:12674,yetivhebrew:1434,ygrave:7923,yhook:436,yhookabove:7927,yiarmenian:1397,yicyrillic:1111,yikorean:12642,yinyang:9775,yiwnarmenian:1410,ymonospace:65369,yod:1497,yoddagesh:64313,
+yoddageshhebrew:64313,yodhebrew:1497,yodyodhebrew:1522,yodyodpatahhebrew:64287,yohiragana:12424,yoikorean:12681,yokatakana:12520,yokatakanahalfwidth:65430,yokorean:12635,yosmallhiragana:12423,yosmallkatakana:12519,yosmallkatakanahalfwidth:65390,yotgreek:1011,yoyaekorean:12680,yoyakorean:12679,yoyakthai:3618,yoyingthai:3597,yparen:9396,ypogegrammeni:890,ypogegrammenigreekcmb:837,yr:422,yring:7833,ysuperior:696,ytilde:7929,yturned:654,yuhiragana:12422,yuikorean:12684,yukatakana:12518,yukatakanahalfwidth:65429,
+yukorean:12640,yusbigcyrillic:1131,yusbigiotifiedcyrillic:1133,yuslittlecyrillic:1127,yuslittleiotifiedcyrillic:1129,yusmallhiragana:12421,yusmallkatakana:12517,yusmallkatakanahalfwidth:65389,yuyekorean:12683,yuyeokorean:12682,yyabengali:2527,yyadeva:2399,z:122,zaarmenian:1382,zacute:378,zadeva:2395,zagurmukhi:2651,zaharabic:1592,zahfinalarabic:65222,zahinitialarabic:65223,zahiragana:12374,zahmedialarabic:65224,zainarabic:1586,zainfinalarabic:65200,zakatakana:12470,zaqefgadolhebrew:1429,zaqefqatanhebrew:1428,
+zarqahebrew:1432,zayin:1494,zayindagesh:64310,zayindageshhebrew:64310,zayinhebrew:1494,zbopomofo:12567,zcaron:382,zcircle:9449,zcircumflex:7825,zcurl:657,zdot:380,zdotaccent:380,zdotbelow:7827,zecyrillic:1079,zedescendercyrillic:1177,zedieresiscyrillic:1247,zehiragana:12380,zekatakana:12476,zero:48,zeroarabic:1632,zerobengali:2534,zerodeva:2406,zerogujarati:2790,zerogurmukhi:2662,zerohackarabic:1632,zeroinferior:8320,zeromonospace:65296,zerooldstyle:63280,zeropersian:1776,zerosuperior:8304,zerothai:3664,
+zerowidthjoiner:65279,zerowidthnonjoiner:8204,zerowidthspace:8203,zeta:950,zhbopomofo:12563,zhearmenian:1386,zhebrevecyrillic:1218,zhecyrillic:1078,zhedescendercyrillic:1175,zhedieresiscyrillic:1245,zihiragana:12376,zikatakana:12472,zinorhebrew:1454,zlinebelow:7829,zmonospace:65370,zohiragana:12382,zokatakana:12478,zparen:9397,zretroflexhook:656,zstroke:438,zuhiragana:12378,zukatakana:12474,".notdef":0},jb=function(){function f(a,c,e,d){if(d instanceof xb&&d.isNativelyDecodable(c,e)){var g=d.dict.get("ColorSpace",
+"CS"),g=L.parse(g,c,e);c=g.numComps;return a.sendWithPromise("JpegDecode",[d.getIR(),c]).then(function(a){a=a.data;return new ha(a,0,a.length,d.dict)})}return Promise.resolve(d)}function a(b,c,e,d,g,h,f){this.image=e;d=e.dict;if(d.has("Filter")){var l=d.get("Filter").name;"JPXDecode"===l?(l=new id,l.parseImageProperties(e.stream),e.stream.reset(),e.bitsPerComponent=l.bitsPerComponent,e.numComps=l.componentsCount):"JBIG2Decode"===l&&(e.bitsPerComponent=1,e.numComps=1)}this.width=d.get("Width","W");
+this.height=d.get("Height","H");(1>this.width||1>this.height)&&y("Invalid image width: "+this.width+" or height: "+this.height);this.interpolate=d.get("Interpolate","I")||!1;this.imageMask=d.get("ImageMask","IM")||!1;this.matte=d.get("Matte")||!1;l=e.bitsPerComponent;l||(l=d.get("BitsPerComponent","BPC"))||(this.imageMask?l=1:y("Bits per component missing in image: "+this.imageMask));this.bpc=l;if(!this.imageMask){var m=d.get("ColorSpace","CS");if(!m)switch(R("JPX images (which do not require color spaces)"),
+e.numComps){case 1:m=Da.get("DeviceGray");break;case 3:m=Da.get("DeviceRGB");break;case 4:m=Da.get("DeviceCMYK");break;default:y("JPX images with "+this.numComps+" color components not supported.")}this.colorSpace=L.parse(m,b,c);this.numComps=this.colorSpace.numComps}this.decode=d.get("Decode","D");this.needsDecode=!1;if(this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode)||f&&!L.isDefaultDecode(this.decode,1)))for(this.needsDecode=!0,e=(1<<l)-1,this.decodeCoefficients=[],
+this.decodeAddends=[],d=f=0;f<this.decode.length;f+=2,++d)l=this.decode[f],this.decodeCoefficients[d]=this.decode[f+1]-l,this.decodeAddends[d]=e*l;g?this.smask=new a(b,c,g,!1):h&&(da(h)?this.mask=new a(b,c,h,!1,null,null,!0):this.mask=h)}a.buildImage=function(b,c,e,d,g){var h=f(b,c,e,d),k;k=d.dict.get("SMask");d=d.dict.get("Mask");k?(k=f(b,c,e,k),b=Promise.resolve(null)):(k=Promise.resolve(null),d?da(d)?b=f(b,c,e,d):ca(d)?b=Promise.resolve(d):(O("Unsupported mask format."),b=Promise.resolve(null)):
+b=Promise.resolve(null));return Promise.all([h,k,b]).then(function(b){return new a(c,e,b[0],g,b[1],b[2])})};a.resize=function(a,c,e,d,g,h,f,l,m){1!==e&&3!==e&&y("Unsupported component count for resizing.");var n=h*f*e;c=l?l:8>=c?new Uint8Array(n):16>=c?new Uint16Array(n):new Uint32Array(n);var q=d/h;g/=f;l=0;var s,n=new Uint16Array(h),p=d*e;1!==m&&(m=0);for(d=0;d<h;d++)n[d]=Math.floor(d*q)*e;if(1===e)for(e=0;e<f;e++)for(q=Math.floor(e*g)*p,d=0;d<h;d++)s=q+n[d],c[l++]=a[s];else if(3===e)for(e=0;e<
+f;e++)for(q=Math.floor(e*g)*p,d=0;d<h;d++)s=q+n[d],c[l++]=a[s++],c[l++]=a[s++],c[l++]=a[s++],l+=m;return c};a.createMask=function(a,c,e,d,g){var h=a.byteLength;d?d=a:(d=new Uint8Array(h),d.set(a));if(g)for(a=0;a<h;a++)d[a]=~d[a];return{data:d,width:c,height:e}};a.prototype={get drawWidth(){return Math.max(this.width,this.smask&&this.smask.width||0,this.mask&&this.mask.width||0)},get drawHeight(){return Math.max(this.height,this.smask&&this.smask.height||0,this.mask&&this.mask.height||0)},decodeBuffer:function(a){var c=
+this.bpc,e=this.numComps,d=this.decodeAddends,g=this.decodeCoefficients,h=(1<<c)-1,f;if(1===c)for(c=0,f=a.length;c<f;c++)a[c]=+!a[c];else{var l=0,c=0;for(f=this.width*this.height;c<f;c++)for(var m=0;m<e;m++){var n=a,q=l,s=a[l],s=d[m]+s*g[m];n[q]=0>s?0:s>h?h:s;l++}}},getComponents:function(a){var c=this.bpc;if(8===c)return a;var e=this.width,d=this.height,g=this.numComps,h=e*d*g,f=0,l=8>=c?new Uint8Array(h):16>=c?new Uint16Array(h):new Uint32Array(h),e=e*g,m=(1<<c)-1,g=0,n;if(1===c)for(h=0;h<d;h++){m=
+g+(e&-8);for(c=g+e;g<m;)n=a[f++],l[g]=n>>7&1,l[g+1]=n>>6&1,l[g+2]=n>>5&1,l[g+3]=n>>4&1,l[g+4]=n>>3&1,l[g+5]=n>>2&1,l[g+6]=n>>1&1,l[g+7]=n&1,g+=8;if(g<c)for(n=a[f++],m=128;g<c;)l[g++]=+!!(n&m),m>>=1}else for(g=n=d=0;g<h;++g){0===g%e&&(d=n=0);for(;d<c;)n=n<<8|a[f++],d+=8;var d=d-c,q=n>>d;l[g]=0>q?0:q>m?m:q;n&=(1<<d)-1}return l},fillOpacity:function(b,c,e,d,g){var h=this.smask,f=this.mask,l,m,n;if(h){if(g=h.width,m=h.height,l=new Uint8Array(g*m),h.fillGrayBuffer(l),g!=c||m!=e)l=a.resize(l,h.bpc,1,g,
+m,c,e)}else if(f)if(f instanceof a){g=f.width;m=f.height;l=new Uint8Array(g*m);f.numComps=1;f.fillGrayBuffer(l);h=0;for(n=g*m;h<n;++h)l[h]=255-l[h];if(g!=c||m!=e)l=a.resize(l,f.bpc,1,g,m,c,e)}else if(ca(f))for(l=new Uint8Array(c*e),m=this.numComps,h=0,n=c*e;h<n;++h){var q=0,s=h*m;for(e=0;e<m;++e){var p=g[s+e],x=2*e;if(p<f[x]||p>f[x+1]){q=255;break}}l[h]=q}else y("Unknown mask format.");if(l)for(h=0,e=3,n=c*d;h<n;++h,e+=4)b[e]=l[h];else for(h=0,e=3,n=c*d;h<n;++h,e+=4)b[e]=255},undoPreblend:function(a,
+c,e){var d=this.smask&&this.smask.matte;if(d){var g=this.colorSpace.getRgb(d,0),d=g[0],h=g[1],g=g[2];c=c*e*4;var f,l,m;for(e=0;e<c;e+=4)f=a[e+3],0===f?(a[e]=255,a[e+1]=255,a[e+2]=255):(m=255/f,f=(a[e]-d)*m+d,l=(a[e+1]-h)*m+h,m=(a[e+2]-g)*m+g,a[e]=0>=f?0:255<=f?255:f|0,a[e+1]=0>=l?0:255<=l?255:l|0,a[e+2]=0>=m?0:255<=m?255:m|0)}},createImageData:function(a){var c=this.drawWidth,e=this.drawHeight,d={width:c,height:e},g=this.width,f=this.height,k=this.bpc,l=g*this.numComps*k+7>>3,m;if(!a&&("DeviceGray"===
+this.colorSpace.name&&1===k?m=1:"DeviceRGB"===this.colorSpace.name&&8===k&&(m=2),m&&!this.smask&&!this.mask&&!this.needsDecode&&c===g&&e===f))return d.kind=m,m=this.getImageBytes(f*l),this.image instanceof Z?d.data=m:(c=new Uint8Array(m.length),c.set(m),d.data=c),d;if(this.image instanceof xb)return d.kind=2,d.data=this.getImageBytes(f*l,c,e),d;m=this.getImageBytes(f*l);l=0|m.length/l*e/f;m=this.getComponents(m);var n;a||this.smask||this.mask?(d.kind=3,d.data=new Uint8Array(c*e*4),a=1,n=!0,this.fillOpacity(d.data,
+c,e,l,m)):(d.kind=2,d.data=new Uint8Array(c*e*3),a=0,n=!1);this.needsDecode&&this.decodeBuffer(m);this.colorSpace.fillRgb(d.data,g,f,c,e,l,k,m,a);n&&this.undoPreblend(d.data,c,l);return d},fillGrayBuffer:function(a){var c=this.numComps;1!=c&&y("Reading gray scale from a color image: "+c);var e=this.width,d=this.height,g=this.bpc,c=this.getImageBytes(d*(e*c*g+7>>3)),c=this.getComponents(c);if(1===g)if(e*=d,this.needsDecode)for(g=0;g<e;++g)a[g]=c[g]-1&255;else for(g=0;g<e;++g)a[g]=-c[g]&255;else for(this.needsDecode&&
+this.decodeBuffer(c),e*=d,d=255/((1<<g)-1),g=0;g<e;++g)a[g]=d*c[g]|0},getImageBytes:function(a,c,e){this.image.reset();this.image.drawWidth=c;this.image.drawHeight=e;return this.image.getBytes(a)}};return a}(),Yc={Courier:600,"Courier-Bold":600,"Courier-BoldOblique":600,"Courier-Oblique":600,Helvetica:{space:278,exclam:278,quotedbl:355,numbersign:556,dollar:556,percent:889,ampersand:667,quoteright:222,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,
+one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:278,semicolon:278,less:584,equal:584,greater:584,question:556,at:1015,A:667,B:667,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:500,K:667,L:556,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:278,backslash:278,bracketright:278,asciicircum:469,underscore:556,quoteleft:222,a:556,b:556,c:500,d:556,e:556,f:278,g:556,h:556,i:222,j:222,k:500,l:222,m:833,n:556,o:556,p:556,
+q:556,r:333,s:500,t:278,u:556,v:500,w:722,x:500,y:500,z:500,braceleft:334,bar:260,braceright:334,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:191,quotedblleft:333,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:537,bullet:350,quotesinglbase:222,quotedblbase:333,quotedblright:333,guillemotright:556,ellipsis:1E3,perthousand:1E3,questiondown:611,
+grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:1E3,ordfeminine:370,Lslash:556,Oslash:778,OE:1E3,ordmasculine:365,ae:889,dotlessi:278,lslash:222,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:556,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:667,aacute:556,Ucircumflex:722,yacute:500,scommaaccent:500,ecircumflex:556,Uring:722,Udieresis:722,
+aogonek:556,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:500,aring:556,Ncommaaccent:722,lacute:222,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:500,scedilla:500,iacute:278,lozenge:471,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:556,Amacron:667,rcaron:333,ccedilla:500,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:643,Umacron:722,uring:556,threesuperior:333,Ograve:778,Agrave:667,Abreve:667,
+multiply:584,uacute:556,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:500,nacute:556,umacron:556,Ncaron:722,Iacute:278,plusminus:584,brokenbar:260,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:333,omacron:556,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:222,tcaron:317,eogonek:556,Uogonek:722,Aacute:667,Adieresis:667,egrave:556,zacute:500,iogonek:222,Oacute:778,oacute:556,
+amacron:556,sacute:500,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,twosuperior:333,Odieresis:778,mu:556,igrave:278,ohungarumlaut:556,Eogonek:667,dcroat:556,threequarters:834,Scedilla:667,lcaron:299,Kcommaaccent:667,Lacute:556,trademark:1E3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:556,onehalf:834,lessequal:549,ocircumflex:556,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:556,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:556,Ccaron:722,
+ugrave:556,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:556,Rcommaaccent:722,Lcommaaccent:556,Atilde:667,Aogonek:667,Aring:667,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:500,minus:584,Icircumflex:278,ncaron:556,tcommaaccent:278,logicalnot:584,odieresis:556,udieresis:556,notequal:549,gcommaaccent:556,eth:556,zcaron:500,ncommaaccent:556,onesuperior:333,imacron:278,Euro:556},"Helvetica-Bold":{space:278,exclam:333,quotedbl:474,numbersign:556,dollar:556,percent:889,ampersand:722,
+quoteright:278,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:333,semicolon:333,less:584,equal:584,greater:584,question:611,at:975,A:722,B:722,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:556,K:722,L:611,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:584,underscore:556,
+quoteleft:278,a:556,b:611,c:556,d:611,e:556,f:333,g:611,h:611,i:278,j:278,k:556,l:278,m:889,n:611,o:611,p:611,q:611,r:389,s:556,t:333,u:611,v:556,w:778,x:556,y:556,z:500,braceleft:389,bar:280,braceright:389,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:238,quotedblleft:500,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:611,fl:611,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:556,bullet:350,quotesinglbase:278,
+quotedblbase:500,quotedblright:500,guillemotright:556,ellipsis:1E3,perthousand:1E3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:1E3,ordfeminine:370,Lslash:611,Oslash:778,OE:1E3,ordmasculine:365,ae:889,dotlessi:278,lslash:278,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:611,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:722,
+aacute:556,Ucircumflex:722,yacute:556,scommaaccent:556,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:611,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:556,aring:556,Ncommaaccent:722,lacute:278,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:556,scedilla:556,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,ucircumflex:611,acircumflex:556,Amacron:722,rcaron:389,ccedilla:556,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,
+Sacute:667,dcaron:743,Umacron:722,uring:611,threesuperior:333,Ograve:778,Agrave:722,Abreve:722,multiply:584,uacute:611,Tcaron:611,partialdiff:494,ydieresis:556,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:556,nacute:611,umacron:611,Ncaron:722,Iacute:278,plusminus:584,brokenbar:280,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:389,omacron:611,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:389,eogonek:556,
+Uogonek:722,Aacute:722,Adieresis:722,egrave:556,zacute:500,iogonek:278,Oacute:778,oacute:611,amacron:556,sacute:556,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:611,twosuperior:333,Odieresis:778,mu:611,igrave:278,ohungarumlaut:611,Eogonek:667,dcroat:611,threequarters:834,Scedilla:667,lcaron:400,Kcommaaccent:722,Lacute:611,trademark:1E3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:611,onehalf:834,lessequal:549,ocircumflex:611,ntilde:611,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:611,
+onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:611,Ccaron:722,ugrave:611,radical:549,Dcaron:722,rcommaaccent:389,Ntilde:722,otilde:611,Rcommaaccent:722,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:556,minus:584,Icircumflex:278,ncaron:611,tcommaaccent:333,logicalnot:584,odieresis:611,udieresis:611,notequal:549,gcommaaccent:611,eth:611,zcaron:500,ncommaaccent:611,onesuperior:333,imacron:278,Euro:556},
+"Helvetica-BoldOblique":{space:278,exclam:333,quotedbl:474,numbersign:556,dollar:556,percent:889,ampersand:722,quoteright:278,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:333,semicolon:333,less:584,equal:584,greater:584,question:611,at:975,A:722,B:722,C:722,D:722,E:667,F:611,G:778,H:722,I:278,J:556,K:722,L:611,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,
+U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:584,underscore:556,quoteleft:278,a:556,b:611,c:556,d:611,e:556,f:333,g:611,h:611,i:278,j:278,k:556,l:278,m:889,n:611,o:611,p:611,q:611,r:389,s:556,t:333,u:611,v:556,w:778,x:556,y:556,z:500,braceleft:389,bar:280,braceright:389,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,section:556,currency:556,quotesingle:238,quotedblleft:500,guillemotleft:556,guilsinglleft:333,guilsinglright:333,
+fi:611,fl:611,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:556,bullet:350,quotesinglbase:278,quotedblbase:500,quotedblright:500,guillemotright:556,ellipsis:1E3,perthousand:1E3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:1E3,ordfeminine:370,Lslash:611,Oslash:778,OE:1E3,ordmasculine:365,ae:889,dotlessi:278,lslash:278,oslash:611,oe:944,germandbls:611,
+Idieresis:278,eacute:556,abreve:556,uhungarumlaut:611,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:722,aacute:556,Ucircumflex:722,yacute:556,scommaaccent:556,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:611,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:556,aring:556,Ncommaaccent:722,lacute:278,agrave:556,Tcommaaccent:611,Cacute:722,atilde:556,Edotaccent:667,scaron:556,scedilla:556,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,
+ucircumflex:611,acircumflex:556,Amacron:722,rcaron:389,ccedilla:556,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:743,Umacron:722,uring:611,threesuperior:333,Ograve:778,Agrave:722,Abreve:722,multiply:584,uacute:611,Tcaron:611,partialdiff:494,ydieresis:556,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:556,nacute:611,umacron:611,Ncaron:722,Iacute:278,plusminus:584,brokenbar:280,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:389,
+omacron:611,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:389,eogonek:556,Uogonek:722,Aacute:722,Adieresis:722,egrave:556,zacute:500,iogonek:278,Oacute:778,oacute:611,amacron:556,sacute:556,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:611,twosuperior:333,Odieresis:778,mu:611,igrave:278,ohungarumlaut:611,Eogonek:667,dcroat:611,threequarters:834,Scedilla:667,lcaron:400,Kcommaaccent:722,Lacute:611,trademark:1E3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:611,
+onehalf:834,lessequal:549,ocircumflex:611,ntilde:611,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:611,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:611,Ccaron:722,ugrave:611,radical:549,Dcaron:722,rcommaaccent:389,Ntilde:722,otilde:611,Rcommaaccent:722,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,kcommaaccent:556,minus:584,Icircumflex:278,ncaron:611,tcommaaccent:333,logicalnot:584,odieresis:611,udieresis:611,
+notequal:549,gcommaaccent:611,eth:611,zcaron:500,ncommaaccent:611,onesuperior:333,imacron:278,Euro:556},"Helvetica-Oblique":{space:278,exclam:278,quotedbl:355,numbersign:556,dollar:556,percent:889,ampersand:667,quoteright:222,parenleft:333,parenright:333,asterisk:389,plus:584,comma:278,hyphen:333,period:278,slash:278,zero:556,one:556,two:556,three:556,four:556,five:556,six:556,seven:556,eight:556,nine:556,colon:278,semicolon:278,less:584,equal:584,greater:584,question:556,at:1015,A:667,B:667,C:722,
+D:722,E:667,F:611,G:778,H:722,I:278,J:500,K:667,L:556,M:833,N:722,O:778,P:667,Q:778,R:722,S:667,T:611,U:722,V:667,W:944,X:667,Y:667,Z:611,bracketleft:278,backslash:278,bracketright:278,asciicircum:469,underscore:556,quoteleft:222,a:556,b:556,c:500,d:556,e:556,f:278,g:556,h:556,i:222,j:222,k:500,l:222,m:833,n:556,o:556,p:556,q:556,r:333,s:500,t:278,u:556,v:500,w:722,x:500,y:500,z:500,braceleft:334,bar:260,braceright:334,asciitilde:584,exclamdown:333,cent:556,sterling:556,fraction:167,yen:556,florin:556,
+section:556,currency:556,quotesingle:191,quotedblleft:333,guillemotleft:556,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:556,dagger:556,daggerdbl:556,periodcentered:278,paragraph:537,bullet:350,quotesinglbase:222,quotedblbase:333,quotedblright:333,guillemotright:556,ellipsis:1E3,perthousand:1E3,questiondown:611,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:1E3,ordfeminine:370,
+Lslash:556,Oslash:778,OE:1E3,ordmasculine:365,ae:889,dotlessi:278,lslash:222,oslash:611,oe:944,germandbls:611,Idieresis:278,eacute:556,abreve:556,uhungarumlaut:556,ecaron:556,Ydieresis:667,divide:584,Yacute:667,Acircumflex:667,aacute:556,Ucircumflex:722,yacute:500,scommaaccent:500,ecircumflex:556,Uring:722,Udieresis:722,aogonek:556,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:737,Emacron:667,ccaron:500,aring:556,Ncommaaccent:722,lacute:222,agrave:556,Tcommaaccent:611,
+Cacute:722,atilde:556,Edotaccent:667,scaron:500,scedilla:500,iacute:278,lozenge:471,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:556,Amacron:667,rcaron:333,ccedilla:500,Zdotaccent:611,Thorn:667,Omacron:778,Racute:722,Sacute:667,dcaron:643,Umacron:722,uring:556,threesuperior:333,Ograve:778,Agrave:667,Abreve:667,multiply:584,uacute:556,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:556,edieresis:556,cacute:500,nacute:556,umacron:556,Ncaron:722,
+Iacute:278,plusminus:584,brokenbar:260,registered:737,Gbreve:778,Idotaccent:278,summation:600,Egrave:667,racute:333,omacron:556,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:222,tcaron:317,eogonek:556,Uogonek:722,Aacute:667,Adieresis:667,egrave:556,zacute:500,iogonek:222,Oacute:778,oacute:556,amacron:556,sacute:500,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,twosuperior:333,Odieresis:778,mu:556,igrave:278,ohungarumlaut:556,Eogonek:667,dcroat:556,threequarters:834,
+Scedilla:667,lcaron:299,Kcommaaccent:667,Lacute:556,trademark:1E3,edotaccent:556,Igrave:278,Imacron:278,Lcaron:556,onehalf:834,lessequal:549,ocircumflex:556,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:556,gbreve:556,onequarter:834,Scaron:667,Scommaaccent:667,Ohungarumlaut:778,degree:400,ograve:556,Ccaron:722,ugrave:556,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:556,Rcommaaccent:722,Lcommaaccent:556,Atilde:667,Aogonek:667,Aring:667,Otilde:778,zdotaccent:500,Ecaron:667,Iogonek:278,
+kcommaaccent:500,minus:584,Icircumflex:278,ncaron:556,tcommaaccent:278,logicalnot:584,odieresis:556,udieresis:556,notequal:549,gcommaaccent:556,eth:556,zcaron:500,ncommaaccent:556,onesuperior:333,imacron:278,Euro:556},Symbol:{space:250,exclam:333,universal:713,numbersign:500,existential:549,percent:833,ampersand:778,suchthat:439,parenleft:333,parenright:333,asteriskmath:500,plus:549,comma:250,minus:549,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,
+nine:500,colon:278,semicolon:278,less:549,equal:549,greater:549,question:444,congruent:549,Alpha:722,Beta:667,Chi:722,Delta:612,Epsilon:611,Phi:763,Gamma:603,Eta:722,Iota:333,theta1:631,Kappa:722,Lambda:686,Mu:889,Nu:722,Omicron:722,Pi:768,Theta:741,Rho:556,Sigma:592,Tau:611,Upsilon:690,sigma1:439,Omega:768,Xi:645,Psi:795,Zeta:611,bracketleft:333,therefore:863,bracketright:333,perpendicular:658,underscore:500,radicalex:500,alpha:631,beta:549,chi:549,delta:494,epsilon:439,phi:521,gamma:411,eta:603,
+iota:329,phi1:603,kappa:549,lambda:549,mu:576,nu:521,omicron:549,pi:549,theta:521,rho:549,sigma:603,tau:439,upsilon:576,omega1:713,omega:686,xi:493,psi:686,zeta:494,braceleft:480,bar:200,braceright:480,similar:549,Euro:750,Upsilon1:620,minute:247,lessequal:549,fraction:167,infinity:713,florin:500,club:753,diamond:753,heart:753,spade:753,arrowboth:1042,arrowleft:987,arrowup:603,arrowright:987,arrowdown:603,degree:400,plusminus:549,second:411,greaterequal:549,multiply:549,proportional:713,partialdiff:494,
+bullet:460,divide:549,notequal:549,equivalence:549,approxequal:549,ellipsis:1E3,arrowvertex:603,arrowhorizex:1E3,carriagereturn:658,aleph:823,Ifraktur:686,Rfraktur:795,weierstrass:987,circlemultiply:768,circleplus:768,emptyset:823,intersection:768,union:768,propersuperset:713,reflexsuperset:713,notsubset:713,propersubset:713,reflexsubset:713,element:713,notelement:713,angle:768,gradient:713,registerserif:790,copyrightserif:790,trademarkserif:890,product:823,radical:549,dotmath:250,logicalnot:713,
+logicaland:603,logicalor:603,arrowdblboth:1042,arrowdblleft:987,arrowdblup:603,arrowdblright:987,arrowdbldown:603,lozenge:494,angleleft:329,registersans:790,copyrightsans:790,trademarksans:786,summation:713,parenlefttp:384,parenleftex:384,parenleftbt:384,bracketlefttp:384,bracketleftex:384,bracketleftbt:384,bracelefttp:494,braceleftmid:494,braceleftbt:494,braceex:494,angleright:329,integral:274,integraltp:686,integralex:686,integralbt:686,parenrighttp:384,parenrightex:384,parenrightbt:384,bracketrighttp:384,
+bracketrightex:384,bracketrightbt:384,bracerighttp:494,bracerightmid:494,bracerightbt:494,apple:790},"Times-Roman":{space:250,exclam:333,quotedbl:408,numbersign:500,dollar:500,percent:833,ampersand:778,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:564,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:278,semicolon:278,less:564,equal:564,greater:564,question:444,at:921,A:722,B:667,C:667,D:722,E:611,
+F:556,G:722,H:722,I:333,J:389,K:722,L:611,M:889,N:722,O:722,P:556,Q:722,R:667,S:556,T:611,U:722,V:722,W:944,X:722,Y:722,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:469,underscore:500,quoteleft:333,a:444,b:500,c:444,d:500,e:444,f:333,g:500,h:500,i:278,j:278,k:500,l:278,m:778,n:500,o:500,p:500,q:500,r:333,s:389,t:278,u:500,v:500,w:722,x:500,y:500,z:444,braceleft:480,bar:200,braceright:480,asciitilde:541,exclamdown:333,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,
+currency:500,quotesingle:180,quotedblleft:444,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:453,bullet:350,quotesinglbase:333,quotedblbase:444,quotedblright:444,guillemotright:500,ellipsis:1E3,perthousand:1E3,questiondown:444,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:889,ordfeminine:276,Lslash:611,
+Oslash:722,OE:889,ordmasculine:310,ae:667,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:500,Idieresis:333,eacute:444,abreve:444,uhungarumlaut:500,ecaron:444,Ydieresis:722,divide:564,Yacute:722,Acircumflex:722,aacute:444,Ucircumflex:722,yacute:500,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:444,Uacute:722,uogonek:500,Edieresis:611,Dcroat:722,commaaccent:250,copyright:760,Emacron:611,ccaron:444,aring:444,Ncommaaccent:722,lacute:278,agrave:444,Tcommaaccent:611,Cacute:667,
+atilde:444,Edotaccent:611,scaron:389,scedilla:389,iacute:278,lozenge:471,Rcaron:667,Gcommaaccent:722,ucircumflex:500,acircumflex:444,Amacron:722,rcaron:333,ccedilla:444,Zdotaccent:611,Thorn:556,Omacron:722,Racute:667,Sacute:556,dcaron:588,Umacron:722,uring:500,threesuperior:300,Ograve:722,Agrave:722,Abreve:722,multiply:564,uacute:500,Tcaron:611,partialdiff:476,ydieresis:500,Nacute:722,icircumflex:278,Ecircumflex:611,adieresis:444,edieresis:444,cacute:444,nacute:500,umacron:500,Ncaron:722,Iacute:333,
+plusminus:564,brokenbar:200,registered:760,Gbreve:722,Idotaccent:333,summation:600,Egrave:611,racute:333,omacron:500,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:667,lcommaaccent:278,tcaron:326,eogonek:444,Uogonek:722,Aacute:722,Adieresis:722,egrave:444,zacute:444,iogonek:278,Oacute:722,oacute:500,amacron:444,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:500,igrave:278,ohungarumlaut:500,Eogonek:611,dcroat:500,threequarters:750,
+Scedilla:556,lcaron:344,Kcommaaccent:722,Lacute:611,trademark:980,edotaccent:444,Igrave:333,Imacron:333,Lcaron:611,onehalf:750,lessequal:549,ocircumflex:500,ntilde:500,Uhungarumlaut:722,Eacute:611,emacron:444,gbreve:500,onequarter:750,Scaron:556,Scommaaccent:556,Ohungarumlaut:722,degree:400,ograve:500,Ccaron:667,ugrave:500,radical:453,Dcaron:722,rcommaaccent:333,Ntilde:722,otilde:500,Rcommaaccent:667,Lcommaaccent:611,Atilde:722,Aogonek:722,Aring:722,Otilde:722,zdotaccent:444,Ecaron:611,Iogonek:333,
+kcommaaccent:500,minus:564,Icircumflex:333,ncaron:500,tcommaaccent:278,logicalnot:564,odieresis:500,udieresis:500,notequal:549,gcommaaccent:500,eth:500,zcaron:444,ncommaaccent:500,onesuperior:300,imacron:278,Euro:500},"Times-Bold":{space:250,exclam:333,quotedbl:555,numbersign:500,dollar:500,percent:1E3,ampersand:833,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:570,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,
+nine:500,colon:333,semicolon:333,less:570,equal:570,greater:570,question:500,at:930,A:722,B:667,C:722,D:722,E:667,F:611,G:778,H:778,I:389,J:500,K:778,L:667,M:944,N:722,O:778,P:611,Q:778,R:722,S:556,T:667,U:722,V:722,W:1E3,X:722,Y:722,Z:667,bracketleft:333,backslash:278,bracketright:333,asciicircum:581,underscore:500,quoteleft:333,a:500,b:556,c:444,d:556,e:444,f:333,g:500,h:556,i:278,j:333,k:556,l:278,m:833,n:556,o:500,p:556,q:556,r:444,s:389,t:333,u:556,v:500,w:722,x:500,y:500,z:444,braceleft:394,
+bar:220,braceright:394,asciitilde:520,exclamdown:333,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:278,quotedblleft:500,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:540,bullet:350,quotesinglbase:333,quotedblbase:500,quotedblright:500,guillemotright:500,ellipsis:1E3,perthousand:1E3,questiondown:500,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,
+dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:1E3,ordfeminine:300,Lslash:667,Oslash:778,OE:1E3,ordmasculine:330,ae:722,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:556,Idieresis:389,eacute:444,abreve:500,uhungarumlaut:556,ecaron:444,Ydieresis:722,divide:570,Yacute:722,Acircumflex:722,aacute:500,Ucircumflex:722,yacute:500,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,
+copyright:747,Emacron:667,ccaron:444,aring:500,Ncommaaccent:722,lacute:278,agrave:500,Tcommaaccent:667,Cacute:722,atilde:500,Edotaccent:667,scaron:389,scedilla:389,iacute:278,lozenge:494,Rcaron:722,Gcommaaccent:778,ucircumflex:556,acircumflex:500,Amacron:722,rcaron:444,ccedilla:444,Zdotaccent:667,Thorn:611,Omacron:778,Racute:722,Sacute:556,dcaron:672,Umacron:722,uring:556,threesuperior:300,Ograve:778,Agrave:722,Abreve:722,multiply:570,uacute:556,Tcaron:667,partialdiff:494,ydieresis:500,Nacute:722,
+icircumflex:278,Ecircumflex:667,adieresis:500,edieresis:444,cacute:444,nacute:556,umacron:556,Ncaron:722,Iacute:389,plusminus:570,brokenbar:220,registered:747,Gbreve:778,Idotaccent:389,summation:600,Egrave:667,racute:444,omacron:500,Zacute:667,Zcaron:667,greaterequal:549,Eth:722,Ccedilla:722,lcommaaccent:278,tcaron:416,eogonek:444,Uogonek:722,Aacute:722,Adieresis:722,egrave:444,zacute:444,iogonek:278,Oacute:778,oacute:500,amacron:500,sacute:389,idieresis:278,Ocircumflex:778,Ugrave:722,Delta:612,thorn:556,
+twosuperior:300,Odieresis:778,mu:556,igrave:278,ohungarumlaut:500,Eogonek:667,dcroat:556,threequarters:750,Scedilla:556,lcaron:394,Kcommaaccent:778,Lacute:667,trademark:1E3,edotaccent:444,Igrave:389,Imacron:389,Lcaron:667,onehalf:750,lessequal:549,ocircumflex:500,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:444,gbreve:500,onequarter:750,Scaron:556,Scommaaccent:556,Ohungarumlaut:778,degree:400,ograve:500,Ccaron:722,ugrave:556,radical:549,Dcaron:722,rcommaaccent:444,Ntilde:722,otilde:500,Rcommaaccent:722,
+Lcommaaccent:667,Atilde:722,Aogonek:722,Aring:722,Otilde:778,zdotaccent:444,Ecaron:667,Iogonek:389,kcommaaccent:556,minus:570,Icircumflex:389,ncaron:556,tcommaaccent:333,logicalnot:570,odieresis:500,udieresis:556,notequal:549,gcommaaccent:500,eth:500,zcaron:444,ncommaaccent:556,onesuperior:300,imacron:278,Euro:500},"Times-BoldItalic":{space:250,exclam:389,quotedbl:555,numbersign:500,dollar:500,percent:833,ampersand:778,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:570,comma:250,hyphen:333,
+period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:333,semicolon:333,less:570,equal:570,greater:570,question:500,at:832,A:667,B:667,C:667,D:722,E:667,F:667,G:722,H:778,I:389,J:500,K:667,L:611,M:889,N:722,O:722,P:611,Q:722,R:667,S:556,T:611,U:722,V:667,W:889,X:667,Y:611,Z:611,bracketleft:333,backslash:278,bracketright:333,asciicircum:570,underscore:500,quoteleft:333,a:500,b:500,c:444,d:500,e:444,f:333,g:500,h:556,i:278,j:278,k:500,l:278,
+m:778,n:556,o:500,p:500,q:500,r:389,s:389,t:278,u:556,v:444,w:667,x:500,y:444,z:389,braceleft:348,bar:220,braceright:348,asciitilde:570,exclamdown:389,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:278,quotedblleft:500,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:556,fl:556,endash:500,dagger:500,daggerdbl:500,periodcentered:250,paragraph:500,bullet:350,quotesinglbase:333,quotedblbase:500,quotedblright:500,guillemotright:500,ellipsis:1E3,perthousand:1E3,
+questiondown:500,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:1E3,AE:944,ordfeminine:266,Lslash:611,Oslash:722,OE:944,ordmasculine:300,ae:722,dotlessi:278,lslash:278,oslash:500,oe:722,germandbls:500,Idieresis:389,eacute:444,abreve:500,uhungarumlaut:556,ecaron:444,Ydieresis:611,divide:570,Yacute:611,Acircumflex:667,aacute:500,Ucircumflex:722,yacute:444,scommaaccent:389,ecircumflex:444,
+Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:556,Edieresis:667,Dcroat:722,commaaccent:250,copyright:747,Emacron:667,ccaron:444,aring:500,Ncommaaccent:722,lacute:278,agrave:500,Tcommaaccent:611,Cacute:667,atilde:500,Edotaccent:667,scaron:389,scedilla:389,iacute:278,lozenge:494,Rcaron:667,Gcommaaccent:722,ucircumflex:556,acircumflex:500,Amacron:667,rcaron:389,ccedilla:444,Zdotaccent:611,Thorn:611,Omacron:722,Racute:667,Sacute:556,dcaron:608,Umacron:722,uring:556,threesuperior:300,Ograve:722,
+Agrave:667,Abreve:667,multiply:570,uacute:556,Tcaron:611,partialdiff:494,ydieresis:444,Nacute:722,icircumflex:278,Ecircumflex:667,adieresis:500,edieresis:444,cacute:444,nacute:556,umacron:556,Ncaron:722,Iacute:389,plusminus:570,brokenbar:220,registered:747,Gbreve:722,Idotaccent:389,summation:600,Egrave:667,racute:389,omacron:500,Zacute:611,Zcaron:611,greaterequal:549,Eth:722,Ccedilla:667,lcommaaccent:278,tcaron:366,eogonek:444,Uogonek:722,Aacute:667,Adieresis:667,egrave:444,zacute:389,iogonek:278,
+Oacute:722,oacute:500,amacron:500,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:576,igrave:278,ohungarumlaut:500,Eogonek:667,dcroat:500,threequarters:750,Scedilla:556,lcaron:382,Kcommaaccent:667,Lacute:611,trademark:1E3,edotaccent:444,Igrave:389,Imacron:389,Lcaron:611,onehalf:750,lessequal:549,ocircumflex:500,ntilde:556,Uhungarumlaut:722,Eacute:667,emacron:444,gbreve:500,onequarter:750,Scaron:556,Scommaaccent:556,Ohungarumlaut:722,degree:400,
+ograve:500,Ccaron:667,ugrave:556,radical:549,Dcaron:722,rcommaaccent:389,Ntilde:722,otilde:500,Rcommaaccent:667,Lcommaaccent:611,Atilde:667,Aogonek:667,Aring:667,Otilde:722,zdotaccent:389,Ecaron:667,Iogonek:389,kcommaaccent:500,minus:606,Icircumflex:389,ncaron:556,tcommaaccent:278,logicalnot:606,odieresis:500,udieresis:556,notequal:549,gcommaaccent:500,eth:500,zcaron:389,ncommaaccent:556,onesuperior:300,imacron:278,Euro:500},"Times-Italic":{space:250,exclam:333,quotedbl:420,numbersign:500,dollar:500,
+percent:833,ampersand:778,quoteright:333,parenleft:333,parenright:333,asterisk:500,plus:675,comma:250,hyphen:333,period:250,slash:278,zero:500,one:500,two:500,three:500,four:500,five:500,six:500,seven:500,eight:500,nine:500,colon:333,semicolon:333,less:675,equal:675,greater:675,question:500,at:920,A:611,B:611,C:667,D:722,E:611,F:611,G:722,H:722,I:333,J:444,K:667,L:556,M:833,N:667,O:722,P:611,Q:722,R:611,S:500,T:556,U:722,V:611,W:833,X:611,Y:556,Z:556,bracketleft:389,backslash:278,bracketright:389,
+asciicircum:422,underscore:500,quoteleft:333,a:500,b:500,c:444,d:500,e:444,f:278,g:500,h:500,i:278,j:278,k:444,l:278,m:722,n:500,o:500,p:500,q:500,r:389,s:389,t:278,u:500,v:444,w:667,x:444,y:444,z:389,braceleft:400,bar:275,braceright:400,asciitilde:541,exclamdown:389,cent:500,sterling:500,fraction:167,yen:500,florin:500,section:500,currency:500,quotesingle:214,quotedblleft:556,guillemotleft:500,guilsinglleft:333,guilsinglright:333,fi:500,fl:500,endash:500,dagger:500,daggerdbl:500,periodcentered:250,
+paragraph:523,bullet:350,quotesinglbase:333,quotedblbase:556,quotedblright:556,guillemotright:500,ellipsis:889,perthousand:1E3,questiondown:500,grave:333,acute:333,circumflex:333,tilde:333,macron:333,breve:333,dotaccent:333,dieresis:333,ring:333,cedilla:333,hungarumlaut:333,ogonek:333,caron:333,emdash:889,AE:889,ordfeminine:276,Lslash:556,Oslash:722,OE:944,ordmasculine:310,ae:667,dotlessi:278,lslash:278,oslash:500,oe:667,germandbls:500,Idieresis:333,eacute:444,abreve:500,uhungarumlaut:500,ecaron:444,
+Ydieresis:556,divide:675,Yacute:556,Acircumflex:611,aacute:500,Ucircumflex:722,yacute:444,scommaaccent:389,ecircumflex:444,Uring:722,Udieresis:722,aogonek:500,Uacute:722,uogonek:500,Edieresis:611,Dcroat:722,commaaccent:250,copyright:760,Emacron:611,ccaron:444,aring:500,Ncommaaccent:667,lacute:278,agrave:500,Tcommaaccent:556,Cacute:667,atilde:500,Edotaccent:611,scaron:389,scedilla:389,iacute:278,lozenge:471,Rcaron:611,Gcommaaccent:722,ucircumflex:500,acircumflex:500,Amacron:611,rcaron:389,ccedilla:444,
+Zdotaccent:556,Thorn:611,Omacron:722,Racute:611,Sacute:500,dcaron:544,Umacron:722,uring:500,threesuperior:300,Ograve:722,Agrave:611,Abreve:611,multiply:675,uacute:500,Tcaron:556,partialdiff:476,ydieresis:444,Nacute:667,icircumflex:278,Ecircumflex:611,adieresis:500,edieresis:444,cacute:444,nacute:500,umacron:500,Ncaron:667,Iacute:333,plusminus:675,brokenbar:275,registered:760,Gbreve:722,Idotaccent:333,summation:600,Egrave:611,racute:389,omacron:500,Zacute:556,Zcaron:556,greaterequal:549,Eth:722,Ccedilla:667,
+lcommaaccent:278,tcaron:300,eogonek:444,Uogonek:722,Aacute:611,Adieresis:611,egrave:444,zacute:389,iogonek:278,Oacute:722,oacute:500,amacron:500,sacute:389,idieresis:278,Ocircumflex:722,Ugrave:722,Delta:612,thorn:500,twosuperior:300,Odieresis:722,mu:500,igrave:278,ohungarumlaut:500,Eogonek:611,dcroat:500,threequarters:750,Scedilla:500,lcaron:300,Kcommaaccent:667,Lacute:556,trademark:980,edotaccent:444,Igrave:333,Imacron:333,Lcaron:611,onehalf:750,lessequal:549,ocircumflex:500,ntilde:500,Uhungarumlaut:722,
+Eacute:611,emacron:444,gbreve:500,onequarter:750,Scaron:500,Scommaaccent:500,Ohungarumlaut:722,degree:400,ograve:500,Ccaron:667,ugrave:500,radical:453,Dcaron:722,rcommaaccent:389,Ntilde:667,otilde:500,Rcommaaccent:611,Lcommaaccent:556,Atilde:611,Aogonek:611,Aring:611,Otilde:722,zdotaccent:389,Ecaron:611,Iogonek:333,kcommaaccent:444,minus:675,Icircumflex:333,ncaron:500,tcommaaccent:278,logicalnot:675,odieresis:500,udieresis:500,notequal:549,gcommaaccent:500,eth:500,zcaron:389,ncommaaccent:500,onesuperior:300,
+imacron:278,Euro:500},ZapfDingbats:{space:278,a1:974,a2:961,a202:974,a3:980,a4:719,a5:789,a119:790,a118:791,a117:690,a11:960,a12:939,a13:549,a14:855,a15:911,a16:933,a105:911,a17:945,a18:974,a19:755,a20:846,a21:762,a22:761,a23:571,a24:677,a25:763,a26:760,a27:759,a28:754,a6:494,a7:552,a8:537,a9:577,a10:692,a29:786,a30:788,a31:788,a32:790,a33:793,a34:794,a35:816,a36:823,a37:789,a38:841,a39:823,a40:833,a41:816,a42:831,a43:923,a44:744,a45:723,a46:749,a47:790,a48:792,a49:695,a50:776,a51:768,a52:792,a53:759,
+a54:707,a55:708,a56:682,a57:701,a58:826,a59:815,a60:789,a61:789,a62:707,a63:687,a64:696,a65:689,a66:786,a67:787,a68:713,a69:791,a70:785,a71:791,a72:873,a73:761,a74:762,a203:762,a75:759,a204:759,a76:892,a77:892,a78:788,a79:784,a81:438,a82:138,a83:277,a84:415,a97:392,a98:392,a99:668,a100:668,a89:390,a90:390,a93:317,a94:317,a91:276,a92:276,a205:509,a85:509,a206:410,a86:410,a87:234,a88:234,a95:334,a96:334,a101:732,a102:544,a103:544,a104:910,a106:667,a107:760,a108:760,a112:776,a111:595,a110:694,a109:626,
+a120:788,a121:788,a122:788,a123:788,a124:788,a125:788,a126:788,a127:788,a128:788,a129:788,a130:788,a131:788,a132:788,a133:788,a134:788,a135:788,a136:788,a137:788,a138:788,a139:788,a140:788,a141:788,a142:788,a143:788,a144:788,a145:788,a146:788,a147:788,a148:788,a149:788,a150:788,a151:788,a152:788,a153:788,a154:788,a155:788,a156:788,a157:788,a158:788,a159:788,a160:894,a161:838,a163:1016,a164:458,a196:748,a165:924,a192:748,a166:918,a167:927,a168:928,a169:928,a170:834,a171:873,a172:828,a173:924,a162:924,
+a174:917,a175:930,a176:931,a177:463,a178:883,a179:836,a193:836,a180:867,a199:867,a181:696,a200:696,a182:874,a201:874,a183:760,a184:946,a197:771,a185:865,a194:771,a198:888,a186:967,a195:888,a187:831,a188:873,a189:927,a190:970,a191:918}},ea={},Xa=function(){function f(a,b,c){this.lexer=a;this.allowStreams=b;this.xref=c;this.imageCache={length:0,adler32:0,stream:null};this.refill()}f.prototype={refill:function(){this.buf1=this.lexer.getObj();this.buf2=this.lexer.getObj()},shift:function(){Y(this.buf2,
+"ID")?(this.buf1=this.buf2,this.buf2=null):(this.buf1=this.buf2,this.buf2=this.lexer.getObj())},getObj:function(a){var b=this.buf1;this.shift();if(b instanceof Aa)switch(b.cmd){case "BI":return this.makeInlineImage(a);case "[":for(b=[];!Y(this.buf1,"]")&&this.buf1!==ea;)b.push(this.getObj(a));this.buf1===ea&&y("End of file inside array");this.shift();return b;case "<<":for(b=new oa(this.xref);!Y(this.buf1,">>")&&this.buf1!==ea;)if(H(this.buf1)){var c=this.buf1.name;this.shift();if(this.buf1===ea)break;
+b.set(c,this.getObj(a))}else R("Malformed dictionary: key must be a name object"),this.shift();this.buf1===ea&&y("End of file inside dictionary");if(Y(this.buf2,"stream"))return this.allowStreams?this.makeStream(b,a):b;this.shift();return b;default:return b}if(V(b))return V(this.buf1)&&Y(this.buf2,"R")?(a=new cb(b,this.buf1),this.shift(),this.shift(),a):b;ma(b)&&a&&(b=a.decryptString(b));return b},makeInlineImage:function(a){for(var b=this.lexer.stream,c=new oa(null);!Y(this.buf1,"ID")&&this.buf1!==
+ea;){H(this.buf1)||y("Dictionary key must be a name object");var e=this.buf1.name;this.shift();if(this.buf1===ea)break;c.set(e,this.getObj(a))}for(var d=b.pos,g=0,f,k;4!=g&&-1!==(f=b.getByte());)switch(f|0){case 32:case 13:case 10:var l=b.peekBytes(5),e=0;for(k=l.length;e<k;e++)if(f=l[e],10!==f&&13!==f&&(32>f||127<f)){g=0;break}g=3===g?4:0;break;case 69:g=2;break;case 73:g=2===g?3:0;break;default:g=0}f=b.pos-4-d;var b=b.makeSubStream(d,f,c),e=!1,m;if(1E3>f&&this.imageCache.length===f){m=b.getBytes();
+b.reset();d=1;e=g=0;for(k=m.length;e<k;++e)d=(d+(m[e]&255))%65521,g=(g+d)%65521;m=g<<16|d;if(this.imageCache.stream&&this.imageCache.adler32===m)return this.buf2=Aa.get("EI"),this.shift(),this.imageCache.stream.reset(),this.imageCache.stream;e=!0}e||this.imageCache.stream||(this.imageCache.length=f,this.imageCache.stream=null);a&&(b=a.createStream(b,f));b=this.filter(b,c,f);b.dict=c;e&&(b.cacheKey="inline_"+f+"_"+m,this.imageCache.adler32=m,this.imageCache.stream=b);this.buf2=Aa.get("EI");this.shift();
+return b},fetchIfRef:function(a){return qa(a)?this.xref.fetch(a):a},makeStream:function(a,b){var c=this.lexer,e=c.stream;c.skipToNextLine();var d=e.pos-1,g=this.fetchIfRef(a.get("Length"));V(g)||(R("Bad "+g+" attribute in stream"),g=0);e.pos=d+g;c.nextChar();this.shift();this.shift();if(!Y(this.buf1,"endstream")){e.pos=d;for(var g=[101,110,100,115,116,114,101,97,109],f=0,k=!1,l,m;e.pos<e.end;){var n=e.peekBytes(2048),q=n.length-9,k=!1;for(m=l=0;l<q;l++)if(n[l]!==g[m])l-=m,m=0;else if(m++,9<=m){l++;
+k=!0;break}if(k){f+=l-9;e.pos+=l-9;break}f+=q;e.pos+=q}k||y("Missing endstream");g=f;c.nextChar();this.shift();this.shift()}this.shift();e=e.makeSubStream(d,g,a);b&&(e=b.createStream(e,g));e=this.filter(e,a,g);e.dict=a;return e},filter:function(a,b,c){var e=this.fetchIfRef(b.get("Filter","F"));b=this.fetchIfRef(b.get("DecodeParms","DP"));if(H(e))return this.makeFilter(a,e.name,c,b);if(ca(e))for(var d=e,g=b,f=0,k=d.length;f<k;++f)e=d[f],H(e)||y("Bad filter name: "+e),b=null,ca(g)&&f in g&&(b=g[f]),
+a=this.makeFilter(a,e.name,c,b),c=null;return a},makeFilter:function(a,b,c,e){if(0===a.dict.get("Length"))return new ec(a);if("FlateDecode"==b||"Fl"==b)return e?new jd(new kd(a,c),c,e):new kd(a,c);if("LZWDecode"==b||"LZW"==b)return b=1,e?(e.has("EarlyChange")&&(b=e.get("EarlyChange")),new jd(new ld(a,c,b),c,e)):new ld(a,c,b);if("DCTDecode"==b||"DCT"==b)return new xb(a,c,a.dict,this.xref);if("JPXDecode"==b||"JPX"==b)return new ne(a,c,a.dict);if("ASCII85Decode"==b||"A85"==b)return new oe(a,c);if("ASCIIHexDecode"==
+b||"AHx"==b)return new pe(a,c);if("CCITTFaxDecode"==b||"CCF"==b)return new qe(a,c,e);if("RunLengthDecode"==b||"RL"==b)return new re(a,c);if("JBIG2Decode"==b)return new se(a,c,a.dict);O('filter "'+b+'" not supported yet');return a}};return f}(),wa=function(){function f(a,b){this.stream=a;this.nextChar();this.strBuf=[];this.knownCommands=b}function a(a){return 48<=a&&57>=a?a&15:65<=a&&70>=a||97<=a&&102>=a?(a&15)+9:-1}f.isSpace=function(a){return 32===a||9===a||13===a||10===a};var b=[1,0,0,0,0,0,0,0,
+0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];f.prototype=
+{nextChar:function(){return this.currentChar=this.stream.getByte()},peekChar:function(){return this.stream.peekBytes(1)[0]},getNumber:function(){var a=this.currentChar,b=!1,d=0,g=1;45===a?(g=-1,a=this.nextChar()):43===a&&(a=this.nextChar());46===a&&(d=10,a=this.nextChar());if(48>a||57<a)return y("Invalid number: "+String.fromCharCode(a)),0;for(var f=a-48,k=0,l=1;0<=(a=this.nextChar());)if(48<=a&&57>=a)a-=48,b?k=10*k+a:(0!==d&&(d*=10),f=10*f+a);else if(46===a)if(0===d)d=1;else break;else if(45===a)O("Badly formated number");
+else if(69===a||101===a){a=this.peekChar();if(43===a||45===a)l=45===a?-1:1,this.nextChar();else if(48>a||57<a)break;b=!0}else break;0!==d&&(f/=d);b&&(f*=Math.pow(10,l*k));return g*f},getString:function(){var a=1,b=!1,d=this.strBuf;d.length=0;for(var g=this.nextChar();;){var f=!1;switch(g|0){case -1:O("Unterminated string");b=!0;break;case 40:++a;d.push("(");break;case 41:0===--a?(this.nextChar(),b=!0):d.push(")");break;case 92:g=this.nextChar();switch(g){case -1:O("Unterminated string");b=!0;break;
+case 110:d.push("\n");break;case 114:d.push("\r");break;case 116:d.push("\t");break;case 98:d.push("\b");break;case 102:d.push("\f");break;case 92:case 40:case 41:d.push(String.fromCharCode(g));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:var k=g&15,g=this.nextChar(),f=!0;48<=g&&55>=g&&(k=(k<<3)+(g&15),g=this.nextChar(),48<=g&&55>=g&&(f=!1,k=(k<<3)+(g&15)));d.push(String.fromCharCode(k));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:d.push(String.fromCharCode(g))}break;
+default:d.push(String.fromCharCode(g))}if(b)break;f||(g=this.nextChar())}return d.join("")},getName:function(){var c,e=this.strBuf;for(e.length=0;0<=(c=this.nextChar())&&!b[c];)if(35===c){c=this.nextChar();var d=a(c);if(-1!=d){var g=a(this.nextChar());-1===g&&y("Illegal digit in hex char in name: "+g);e.push(String.fromCharCode(d<<4|g))}else e.push("#",String.fromCharCode(c))}else e.push(String.fromCharCode(c));128<e.length&&y("Warning: name token is longer than allowed by the spec: "+e.length);return Da.get(e.join(""))},
+getHexString:function(){var c=this.strBuf;c.length=0;for(var e=this.currentChar,d=!0,g,f;;)if(0>e){O("Unterminated hex string");break}else if(62===e){this.nextChar();break}else{if(1!==b[e]){if(d){if(g=a(e),-1===g){O('Ignoring invalid character "'+e+'" in hex string');e=this.nextChar();continue}}else{f=a(e);if(-1===f){O('Ignoring invalid character "'+e+'" in hex string');e=this.nextChar();continue}c.push(String.fromCharCode(g<<4|f))}d=!d}e=this.nextChar()}return c.join("")},getObj:function(){for(var a=
+!1,e=this.currentChar;;){if(0>e)return ea;if(a){if(10===e||13===e)a=!1}else if(37===e)a=!0;else if(1!==b[e])break;e=this.nextChar()}switch(e|0){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:return this.nextChar(),Aa.get("[");case 93:return this.nextChar(),Aa.get("]");case 60:return e=this.nextChar(),60===e?(this.nextChar(),Aa.get("<<")):this.getHexString();
+case 62:return e=this.nextChar(),62===e?(this.nextChar(),Aa.get(">>")):Aa.get(">");case 123:return this.nextChar(),Aa.get("{");case 125:return this.nextChar(),Aa.get("}");case 41:y("Illegal character: "+e)}var a=String.fromCharCode(e),d=this.knownCommands,g=d&&a in d;for(;0<=(e=this.nextChar())&&!b[e];){var f=a+String.fromCharCode(e);if(g&&!(f in d))break;128===a.length&&y("Command token too long: "+a.length);a=f;g=d&&a in d}return"true"===a?!0:"false"===a?!1:"null"===a?null:Aa.get(a)},skipToNextLine:function(){for(var a=
+this.currentChar;0<=a;){if(13===a){a=this.nextChar();10===a&&this.nextChar();break}else if(10===a){this.nextChar();break}a=this.nextChar()}}};return f}(),Cd=function(){function f(a){this.parser=new Xa(new wa(a),!1,null);a=this.parser.getObj();var b=this.parser.getObj(),c=this.parser.getObj();this.linDict=this.parser.getObj();V(a)&&V(b)&&Y(c,"obj")&&N(this.linDict)&&(a=this.linDict.get("Linearized"),Ha(a)&&0<a||(this.linDict=null))}f.prototype={getInt:function(a){var b=this.linDict,c;if(N(b)&&V(c=
+b.get(a))&&0<c)return c;y('"'+a+'" field in linearization table is invalid')},getHint:function(a){var b=this.linDict,c,e;if(N(b)&&ca(c=b.get("H"))&&2<=c.length&&V(e=c[a])&&0<e)return e;y("Hints table in linearization table is invalid: "+a)},get length(){return N(this.linDict)?this.getInt("L"):0},get hintsOffset(){return this.getHint(0)},get hintsLength(){return this.getHint(1)},get hintsOffset2(){return this.getHint(2)},get hintsLenth2(){return this.getHint(3)},get objectNumberFirst(){return this.getInt("O")},
+get endFirst(){return this.getInt("E")},get numPages(){return this.getInt("N")},get mainXRefEntriesOffset(){return this.getInt("T")},get pageFirst(){return this.getInt("P")}};return f}(),Ld=function(){function f(a){this.lexer=a;this.operators=[];this.prev=this.token=null}f.prototype={nextToken:function(){this.prev=this.token;this.token=this.lexer.getToken()},accept:function(a){return this.token.type==a?(this.nextToken(),!0):!1},expect:function(a){if(this.accept(a))return!0;y("Unexpected symbol: found "+
+this.token.type+" expected "+a+".")},parse:function(){this.nextToken();this.expect(ta.LBRACE);this.parseBlock();this.expect(ta.RBRACE);return this.operators},parseBlock:function(){for(;;)if(this.accept(ta.NUMBER))this.operators.push(this.prev.value);else if(this.accept(ta.OPERATOR))this.operators.push(this.prev.value);else if(this.accept(ta.LBRACE))this.parseCondition();else break},parseCondition:function(){var a=this.operators.length;this.operators.push(null,null);this.parseBlock();this.expect(ta.RBRACE);
+if(this.accept(ta.IF))this.operators[a]=this.operators.length,this.operators[a+1]="jz";else if(this.accept(ta.LBRACE)){var b=this.operators.length;this.operators.push(null,null);var c=this.operators.length;this.parseBlock();this.expect(ta.RBRACE);this.expect(ta.IFELSE);this.operators[b]=this.operators.length;this.operators[b+1]="j";this.operators[a]=c;this.operators[a+1]="jz"}else y("PS Function: error parsing conditional.")}};return f}(),ta={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5},$a=
+function(){function f(a,c){this.type=a;this.value=c}var a={};f.getOperator=function(b){var c=a[b];return c?c:a[b]=new f(ta.OPERATOR,b)};f.LBRACE=new f(ta.LBRACE,"{");f.RBRACE=new f(ta.RBRACE,"}");f.IF=new f(ta.IF,"IF");f.IFELSE=new f(ta.IFELSE,"IFELSE");return f}(),Kd=function(){function f(a){this.stream=a;this.nextChar()}f.prototype={nextChar:function(){return this.currentChar=this.stream.getByte()},getToken:function(){for(var a=!1,b=this.currentChar;;){if(0>b)return ea;if(a){if(10===b||13===b)a=
+!1}else if(37==b)a=!0;else if(!wa.isSpace(b))break;b=this.nextChar()}switch(b|0){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return new $a(ta.NUMBER,this.getNumber());case 123:return this.nextChar(),$a.LBRACE;case 125:return this.nextChar(),$a.RBRACE}for(a=String.fromCharCode(b);0<=(b=this.nextChar())&&(65<=b&&90>=b||97<=b&&122>=b);)a+=String.fromCharCode(b);switch(a.toLowerCase()){case "if":return $a.IF;case "ifelse":return $a.IFELSE;default:return $a.getOperator(a)}},
+getNumber:function(){for(var a=this.currentChar,b=String.fromCharCode(a);0<=(a=this.nextChar());)if(48<=a&&57>=a||45===a||46===a)b+=String.fromCharCode(a);else break;a=parseFloat(b);isNaN(a)&&y("Invalid floating point number: "+a);return a}};return f}(),ha=function(){function f(a,b,c,e){this.bytes=a instanceof Uint8Array?a:new Uint8Array(a);this.pos=this.start=b||0;this.end=b+c||this.bytes.length;this.dict=e}f.prototype={get length(){return this.end-this.start},get isEmpty(){return 0===this.length},
+getByte:function(){return this.pos>=this.end?-1:this.bytes[this.pos++]},getUint16:function(){var a=this.getByte(),b=this.getByte();return(a<<8)+b},getInt32:function(){var a=this.getByte(),b=this.getByte(),c=this.getByte(),e=this.getByte();return(a<<24)+(b<<16)+(c<<8)+e},getBytes:function(a){var b=this.bytes,c=this.pos,e=this.end;if(!a)return b.subarray(c,e);a=c+a;a>e&&(a=e);this.pos=a;return b.subarray(c,a)},peekBytes:function(a){a=this.getBytes(a);this.pos-=a.length;return a},skip:function(a){a||
+(a=1);this.pos+=a},reset:function(){this.pos=this.start},moveStart:function(){this.start=this.pos},makeSubStream:function(a,b,c){return new f(this.bytes.buffer,a,b,c)},isStream:!0};return f}(),fe=function(){function f(a){for(var b=a.length,c=new Uint8Array(b),e=0;e<b;++e)c[e]=a.charCodeAt(e);ha.call(this,c)}f.prototype=ha.prototype;return f}(),Z=function(){function f(a){this.bufferLength=this.pos=0;this.eof=!1;this.buffer=null;this.minBufferLength=512;if(a)for(;this.minBufferLength<a;)this.minBufferLength*=
+2}f.prototype={get isEmpty(){for(;!this.eof&&0===this.bufferLength;)this.readBlock();return 0===this.bufferLength},ensureBuffer:function(a){var b=this.buffer,c;if(b&&(c=b.byteLength,a<=c))return b;for(c=this.minBufferLength;c<a;)c*=2;a=new Uint8Array(c);b&&a.set(b);return this.buffer=a},getByte:function(){for(var a=this.pos;this.bufferLength<=a;){if(this.eof)return-1;this.readBlock()}return this.buffer[this.pos++]},getUint16:function(){var a=this.getByte(),b=this.getByte();return(a<<8)+b},getInt32:function(){var a=
+this.getByte(),b=this.getByte(),c=this.getByte(),e=this.getByte();return(a<<24)+(b<<16)+(c<<8)+e},getBytes:function(a){var b=this.pos;if(a){this.ensureBuffer(b+a);for(a=b+a;!this.eof&&this.bufferLength<a;)this.readBlock();var c=this.bufferLength;a>c&&(a=c)}else{for(;!this.eof;)this.readBlock();a=this.bufferLength;a||(this.buffer=new Uint8Array(0))}this.pos=a;return this.buffer.subarray(b,a)},peekBytes:function(a){a=this.getBytes(a);this.pos-=a.length;return a},makeSubStream:function(a,b,c){for(var e=
+a+b;this.bufferLength<=e&&!this.eof;)this.readBlock();return new ha(this.buffer,a,b,c)},skip:function(a){a||(a=1);this.pos+=a},reset:function(){this.pos=0},getBaseStreams:function(){return this.str&&this.str.getBaseStreams?this.str.getBaseStreams():[]}};return f}(),zd=function(){function f(a){this.streams=a;Z.call(this,null)}f.prototype=Object.create(Z.prototype);f.prototype.readBlock=function(){var a=this.streams;if(0===a.length)this.eof=!0;else{var a=a.shift().getBytes(),b=this.bufferLength,c=b+
+a.length;this.ensureBuffer(c).set(a,b);this.bufferLength=c}};f.prototype.getBaseStreams=function(){for(var a=[],b=0,c=this.streams.length;b<c;b++){var e=this.streams[b];e.getBaseStreams&&Q.concatenateToArray(a,e.getBaseStreams())}return a};return f}(),kd=function(){function f(a,b){this.str=a;this.dict=a.dict;var c=a.getByte(),d=a.getByte();-1!=c&&-1!=d||y("Invalid header in flate stream: "+c+", "+d);8!=(c&15)&&y("Unknown compression method in flate stream: "+c+", "+d);0!==((c<<8)+d)%31&&y("Bad FCHECK in flate stream: "+
+c+", "+d);d&32&&y("FDICT bit set in flate stream: "+c+", "+d);this.codeBuf=this.codeSize=0;Z.call(this,b)}var a=new Uint32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),b=new Uint32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),c=new Uint32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,
+590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),e=[new Uint32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59E4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,
+590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,
+524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,
+589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,
+589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,
+590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,
+524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,
+589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],d=[new Uint32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];f.prototype=Object.create(Z.prototype);f.prototype.getBits=function(a){for(var b=this.str,c=this.codeSize,d=this.codeBuf,
+e;c<a;)-1===(e=b.getByte())&&y("Bad encoding in flate stream"),d|=e<<c,c+=8;this.codeBuf=d>>a;this.codeSize=c-a;return d&(1<<a)-1};f.prototype.getCode=function(a){var b=this.str,c=a[0],d=a[1];a=this.codeSize;for(var e=this.codeBuf;a<d;){var f;-1===(f=b.getByte())&&y("Bad encoding in flate stream");e|=f<<a;a+=8}c=c[e&(1<<d)-1];b=c>>16;c&=65535;(0===a||a<b||0===b)&&y("Bad encoding in flate stream");this.codeBuf=e>>b;this.codeSize=a-b;return c};f.prototype.generateHuffmanTable=function(a){var b=a.length,
+c=0,d;for(d=0;d<b;++d)a[d]>c&&(c=a[d]);for(var e=1<<c,f=new Uint32Array(e),q=1,s=0,p=2;q<=c;++q,s<<=1,p<<=1)for(var x=0;x<b;++x)if(a[x]==q){var r=0,u=s;for(d=0;d<q;++d)r=r<<1|u&1,u>>=1;for(d=r;d<e;d+=p)f[d]=q<<16|x;++s}return[f,c]};f.prototype.readBlock=function(){var g,f;f=this.str;g=this.getBits(3);g&1&&(this.eof=!0);g>>=1;if(0===g){var k;-1===(k=f.getByte())&&y("Bad block header in flate stream");var l=k;-1===(k=f.getByte())&&y("Bad block header in flate stream");l|=k<<8;-1===(k=f.getByte())&&
+y("Bad block header in flate stream");g=k;-1===(k=f.getByte())&&y("Bad block header in flate stream");g|=k<<8;g==(~l&65535)||0===l&&0===g||y("Bad uncompressed block length in flate stream");this.codeSize=this.codeBuf=0;k=this.bufferLength;g=this.ensureBuffer(k+l);var m=k+l;this.bufferLength=m;if(0===l)0===f.peekBytes(1).length&&(this.eof=!0);else for(l=k;l<m;++l){if(-1===(k=f.getByte())){this.eof=!0;break}g[l]=k}}else{if(1==g)k=e,l=d;else if(2==g){g=this.getBits(5)+257;m=this.getBits(5)+1;f=this.getBits(4)+
+4;l=new Uint8Array(a.length);for(k=0;k<f;++k)l[a[k]]=this.getBits(3);l=this.generateHuffmanTable(l);k=f=0;for(var m=g+m,n=new Uint8Array(m),q,s,p;k<m;){p=this.getCode(l);if(16==p)q=2,s=3,p=f;else if(17==p)s=q=3,p=f=0;else if(18==p)q=7,s=11,p=f=0;else{n[k++]=f=p;continue}for(q=this.getBits(q)+s;0<q--;)n[k++]=p}k=this.generateHuffmanTable(n.subarray(0,g));l=this.generateHuffmanTable(n.subarray(g,m))}else y("Unknown block type in flate stream");m=(g=this.buffer)?g.length:0;for(n=this.bufferLength;;)if(p=
+this.getCode(k),256>p)n+1>=m&&(g=this.ensureBuffer(n+1),m=g.length),g[n++]=p;else{if(256==p){this.bufferLength=n;break}p-=257;p=b[p];q=p>>16;0<q&&(q=this.getBits(q));f=(p&65535)+q;p=this.getCode(l);p=c[p];q=p>>16;0<q&&(q=this.getBits(q));p=(p&65535)+q;n+f>=m&&(g=this.ensureBuffer(n+f),m=g.length);for(q=0;q<f;++q,++n)g[n]=g[n-p]}}};return f}(),jd=function(){function f(a,b,c){var e=this.predictor=c.get("Predictor")||1;if(1>=e)return a;2!==e&&(10>e||15<e)&&y("Unsupported predictor: "+e);this.readBlock=
+2===e?this.readBlockTiff:this.readBlockPng;this.str=a;this.dict=a.dict;a=this.colors=c.get("Colors")||1;e=this.bits=c.get("BitsPerComponent")||8;c=this.columns=c.get("Columns")||1;this.pixBytes=a*e+7>>3;this.rowBytes=c*a*e+7>>3;Z.call(this,b);return this}f.prototype=Object.create(Z.prototype);f.prototype.readBlockTiff=function(){var a=this.rowBytes,b=this.bufferLength,c=this.ensureBuffer(b+a),e=this.bits,d=this.colors,f=this.str.getBytes(a);this.eof=!f.length;if(!this.eof){var h=0,k=0,l=0,m=0,n=b;
+if(1===e)for(b=0;b<a;++b)e=f[b],h=h<<8|e,c[n++]=(e^h>>d)&255,h&=65535;else if(8===e){for(b=0;b<d;++b)c[n++]=f[b];for(;b<a;++b)c[n]=c[n-d]+f[b],n++}else{for(var n=new Uint8Array(d+1),q=(1<<e)-1,s=0,p=b,x=this.columns,b=0;b<x;++b)for(var r=0;r<d;++r)l<e&&(h=h<<8|f[s++]&255,l+=8),n[r]=n[r]+(h>>l-e)&q,l-=e,k=k<<e|n[r],m+=e,8<=m&&(c[p++]=k>>m-8&255,m-=8);0<m&&(c[p++]=(k<<8-m)+(h&(1<<8-m)-1))}this.bufferLength+=a}};f.prototype.readBlockPng=function(){var a=this.rowBytes,b=this.pixBytes,c=this.str.getByte(),
+e=this.str.getBytes(a);this.eof=!e.length;if(!this.eof){var d=this.bufferLength,f=this.ensureBuffer(d+a),h=f.subarray(d-a,d);0===h.length&&(h=new Uint8Array(a));var k,l;switch(c){case 0:for(c=0;c<a;++c)f[d++]=e[c];break;case 1:for(c=0;c<b;++c)f[d++]=e[c];for(;c<a;++c)f[d]=f[d-b]+e[c]&255,d++;break;case 2:for(c=0;c<a;++c)f[d++]=h[c]+e[c]&255;break;case 3:for(c=0;c<b;++c)f[d++]=(h[c]>>1)+e[c];for(;c<a;++c)f[d]=(h[c]+f[d-b]>>1)+e[c]&255,d++;break;case 4:for(c=0;c<b;++c)k=h[c],l=e[c],f[d++]=k+l;for(;c<
+a;++c){k=h[c];var m=h[c-b],n=f[d-b];l=n+k-m;var q=l-n;0>q&&(q=-q);var s=l-k;0>s&&(s=-s);var p=l-m;0>p&&(p=-p);l=e[c];q<=s&&q<=p?f[d++]=n+l:s<=p?f[d++]=k+l:f[d++]=m+l}break;default:y("Unsupported predictor: "+c)}this.bufferLength+=a}};return f}(),xb=function(){function f(a,b,c,e){this.stream=a;this.maybeLength=b;this.dict=c;Z.call(this,b)}f.prototype=Object.create(Z.prototype);Object.defineProperty(f.prototype,"bytes",{get:function(){return W(this,"bytes",this.stream.getBytes(this.maybeLength))},configurable:!0});
+f.prototype.ensureBuffer=function(a){if(!this.bufferLength)try{var b=new te;-1!=this.colorTransform&&(b.colorTransform=this.colorTransform);b.parse(this.bytes);var c=b.getData(this.drawWidth,this.drawHeight,!0);this.buffer=c;this.bufferLength=c.length;this.eof=!0}catch(e){y("JPEG error: "+e)}};f.prototype.getBytes=function(a){this.ensureBuffer();return this.buffer};f.prototype.getIR=function(){return PDFJS.createObjectURL(this.bytes,"image/jpeg")};f.prototype.isNativelySupported=function(a,b){var c=
+L.parse(this.dict.get("ColorSpace","CS"),a,b);return"DeviceGray"===c.name||"DeviceRGB"===c.name};f.prototype.isNativelyDecodable=function(a,b){var c=L.parse(this.dict.get("ColorSpace","CS"),a,b).numComps;return 1==c||3==c};return f}(),ne=function(){function f(a,b,c){this.stream=a;this.maybeLength=b;this.dict=c;Z.call(this,b)}f.prototype=Object.create(Z.prototype);Object.defineProperty(f.prototype,"bytes",{get:function(){return W(this,"bytes",this.stream.getBytes(this.maybeLength))},configurable:!0});
+f.prototype.ensureBuffer=function(a){if(!this.bufferLength){a=new id;a.parse(this.bytes);var b=a.width,c=a.height,e=a.componentsCount,d=a.tiles.length;if(1===d)this.buffer=a.tiles[0].items;else{for(var c=new Uint8Array(b*c*e),f=0;f<d;f++)for(var h=a.tiles[f],k=h.height,l=h.items,m=0,n=(b*h.top+h.left)*e,q=b*e,h=h.width*e,s=0;s<k;s++){var p=l.subarray(m,m+h);c.set(p,n);m+=h;n+=q}this.buffer=c}this.bufferLength=this.buffer.length;this.eof=!0}};return f}(),se=function(){function f(a,b,c){this.stream=
+a;this.maybeLength=b;this.dict=c;Z.call(this,b)}f.prototype=Object.create(Z.prototype);Object.defineProperty(f.prototype,"bytes",{get:function(){return W(this,"bytes",this.stream.getBytes(this.maybeLength))},configurable:!0});f.prototype.ensureBuffer=function(a){if(!this.bufferLength){a=new ue;var b=[],c=this.dict.get("DecodeParms");ca(c)&&(1<c.length&&O("JBIG2 - 'DecodeParms' array with multiple elements not supported."),c=c[0]);c&&c.has("JBIG2Globals")&&(c=c.get("JBIG2Globals").getBytes(),b.push({data:c,
+start:0,end:c.length}));b.push({data:this.bytes,start:0,end:this.bytes.length});a=a.parseChunks(b);b=a.length;for(c=0;c<b;c++)a[c]^=255;this.buffer=a;this.bufferLength=b;this.eof=!0}};return f}(),Xd=function(){function f(a,b,c){this.str=a;this.dict=a.dict;this.decrypt=c;this.nextChunk=null;this.initialized=!1;Z.call(this,b)}f.prototype=Object.create(Z.prototype);f.prototype.readBlock=function(){var a;this.initialized?a=this.nextChunk:(a=this.str.getBytes(512),this.initialized=!0);if(a&&0!==a.length){this.nextChunk=
+this.str.getBytes(512);var b=this.decrypt;a=b(a,!(this.nextChunk&&0<this.nextChunk.length));var b=this.bufferLength,c,e=a.length,d=this.ensureBuffer(b+e);for(c=0;c<e;c++)d[b++]=a[c];this.bufferLength=b}else this.eof=!0};return f}(),oe=function(){function f(a,b){this.str=a;this.dict=a.dict;this.input=new Uint8Array(5);b&&(b*=0.8);Z.call(this,b)}f.prototype=Object.create(Z.prototype);f.prototype.readBlock=function(){for(var a=this.str,b=a.getByte();wa.isSpace(b);)b=a.getByte();if(-1===b||126===b)this.eof=
+!0;else{var c=this.bufferLength,e;if(122==b){a=this.ensureBuffer(c+4);for(e=0;4>e;++e)a[c+e]=0;this.bufferLength+=4}else{var d=this.input;d[0]=b;for(e=1;5>e;++e){for(b=a.getByte();wa.isSpace(b);)b=a.getByte();d[e]=b;if(-1===b||126==b)break}a=this.ensureBuffer(c+e-1);this.bufferLength+=e-1;if(5>e){for(;5>e;++e)d[e]=117;this.eof=!0}for(e=b=0;5>e;++e)b=85*b+(d[e]-33);for(e=3;0<=e;--e)a[c+e]=b&255,b>>=8}}};return f}(),pe=function(){function f(a,b){this.str=a;this.dict=a.dict;this.firstDigit=-1;b&&(b*=
+0.5);Z.call(this,b)}f.prototype=Object.create(Z.prototype);f.prototype.readBlock=function(){var a=this.str.getBytes(8E3);if(a.length){for(var b=this.ensureBuffer(this.bufferLength+(a.length+1>>1)),c=this.bufferLength,e=this.firstDigit,d=0,f=a.length;d<f;d++){var h=a[d];if(48<=h&&57>=h)h&=15;else if(65<=h&&70>=h||97<=h&&102>=h)h=(h&15)+9;else if(62===h){this.eof=!0;break}else continue;0>e?e=h:(b[c++]=e<<4|h,e=-1)}0<=e&&this.eof&&(b[c++]=e<<4,e=-1);this.firstDigit=e;this.bufferLength=c}else this.eof=
+!0};return f}(),re=function(){function f(a,b){this.str=a;this.dict=a.dict;Z.call(this,b)}f.prototype=Object.create(Z.prototype);f.prototype.readBlock=function(){var a=this.str.getBytes(2);if(!a||2>a.length||128==a[0])this.eof=!0;else{var b,c=this.bufferLength,e=a[0];if(128>e)b=this.ensureBuffer(c+e+1),b[c++]=a[1],0<e&&(a=this.str.getBytes(e),b.set(a,c),c+=e);else{e=257-e;a=a[1];b=this.ensureBuffer(c+e+1);for(var d=0;d<e;d++)b[c++]=a}this.bufferLength=c}};return f}(),qe=function(){function f(a,b,c){this.str=
+a;this.dict=a.dict;c=c||oa.empty;this.encoding=c.get("K")||0;this.eoline=c.get("EndOfLine")||!1;this.byteAlign=c.get("EncodedByteAlign")||!1;this.columns=c.get("Columns")||1728;this.rows=c.get("Rows")||0;a=c.get("EndOfBlock");if(null===a||void 0===a)a=!0;this.eoblock=a;this.black=c.get("BlackIs1")||!1;this.codingLine=new Uint32Array(this.columns+1);this.refLine=new Uint32Array(this.columns+2);this.codingLine[0]=this.columns;this.row=this.codingPos=0;this.nextLine2D=0>this.encoding;for(this.outputBits=
+this.inputBuf=this.inputBits=0;0===(c=this.lookBits(12));)this.eatBits(1);1==c&&this.eatBits(12);0<this.encoding&&(this.nextLine2D=!this.lookBits(1),this.eatBits(1));Z.call(this,b)}var a=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,
+3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],b=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],
+[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],c=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],
+[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],
+[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],
+[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],
+[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,
+9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,
+5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],
+[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],e=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],
+[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,
+24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],d=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],
+[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,
+10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],
+[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],g=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],
+[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];f.prototype=Object.create(Z.prototype);f.prototype.readBlock=function(){for(;!this.eof;){var a=this.lookChar();this.ensureBuffer(this.bufferLength+1);this.buffer[this.bufferLength++]=a}};f.prototype.addPixels=function(a,b){var c=this.codingLine,d=this.codingPos;a>c[d]&&(a>this.columns&&(R("row is wrong length"),this.err=!0,a=this.columns),d&1^b&&++d,c[d]=a);this.codingPos=d};f.prototype.addPixelsNeg=function(a,
+b){var c=this.codingLine,d=this.codingPos;if(a>c[d])a>this.columns&&(R("row is wrong length"),this.err=!0,a=this.columns),d&1^b&&++d,c[d]=a;else if(a<c[d]){0>a&&(R("invalid code"),this.err=!0,a=0);for(;0<d&&a<c[d-1];)--d;c[d]=a}this.codingPos=d};f.prototype.lookChar=function(){var a=this.refLine,b=this.codingLine,c=this.columns,d,e,f;if(0===this.outputBits){if(this.eof)return null;this.err=!1;var g,p;if(this.nextLine2D){for(d=0;b[d]<c;++d)a[d]=b[d];a[d++]=c;a[d]=c;for(e=d=this.codingPos=b[0]=0;b[this.codingPos]<
+c;)switch(f=this.getTwoDimCode(),f){case 0:this.addPixels(a[d+1],e);a[d+1]<c&&(d+=2);break;case 1:f=g=0;if(e){do f+=p=this.getBlackCode();while(64<=p);do g+=p=this.getWhiteCode();while(64<=p)}else{do f+=p=this.getWhiteCode();while(64<=p);do g+=p=this.getBlackCode();while(64<=p)}this.addPixels(b[this.codingPos]+f,e);for(b[this.codingPos]<c&&this.addPixels(b[this.codingPos]+g,e^1);a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 7:this.addPixels(a[d]+3,e);e^=1;if(b[this.codingPos]<c)for(++d;a[d]<=b[this.codingPos]&&
+a[d]<c;)d+=2;break;case 5:this.addPixels(a[d]+2,e);e^=1;if(b[this.codingPos]<c)for(++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 3:this.addPixels(a[d]+1,e);e^=1;if(b[this.codingPos]<c)for(++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 2:this.addPixels(a[d],e);e^=1;if(b[this.codingPos]<c)for(++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 8:this.addPixelsNeg(a[d]-3,e);e^=1;if(b[this.codingPos]<c)for(0<d?--d:++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 6:this.addPixelsNeg(a[d]-
+2,e);e^=1;if(b[this.codingPos]<c)for(0<d?--d:++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case 4:this.addPixelsNeg(a[d]-1,e);e^=1;if(b[this.codingPos]<c)for(0<d?--d:++d;a[d]<=b[this.codingPos]&&a[d]<c;)d+=2;break;case ea:this.addPixels(c,0);this.eof=!0;break;default:R("bad 2d code"),this.addPixels(c,0),this.err=!0}}else for(e=this.codingPos=b[0]=0;b[this.codingPos]<c;){f=0;if(e){do f+=p=this.getBlackCode();while(64<=p)}else{do f+=p=this.getWhiteCode();while(64<=p)}this.addPixels(b[this.codingPos]+
+f,e);e^=1}this.byteAlign&&(this.inputBits&=-8);a=!1;if(this.eoblock||this.row!=this.rows-1){for(f=this.lookBits(12);0===f;)this.eatBits(1),f=this.lookBits(12);1==f?(this.eatBits(12),a=!0):f==ea&&(this.eof=!0)}else this.eof=!0;!this.eof&&0<this.encoding&&(this.nextLine2D=!this.lookBits(1),this.eatBits(1));if(this.eoblock&&a){if(f=this.lookBits(12),1==f){this.eatBits(12);0<this.encoding&&(this.lookBits(1),this.eatBits(1));if(0<=this.encoding)for(d=0;4>d;++d)f=this.lookBits(12),1!=f&&R("bad rtc code: "+
+f),this.eatBits(12),0<this.encoding&&(this.lookBits(1),this.eatBits(1));this.eof=!0}}else if(this.err&&this.eoline){for(;;){f=this.lookBits(13);if(f==ea)return this.eof=!0,null;if(1==f>>1)break;this.eatBits(1)}this.eatBits(12);0<this.encoding&&(this.eatBits(1),this.nextLine2D=!(f&1))}this.outputBits=0<b[0]?b[this.codingPos=0]:b[this.codingPos=1];this.row++}if(8<=this.outputBits)a=this.codingPos&1?0:255,this.outputBits-=8,0===this.outputBits&&b[this.codingPos]<c&&(this.codingPos++,this.outputBits=
+b[this.codingPos]-b[this.codingPos-1]);else{f=8;a=0;do this.outputBits>f?(a<<=f,this.codingPos&1||(a|=255>>8-f),this.outputBits-=f,f=0):(a<<=this.outputBits,this.codingPos&1||(a|=255>>8-this.outputBits),f-=this.outputBits,this.outputBits=0,b[this.codingPos]<c?(this.codingPos++,this.outputBits=b[this.codingPos]-b[this.codingPos-1]):0<f&&(a<<=f,f=0));while(f)}this.black&&(a^=255);return a};f.prototype.findTableCode=function(a,b,c,d){for(d=d||0;a<=b;++a){var e=this.lookBits(a);if(e==ea)return[!0,1,!1];
+a<b&&(e<<=b-a);if(!d||e>=d)if(e=c[e-d],e[0]==a)return this.eatBits(a),[!0,e[1],!0]}return[!1,0,!1]};f.prototype.getTwoDimCode=function(){var b=0;if(this.eoblock){if(b=this.lookBits(7),(b=a[b])&&0<b[0])return this.eatBits(b[0]),b[1]}else if(b=this.findTableCode(1,7,a),b[0]&&b[2])return b[1];R("Bad two dim code");return ea};f.prototype.getWhiteCode=function(){var a=0;if(this.eoblock){a=this.lookBits(12);if(a==ea)return 1;a=0===a>>5?b[a]:c[a>>3];if(0<a[0])return this.eatBits(a[0]),a[1]}else{a=this.findTableCode(1,
+9,c);if(a[0])return a[1];a=this.findTableCode(11,12,b);if(a[0])return a[1]}R("bad white code");this.eatBits(1);return 1};f.prototype.getBlackCode=function(){var a;if(this.eoblock){a=this.lookBits(13);if(a==ea)return 1;a=0===a>>7?e[a]:0===a>>9&&0!==a>>7?d[(a>>1)-64]:g[a>>7];if(0<a[0])return this.eatBits(a[0]),a[1]}else{a=this.findTableCode(2,6,g);if(a[0])return a[1];a=this.findTableCode(7,12,d,64);if(a[0])return a[1];a=this.findTableCode(10,13,e);if(a[0])return a[1]}R("bad black code");this.eatBits(1);
+return 1};f.prototype.lookBits=function(a){for(var b;this.inputBits<a;){if(-1===(b=this.str.getByte()))return 0===this.inputBits?ea:this.inputBuf<<a-this.inputBits&65535>>16-a;this.inputBuf=(this.inputBuf<<8)+b;this.inputBits+=8}return this.inputBuf>>this.inputBits-a&65535>>16-a};f.prototype.eatBits=function(a){0>(this.inputBits-=a)&&(this.inputBits=0)};return f}(),ld=function(){function f(a,b,c){this.str=a;this.dict=a.dict;this.bitsCached=this.cachedData=0;a={earlyChange:c,codeLength:9,nextCode:258,
+dictionaryValues:new Uint8Array(4096),dictionaryLengths:new Uint16Array(4096),dictionaryPrevCodes:new Uint16Array(4096),currentSequence:new Uint8Array(4096),currentSequenceLength:0};for(c=0;256>c;++c)a.dictionaryValues[c]=c,a.dictionaryLengths[c]=1;this.lzwState=a;Z.call(this,b)}f.prototype=Object.create(Z.prototype);f.prototype.readBits=function(a){for(var b=this.bitsCached,c=this.cachedData;b<a;){var e=this.str.getByte();if(-1===e)return this.eof=!0,null;c=c<<8|e;b+=8}this.bitsCached=b-=a;this.cachedData=
+c;this.lastCode=null;return c>>>b&(1<<a)-1};f.prototype.readBlock=function(){var a=1024,b,c,e,d=this.lzwState;if(d){var f=d.earlyChange,h=d.nextCode,k=d.dictionaryValues,l=d.dictionaryLengths,m=d.dictionaryPrevCodes,n=d.codeLength,q=d.prevCode,s=d.currentSequence,p=d.currentSequenceLength,x=0,r=this.bufferLength,u=this.ensureBuffer(this.bufferLength+a);for(b=0;512>b;b++){var v=this.readBits(n),P=0<p;if(256>v)s[0]=v,p=1;else if(258<=v)if(v<h)for(p=l[v],c=p-1,e=v;0<=c;c--)s[c]=k[e],e=m[e];else s[p++]=
+s[0];else if(256==v){n=9;h=258;p=0;continue}else{this.eof=!0;delete this.lzwState;break}P&&(m[h]=q,l[h]=l[q]+1,k[h]=s[0],h++,n=h+f&h+f-1?n:Math.min(Math.log(h+f)/0.6931471805599453+1,12)|0);q=v;x+=p;if(a<x){do a+=512;while(a<x);u=this.ensureBuffer(this.bufferLength+a)}for(c=0;c<p;c++)u[r++]=s[c]}d.nextCode=h;d.codeLength=n;d.prevCode=q;d.currentSequenceLength=p;this.bufferLength=r}};return f}(),ec=function(){function f(){ha.call(this,new Uint8Array(0))}f.prototype=ha.prototype;return f}(),ve=PDFJS.WorkerMessageHandler=
+{setup:function(f){function a(a){var b=Ia(),f=function(){var a=c.ensureDoc("numPages"),e=c.ensureDoc("fingerprint"),f=c.ensureXRef("encrypt");Promise.all([a,e,f]).then(function(a){b.resolve({numPages:a[0],fingerprint:a[1],encrypted:!!a[2]})},h)},h=function(a){b.reject(a)};c.ensureDoc("checkHeader",[]).then(function(){c.ensureDoc("parseStartXRef",[]).then(function(){c.ensureDoc("parse",[a]).then(f,h)},h)},h);return b.promise}function b(a){var b=Ia(),g=a.source,h=a.disableRange;if(g.data){try{c=new yc(g.data,
+g.password),b.resolve()}catch(k){b.reject(k)}return b.promise}if(g.chunkedViewerLoading){try{c=new zc(g,f),b.resolve()}catch(l){b.reject(l)}return b.promise}var m=new wc(g.url,{httpHeaders:g.httpHeaders,withCredentials:g.withCredentials}),n=m.requestFull({onHeadersReceived:function(){if(!h){var a=m.getRequestXhr(n);if("bytes"===a.getResponseHeader("Accept-Ranges")&&"identity"===(a.getResponseHeader("Content-Encoding")||"identity")&&(a=a.getResponseHeader("Content-Length"),a=parseInt(a,10),V(a)&&(g.length=
+a,!(a<=2*bc)))){m.abortRequest(n);try{c=new zc(g,f),b.resolve(c)}catch(e){b.reject(e)}}}},onDone:function(a){try{c=new yc(a.chunk,g.password),b.resolve()}catch(e){b.reject(e)}},onError:function(a){404==a?(a=new sc('Missing PDF "'+g.url+'".'),f.send("MissingPDF",{exception:a})):f.send("DocError","Unexpected server response ("+a+') while retrieving PDF "'+g.url+'".')},onProgress:function(a){f.send("DocProgress",{loaded:a.loaded,total:a.lengthComputable?a.total:g.length})}});return b.promise}var c;f.on("test",
+function(a){a instanceof Uint8Array?(a=255===a[0],f.postMessageTransfers=a,"response"in new XMLHttpRequest?f.send("test",{supportTypedArray:!0,supportTransfers:a}):f.send("test",!1)):f.send("test",!1)});f.on("GetDocRequest",function(e){var d=function(a){f.send("GetDoc",{pdfInfo:a})},g=function(a){a instanceof Kb?a.code===Jb.NEED_PASSWORD?f.send("NeedPassword",{exception:a}):a.code===Jb.INCORRECT_PASSWORD&&f.send("IncorrectPassword",{exception:a}):a instanceof rc?f.send("InvalidPDF",{exception:a}):
+a instanceof sc?f.send("MissingPDF",{exception:a}):f.send("UnknownError",{exception:new sd(a.message,a.toString())})};PDFJS.maxImageSize=void 0===e.maxImageSize?-1:e.maxImageSize;PDFJS.disableFontFace=e.disableFontFace;PDFJS.disableCreateObjectURL=e.disableCreateObjectURL;PDFJS.verbosity=e.verbosity;PDFJS.cMapUrl=void 0===e.cMapUrl?null:e.cMapUrl;PDFJS.cMapPacked=!0===e.cMapPacked;b(e).then(function(){c.onLoadedStream().then(function(a){f.send("DataLoaded",{length:a.bytes.byteLength})})}).then(function k(){a(!1).then(d,
+function(b){b instanceof tc?(c.requestLoadedStream(),c.onLoadedStream().then(function(){a(!0).then(d,g)})):(b instanceof Kb&&c.passwordChanged().then(k),g(b))},g)},g)});f.on("GetPage",function(a){return c.getPage(a.pageIndex).then(function(a){var b=c.ensure(a,"rotate"),e=c.ensure(a,"ref");a=c.ensure(a,"view");return Promise.all([b,e,a]).then(function(a){return{rotate:a[0],ref:a[1],view:a[2]}})})});f.on("GetPageIndex",function(a){a=new cb(a.ref.num,a.ref.gen);return c.pdfDocument.catalog.getPageIndex(a)});
+f.on("GetDestinations",function(a){return c.ensureCatalog("destinations")});f.on("GetAttachments",function(a){return c.ensureCatalog("attachments")});f.on("GetJavaScript",function(a){return c.ensureCatalog("javaScript")});f.on("GetOutline",function(a){return c.ensureCatalog("documentOutline")});f.on("GetMetadata",function(a){return Promise.all([c.ensureDoc("documentInfo"),c.ensureCatalog("metadata")])});f.on("GetData",function(a){c.requestLoadedStream();return c.onLoadedStream().then(function(a){return a.bytes})});
+f.on("UpdatePassword",function(a){c.updatePassword(a)});f.on("GetAnnotations",function(a){return c.getPage(a.pageIndex).then(function(a){return c.ensure(a,"getAnnotationsData",[])})});f.on("RenderPageRequest",function(a){c.getPage(a.pageIndex).then(function(b){var c=a.pageIndex+1,h=Date.now();b.getOperatorList(f,a.intent).then(function(a){R("page="+c+" - getOperatorList: time="+(Date.now()-h)+"ms, len="+a.fnArray.length)},function(b){f.send("PageError",{pageNum:c,error:"string"===typeof b?{message:b,
+stack:"worker.js: while trying to getPage() and getOperatorList()"}:"object"===typeof b?{message:b.message||b.toString(),stack:b.stack||"worker.js: while trying to getPage() and getOperatorList()"}:{message:"Unknown exception type: "+typeof b,stack:"worker.js: while trying to getPage() and getOperatorList()"},intent:a.intent})})})},this);f.on("GetTextContent",function(a){return c.getPage(a.pageIndex).then(function(b){var c=a.pageIndex+1,f=Date.now();return b.extractTextContent().then(function(a){R("text indexing: page="+
+c+" - time="+(Date.now()-f)+"ms");return a})})});f.on("Cleanup",function(a){return c.cleanup()});f.on("Terminate",function(a){c.terminate()})}},md={},we={log:function(){var f=Array.prototype.slice.call(arguments);la.postMessage({action:"console_log",data:f})},error:function(){var f=Array.prototype.slice.call(arguments);la.postMessage({action:"console_error",data:f});throw"pdf.js execution error";},time:function(f){md[f]=Date.now()},timeEnd:function(f){var a=md[f];a||y("Unknown timer name "+f);this.log("Timer:",
+f,Date.now()-a)}};if("undefined"===typeof window){"console"in la||(la.console=we);PDFJS.UnsupportedManager.listen(function(f){la.postMessage({action:"_unsupported_feature",data:f})});var xe=new Zb("worker_processor",this);ve.setup(xe)}var nd=function(){function f(a,c,e){this.data=a;this.bp=c;this.dataEnd=e;this.chigh=a[c];this.clow=0;this.byteIn();this.chigh=this.chigh<<7&65535|this.clow>>9&127;this.clow=this.clow<<7&65535;this.ct-=7;this.a=32768}var a=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,
+nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,
+nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},
+{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},
+{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];f.prototype={byteIn:function(){var a=this.data,c=this.bp;255==a[c]?143<a[c+1]?(this.clow+=65280,this.ct=8):(c++,this.clow+=a[c]<<9,this.ct=7,this.bp=c):(c++,this.clow+=c<this.dataEnd?a[c]<<8:65280,this.ct=8,this.bp=c);65535<this.clow&&(this.chigh+=
+this.clow>>16,this.clow&=65535)},readBit:function(b,c){var e=b[c]>>1,d=b[c]&1,e=a[e],f=e.qe,h=this.a-f;if(this.chigh<f)h<f?(h=f,f=d,e=e.nmps):(h=f,f=1^d,1===e.switchFlag&&(d=f),e=e.nlps);else{this.chigh-=f;if(0!==(h&32768))return this.a=h,d;h<f?(f=1^d,1===e.switchFlag&&(d=f),e=e.nlps):(f=d,e=e.nmps)}do 0===this.ct&&this.byteIn(),h<<=1,this.chigh=this.chigh<<1&65535|this.clow>>15&1,this.clow=this.clow<<1&65535,this.ct--;while(0===(h&32768));this.a=h;b[c]=e<<1|d;return f}};return f}(),te=function(){function f(){}
+function a(a,b){for(var c=0,d=[],e,f,g=16;0<g&&!a[g-1];)g--;d.push({children:[],index:0});var h=d[0],k;for(e=0;e<g;e++){for(f=0;f<a[e];f++){h=d.pop();for(h.children[h.index]=b[c];0<h.index;)h=d.pop();h.index++;for(d.push(h);d.length<=e;)d.push(k={children:[],index:0}),h.children[h.index]=k.children,h=k;c++}e+1<g&&(d.push(k={children:[],index:0}),h.children[h.index]=k.children,h=k)}return d[0].children}function b(a,b,c,e,f,g,h,k,l){function m(){if(0<M)return M--,S>>M&1;S=a[b++];if(255==S){var c=a[b++];
+if(c)throw"unexpected marker: "+(S<<8|c).toString(16);}M=7;return S>>>7}function n(a){for(var b;null!==(b=m());){a=a[b];if("number"===typeof a)return a;if("object"!==typeof a)throw"invalid huffman sequence";}return null}function s(a){for(var b=0;0<a;){var c=m();if(null===c)return;b=b<<1|c;a--}return b}function q(a){var b=s(a);return b>=1<<a-1?b:b+(-1<<a)+1}function t(a,b){var c=n(a.huffmanTableDC),c=0===c?0:q(c);a.blockData[b]=a.pred+=c;for(c=1;64>c;){var e=n(a.huffmanTableAC),f=e&15,e=e>>4;if(0===
+f){if(15>e)break;c+=16}else c+=e,a.blockData[b+d[c]]=q(f),c++}}function G(a,b){var c=n(a.huffmanTableDC),c=0===c?0:q(c)<<l;a.blockData[b]=a.pred+=c}function B(a,b){a.blockData[b]|=m()<<l}function y(a,b){if(0<J)J--;else for(var c=g,e=h;c<=e;){var f=n(a.huffmanTableAC),k=f&15,f=f>>4;if(0===k){if(15>f){J=s(f)+(1<<f)-1;break}c+=16}else c+=f,a.blockData[b+d[c]]=q(k)*(1<<l),c++}}function D(a,b){for(var c=g,e=h,f=0,k;c<=e;){k=d[c];switch(ra){case 0:f=n(a.huffmanTableAC);k=f&15;f>>=4;if(0===k)15>f?(J=s(f)+
+(1<<f),ra=4):(f=16,ra=1);else{if(1!==k)throw"invalid ACn encoding";L=q(k);ra=f?2:3}continue;case 1:case 2:a.blockData[b+k]?a.blockData[b+k]+=m()<<l:(f--,0===f&&(ra=2==ra?3:0));break;case 3:a.blockData[b+k]?a.blockData[b+k]+=m()<<l:(a.blockData[b+k]=L<<l,ra=0);break;case 4:a.blockData[b+k]&&(a.blockData[b+k]+=m()<<l)}c++}4===ra&&(J--,0===J&&(ra=0))}var E=c.mcusPerLine,F=b,S=0,M=0,J=0,ra=0,L,O=e.length,aa,H,N,Q,R;k=c.progressive?0===g?0===k?G:B:0===k?y:D:t;var U=0;c=1==O?e[0].blocksPerLine*e[0].blocksPerColumn:
+E*c.mcusPerColumn;f||(f=c);for(var V,W;U<c;){for(H=0;H<O;H++)e[H].pred=0;J=0;if(1==O)for(aa=e[0],R=0;R<f;R++)k(aa,64*((aa.blocksPerLine+1)*(U/aa.blocksPerLine|0)+U%aa.blocksPerLine)),U++;else for(R=0;R<f;R++){for(H=0;H<O;H++)for(aa=e[H],V=aa.h,W=aa.v,N=0;N<W;N++)for(Q=0;Q<V;Q++)k(aa,64*((aa.blocksPerLine+1)*((U/E|0)*aa.v+N)+(U%E*aa.h+Q)));U++}M=0;aa=a[b]<<8|a[b+1];if(65280>=aa)throw"marker was not found";if(65488<=aa&&65495>=aa)b+=2;else break}return b-F}function c(a,b){for(var c=b.blocksPerLine,
+d=b.blocksPerColumn,e=new Int32Array(64),f=0;f<d;f++)for(var t=0;t<c;t++){for(var I=b,y=64*((b.blocksPerLine+1)*f+t),z=e,A=I.quantizationTable,C=void 0,w=void 0,T=void 0,G=void 0,B=void 0,X=void 0,D=void 0,E=void 0,F=void 0,S=void 0,S=0;64>S;S++)z[S]=I.blockData[y+S]*A[S];for(S=0;8>S;++S)A=8*S,0===z[1+A]&&0===z[2+A]&&0===z[3+A]&&0===z[4+A]&&0===z[5+A]&&0===z[6+A]&&0===z[7+A]?(F=q*z[0+A]+512>>10,z[0+A]=F,z[1+A]=F,z[2+A]=F,z[3+A]=F,z[4+A]=F,z[5+A]=F,z[6+A]=F,z[7+A]=F):(C=q*z[0+A]+128>>8,w=q*z[4+A]+
+128>>8,T=z[2+A],G=z[6+A],B=s*(z[1+A]-z[7+A])+128>>8,E=s*(z[1+A]+z[7+A])+128>>8,X=z[3+A]<<4,D=z[5+A]<<4,F=C-w+1>>1,C=C+w+1>>1,w=F,F=T*n+G*m+128>>8,T=T*m-G*n+128>>8,G=F,F=B-D+1>>1,B=B+D+1>>1,D=F,F=E+X+1>>1,X=E-X+1>>1,E=F,F=C-G+1>>1,C=C+G+1>>1,G=F,F=w-T+1>>1,w=w+T+1>>1,T=F,F=B*l+E*k+2048>>12,B=B*k-E*l+2048>>12,E=F,F=X*h+D*g+2048>>12,X=X*g-D*h+2048>>12,D=F,z[0+A]=C+E,z[7+A]=C-E,z[1+A]=w+D,z[6+A]=w-D,z[2+A]=T+X,z[5+A]=T-X,z[3+A]=G+B,z[4+A]=G-B);for(S=0;8>S;++S)A=S,0===z[8+A]&&0===z[16+A]&&0===z[24+A]&&
+0===z[32+A]&&0===z[40+A]&&0===z[48+A]&&0===z[56+A]?(F=q*z[S+0]+8192>>14,z[0+A]=F,z[8+A]=F,z[16+A]=F,z[24+A]=F,z[32+A]=F,z[40+A]=F,z[48+A]=F,z[56+A]=F):(C=q*z[0+A]+2048>>12,w=q*z[32+A]+2048>>12,T=z[16+A],G=z[48+A],B=s*(z[8+A]-z[56+A])+2048>>12,E=s*(z[8+A]+z[56+A])+2048>>12,X=z[24+A],D=z[40+A],F=C-w+1>>1,C=C+w+1>>1,w=F,F=T*n+G*m+2048>>12,T=T*m-G*n+2048>>12,G=F,F=B-D+1>>1,B=B+D+1>>1,D=F,F=E+X+1>>1,X=E-X+1>>1,E=F,F=C-G+1>>1,C=C+G+1>>1,G=F,F=w-T+1>>1,w=w+T+1>>1,T=F,F=B*l+E*k+2048>>12,B=B*k-E*l+2048>>12,
+E=F,F=X*h+D*g+2048>>12,X=X*g-D*h+2048>>12,D=F,z[0+A]=C+E,z[56+A]=C-E,z[8+A]=w+D,z[48+A]=w-D,z[16+A]=T+X,z[40+A]=T-X,z[24+A]=G+B,z[32+A]=G-B);for(S=0;64>S;++S)C=y+S,w=z[S],w=-2056>=w?0:2024<=w?255:w+2056>>4,I.blockData[C]=w}return b.blockData}function e(a){return 0>=a?0:255<=a?255:a}var d=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),g=4017,h=799,
+k=3406,l=2276,m=1567,n=3784,q=5793,s=2896;f.prototype={parse:function(e){function f(){var a=e[k]<<8|e[k+1];k+=2;return a}function g(){var a=f(),a=e.subarray(k,k+a-2);k+=a.length;return a}function h(a){for(var b=Math.ceil(a.samplesPerLine/8/a.maxH),c=Math.ceil(a.scanLines/8/a.maxV),d=0;d<a.components.length;d++){F=a.components[d];var e=Math.ceil(Math.ceil(a.samplesPerLine/8)*F.h/a.maxH),f=Math.ceil(Math.ceil(a.scanLines/8)*F.v/a.maxV);F.blockData=new Int16Array(64*c*F.v*(b*F.h+1));F.blocksPerLine=
+e;F.blocksPerColumn=f}a.mcusPerLine=b;a.mcusPerColumn=c}var k=0,l=null,m=null,n,s,q=[],A=[],C=[],w=f();if(65496!=w)throw"SOI not found";for(w=f();65497!=w;){var t,G;switch(w){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:t=g();65504===w&&74===t[0]&&70===t[1]&&73===t[2]&&70===t[3]&&0===t[4]&&(l={version:{major:t[5],minor:t[6]},densityUnits:t[7],xDensity:t[8]<<
+8|t[9],yDensity:t[10]<<8|t[11],thumbWidth:t[12],thumbHeight:t[13],thumbData:t.subarray(14,14+3*t[12]*t[13])});65518===w&&65===t[0]&&100===t[1]&&111===t[2]&&98===t[3]&&101===t[4]&&0===t[5]&&(m={version:t[6],flags0:t[7]<<8|t[8],flags1:t[9]<<8|t[10],transformCode:t[11]});break;case 65499:for(var w=f()+k-2,B;k<w;){var y=e[k++],D=new Int32Array(64);if(0===y>>4)for(t=0;64>t;t++)B=d[t],D[B]=e[k++];else if(1===y>>4)for(t=0;64>t;t++)B=d[t],D[B]=f();else throw"DQT: invalid table spec";q[y&15]=D}break;case 65472:case 65473:case 65474:if(n)throw"Only single frame JPEGs supported";
+f();n={};n.extended=65473===w;n.progressive=65474===w;n.precision=e[k++];n.scanLines=f();n.samplesPerLine=f();n.components=[];n.componentIds={};t=e[k++];for(w=D=y=0;w<t;w++){B=e[k];G=e[k+1]>>4;var E=e[k+1]&15;y<G&&(y=G);D<E&&(D=E);G=n.components.push({h:G,v:E,quantizationTable:q[e[k+2]]});n.componentIds[B]=G-1;k+=3}n.maxH=y;n.maxV=D;h(n);break;case 65476:B=f();for(w=2;w<B;){y=e[k++];D=new Uint8Array(16);for(t=G=0;16>t;t++,k++)G+=D[t]=e[k];E=new Uint8Array(G);for(t=0;t<G;t++,k++)E[t]=e[k];w+=17+G;
+(0===y>>4?C:A)[y&15]=a(D,E)}break;case 65501:f();s=f();break;case 65498:f();B=e[k++];t=[];for(var F,w=0;w<B;w++)y=n.componentIds[e[k++]],F=n.components[y],y=e[k++],F.huffmanTableDC=C[y>>4],F.huffmanTableAC=A[y&15],t.push(F);w=e[k++];B=e[k++];y=e[k++];w=b(e,k,n,t,s,w,B,y>>4,y&15);k+=w;break;default:if(255==e[k-3]&&192<=e[k-2]&&254>=e[k-2]){k-=3;break}throw"unknown JPEG marker "+w.toString(16);}w=f()}this.width=n.samplesPerLine;this.height=n.scanLines;this.jfif=l;this.adobe=m;this.components=[];for(w=
+0;w<n.components.length;w++)F=n.components[w],this.components.push({output:c(n,F),scaleX:F.h/n.maxH,scaleY:F.v/n.maxV,blocksPerLine:F.blocksPerLine,blocksPerColumn:F.blocksPerColumn});this.numComponents=this.components.length},_getLinearizedBlockData:function(a,b){var c=this.width/a,d=this.height/b,e,f,g,h,k,l,m=0,n,s=this.components.length,q=new Uint8Array(a*b*s),t=new Uint32Array(a);for(k=0;k<s;k++){e=this.components[k];f=e.scaleX*c;g=e.scaleY*d;m=k;n=e.output;e=e.blocksPerLine+1<<3;for(h=0;h<a;h++)l=
+0|h*f,t[h]=(l&4294967288)<<3|l&7;for(f=0;f<b;f++)for(l=0|f*g,l=e*(l&4294967288)|(l&7)<<3,h=0;h<a;h++)q[m]=n[l+t[h]],m+=s}return q},_isColorConversionNeeded:function(){return this.adobe&&this.adobe.transformCode?!0:3==this.numComponents?!0:"undefined"!==typeof this.colorTransform?!!this.colorTransform:!1},_convertYccToRgb:function(a){for(var b,c,d,f=0;f<a.length;f+=this.numComponents)b=a[f],c=a[f+1],d=a[f+2],a[f]=e(b-179.456+1.402*d),a[f+1]=e(b+135.459-0.344*c-0.714*d),a[f+2]=e(b-226.816+1.772*c);
+return a},_convertYcckToRgb:function(a){for(var b,c,d,f,g,h,k,l,m,n,s,q,t,y,B=0,X=0;X<a.length;X+=this.numComponents){b=a[X];c=a[X+1];d=a[X+2];f=a[X+3];g=c*c;h=c*d;k=c*b;l=c*f;m=d*d;n=d*f;s=d*b;q=b*b;t=b*f;y=f*f;var D=-122.67195406894-6.60635669420364E-5*g+4.37130475926232E-4*h-5.4080610064599E-5*k+4.8449797120281E-4*l-0.154362151871126*c-9.57964378445773E-4*m+8.17076911346625E-4*s-0.00477271405408747*n+1.53380253221734*d+9.61250184130688E-4*q-0.00266257332283933*t+0.48357088451265*b-3.36197177618394E-4*
+y+0.484791561490776*f,E=107.268039397724+2.19927104525741E-5*g-6.40992018297945E-4*h+6.59397001245577E-4*k+4.26105652938837E-4*l-0.176491792462875*c-7.78269941513683E-4*m+0.00130872261408275*s+7.70482631801132E-4*n-0.151051492775562*d+0.00126935368114843*q-0.00265090189010898*t+0.25802910206845*b-3.18913117588328E-4*y-0.213742400323665*f;b=-20.810012546947-5.70115196973677E-4*g-2.63409051004589E-5*h+0.0020741088115012*k-0.00288260236853442*l+0.814272968359295*c-1.53496057440975E-5*m-1.32689043961446E-4*
+s+5.60833691242812E-4*n-0.195152027534049*d+0.00174418132927582*q-0.00255243321439347*t+0.116935020465145*b-3.43531996510555E-4*y+0.24165260232407*f;a[B++]=e(D);a[B++]=e(E);a[B++]=e(b)}return a},_convertYcckToCmyk:function(a){for(var b,c,d,f=0;f<a.length;f+=this.numComponents)b=a[f],c=a[f+1],d=a[f+2],a[f]=e(434.456-b-1.402*d),a[f+1]=e(119.541-b+0.344*c+0.714*d),a[f+2]=e(481.816-b-1.772*c);return a},_convertCmykToRgb:function(a){for(var b,c,d,e,f=0,g=a.length,h=1/255/255,k=0;k<g;){b=a[k++];c=a[k++];
+d=a[k++];e=a[k++];var l=b*(-4.387332384609988*b+54.48615194189176*c+18.82290502165302*d+212.25662451639585*e-72734.4411664936)+c*(1.7149763477362134*c-5.6096736904047315*d-17.873870861415444*e-1401.7366389350734)+d*(-2.5217340131683033*d-21.248923337353073*e+4465.541406466231)-e*(21.86122147463605*e+48317.86113160301),m=b*(8.841041422036149*b+60.118027045597366*c+6.871425592049007*d+31.159100130055922*e-20220.756542821975)+c*(-15.310361306967817*c+17.575251261109482*d+131.35250912493976*e-48691.05921601825)+
+d*(4.444339102852739*d+9.8632861493405*e-6341.191035517494)-e*(20.737325471181034*e+47890.15695978492);b=b*(0.8842522430003296*b+8.078677503112928*c+30.89978309703729*d-0.23883238689178934*e-3616.812083916688)+c*(10.49593273432072*c+63.02378494754052*d+50.606957656360734*e-28620.90484698408)+d*(0.03296041114873217*d+115.60384449646641*e-49363.43385999684)-e*(22.33816807309886*e+45932.16563550634);a[f++]=0<=l?255:-16581375>=l?0:255+l*h|0;a[f++]=0<=m?255:-16581375>=m?0:255+m*h|0;a[f++]=0<=b?255:-16581375>=
+b?0:255+b*h|0}return a},getData:function(a,b,c){if(4<this.numComponents)throw"Unsupported color mode";a=this._getLinearizedBlockData(a,b);return 3===this.numComponents?this._convertYccToRgb(a):4===this.numComponents?this._isColorConversionNeeded()?c?this._convertYcckToRgb(a):this._convertYcckToCmyk(a):this._convertCmykToRgb(a):a}};return f}(),id=function(){function f(){this.failOnCorruptedImage=!1}function a(a,b,c){a=c.xcb_;c=c.ycb_;var d=1<<a,e=1<<c,f=b.tbx0>>a,g=b.tbx1+d-1>>a,h=b.tby1+e-1>>c,k=
+b.resolution.precinctParameters,l=[],m=[],n,q,w,t;for(q=b.tby0>>c;q<h;q++)for(n=f;n<g;n++){w={cbx:n,cby:q,tbx0:d*n,tby0:e*q,tbx1:d*(n+1),tby1:e*(q+1)};t=Math.floor((w.tby0-k.precinctYOffset)/k.precinctHeight)+Math.floor((w.tbx0-k.precinctXOffset)/k.precinctWidth)*k.numprecinctswide;w.tbx0_=Math.max(b.tbx0,w.tbx0);w.tby0_=Math.max(b.tby0,w.tby0);w.tbx1_=Math.min(b.tbx1,w.tbx1);w.tby1_=Math.min(b.tby1,w.tby1);w.precinctNumber=t;w.subbandType=b.type;w.Lblock=3;l.push(w);var y=m[t];void 0!==y?(n<y.cbxMin?
+y.cbxMin=n:n>y.cbxMax&&(y.cbxMax=n),q<y.cbyMin?y.cbxMin=q:q>y.cbyMax&&(y.cbyMax=q)):m[t]=y={cbxMin:n,cbyMin:q,cbxMax:n,cbyMax:q};w.precinct=y}b.codeblockParameters={codeblockWidth:a,codeblockHeight:c,numcodeblockwide:g-f+1,numcodeblockhigh:h-h+1};b.codeblocks=l;b.precincts=m}function b(a,b,c){var d=[];a=a.subbands;for(var e=0,f=a.length;e<f;e++)for(var g=a[e].codeblocks,h=0,k=g.length;h<k;h++){var l=g[h];l.precinctNumber==b&&d.push(l)}return{layerNumber:c,codeblocks:d}}function c(a){var c=a.tiles[a.currentTile.index],
+d=c.codingStyleDefaultParameters.layersCount,e=a.SIZ.Csiz,f=0;for(a=0;a<e;a++)f=Math.max(f,c.components[a].codingStyleParameters.decompositionLevelsCount);var g=0,h=0,k=0,l=0;this.nextPacket=function(){for(;g<d;g++){for(;h<=f;h++){for(;k<e;k++){var a=c.components[k];if(!(h>a.codingStyleParameters.decompositionLevelsCount)){for(var a=a.resolutions[h],m=a.precinctParameters.numprecincts;l<m;)return a=b(a,l,g),l++,a;l=0}}k=0}h=0}throw"Out of packets";}}function e(a){var c=a.tiles[a.currentTile.index],
+d=c.codingStyleDefaultParameters.layersCount,e=a.SIZ.Csiz,f=0;for(a=0;a<e;a++)f=Math.max(f,c.components[a].codingStyleParameters.decompositionLevelsCount);var g=0,h=0,k=0,l=0;this.nextPacket=function(){for(;g<=f;g++){for(;h<d;h++){for(;k<e;k++){var a=c.components[k];if(!(g>a.codingStyleParameters.decompositionLevelsCount)){for(var a=a.resolutions[g],m=a.precinctParameters.numprecincts;l<m;)return a=b(a,l,h),l++,a;l=0}}k=0}h=0}throw"Out of packets";}}function d(a,b,c,d){function e(a){for(;m<a;){var d=
+b[c+g];g++;n?(l=l<<7|d,m+=7,n=!1):(l=l<<8|d,m+=8);255==d&&(n=!0)}m-=a;return l>>>m&(1<<a)-1}function f(){if(0===e(1))return 1;if(0===e(1))return 2;var a=e(2);if(3>a)return a+3;a=e(5);if(31>a)return a+6;a=e(7);return a+37}var g=0,l,m=0,n=!1;for(a=a.tiles[a.currentTile.index].packetsIterator;g<d;){var q=a.nextPacket();if(e(1)){for(var t=q.layerNumber,C=[],w,y=0,G=q.codeblocks.length;y<G;y++){w=q.codeblocks[y];var B=w.precinct,X=w.cbx-B.cbxMin,D=w.cby-B.cbyMin,E=!1,F=!1,S;if("included"in w)E=!!e(1);
+else{var B=w.precinct,M,J;"inclusionTree"in B?M=B.inclusionTree:(S=B.cbxMax-B.cbxMin+1,J=B.cbyMax-B.cbyMin+1,M=new k(S,J,t),J=new h(S,J),B.inclusionTree=M,B.zeroBitPlanesTree=J);if(M.reset(X,D,t))for(;;)if(e(1)){if(S=!M.nextLevel()){E=F=w.included=!0;break}}else{M.incrementValue(t);break}}if(E){if(F){J=B.zeroBitPlanesTree;for(J.reset(X,D);;)if(e(1)){if(S=!J.nextLevel())break}else J.incrementValue();w.zeroBitPlanes=J.value}for(B=f();e(1);)w.Lblock++;X=wb(B);X=e((B<1<<X?X-1:X)+w.Lblock);C.push({codeblock:w,
+codingpasses:B,dataLength:X})}}m=0;n&&(g++,n=!1);for(;0<C.length;)q=C.shift(),w=q.codeblock,"data"in w||(w.data=[]),w.data.push({data:b,start:c+g,end:c+g+q.dataLength,codingpasses:q.codingpasses}),g+=q.dataLength}else m=0,n&&(g++,n=!1)}return g}var g={LL:0,LH:1,HL:1,HH:2};f.prototype={load:function(a){var b=new XMLHttpRequest;b.open("GET",a,!0);b.responseType="arraybuffer";b.onload=function(){var a=new Uint8Array(b.response||b.mozResponseArrayBuffer);this.parse(a);if(this.onload)this.onload()}.bind(this);
+b.send(null)},parse:function(a){if(65359===va(a,0))this.parseCodestream(a,0,a.length);else for(var b=0,c=a.length;b<c;){var d=8,e=fa(a,b),f=fa(a,b+4),b=b+d;1===e&&(e=4294967296*fa(a,b)+fa(a,b+4),b+=8,d+=8);0===e&&(e=c-b+d);e<d&&y("JPX error: Invalid box field size");d=e-d;e=!0;switch(f){case 1785737832:e=!1;break;case 1785737827:this.parseCodestream(a,b,b+d)}e&&(b+=d)}},parseImageProperties:function(a){try{for(var b=a.getByte();0<=b;){var c=b,b=a.getByte();if(65361==(c<<8|b)){a.skip(4);var d=a.getInt32()>>>
+0,e=a.getInt32()>>>0,f=a.getInt32()>>>0,g=a.getInt32()>>>0;a.skip(16);var h=a.getUint16();this.width=d-f;this.height=e-g;this.componentsCount=h;this.bitsPerComponent=8;return}}throw"No size marker found in JPX stream";}catch(k){this.failOnCorruptedImage?y("JPX error: "+k):O("JPX error: "+k+". Trying to recover")}},parseCodestream:function(b,f,h){var k={};try{for(var m=f;m+1<h;){var v=va(b,m),m=m+2,t=0,K,I,$,z,A,C;switch(v){case 65359:k.mainHeader=!0;break;case 65497:break;case 65361:var t=va(b,m),
+w={};w.Xsiz=fa(b,m+4);w.Ysiz=fa(b,m+8);w.XOsiz=fa(b,m+12);w.YOsiz=fa(b,m+16);w.XTsiz=fa(b,m+20);w.YTsiz=fa(b,m+24);w.XTOsiz=fa(b,m+28);w.YTOsiz=fa(b,m+32);var T=va(b,m+36);w.Csiz=T;var G=[];K=m+38;for(var B=0;B<T;B++){var X={precision:(b[K]&127)+1,isSigned:!!(b[K]&128),XRsiz:b[K+1],YRsiz:b[K+1]},D=X,E=w;D.x0=Math.ceil(E.XOsiz/D.XRsiz);D.x1=Math.ceil(E.Xsiz/D.XRsiz);D.y0=Math.ceil(E.YOsiz/D.YRsiz);D.y1=Math.ceil(E.Ysiz/D.YRsiz);D.width=D.x1-D.x0;D.height=D.y1-D.y0;G.push(X)}k.SIZ=w;k.components=G;
+for(var F=k,S=G,M=F.SIZ,J=void 0,L=[],H=Math.ceil((M.Xsiz-M.XTOsiz)/M.XTsiz),N=Math.ceil((M.Ysiz-M.YTOsiz)/M.YTsiz),aa=0;aa<N;aa++)for(var Q=0;Q<H;Q++)J={},J.tx0=Math.max(M.XTOsiz+Q*M.XTsiz,M.XOsiz),J.ty0=Math.max(M.YTOsiz+aa*M.YTsiz,M.YOsiz),J.tx1=Math.min(M.XTOsiz+(Q+1)*M.XTsiz,M.Xsiz),J.ty1=Math.min(M.YTOsiz+(aa+1)*M.YTsiz,M.Ysiz),J.width=J.tx1-J.tx0,J.height=J.ty1-J.ty0,J.components=[],L.push(J);F.tiles=L;for(var U=0,R=M.Csiz;U<R;U++)for(var V=S[U],W=0,ca=L.length;W<ca;W++){var Y={},J=L[W];Y.tcx0=
+Math.ceil(J.tx0/V.XRsiz);Y.tcy0=Math.ceil(J.ty0/V.YRsiz);Y.tcx1=Math.ceil(J.tx1/V.XRsiz);Y.tcy1=Math.ceil(J.ty1/V.YRsiz);Y.width=Y.tcx1-Y.tcx0;Y.height=Y.tcy1-Y.tcy0;J.components[U]=Y}k.QCC=[];k.COC=[];break;case 65372:var t=va(b,m),da={};K=m+2;I=b[K++];switch(I&31){case 0:z=8;A=!0;break;case 1:z=16;A=!1;break;case 2:z=16;A=!0;break;default:throw"Invalid SQcd value "+I;}da.noQuantization=8==z;da.scalarExpounded=A;da.guardBits=I>>5;for($=[];K<t+m;){var Z={};8==z?(Z.epsilon=b[K++]>>3,Z.mu=0):(Z.epsilon=
+b[K]>>3,Z.mu=(b[K]&7)<<8|b[K+1],K+=2);$.push(Z)}da.SPqcds=$;k.mainHeader?k.QCD=da:(k.currentTile.QCD=da,k.currentTile.QCC=[]);break;case 65373:var t=va(b,m),ea={};K=m+2;var ia;257>k.SIZ.Csiz?ia=b[K++]:(ia=va(b,K),K+=2);I=b[K++];switch(I&31){case 0:z=8;A=!0;break;case 1:z=16;A=!1;break;case 2:z=16;A=!0;break;default:throw"Invalid SQcd value "+I;}ea.noQuantization=8==z;ea.scalarExpounded=A;ea.guardBits=I>>5;for($=[];K<t+m;)Z={},8==z?(Z.epsilon=b[K++]>>3,Z.mu=0):(Z.epsilon=b[K]>>3,Z.mu=(b[K]&7)<<8|b[K+
+1],K+=2),$.push(Z);ea.SPqcds=$;k.mainHeader?k.QCC[ia]=ea:k.currentTile.QCC[ia]=ea;break;case 65362:var t=va(b,m),ga={};K=m+2;var ma=b[K++];ga.entropyCoderWithCustomPrecincts=!!(ma&1);ga.sopMarkerUsed=!!(ma&2);ga.ephMarkerUsed=!!(ma&4);ga.progressionOrder=b[K++];ga.layersCount=va(b,K);K+=2;ga.multipleComponentTransform=b[K++];ga.decompositionLevelsCount=b[K++];ga.xcb=(b[K++]&15)+2;ga.ycb=(b[K++]&15)+2;var ja=b[K++];ga.selectiveArithmeticCodingBypass=!!(ja&1);ga.resetContextProbabilities=!!(ja&2);ga.terminationOnEachCodingPass=
+!!(ja&4);ga.verticalyStripe=!!(ja&8);ga.predictableTermination=!!(ja&16);ga.segmentationSymbolUsed=!!(ja&32);ga.reversibleTransformation=b[K++];if(ga.entropyCoderWithCustomPrecincts){for(var pa=[];K<t+m;){var qa=b[K++];pa.push({PPx:qa&15,PPy:qa>>4})}ga.precinctsSizes=pa}if(ga.sopMarkerUsed||ga.ephMarkerUsed||ga.selectiveArithmeticCodingBypass||ga.resetContextProbabilities||ga.terminationOnEachCodingPass||ga.verticalyStripe||ga.predictableTermination)throw"Unsupported COD options: "+la.JSON.stringify(ga);
+k.mainHeader?k.COD=ga:(k.currentTile.COD=ga,k.currentTile.COC=[]);break;case 65424:t=va(b,m);C={};C.index=va(b,m+2);C.length=fa(b,m+4);C.dataEnd=C.length+m-2;C.partIndex=b[m+8];C.partsCount=b[m+9];k.mainHeader=!1;0===C.partIndex&&(C.COD=k.COD,C.COC=k.COC.slice(0),C.QCD=k.QCD,C.QCC=k.QCC.slice(0));k.currentTile=C;break;case 65427:C=k.currentTile;if(0===C.partIndex){for(var ha=k,ta=ha.SIZ.Csiz,wa=ha.tiles[C.index],oa=0;oa<ta;oa++){var Aa=wa.components[oa];Aa.quantizationParameters=oa in ha.currentTile.QCC?
+ha.currentTile.QCC[oa]:ha.currentTile.QCD;Aa.codingStyleParameters=oa in ha.currentTile.COC?ha.currentTile.COC[oa]:ha.currentTile.COD}wa.codingStyleDefaultParameters=ha.currentTile.COD;for(var na=k,xa=na.tiles[na.currentTile.index],Ia=na.SIZ.Csiz,Ba=0;Ba<Ia;Ba++){for(var ka=xa.components[Ba],Da=ka.codingStyleParameters.decompositionLevelsCount,Ma=[],Ea=[],Ca=0;Ca<=Da;Ca++){var ya,La=Ca,za=ka.codingStyleParameters,Sa={};za.entropyCoderWithCustomPrecincts?(Sa.PPx=za.precinctsSizes[La].PPx,Sa.PPy=za.precinctsSizes[La].PPy):
+(Sa.PPx=15,Sa.PPy=15);Sa.xcb_=0<La?Math.min(za.xcb,Sa.PPx-1):Math.min(za.xcb,Sa.PPx);Sa.ycb_=0<La?Math.min(za.ycb,Sa.PPy-1):Math.min(za.ycb,Sa.PPy);ya=Sa;var Pa={},mb=1<<Da-Ca;Pa.trx0=Math.ceil(ka.tcx0/mb);Pa.try0=Math.ceil(ka.tcy0/mb);Pa.trx1=Math.ceil(ka.tcx1/mb);Pa.try1=Math.ceil(ka.tcy1/mb);var Ta=Pa,Ha=1<<ya.PPx,Ja=1<<ya.PPy,Va=Ta.trx1>Ta.trx0?Math.ceil(Ta.trx1/Ha)-Math.floor(Ta.trx0/Ha):0,Wa=Ta.try1>Ta.try0?Math.ceil(Ta.try1/Ja)-Math.floor(Ta.try0/Ja):0;Ta.precinctParameters={precinctXOffset:Math.floor(Ta.trx0/
+Ha)*Ha,precinctYOffset:Math.floor(Ta.try0/Ja)*Ja,precinctWidth:Ha,precinctHeight:Ja,numprecinctswide:Va,numprecinctshigh:Wa,numprecincts:Va*Wa};Ma.push(Pa);var ba;if(0===Ca)ba={type:"LL"},ba.tbx0=Math.ceil(ka.tcx0/mb),ba.tby0=Math.ceil(ka.tcy0/mb),ba.tbx1=Math.ceil(ka.tcx1/mb),ba.tby1=Math.ceil(ka.tcy1/mb),ba.resolution=Pa,a(na,ba,ya),Ea.push(ba),Pa.subbands=[ba];else{var Qa=1<<Da-Ca+1,Na=[];ba={type:"HL"};ba.tbx0=Math.ceil(ka.tcx0/Qa-0.5);ba.tby0=Math.ceil(ka.tcy0/Qa);ba.tbx1=Math.ceil(ka.tcx1/Qa-
+0.5);ba.tby1=Math.ceil(ka.tcy1/Qa);ba.resolution=Pa;a(na,ba,ya);Ea.push(ba);Na.push(ba);ba={type:"LH"};ba.tbx0=Math.ceil(ka.tcx0/Qa);ba.tby0=Math.ceil(ka.tcy0/Qa-0.5);ba.tbx1=Math.ceil(ka.tcx1/Qa);ba.tby1=Math.ceil(ka.tcy1/Qa-0.5);ba.resolution=Pa;a(na,ba,ya);Ea.push(ba);Na.push(ba);ba={type:"HH"};ba.tbx0=Math.ceil(ka.tcx0/Qa-0.5);ba.tby0=Math.ceil(ka.tcy0/Qa-0.5);ba.tbx1=Math.ceil(ka.tcx1/Qa-0.5);ba.tby1=Math.ceil(ka.tcy1/Qa-0.5);ba.resolution=Pa;a(na,ba,ya);Ea.push(ba);Na.push(ba);Pa.subbands=Na}}ka.resolutions=
+Ma;ka.subbands=Ea}var Ya=xa.codingStyleDefaultParameters.progressionOrder;switch(Ya){case 0:xa.packetsIterator=new c(na);break;case 1:xa.packetsIterator=new e(na);break;default:throw"Unsupported progression order "+Ya;}}t=C.dataEnd-m;d(k,b,m,t);break;case 65380:t=va(b,m);break;case 65363:throw"Codestream code 0xFF53 (COC) is not implemented";default:throw"Unknown codestream code: "+v.toString(16);}m+=t}}catch(Za){this.failOnCorruptedImage?y("JPX error: "+Za):O("JPX error: "+Za+". Trying to recover")}for(var db=
+k.components,Ka=k.SIZ.Csiz,eb=[],Xa=0,lb=k.tiles.length;Xa<lb;Xa++){var $a=k.tiles[Xa],Cb=[],Ra;for(Ra=0;Ra<Ka;Ra++){for(var wb=Cb,xb=Ra,Db=$a.components[Ra],fb=Db.codingStyleParameters,gb=Db.quantizationParameters,Gb=fb.decompositionLevelsCount,cb=gb.SPqcds,Ib=gb.scalarExpounded,Jb=gb.guardBits,Kb=fb.segmentationSymbolUsed,Lb=k.components[Ra].precision,jb=fb.reversibleTransformation,Nb=jb?new q:new n,zb=[],kb=0,oc=0;oc<=Gb;oc++){for(var Qb=Db.resolutions[oc],tb=Qb.trx1-Qb.trx0,Eb=Qb.try1-Qb.try0,
+Fb=new Float32Array(tb*Eb),ub=0,Yb=Qb.subbands.length;ub<Yb;ub++){var vb,Bc;Ib?(vb=cb[kb].mu,Bc=cb[kb].epsilon,kb++):(vb=cb[0].mu,Bc=cb[0].epsilon+(0<oc?1-oc:0));for(var Hb=Qb.subbands[ub],$b=g[Hb.type],ac=jb?1:Math.pow(2,Lb+$b-Bc)*(1+vb/2048),gc=Fb,Mb=tb,nb=Hb,hc=ac,yb=Jb+Bc-1,Ob=jb,ic=Kb,jc=nb.tbx0,kc=nb.tby0,Cc=nb.tbx1-nb.tbx0,Pb=nb.codeblocks,lc="H"===nb.type.charAt(0)?1:0,mc="H"===nb.type.charAt(1)?Mb:0,Ab=0,nc=Pb.length;Ab<nc;++Ab){var ab=Pb[Ab],Dc=ab.tbx1_-ab.tbx0_,Bb=ab.tby1_-ab.tby0_;if(0!==
+Dc&&0!==Bb&&"data"in ab){var hb,Ec;hb=new l(Dc,Bb,ab.subbandType,ab.zeroBitPlanes,yb);Ec=2;var Fc=ab.data,Gc=0,Lc=0,Fa,Hc,ob;Fa=0;for(Hc=Fc.length;Fa<Hc;Fa++)ob=Fc[Fa],Gc+=ob.end-ob.start,Lc+=ob.codingpasses;var Xb=new Uint8Array(Gc),pb=0;Fa=0;for(Hc=Fc.length;Fa<Hc;Fa++){ob=Fc[Fa];var Zb=ob.data.subarray(ob.start,ob.end);Xb.set(Zb,pb);pb+=Zb.length}var qc=new nd(Xb,0,Gc);hb.setDecoder(qc);for(Fa=0;Fa<Lc;Fa++){switch(Ec){case 0:hb.runSignificancePropogationPass();break;case 1:hb.runMagnitudeRefinementPass();
+break;case 2:hb.runCleanupPass(),ic&&hb.checkSegmentationSymbol()}Ec=(Ec+1)%3}var Rb=ab.tbx0_-jc+(ab.tby0_-kc)*Cc,rc=hb.coefficentsSign,sc=hb.coefficentsMagnitude,tc=hb.bitsDecoded,uc=Ob?0:0.5,Mc,qb,Nc,pb=0,vc="LL"!==nb.type;for(Fa=0;Fa<Bb;Fa++){var wc=2*(Rb/Cc|0)*(Mb-Cc)+lc+mc;for(Mc=0;Mc<Dc;Mc++)qb=sc[pb],0!==qb&&(qb=(qb+uc)*hc,0!==rc[pb]&&(qb=-qb),Nc=tc[pb],gc[vc?wc+(Rb<<1):Rb]=Ob&&Nc>=yb?qb:qb*(1<<yb-Nc)),Rb++,pb++;Rb+=Cc-Dc}}}}zb.push({width:tb,height:Eb,items:Fb})}var Oc=Nb.calculate(zb,Db.tcx0,
+Db.tcy0);wb[xb]={left:Db.tcx0,top:Db.tcy0,width:Oc.width,height:Oc.height,items:Oc.items}}var pc=Cb[0],ib=new Uint8Array(pc.items.length*Ka),xc={left:pc.left,top:pc.top,width:pc.width,height:pc.height,items:ib},Ga,Sb,Ua,Ic,Pc,ua=0,sa,Tb,Ub,Vb,Wb,rb,bb,sb,Jc,Kc;if($a.codingStyleDefaultParameters.multipleComponentTransform){var bc=4===Ka,Qc=Cb[0].items,cc=Cb[1].items,dc=Cb[2].items,yc=bc?Cb[3].items:null;Ga=db[0].precision-8;Sb=(128<<Ga)+0.5;Ua=255*(1<<Ga);Pc=0.5*Ua;Ic=-Pc;var zc=$a.components[0],ec=
+Ka-3;Tb=Qc.length;if(zc.codingStyleParameters.reversibleTransformation)for(sa=0;sa<Tb;sa++,ua+=ec)Ub=Qc[sa]+Sb,Vb=cc[sa],Wb=dc[sa],bb=Ub-(Wb+Vb>>2),rb=bb+Wb,sb=bb+Vb,ib[ua++]=0>=rb?0:rb>=Ua?255:rb>>Ga,ib[ua++]=0>=bb?0:bb>=Ua?255:bb>>Ga,ib[ua++]=0>=sb?0:sb>=Ua?255:sb>>Ga;else for(sa=0;sa<Tb;sa++,ua+=ec)Ub=Qc[sa]+Sb,Vb=cc[sa],Wb=dc[sa],rb=Ub+1.402*Wb,bb=Ub-0.34413*Vb-0.71414*Wb,sb=Ub+1.772*Vb,ib[ua++]=0>=rb?0:rb>=Ua?255:rb>>Ga,ib[ua++]=0>=bb?0:bb>=Ua?255:bb>>Ga,ib[ua++]=0>=sb?0:sb>=Ua?255:sb>>Ga;if(bc)for(sa=
+0,ua=3;sa<Tb;sa++,ua+=4)Jc=yc[sa],ib[ua]=Jc<=Ic?0:Jc>=Pc?255:Jc+Sb>>Ga}else for(Ra=0;Ra<Ka;Ra++){var fc=Cb[Ra].items;Ga=db[Ra].precision-8;Sb=(128<<Ga)+0.5;Ua=127.5*(1<<Ga);Ic=-Ua;ua=Ra;sa=0;for(Tb=fc.length;sa<Tb;sa++)Kc=fc[sa],ib[ua]=Kc<=Ic?0:Kc>=Ua?255:Kc+Sb>>Ga,ua+=Ka}eb.push(xc)}this.tiles=eb;this.width=k.SIZ.Xsiz-k.SIZ.XOsiz;this.height=k.SIZ.Ysiz-k.SIZ.YOsiz;this.componentsCount=k.SIZ.Csiz}};var h=function(){function a(b,c){var d=wb(Math.max(b,c))+1;this.levels=[];for(var e=0;e<d;e++)this.levels.push({width:b,
+height:c,items:[]}),b=Math.ceil(b/2),c=Math.ceil(c/2)}a.prototype={reset:function(a,b){for(var c=0,d=0,e;c<this.levels.length;){e=this.levels[c];var f=a+b*e.width;if(f in e.items){d=e.items[f];break}e.index=f;a>>=1;b>>=1;c++}c--;e=this.levels[c];e.items[e.index]=d;this.currentLevel=c;delete this.value},incrementValue:function(){var a=this.levels[this.currentLevel];a.items[a.index]++},nextLevel:function(){var a=this.currentLevel,b=this.levels[a],c=b.items[b.index];a--;if(0>a)return this.value=c,!1;
+this.currentLevel=a;b=this.levels[a];b.items[b.index]=c;return!0}};return a}(),k=function(){function a(b,c,d){var e=wb(Math.max(b,c))+1;this.levels=[];for(var f=0;f<e;f++){for(var g=new Uint8Array(b*c),h=0,k=g.length;h<k;h++)g[h]=d;this.levels.push({width:b,height:c,items:g});b=Math.ceil(b/2);c=Math.ceil(c/2)}}a.prototype={reset:function(a,b,c){for(var d=0;d<this.levels.length;){var e=this.levels[d],f=a+b*e.width;e.index=f;e=e.items[f];if(255==e)break;if(e>c)return this.currentLevel=d,this.propagateValues(),
+!1;a>>=1;b>>=1;d++}this.currentLevel=d-1;return!0},incrementValue:function(a){var b=this.levels[this.currentLevel];b.items[b.index]=a+1;this.propagateValues()},propagateValues:function(){for(var a=this.currentLevel,b=this.levels[a],c=b.items[b.index];0<=--a;)b=this.levels[a],b.items[b.index]=c},nextLevel:function(){var a=this.currentLevel,b=this.levels[a],c=b.items[b.index];b.items[b.index]=255;a--;if(0>a)return!1;this.currentLevel=a;b=this.levels[a];b.items[b.index]=c;return!0}};return a}(),l=function(){function a(e,
+f,g,h,k){this.width=e;this.height=f;this.contextLabelTable="HH"==g?d:"HL"==g?c:b;e*=f;this.neighborsSignificance=new Uint8Array(e);this.coefficentsSign=new Uint8Array(e);this.coefficentsMagnitude=14<k?new Uint32Array(e):6<k?new Uint16Array(e):new Uint8Array(e);this.processingFlags=new Uint8Array(e);k=new Uint8Array(e);if(0!==h)for(f=0;f<e;f++)k[f]=h;this.bitsDecoded=k;this.reset()}var b=new Uint8Array([0,5,8,0,3,7,8,0,4,7,8,0,0,0,0,0,1,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,
+2,6,8,0,3,7,8,0,4,7,8,0,0,0,0,0,2,6,8,0,3,7,8,0,4,7,8]),c=new Uint8Array([0,3,4,0,5,7,7,0,8,8,8,0,0,0,0,0,1,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8,0,0,0,0,0,2,3,4,0,6,7,7,0,8,8,8]),d=new Uint8Array([0,1,2,0,1,2,2,0,2,2,2,0,0,0,0,0,3,4,5,0,4,5,5,0,5,5,5,0,0,0,0,0,6,7,7,0,7,7,7,0,7,7,7,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8,0,0,0,0,0,8,8,8,0,8,8,8,0,8,8,8]);a.prototype={setDecoder:function(a){this.decoder=a},reset:function(){this.contexts=new Int8Array(19);this.contexts[0]=
+8;this.contexts[17]=92;this.contexts[18]=6},setNeighborsSignificance:function(a,b,c){var d=this.neighborsSignificance,e=this.width,f=this.height,g=0<b;b=b+1<e;var h;0<a&&(h=c-e,g&&(d[h-1]+=16),b&&(d[h+1]+=16),d[h]+=4);a+1<f&&(h=c+e,g&&(d[h-1]+=16),b&&(d[h+1]+=16),d[h]+=4);g&&(d[c-1]+=1);b&&(d[c+1]+=1);d[c]|=128},runSignificancePropogationPass:function(){for(var a=this.decoder,b=this.width,c=this.height,d=this.coefficentsMagnitude,e=this.coefficentsSign,f=this.neighborsSignificance,g=this.processingFlags,
+h=this.contexts,k=this.contextLabelTable,l=this.bitsDecoded,m=0;m<c;m+=4)for(var n=0;n<b;n++)for(var r=m*b+n,p=0;4>p;p++,r+=b){var q=m+p;if(q>=c)break;g[r]&=-2;if(!d[r]&&f[r]){if(a.readBit(h,k[f[r]])){var x=this.decodeSignBit(q,n,r);e[r]=x;d[r]=1;this.setNeighborsSignificance(q,n,r);g[r]|=2}l[r]++;g[r]|=1}}},decodeSignBit:function(a,b,c){var d=this.width,e=this.height,f=this.coefficentsMagnitude,g=this.coefficentsSign,h;h=0<b&&0!==f[c-1];b+1<d&&0!==f[c+1]?(b=g[c+1],h?(h=g[c-1],b=1-b-h):b=1-b-b):h?
+(h=g[c-1],b=1-h-h):b=0;var k=3*b;h=0<a&&0!==f[c-d];a+1<e&&0!==f[c+d]?(b=g[c+d],h?(h=g[c-d],b=1-b-h+k):b=1-b-b+k):h?(h=g[c-d],b=1-h-h+k):b=k;return a=0<=b?this.decoder.readBit(this.contexts,9+b):this.decoder.readBit(this.contexts,9-b)^1},runMagnitudeRefinementPass:function(){for(var a=this.decoder,b=this.width,c=this.coefficentsMagnitude,d=this.neighborsSignificance,e=this.contexts,f=this.bitsDecoded,g=this.processingFlags,h=b*this.height,k=4*b,l=0,m;l<h;l=m){m=Math.min(h,l+k);for(var n=0;n<b;n++)for(var r=
+l+n;r<m;r+=b)if(c[r]&&0===(g[r]&1)){var p=16;0!==(g[r]&2)&&(g[r]^=2,p=0===(d[r]&127)?15:14);p=a.readBit(e,p);c[r]=c[r]<<1|p;f[r]++;g[r]|=1}}},runCleanupPass:function(){for(var a=this.decoder,b=this.width,c=this.height,d=this.neighborsSignificance,e=this.coefficentsMagnitude,f=this.coefficentsSign,g=this.contexts,h=this.contextLabelTable,k=this.bitsDecoded,l=this.processingFlags,m=2*b,n=3*b,r,p=0;p<c;p=r){r=Math.min(p+4,c);for(var q=p*b,x=p+3<c,s=0;s<b;s++){var t=q+s,y=0,J=t,L=p,O;if(x&&0===l[t]&&
+0===l[t+b]&&0===l[t+m]&&0===l[t+n]&&0===d[t]&&0===d[t+b]&&0===d[t+m]&&0===d[t+n]){if(!a.readBit(g,18)){k[t]++;k[t+b]++;k[t+m]++;k[t+n]++;continue}y=a.readBit(g,17)<<1|a.readBit(g,17);0!==y&&(L=p+y,J+=y*b);O=this.decodeSignBit(L,s,J);f[J]=O;e[J]=1;this.setNeighborsSignificance(L,s,J);l[J]|=2;J=t;for(t=p;t<=L;t++,J+=b)k[J]++;y++}for(L=p+y;L<r;L++,J+=b)e[J]||0!==(l[J]&1)||(1===a.readBit(g,h[d[J]])&&(O=this.decodeSignBit(L,s,J),f[J]=O,e[J]=1,this.setNeighborsSignificance(L,s,J),l[J]|=2),k[J]++)}}},checkSegmentationSymbol:function(){var a=
+this.decoder,b=this.contexts;if(10!=(a.readBit(b,17)<<3|a.readBit(b,17)<<2|a.readBit(b,17)<<1|a.readBit(b,17)))throw"Invalid segmentation symbol";}};return a}(),m=function(){function a(){}a.prototype.calculate=function(a,b,c){for(var d=a[0],e=1,f=a.length;e<f;e++)d=this.iterate(d,a[e],b,c);return d};a.prototype.extend=function(a,b,c){var d=b-1,e=b+1,f=b+c-2;b+=c;a[d--]=a[e++];a[b++]=a[f--];a[d--]=a[e++];a[b++]=a[f--];a[d--]=a[e++];a[b++]=a[f--];a[d]=a[e];a[b]=a[f]};a.prototype.iterate=function(a,
+b,c,d){var e=a.width,f=a.height,g=a.items,h=b.width,k=b.height;b=b.items;var l,m,n,q;for(l=n=0;l<f;l++)for(q=2*l*h,m=0;m<e;m++,n++,q+=2)b[q]=g[n];a.items=null;a=new Float32Array(h+8);if(1===h){if(0!==(c&1))for(n=q=0;q<k;q++,n+=h)b[n]*=0.5}else for(n=q=0;q<k;q++,n+=h)a.set(b.subarray(n,n+h),4),this.extend(a,4,h),this.filter(a,4,h),b.set(a.subarray(4,4+h),n);c=16;e=[];for(l=0;l<c;l++)e.push(new Float32Array(k+8));l=0;a=4+k;if(1===k){if(0!==(d&1))for(d=0;d<h;d++)b[d]*=0.5}else for(d=0;d<h;d++){if(0===
+l){c=Math.min(h-d,c);n=d;for(q=4;q<a;n+=h,q++)for(f=0;f<c;f++)e[f][q]=b[n+f];l=c}l--;n=e[l];this.extend(n,4,k);this.filter(n,4,k);if(0===l)for(n=d-c+1,q=4;q<a;n+=h,q++)for(f=0;f<c;f++)b[n+f]=e[f][q]}return{width:h,height:k,items:b}};return a}(),n=function(){function a(){m.call(this)}a.prototype=Object.create(m.prototype);a.prototype.filter=function(a,b,c){c>>=1;b|=0;var d,e,f,g;d=b-3;for(e=c+4;e--;d+=2)a[d]*=0.8128930661159609;d=b-2;f=0.443506852043971*a[d-1];for(e=c+3;e--;d+=2)if(g=0.443506852043971*
+a[d+1],a[d]=1.230174104914001*a[d]-f-g,e--)d+=2,f=0.443506852043971*a[d+1],a[d]=1.230174104914001*a[d]-f-g;else break;d=b-1;f=0.882911075530934*a[d-1];for(e=c+2;e--;d+=2)if(g=0.882911075530934*a[d+1],a[d]-=f+g,e--)d+=2,f=0.882911075530934*a[d+1],a[d]-=f+g;else break;d=b;f=-0.052980118572961*a[d-1];for(e=c+1;e--;d+=2)if(g=-0.052980118572961*a[d+1],a[d]-=f+g,e--)d+=2,f=-0.052980118572961*a[d+1],a[d]-=f+g;else break;if(0!==c)for(d=b+1,f=-1.586134342059924*a[d-1],e=c;e--;d+=2)if(g=-1.586134342059924*
+a[d+1],a[d]-=f+g,e--)d+=2,f=-1.586134342059924*a[d+1],a[d]-=f+g;else break};return a}(),q=function(){function a(){m.call(this)}a.prototype=Object.create(m.prototype);a.prototype.filter=function(a,b,c){c>>=1;b|=0;var d,e;d=b;for(e=c+1;e--;d+=2)a[d]-=a[d-1]+a[d+1]+2>>2;d=b+1;for(e=c;e--;d+=2)a[d]+=a[d-1]+a[d+1]>>1};return a}();return f}(),ue=function(){function f(){}function a(a,b,c){this.data=a;this.start=b;this.end=c}function b(a,b,c){function d(a){for(var b=0,g=0;g<a;g++){var h=c.readBit(e,f);f=
+256>f?f<<1|h:(f<<1|h)&511|256;b=b<<1|h}return b>>>0}var e=a.getContexts(b),f=1;a=d(1);b=d(1)?d(1)?d(1)?d(1)?d(1)?d(32)+4436:d(12)+340:d(8)+84:d(6)+20:d(4)+4:d(2);return 0===a?b:0<b?-b:null}function c(a,b,c){a=a.getContexts("IAID");for(var d=1,e=0;e<c;e++)var f=b.readBit(a,d),d=d<<1|f;return 31>c?d&(1<<c)-1:d&2147483647}function e(a,b,c,d,e,f,g,h){a&&y("JBIG2 error: MMR encoding is not supported");a=!!f;var k=n[d].concat(g);k.sort(function(a,b){return a.y-b.y||a.x-b.x});g=k.length;var l=new Int8Array(g),
+m=new Int8Array(g),q=[],p=0,t=0,B=0,X=0,D,E;for(E=0;E<g;E++)l[E]=k[E].x,m[E]=k[E].y,t=Math.min(t,k[E].x),B=Math.max(B,k[E].x),X=Math.min(X,k[E].y),E<g-1&&k[E].y===k[E+1].y&&k[E].x===k[E+1].x-1?p|=1<<g-1-E:q.push(E);var F=q.length,L=new Int8Array(F),M=new Int8Array(F),J=new Uint16Array(F);for(D=0;D<F;D++)E=q[D],L[D]=k[E].x,M[D]=k[E].y,J[D]=1<<g-1-E;k=-t;X=-X;B=b-B;d=s[d];q=new Uint8Array(b);t=[];D=h.decoder;h=h.contextCache.getContexts("GB");for(var O=0,H,N,aa,Q=0,U,R=0;R<c;R++){if(e&&(E=D.readBit(h,
+d),O^=E)){t.push(q);continue}q=new Uint8Array(q);t.push(q);for(H=0;H<b;H++)if(a&&f[R][H])q[H]=0;else{if(H>=k&&H<B&&R>=X)for(Q=Q<<1&p,E=0;E<F;E++){if(N=R+M[E],aa=H+L[E],N=t[N][aa])N=J[E],Q|=N}else for(Q=0,U=g-1,E=0;E<g;E++,U--)aa=H+l[E],0<=aa&&aa<b&&(N=R+m[E],0<=N&&(N=t[N][aa])&&(Q|=N<<U));E=D.readBit(h,Q);q[H]=E}}return t}function d(a,b,c,d,e,f,g,h,k){var l=q[c].coding;0===c&&(l=l.concat([h[0]]));var m=l.length,n=new Int32Array(m),s=new Int32Array(m),t;for(t=0;t<m;t++)n[t]=l[t].x,s[t]=l[t].y;var B=
+q[c].reference;0===c&&(B=B.concat([h[1]]));h=B.length;var l=new Int32Array(h),L=new Int32Array(h);for(t=0;t<h;t++)l[t]=B[t].x,L[t]=B[t].y;var B=d[0].length,D=d.length;c=p[c];var E=[],F=k.decoder;k=k.contextCache.getContexts("GR");for(var S=0,M=0;M<b;M++){g&&(t=F.readBit(k,c),(S^=t)&&y("JBIG2 error: prediction is not supported"));var J=new Uint8Array(a);E.push(J);for(var H=0;H<a;H++){var O,N,Q=0;for(t=0;t<m;t++)O=M+s[t],N=H+n[t],Q=0>O||0>N||N>=a?Q<<1:Q<<1|E[O][N];for(t=0;t<h;t++)O=M+L[t]+f,N=H+l[t]+
+e,Q=0>O||O>=D||0>N||N>=B?Q<<1:Q<<1|d[O][N];t=F.readBit(k,Q);J[H]=t}}return E}function g(a,e,f,g,h,k,l,m,n,q,p,t,s,G,B,L,D){a&&y("JBIG2 error: huffman is not supported");a=[];var E;for(G=0;G<g;G++){E=new Uint8Array(f);if(h)for(var F=0;F<f;F++)E[F]=h;a.push(E)}g=D.decoder;h=D.contextCache;var F=-b(h,"IADT",g),O=0;for(G=0;G<k;){var M=b(h,"IADT",g),F=F+M,M=b(h,"IAFS",g),M=O+=M;do{var J=1==l?0:b(h,"IAIT",g);E=l*F+J;var J=c(h,g,n),H=e&&b(h,"IARI",g),J=m[J],N=J[0].length,Q=J.length;if(H)var H=b(h,"IARDW",
+g),U=b(h,"IARDH",g),R=b(h,"IARDX",g),V=b(h,"IARDY",g),N=N+H,Q=Q+U,J=d(N,Q,B,J,(H>>1)+R,(U>>1)+V,!1,L,D);var H=E-(t&1?0:Q),U=M-(t&2?N:0),W;if(q){for(R=0;R<Q;R++)if(E=a[U+R]){W=J[R];var Y=Math.min(f-H,N);switch(s){case 0:for(V=0;V<Y;V++)E[H+V]|=W[V];break;case 2:for(V=0;V<Y;V++)E[H+V]^=W[V];break;default:y("JBIG2 error: operator "+s+" is not supported")}}M+=Q-1}else{for(V=0;V<Q;V++)if(E=a[H+V])switch(W=J[V],s){case 0:for(R=0;R<N;R++)E[U+R]|=W[R];break;case 2:for(R=0;R<N;R++)E[U+R]^=W[R];break;default:y("JBIG2 error: operator "+
+s+" is not supported")}M+=N-1}G++;J=b(h,"IADS",g);if(null===J)break;M+=J+p}while(1)}return a}function h(a,b){return{width:fa(a,b),height:fa(a,b+4),x:fa(a,b+8),y:fa(a,b+12),combinationOperator:a[b+16]&7}}function k(){}function l(){}f.prototype={getContexts:function(a){return a in this?this[a]:this[a]=new Int8Array(65536)}};a.prototype={get decoder(){var a=new nd(this.data,this.start,this.end);return W(this,"decoder",a)},get contextCache(){var a=new f;return W(this,"contextCache",a)}};var m=["SymbolDictionary",
+null,null,null,"IntermediateTextRegion",null,"ImmediateTextRegion","ImmediateLosslessTextRegion",null,null,null,null,null,null,null,null,"patternDictionary",null,null,null,"IntermediateHalftoneRegion",null,"ImmediateHalftoneRegion","ImmediateLosslessHalftoneRegion",null,null,null,null,null,null,null,null,null,null,null,null,"IntermediateGenericRegion",null,"ImmediateGenericRegion","ImmediateLosslessGenericRegion","IntermediateGenericRefinementRegion",null,"ImmediateGenericRefinementRegion","ImmediateLosslessGenericRefinementRegion",
+null,null,null,null,"PageInformation","EndOfPage","EndOfStripe","EndOfFile","Profiles","Tables",null,null,null,null,null,null,null,null,"Extension"],n=[[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:2,y:-1},{x:-4,y:0},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}],[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:2,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:2,y:-1},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}],[{x:-1,y:-2},{x:0,y:-2},{x:1,y:-2},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,
+y:-1},{x:-2,y:0},{x:-1,y:0}],[{x:-3,y:-1},{x:-2,y:-1},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-4,y:0},{x:-3,y:0},{x:-2,y:0},{x:-1,y:0}]],q=[{coding:[{x:0,y:-1},{x:1,y:-1},{x:-1,y:0}],reference:[{x:0,y:-1},{x:1,y:-1},{x:-1,y:0},{x:0,y:0},{x:1,y:0},{x:-1,y:1},{x:0,y:1},{x:1,y:1}]},{coding:[{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:-1,y:0}],reference:[{x:0,y:-1},{x:-1,y:0},{x:0,y:0},{x:1,y:0},{x:0,y:1},{x:1,y:1}]}],s=[7379,1946,227,395],p=[32,8];k.prototype={onPageInformation:function(a){this.currentPageInfo=
+a;var b=new Uint8Array((a.width+7>>3)*a.height);if(a.defaultPixelValue){a=0;for(var c=b.length;a<c;a++)b[a]=255}this.buffer=b},drawBitmap:function(a,b){var c=this.currentPageInfo,d=a.width,e=a.height,f=c.width+7>>3,g=c.combinationOperatorOverride?a.combinationOperator:c.combinationOperator,c=this.buffer,h=128>>(a.x&7),k=a.y*f+(a.x>>3),l,m,n;switch(g){case 0:for(g=0;g<e;g++){m=h;n=k;for(l=0;l<d;l++)b[g][l]&&(c[n]|=m),m>>=1,m||(m=128,n++);k+=f}break;case 2:for(g=0;g<e;g++){m=h;n=k;for(l=0;l<d;l++)b[g][l]&&
+(c[n]^=m),m>>=1,m||(m=128,n++);k+=f}break;default:y("JBIG2 error: operator "+g+" is not supported")}},onImmediateGenericRegion:function(b,c,d,f){var g=b.info;c=new a(c,d,f);b=e(b.mmr,g.width,g.height,b.template,b.prediction,null,b.at,c);this.drawBitmap(g,b)},onImmediateLosslessGenericRegion:function(){this.onImmediateGenericRegion.apply(this,arguments)},onSymbolDictionary:function(f,h,k,l,m,n){f.huffman&&y("JBIG2 error: huffman is not supported");var q=this.symbols;q||(this.symbols=q={});for(var p=
+[],t=0,s=k.length;t<s;t++)p=p.concat(q[k[t]]);n=new a(l,m,n);t=f.huffman;s=f.refinement;k=p;var p=f.numberOfNewSymbols,C=f.template,w=f.at,T=f.refinementTemplate,G=f.refinementAt;t&&y("JBIG2 error: huffman is not supported");f=[];var B=0,H=wb(k.length+p);l=n.decoder;for(m=n.contextCache;f.length<p;)for(var D=b(m,"IADH",l),B=B+D,D=0;;){var E=b(m,"IADW",l);if(null===E)break;D+=E;if(s)if(E=b(m,"IAAI",l),1<E)E=g(t,s,D,B,0,E,1,k.concat(f),H,0,0,1,0,void 0,T,G,n);else var E=c(m,l,H),F=b(m,"IARDX",l),L=
+b(m,"IARDY",l),E=d(D,B,T,E<k.length?k[E]:f[E-k.length],F,L,!1,G,n);else E=e(!1,D,B,C,!1,null,w,n);f.push(E)}n=[];t=[];s=!1;for(C=k.length+p;t.length<C;){for(w=b(m,"IAEX",l);w--;)t.push(s);s=!s}l=0;for(m=k.length;l<m;l++)t[l]&&n.push(k[l]);for(k=0;k<p;l++,k++)t[l]&&n.push(f[k]);q[h]=n},onImmediateTextRegion:function(b,c,d,e,f){for(var h=b.info,k=this.symbols,l=[],m=0,n=c.length;m<n;m++)l=l.concat(k[c[m]]);c=wb(l.length);d=new a(d,e,f);b=g(b.huffman,b.refinement,h.width,h.height,b.defaultPixelValue,
+b.numberOfSymbolInstances,b.stripSize,l,c,b.transposed,b.dsOffset,b.referenceCorner,b.combinationOperator,void 0,b.refinementTemplate,b.refinementAt,d);this.drawBitmap(h,b)},onImmediateLosslessTextRegion:function(){this.onImmediateTextRegion.apply(this,arguments)}};l.prototype={parseChunks:function(a){for(var b=new k,c=0,d=a.length;c<d;c++){for(var e=a[c],f={},g=e.data,l=e.end,n=[],q=e.start;q<l;){var e=g,p=q,q={};q.number=fa(e,p);var t=e[p+4],s=t&63;m[s]||y("JBIG2 error: invalid segment type: "+
+s);q.type=s;q.typeName=m[s];q.deferredNonRetain=!!(t&128);var t=!!(t&64),G=e[p+5],B=G>>5&7,H=[G&31],p=p+6;if(7==G)for(B=fa(e,p-1)&536870911,p+=3,G=B+7>>3,H[0]=e[p++];0<--G;)H.push(e[p++]);else 5!=G&&6!=G||y("JBIG2 error: invalid referred-to flags");q.retainBits=H;for(var D=256>=q.number?1:65536>=q.number?2:4,E=[],G=H=void 0,H=0;H<B;H++)G=1==D?e[p]:2==D?va(e,p):fa(e,p),E.push(G),p+=D;q.referredTo=E;t?(q.pageAssociation=fa(e,p),p+=4):q.pageAssociation=e[p++];q.length=fa(e,p);p+=4;if(4294967295==q.length)if(38===
+s){t=h(e,p);B=!!(e[p+17]&1);s=new Uint8Array(6);B||(s[0]=255,s[1]=172);s[2]=t.height>>>24&255;s[3]=t.height>>16&255;s[4]=t.height>>8&255;s[5]=t.height&255;H=p;for(G=e.length;H<G;H++){for(t=0;6>t&&s[t]===e[H+t];)t++;if(6==t){q.length=H+6;break}}4294967295==q.length&&y("JBIG2 error: segment end was not found")}else y("JBIG2 error: invalid unknown segment length");q.headerEnd=p;e=q;q=e.headerEnd;p={header:e,data:g};f.randomAccess||(p.start=q,q+=e.length,p.end=q);n.push(p);if(51==e.type)break}if(f.randomAccess)for(f=
+0,g=n.length;f<g;f++)n[f].start=q,q+=n[f].header.length,n[f].end=q;f=b;g=0;for(l=n.length;g<l;g++){t=n[g];e=f;q=t.header;p=t.data;s=t.start;t=t.end;G=H=B=D=void 0;switch(q.type){case 0:D={};B=va(p,s);D.huffman=!!(B&1);D.refinement=!!(B&2);D.huffmanDHSelector=B>>2&3;D.huffmanDWSelector=B>>4&3;D.bitmapSizeSelector=B>>6&1;D.aggregationInstancesSelector=B>>7&1;D.bitmapCodingContextUsed=!!(B&256);D.bitmapCodingContextRetained=!!(B&512);D.template=B>>10&3;D.refinementTemplate=B>>12&1;s+=2;if(!D.huffman){G=
+0===D.template?4:1;B=[];for(H=0;H<G;H++)B.push({x:p[s]<<24>>24,y:p[s+1]<<24>>24}),s+=2;D.at=B}if(D.refinement&&!D.refinementTemplate){B=[];for(H=0;2>H;H++)B.push({x:p[s]<<24>>24,y:p[s+1]<<24>>24}),s+=2;D.refinementAt=B}D.numberOfExportedSymbols=fa(p,s);s+=4;D.numberOfNewSymbols=fa(p,s);s+=4;D=[D,q.number,q.referredTo,p,s,t];break;case 6:case 7:G={};G.info=h(p,s);s+=17;B=va(p,s);s+=2;G.huffman=!!(B&1);G.refinement=!!(B&2);G.stripSize=1<<(B>>2&3);G.referenceCorner=B>>4&3;G.transposed=!!(B&64);G.combinationOperator=
+B>>7&3;G.defaultPixelValue=B>>9&1;G.dsOffset=B<<17>>27;G.refinementTemplate=B>>15&1;G.huffman&&(B=va(p,s),s+=2,G.huffmanFS=B&3,G.huffmanDS=B>>2&3,G.huffmanDT=B>>4&3,G.huffmanRefinementDW=B>>6&3,G.huffmanRefinementDH=B>>8&3,G.huffmanRefinementDX=B>>10&3,G.huffmanRefinementDY=B>>12&3,G.huffmanRefinementSizeSelector=!!(B&14));if(G.refinement&&!G.refinementTemplate){B=[];for(H=0;2>H;H++)B.push({x:p[s]<<24>>24,y:p[s+1]<<24>>24}),s+=2;G.refinementAt=B}G.numberOfSymbolInstances=fa(p,s);s+=4;G.huffman&&y("JBIG2 error: huffman is not supported");
+D=[G,q.referredTo,p,s,t];break;case 38:case 39:D={};D.info=h(p,s);s+=17;B=p[s++];D.mmr=!!(B&1);D.template=B>>1&3;D.prediction=!!(B&8);if(!D.mmr){G=0===D.template?4:1;B=[];for(H=0;H<G;H++)B.push({x:p[s]<<24>>24,y:p[s+1]<<24>>24}),s+=2;D.at=B}D=[D,p,s,t];break;case 48:t={width:fa(p,s),height:fa(p,s+4),resolutionX:fa(p,s+8),resolutionY:fa(p,s+12)};4294967295==t.height&&delete t.height;B=p[s+16];va(p,s+17);t.lossless=!!(B&1);t.refinement=!!(B&2);t.defaultPixelValue=B>>2&1;t.combinationOperator=B>>3&3;
+t.requiresBuffer=!!(B&32);t.combinationOperatorOverride=!!(B&64);D=[t];break;case 49:break;case 50:break;case 51:break;case 62:break;default:y("JBIG2 error: segment type "+q.typeName+"("+q.type+") is not implemented")}q="on"+q.typeName;q in e&&e[q].apply(e,D)}}return b.buffer}};return l}();PDFJS.bidi=function(){function f(a,b,c){for(c-=1;b<c;++b,--c){var d=a[b];a[b]=a[c];a[c]=d}}function a(a,b,c){return{str:a,dir:c?"ttb":b?"ltr":"rtl"}}var b="BN BN BN BN BN BN BN BN BN S B S WS B BN BN BN BN BN BN BN BN BN BN BN BN BN BN B B B S WS ON ON ET ET ET ON ON ON ON ON ON CS ON CS ON EN EN EN EN EN EN EN EN EN EN ON ON ON ON ON ON ON L L L L L L L L L L L L L L L L L L L L L L L L L L ON ON ON ON ON ON L L L L L L L L L L L L L L L L L L L L L L L L L L ON ON ON ON BN BN BN BN BN BN B BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN BN CS ON ET ET ET ET ON ON ON ON L ON ON ON ON ON ET ET EN EN ON L ON ON ON EN L ON ON ON ON ON L L L L L L L L L L L L L L L L L L L L L L L ON L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L ON L L L L L L L L".split(" "),
+c="AL AL AL AL AL AL AL AL AL AL AL AL CS AL ON ON NSM NSM NSM NSM NSM NSM AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM AL AL AL AL AL AL AL AN AN AN AN AN AN AN AN AN AN ET AN AN AL AL AL NSM AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM NSM ON NSM NSM NSM NSM AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL".split(" "),
+e=[],d=[];return function(g,h,k){var l=!0,m=g.length;if(0===m||k)return a(g,l,k);e.length=0;var n=d.length=0;for(k=0;k<m;++k){e[k]=g.charAt(k);var q=g.charCodeAt(k),s="L";255>=q?s=b[q]:1424<=q&&1524>=q?s="R":1536<=q&&1791>=q?s=c[q&255]:1792<=q&&2220>=q&&(s="AL");"R"!=s&&"AL"!=s&&"AN"!=s||n++;d[k]=s}if(0===n)return a(g,!0);-1==h&&(0.3>m/n?(l=!0,h=0):(l=!1,h=1));g=[];for(k=0;k<m;++k)g[k]=h;n=h=0!==(h&1)?"R":"L";for(k=0;k<m;++k)"NSM"==d[k]?d[k]=n:n=d[k];n=h;for(k=0;k<m;++k)if(q=d[k],"EN"==q)d[k]="AL"==
+n?"AN":"EN";else if("R"==q||"L"==q||"AL"==q)n=q;for(k=0;k<m;++k)q=d[k],"AL"==q&&(d[k]="R");for(k=1;k<m-1;++k)"ES"==d[k]&&"EN"==d[k-1]&&"EN"==d[k+1]&&(d[k]="EN"),"CS"!=d[k]||"EN"!=d[k-1]&&"AN"!=d[k-1]||d[k+1]!=d[k-1]||(d[k]=d[k-1]);for(k=0;k<m;++k)if("EN"==d[k]){for(n=k-1;0<=n&&"ET"==d[n];--n)d[n]="EN";for(n=k+1;n<m&&"ET"==d[n];--n)d[n]="EN"}for(k=0;k<m;++k)if(q=d[k],"WS"==q||"ES"==q||"ET"==q||"CS"==q)d[k]="ON";n=h;for(k=0;k<m;++k)if(q=d[k],"EN"==q)d[k]="L"==n?"L":"EN";else if("R"==q||"L"==q)n=q;for(k=
+0;k<m;++k)if("ON"==d[k]){a:for(n=k+1,q=d.length;n<q;++n)if("ON"!=d[n])break a;var p=h;0<k&&(p=d[k-1]);q=h;n+1<m&&(q=d[n+1]);"L"!=p&&(p="R");"L"!=q&&(q="R");if(p==q)for(q=d,s=n;k<s;++k)q[k]=p;k=n-1}for(k=0;k<m;++k)"ON"==d[k]&&(d[k]=h);for(k=0;k<m;++k)if(q=d[k],0===(g[k]&1))if("R"==q)g[k]+=1;else{if("AN"==q||"EN"==q)g[k]+=2}else if("L"==q||"AN"==q||"EN"==q)g[k]+=1;q=-1;h=99;k=0;for(m=g.length;k<m;++k)n=g[k],q<n&&(q=n),h>n&&0!==(n&1)&&(h=n);for(n=q;n>=h;--n){q=-1;k=0;for(m=g.length;k<m;++k)g[k]<n?0<=
+q&&(f(e,q,k),q=-1):0>q&&(q=k);0<=q&&f(e,q,g.length)}g="";k=0;for(m=e.length;k<m;++k)h=e[k],"<"!=h&&">"!=h&&(g+=h);return a(g,l)}}();var ae=function(f){function a(a){this.h1=a?a&4294967295:3285377520;this.h2=a?a&4294967295:3285377520}a.prototype={update:function(a){var c=!1,e;if("string"==typeof a){var d=new Uint8Array(2*a.length),f=0;for(e=0;e<a.length;e++){var h=a.charCodeAt(e);255>=h?d[f++]=h:(d[f++]=h>>>8,d[f++]=h&255)}}else if(a instanceof Uint8Array)d=a,f=d.length;else if("object"===typeof a&&
+"length"in a)d=a,f=d.length,c=!0;else throw Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");a=f>>2;var f=f-4*a,c=c?new td(d,a):new Uint32Array(d.buffer,0,a),k=0,k=0,h=this.h1,l=this.h2;for(e=0;e<a;e++)e&1?(k=c[e],k=3432918353*k&4294901760|11601*k&65535,k=k<<15|k>>>17,k=461845907*k&4294901760|13715*k&65535,h^=k,h=h<<13|h>>>19,h=5*h+3864292196):(k=c[e],k=3432918353*k&4294901760|11601*k&65535,k=k<<15|k>>>17,k=461845907*k&4294901760|13715*k&65535,l^=k,l=l<<13|l>>>
+19,l=5*l+3864292196);k=0;switch(f){case 3:k^=d[4*a+2]<<16;case 2:k^=d[4*a+1]<<8;case 1:k^=d[4*a],k=3432918353*k&4294901760|11601*k&65535,k=k<<15|k>>>17,k=461845907*k&4294901760|13715*k&65535,a&1?h^=k:l^=k}this.h1=h;this.h2=l;return this},hexdigest:function(){for(var a=this.h1,c=this.h2,a=a^c>>>1,a=3981806797*a&4294901760|36045*a&65535,c=4283543511*c&4294901760|(2950163797*(c<<16|a>>>16)&4294901760)>>>16,a=a^c>>>1,a=444984403*a&4294901760|60499*a&65535,c=3301882366*c&4294901760|(3120437893*(c<<16|
+a>>>16)&4294901760)>>>16,e=0,a=[a^c>>>1,c],c="";e<a.length;e++){for(var d=(a[e]>>>0).toString(16);8>d.length;)d="0"+d;c+=d}return c}};return a}()}).call("undefined"===typeof window?this:window);PDFJS.workerSrc||"undefined"===typeof document||(PDFJS.workerSrc=function(){var ya=(document.body||document.getElementsByTagName("head")[0]).lastChild.src;return ya&&ya.replace(/\.js$/i,".worker.js")}());
diff --git a/lib/viewers/pdf/viewer.css b/lib/viewers/pdf/viewer.css
index 8aa0ef2..66a5248 100644
--- a/lib/viewers/pdf/viewer.css
+++ b/lib/viewers/pdf/viewer.css
@@ -1,1454 +1,1960 @@
/* Copyright 2012 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
* {
padding: 0;
margin: 0;
}
html {
height: 100%;
+ /* Font size is needed to make the activity bar the correct size. */
+ font-size: 10px;
}
body {
height: 100%;
background-color: #404040;
background-image: url(images/texture.png);
}
body,
input,
button,
select {
font: message-box;
+ outline: none;
}
.hidden {
- display: none;
+ display: none !important;
}
[hidden] {
display: none !important;
}
#viewerContainer:-webkit-full-screen {
top: 0px;
border-top: 2px solid transparent;
- background-color: #404040;
- background-image: url(images/texture.png);
+ background-color: #000;
width: 100%;
height: 100%;
overflow: hidden;
cursor: none;
}
#viewerContainer:-moz-full-screen {
top: 0px;
border-top: 2px solid transparent;
- background-color: #404040;
- background-image: url(images/texture.png);
+ background-color: #000;
width: 100%;
height: 100%;
overflow: hidden;
cursor: none;
}
+#viewerContainer:-ms-fullscreen {
+ top: 0px !important;
+ border-top: 2px solid transparent;
+ width: 100%;
+ height: 100%;
+ overflow: hidden !important;
+ cursor: none;
+}
+
+#viewerContainer:-ms-fullscreen::-ms-backdrop {
+ background-color: #000;
+}
+
#viewerContainer:fullscreen {
top: 0px;
border-top: 2px solid transparent;
- background-color: #404040;
- background-image: url(images/texture.png);
+ background-color: #000;
width: 100%;
height: 100%;
overflow: hidden;
cursor: none;
}
-
:-webkit-full-screen .page {
margin-bottom: 100%;
+ border: 0;
}
:-moz-full-screen .page {
margin-bottom: 100%;
+ border: 0;
+}
+
+:-ms-fullscreen .page {
+ margin-bottom: 100% !important;
+ border: 0;
}
:fullscreen .page {
margin-bottom: 100%;
+ border: 0;
}
:-webkit-full-screen a:not(.internalLink) {
display: none;
}
:-moz-full-screen a:not(.internalLink) {
display: none;
}
+:-ms-fullscreen a:not(.internalLink) {
+ display: none !important;
+}
+
:fullscreen a:not(.internalLink) {
display: none;
}
-#viewerContainer.presentationControls {
+:-webkit-full-screen .textLayer > div {
+ cursor: none;
+}
+
+:-moz-full-screen .textLayer > div {
+ cursor: none;
+}
+
+:fullscreen .textLayer > div {
+ cursor: none;
+}
+
+#viewerContainer.presentationControls,
+#viewerContainer.presentationControls .textLayer > div {
cursor: default;
}
/* outer/inner center provides horizontal center */
+.outerCenter {
+ pointer-events: none;
+ position: relative;
+}
html[dir='ltr'] .outerCenter {
float: right;
- position: relative;
right: 50%;
}
html[dir='rtl'] .outerCenter {
float: left;
- position: relative;
left: 50%;
}
+.innerCenter {
+ pointer-events: auto;
+ position: relative;
+}
html[dir='ltr'] .innerCenter {
float: right;
- position: relative;
right: -50%;
}
html[dir='rtl'] .innerCenter {
float: left;
- position: relative;
left: -50%;
}
#outerContainer {
width: 100%;
height: 100%;
+ position: relative;
}
#sidebarContainer {
position: absolute;
top: 0;
bottom: 0;
width: 200px;
visibility: hidden;
-webkit-transition-duration: 200ms;
-webkit-transition-timing-function: ease;
- -moz-transition-duration: 200ms;
- -moz-transition-timing-function: ease;
- -ms-transition-duration: 200ms;
- -ms-transition-timing-function: ease;
- -o-transition-duration: 200ms;
- -o-transition-timing-function: ease;
transition-duration: 200ms;
transition-timing-function: ease;
}
html[dir='ltr'] #sidebarContainer {
-webkit-transition-property: left;
- -moz-transition-property: left;
- -ms-transition-property: left;
- -o-transition-property: left;
transition-property: left;
left: -200px;
}
html[dir='rtl'] #sidebarContainer {
-webkit-transition-property: right;
- -ms-transition-property: right;
- -o-transition-property: right;
transition-property: right;
right: -200px;
}
#outerContainer.sidebarMoving > #sidebarContainer,
#outerContainer.sidebarOpen > #sidebarContainer {
visibility: visible;
}
html[dir='ltr'] #outerContainer.sidebarOpen > #sidebarContainer {
left: 0px;
}
html[dir='rtl'] #outerContainer.sidebarOpen > #sidebarContainer {
right: 0px;
}
#mainContainer {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
min-width: 320px;
-webkit-transition-duration: 200ms;
-webkit-transition-timing-function: ease;
- -moz-transition-duration: 200ms;
- -moz-transition-timing-function: ease;
- -ms-transition-duration: 200ms;
- -ms-transition-timing-function: ease;
- -o-transition-duration: 200ms;
- -o-transition-timing-function: ease;
transition-duration: 200ms;
transition-timing-function: ease;
}
html[dir='ltr'] #outerContainer.sidebarOpen > #mainContainer {
-webkit-transition-property: left;
- -moz-transition-property: left;
- -ms-transition-property: left;
- -o-transition-property: left;
transition-property: left;
left: 200px;
}
html[dir='rtl'] #outerContainer.sidebarOpen > #mainContainer {
-webkit-transition-property: right;
- -moz-transition-property: right;
- -ms-transition-property: right;
- -o-transition-property: right;
transition-property: right;
right: 200px;
}
#sidebarContent {
top: 32px;
bottom: 0;
overflow: auto;
+ -webkit-overflow-scrolling: touch;
position: absolute;
width: 200px;
-
background-color: hsla(0,0%,0%,.1);
- box-shadow: inset -1px 0 0 hsla(0,0%,0%,.25);
}
html[dir='ltr'] #sidebarContent {
left: 0;
+ box-shadow: inset -1px 0 0 hsla(0,0%,0%,.25);
}
html[dir='rtl'] #sidebarContent {
right: 0;
+ box-shadow: inset 1px 0 0 hsla(0,0%,0%,.25);
}
#viewerContainer {
overflow: auto;
- box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05);
+ -webkit-overflow-scrolling: touch;
position: absolute;
top: 32px;
right: 0;
bottom: 0;
left: 0;
+ outline: none;
}
-.loadingInProgress #viewerContainer {
- top: 39px;
+html[dir='ltr'] #viewerContainer {
+ box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05);
+}
+html[dir='rtl'] #viewerContainer {
+ box-shadow: inset -1px 0 0 hsla(0,0%,100%,.05);
}
.toolbar {
position: relative;
left: 0;
right: 0;
z-index: 9999;
cursor: default;
}
#toolbarContainer {
width: 100%;
}
#toolbarSidebar {
width: 200px;
height: 32px;
background-color: #424242; /* fallback */
background-image: url(images/texture.png),
linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95));
+}
+html[dir='ltr'] #toolbarSidebar {
box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25),
-
inset 0 -1px 0 hsla(0,0%,100%,.05),
0 1px 0 hsla(0,0%,0%,.15),
0 0 1px hsla(0,0%,0%,.1);
}
+html[dir='rtl'] #toolbarSidebar {
+ box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.25),
+ inset 0 1px 0 hsla(0,0%,100%,.05),
+ 0 1px 0 hsla(0,0%,0%,.15),
+ 0 0 1px hsla(0,0%,0%,.1);
+}
-#toolbarContainer, .findbar {
+#toolbarContainer, .findbar, .secondaryToolbar {
position: relative;
height: 32px;
background-color: #474747; /* fallback */
background-image: url(images/texture.png),
linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95));
+}
+html[dir='ltr'] #toolbarContainer, .findbar, .secondaryToolbar {
box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08),
inset 0 1px 1px hsla(0,0%,0%,.15),
inset 0 -1px 0 hsla(0,0%,100%,.05),
0 1px 0 hsla(0,0%,0%,.15),
0 1px 1px hsla(0,0%,0%,.1);
}
+html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar {
+ box-shadow: inset -1px 0 0 hsla(0,0%,100%,.08),
+ inset 0 1px 1px hsla(0,0%,0%,.15),
+ inset 0 -1px 0 hsla(0,0%,100%,.05),
+ 0 1px 0 hsla(0,0%,0%,.15),
+ 0 1px 1px hsla(0,0%,0%,.1);
+}
#toolbarViewer {
height: 32px;
}
#loadingBar {
position: relative;
width: 100%;
height: 6px;
background-color: #333;
border-bottom: 1px solid #333;
}
#loadingBar .progress {
position: absolute;
top: 0;
left: 0;
width: 0%;
height: 100%;
background-color: #ddd;
overflow: hidden;
- -moz-transition: width 200ms;
- -ms-transition: width 200ms;
-webkit-transition: width 200ms;
transition: width 200ms;
}
-@-moz-keyframes progressIndeterminate {
- 0% { left: 0%; }
- 50% { left: 100%; }
- 100% { left: 100%; }
-}
-
-@-ms-keyframes progressIndeterminate {
- 0% { left: 0%; }
- 50% { left: 100%; }
- 100% { left: 100%; }
-}
-
@-webkit-keyframes progressIndeterminate {
0% { left: 0%; }
50% { left: 100%; }
100% { left: 100%; }
}
@keyframes progressIndeterminate {
0% { left: 0%; }
50% { left: 100%; }
100% { left: 100%; }
}
#loadingBar .progress.indeterminate {
background-color: #999;
- -moz-transition: none;
- -ms-transition: none;
-webkit-transition: none;
transition: none;
}
#loadingBar .indeterminate .glimmer {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 50px;
background-image: linear-gradient(to right, #999 0%, #fff 50%, #999 100%);
- background-size: 100% 100% no-repeat;
+ background-size: 100% 100%;
+ background-repeat: no-repeat;
- -moz-animation: progressIndeterminate 2s linear infinite;
- -ms-animation: progressIndeterminate 2s linear infinite;
-webkit-animation: progressIndeterminate 2s linear infinite;
animation: progressIndeterminate 2s linear infinite;
}
-.findbar {
+.findbar, .secondaryToolbar {
top: 32px;
position: absolute;
z-index: 10000;
height: 32px;
min-width: 16px;
padding: 0px 6px 0px 6px;
margin: 4px 2px 4px 2px;
color: hsl(0,0%,85%);
font-size: 12px;
line-height: 14px;
text-align: left;
cursor: default;
}
html[dir='ltr'] .findbar {
left: 68px;
}
html[dir='rtl'] .findbar {
right: 68px;
}
.findbar label {
-webkit-user-select: none;
-moz-user-select: none;
}
#findInput[data-status="pending"] {
background-image: url(images/loading-small.png);
background-repeat: no-repeat;
background-position: right;
}
-.doorHanger {
+.secondaryToolbar {
+ padding: 6px;
+ height: auto;
+ z-index: 30000;
+}
+html[dir='ltr'] .secondaryToolbar {
+ right: 4px;
+}
+html[dir='rtl'] .secondaryToolbar {
+ left: 4px;
+}
+
+#secondaryToolbarButtonContainer {
+ max-width: 200px;
+ max-height: 400px;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ margin-bottom: -4px;
+}
+
+.doorHanger,
+.doorHangerRight {
border: 1px solid hsla(0,0%,0%,.5);
border-radius: 2px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}
-.doorHanger:after, .doorHanger:before {
+.doorHanger:after, .doorHanger:before,
+.doorHangerRight:after, .doorHangerRight:before {
bottom: 100%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
-.doorHanger:after {
+.doorHanger:after,
+.doorHangerRight:after {
border-bottom-color: hsla(0,0%,32%,.99);
border-width: 8px;
}
-.doorHanger:before {
+.doorHanger:before,
+.doorHangerRight:before {
border-bottom-color: hsla(0,0%,0%,.5);
border-width: 9px;
}
-html[dir='ltr'] .doorHanger:after {
+html[dir='ltr'] .doorHanger:after,
+html[dir='rtl'] .doorHangerRight:after {
left: 13px;
margin-left: -8px;
}
-html[dir='ltr'] .doorHanger:before {
+html[dir='ltr'] .doorHanger:before,
+html[dir='rtl'] .doorHangerRight:before {
left: 13px;
margin-left: -9px;
}
-html[dir='rtl'] .doorHanger:after {
+html[dir='rtl'] .doorHanger:after,
+html[dir='ltr'] .doorHangerRight:after {
right: 13px;
margin-right: -8px;
}
-html[dir='rtl'] .doorHanger:before {
+html[dir='rtl'] .doorHanger:before,
+html[dir='ltr'] .doorHangerRight:before {
right: 13px;
margin-right: -9px;
}
#findMsg {
font-style: italic;
color: #A6B7D0;
}
.notFound {
background-color: rgb(255, 137, 153);
}
html[dir='ltr'] #toolbarViewerLeft {
margin-left: -1px;
}
html[dir='rtl'] #toolbarViewerRight {
- margin-left: -1px;
+ margin-right: -1px;
}
-
html[dir='ltr'] #toolbarViewerLeft,
html[dir='rtl'] #toolbarViewerRight {
position: absolute;
top: 0;
left: 0;
}
html[dir='ltr'] #toolbarViewerRight,
html[dir='rtl'] #toolbarViewerLeft {
position: absolute;
top: 0;
right: 0;
}
html[dir='ltr'] #toolbarViewerLeft > *,
html[dir='ltr'] #toolbarViewerMiddle > *,
html[dir='ltr'] #toolbarViewerRight > *,
html[dir='ltr'] .findbar > * {
position: relative;
float: left;
}
html[dir='rtl'] #toolbarViewerLeft > *,
html[dir='rtl'] #toolbarViewerMiddle > *,
html[dir='rtl'] #toolbarViewerRight > *,
html[dir='rtl'] .findbar > * {
position: relative;
float: right;
}
html[dir='ltr'] .splitToolbarButton {
margin: 3px 2px 4px 0;
display: inline-block;
}
html[dir='rtl'] .splitToolbarButton {
margin: 3px 0 4px 2px;
display: inline-block;
}
html[dir='ltr'] .splitToolbarButton > .toolbarButton {
border-radius: 0;
float: left;
}
html[dir='rtl'] .splitToolbarButton > .toolbarButton {
border-radius: 0;
float: right;
}
-.toolbarButton {
+.toolbarButton,
+.secondaryToolbarButton,
+.overlayButton {
border: 0 none;
- background-color: rgba(0, 0, 0, 0);
+ background: none;
width: 32px;
height: 25px;
}
.toolbarButton > span {
display: inline-block;
width: 0;
height: 0;
overflow: hidden;
}
-.toolbarButton[disabled] {
+.toolbarButton[disabled],
+.secondaryToolbarButton[disabled],
+.overlayButton[disabled] {
opacity: .5;
}
.toolbarButton.group {
margin-right: 0;
}
.splitToolbarButton.toggled .toolbarButton {
margin: 0;
}
.splitToolbarButton:hover > .toolbarButton,
.splitToolbarButton:focus > .toolbarButton,
.splitToolbarButton.toggled > .toolbarButton,
.toolbarButton.textButton {
background-color: hsla(0,0%,0%,.12);
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
border: 1px solid hsla(0,0%,0%,.35);
border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
0 0 1px hsla(0,0%,100%,.15) inset,
0 1px 0 hsla(0,0%,100%,.05);
-webkit-transition-property: background-color, border-color, box-shadow;
-webkit-transition-duration: 150ms;
-webkit-transition-timing-function: ease;
- -moz-transition-property: background-color, border-color, box-shadow;
- -moz-transition-duration: 150ms;
- -moz-transition-timing-function: ease;
- -ms-transition-property: background-color, border-color, box-shadow;
- -ms-transition-duration: 150ms;
- -ms-transition-timing-function: ease;
- -o-transition-property: background-color, border-color, box-shadow;
- -o-transition-duration: 150ms;
- -o-transition-timing-function: ease;
transition-property: background-color, border-color, box-shadow;
transition-duration: 150ms;
transition-timing-function: ease;
}
.splitToolbarButton > .toolbarButton:hover,
.splitToolbarButton > .toolbarButton:focus,
.dropdownToolbarButton:hover,
+.overlayButton:hover,
.toolbarButton.textButton:hover,
.toolbarButton.textButton:focus {
background-color: hsla(0,0%,0%,.2);
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
0 0 1px hsla(0,0%,100%,.15) inset,
0 0 1px hsla(0,0%,0%,.05);
z-index: 199;
}
+.splitToolbarButton > .toolbarButton {
+ position: relative;
+}
html[dir='ltr'] .splitToolbarButton > .toolbarButton:first-child,
html[dir='rtl'] .splitToolbarButton > .toolbarButton:last-child {
position: relative;
margin: 0;
margin-right: -1px;
border-top-left-radius: 2px;
border-bottom-left-radius: 2px;
border-right-color: transparent;
}
html[dir='ltr'] .splitToolbarButton > .toolbarButton:last-child,
html[dir='rtl'] .splitToolbarButton > .toolbarButton:first-child {
position: relative;
margin: 0;
margin-left: -1px;
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
border-left-color: transparent;
}
.splitToolbarButtonSeparator {
padding: 8px 0;
width: 1px;
- background-color: hsla(0,0%,00%,.5);
+ background-color: hsla(0,0%,0%,.5);
z-index: 99;
box-shadow: 0 0 0 1px hsla(0,0%,100%,.08);
display: inline-block;
margin: 5px 0;
}
html[dir='ltr'] .splitToolbarButtonSeparator {
float: left;
}
html[dir='rtl'] .splitToolbarButtonSeparator {
float: right;
}
.splitToolbarButton:hover > .splitToolbarButtonSeparator,
.splitToolbarButton.toggled > .splitToolbarButtonSeparator {
padding: 12px 0;
margin: 1px 0;
box-shadow: 0 0 0 1px hsla(0,0%,100%,.03);
-webkit-transition-property: padding;
-webkit-transition-duration: 10ms;
-webkit-transition-timing-function: ease;
- -moz-transition-property: padding;
- -moz-transition-duration: 10ms;
- -moz-transition-timing-function: ease;
- -ms-transition-property: padding;
- -ms-transition-duration: 10ms;
- -ms-transition-timing-function: ease;
- -o-transition-property: padding;
- -o-transition-duration: 10ms;
- -o-transition-timing-function: ease;
transition-property: padding;
transition-duration: 10ms;
transition-timing-function: ease;
}
.toolbarButton,
-.dropdownToolbarButton {
+.dropdownToolbarButton,
+.secondaryToolbarButton,
+.overlayButton {
min-width: 16px;
padding: 2px 6px 0;
border: 1px solid transparent;
border-radius: 2px;
- color: hsl(0,0%,95%);
+ color: hsla(0,0%,100%,.8);
font-size: 12px;
line-height: 14px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
/* Opera does not support user-select, use <... unselectable="on"> instead */
cursor: default;
-webkit-transition-property: background-color, border-color, box-shadow;
-webkit-transition-duration: 150ms;
-webkit-transition-timing-function: ease;
- -moz-transition-property: background-color, border-color, box-shadow;
- -moz-transition-duration: 150ms;
- -moz-transition-timing-function: ease;
- -ms-transition-property: background-color, border-color, box-shadow;
- -ms-transition-duration: 150ms;
- -ms-transition-timing-function: ease;
- -o-transition-property: background-color, border-color, box-shadow;
- -o-transition-duration: 150ms;
- -o-transition-timing-function: ease;
transition-property: background-color, border-color, box-shadow;
transition-duration: 150ms;
transition-timing-function: ease;
}
html[dir='ltr'] .toolbarButton,
+html[dir='ltr'] .overlayButton,
html[dir='ltr'] .dropdownToolbarButton {
margin: 3px 2px 4px 0;
}
html[dir='rtl'] .toolbarButton,
+html[dir='rtl'] .overlayButton,
html[dir='rtl'] .dropdownToolbarButton {
margin: 3px 0 4px 2px;
}
.toolbarButton:hover,
.toolbarButton:focus,
-.dropdownToolbarButton {
+.dropdownToolbarButton,
+.overlayButton,
+.secondaryToolbarButton:hover,
+.secondaryToolbarButton:focus {
background-color: hsla(0,0%,0%,.12);
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
border: 1px solid hsla(0,0%,0%,.35);
border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
0 0 1px hsla(0,0%,100%,.15) inset,
0 1px 0 hsla(0,0%,100%,.05);
}
.toolbarButton:hover:active,
-.dropdownToolbarButton:hover:active {
+.overlayButton:hover:active,
+.dropdownToolbarButton:hover:active,
+.secondaryToolbarButton:hover:active {
background-color: hsla(0,0%,0%,.2);
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45);
box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset,
0 0 1px hsla(0,0%,0%,.2) inset,
0 1px 0 hsla(0,0%,100%,.05);
-webkit-transition-property: background-color, border-color, box-shadow;
-webkit-transition-duration: 10ms;
-webkit-transition-timing-function: linear;
- -moz-transition-property: background-color, border-color, box-shadow;
- -moz-transition-duration: 10ms;
- -moz-transition-timing-function: linear;
- -ms-transition-property: background-color, border-color, box-shadow;
- -ms-transition-duration: 10ms;
- -ms-transition-timing-function: linear;
- -o-transition-property: background-color, border-color, box-shadow;
- -o-transition-duration: 10ms;
- -o-transition-timing-function: linear;
transition-property: background-color, border-color, box-shadow;
transition-duration: 10ms;
transition-timing-function: linear;
}
.toolbarButton.toggled,
-.splitToolbarButton.toggled > .toolbarButton.toggled {
+.splitToolbarButton.toggled > .toolbarButton.toggled,
+.secondaryToolbarButton.toggled {
background-color: hsla(0,0%,0%,.3);
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5);
box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset,
0 0 1px hsla(0,0%,0%,.2) inset,
0 1px 0 hsla(0,0%,100%,.05);
-webkit-transition-property: background-color, border-color, box-shadow;
-webkit-transition-duration: 10ms;
-webkit-transition-timing-function: linear;
- -moz-transition-property: background-color, border-color, box-shadow;
- -moz-transition-duration: 10ms;
- -moz-transition-timing-function: linear;
- -ms-transition-property: background-color, border-color, box-shadow;
- -ms-transition-duration: 10ms;
- -ms-transition-timing-function: linear;
- -o-transition-property: background-color, border-color, box-shadow;
- -o-transition-duration: 10ms;
- -o-transition-timing-function: linear;
transition-property: background-color, border-color, box-shadow;
transition-duration: 10ms;
transition-timing-function: linear;
}
.toolbarButton.toggled:hover:active,
-.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active {
+.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active,
+.secondaryToolbarButton.toggled:hover:active {
background-color: hsla(0,0%,0%,.4);
border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.5) hsla(0,0%,0%,.55);
box-shadow: 0 1px 1px hsla(0,0%,0%,.2) inset,
0 0 1px hsla(0,0%,0%,.3) inset,
0 1px 0 hsla(0,0%,100%,.05);
}
.dropdownToolbarButton {
width: 120px;
max-width: 120px;
padding: 3px 2px 2px;
overflow: hidden;
background: url(images/toolbarButton-menuArrows.png) no-repeat;
}
html[dir='ltr'] .dropdownToolbarButton {
background-position: 95%;
}
html[dir='rtl'] .dropdownToolbarButton {
background-position: 5%;
}
.dropdownToolbarButton > select {
-webkit-appearance: none;
-moz-appearance: none; /* in the future this might matter, see bugzilla bug #649849 */
min-width: 140px;
font-size: 12px;
color: hsl(0,0%,95%);
margin: 0;
padding: 0;
border: none;
background: rgba(0,0,0,0); /* Opera does not support 'transparent' <select> background */
}
.dropdownToolbarButton > select > option {
background: hsl(0,0%,24%);
}
#customScaleOption {
display: none;
}
#pageWidthOption {
border-bottom: 1px rgba(255, 255, 255, .5) solid;
}
html[dir='ltr'] .splitToolbarButton:first-child,
html[dir='ltr'] .toolbarButton:first-child,
html[dir='rtl'] .splitToolbarButton:last-child,
html[dir='rtl'] .toolbarButton:last-child {
margin-left: 4px;
}
html[dir='ltr'] .splitToolbarButton:last-child,
html[dir='ltr'] .toolbarButton:last-child,
html[dir='rtl'] .splitToolbarButton:first-child,
html[dir='rtl'] .toolbarButton:first-child {
margin-right: 4px;
}
.toolbarButtonSpacer {
width: 30px;
display: inline-block;
height: 1px;
}
.toolbarButtonFlexibleSpacer {
-webkit-box-flex: 1;
-moz-box-flex: 1;
min-width: 30px;
}
-.toolbarButton#sidebarToggle::before {
- display: inline-block;
- content: url(images/toolbarButton-sidebarToggle.png);
-}
-
html[dir='ltr'] #findPrevious {
margin-left: 3px;
}
html[dir='ltr'] #findNext {
margin-right: 3px;
}
html[dir='rtl'] #findPrevious {
margin-right: 3px;
}
html[dir='rtl'] #findNext {
margin-left: 3px;
}
-.toolbarButton::before {
+
+.toolbarButton::before,
+.secondaryToolbarButton::before {
/* All matching images have a size of 16x16
- * (except for the print button: 18x16)
* All relevant containers have a size of 32x25 */
position: absolute;
+ display: inline-block;
top: 4px;
left: 7px;
}
+html[dir="ltr"] .secondaryToolbarButton::before {
+ left: 4px;
+}
+html[dir="rtl"] .secondaryToolbarButton::before {
+ right: 4px;
+}
+
+html[dir='ltr'] .toolbarButton#sidebarToggle::before {
+ content: url(images/toolbarButton-sidebarToggle.png);
+}
+html[dir='rtl'] .toolbarButton#sidebarToggle::before {
+ content: url(images/toolbarButton-sidebarToggle-rtl.png);
+}
+
+html[dir='ltr'] .toolbarButton#secondaryToolbarToggle::before {
+ content: url(images/toolbarButton-secondaryToolbarToggle.png);
+}
+html[dir='rtl'] .toolbarButton#secondaryToolbarToggle::before {
+ content: url(images/toolbarButton-secondaryToolbarToggle-rtl.png);
+}
+
html[dir='ltr'] .toolbarButton.findPrevious::before {
- display: inline-block;
content: url(images/findbarButton-previous.png);
}
-
html[dir='rtl'] .toolbarButton.findPrevious::before {
- display: inline-block;
content: url(images/findbarButton-previous-rtl.png);
}
html[dir='ltr'] .toolbarButton.findNext::before {
- display: inline-block;
content: url(images/findbarButton-next.png);
}
-
html[dir='rtl'] .toolbarButton.findNext::before {
- display: inline-block;
content: url(images/findbarButton-next-rtl.png);
}
html[dir='ltr'] .toolbarButton.pageUp::before {
- display: inline-block;
content: url(images/toolbarButton-pageUp.png);
}
-
html[dir='rtl'] .toolbarButton.pageUp::before {
- display: inline-block;
content: url(images/toolbarButton-pageUp-rtl.png);
}
html[dir='ltr'] .toolbarButton.pageDown::before {
- display: inline-block;
content: url(images/toolbarButton-pageDown.png);
}
-
html[dir='rtl'] .toolbarButton.pageDown::before {
- display: inline-block;
content: url(images/toolbarButton-pageDown-rtl.png);
}
.toolbarButton.zoomOut::before {
- display: inline-block;
content: url(images/toolbarButton-zoomOut.png);
}
.toolbarButton.zoomIn::before {
- display: inline-block;
content: url(images/toolbarButton-zoomIn.png);
}
-.toolbarButton.presentationMode::before {
- display: inline-block;
+.toolbarButton.presentationMode::before,
+.secondaryToolbarButton.presentationMode::before {
content: url(images/toolbarButton-presentationMode.png);
}
-.toolbarButton.print::before {
- display: inline-block;
+.toolbarButton.print::before,
+.secondaryToolbarButton.print::before {
content: url(images/toolbarButton-print.png);
- left: 6px;
}
-.toolbarButton.openFile::before {
- display: inline-block;
+.toolbarButton.openFile::before,
+.secondaryToolbarButton.openFile::before {
content: url(images/toolbarButton-openFile.png);
}
-.toolbarButton.download::before {
- display: inline-block;
+.toolbarButton.download::before,
+.secondaryToolbarButton.download::before {
content: url(images/toolbarButton-download.png);
}
-.toolbarButton.bookmark {
+.toolbarButton.bookmark,
+.secondaryToolbarButton.bookmark {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
- margin-top: 3px;
+ outline: none;
padding-top: 4px;
+ text-decoration: none;
+}
+.secondaryToolbarButton.bookmark {
+ padding-top: 5px;
}
-#viewBookmark[href='#'] {
+.bookmark[href='#'] {
opacity: .5;
pointer-events: none;
}
-.toolbarButton.bookmark::before {
+.toolbarButton.bookmark::before,
+.secondaryToolbarButton.bookmark::before {
content: url(images/toolbarButton-bookmark.png);
}
#viewThumbnail.toolbarButton::before {
- display: inline-block;
content: url(images/toolbarButton-viewThumbnail.png);
}
-#viewOutline.toolbarButton::before {
- display: inline-block;
+html[dir="ltr"] #viewOutline.toolbarButton::before {
content: url(images/toolbarButton-viewOutline.png);
}
+html[dir="rtl"] #viewOutline.toolbarButton::before {
+ content: url(images/toolbarButton-viewOutline-rtl.png);
+}
+
+#viewAttachments.toolbarButton::before {
+ content: url(images/toolbarButton-viewAttachments.png);
+}
#viewFind.toolbarButton::before {
- display: inline-block;
content: url(images/toolbarButton-search.png);
}
+.secondaryToolbarButton {
+ position: relative;
+ margin: 0 0 4px 0;
+ padding: 3px 0 1px 0;
+ height: auto;
+ min-height: 25px;
+ width: auto;
+ min-width: 100%;
+ white-space: normal;
+}
+html[dir="ltr"] .secondaryToolbarButton {
+ padding-left: 24px;
+ text-align: left;
+}
+html[dir="rtl"] .secondaryToolbarButton {
+ padding-right: 24px;
+ text-align: right;
+}
+html[dir="ltr"] .secondaryToolbarButton.bookmark {
+ padding-left: 27px;
+}
+html[dir="rtl"] .secondaryToolbarButton.bookmark {
+ padding-right: 27px;
+}
+
+html[dir="ltr"] .secondaryToolbarButton > span {
+ padding-right: 4px;
+}
+html[dir="rtl"] .secondaryToolbarButton > span {
+ padding-left: 4px;
+}
+
+.secondaryToolbarButton.firstPage::before {
+ content: url(images/secondaryToolbarButton-firstPage.png);
+}
+
+.secondaryToolbarButton.lastPage::before {
+ content: url(images/secondaryToolbarButton-lastPage.png);
+}
+
+.secondaryToolbarButton.rotateCcw::before {
+ content: url(images/secondaryToolbarButton-rotateCcw.png);
+}
+
+.secondaryToolbarButton.rotateCw::before {
+ content: url(images/secondaryToolbarButton-rotateCw.png);
+}
+
+.secondaryToolbarButton.handTool::before {
+ content: url(images/secondaryToolbarButton-handTool.png);
+}
+
+.secondaryToolbarButton.documentProperties::before {
+ content: url(images/secondaryToolbarButton-documentProperties.png);
+}
+
+.verticalToolbarSeparator {
+ display: block;
+ padding: 8px 0;
+ margin: 8px 4px;
+ width: 1px;
+ background-color: hsla(0,0%,0%,.5);
+ box-shadow: 0 0 0 1px hsla(0,0%,100%,.08);
+}
+html[dir='ltr'] .verticalToolbarSeparator {
+ margin-left: 2px;
+}
+html[dir='rtl'] .verticalToolbarSeparator {
+ margin-right: 2px;
+}
+
+.horizontalToolbarSeparator {
+ display: block;
+ margin: 0 0 4px 0;
+ height: 1px;
+ width: 100%;
+ background-color: hsla(0,0%,0%,.5);
+ box-shadow: 0 0 0 1px hsla(0,0%,100%,.08);
+}
.toolbarField {
padding: 3px 6px;
margin: 4px 0 4px 0;
border: 1px solid transparent;
border-radius: 2px;
background-color: hsla(0,0%,100%,.09);
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
border: 1px solid hsla(0,0%,0%,.35);
border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);
box-shadow: 0 1px 0 hsla(0,0%,0%,.05) inset,
0 1px 0 hsla(0,0%,100%,.05);
color: hsl(0,0%,95%);
font-size: 12px;
line-height: 14px;
outline-style: none;
- -moz-transition-property: background-color, border-color, box-shadow;
- -moz-transition-duration: 150ms;
- -moz-transition-timing-function: ease;
+ transition-property: background-color, border-color, box-shadow;
+ transition-duration: 150ms;
+ transition-timing-function: ease;
}
.toolbarField[type=checkbox] {
display: inline-block;
margin: 8px 0px;
}
.toolbarField.pageNumber {
+ -moz-appearance: textfield; /* hides the spinner in moz */
min-width: 16px;
text-align: right;
width: 40px;
}
.toolbarField.pageNumber::-webkit-inner-spin-button,
.toolbarField.pageNumber::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
.toolbarField:hover {
background-color: hsla(0,0%,100%,.11);
border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.43) hsla(0,0%,0%,.45);
}
.toolbarField:focus {
background-color: hsla(0,0%,100%,.15);
border-color: hsla(204,100%,65%,.8) hsla(204,100%,65%,.85) hsla(204,100%,65%,.9);
}
.toolbarLabel {
min-width: 16px;
padding: 3px 6px 3px 2px;
margin: 4px 2px 4px 0;
border: 1px solid transparent;
border-radius: 2px;
color: hsl(0,0%,85%);
font-size: 12px;
line-height: 14px;
text-align: left;
-webkit-user-select: none;
-moz-user-select: none;
cursor: default;
}
#thumbnailView {
position: absolute;
width: 120px;
top: 0;
bottom: 0;
padding: 10px 40px 0;
overflow: auto;
+ -webkit-overflow-scrolling: touch;
}
.thumbnail {
float: left;
+ margin-bottom: 5px;
+}
+
+#thumbnailView > a:last-of-type > .thumbnail {
+ margin-bottom: 10px;
}
.thumbnail:not([data-loaded]) {
border: 1px dashed rgba(255, 255, 255, 0.5);
margin-bottom: 10px;
}
.thumbnailImage {
- -moz-transition-duration: 150ms;
+ transition-duration: 150ms;
border: 1px solid transparent;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.3);
opacity: 0.8;
z-index: 99;
}
.thumbnailSelectionRing {
border-radius: 2px;
padding: 7px;
- -moz-transition-duration: 150ms;
+ transition-duration: 150ms;
}
a:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage,
.thumbnail:hover > .thumbnailSelectionRing > .thumbnailImage {
opacity: .9;
}
a:focus > .thumbnail > .thumbnailSelectionRing,
.thumbnail:hover > .thumbnailSelectionRing {
background-color: hsla(0,0%,100%,.15);
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
0 0 1px hsla(0,0%,100%,.2) inset,
0 0 1px hsla(0,0%,0%,.2);
color: hsla(0,0%,100%,.9);
}
.thumbnail.selected > .thumbnailSelectionRing > .thumbnailImage {
box-shadow: 0 0 0 1px hsla(0,0%,0%,.5);
opacity: 1;
}
.thumbnail.selected > .thumbnailSelectionRing {
background-color: hsla(0,0%,100%,.3);
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
0 0 1px hsla(0,0%,100%,.1) inset,
0 0 1px hsla(0,0%,0%,.2);
color: hsla(0,0%,100%,1);
}
-#outlineView {
+#outlineView,
+#attachmentsView {
position: absolute;
width: 192px;
top: 0;
bottom: 0;
- padding: 4px 4px 0;
overflow: auto;
+ -webkit-overflow-scrolling: touch;
-webkit-user-select: none;
-moz-user-select: none;
}
+#outlineView {
+ padding: 4px 4px 0;
+}
+#attachmentsView {
+ padding: 3px 4px 0;
+}
+
html[dir='ltr'] .outlineItem > .outlineItems {
margin-left: 20px;
}
html[dir='rtl'] .outlineItem > .outlineItems {
margin-right: 20px;
}
-.outlineItem > a {
+.outlineItem > a,
+.attachmentsItem > button {
text-decoration: none;
display: inline-block;
min-width: 95%;
height: auto;
margin-bottom: 1px;
border-radius: 2px;
color: hsla(0,0%,100%,.8);
font-size: 13px;
line-height: 15px;
-moz-user-select: none;
white-space: normal;
}
+.attachmentsItem > button {
+ border: 0 none;
+ background: none;
+ cursor: pointer;
+ width: 100%;
+}
+
html[dir='ltr'] .outlineItem > a {
padding: 2px 0 5px 10px;
}
+html[dir='ltr'] .attachmentsItem > button {
+ padding: 2px 0 3px 7px;
+ text-align: left;
+}
html[dir='rtl'] .outlineItem > a {
padding: 2px 10px 5px 0;
}
+html[dir='rtl'] .attachmentsItem > button {
+ padding: 2px 7px 3px 0;
+ text-align: right;
+}
-.outlineItem > a:hover {
+.outlineItem > a:hover,
+.attachmentsItem > button:hover {
background-color: hsla(0,0%,100%,.02);
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
0 0 1px hsla(0,0%,100%,.2) inset,
0 0 1px hsla(0,0%,0%,.2);
color: hsla(0,0%,100%,.9);
}
.outlineItem.selected {
background-color: hsla(0,0%,100%,.08);
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
0 0 1px hsla(0,0%,100%,.1) inset,
0 0 1px hsla(0,0%,0%,.2);
color: hsla(0,0%,100%,1);
}
.noResults {
font-size: 12px;
color: hsla(0,0%,100%,.8);
font-style: italic;
cursor: default;
}
-#findScrollView {
- position: absolute;
- top: 10px;
- bottom: 10px;
- left: 10px;
- width: 280px;
-}
-
-#sidebarControls {
- position:absolute;
- width: 180px;
- height: 32px;
- left: 15px;
- bottom: 35px;
+.canvasWrapper {
+ overflow: hidden;
}
canvas {
- margin: auto;
+ margin: 0;
display: block;
}
.page {
direction: ltr;
width: 816px;
height: 1056px;
margin: 1px auto -8px auto;
position: relative;
overflow: visible;
border: 9px solid transparent;
background-clip: content-box;
border-image: url(images/shadow.png) 9 9 repeat;
background-color: white;
}
-.page > a {
- display: block;
- position: absolute;
-}
-
-.page > a:hover {
+.annotLink > a:hover {
opacity: 0.2;
background: #ff0;
box-shadow: 0px 2px 10px #ff0;
}
.loadingIcon {
position: absolute;
display: block;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: url('images/loading-icon.gif') center no-repeat;
}
.textLayer {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
color: #000;
font-family: sans-serif;
overflow: hidden;
}
.textLayer > div {
color: transparent;
position: absolute;
- line-height: 1;
white-space: pre;
cursor: text;
}
.textLayer .highlight {
margin: -1px;
padding: 1px;
background-color: rgba(180, 0, 170, 0.2);
border-radius: 4px;
}
.textLayer .highlight.begin {
border-radius: 4px 0px 0px 4px;
}
.textLayer .highlight.end {
border-radius: 0px 4px 4px 0px;
}
.textLayer .highlight.middle {
border-radius: 0px;
}
.textLayer .highlight.selected {
background-color: rgba(0, 100, 0, 0.2);
}
/* TODO: file FF bug to support ::-moz-selection:window-inactive
so we can override the opaque grey background when the window is inactive;
see https://bugzilla.mozilla.org/show_bug.cgi?id=706209 */
::selection { background:rgba(0,0,255,0.3); }
::-moz-selection { background:rgba(0,0,255,0.3); }
-.annotText > div {
- z-index: 200;
+.annotationHighlight {
position: absolute;
- padding: 0.6em;
- max-width: 20em;
- background-color: #FFFF99;
- box-shadow: 0px 2px 10px #333;
- border-radius: 7px;
+ border: 2px #FFFF99 solid;
}
.annotText > img {
position: absolute;
- opacity: 0.6;
+ cursor: pointer;
}
-.annotText > img:hover {
+.annotTextContentWrapper {
+ position: absolute;
+ width: 20em;
+}
+
+.annotTextContent {
+ z-index: 200;
+ float: left;
+ max-width: 20em;
+ background-color: #FFFF99;
+ box-shadow: 0px 2px 5px #333;
+ border-radius: 2px;
+ padding: 0.6em;
cursor: pointer;
- opacity: 1;
}
-.annotText > div > h1 {
- font-size: 1.2em;
+.annotTextContent > h1 {
+ font-size: 1em;
border-bottom: 1px solid #000000;
- margin: 0px;
+ padding-bottom: 0.2em;
+}
+
+.annotTextContent > p {
+ padding-top: 0.2em;
+}
+
+.annotLink > a {
+ position: absolute;
+ font-size: 1em;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
}
#errorWrapper {
background: none repeat scroll 0 0 #FF5555;
color: white;
left: 0;
position: absolute;
right: 0;
z-index: 1000;
padding: 3px;
font-size: 0.8em;
}
+.loadingInProgress #errorWrapper {
+ top: 39px;
+}
#errorMessageLeft {
float: left;
}
#errorMessageRight {
float: right;
}
#errorMoreInfo {
background-color: #FFFFFF;
color: black;
padding: 3px;
margin: 3px;
width: 98%;
}
+.overlayButton {
+ width: auto;
+ margin: 3px 4px 2px 4px !important;
+ padding: 2px 6px 3px 6px;
+}
+
+#overlayContainer {
+ display: table;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: hsla(0,0%,0%,.2);
+ z-index: 40000;
+}
+#overlayContainer > * {
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+#overlayContainer > .container {
+ display: table-cell;
+ vertical-align: middle;
+ text-align: center;
+}
+
+#overlayContainer > .container > .dialog {
+ display: inline-block;
+ padding: 15px;
+ border-spacing: 4px;
+ color: hsl(0,0%,85%);
+ font-size: 12px;
+ line-height: 14px;
+ background-color: #474747; /* fallback */
+ background-image: url(images/texture.png),
+ linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95));
+ box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08),
+ inset 0 1px 1px hsla(0,0%,0%,.15),
+ inset 0 -1px 0 hsla(0,0%,100%,.05),
+ 0 1px 0 hsla(0,0%,0%,.15),
+ 0 1px 1px hsla(0,0%,0%,.1);
+ border: 1px solid hsla(0,0%,0%,.5);
+ border-radius: 4px;
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
+}
+
+.dialog > .row {
+ display: table-row;
+}
+
+.dialog > .row > * {
+ display: table-cell;
+}
+
+.dialog .toolbarField {
+ margin: 5px 0;
+}
+.dialog .toolbarField:hover,
+.dialog .toolbarField:focus {
+ border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42);
+}
+
+.dialog .separator {
+ display: block;
+ margin: 4px 0 4px 0;
+ height: 1px;
+ width: 100%;
+ background-color: hsla(0,0%,0%,.5);
+ box-shadow: 0 0 0 1px hsla(0,0%,100%,.08);
+}
+
+.dialog .buttonRow {
+ text-align: center;
+ vertical-align: middle;
+}
+
+#passwordOverlay > .dialog {
+ text-align: center;
+}
+#passwordOverlay .toolbarField {
+ width: 200px;
+}
+
+#documentPropertiesOverlay > .dialog {
+ text-align: left;
+}
+#documentPropertiesOverlay .row > * {
+ min-width: 100px;
+}
+html[dir='ltr'] #documentPropertiesOverlay .row > * {
+ text-align: left;
+}
+html[dir='rtl'] #documentPropertiesOverlay .row > * {
+ text-align: right;
+}
+#documentPropertiesOverlay .row > span {
+ width: 125px;
+ word-wrap: break-word;
+}
+#documentPropertiesOverlay .row > p {
+ max-width: 225px;
+ word-wrap: break-word;
+}
+#documentPropertiesOverlay .buttonRow {
+ margin-top: 10px;
+}
+
.clearBoth {
clear: both;
}
.fileInput {
background: white;
color: black;
margin-top: 5px;
+ visibility: hidden;
+ position: fixed;
+ right: 0;
+ top: 0;
}
#PDFBug {
background: none repeat scroll 0 0 white;
border: 1px solid #666666;
position: fixed;
top: 32px;
right: 0;
bottom: 0;
font-size: 10px;
padding: 0;
width: 300px;
}
#PDFBug .controls {
background:#EEEEEE;
border-bottom: 1px solid #666666;
padding: 3px;
}
#PDFBug .panels {
bottom: 0;
left: 0;
overflow: auto;
+ -webkit-overflow-scrolling: touch;
position: absolute;
right: 0;
top: 27px;
}
#PDFBug button.active {
font-weight: bold;
}
.debuggerShowText {
background: none repeat scroll 0 0 yellow;
color: blue;
opacity: 0.3;
}
.debuggerHideText:hover {
background: none repeat scroll 0 0 yellow;
opacity: 0.3;
}
#PDFBug .stats {
font-family: courier;
font-size: 10px;
white-space: pre;
}
#PDFBug .stats .title {
font-weight: bold;
}
#PDFBug table {
font-size: 10px;
}
#viewer.textLayer-visible .textLayer > div,
#viewer.textLayer-hover .textLayer > div:hover {
background-color: white;
color: black;
}
#viewer.textLayer-shadow .textLayer > div {
background-color: rgba(255,255,255, .6);
color: black;
}
+.grab-to-pan-grab {
+ cursor: url("images/grab.cur"), move !important;
+ cursor: -webkit-grab !important;
+ cursor: -moz-grab !important;
+ cursor: grab !important;
+}
+.grab-to-pan-grab *:not(input):not(textarea):not(button):not(select):not(:link) {
+ cursor: inherit !important;
+}
+.grab-to-pan-grab:active,
+.grab-to-pan-grabbing {
+ cursor: url("images/grabbing.cur"), move !important;
+ cursor: -webkit-grabbing !important;
+ cursor: -moz-grabbing !important;
+ cursor: grabbing !important;
+
+ position: fixed;
+ background: transparent;
+ display: block;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow: hidden;
+ z-index: 50000; /* should be higher than anything else in PDF.js! */
+}
+
@page {
margin: 0;
}
#printContainer {
display: none;
}
+@media screen and (min-resolution: 2dppx) {
+ /* Rules for Retina screens */
+ .toolbarButton::before {
+ -webkit-transform: scale(0.5);
+ transform: scale(0.5);
+ top: -5px;
+ }
+
+ .secondaryToolbarButton::before {
+ -webkit-transform: scale(0.5);
+ transform: scale(0.5);
+ top: -4px;
+ }
+
+ html[dir='ltr'] .toolbarButton::before,
+ html[dir='rtl'] .toolbarButton::before {
+ left: -1px;
+ }
+
+ html[dir='ltr'] .secondaryToolbarButton::before {
+ left: -2px;
+ }
+ html[dir='rtl'] .secondaryToolbarButton::before {
+ left: 186px;
+ }
+
+ .dropdownToolbarButton {
+ background: url(images/toolbarButton-menuArrows@2x.png) no-repeat;
+ background-size: 7px 16px;
+ }
+
+ html[dir='ltr'] .toolbarButton#sidebarToggle::before {
+ content: url(images/toolbarButton-sidebarToggle@2x.png);
+ }
+ html[dir='rtl'] .toolbarButton#sidebarToggle::before {
+ content: url(images/toolbarButton-sidebarToggle-rtl@2x.png);
+ }
+
+ html[dir='ltr'] .toolbarButton#secondaryToolbarToggle::before {
+ content: url(images/toolbarButton-secondaryToolbarToggle@2x.png);
+ }
+ html[dir='rtl'] .toolbarButton#secondaryToolbarToggle::before {
+ content: url(images/toolbarButton-secondaryToolbarToggle-rtl@2x.png);
+ }
+
+ html[dir='ltr'] .toolbarButton.findPrevious::before {
+ content: url(images/findbarButton-previous@2x.png);
+ }
+ html[dir='rtl'] .toolbarButton.findPrevious::before {
+ content: url(images/findbarButton-previous-rtl@2x.png);
+ }
+
+ html[dir='ltr'] .toolbarButton.findNext::before {
+ content: url(images/findbarButton-next@2x.png);
+ }
+ html[dir='rtl'] .toolbarButton.findNext::before {
+ content: url(images/findbarButton-next-rtl@2x.png);
+ }
+
+ html[dir='ltr'] .toolbarButton.pageUp::before {
+ content: url(images/toolbarButton-pageUp@2x.png);
+ }
+ html[dir='rtl'] .toolbarButton.pageUp::before {
+ content: url(images/toolbarButton-pageUp-rtl@2x.png);
+ }
+
+ html[dir='ltr'] .toolbarButton.pageDown::before {
+ content: url(images/toolbarButton-pageDown@2x.png);
+ }
+ html[dir='rtl'] .toolbarButton.pageDown::before {
+ content: url(images/toolbarButton-pageDown-rtl@2x.png);
+ }
+
+ .toolbarButton.zoomIn::before {
+ content: url(images/toolbarButton-zoomIn@2x.png);
+ }
+
+ .toolbarButton.zoomOut::before {
+ content: url(images/toolbarButton-zoomOut@2x.png);
+ }
+
+ .toolbarButton.presentationMode::before,
+ .secondaryToolbarButton.presentationMode::before {
+ content: url(images/toolbarButton-presentationMode@2x.png);
+ }
+
+ .toolbarButton.print::before,
+ .secondaryToolbarButton.print::before {
+ content: url(images/toolbarButton-print@2x.png);
+ }
+
+ .toolbarButton.openFile::before,
+ .secondaryToolbarButton.openFile::before {
+ content: url(images/toolbarButton-openFile@2x.png);
+ }
+
+ .toolbarButton.download::before,
+ .secondaryToolbarButton.download::before {
+ content: url(images/toolbarButton-download@2x.png);
+ }
+
+ .toolbarButton.bookmark::before,
+ .secondaryToolbarButton.bookmark::before {
+ content: url(images/toolbarButton-bookmark@2x.png);
+ }
+
+ #viewThumbnail.toolbarButton::before {
+ content: url(images/toolbarButton-viewThumbnail@2x.png);
+ }
+
+ html[dir="ltr"] #viewOutline.toolbarButton::before {
+ content: url(images/toolbarButton-viewOutline@2x.png);
+ }
+ html[dir="rtl"] #viewOutline.toolbarButton::before {
+ content: url(images/toolbarButton-viewOutline-rtl@2x.png);
+ }
+
+ #viewAttachments.toolbarButton::before {
+ content: url(images/toolbarButton-viewAttachments@2x.png);
+ }
+
+ #viewFind.toolbarButton::before {
+ content: url(images/toolbarButton-search@2x.png);
+ }
+
+ .secondaryToolbarButton.firstPage::before {
+ content: url(images/secondaryToolbarButton-firstPage@2x.png);
+ }
+
+ .secondaryToolbarButton.lastPage::before {
+ content: url(images/secondaryToolbarButton-lastPage@2x.png);
+ }
+
+ .secondaryToolbarButton.rotateCcw::before {
+ content: url(images/secondaryToolbarButton-rotateCcw@2x.png);
+ }
+
+ .secondaryToolbarButton.rotateCw::before {
+ content: url(images/secondaryToolbarButton-rotateCw@2x.png);
+ }
+
+ .secondaryToolbarButton.handTool::before {
+ content: url(images/secondaryToolbarButton-handTool@2x.png);
+ }
+
+ .secondaryToolbarButton.documentProperties::before {
+ content: url(images/secondaryToolbarButton-documentProperties@2x.png);
+ }
+}
+
@media print {
/* General rules for printing. */
body {
background: transparent none;
}
/* Rules for browsers that don't support mozPrintCallback. */
- #sidebarContainer, .toolbar, #loadingBox, #errorWrapper, .textLayer {
+ #sidebarContainer, #secondaryToolbar, .toolbar, #loadingBox, #errorWrapper, .textLayer {
display: none;
}
+ #viewerContainer {
+ overflow: visible;
+ }
#mainContainer, #viewerContainer, .page, .page canvas {
position: static;
padding: 0;
margin: 0;
}
.page {
float: left;
display: none;
+ border: none;
box-shadow: none;
}
.page[data-loaded] {
display: block;
}
+ .fileInput {
+ display: none;
+ }
+
/* Rules for browsers that support mozPrintCallback */
body[data-mozPrintCallback] #outerContainer {
display: none;
}
body[data-mozPrintCallback] #printContainer {
display: block;
}
#printContainer canvas {
position: relative;
top: 0;
left: 0;
}
}
-@media all and (max-width: 950px) {
+.visibleLargeView,
+.visibleMediumView,
+.visibleSmallView {
+ display: none;
+}
+
+@media all and (max-width: 960px) {
html[dir='ltr'] #outerContainer.sidebarMoving .outerCenter,
html[dir='ltr'] #outerContainer.sidebarOpen .outerCenter {
float: left;
- left: 180px;
+ left: 205px;
}
html[dir='rtl'] #outerContainer.sidebarMoving .outerCenter,
html[dir='rtl'] #outerContainer.sidebarOpen .outerCenter {
float: right;
- right: 180px;
+ right: 205px;
+ }
+}
+
+@media all and (max-width: 900px) {
+ .sidebarOpen .hiddenLargeView {
+ display: none;
+ }
+ .sidebarOpen .visibleLargeView {
+ display: inherit;
+ }
+}
+
+@media all and (max-width: 860px) {
+ .sidebarOpen .hiddenMediumView {
+ display: none;
+ }
+ .sidebarOpen .visibleMediumView {
+ display: inherit;
}
}
@media all and (max-width: 770px) {
#sidebarContainer {
top: 32px;
z-index: 100;
}
.loadingInProgress #sidebarContainer {
top: 39px;
}
#sidebarContent {
top: 32px;
background-color: hsla(0,0%,0%,.7);
}
html[dir='ltr'] #outerContainer.sidebarOpen > #mainContainer {
left: 0px;
}
html[dir='rtl'] #outerContainer.sidebarOpen > #mainContainer {
right: 0px;
}
html[dir='ltr'] .outerCenter {
float: left;
- left: 180px;
+ left: 205px;
}
html[dir='rtl'] .outerCenter {
float: right;
- right: 180px;
+ right: 205px;
+ }
+
+ #outerContainer .hiddenLargeView,
+ #outerContainer .hiddenMediumView {
+ display: inherit;
+ }
+ #outerContainer .visibleLargeView,
+ #outerContainer .visibleMediumView {
+ display: none;
+ }
+}
+
+@media all and (max-width: 700px) {
+ #outerContainer .hiddenLargeView {
+ display: none;
+ }
+ #outerContainer .visibleLargeView {
+ display: inherit;
+ }
+}
+
+@media all and (max-width: 660px) {
+ #outerContainer .hiddenMediumView {
+ display: none;
+ }
+ #outerContainer .visibleMediumView {
+ display: inherit;
}
}
@media all and (max-width: 600px) {
.hiddenSmallView {
display: none;
}
+ .visibleSmallView {
+ display: inherit;
+ }
+ html[dir='ltr'] #outerContainer.sidebarMoving .outerCenter,
+ html[dir='ltr'] #outerContainer.sidebarOpen .outerCenter,
html[dir='ltr'] .outerCenter {
left: 156px;
}
- html[dir='rtr'] .outerCenter {
+ html[dir='rtl'] #outerContainer.sidebarMoving .outerCenter,
+ html[dir='rtl'] #outerContainer.sidebarOpen .outerCenter,
+ html[dir='rtl'] .outerCenter {
right: 156px;
}
.toolbarButtonSpacer {
width: 0;
}
}
-@media all and (max-width: 500px) {
+@media all and (max-width: 510px) {
#scaleSelectContainer, #pageNumberLabel {
display: none;
}
}
diff --git a/lib/viewers/pdf/viewer.html b/lib/viewers/pdf/viewer.html
index 19af9e7..2b71fef 100644
--- a/lib/viewers/pdf/viewer.html
+++ b/lib/viewers/pdf/viewer.html
@@ -1,191 +1,409 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<!--
Copyright 2012 Mozilla Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+
+Adobe CMap resources are covered by their own copyright and license:
+http://sourceforge.net/adobe/cmap/wiki/License/
-->
<html dir="ltr" mozdisallowselectionprint moznomarginboxes>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <meta name="google" content="notranslate">
<title>PDF.js viewer</title>
+
<link rel="stylesheet" href="viewer.css"/>
- <script type="text/javascript" src="compatibility.js"></script>
- <link rel="resource" type="application/l10n" href="locale/locale.properties"/>
- <script type="text/javascript" src="l10n.js"></script>
- <script type="text/javascript" src="pdf.js"></script>
- <script type="text/javascript">PDFJS.workerSrc = 'pdf.js';</script>
+ <script src="compatibility.js"></script>
+
+
+
+<!-- This snippet is used in production (included from viewer.html) -->
+<link rel="resource" type="application/l10n" href="locale/locale.properties"/>
+<script src="l10n.js"></script>
+<script src="pdf.js"></script>
+
+
+
+ <script src="debugger.js"></script>
+ <script src="viewer.js"></script>
- <script type="text/javascript" src="debugger.js"></script>
- <script type="text/javascript" src="viewer.js"></script>
</head>
<body tabindex="1">
<div id="outerContainer" class="loadingInProgress">
<div id="sidebarContainer">
<div id="toolbarSidebar">
<div class="splitToolbarButton toggled">
<button id="viewThumbnail" class="toolbarButton group toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs">
<span data-l10n-id="thumbs_label">Thumbnails</span>
</button>
<button id="viewOutline" class="toolbarButton group" title="Show Document Outline" tabindex="3" data-l10n-id="outline">
<span data-l10n-id="outline_label">Document Outline</span>
</button>
+ <button id="viewAttachments" class="toolbarButton group" title="Show Attachments" tabindex="4" data-l10n-id="attachments">
+ <span data-l10n-id="attachments_label">Attachments</span>
+ </button>
</div>
</div>
<div id="sidebarContent">
<div id="thumbnailView">
</div>
<div id="outlineView" class="hidden">
</div>
+ <div id="attachmentsView" class="hidden">
+ </div>
</div>
</div> <!-- sidebarContainer -->
<div id="mainContainer">
<div class="findbar hidden doorHanger hiddenSmallView" id="findbar">
<label for="findInput" class="toolbarLabel" data-l10n-id="find_label">Find:</label>
- <input id="findInput" class="toolbarField" tabindex="21">
+ <input id="findInput" class="toolbarField" tabindex="41">
<div class="splitToolbarButton">
- <button class="toolbarButton findPrevious" title="" id="findPrevious" tabindex="22" data-l10n-id="find_previous">
+ <button class="toolbarButton findPrevious" title="" id="findPrevious" tabindex="42" data-l10n-id="find_previous">
<span data-l10n-id="find_previous_label">Previous</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
- <button class="toolbarButton findNext" title="" id="findNext" tabindex="23" data-l10n-id="find_next">
+ <button class="toolbarButton findNext" title="" id="findNext" tabindex="43" data-l10n-id="find_next">
<span data-l10n-id="find_next_label">Next</span>
</button>
</div>
<input type="checkbox" id="findHighlightAll" class="toolbarField">
- <label for="findHighlightAll" class="toolbarLabel" tabindex="24" data-l10n-id="find_highlight">Highlight all</label>
+ <label for="findHighlightAll" class="toolbarLabel" tabindex="44" data-l10n-id="find_highlight">Highlight all</label>
<input type="checkbox" id="findMatchCase" class="toolbarField">
- <label for="findMatchCase" class="toolbarLabel" tabindex="25" data-l10n-id="find_match_case_label">Match case</label>
+ <label for="findMatchCase" class="toolbarLabel" tabindex="45" data-l10n-id="find_match_case_label">Match case</label>
<span id="findMsg" class="toolbarLabel"></span>
- </div>
+ </div> <!-- findbar -->
+
+ <div id="secondaryToolbar" class="secondaryToolbar hidden doorHangerRight">
+ <div id="secondaryToolbarButtonContainer">
+ <button id="secondaryPresentationMode" class="secondaryToolbarButton presentationMode visibleLargeView" title="Switch to Presentation Mode" tabindex="19" data-l10n-id="presentation_mode">
+ <span data-l10n-id="presentation_mode_label">Presentation Mode</span>
+ </button>
+
+ <button id="secondaryOpenFile" class="secondaryToolbarButton openFile visibleLargeView" title="Open File" tabindex="20" data-l10n-id="open_file">
+ <span data-l10n-id="open_file_label">Open</span>
+ </button>
+
+ <button id="secondaryPrint" class="secondaryToolbarButton print visibleMediumView" title="Print" tabindex="21" data-l10n-id="print">
+ <span data-l10n-id="print_label">Print</span>
+ </button>
+
+ <button id="secondaryDownload" class="secondaryToolbarButton download visibleMediumView" title="Download" tabindex="22" data-l10n-id="download">
+ <span data-l10n-id="download_label">Download</span>
+ </button>
+
+ <a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark visibleSmallView" title="Current view (copy or open in new window)" tabindex="23" data-l10n-id="bookmark">
+ <span data-l10n-id="bookmark_label">Current View</span>
+ </a>
+
+ <div class="horizontalToolbarSeparator visibleLargeView"></div>
+
+ <button id="firstPage" class="secondaryToolbarButton firstPage" title="Go to First Page" tabindex="24" data-l10n-id="first_page">
+ <span data-l10n-id="first_page_label">Go to First Page</span>
+ </button>
+ <button id="lastPage" class="secondaryToolbarButton lastPage" title="Go to Last Page" tabindex="25" data-l10n-id="last_page">
+ <span data-l10n-id="last_page_label">Go to Last Page</span>
+ </button>
+
+ <div class="horizontalToolbarSeparator"></div>
+
+ <button id="pageRotateCw" class="secondaryToolbarButton rotateCw" title="Rotate Clockwise" tabindex="26" data-l10n-id="page_rotate_cw">
+ <span data-l10n-id="page_rotate_cw_label">Rotate Clockwise</span>
+ </button>
+ <button id="pageRotateCcw" class="secondaryToolbarButton rotateCcw" title="Rotate Counterclockwise" tabindex="27" data-l10n-id="page_rotate_ccw">
+ <span data-l10n-id="page_rotate_ccw_label">Rotate Counterclockwise</span>
+ </button>
+
+ <div class="horizontalToolbarSeparator"></div>
+
+ <button id="toggleHandTool" class="secondaryToolbarButton handTool" title="Enable hand tool" tabindex="28" data-l10n-id="hand_tool_enable">
+ <span data-l10n-id="hand_tool_enable_label">Enable hand tool</span>
+ </button>
+
+ <div class="horizontalToolbarSeparator"></div>
+
+ <button id="documentProperties" class="secondaryToolbarButton documentProperties" title="Document Properties…" tabindex="29" data-l10n-id="document_properties">
+ <span data-l10n-id="document_properties_label">Document Properties…</span>
+ </button>
+ </div>
+ </div> <!-- secondaryToolbar -->
+
<div class="toolbar">
<div id="toolbarContainer">
<div id="toolbarViewer">
<div id="toolbarViewerLeft">
- <button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="4" data-l10n-id="toggle_sidebar">
+ <button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="5" data-l10n-id="toggle_sidebar">
<span data-l10n-id="toggle_sidebar_label">Toggle Sidebar</span>
</button>
<div class="toolbarButtonSpacer"></div>
- <button id="viewFind" class="toolbarButton group hiddenSmallView" title="Find in Document" tabindex="5" data-l10n-id="findbar">
+ <button id="viewFind" class="toolbarButton group hiddenSmallView" title="Find in Document" tabindex="6" data-l10n-id="findbar">
<span data-l10n-id="findbar_label">Find</span>
</button>
<div class="splitToolbarButton">
- <button class="toolbarButton pageUp" title="Previous Page" id="previous" tabindex="6" data-l10n-id="previous">
+ <button class="toolbarButton pageUp" title="Previous Page" id="previous" tabindex="7" data-l10n-id="previous">
<span data-l10n-id="previous_label">Previous</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
- <button class="toolbarButton pageDown" title="Next Page" id="next" tabindex="7" data-l10n-id="next">
+ <button class="toolbarButton pageDown" title="Next Page" id="next" tabindex="8" data-l10n-id="next">
<span data-l10n-id="next_label">Next</span>
</button>
</div>
<label id="pageNumberLabel" class="toolbarLabel" for="pageNumber" data-l10n-id="page_label">Page: </label>
- <input type="number" id="pageNumber" class="toolbarField pageNumber" value="1" size="4" min="1" tabindex="8">
- </input>
+ <input type="number" id="pageNumber" class="toolbarField pageNumber" value="1" size="4" min="1" tabindex="9">
<span id="numPages" class="toolbarLabel"></span>
</div>
<div id="toolbarViewerRight">
- <input id="fileInput" class="fileInput" type="file" oncontextmenu="return false;" style="visibility: hidden; position: fixed; right: 0; top: 0" />
-
- <button id="presentationMode" class="toolbarButton presentationMode hiddenSmallView" title="Switch to Presentation Mode" tabindex="12" data-l10n-id="presentation_mode">
+ <button id="presentationMode" class="toolbarButton presentationMode hiddenLargeView" title="Switch to Presentation Mode" tabindex="13" data-l10n-id="presentation_mode">
<span data-l10n-id="presentation_mode_label">Presentation Mode</span>
</button>
- <button id="print" class="toolbarButton print" title="Print" tabindex="14" data-l10n-id="print">
+ <button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="14" data-l10n-id="open_file" style="display:none">
+ <span data-l10n-id="open_file_label">Open</span>
+ </button>
+
+ <button id="print" class="toolbarButton print hiddenMediumView" title="Print" tabindex="15" data-l10n-id="print">
<span data-l10n-id="print_label">Print</span>
</button>
+ <button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="16" data-l10n-id="download" style="display:none">
+ <span data-l10n-id="download_label">Download</span>
+ </button>
<!-- <div class="toolbarButtonSpacer"></div> -->
- <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current view (copy or open in new window)" tabindex="16" data-l10n-id="bookmark"><span data-l10n-id="bookmark_label">Current View</span></a>
+ <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current view (copy or open in new window)" tabindex="17" data-l10n-id="bookmark" style="display:none">
+ <span data-l10n-id="bookmark_label">Current View</span>
+ </a>
+
+ <div class="verticalToolbarSeparator hiddenSmallView"></div>
+
+ <button id="secondaryToolbarToggle" class="toolbarButton" title="Tools" tabindex="18" data-l10n-id="tools">
+ <span data-l10n-id="tools_label">Tools</span>
+ </button>
</div>
<div class="outerCenter">
<div class="innerCenter" id="toolbarViewerMiddle">
<div class="splitToolbarButton">
- <button id="zoomOut" class="toolbarButton zoomOut" title="Zoom Out" tabindex="9" data-l10n-id="zoom_out">
+ <button id="zoomOut" class="toolbarButton zoomOut" title="Zoom Out" tabindex="10" data-l10n-id="zoom_out">
<span data-l10n-id="zoom_out_label">Zoom Out</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
- <button id="zoomIn" class="toolbarButton zoomIn" title="Zoom In" tabindex="10" data-l10n-id="zoom_in">
+ <button id="zoomIn" class="toolbarButton zoomIn" title="Zoom In" tabindex="11" data-l10n-id="zoom_in">
<span data-l10n-id="zoom_in_label">Zoom In</span>
</button>
</div>
<span id="scaleSelectContainer" class="dropdownToolbarButton">
- <select id="scaleSelect" title="Zoom" oncontextmenu="return false;" tabindex="11" data-l10n-id="zoom">
- <option id="pageAutoOption" value="auto" selected="selected" data-l10n-id="page_scale_auto">Automatic Zoom</option>
- <option id="pageActualOption" value="page-actual" data-l10n-id="page_scale_actual">Actual Size</option>
- <option id="pageFitOption" value="page-fit" data-l10n-id="page_scale_fit">Fit Page</option>
- <option id="pageWidthOption" value="page-width" data-l10n-id="page_scale_width">Full Width</option>
- <option id="customScaleOption" value="custom"></option>
- <option value="0.5">50%</option>
- <option value="0.75">75%</option>
- <option value="1">100%</option>
- <option value="1.25">125%</option>
- <option value="1.5">150%</option>
- <option value="2">200%</option>
+ <select id="scaleSelect" title="Zoom" tabindex="12" data-l10n-id="zoom">
+ <option id="pageAutoOption" title="" value="auto" selected="selected" data-l10n-id="page_scale_auto">Automatic Zoom</option>
+ <option id="pageActualOption" title="" value="page-actual" data-l10n-id="page_scale_actual">Actual Size</option>
+ <option id="pageFitOption" title="" value="page-fit" data-l10n-id="page_scale_fit">Fit Page</option>
+ <option id="pageWidthOption" title="" value="page-width" data-l10n-id="page_scale_width">Full Width</option>
+ <option id="customScaleOption" title="" value="custom"></option>
+ <option title="" value="0.5">50%</option>
+ <option title="" value="0.75">75%</option>
+ <option title="" value="1">100%</option>
+ <option title="" value="1.25">125%</option>
+ <option title="" value="1.5">150%</option>
+ <option title="" value="2">200%</option>
</select>
</span>
</div>
</div>
</div>
<div id="loadingBar">
<div class="progress">
<div class="glimmer">
</div>
</div>
</div>
</div>
</div>
<menu type="context" id="viewerContextMenu">
- <menuitem id="firstPage" label="First Page"
- data-l10n-id="first_page" ></menuitem>
- <menuitem id="lastPage" label="Last Page"
- data-l10n-id="last_page" ></menuitem>
- <menuitem id="pageRotateCcw" label="Rotate Counter-Clockwise"
- data-l10n-id="page_rotate_ccw" ></menuitem>
- <menuitem id="pageRotateCw" label="Rotate Clockwise"
- data-l10n-id="page_rotate_cw" ></menuitem>
+ <menuitem id="contextFirstPage" label="First Page"
+ data-l10n-id="first_page"></menuitem>
+ <menuitem id="contextLastPage" label="Last Page"
+ data-l10n-id="last_page"></menuitem>
+ <menuitem id="contextPageRotateCw" label="Rotate Clockwise"
+ data-l10n-id="page_rotate_cw"></menuitem>
+ <menuitem id="contextPageRotateCcw" label="Rotate Counter-Clockwise"
+ data-l10n-id="page_rotate_ccw"></menuitem>
</menu>
- <div id="viewerContainer">
- <div id="viewer" contextmenu="viewerContextMenu"></div>
+ <div id="viewerContainer" tabindex="0">
+ <div id="viewer"></div>
</div>
<div id="errorWrapper" hidden='true'>
<div id="errorMessageLeft">
<span id="errorMessage"></span>
- <button id="errorShowMore" onclick="" oncontextmenu="return false;" data-l10n-id="error_more_info">
+ <button id="errorShowMore" data-l10n-id="error_more_info">
More Information
</button>
- <button id="errorShowLess" onclick="" oncontextmenu="return false;" data-l10n-id="error_less_info" hidden='true'>
+ <button id="errorShowLess" data-l10n-id="error_less_info" hidden='true'>
Less Information
</button>
</div>
<div id="errorMessageRight">
- <button id="errorClose" oncontextmenu="return false;" data-l10n-id="error_close">
+ <button id="errorClose" data-l10n-id="error_close">
Close
</button>
</div>
<div class="clearBoth"></div>
<textarea id="errorMoreInfo" hidden='true' readonly="readonly"></textarea>
</div>
</div> <!-- mainContainer -->
+ <div id="overlayContainer" class="hidden">
+ <div id="passwordOverlay" class="container hidden">
+ <div class="dialog">
+ <div class="row">
+ <p id="passwordText" data-l10n-id="password_label">Enter the password to open this PDF file:</p>
+ </div>
+ <div class="row">
+ <input type="password" id="password" class="toolbarField" />
+ </div>
+ <div class="buttonRow">
+ <button id="passwordCancel" class="overlayButton"><span data-l10n-id="password_cancel">Cancel</span></button>
+ <button id="passwordSubmit" class="overlayButton"><span data-l10n-id="password_ok">OK</span></button>
+ </div>
+ </div>
+ </div>
+ <div id="documentPropertiesOverlay" class="container hidden">
+ <div class="dialog">
+ <div class="row">
+ <span data-l10n-id="document_properties_file_name">File name:</span> <p id="fileNameField">-</p>
+ </div>
+ <div class="row">
+ <span data-l10n-id="document_properties_file_size">File size:</span> <p id="fileSizeField">-</p>
+ </div>
+ <div class="separator"></div>
+ <div class="row">
+ <span data-l10n-id="document_properties_title">Title:</span> <p id="titleField">-</p>
+ </div>
+ <div class="row">
+ <span data-l10n-id="document_properties_author">Author:</span> <p id="authorField">-</p>
+ </div>
+ <div class="row">
+ <span data-l10n-id="document_properties_subject">Subject:</span> <p id="subjectField">-</p>
+ </div>
+ <div class="row">
+ <span data-l10n-id="document_properties_keywords">Keywords:</span> <p id="keywordsField">-</p>
+ </div>
+ <div class="row">
+ <span data-l10n-id="document_properties_creation_date">Creation Date:</span> <p id="creationDateField">-</p>
+ </div>
+ <div class="row">
+ <span data-l10n-id="document_properties_modification_date">Modification Date:</span> <p id="modificationDateField">-</p>
+ </div>
+ <div class="row">
+ <span data-l10n-id="document_properties_creator">Creator:</span> <p id="creatorField">-</p>
+ </div>
+ <div class="separator"></div>
+ <div class="row">
+ <span data-l10n-id="document_properties_producer">PDF Producer:</span> <p id="producerField">-</p>
+ </div>
+ <div class="row">
+ <span data-l10n-id="document_properties_version">PDF Version:</span> <p id="versionField">-</p>
+ </div>
+ <div class="row">
+ <span data-l10n-id="document_properties_page_count">Page Count:</span> <p id="pageCountField">-</p>
+ </div>
+ <div class="buttonRow">
+ <button id="documentPropertiesClose" class="overlayButton"><span data-l10n-id="document_properties_close">Close</span></button>
+ </div>
+ </div>
+ </div>
+ </div> <!-- overlayContainer -->
+
</div> <!-- outerContainer -->
<div id="printContainer"></div>
+<div id="mozPrintCallback-shim" hidden>
+ <style scoped>
+#mozPrintCallback-shim {
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ z-index: 9999999;
+
+ display: block;
+ text-align: center;
+ background-color: rgba(0, 0, 0, 0.5);
+}
+#mozPrintCallback-shim[hidden] {
+ display: none;
+}
+@media print {
+ #mozPrintCallback-shim {
+ display: none;
+ }
+}
+
+#mozPrintCallback-shim .mozPrintCallback-dialog-box {
+ display: inline-block;
+ margin: -50px auto 0;
+ position: relative;
+ top: 45%;
+ left: 0;
+ min-width: 220px;
+ max-width: 400px;
+
+ padding: 9px;
+
+ border: 1px solid hsla(0, 0%, 0%, .5);
+ border-radius: 2px;
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
+
+ background-color: #474747;
+
+ color: hsl(0, 0%, 85%);
+ font-size: 16px;
+ line-height: 20px;
+}
+#mozPrintCallback-shim .progress-row {
+ clear: both;
+ padding: 1em 0;
+}
+#mozPrintCallback-shim progress {
+ width: 100%;
+}
+#mozPrintCallback-shim .relative-progress {
+ clear: both;
+ float: right;
+}
+#mozPrintCallback-shim .progress-actions {
+ clear: both;
+}
+ </style>
+ <div class="mozPrintCallback-dialog-box">
+ <!-- TODO: Localise the following strings -->
+ Preparing document for printing...
+ <div class="progress-row">
+ <progress value="0" max="100"></progress>
+ <span class="relative-progress">0%</span>
+ </div>
+ <div class="progress-actions">
+ <input type="button" value="Cancel" class="mozPrintCallback-cancel">
+ </div>
+ </div>
+</div>
+
</body>
</html>
+
diff --git a/lib/viewers/pdf/viewer.js b/lib/viewers/pdf/viewer.js
index 43d5501..77bc911 100644
--- a/lib/viewers/pdf/viewer.js
+++ b/lib/viewers/pdf/viewer.js
@@ -1,3699 +1,5985 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
/* Copyright 2012 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* globals PDFJS, PDFBug, FirefoxCom, Stats */
+/* globals PDFJS, PDFBug, FirefoxCom, Stats, Cache, PDFFindBar, CustomStyle,
+ PDFFindController, ProgressBar, TextLayerBuilder, DownloadManager,
+ getFileName, scrollIntoView, getPDFFileNameFromURL, PDFHistory,
+ Preferences, SidebarView, ViewHistory, PageView, ThumbnailView, URL,
+ noContextMenuHandler, SecondaryToolbar, PasswordPrompt,
+ PresentationMode, HandTool, Promise, DocumentProperties,
+ DocumentOutlineView, DocumentAttachmentsView, OverlayManager */
'use strict';
var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf';
var DEFAULT_SCALE = 'auto';
var DEFAULT_SCALE_DELTA = 1.1;
var UNKNOWN_SCALE = 0;
var CACHE_SIZE = 20;
var CSS_UNITS = 96.0 / 72.0;
var SCROLLBAR_PADDING = 40;
var VERTICAL_PADDING = 5;
+var MAX_AUTO_SCALE = 1.25;
var MIN_SCALE = 0.25;
var MAX_SCALE = 4.0;
-var IMAGE_DIR = './images/';
-var SETTINGS_MEMORY = 20;
-var ANNOT_MIN_SIZE = 10;
+var VIEW_HISTORY_MEMORY = 20;
+var SCALE_SELECT_CONTAINER_PADDING = 8;
+var SCALE_SELECT_PADDING = 22;
+var THUMBNAIL_SCROLL_MARGIN = -19;
+var USE_ONLY_CSS_ZOOM = false;
+var CLEANUP_TIMEOUT = 30000;
+var IGNORE_CURRENT_POSITION_ON_ZOOM = false;
var RenderingStates = {
INITIAL: 0,
RUNNING: 1,
PAUSED: 2,
FINISHED: 3
};
var FindStates = {
FIND_FOUND: 0,
FIND_NOTFOUND: 1,
FIND_WRAPPED: 2,
FIND_PENDING: 3
};
-//#if (FIREFOX || MOZCENTRAL || B2G || GENERIC || CHROME)
-//PDFJS.workerSrc = '../build/pdf.js';
-//#endif
+PDFJS.imageResourcesPath = './images/';
+ PDFJS.workerSrc = './pdf.worker.js';
+ PDFJS.cMapUrl = './cmaps/';
+ PDFJS.cMapPacked = true;
var mozL10n = document.mozL10n || document.webL10n;
+
+// optimised CSS custom property getter/setter
+var CustomStyle = (function CustomStyleClosure() {
+
+ // As noted on: http://www.zachstronaut.com/posts/2009/02/17/
+ // animate-css-transforms-firefox-webkit.html
+ // in some versions of IE9 it is critical that ms appear in this list
+ // before Moz
+ var prefixes = ['ms', 'Moz', 'Webkit', 'O'];
+ var _cache = {};
+
+ function CustomStyle() {}
+
+ CustomStyle.getProp = function get(propName, element) {
+ // check cache only when no element is given
+ if (arguments.length == 1 && typeof _cache[propName] == 'string') {
+ return _cache[propName];
+ }
+
+ element = element || document.documentElement;
+ var style = element.style, prefixed, uPropName;
+
+ // test standard property first
+ if (typeof style[propName] == 'string') {
+ return (_cache[propName] = propName);
+ }
+
+ // capitalize
+ uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);
+
+ // test vendor specific properties
+ for (var i = 0, l = prefixes.length; i < l; i++) {
+ prefixed = prefixes[i] + uPropName;
+ if (typeof style[prefixed] == 'string') {
+ return (_cache[propName] = prefixed);
+ }
+ }
+
+ //if all fails then set to undefined
+ return (_cache[propName] = 'undefined');
+ };
+
+ CustomStyle.setProp = function set(propName, element, str) {
+ var prop = this.getProp(propName);
+ if (prop != 'undefined') {
+ element.style[prop] = str;
+ }
+ };
+
+ return CustomStyle;
+})();
+
function getFileName(url) {
var anchor = url.indexOf('#');
var query = url.indexOf('?');
var end = Math.min(
anchor > 0 ? anchor : url.length,
query > 0 ? query : url.length);
return url.substring(url.lastIndexOf('/', end) + 1, end);
}
+/**
+ * Returns scale factor for the canvas. It makes sense for the HiDPI displays.
+ * @return {Object} The object with horizontal (sx) and vertical (sy)
+ scales. The scaled property is set to false if scaling is
+ not required, true otherwise.
+ */
+function getOutputScale(ctx) {
+ var devicePixelRatio = window.devicePixelRatio || 1;
+ var backingStoreRatio = ctx.webkitBackingStorePixelRatio ||
+ ctx.mozBackingStorePixelRatio ||
+ ctx.msBackingStorePixelRatio ||
+ ctx.oBackingStorePixelRatio ||
+ ctx.backingStorePixelRatio || 1;
+ var pixelRatio = devicePixelRatio / backingStoreRatio;
+ return {
+ sx: pixelRatio,
+ sy: pixelRatio,
+ scaled: pixelRatio != 1
+ };
+}
+
+/**
+ * Scrolls specified element into view of its parent.
+ * element {Object} The element to be visible.
+ * spot {Object} An object with optional top and left properties,
+ * specifying the offset from the top left edge.
+ */
function scrollIntoView(element, spot) {
// Assuming offsetParent is available (it's not available when viewer is in
// hidden iframe or object). We have to scroll: if the offsetParent is not set
// producing the error. See also animationStartedClosure.
var parent = element.offsetParent;
var offsetY = element.offsetTop + element.clientTop;
+ var offsetX = element.offsetLeft + element.clientLeft;
if (!parent) {
console.error('offsetParent is not set -- cannot scroll');
return;
}
- while (parent.clientHeight == parent.scrollHeight) {
+ while (parent.clientHeight === parent.scrollHeight) {
+ if (parent.dataset._scaleY) {
+ offsetY /= parent.dataset._scaleY;
+ offsetX /= parent.dataset._scaleX;
+ }
offsetY += parent.offsetTop;
+ offsetX += parent.offsetLeft;
parent = parent.offsetParent;
- if (!parent)
+ if (!parent) {
return; // no need to scroll
+ }
+ }
+ if (spot) {
+ if (spot.top !== undefined) {
+ offsetY += spot.top;
+ }
+ if (spot.left !== undefined) {
+ offsetX += spot.left;
+ parent.scrollLeft = offsetX;
+ }
}
- if (spot)
- offsetY += spot.top;
parent.scrollTop = offsetY;
}
-var Cache = function cacheCache(size) {
- var data = [];
- this.push = function cachePush(view) {
- var i = data.indexOf(view);
- if (i >= 0)
- data.splice(i);
- data.push(view);
- if (data.length > size)
- data.shift().destroy();
- };
-};
+/**
+ * Event handler to suppress context menu.
+ */
+function noContextMenuHandler(e) {
+ e.preventDefault();
+}
+
+/**
+ * Returns the filename or guessed filename from the url (see issue 3455).
+ * url {String} The original PDF location.
+ * @return {String} Guessed PDF file name.
+ */
+function getPDFFileNameFromURL(url) {
+ var reURI = /^(?:([^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
+ // SCHEME HOST 1.PATH 2.QUERY 3.REF
+ // Pattern to get last matching NAME.pdf
+ var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
+ var splitURI = reURI.exec(url);
+ var suggestedFilename = reFilename.exec(splitURI[1]) ||
+ reFilename.exec(splitURI[2]) ||
+ reFilename.exec(splitURI[3]);
+ if (suggestedFilename) {
+ suggestedFilename = suggestedFilename[0];
+ if (suggestedFilename.indexOf('%') != -1) {
+ // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf
+ try {
+ suggestedFilename =
+ reFilename.exec(decodeURIComponent(suggestedFilename))[0];
+ } catch(e) { // Possible (extremely rare) errors:
+ // URIError "Malformed URI", e.g. for "%AA.pdf"
+ // TypeError "null has no properties", e.g. for "%2F.pdf"
+ }
+ }
+ }
+ return suggestedFilename || 'document.pdf';
+}
var ProgressBar = (function ProgressBarClosure() {
function clamp(v, min, max) {
return Math.min(Math.max(v, min), max);
}
function ProgressBar(id, opts) {
- // Fetch the sub-elements for later
+ // Fetch the sub-elements for later.
this.div = document.querySelector(id + ' .progress');
- // Get options, with sensible defaults
+ // Get the loading bar element, so it can be resized to fit the viewer.
+ this.bar = this.div.parentNode;
+
+ // Get options, with sensible defaults.
this.height = opts.height || 100;
this.width = opts.width || 100;
this.units = opts.units || '%';
- // Initialize heights
+ // Initialize heights.
this.div.style.height = this.height + this.units;
+ this.percent = 0;
}
ProgressBar.prototype = {
updateBar: function ProgressBar_updateBar() {
if (this._indeterminate) {
this.div.classList.add('indeterminate');
this.div.style.width = this.width + this.units;
return;
}
this.div.classList.remove('indeterminate');
var progressSize = this.width * this._percent / 100;
this.div.style.width = progressSize + this.units;
},
get percent() {
return this._percent;
},
set percent(val) {
this._indeterminate = isNaN(val);
this._percent = clamp(val, 0, 100);
this.updateBar();
+ },
+
+ setWidth: function ProgressBar_setWidth(viewer) {
+ if (viewer) {
+ var container = viewer.parentNode;
+ var scrollbarWidth = container.offsetWidth - viewer.offsetWidth;
+ if (scrollbarWidth > 0) {
+ this.bar.setAttribute('style', 'width: calc(100% - ' +
+ scrollbarWidth + 'px);');
+ }
+ }
+ },
+
+ hide: function ProgressBar_hide() {
+ this.bar.classList.add('hidden');
+ this.bar.removeAttribute('style');
}
};
return ProgressBar;
})();
-//#if FIREFOX || MOZCENTRAL
-//#include firefoxcom.js
-//#endif
-
-// Settings Manager - This is a utility for saving settings
-// First we see if localStorage is available
-// If not, we use FUEL in FF
-// Use asyncStorage for B2G
-var Settings = (function SettingsClosure() {
-//#if !(FIREFOX || MOZCENTRAL || B2G)
- var isLocalStorageEnabled = (function localStorageEnabledTest() {
- // Feature test as per http://diveintohtml5.info/storage.html
- // The additional localStorage call is to get around a FF quirk, see
- // bug #495747 in bugzilla
- try {
- return 'localStorage' in window && window['localStorage'] !== null &&
- localStorage;
- } catch (e) {
- return false;
+var Cache = function cacheCache(size) {
+ var data = [];
+ this.push = function cachePush(view) {
+ var i = data.indexOf(view);
+ if (i >= 0) {
+ data.splice(i);
}
- })();
-//#endif
-
- function Settings(fingerprint) {
- this.fingerprint = fingerprint;
- this.initializedPromise = new PDFJS.Promise();
+ data.push(view);
+ if (data.length > size) {
+ data.shift().destroy();
+ }
+ };
+};
- var resolvePromise = (function settingsResolvePromise(db) {
- this.initialize(db || '{}');
- this.initializedPromise.resolve();
- }).bind(this);
-//#if B2G
-// asyncStorage.getItem('database', resolvePromise);
-//#endif
-//#if FIREFOX || MOZCENTRAL
-// resolvePromise(FirefoxCom.requestSync('getDatabase', null));
-//#endif
-//#if !(FIREFOX || MOZCENTRAL || B2G)
- if (isLocalStorageEnabled)
- resolvePromise(localStorage.getItem('database'));
-//#endif
- }
+var DEFAULT_PREFERENCES = {
+ showPreviousViewOnLoad: true,
+ defaultZoomValue: '',
+ sidebarViewOnLoad: 0,
+ enableHandToolOnLoad: false,
+ enableWebGL: false
+};
- Settings.prototype = {
- initialize: function settingsInitialize(database) {
- database = JSON.parse(database);
- if (!('files' in database))
- database.files = [];
- if (database.files.length >= SETTINGS_MEMORY)
- database.files.shift();
- var index;
- for (var i = 0, length = database.files.length; i < length; i++) {
- var branch = database.files[i];
- if (branch.fingerprint == this.fingerprint) {
- index = i;
- break;
- }
- }
- if (typeof index != 'number')
- index = database.files.push({fingerprint: this.fingerprint}) - 1;
- this.file = database.files[index];
- this.database = database;
- },
- set: function settingsSet(name, val) {
- if (!this.initializedPromise.isResolved)
- return;
+var SidebarView = {
+ NONE: 0,
+ THUMBS: 1,
+ OUTLINE: 2,
+ ATTACHMENTS: 3
+};
- var file = this.file;
- file[name] = val;
- var database = JSON.stringify(this.database);
+/**
+ * Preferences - Utility for storing persistent settings.
+ * Used for settings that should be applied to all opened documents,
+ * or every time the viewer is loaded.
+ */
+var Preferences = {
+ prefs: Object.create(DEFAULT_PREFERENCES),
+ isInitializedPromiseResolved: false,
+ initializedPromise: null,
-//#if B2G
-// asyncStorage.setItem('database', database);
-//#endif
+ /**
+ * Initialize and fetch the current preference values from storage.
+ * @return {Promise} A promise that is resolved when the preferences
+ * have been initialized.
+ */
+ initialize: function preferencesInitialize() {
+ return this.initializedPromise =
+ this._readFromStorage(DEFAULT_PREFERENCES).then(function(prefObj) {
+ this.isInitializedPromiseResolved = true;
+ if (prefObj) {
+ this.prefs = prefObj;
+ }
+ }.bind(this));
+ },
-//#if FIREFOX || MOZCENTRAL
-// FirefoxCom.requestSync('setDatabase', database);
-//#endif
+ /**
+ * Stub function for writing preferences to storage.
+ * NOTE: This should be overridden by a build-specific function defined below.
+ * @param {Object} prefObj The preferences that should be written to storage.
+ * @return {Promise} A promise that is resolved when the preference values
+ * have been written.
+ */
+ _writeToStorage: function preferences_writeToStorage(prefObj) {
+ return Promise.resolve();
+ },
-//#if !(FIREFOX || MOZCENTRAL || B2G)
- if (isLocalStorageEnabled)
- localStorage.setItem('database', database);
-//#endif
- },
+ /**
+ * Stub function for reading preferences from storage.
+ * NOTE: This should be overridden by a build-specific function defined below.
+ * @param {Object} prefObj The preferences that should be read from storage.
+ * @return {Promise} A promise that is resolved with an {Object} containing
+ * the preferences that have been read.
+ */
+ _readFromStorage: function preferences_readFromStorage(prefObj) {
+ return Promise.resolve();
+ },
- get: function settingsGet(name, defaultValue) {
- if (!this.initializedPromise.isResolved)
- return defaultValue;
+ /**
+ * Reset the preferences to their default values and update storage.
+ * @return {Promise} A promise that is resolved when the preference values
+ * have been reset.
+ */
+ reset: function preferencesReset() {
+ return this.initializedPromise.then(function() {
+ this.prefs = Object.create(DEFAULT_PREFERENCES);
+ return this._writeToStorage(DEFAULT_PREFERENCES);
+ }.bind(this));
+ },
- return this.file[name] || defaultValue;
- }
- };
+ /**
+ * Replace the current preference values with the ones from storage.
+ * @return {Promise} A promise that is resolved when the preference values
+ * have been updated.
+ */
+ reload: function preferencesReload() {
+ return this.initializedPromise.then(function () {
+ this._readFromStorage(DEFAULT_PREFERENCES).then(function(prefObj) {
+ if (prefObj) {
+ this.prefs = prefObj;
+ }
+ }.bind(this));
+ }.bind(this));
+ },
- return Settings;
-})();
+ /**
+ * Set the value of a preference.
+ * @param {string} name The name of the preference that should be changed.
+ * @param {boolean|number|string} value The new value of the preference.
+ * @return {Promise} A promise that is resolved when the value has been set,
+ * provided that the preference exists and the types match.
+ */
+ set: function preferencesSet(name, value) {
+ return this.initializedPromise.then(function () {
+ if (DEFAULT_PREFERENCES[name] === undefined) {
+ throw new Error('preferencesSet: \'' + name + '\' is undefined.');
+ } else if (value === undefined) {
+ throw new Error('preferencesSet: no value is specified.');
+ }
+ var valueType = typeof value;
+ var defaultType = typeof DEFAULT_PREFERENCES[name];
-var cache = new Cache(CACHE_SIZE);
-var currentPageNumber = 1;
+ if (valueType !== defaultType) {
+ if (valueType === 'number' && defaultType === 'string') {
+ value = value.toString();
+ } else {
+ throw new Error('Preferences_set: \'' + value + '\' is a \"' +
+ valueType + '\", expected \"' + defaultType + '\".');
+ }
+ } else {
+ if (valueType === 'number' && (value | 0) !== value) {
+ throw new Error('Preferences_set: \'' + value +
+ '\' must be an \"integer\".');
+ }
+ }
+ this.prefs[name] = value;
+ return this._writeToStorage(this.prefs);
+ }.bind(this));
+ },
-var PDFFindController = {
- startedTextExtraction: false,
+ /**
+ * Get the value of a preference.
+ * @param {string} name The name of the preference whose value is requested.
+ * @return {Promise} A promise that is resolved with a {boolean|number|string}
+ * containing the value of the preference.
+ */
+ get: function preferencesGet(name) {
+ return this.initializedPromise.then(function () {
+ var defaultValue = DEFAULT_PREFERENCES[name];
- extractTextPromises: [],
+ if (defaultValue === undefined) {
+ throw new Error('preferencesGet: \'' + name + '\' is undefined.');
+ } else {
+ var prefValue = this.prefs[name];
- // If active, find results will be highlighted.
- active: false,
+ if (prefValue !== undefined) {
+ return prefValue;
+ }
+ }
+ return defaultValue;
+ }.bind(this));
+ }
+};
- // Stores the text for each page.
- pageContents: [],
- pageMatches: [],
+Preferences._writeToStorage = function (prefObj) {
+ return new Promise(function (resolve) {
+ localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj));
+ resolve();
+ });
+};
- // Currently selected match.
- selected: {
- pageIdx: -1,
- matchIdx: -1
- },
+Preferences._readFromStorage = function (prefObj) {
+ return new Promise(function (resolve) {
+ var readPrefs = JSON.parse(localStorage.getItem('pdfjs.preferences'));
+ resolve(readPrefs);
+ });
+};
- // Where find algorithm currently is in the document.
- offset: {
- pageIdx: null,
- matchIdx: null
- },
- resumePageIdx: null,
+(function mozPrintCallbackPolyfillClosure() {
+ if ('mozPrintCallback' in document.createElement('canvas')) {
+ return;
+ }
+ // Cause positive result on feature-detection:
+ HTMLCanvasElement.prototype.mozPrintCallback = undefined;
- resumeCallback: null,
+ var canvases; // During print task: non-live NodeList of <canvas> elements
+ var index; // Index of <canvas> element that is being processed
- state: null,
+ var print = window.print;
+ window.print = function print() {
+ if (canvases) {
+ console.warn('Ignored window.print() because of a pending print job.');
+ return;
+ }
+ try {
+ dispatchEvent('beforeprint');
+ } finally {
+ canvases = document.querySelectorAll('canvas');
+ index = -1;
+ next();
+ }
+ };
- dirtyMatch: false,
+ function dispatchEvent(eventType) {
+ var event = document.createEvent('CustomEvent');
+ event.initCustomEvent(eventType, false, false, 'custom');
+ window.dispatchEvent(event);
+ }
- findTimeout: null,
+ function next() {
+ if (!canvases) {
+ return; // Print task cancelled by user (state reset in abort())
+ }
- initialize: function() {
- var events = [
- 'find',
- 'findagain',
- 'findhighlightallchange',
- 'findcasesensitivitychange'
- ];
+ renderProgress();
+ if (++index < canvases.length) {
+ var canvas = canvases[index];
+ if (typeof canvas.mozPrintCallback === 'function') {
+ canvas.mozPrintCallback({
+ context: canvas.getContext('2d'),
+ abort: abort,
+ done: next
+ });
+ } else {
+ next();
+ }
+ } else {
+ renderProgress();
+ print.call(window);
+ setTimeout(abort, 20); // Tidy-up
+ }
+ }
- this.handleEvent = this.handleEvent.bind(this);
+ function abort() {
+ if (canvases) {
+ canvases = null;
+ renderProgress();
+ dispatchEvent('afterprint');
+ }
+ }
- for (var i = 0; i < events.length; i++) {
- window.addEventListener(events[i], this.handleEvent);
+ function renderProgress() {
+ var progressContainer = document.getElementById('mozPrintCallback-shim');
+ if (canvases) {
+ var progress = Math.round(100 * index / canvases.length);
+ var progressBar = progressContainer.querySelector('progress');
+ var progressPerc = progressContainer.querySelector('.relative-progress');
+ progressBar.value = progress;
+ progressPerc.textContent = progress + '%';
+ progressContainer.removeAttribute('hidden');
+ progressContainer.onclick = abort;
+ } else {
+ progressContainer.setAttribute('hidden', '');
}
- },
+ }
- calcFindMatch: function(pageIndex) {
- var pageContent = this.pageContents[pageIndex];
- var query = this.state.query;
- var caseSensitive = this.state.caseSensitive;
- var queryLen = query.length;
+ var hasAttachEvent = !!document.attachEvent;
- if (queryLen === 0) {
- // Do nothing the matches should be wiped out already.
+ window.addEventListener('keydown', function(event) {
+ // Intercept Cmd/Ctrl + P in all browsers.
+ // Also intercept Cmd/Ctrl + Shift + P in Chrome and Opera
+ if (event.keyCode === 80/*P*/ && (event.ctrlKey || event.metaKey) &&
+ !event.altKey && (!event.shiftKey || window.chrome || window.opera)) {
+ window.print();
+ if (hasAttachEvent) {
+ // Only attachEvent can cancel Ctrl + P dialog in IE <=10
+ // attachEvent is gone in IE11, so the dialog will re-appear in IE11.
+ return;
+ }
+ event.preventDefault();
+ if (event.stopImmediatePropagation) {
+ event.stopImmediatePropagation();
+ } else {
+ event.stopPropagation();
+ }
return;
}
-
- if (!caseSensitive) {
- pageContent = pageContent.toLowerCase();
- query = query.toLowerCase();
+ if (event.keyCode === 27 && canvases) { // Esc
+ abort();
}
+ }, true);
+ if (hasAttachEvent) {
+ document.attachEvent('onkeydown', function(event) {
+ event = event || window.event;
+ if (event.keyCode === 80/*P*/ && event.ctrlKey) {
+ event.keyCode = 0;
+ return false;
+ }
+ });
+ }
- var matches = [];
-
- var matchIdx = -queryLen;
- while (true) {
- matchIdx = pageContent.indexOf(query, matchIdx + queryLen);
- if (matchIdx === -1) {
- break;
+ if ('onbeforeprint' in window) {
+ // Do not propagate before/afterprint events when they are not triggered
+ // from within this polyfill. (FF/IE).
+ var stopPropagationIfNeeded = function(event) {
+ if (event.detail !== 'custom' && event.stopImmediatePropagation) {
+ event.stopImmediatePropagation();
}
+ };
+ window.addEventListener('beforeprint', stopPropagationIfNeeded, false);
+ window.addEventListener('afterprint', stopPropagationIfNeeded, false);
+ }
+})();
- matches.push(matchIdx);
- }
- this.pageMatches[pageIndex] = matches;
- this.updatePage(pageIndex);
- if (this.resumePageIdx === pageIndex) {
- var callback = this.resumeCallback;
- this.resumePageIdx = null;
- this.resumeCallback = null;
- callback();
- }
- },
- extractText: function() {
+
+var DownloadManager = (function DownloadManagerClosure() {
+
+ function download(blobUrl, filename) {
+ var a = document.createElement('a');
+ if (a.click) {
+ // Use a.click() if available. Otherwise, Chrome might show
+ // "Unsafe JavaScript attempt to initiate a navigation change
+ // for frame with URL" and not open the PDF at all.
+ // Supported by (not mentioned = untested):
+ // - Firefox 6 - 19 (4- does not support a.click, 5 ignores a.click)
+ // - Chrome 19 - 26 (18- does not support a.click)
+ // - Opera 9 - 12.15
+ // - Internet Explorer 6 - 10
+ // - Safari 6 (5.1- does not support a.click)
+ a.href = blobUrl;
+ a.target = '_parent';
+ // Use a.download if available. This increases the likelihood that
+ // the file is downloaded instead of opened by another PDF plugin.
+ if ('download' in a) {
+ a.download = filename;
+ }
+ // <a> must be in the document for IE and recent Firefox versions.
+ // (otherwise .click() is ignored)
+ (document.body || document.documentElement).appendChild(a);
+ a.click();
+ a.parentNode.removeChild(a);
+ } else {
+ if (window.top === window &&
+ blobUrl.split('#')[0] === window.location.href.split('#')[0]) {
+ // If _parent == self, then opening an identical URL with different
+ // location hash will only cause a navigation, not a download.
+ var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&';
+ blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&');
+ }
+ window.open(blobUrl, '_parent');
+ }
+ }
+
+ function DownloadManager() {}
+
+ DownloadManager.prototype = {
+ downloadUrl: function DownloadManager_downloadUrl(url, filename) {
+ if (!PDFJS.isValidUrl(url, true)) {
+ return; // restricted/invalid URL
+ }
+
+ download(url + '#pdfjs.action=download', filename);
+ },
+
+ downloadData: function DownloadManager_downloadData(data, filename,
+ contentType) {
+ if (navigator.msSaveBlob) { // IE10 and above
+ return navigator.msSaveBlob(new Blob([data], { type: contentType }),
+ filename);
+ }
+
+ var blobUrl = PDFJS.createObjectURL(data, contentType);
+ download(blobUrl, filename);
+ },
+
+ download: function DownloadManager_download(blob, url, filename) {
+ if (!URL) {
+ // URL.createObjectURL is not supported
+ this.downloadUrl(url, filename);
+ return;
+ }
+
+ if (navigator.msSaveBlob) {
+ // IE10 / IE11
+ if (!navigator.msSaveBlob(blob, filename)) {
+ this.downloadUrl(url, filename);
+ }
+ return;
+ }
+
+ var blobUrl = URL.createObjectURL(blob);
+ download(blobUrl, filename);
+ }
+ };
+
+ return DownloadManager;
+})();
+
+
+
+
+var cache = new Cache(CACHE_SIZE);
+var currentPageNumber = 1;
+
+
+/**
+ * View History - This is a utility for saving various view parameters for
+ * recently opened files.
+ *
+ * The way that the view parameters are stored depends on how PDF.js is built,
+ * for 'node make <flag>' the following cases exist:
+ * - FIREFOX or MOZCENTRAL - uses sessionStorage.
+ * - B2G - uses asyncStorage.
+ * - GENERIC or CHROME - uses localStorage, if it is available.
+ */
+var ViewHistory = (function ViewHistoryClosure() {
+ function ViewHistory(fingerprint) {
+ this.fingerprint = fingerprint;
+ this.isInitializedPromiseResolved = false;
+ this.initializedPromise =
+ this._readFromStorage().then(function (databaseStr) {
+ this.isInitializedPromiseResolved = true;
+
+ var database = JSON.parse(databaseStr || '{}');
+ if (!('files' in database)) {
+ database.files = [];
+ }
+ if (database.files.length >= VIEW_HISTORY_MEMORY) {
+ database.files.shift();
+ }
+ var index;
+ for (var i = 0, length = database.files.length; i < length; i++) {
+ var branch = database.files[i];
+ if (branch.fingerprint === this.fingerprint) {
+ index = i;
+ break;
+ }
+ }
+ if (typeof index !== 'number') {
+ index = database.files.push({fingerprint: this.fingerprint}) - 1;
+ }
+ this.file = database.files[index];
+ this.database = database;
+ }.bind(this));
+ }
+
+ ViewHistory.prototype = {
+ _writeToStorage: function ViewHistory_writeToStorage() {
+ return new Promise(function (resolve) {
+ var databaseStr = JSON.stringify(this.database);
+
+
+
+ localStorage.setItem('database', databaseStr);
+ resolve();
+ }.bind(this));
+ },
+
+ _readFromStorage: function ViewHistory_readFromStorage() {
+ return new Promise(function (resolve) {
+
+
+ resolve(localStorage.getItem('database'));
+ });
+ },
+
+ set: function ViewHistory_set(name, val) {
+ if (!this.isInitializedPromiseResolved) {
+ return;
+ }
+ this.file[name] = val;
+ return this._writeToStorage();
+ },
+
+ setMultiple: function ViewHistory_setMultiple(properties) {
+ if (!this.isInitializedPromiseResolved) {
+ return;
+ }
+ for (var name in properties) {
+ this.file[name] = properties[name];
+ }
+ return this._writeToStorage();
+ },
+
+ get: function ViewHistory_get(name, defaultValue) {
+ if (!this.isInitializedPromiseResolved) {
+ return defaultValue;
+ }
+ return this.file[name] || defaultValue;
+ }
+ };
+
+ return ViewHistory;
+})();
+
+
+/**
+ * Creates a "search bar" given set of DOM elements
+ * that act as controls for searching, or for setting
+ * search preferences in the UI. This object also sets
+ * up the appropriate events for the controls. Actual
+ * searching is done by PDFFindController
+ */
+var PDFFindBar = {
+ opened: false,
+ bar: null,
+ toggleButton: null,
+ findField: null,
+ highlightAll: null,
+ caseSensitive: null,
+ findMsg: null,
+ findStatusIcon: null,
+ findPreviousButton: null,
+ findNextButton: null,
+
+ initialize: function(options) {
+ if(typeof PDFFindController === 'undefined' || PDFFindController === null) {
+ throw 'PDFFindBar cannot be initialized ' +
+ 'without a PDFFindController instance.';
+ }
+
+ this.bar = options.bar;
+ this.toggleButton = options.toggleButton;
+ this.findField = options.findField;
+ this.highlightAll = options.highlightAllCheckbox;
+ this.caseSensitive = options.caseSensitiveCheckbox;
+ this.findMsg = options.findMsg;
+ this.findStatusIcon = options.findStatusIcon;
+ this.findPreviousButton = options.findPreviousButton;
+ this.findNextButton = options.findNextButton;
+
+ var self = this;
+ this.toggleButton.addEventListener('click', function() {
+ self.toggle();
+ });
+
+ this.findField.addEventListener('input', function() {
+ self.dispatchEvent('');
+ });
+
+ this.bar.addEventListener('keydown', function(evt) {
+ switch (evt.keyCode) {
+ case 13: // Enter
+ if (evt.target === self.findField) {
+ self.dispatchEvent('again', evt.shiftKey);
+ }
+ break;
+ case 27: // Escape
+ self.close();
+ break;
+ }
+ });
+
+ this.findPreviousButton.addEventListener('click',
+ function() { self.dispatchEvent('again', true); }
+ );
+
+ this.findNextButton.addEventListener('click', function() {
+ self.dispatchEvent('again', false);
+ });
+
+ this.highlightAll.addEventListener('click', function() {
+ self.dispatchEvent('highlightallchange');
+ });
+
+ this.caseSensitive.addEventListener('click', function() {
+ self.dispatchEvent('casesensitivitychange');
+ });
+ },
+
+ dispatchEvent: function(aType, aFindPrevious) {
+ var event = document.createEvent('CustomEvent');
+ event.initCustomEvent('find' + aType, true, true, {
+ query: this.findField.value,
+ caseSensitive: this.caseSensitive.checked,
+ highlightAll: this.highlightAll.checked,
+ findPrevious: aFindPrevious
+ });
+ return window.dispatchEvent(event);
+ },
+
+ updateUIState: function(state, previous) {
+ var notFound = false;
+ var findMsg = '';
+ var status = '';
+
+ switch (state) {
+ case FindStates.FIND_FOUND:
+ break;
+
+ case FindStates.FIND_PENDING:
+ status = 'pending';
+ break;
+
+ case FindStates.FIND_NOTFOUND:
+ findMsg = mozL10n.get('find_not_found', null, 'Phrase not found');
+ notFound = true;
+ break;
+
+ case FindStates.FIND_WRAPPED:
+ if (previous) {
+ findMsg = mozL10n.get('find_reached_top', null,
+ 'Reached top of document, continued from bottom');
+ } else {
+ findMsg = mozL10n.get('find_reached_bottom', null,
+ 'Reached end of document, continued from top');
+ }
+ break;
+ }
+
+ if (notFound) {
+ this.findField.classList.add('notFound');
+ } else {
+ this.findField.classList.remove('notFound');
+ }
+
+ this.findField.setAttribute('data-status', status);
+ this.findMsg.textContent = findMsg;
+ },
+
+ open: function() {
+ if (!this.opened) {
+ this.opened = true;
+ this.toggleButton.classList.add('toggled');
+ this.bar.classList.remove('hidden');
+ }
+
+ this.findField.select();
+ this.findField.focus();
+ },
+
+ close: function() {
+ if (!this.opened) {
+ return;
+ }
+ this.opened = false;
+ this.toggleButton.classList.remove('toggled');
+ this.bar.classList.add('hidden');
+
+ PDFFindController.active = false;
+ },
+
+ toggle: function() {
+ if (this.opened) {
+ this.close();
+ } else {
+ this.open();
+ }
+ }
+};
+
+
+
+/**
+ * Provides a "search" or "find" functionality for the PDF.
+ * This object actually performs the search for a given string.
+ */
+
+var PDFFindController = {
+ startedTextExtraction: false,
+
+ extractTextPromises: [],
+
+ pendingFindMatches: {},
+
+ // If active, find results will be highlighted.
+ active: false,
+
+ // Stores the text for each page.
+ pageContents: [],
+
+ pageMatches: [],
+
+ // Currently selected match.
+ selected: {
+ pageIdx: -1,
+ matchIdx: -1
+ },
+
+ // Where find algorithm currently is in the document.
+ offset: {
+ pageIdx: null,
+ matchIdx: null
+ },
+
+ resumePageIdx: null,
+
+ state: null,
+
+ dirtyMatch: false,
+
+ findTimeout: null,
+
+ pdfPageSource: null,
+
+ integratedFind: false,
+
+ initialize: function(options) {
+ if(typeof PDFFindBar === 'undefined' || PDFFindBar === null) {
+ throw 'PDFFindController cannot be initialized ' +
+ 'without a PDFFindBar instance';
+ }
+
+ this.pdfPageSource = options.pdfPageSource;
+ this.integratedFind = options.integratedFind;
+
+ var events = [
+ 'find',
+ 'findagain',
+ 'findhighlightallchange',
+ 'findcasesensitivitychange'
+ ];
+
+ this.firstPagePromise = new Promise(function (resolve) {
+ this.resolveFirstPage = resolve;
+ }.bind(this));
+ this.handleEvent = this.handleEvent.bind(this);
+
+ for (var i = 0; i < events.length; i++) {
+ window.addEventListener(events[i], this.handleEvent);
+ }
+ },
+
+ reset: function pdfFindControllerReset() {
+ this.startedTextExtraction = false;
+ this.extractTextPromises = [];
+ this.active = false;
+ },
+
+ calcFindMatch: function(pageIndex) {
+ var pageContent = this.pageContents[pageIndex];
+ var query = this.state.query;
+ var caseSensitive = this.state.caseSensitive;
+ var queryLen = query.length;
+
+ if (queryLen === 0) {
+ // Do nothing the matches should be wiped out already.
+ return;
+ }
+
+ if (!caseSensitive) {
+ pageContent = pageContent.toLowerCase();
+ query = query.toLowerCase();
+ }
+
+ var matches = [];
+
+ var matchIdx = -queryLen;
+ while (true) {
+ matchIdx = pageContent.indexOf(query, matchIdx + queryLen);
+ if (matchIdx === -1) {
+ break;
+ }
+
+ matches.push(matchIdx);
+ }
+ this.pageMatches[pageIndex] = matches;
+ this.updatePage(pageIndex);
+ if (this.resumePageIdx === pageIndex) {
+ this.resumePageIdx = null;
+ this.nextPageMatch();
+ }
+ },
+
+ extractText: function() {
if (this.startedTextExtraction) {
return;
}
- this.startedTextExtraction = true;
+ this.startedTextExtraction = true;
+
+ this.pageContents = [];
+ var extractTextPromisesResolves = [];
+ for (var i = 0, ii = this.pdfPageSource.pdfDocument.numPages; i < ii; i++) {
+ this.extractTextPromises.push(new Promise(function (resolve) {
+ extractTextPromisesResolves.push(resolve);
+ }));
+ }
+
+ var self = this;
+ function extractPageText(pageIndex) {
+ self.pdfPageSource.pages[pageIndex].getTextContent().then(
+ function textContentResolved(textContent) {
+ var textItems = textContent.items;
+ var str = '';
+
+ for (var i = 0; i < textItems.length; i++) {
+ str += textItems[i].str;
+ }
+
+ // Store the pageContent as a string.
+ self.pageContents.push(str);
+
+ extractTextPromisesResolves[pageIndex](pageIndex);
+ if ((pageIndex + 1) < self.pdfPageSource.pages.length) {
+ extractPageText(pageIndex + 1);
+ }
+ }
+ );
+ }
+ extractPageText(0);
+ },
+
+ handleEvent: function(e) {
+ if (this.state === null || e.type !== 'findagain') {
+ this.dirtyMatch = true;
+ }
+ this.state = e.detail;
+ this.updateUIState(FindStates.FIND_PENDING);
+
+ this.firstPagePromise.then(function() {
+ this.extractText();
+
+ clearTimeout(this.findTimeout);
+ if (e.type === 'find') {
+ // Only trigger the find action after 250ms of silence.
+ this.findTimeout = setTimeout(this.nextMatch.bind(this), 250);
+ } else {
+ this.nextMatch();
+ }
+ }.bind(this));
+ },
+
+ updatePage: function(idx) {
+ var page = this.pdfPageSource.pages[idx];
+
+ if (this.selected.pageIdx === idx) {
+ // If the page is selected, scroll the page into view, which triggers
+ // rendering the page, which adds the textLayer. Once the textLayer is
+ // build, it will scroll onto the selected match.
+ page.scrollIntoView();
+ }
+
+ if (page.textLayer) {
+ page.textLayer.updateMatches();
+ }
+ },
+
+ nextMatch: function() {
+ var previous = this.state.findPrevious;
+ var currentPageIndex = this.pdfPageSource.page - 1;
+ var numPages = this.pdfPageSource.pages.length;
+
+ this.active = true;
+
+ if (this.dirtyMatch) {
+ // Need to recalculate the matches, reset everything.
+ this.dirtyMatch = false;
+ this.selected.pageIdx = this.selected.matchIdx = -1;
+ this.offset.pageIdx = currentPageIndex;
+ this.offset.matchIdx = null;
+ this.hadMatch = false;
+ this.resumePageIdx = null;
+ this.pageMatches = [];
+ var self = this;
+
+ for (var i = 0; i < numPages; i++) {
+ // Wipe out any previous highlighted matches.
+ this.updatePage(i);
+
+ // As soon as the text is extracted start finding the matches.
+ if (!(i in this.pendingFindMatches)) {
+ this.pendingFindMatches[i] = true;
+ this.extractTextPromises[i].then(function(pageIdx) {
+ delete self.pendingFindMatches[pageIdx];
+ self.calcFindMatch(pageIdx);
+ });
+ }
+ }
+ }
+
+ // If there's no query there's no point in searching.
+ if (this.state.query === '') {
+ this.updateUIState(FindStates.FIND_FOUND);
+ return;
+ }
+
+ // If we're waiting on a page, we return since we can't do anything else.
+ if (this.resumePageIdx) {
+ return;
+ }
+
+ var offset = this.offset;
+ // If there's already a matchIdx that means we are iterating through a
+ // page's matches.
+ if (offset.matchIdx !== null) {
+ var numPageMatches = this.pageMatches[offset.pageIdx].length;
+ if ((!previous && offset.matchIdx + 1 < numPageMatches) ||
+ (previous && offset.matchIdx > 0)) {
+ // The simple case, we just have advance the matchIdx to select the next
+ // match on the page.
+ this.hadMatch = true;
+ offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;
+ this.updateMatch(true);
+ return;
+ }
+ // We went beyond the current page's matches, so we advance to the next
+ // page.
+ this.advanceOffsetPage(previous);
+ }
+ // Start searching through the page.
+ this.nextPageMatch();
+ },
+
+ matchesReady: function(matches) {
+ var offset = this.offset;
+ var numMatches = matches.length;
+ var previous = this.state.findPrevious;
+ if (numMatches) {
+ // There were matches for the page, so initialize the matchIdx.
+ this.hadMatch = true;
+ offset.matchIdx = previous ? numMatches - 1 : 0;
+ this.updateMatch(true);
+ // matches were found
+ return true;
+ } else {
+ // No matches attempt to search the next page.
+ this.advanceOffsetPage(previous);
+ if (offset.wrapped) {
+ offset.matchIdx = null;
+ if (!this.hadMatch) {
+ // No point in wrapping there were no matches.
+ this.updateMatch(false);
+ // while matches were not found, searching for a page
+ // with matches should nevertheless halt.
+ return true;
+ }
+ }
+ // matches were not found (and searching is not done)
+ return false;
+ }
+ },
+
+ nextPageMatch: function() {
+ if (this.resumePageIdx !== null) {
+ console.error('There can only be one pending page.');
+ }
+ do {
+ var pageIdx = this.offset.pageIdx;
+ var matches = this.pageMatches[pageIdx];
+ if (!matches) {
+ // The matches don't exist yet for processing by "matchesReady",
+ // so set a resume point for when they do exist.
+ this.resumePageIdx = pageIdx;
+ break;
+ }
+ } while (!this.matchesReady(matches));
+ },
+
+ advanceOffsetPage: function(previous) {
+ var offset = this.offset;
+ var numPages = this.extractTextPromises.length;
+ offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;
+ offset.matchIdx = null;
+ if (offset.pageIdx >= numPages || offset.pageIdx < 0) {
+ offset.pageIdx = previous ? numPages - 1 : 0;
+ offset.wrapped = true;
+ return;
+ }
+ },
+
+ updateMatch: function(found) {
+ var state = FindStates.FIND_NOTFOUND;
+ var wrapped = this.offset.wrapped;
+ this.offset.wrapped = false;
+ if (found) {
+ var previousPage = this.selected.pageIdx;
+ this.selected.pageIdx = this.offset.pageIdx;
+ this.selected.matchIdx = this.offset.matchIdx;
+ state = wrapped ? FindStates.FIND_WRAPPED : FindStates.FIND_FOUND;
+ // Update the currently selected page to wipe out any selected matches.
+ if (previousPage !== -1 && previousPage !== this.selected.pageIdx) {
+ this.updatePage(previousPage);
+ }
+ }
+ this.updateUIState(state, this.state.findPrevious);
+ if (this.selected.pageIdx !== -1) {
+ this.updatePage(this.selected.pageIdx, true);
+ }
+ },
+
+ updateUIState: function(state, previous) {
+ if (this.integratedFind) {
+ FirefoxCom.request('updateFindControlState',
+ {result: state, findPrevious: previous});
+ return;
+ }
+ PDFFindBar.updateUIState(state, previous);
+ }
+};
+
+
+
+var PDFHistory = {
+ initialized: false,
+ initialDestination: null,
+
+ initialize: function pdfHistoryInitialize(fingerprint) {
+ if (PDFJS.disableHistory || PDFView.isViewerEmbedded) {
+ // The browsing history is only enabled when the viewer is standalone,
+ // i.e. not when it is embedded in a web page.
+ return;
+ }
+ this.initialized = true;
+ this.reInitialized = false;
+ this.allowHashChange = true;
+ this.historyUnlocked = true;
+
+ this.previousHash = window.location.hash.substring(1);
+ this.currentBookmark = '';
+ this.currentPage = 0;
+ this.updatePreviousBookmark = false;
+ this.previousBookmark = '';
+ this.previousPage = 0;
+ this.nextHashParam = '';
+
+ this.fingerprint = fingerprint;
+ this.currentUid = this.uid = 0;
+ this.current = {};
+
+ var state = window.history.state;
+ if (this._isStateObjectDefined(state)) {
+ // This corresponds to navigating back to the document
+ // from another page in the browser history.
+ if (state.target.dest) {
+ this.initialDestination = state.target.dest;
+ } else {
+ PDFView.initialBookmark = state.target.hash;
+ }
+ this.currentUid = state.uid;
+ this.uid = state.uid + 1;
+ this.current = state.target;
+ } else {
+ // This corresponds to the loading of a new document.
+ if (state && state.fingerprint &&
+ this.fingerprint !== state.fingerprint) {
+ // Reinitialize the browsing history when a new document
+ // is opened in the web viewer.
+ this.reInitialized = true;
+ }
+ this._pushOrReplaceState({ fingerprint: this.fingerprint }, true);
+ }
+
+ var self = this;
+ window.addEventListener('popstate', function pdfHistoryPopstate(evt) {
+ evt.preventDefault();
+ evt.stopPropagation();
+
+ if (!self.historyUnlocked) {
+ return;
+ }
+ if (evt.state) {
+ // Move back/forward in the history.
+ self._goTo(evt.state);
+ } else {
+ // Handle the user modifying the hash of a loaded document.
+ self.previousHash = window.location.hash.substring(1);
+
+ // If the history is empty when the hash changes,
+ // update the previous entry in the browser history.
+ if (self.uid === 0) {
+ var previousParams = (self.previousHash && self.currentBookmark &&
+ self.previousHash !== self.currentBookmark) ?
+ { hash: self.currentBookmark, page: self.currentPage } :
+ { page: 1 };
+ self.historyUnlocked = false;
+ self.allowHashChange = false;
+ window.history.back();
+ self._pushToHistory(previousParams, false, true);
+ window.history.forward();
+ self.historyUnlocked = true;
+ }
+ self._pushToHistory({ hash: self.previousHash }, false, true);
+ self._updatePreviousBookmark();
+ }
+ }, false);
+
+ function pdfHistoryBeforeUnload() {
+ var previousParams = self._getPreviousParams(null, true);
+ if (previousParams) {
+ var replacePrevious = (!self.current.dest &&
+ self.current.hash !== self.previousHash);
+ self._pushToHistory(previousParams, false, replacePrevious);
+ self._updatePreviousBookmark();
+ }
+ // Remove the event listener when navigating away from the document,
+ // since 'beforeunload' prevents Firefox from caching the document.
+ window.removeEventListener('beforeunload', pdfHistoryBeforeUnload, false);
+ }
+ window.addEventListener('beforeunload', pdfHistoryBeforeUnload, false);
+
+ window.addEventListener('pageshow', function pdfHistoryPageShow(evt) {
+ // If the entire viewer (including the PDF file) is cached in the browser,
+ // we need to reattach the 'beforeunload' event listener since
+ // the 'DOMContentLoaded' event is not fired on 'pageshow'.
+ window.addEventListener('beforeunload', pdfHistoryBeforeUnload, false);
+ }, false);
+ },
+
+ _isStateObjectDefined: function pdfHistory_isStateObjectDefined(state) {
+ return (state && state.uid >= 0 &&
+ state.fingerprint && this.fingerprint === state.fingerprint &&
+ state.target && state.target.hash) ? true : false;
+ },
+
+ _pushOrReplaceState: function pdfHistory_pushOrReplaceState(stateObj,
+ replace) {
+ if (replace) {
+ window.history.replaceState(stateObj, '', document.URL);
+ } else {
+ window.history.pushState(stateObj, '', document.URL);
+ }
+ },
+
+ get isHashChangeUnlocked() {
+ if (!this.initialized) {
+ return true;
+ }
+ // If the current hash changes when moving back/forward in the history,
+ // this will trigger a 'popstate' event *as well* as a 'hashchange' event.
+ // Since the hash generally won't correspond to the exact the position
+ // stored in the history's state object, triggering the 'hashchange' event
+ // can thus corrupt the browser history.
+ //
+ // When the hash changes during a 'popstate' event, we *only* prevent the
+ // first 'hashchange' event and immediately reset allowHashChange.
+ // If it is not reset, the user would not be able to change the hash.
+
+ var temp = this.allowHashChange;
+ this.allowHashChange = true;
+ return temp;
+ },
+
+ _updatePreviousBookmark: function pdfHistory_updatePreviousBookmark() {
+ if (this.updatePreviousBookmark &&
+ this.currentBookmark && this.currentPage) {
+ this.previousBookmark = this.currentBookmark;
+ this.previousPage = this.currentPage;
+ this.updatePreviousBookmark = false;
+ }
+ },
+
+ updateCurrentBookmark: function pdfHistoryUpdateCurrentBookmark(bookmark,
+ pageNum) {
+ if (this.initialized) {
+ this.currentBookmark = bookmark.substring(1);
+ this.currentPage = pageNum | 0;
+ this._updatePreviousBookmark();
+ }
+ },
+
+ updateNextHashParam: function pdfHistoryUpdateNextHashParam(param) {
+ if (this.initialized) {
+ this.nextHashParam = param;
+ }
+ },
+
+ push: function pdfHistoryPush(params, isInitialBookmark) {
+ if (!(this.initialized && this.historyUnlocked)) {
+ return;
+ }
+ if (params.dest && !params.hash) {
+ params.hash = (this.current.hash && this.current.dest &&
+ this.current.dest === params.dest) ?
+ this.current.hash :
+ PDFView.getDestinationHash(params.dest).split('#')[1];
+ }
+ if (params.page) {
+ params.page |= 0;
+ }
+ if (isInitialBookmark) {
+ var target = window.history.state.target;
+ if (!target) {
+ // Invoked when the user specifies an initial bookmark,
+ // thus setting PDFView.initialBookmark, when the document is loaded.
+ this._pushToHistory(params, false);
+ this.previousHash = window.location.hash.substring(1);
+ }
+ this.updatePreviousBookmark = this.nextHashParam ? false : true;
+ if (target) {
+ // If the current document is reloaded,
+ // avoid creating duplicate entries in the history.
+ this._updatePreviousBookmark();
+ }
+ return;
+ }
+ if (this.nextHashParam) {
+ if (this.nextHashParam === params.hash) {
+ this.nextHashParam = null;
+ this.updatePreviousBookmark = true;
+ return;
+ } else {
+ this.nextHashParam = null;
+ }
+ }
+
+ if (params.hash) {
+ if (this.current.hash) {
+ if (this.current.hash !== params.hash) {
+ this._pushToHistory(params, true);
+ } else {
+ if (!this.current.page && params.page) {
+ this._pushToHistory(params, false, true);
+ }
+ this.updatePreviousBookmark = true;
+ }
+ } else {
+ this._pushToHistory(params, true);
+ }
+ } else if (this.current.page && params.page &&
+ this.current.page !== params.page) {
+ this._pushToHistory(params, true);
+ }
+ },
+
+ _getPreviousParams: function pdfHistory_getPreviousParams(onlyCheckPage,
+ beforeUnload) {
+ if (!(this.currentBookmark && this.currentPage)) {
+ return null;
+ } else if (this.updatePreviousBookmark) {
+ this.updatePreviousBookmark = false;
+ }
+ if (this.uid > 0 && !(this.previousBookmark && this.previousPage)) {
+ // Prevent the history from getting stuck in the current state,
+ // effectively preventing the user from going back/forward in the history.
+ //
+ // This happens if the current position in the document didn't change when
+ // the history was previously updated. The reasons for this are either:
+ // 1. The current zoom value is such that the document does not need to,
+ // or cannot, be scrolled to display the destination.
+ // 2. The previous destination is broken, and doesn't actally point to a
+ // position within the document.
+ // (This is either due to a bad PDF generator, or the user making a
+ // mistake when entering a destination in the hash parameters.)
+ return null;
+ }
+ if ((!this.current.dest && !onlyCheckPage) || beforeUnload) {
+ if (this.previousBookmark === this.currentBookmark) {
+ return null;
+ }
+ } else if (this.current.page || onlyCheckPage) {
+ if (this.previousPage === this.currentPage) {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ var params = { hash: this.currentBookmark, page: this.currentPage };
+ if (PresentationMode.active) {
+ params.hash = null;
+ }
+ return params;
+ },
+
+ _stateObj: function pdfHistory_stateObj(params) {
+ return { fingerprint: this.fingerprint, uid: this.uid, target: params };
+ },
+
+ _pushToHistory: function pdfHistory_pushToHistory(params,
+ addPrevious, overwrite) {
+ if (!this.initialized) {
+ return;
+ }
+ if (!params.hash && params.page) {
+ params.hash = ('page=' + params.page);
+ }
+ if (addPrevious && !overwrite) {
+ var previousParams = this._getPreviousParams();
+ if (previousParams) {
+ var replacePrevious = (!this.current.dest &&
+ this.current.hash !== this.previousHash);
+ this._pushToHistory(previousParams, false, replacePrevious);
+ }
+ }
+ this._pushOrReplaceState(this._stateObj(params),
+ (overwrite || this.uid === 0));
+ this.currentUid = this.uid++;
+ this.current = params;
+ this.updatePreviousBookmark = true;
+ },
+
+ _goTo: function pdfHistory_goTo(state) {
+ if (!(this.initialized && this.historyUnlocked &&
+ this._isStateObjectDefined(state))) {
+ return;
+ }
+ if (!this.reInitialized && state.uid < this.currentUid) {
+ var previousParams = this._getPreviousParams(true);
+ if (previousParams) {
+ this._pushToHistory(this.current, false);
+ this._pushToHistory(previousParams, false);
+ this.currentUid = state.uid;
+ window.history.back();
+ return;
+ }
+ }
+ this.historyUnlocked = false;
+
+ if (state.target.dest) {
+ PDFView.navigateTo(state.target.dest);
+ } else {
+ PDFView.setHash(state.target.hash);
+ }
+ this.currentUid = state.uid;
+ if (state.uid > this.uid) {
+ this.uid = state.uid;
+ }
+ this.current = state.target;
+ this.updatePreviousBookmark = true;
+
+ var currentHash = window.location.hash.substring(1);
+ if (this.previousHash !== currentHash) {
+ this.allowHashChange = false;
+ }
+ this.previousHash = currentHash;
+
+ this.historyUnlocked = true;
+ },
+
+ back: function pdfHistoryBack() {
+ this.go(-1);
+ },
+
+ forward: function pdfHistoryForward() {
+ this.go(1);
+ },
+
+ go: function pdfHistoryGo(direction) {
+ if (this.initialized && this.historyUnlocked) {
+ var state = window.history.state;
+ if (direction === -1 && state && state.uid > 0) {
+ window.history.back();
+ } else if (direction === 1 && state && state.uid < (this.uid - 1)) {
+ window.history.forward();
+ }
+ }
+ }
+};
+
+
+var SecondaryToolbar = {
+ opened: false,
+ previousContainerHeight: null,
+ newContainerHeight: null,
+
+ initialize: function secondaryToolbarInitialize(options) {
+ this.toolbar = options.toolbar;
+ this.presentationMode = options.presentationMode;
+ this.documentProperties = options.documentProperties;
+ this.buttonContainer = this.toolbar.firstElementChild;
+
+ // Define the toolbar buttons.
+ this.toggleButton = options.toggleButton;
+ this.presentationModeButton = options.presentationModeButton;
+ this.openFile = options.openFile;
+ this.print = options.print;
+ this.download = options.download;
+ this.viewBookmark = options.viewBookmark;
+ this.firstPage = options.firstPage;
+ this.lastPage = options.lastPage;
+ this.pageRotateCw = options.pageRotateCw;
+ this.pageRotateCcw = options.pageRotateCcw;
+ this.documentPropertiesButton = options.documentPropertiesButton;
+
+ // Attach the event listeners.
+ var elements = [
+ // Button to toggle the visibility of the secondary toolbar:
+ { element: this.toggleButton, handler: this.toggle },
+ // All items within the secondary toolbar
+ // (except for toggleHandTool, hand_tool.js is responsible for it):
+ { element: this.presentationModeButton,
+ handler: this.presentationModeClick },
+ { element: this.openFile, handler: this.openFileClick },
+ { element: this.print, handler: this.printClick },
+ { element: this.download, handler: this.downloadClick },
+ { element: this.viewBookmark, handler: this.viewBookmarkClick },
+ { element: this.firstPage, handler: this.firstPageClick },
+ { element: this.lastPage, handler: this.lastPageClick },
+ { element: this.pageRotateCw, handler: this.pageRotateCwClick },
+ { element: this.pageRotateCcw, handler: this.pageRotateCcwClick },
+ { element: this.documentPropertiesButton,
+ handler: this.documentPropertiesClick }
+ ];
- this.pageContents = [];
- for (var i = 0, ii = PDFView.pdfDocument.numPages; i < ii; i++) {
- this.extractTextPromises.push(new PDFJS.Promise());
+ for (var item in elements) {
+ var element = elements[item].element;
+ if (element) {
+ element.addEventListener('click', elements[item].handler.bind(this));
+ }
}
+ },
- var self = this;
- function extractPageText(pageIndex) {
- PDFView.pages[pageIndex].getTextContent().then(
- function textContentResolved(data) {
- // Build the find string.
- var bidiTexts = data.bidiTexts;
- var str = '';
+ // Event handling functions.
+ presentationModeClick: function secondaryToolbarPresentationModeClick(evt) {
+ this.presentationMode.request();
+ this.close();
+ },
- for (var i = 0; i < bidiTexts.length; i++) {
- str += bidiTexts[i].str;
- }
+ openFileClick: function secondaryToolbarOpenFileClick(evt) {
+ document.getElementById('fileInput').click();
+ this.close();
+ },
- // Store the pageContent as a string.
- self.pageContents.push(str);
+ printClick: function secondaryToolbarPrintClick(evt) {
+ window.print();
+ this.close();
+ },
- self.extractTextPromises[pageIndex].resolve(pageIndex);
- if ((pageIndex + 1) < PDFView.pages.length)
- extractPageText(pageIndex + 1);
- }
- );
+ downloadClick: function secondaryToolbarDownloadClick(evt) {
+ PDFView.download();
+ this.close();
+ },
+
+ viewBookmarkClick: function secondaryToolbarViewBookmarkClick(evt) {
+ this.close();
+ },
+
+ firstPageClick: function secondaryToolbarFirstPageClick(evt) {
+ PDFView.page = 1;
+ this.close();
+ },
+
+ lastPageClick: function secondaryToolbarLastPageClick(evt) {
+ PDFView.page = PDFView.pdfDocument.numPages;
+ this.close();
+ },
+
+ pageRotateCwClick: function secondaryToolbarPageRotateCwClick(evt) {
+ PDFView.rotatePages(90);
+ },
+
+ pageRotateCcwClick: function secondaryToolbarPageRotateCcwClick(evt) {
+ PDFView.rotatePages(-90);
+ },
+
+ documentPropertiesClick: function secondaryToolbarDocumentPropsClick(evt) {
+ this.documentProperties.open();
+ this.close();
+ },
+
+ // Misc. functions for interacting with the toolbar.
+ setMaxHeight: function secondaryToolbarSetMaxHeight(container) {
+ if (!container || !this.buttonContainer) {
+ return;
}
- extractPageText(0);
- return this.extractTextPromise;
+ this.newContainerHeight = container.clientHeight;
+ if (this.previousContainerHeight === this.newContainerHeight) {
+ return;
+ }
+ this.buttonContainer.setAttribute('style',
+ 'max-height: ' + (this.newContainerHeight - SCROLLBAR_PADDING) + 'px;');
+ this.previousContainerHeight = this.newContainerHeight;
},
- handleEvent: function(e) {
- if (this.state === null || e.type !== 'findagain') {
- this.dirtyMatch = true;
+ open: function secondaryToolbarOpen() {
+ if (this.opened) {
+ return;
}
- this.state = e.detail;
- this.updateUIState(FindStates.FIND_PENDING);
+ this.opened = true;
+ this.toggleButton.classList.add('toggled');
+ this.toolbar.classList.remove('hidden');
+ },
- this.extractText();
+ close: function secondaryToolbarClose(target) {
+ if (!this.opened) {
+ return;
+ } else if (target && !this.toolbar.contains(target)) {
+ return;
+ }
+ this.opened = false;
+ this.toolbar.classList.add('hidden');
+ this.toggleButton.classList.remove('toggled');
+ },
- clearTimeout(this.findTimeout);
- if (e.type === 'find') {
- // Only trigger the find action after 250ms of silence.
- this.findTimeout = setTimeout(this.nextMatch.bind(this), 250);
+ toggle: function secondaryToolbarToggle() {
+ if (this.opened) {
+ this.close();
} else {
- this.nextMatch();
+ this.open();
}
+ }
+};
+
+
+var DELAY_BEFORE_HIDING_CONTROLS = 3000; // in ms
+var SELECTOR = 'presentationControls';
+var DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1000; // in ms
+
+var PresentationMode = {
+ active: false,
+ args: null,
+ contextMenuOpen: false,
+ prevCoords: { x: null, y: null },
+
+ initialize: function presentationModeInitialize(options) {
+ this.container = options.container;
+ this.secondaryToolbar = options.secondaryToolbar;
+
+ this.viewer = this.container.firstElementChild;
+
+ this.firstPage = options.firstPage;
+ this.lastPage = options.lastPage;
+ this.pageRotateCw = options.pageRotateCw;
+ this.pageRotateCcw = options.pageRotateCcw;
+
+ this.firstPage.addEventListener('click', function() {
+ this.contextMenuOpen = false;
+ this.secondaryToolbar.firstPageClick();
+ }.bind(this));
+ this.lastPage.addEventListener('click', function() {
+ this.contextMenuOpen = false;
+ this.secondaryToolbar.lastPageClick();
+ }.bind(this));
+
+ this.pageRotateCw.addEventListener('click', function() {
+ this.contextMenuOpen = false;
+ this.secondaryToolbar.pageRotateCwClick();
+ }.bind(this));
+ this.pageRotateCcw.addEventListener('click', function() {
+ this.contextMenuOpen = false;
+ this.secondaryToolbar.pageRotateCcwClick();
+ }.bind(this));
},
- updatePage: function(idx) {
- var page = PDFView.pages[idx];
+ get isFullscreen() {
+ return (document.fullscreenElement ||
+ document.mozFullScreen ||
+ document.webkitIsFullScreen ||
+ document.msFullscreenElement);
+ },
- if (this.selected.pageIdx === idx) {
- // If the page is selected, scroll the page into view, which triggers
- // rendering the page, which adds the textLayer. Once the textLayer is
- // build, it will scroll onto the selected match.
- page.scrollIntoView();
+ /**
+ * Initialize a timeout that is used to reset PDFView.currentPosition when the
+ * browser transitions to fullscreen mode. Since resize events are triggered
+ * multiple times during the switch to fullscreen mode, this is necessary in
+ * order to prevent the page from being scrolled partially, or completely,
+ * out of view when Presentation Mode is enabled.
+ * Note: This is only an issue at certain zoom levels, e.g. 'page-width'.
+ */
+ _setSwitchInProgress: function presentationMode_setSwitchInProgress() {
+ if (this.switchInProgress) {
+ clearTimeout(this.switchInProgress);
}
+ this.switchInProgress = setTimeout(function switchInProgressTimeout() {
+ delete this.switchInProgress;
+ }.bind(this), DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);
- if (page.textLayer) {
- page.textLayer.updateMatches();
+ PDFView.currentPosition = null;
+ },
+
+ _resetSwitchInProgress: function presentationMode_resetSwitchInProgress() {
+ if (this.switchInProgress) {
+ clearTimeout(this.switchInProgress);
+ delete this.switchInProgress;
}
},
- nextMatch: function() {
- var pages = PDFView.pages;
- var previous = this.state.findPrevious;
- var numPages = PDFView.pages.length;
+ request: function presentationModeRequest() {
+ if (!PDFView.supportsFullscreen || this.isFullscreen ||
+ !this.viewer.hasChildNodes()) {
+ return false;
+ }
+ this._setSwitchInProgress();
+
+ if (this.container.requestFullscreen) {
+ this.container.requestFullscreen();
+ } else if (this.container.mozRequestFullScreen) {
+ this.container.mozRequestFullScreen();
+ } else if (this.container.webkitRequestFullScreen) {
+ this.container.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
+ } else if (this.container.msRequestFullscreen) {
+ this.container.msRequestFullscreen();
+ } else {
+ return false;
+ }
+ this.args = {
+ page: PDFView.page,
+ previousScale: PDFView.currentScaleValue
+ };
+
+ return true;
+ },
+
+ enter: function presentationModeEnter() {
this.active = true;
+ this._resetSwitchInProgress();
+
+ // Ensure that the correct page is scrolled into view when entering
+ // Presentation Mode, by waiting until fullscreen mode in enabled.
+ // Note: This is only necessary in non-Mozilla browsers.
+ setTimeout(function enterPresentationModeTimeout() {
+ PDFView.page = this.args.page;
+ PDFView.setScale('page-fit', true);
+ }.bind(this), 0);
+
+ window.addEventListener('mousemove', this.mouseMove, false);
+ window.addEventListener('mousedown', this.mouseDown, false);
+ window.addEventListener('contextmenu', this.contextMenu, false);
+
+ this.showControls();
+ HandTool.enterPresentationMode();
+ this.contextMenuOpen = false;
+ this.container.setAttribute('contextmenu', 'viewerContextMenu');
+ },
- if (this.dirtyMatch) {
- // Need to recalculate the matches, reset everything.
- this.dirtyMatch = false;
- this.selected.pageIdx = this.selected.matchIdx = -1;
- this.offset.pageIdx = previous ? numPages - 1 : 0;
- this.offset.matchIdx = null;
- this.hadMatch = false;
- this.resumeCallback = null;
- this.resumePageIdx = null;
- this.pageMatches = [];
- var self = this;
+ exit: function presentationModeExit() {
+ var page = PDFView.page;
- for (var i = 0; i < numPages; i++) {
- // Wipe out any previous highlighted matches.
- this.updatePage(i);
+ // Ensure that the correct page is scrolled into view when exiting
+ // Presentation Mode, by waiting until fullscreen mode is disabled.
+ // Note: This is only necessary in non-Mozilla browsers.
+ setTimeout(function exitPresentationModeTimeout() {
+ this.active = false;
+ PDFView.setScale(this.args.previousScale);
+ PDFView.page = page;
+ this.args = null;
+ }.bind(this), 0);
- // As soon as the text is extracted start finding the matches.
- this.extractTextPromises[i].onData(function(pageIdx) {
- // Use a timeout since all the pages may already be extracted and we
- // want to start highlighting before finding all the matches.
- setTimeout(function() {
- self.calcFindMatch(pageIdx);
- });
- });
- }
+ window.removeEventListener('mousemove', this.mouseMove, false);
+ window.removeEventListener('mousedown', this.mouseDown, false);
+ window.removeEventListener('contextmenu', this.contextMenu, false);
+
+ this.hideControls();
+ PDFView.clearMouseScrollState();
+ HandTool.exitPresentationMode();
+ this.container.removeAttribute('contextmenu');
+ this.contextMenuOpen = false;
+
+ // Ensure that the thumbnail of the current page is visible
+ // when exiting presentation mode.
+ scrollIntoView(document.getElementById('thumbnailContainer' + page));
+ },
+
+ showControls: function presentationModeShowControls() {
+ if (this.controlsTimeout) {
+ clearTimeout(this.controlsTimeout);
+ } else {
+ this.container.classList.add(SELECTOR);
}
+ this.controlsTimeout = setTimeout(function hideControlsTimeout() {
+ this.container.classList.remove(SELECTOR);
+ delete this.controlsTimeout;
+ }.bind(this), DELAY_BEFORE_HIDING_CONTROLS);
+ },
- // If there's no query there's no point in searching.
- if (this.state.query === '') {
- this.updateUIState(FindStates.FIND_FOUND);
+ hideControls: function presentationModeHideControls() {
+ if (!this.controlsTimeout) {
return;
}
+ this.container.classList.remove(SELECTOR);
+ clearTimeout(this.controlsTimeout);
+ delete this.controlsTimeout;
+ },
- // If we're waiting on a page, we return since we can't do anything else.
- if (this.resumeCallback) {
+ mouseMove: function presentationModeMouseMove(evt) {
+ // Workaround for a bug in WebKit browsers that causes the 'mousemove' event
+ // to be fired when the cursor is changed. For details, see:
+ // http://code.google.com/p/chromium/issues/detail?id=103041.
+
+ var currCoords = { x: evt.clientX, y: evt.clientY };
+ var prevCoords = PresentationMode.prevCoords;
+ PresentationMode.prevCoords = currCoords;
+
+ if (currCoords.x === prevCoords.x && currCoords.y === prevCoords.y) {
return;
}
+ PresentationMode.showControls();
+ },
- var offset = this.offset;
- // If there's already a matchIdx that means we are iterating through a
- // page's matches.
- if (offset.matchIdx !== null) {
- var numPageMatches = this.pageMatches[offset.pageIdx].length;
- if ((!previous && offset.matchIdx + 1 < numPageMatches) ||
- (previous && offset.matchIdx > 0)) {
- // The simple case, we just have advance the matchIdx to select the next
- // match on the page.
- this.hadMatch = true;
- offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;
- this.updateMatch(true);
+ mouseDown: function presentationModeMouseDown(evt) {
+ var self = PresentationMode;
+ if (self.contextMenuOpen) {
+ self.contextMenuOpen = false;
+ evt.preventDefault();
+ return;
+ }
+
+ if (evt.button === 0) {
+ // Enable clicking of links in presentation mode. Please note:
+ // Only links pointing to destinations in the current PDF document work.
+ var isInternalLink = (evt.target.href &&
+ evt.target.classList.contains('internalLink'));
+ if (!isInternalLink) {
+ // Unless an internal link was clicked, advance one page.
+ evt.preventDefault();
+ PDFView.page += (evt.shiftKey ? -1 : 1);
+ }
+ }
+ },
+
+ contextMenu: function presentationModeContextMenu(evt) {
+ PresentationMode.contextMenuOpen = true;
+ }
+};
+
+(function presentationModeClosure() {
+ function presentationModeChange(e) {
+ if (PresentationMode.isFullscreen) {
+ PresentationMode.enter();
+ } else {
+ PresentationMode.exit();
+ }
+ }
+
+ window.addEventListener('fullscreenchange', presentationModeChange, false);
+ window.addEventListener('mozfullscreenchange', presentationModeChange, false);
+ window.addEventListener('webkitfullscreenchange', presentationModeChange,
+ false);
+ window.addEventListener('MSFullscreenChange', presentationModeChange, false);
+})();
+
+
+/* Copyright 2013 Rob Wu <gwnRob@gmail.com>
+ * https://github.com/Rob--W/grab-to-pan.js
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+var GrabToPan = (function GrabToPanClosure() {
+ /**
+ * Construct a GrabToPan instance for a given HTML element.
+ * @param options.element {Element}
+ * @param options.ignoreTarget {function} optional. See `ignoreTarget(node)`
+ * @param options.onActiveChanged {function(boolean)} optional. Called
+ * when grab-to-pan is (de)activated. The first argument is a boolean that
+ * shows whether grab-to-pan is activated.
+ */
+ function GrabToPan(options) {
+ this.element = options.element;
+ this.document = options.element.ownerDocument;
+ if (typeof options.ignoreTarget === 'function') {
+ this.ignoreTarget = options.ignoreTarget;
+ }
+ this.onActiveChanged = options.onActiveChanged;
+
+ // Bind the contexts to ensure that `this` always points to
+ // the GrabToPan instance.
+ this.activate = this.activate.bind(this);
+ this.deactivate = this.deactivate.bind(this);
+ this.toggle = this.toggle.bind(this);
+ this._onmousedown = this._onmousedown.bind(this);
+ this._onmousemove = this._onmousemove.bind(this);
+ this._endPan = this._endPan.bind(this);
+
+ // This overlay will be inserted in the document when the mouse moves during
+ // a grab operation, to ensure that the cursor has the desired appearance.
+ var overlay = this.overlay = document.createElement('div');
+ overlay.className = 'grab-to-pan-grabbing';
+ }
+ GrabToPan.prototype = {
+ /**
+ * Class name of element which can be grabbed
+ */
+ CSS_CLASS_GRAB: 'grab-to-pan-grab',
+
+ /**
+ * Bind a mousedown event to the element to enable grab-detection.
+ */
+ activate: function GrabToPan_activate() {
+ if (!this.active) {
+ this.active = true;
+ this.element.addEventListener('mousedown', this._onmousedown, true);
+ this.element.classList.add(this.CSS_CLASS_GRAB);
+ if (this.onActiveChanged) {
+ this.onActiveChanged(true);
+ }
+ }
+ },
+
+ /**
+ * Removes all events. Any pending pan session is immediately stopped.
+ */
+ deactivate: function GrabToPan_deactivate() {
+ if (this.active) {
+ this.active = false;
+ this.element.removeEventListener('mousedown', this._onmousedown, true);
+ this._endPan();
+ this.element.classList.remove(this.CSS_CLASS_GRAB);
+ if (this.onActiveChanged) {
+ this.onActiveChanged(false);
+ }
+ }
+ },
+
+ toggle: function GrabToPan_toggle() {
+ if (this.active) {
+ this.deactivate();
+ } else {
+ this.activate();
+ }
+ },
+
+ /**
+ * Whether to not pan if the target element is clicked.
+ * Override this method to change the default behaviour.
+ *
+ * @param node {Element} The target of the event
+ * @return {boolean} Whether to not react to the click event.
+ */
+ ignoreTarget: function GrabToPan_ignoreTarget(node) {
+ // Use matchesSelector to check whether the clicked element
+ // is (a child of) an input element / link
+ return node[matchesSelector](
+ 'a[href], a[href] *, input, textarea, button, button *, select, option'
+ );
+ },
+
+ /**
+ * @private
+ */
+ _onmousedown: function GrabToPan__onmousedown(event) {
+ if (event.button !== 0 || this.ignoreTarget(event.target)) {
return;
}
- // We went beyond the current page's matches, so we advance to the next
- // page.
- this.advanceOffsetPage(previous);
+ if (event.originalTarget) {
+ try {
+ /* jshint expr:true */
+ event.originalTarget.tagName;
+ } catch (e) {
+ // Mozilla-specific: element is a scrollbar (XUL element)
+ return;
+ }
+ }
+
+ this.scrollLeftStart = this.element.scrollLeft;
+ this.scrollTopStart = this.element.scrollTop;
+ this.clientXStart = event.clientX;
+ this.clientYStart = event.clientY;
+ this.document.addEventListener('mousemove', this._onmousemove, true);
+ this.document.addEventListener('mouseup', this._endPan, true);
+ // When a scroll event occurs before a mousemove, assume that the user
+ // dragged a scrollbar (necessary for Opera Presto, Safari and IE)
+ // (not needed for Chrome/Firefox)
+ this.element.addEventListener('scroll', this._endPan, true);
+ event.preventDefault();
+ event.stopPropagation();
+ this.document.documentElement.classList.add(this.CSS_CLASS_GRABBING);
+ },
+
+ /**
+ * @private
+ */
+ _onmousemove: function GrabToPan__onmousemove(event) {
+ this.element.removeEventListener('scroll', this._endPan, true);
+ if (isLeftMouseReleased(event)) {
+ this._endPan();
+ return;
+ }
+ var xDiff = event.clientX - this.clientXStart;
+ var yDiff = event.clientY - this.clientYStart;
+ this.element.scrollTop = this.scrollTopStart - yDiff;
+ this.element.scrollLeft = this.scrollLeftStart - xDiff;
+ if (!this.overlay.parentNode) {
+ document.body.appendChild(this.overlay);
+ }
+ },
+
+ /**
+ * @private
+ */
+ _endPan: function GrabToPan__endPan() {
+ this.element.removeEventListener('scroll', this._endPan, true);
+ this.document.removeEventListener('mousemove', this._onmousemove, true);
+ this.document.removeEventListener('mouseup', this._endPan, true);
+ if (this.overlay.parentNode) {
+ this.overlay.parentNode.removeChild(this.overlay);
+ }
+ }
+ };
+
+ // Get the correct (vendor-prefixed) name of the matches method.
+ var matchesSelector;
+ ['webkitM', 'mozM', 'msM', 'oM', 'm'].some(function(prefix) {
+ var name = prefix + 'atches';
+ if (name in document.documentElement) {
+ matchesSelector = name;
+ }
+ name += 'Selector';
+ if (name in document.documentElement) {
+ matchesSelector = name;
+ }
+ return matchesSelector; // If found, then truthy, and [].some() ends.
+ });
+
+ // Browser sniffing because it's impossible to feature-detect
+ // whether event.which for onmousemove is reliable
+ var isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9;
+ var chrome = window.chrome;
+ var isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app);
+ // ^ Chrome 15+ ^ Opera 15+
+ var isSafari6plus = /Apple/.test(navigator.vendor) &&
+ /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent);
+
+ /**
+ * Whether the left mouse is not pressed.
+ * @param event {MouseEvent}
+ * @return {boolean} True if the left mouse button is not pressed.
+ * False if unsure or if the left mouse button is pressed.
+ */
+ function isLeftMouseReleased(event) {
+ if ('buttons' in event && isNotIEorIsIE10plus) {
+ // http://www.w3.org/TR/DOM-Level-3-Events/#events-MouseEvent-buttons
+ // Firefox 15+
+ // Internet Explorer 10+
+ return !(event.buttons | 1);
+ }
+ if (isChrome15OrOpera15plus || isSafari6plus) {
+ // Chrome 14+
+ // Opera 15+
+ // Safari 6.0+
+ return event.which === 0;
+ }
+ }
+
+ return GrabToPan;
+})();
+
+var HandTool = {
+ initialize: function handToolInitialize(options) {
+ var toggleHandTool = options.toggleHandTool;
+ this.handTool = new GrabToPan({
+ element: options.container,
+ onActiveChanged: function(isActive) {
+ if (!toggleHandTool) {
+ return;
+ }
+ if (isActive) {
+ toggleHandTool.title =
+ mozL10n.get('hand_tool_disable.title', null, 'Disable hand tool');
+ toggleHandTool.firstElementChild.textContent =
+ mozL10n.get('hand_tool_disable_label', null, 'Disable hand tool');
+ } else {
+ toggleHandTool.title =
+ mozL10n.get('hand_tool_enable.title', null, 'Enable hand tool');
+ toggleHandTool.firstElementChild.textContent =
+ mozL10n.get('hand_tool_enable_label', null, 'Enable hand tool');
+ }
+ }
+ });
+ if (toggleHandTool) {
+ toggleHandTool.addEventListener('click', this.toggle.bind(this), false);
+
+ window.addEventListener('localized', function (evt) {
+ Preferences.get('enableHandToolOnLoad').then(function resolved(value) {
+ if (value) {
+ this.handTool.activate();
+ }
+ }.bind(this), function rejected(reason) {});
+ }.bind(this));
}
- // Start searching through the page.
- this.nextPageMatch();
},
- nextPageMatch: function() {
- if (this.resumePageIdx !== null)
- console.error('There can only be one pending page.');
+ toggle: function handToolToggle() {
+ this.handTool.toggle();
+ SecondaryToolbar.close();
+ },
+
+ enterPresentationMode: function handToolEnterPresentationMode() {
+ if (this.handTool.active) {
+ this.wasActive = true;
+ this.handTool.deactivate();
+ }
+ },
+
+ exitPresentationMode: function handToolExitPresentationMode() {
+ if (this.wasActive) {
+ this.wasActive = null;
+ this.handTool.activate();
+ }
+ }
+};
+
+
+var OverlayManager = {
+ overlays: {},
+ active: null,
+
+ /**
+ * @param {string} name The name of the overlay that is registered. This must
+ * be equal to the ID of the overlay's DOM element.
+ * @param {function} callerCloseMethod (optional) The method that, if present,
+ * will call OverlayManager.close from the Object
+ * registering the overlay. Access to this method is
+ * necessary in order to run cleanup code when e.g.
+ * the overlay is force closed. The default is null.
+ * @param {boolean} canForceClose (optional) Indicates if opening the overlay
+ * will close an active overlay. The default is false.
+ * @returns {Promise} A promise that is resolved when the overlay has been
+ * registered.
+ */
+ register: function overlayManagerRegister(name,
+ callerCloseMethod, canForceClose) {
+ return new Promise(function (resolve) {
+ var element, container;
+ if (!name || !(element = document.getElementById(name)) ||
+ !(container = element.parentNode)) {
+ throw new Error('Not enough parameters.');
+ } else if (this.overlays[name]) {
+ throw new Error('The overlay is already registered.');
+ }
+ this.overlays[name] = { element: element,
+ container: container,
+ callerCloseMethod: (callerCloseMethod || null),
+ canForceClose: (canForceClose || false) };
+ resolve();
+ }.bind(this));
+ },
+
+ /**
+ * @param {string} name The name of the overlay that is unregistered.
+ * @returns {Promise} A promise that is resolved when the overlay has been
+ * unregistered.
+ */
+ unregister: function overlayManagerUnregister(name) {
+ return new Promise(function (resolve) {
+ if (!this.overlays[name]) {
+ throw new Error('The overlay does not exist.');
+ } else if (this.active === name) {
+ throw new Error('The overlay cannot be removed while it is active.');
+ }
+ delete this.overlays[name];
+
+ resolve();
+ }.bind(this));
+ },
- var matchesReady = function(matches) {
- var offset = this.offset;
- var numMatches = matches.length;
- var previous = this.state.findPrevious;
- if (numMatches) {
- // There were matches for the page, so initialize the matchIdx.
- this.hadMatch = true;
- offset.matchIdx = previous ? numMatches - 1 : 0;
- this.updateMatch(true);
- } else {
- // No matches attempt to search the next page.
- this.advanceOffsetPage(previous);
- if (offset.wrapped) {
- offset.matchIdx = null;
- if (!this.hadMatch) {
- // No point in wrapping there were no matches.
- this.updateMatch(false);
- return;
- }
+ /**
+ * @param {string} name The name of the overlay that should be opened.
+ * @returns {Promise} A promise that is resolved when the overlay has been
+ * opened.
+ */
+ open: function overlayManagerOpen(name) {
+ return new Promise(function (resolve) {
+ if (!this.overlays[name]) {
+ throw new Error('The overlay does not exist.');
+ } else if (this.active) {
+ if (this.overlays[name].canForceClose) {
+ this._closeThroughCaller();
+ } else if (this.active === name) {
+ throw new Error('The overlay is already active.');
+ } else {
+ throw new Error('Another overlay is currently active.');
}
- // Search the next page.
- this.nextPageMatch();
- }
- }.bind(this);
-
- var pageIdx = this.offset.pageIdx;
- var pageMatches = this.pageMatches;
- if (!pageMatches[pageIdx]) {
- // The matches aren't ready setup a callback so we can be notified,
- // when they are ready.
- this.resumeCallback = function() {
- matchesReady(pageMatches[pageIdx]);
- };
- this.resumePageIdx = pageIdx;
- return;
- }
- // The matches are finished already.
- matchesReady(pageMatches[pageIdx]);
- },
+ }
+ this.active = name;
+ this.overlays[this.active].element.classList.remove('hidden');
+ this.overlays[this.active].container.classList.remove('hidden');
- advanceOffsetPage: function(previous) {
- var offset = this.offset;
- var numPages = this.extractTextPromises.length;
- offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;
- offset.matchIdx = null;
- if (offset.pageIdx >= numPages || offset.pageIdx < 0) {
- offset.pageIdx = previous ? numPages - 1 : 0;
- offset.wrapped = true;
- return;
- }
+ window.addEventListener('keydown', this._keyDown);
+ resolve();
+ }.bind(this));
},
- updateMatch: function(found) {
- var state = FindStates.FIND_NOTFOUND;
- var wrapped = this.offset.wrapped;
- this.offset.wrapped = false;
- if (found) {
- var previousPage = this.selected.pageIdx;
- this.selected.pageIdx = this.offset.pageIdx;
- this.selected.matchIdx = this.offset.matchIdx;
- state = wrapped ? FindStates.FIND_WRAPPED : FindStates.FIND_FOUND;
- // Update the currently selected page to wipe out any selected matches.
- if (previousPage !== -1 && previousPage !== this.selected.pageIdx) {
- this.updatePage(previousPage);
+ /**
+ * @param {string} name The name of the overlay that should be closed.
+ * @returns {Promise} A promise that is resolved when the overlay has been
+ * closed.
+ */
+ close: function overlayManagerClose(name) {
+ return new Promise(function (resolve) {
+ if (!this.overlays[name]) {
+ throw new Error('The overlay does not exist.');
+ } else if (!this.active) {
+ throw new Error('The overlay is currently not active.');
+ } else if (this.active !== name) {
+ throw new Error('Another overlay is currently active.');
}
- }
- this.updateUIState(state, this.state.findPrevious);
- if (this.selected.pageIdx !== -1) {
- this.updatePage(this.selected.pageIdx, true);
+ this.overlays[this.active].container.classList.add('hidden');
+ this.overlays[this.active].element.classList.add('hidden');
+ this.active = null;
+
+ window.removeEventListener('keydown', this._keyDown);
+ resolve();
+ }.bind(this));
+ },
+
+ /**
+ * @private
+ */
+ _keyDown: function overlayManager_keyDown(evt) {
+ var self = OverlayManager;
+ if (self.active && evt.keyCode === 27) { // Esc key.
+ self._closeThroughCaller();
+ evt.preventDefault();
}
},
- updateUIState: function(state, previous) {
- if (PDFView.supportsIntegratedFind) {
- FirefoxCom.request('updateFindControlState',
- {result: state, findPrevious: previous});
- return;
+ /**
+ * @private
+ */
+ _closeThroughCaller: function overlayManager_closeThroughCaller() {
+ if (this.overlays[this.active].callerCloseMethod) {
+ this.overlays[this.active].callerCloseMethod();
+ }
+ if (this.active) {
+ this.close(this.active);
}
- PDFFindBar.updateUIState(state, previous);
}
};
-var PDFFindBar = {
- // TODO: Enable the FindBar *AFTER* the pagesPromise in the load function
- // got resolved
- opened: false,
+var PasswordPrompt = {
+ overlayName: null,
+ updatePassword: null,
+ reason: null,
+ passwordField: null,
+ passwordText: null,
+ passwordSubmit: null,
+ passwordCancel: null,
- initialize: function() {
- this.bar = document.getElementById('findbar');
- this.toggleButton = document.getElementById('viewFind');
- this.findField = document.getElementById('findInput');
- this.highlightAll = document.getElementById('findHighlightAll');
- this.caseSensitive = document.getElementById('findMatchCase');
- this.findMsg = document.getElementById('findMsg');
- this.findStatusIcon = document.getElementById('findStatusIcon');
+ initialize: function secondaryToolbarInitialize(options) {
+ this.overlayName = options.overlayName;
+ this.passwordField = options.passwordField;
+ this.passwordText = options.passwordText;
+ this.passwordSubmit = options.passwordSubmit;
+ this.passwordCancel = options.passwordCancel;
- var self = this;
- this.toggleButton.addEventListener('click', function() {
- self.toggle();
- });
+ // Attach the event listeners.
+ this.passwordSubmit.addEventListener('click',
+ this.verifyPassword.bind(this));
- this.findField.addEventListener('input', function() {
- self.dispatchEvent('');
- });
+ this.passwordCancel.addEventListener('click', this.close.bind(this));
- this.bar.addEventListener('keydown', function(evt) {
- switch (evt.keyCode) {
- case 13: // Enter
- if (evt.target === self.findField) {
- self.dispatchEvent('again', evt.shiftKey);
- }
- break;
- case 27: // Escape
- self.close();
- break;
+ this.passwordField.addEventListener('keydown', function (e) {
+ if (e.keyCode === 13) { // Enter key
+ this.verifyPassword();
}
- });
+ }.bind(this));
- document.getElementById('findPrevious').addEventListener('click',
- function() { self.dispatchEvent('again', true); }
- );
+ OverlayManager.register(this.overlayName, this.close.bind(this), true);
+ },
- document.getElementById('findNext').addEventListener('click', function() {
- self.dispatchEvent('again', false);
- });
+ open: function passwordPromptOpen() {
+ OverlayManager.open(this.overlayName).then(function () {
+ this.passwordField.focus();
- this.highlightAll.addEventListener('click', function() {
- self.dispatchEvent('highlightallchange');
- });
+ var promptString = mozL10n.get('password_label', null,
+ 'Enter the password to open this PDF file.');
- this.caseSensitive.addEventListener('click', function() {
- self.dispatchEvent('casesensitivitychange');
- });
+ if (this.reason === PDFJS.PasswordResponses.INCORRECT_PASSWORD) {
+ promptString = mozL10n.get('password_invalid', null,
+ 'Invalid password. Please try again.');
+ }
+
+ this.passwordText.textContent = promptString;
+ }.bind(this));
},
- dispatchEvent: function(aType, aFindPrevious) {
- var event = document.createEvent('CustomEvent');
- event.initCustomEvent('find' + aType, true, true, {
- query: this.findField.value,
- caseSensitive: this.caseSensitive.checked,
- highlightAll: this.highlightAll.checked,
- findPrevious: aFindPrevious
- });
- return window.dispatchEvent(event);
+ close: function passwordPromptClose() {
+ OverlayManager.close(this.overlayName).then(function () {
+ this.passwordField.value = '';
+ }.bind(this));
},
- updateUIState: function(state, previous) {
- var notFound = false;
- var findMsg = '';
- var status = '';
+ verifyPassword: function passwordPromptVerifyPassword() {
+ var password = this.passwordField.value;
+ if (password && password.length > 0) {
+ this.close();
+ return this.updatePassword(password);
+ }
+ }
+};
- switch (state) {
- case FindStates.FIND_FOUND:
- break;
- case FindStates.FIND_PENDING:
- status = 'pending';
- break;
+var DocumentProperties = {
+ overlayName: null,
+ fileName: '',
+ fileSize: '',
+
+ // Document property fields (in the viewer).
+ fileNameField: null,
+ fileSizeField: null,
+ titleField: null,
+ authorField: null,
+ subjectField: null,
+ keywordsField: null,
+ creationDateField: null,
+ modificationDateField: null,
+ creatorField: null,
+ producerField: null,
+ versionField: null,
+ pageCountField: null,
+
+ initialize: function documentPropertiesInitialize(options) {
+ this.overlayName = options.overlayName;
+
+ // Set the document property fields.
+ this.fileNameField = options.fileNameField;
+ this.fileSizeField = options.fileSizeField;
+ this.titleField = options.titleField;
+ this.authorField = options.authorField;
+ this.subjectField = options.subjectField;
+ this.keywordsField = options.keywordsField;
+ this.creationDateField = options.creationDateField;
+ this.modificationDateField = options.modificationDateField;
+ this.creatorField = options.creatorField;
+ this.producerField = options.producerField;
+ this.versionField = options.versionField;
+ this.pageCountField = options.pageCountField;
+
+ // Bind the event listener for the Close button.
+ if (options.closeButton) {
+ options.closeButton.addEventListener('click', this.close.bind(this));
+ }
- case FindStates.FIND_NOTFOUND:
- findMsg = mozL10n.get('find_not_found', null, 'Phrase not found');
- notFound = true;
- break;
+ this.dataAvailablePromise = new Promise(function (resolve) {
+ this.resolveDataAvailable = resolve;
+ }.bind(this));
- case FindStates.FIND_WRAPPED:
- if (previous) {
- findMsg = mozL10n.get('find_reached_top', null,
- 'Reached top of document, continued from bottom');
- } else {
- findMsg = mozL10n.get('find_reached_bottom', null,
- 'Reached end of document, continued from top');
- }
- break;
- }
+ OverlayManager.register(this.overlayName, this.close.bind(this));
+ },
- if (notFound) {
- this.findField.classList.add('notFound');
- } else {
- this.findField.classList.remove('notFound');
+ getProperties: function documentPropertiesGetProperties() {
+ if (!OverlayManager.active) {
+ // If the dialog was closed before dataAvailablePromise was resolved,
+ // don't bother updating the properties.
+ return;
}
+ // Get the file name.
+ this.fileName = getPDFFileNameFromURL(PDFView.url);
+
+ // Get the file size.
+ PDFView.pdfDocument.getDownloadInfo().then(function(data) {
+ this.setFileSize(data.length);
+ this.updateUI(this.fileSizeField, this.fileSize);
+ }.bind(this));
+
+ // Get the other document properties.
+ PDFView.pdfDocument.getMetadata().then(function(data) {
+ var fields = [
+ { field: this.fileNameField, content: this.fileName },
+ // The fileSize field is updated once getDownloadInfo is resolved.
+ { field: this.titleField, content: data.info.Title },
+ { field: this.authorField, content: data.info.Author },
+ { field: this.subjectField, content: data.info.Subject },
+ { field: this.keywordsField, content: data.info.Keywords },
+ { field: this.creationDateField,
+ content: this.parseDate(data.info.CreationDate) },
+ { field: this.modificationDateField,
+ content: this.parseDate(data.info.ModDate) },
+ { field: this.creatorField, content: data.info.Creator },
+ { field: this.producerField, content: data.info.Producer },
+ { field: this.versionField, content: data.info.PDFFormatVersion },
+ { field: this.pageCountField, content: PDFView.pdfDocument.numPages }
+ ];
- this.findField.setAttribute('data-status', status);
- this.findMsg.textContent = findMsg;
+ // Show the properties in the dialog.
+ for (var item in fields) {
+ var element = fields[item];
+ this.updateUI(element.field, element.content);
+ }
+ }.bind(this));
},
- open: function() {
- if (this.opened) return;
-
- this.opened = true;
- this.toggleButton.classList.add('toggled');
- this.bar.classList.remove('hidden');
- this.findField.select();
- this.findField.focus();
+ updateUI: function documentPropertiesUpdateUI(field, content) {
+ if (field && content !== undefined && content !== '') {
+ field.textContent = content;
+ }
},
- close: function() {
- if (!this.opened) return;
+ setFileSize: function documentPropertiesSetFileSize(fileSize) {
+ var kb = fileSize / 1024;
+ if (kb < 1024) {
+ this.fileSize = mozL10n.get('document_properties_kb', {
+ size_kb: (+kb.toPrecision(3)).toLocaleString(),
+ size_b: fileSize.toLocaleString()
+ }, '{{size_kb}} KB ({{size_b}} bytes)');
+ } else {
+ this.fileSize = mozL10n.get('document_properties_mb', {
+ size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(),
+ size_b: fileSize.toLocaleString()
+ }, '{{size_mb}} MB ({{size_b}} bytes)');
+ }
+ },
- this.opened = false;
- this.toggleButton.classList.remove('toggled');
- this.bar.classList.add('hidden');
+ open: function documentPropertiesOpen() {
+ Promise.all([OverlayManager.open(this.overlayName),
+ this.dataAvailablePromise]).then(function () {
+ this.getProperties();
+ }.bind(this));
+ },
- PDFFindController.active = false;
+ close: function documentPropertiesClose() {
+ OverlayManager.close(this.overlayName);
},
- toggle: function() {
- if (this.opened) {
- this.close();
- } else {
- this.open();
+ parseDate: function documentPropertiesParseDate(inputDate) {
+ // This is implemented according to the PDF specification (see
+ // http://www.gnupdf.org/Date for an overview), but note that
+ // Adobe Reader doesn't handle changing the date to universal time
+ // and doesn't use the user's time zone (they're effectively ignoring
+ // the HH' and mm' parts of the date string).
+ var dateToParse = inputDate;
+ if (dateToParse === undefined) {
+ return '';
+ }
+
+ // Remove the D: prefix if it is available.
+ if (dateToParse.substring(0,2) === 'D:') {
+ dateToParse = dateToParse.substring(2);
+ }
+
+ // Get all elements from the PDF date string.
+ // JavaScript's Date object expects the month to be between
+ // 0 and 11 instead of 1 and 12, so we're correcting for this.
+ var year = parseInt(dateToParse.substring(0,4), 10);
+ var month = parseInt(dateToParse.substring(4,6), 10) - 1;
+ var day = parseInt(dateToParse.substring(6,8), 10);
+ var hours = parseInt(dateToParse.substring(8,10), 10);
+ var minutes = parseInt(dateToParse.substring(10,12), 10);
+ var seconds = parseInt(dateToParse.substring(12,14), 10);
+ var utRel = dateToParse.substring(14,15);
+ var offsetHours = parseInt(dateToParse.substring(15,17), 10);
+ var offsetMinutes = parseInt(dateToParse.substring(18,20), 10);
+
+ // As per spec, utRel = 'Z' means equal to universal time.
+ // The other cases ('-' and '+') have to be handled here.
+ if (utRel == '-') {
+ hours += offsetHours;
+ minutes += offsetMinutes;
+ } else if (utRel == '+') {
+ hours -= offsetHours;
+ minutes += offsetMinutes;
}
+
+ // Return the new date format from the user's locale.
+ var date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));
+ var dateString = date.toLocaleDateString();
+ var timeString = date.toLocaleTimeString();
+ return mozL10n.get('document_properties_date_string',
+ {date: dateString, time: timeString},
+ '{{date}}, {{time}}');
}
};
+
var PDFView = {
pages: [],
thumbnails: [],
currentScale: UNKNOWN_SCALE,
currentScaleValue: null,
initialBookmark: document.location.hash.substring(1),
- startedTextExtraction: false,
- pageText: [],
container: null,
thumbnailContainer: null,
initialized: false,
fellback: false,
pdfDocument: null,
sidebarOpen: false,
pageViewScroll: null,
thumbnailViewScroll: null,
- isPresentationMode: false,
- previousScale: null,
pageRotation: 0,
mouseScrollTimeStamp: 0,
mouseScrollDelta: 0,
lastScroll: 0,
previousPageNumber: 1,
+ isViewerEmbedded: (window.parent !== window),
+ idleTimeout: null,
+ currentPosition: null,
// called once when the document is loaded
initialize: function pdfViewInitialize() {
var self = this;
var container = this.container = document.getElementById('viewerContainer');
this.pageViewScroll = {};
this.watchScroll(container, this.pageViewScroll, updateViewarea);
var thumbnailContainer = this.thumbnailContainer =
document.getElementById('thumbnailView');
this.thumbnailViewScroll = {};
this.watchScroll(thumbnailContainer, this.thumbnailViewScroll,
this.renderHighestPriority.bind(this));
- PDFFindBar.initialize();
- PDFFindController.initialize();
+ Preferences.initialize();
+
+ PDFFindBar.initialize({
+ bar: document.getElementById('findbar'),
+ toggleButton: document.getElementById('viewFind'),
+ findField: document.getElementById('findInput'),
+ highlightAllCheckbox: document.getElementById('findHighlightAll'),
+ caseSensitiveCheckbox: document.getElementById('findMatchCase'),
+ findMsg: document.getElementById('findMsg'),
+ findStatusIcon: document.getElementById('findStatusIcon'),
+ findPreviousButton: document.getElementById('findPrevious'),
+ findNextButton: document.getElementById('findNext')
+ });
+
+ PDFFindController.initialize({
+ pdfPageSource: this,
+ integratedFind: this.supportsIntegratedFind
+ });
+
+ HandTool.initialize({
+ container: container,
+ toggleHandTool: document.getElementById('toggleHandTool')
+ });
+
+ SecondaryToolbar.initialize({
+ toolbar: document.getElementById('secondaryToolbar'),
+ presentationMode: PresentationMode,
+ toggleButton: document.getElementById('secondaryToolbarToggle'),
+ presentationModeButton:
+ document.getElementById('secondaryPresentationMode'),
+ openFile: document.getElementById('secondaryOpenFile'),
+ print: document.getElementById('secondaryPrint'),
+ download: document.getElementById('secondaryDownload'),
+ viewBookmark: document.getElementById('secondaryViewBookmark'),
+ firstPage: document.getElementById('firstPage'),
+ lastPage: document.getElementById('lastPage'),
+ pageRotateCw: document.getElementById('pageRotateCw'),
+ pageRotateCcw: document.getElementById('pageRotateCcw'),
+ documentProperties: DocumentProperties,
+ documentPropertiesButton: document.getElementById('documentProperties')
+ });
+
+ PresentationMode.initialize({
+ container: container,
+ secondaryToolbar: SecondaryToolbar,
+ firstPage: document.getElementById('contextFirstPage'),
+ lastPage: document.getElementById('contextLastPage'),
+ pageRotateCw: document.getElementById('contextPageRotateCw'),
+ pageRotateCcw: document.getElementById('contextPageRotateCcw')
+ });
+
+ PasswordPrompt.initialize({
+ overlayName: 'passwordOverlay',
+ passwordField: document.getElementById('password'),
+ passwordText: document.getElementById('passwordText'),
+ passwordSubmit: document.getElementById('passwordSubmit'),
+ passwordCancel: document.getElementById('passwordCancel')
+ });
+
+ DocumentProperties.initialize({
+ overlayName: 'documentPropertiesOverlay',
+ closeButton: document.getElementById('documentPropertiesClose'),
+ fileNameField: document.getElementById('fileNameField'),
+ fileSizeField: document.getElementById('fileSizeField'),
+ titleField: document.getElementById('titleField'),
+ authorField: document.getElementById('authorField'),
+ subjectField: document.getElementById('subjectField'),
+ keywordsField: document.getElementById('keywordsField'),
+ creationDateField: document.getElementById('creationDateField'),
+ modificationDateField: document.getElementById('modificationDateField'),
+ creatorField: document.getElementById('creatorField'),
+ producerField: document.getElementById('producerField'),
+ versionField: document.getElementById('versionField'),
+ pageCountField: document.getElementById('pageCountField')
+ });
- this.initialized = true;
container.addEventListener('scroll', function() {
self.lastScroll = Date.now();
}, false);
+
+ var initializedPromise = Promise.all([
+ Preferences.get('enableWebGL').then(function resolved(value) {
+ PDFJS.disableWebGL = !value;
+ }, function rejected(reason) {}),
+ Preferences.get('sidebarViewOnLoad').then(function resolved(value) {
+ self.preferenceSidebarViewOnLoad = value;
+ }, function rejected(reason) {})
+ // TODO move more preferences and other async stuff here
+ ]);
+
+ return initializedPromise.then(function () {
+ PDFView.initialized = true;
+ });
},
getPage: function pdfViewGetPage(n) {
return this.pdfDocument.getPage(n);
},
// Helper function to keep track whether a div was scrolled up or down and
// then call a callback.
watchScroll: function pdfViewWatchScroll(viewAreaElement, state, callback) {
state.down = true;
state.lastY = viewAreaElement.scrollTop;
viewAreaElement.addEventListener('scroll', function webViewerScroll(evt) {
+ if (!PDFView.pdfDocument) {
+ return;
+ }
var currentY = viewAreaElement.scrollTop;
var lastY = state.lastY;
- if (currentY > lastY)
+ if (currentY > lastY) {
state.down = true;
- else if (currentY < lastY)
+ } else if (currentY < lastY) {
state.down = false;
+ }
// else do nothing and use previous value
state.lastY = currentY;
callback();
}, true);
},
- setScale: function pdfViewSetScale(val, resetAutoSettings, noScroll) {
- if (val == this.currentScale)
+ _setScaleUpdatePages: function pdfView_setScaleUpdatePages(
+ newScale, newValue, resetAutoSettings, noScroll) {
+ this.currentScaleValue = newValue;
+ if (newScale === this.currentScale) {
return;
-
- var pages = this.pages;
- for (var i = 0; i < pages.length; i++)
- pages[i].update(val * CSS_UNITS);
-
- if (!noScroll && this.currentScale != val)
- this.pages[this.page - 1].scrollIntoView();
- this.currentScale = val;
-
+ }
+ for (var i = 0, ii = this.pages.length; i < ii; i++) {
+ this.pages[i].update(newScale);
+ }
+ this.currentScale = newScale;
+
+ if (!noScroll) {
+ var page = this.page, dest;
+ if (this.currentPosition && !IGNORE_CURRENT_POSITION_ON_ZOOM) {
+ page = this.currentPosition.page;
+ dest = [null, { name: 'XYZ' }, this.currentPosition.left,
+ this.currentPosition.top, null];
+ }
+ this.pages[page - 1].scrollIntoView(dest);
+ }
var event = document.createEvent('UIEvents');
event.initUIEvent('scalechange', false, false, window, 0);
- event.scale = val;
+ event.scale = newScale;
event.resetAutoSettings = resetAutoSettings;
window.dispatchEvent(event);
},
- parseScale: function pdfViewParseScale(value, resetAutoSettings, noScroll) {
- if ('custom' == value)
- return;
-
- var scale = parseFloat(value);
- this.currentScaleValue = value;
- if (scale) {
- this.setScale(scale, true, noScroll);
+ setScale: function pdfViewSetScale(value, resetAutoSettings, noScroll) {
+ if (value === 'custom') {
return;
}
+ var scale = parseFloat(value);
- var container = this.container;
- var currentPage = this.pages[this.page - 1];
- if (!currentPage) {
- return;
- }
+ if (scale > 0) {
+ this._setScaleUpdatePages(scale, value, true, noScroll);
+ } else {
+ var currentPage = this.pages[this.page - 1];
+ if (!currentPage) {
+ return;
+ }
+ var hPadding = PresentationMode.active ? 0 : SCROLLBAR_PADDING;
+ var vPadding = PresentationMode.active ? 0 : VERTICAL_PADDING;
+ var pageWidthScale = (this.container.clientWidth - hPadding) /
+ currentPage.width * currentPage.scale;
+ var pageHeightScale = (this.container.clientHeight - vPadding) /
+ currentPage.height * currentPage.scale;
+ switch (value) {
+ case 'page-actual':
+ scale = 1;
+ break;
+ case 'page-width':
+ scale = pageWidthScale;
+ break;
+ case 'page-height':
+ scale = pageHeightScale;
+ break;
+ case 'page-fit':
+ scale = Math.min(pageWidthScale, pageHeightScale);
+ break;
+ case 'auto':
+ scale = Math.min(MAX_AUTO_SCALE, pageWidthScale);
+ break;
+ default:
+ console.error('pdfViewSetScale: \'' + value +
+ '\' is an unknown zoom value.');
+ return;
+ }
+ this._setScaleUpdatePages(scale, value, resetAutoSettings, noScroll);
- var pageWidthScale = (container.clientWidth - SCROLLBAR_PADDING) /
- currentPage.width * currentPage.scale / CSS_UNITS;
- var pageHeightScale = (container.clientHeight - VERTICAL_PADDING) /
- currentPage.height * currentPage.scale / CSS_UNITS;
- switch (value) {
- case 'page-actual':
- scale = 1;
- break;
- case 'page-width':
- scale = pageWidthScale;
- break;
- case 'page-height':
- scale = pageHeightScale;
- break;
- case 'page-fit':
- scale = Math.min(pageWidthScale, pageHeightScale);
- break;
- case 'auto':
- scale = Math.min(1.0, pageWidthScale);
- break;
+ selectScaleOption(value);
}
- this.setScale(scale, resetAutoSettings, noScroll);
-
- selectScaleOption(value);
},
- zoomIn: function pdfViewZoomIn() {
- var newScale = (this.currentScale * DEFAULT_SCALE_DELTA).toFixed(2);
- newScale = Math.ceil(newScale * 10) / 10;
- newScale = Math.min(MAX_SCALE, newScale);
- this.parseScale(newScale, true);
+ zoomIn: function pdfViewZoomIn(ticks) {
+ var newScale = this.currentScale;
+ do {
+ newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);
+ newScale = Math.ceil(newScale * 10) / 10;
+ newScale = Math.min(MAX_SCALE, newScale);
+ } while (--ticks && newScale < MAX_SCALE);
+ this.setScale(newScale, true);
},
- zoomOut: function pdfViewZoomOut() {
- var newScale = (this.currentScale / DEFAULT_SCALE_DELTA).toFixed(2);
- newScale = Math.floor(newScale * 10) / 10;
- newScale = Math.max(MIN_SCALE, newScale);
- this.parseScale(newScale, true);
+ zoomOut: function pdfViewZoomOut(ticks) {
+ var newScale = this.currentScale;
+ do {
+ newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);
+ newScale = Math.floor(newScale * 10) / 10;
+ newScale = Math.max(MIN_SCALE, newScale);
+ } while (--ticks && newScale > MIN_SCALE);
+ this.setScale(newScale, true);
},
set page(val) {
var pages = this.pages;
- var input = document.getElementById('pageNumber');
var event = document.createEvent('UIEvents');
event.initUIEvent('pagechange', false, false, window, 0);
if (!(0 < val && val <= pages.length)) {
this.previousPageNumber = val;
event.pageNumber = this.page;
window.dispatchEvent(event);
return;
}
pages[val - 1].updateStats();
this.previousPageNumber = currentPageNumber;
currentPageNumber = val;
event.pageNumber = val;
window.dispatchEvent(event);
// checking if the this.page was called from the updateViewarea function:
// avoiding the creation of two "set page" method (internal and public)
- if (updateViewarea.inProgress)
+ if (updateViewarea.inProgress) {
return;
-
+ }
// Avoid scrolling the first page during loading
- if (this.loading && val == 1)
+ if (this.loading && val === 1) {
return;
-
+ }
pages[val - 1].scrollIntoView();
},
get page() {
return currentPageNumber;
},
get supportsPrinting() {
var canvas = document.createElement('canvas');
var value = 'mozPrintCallback' in canvas;
// shadow
Object.defineProperty(this, 'supportsPrinting', { value: value,
enumerable: true,
configurable: true,
writable: false });
return value;
},
get supportsFullscreen() {
var doc = document.documentElement;
var support = doc.requestFullscreen || doc.mozRequestFullScreen ||
- doc.webkitRequestFullScreen;
+ doc.webkitRequestFullScreen || doc.msRequestFullscreen;
- // Disable presentation mode button if we're in an iframe
- if (window.parent !== window) {
+ if (document.fullscreenEnabled === false ||
+ document.mozFullScreenEnabled === false ||
+ document.webkitFullscreenEnabled === false ||
+ document.msFullscreenEnabled === false) {
support = false;
}
Object.defineProperty(this, 'supportsFullscreen', { value: support,
enumerable: true,
configurable: true,
writable: false });
return support;
},
get supportsIntegratedFind() {
var support = false;
-//#if !(FIREFOX || MOZCENTRAL)
-//#else
-// support = FirefoxCom.requestSync('supportsIntegratedFind');
-//#endif
Object.defineProperty(this, 'supportsIntegratedFind', { value: support,
enumerable: true,
configurable: true,
writable: false });
return support;
},
get supportsDocumentFonts() {
var support = true;
-//#if !(FIREFOX || MOZCENTRAL)
-//#else
-// support = FirefoxCom.requestSync('supportsDocumentFonts');
-//#endif
Object.defineProperty(this, 'supportsDocumentFonts', { value: support,
enumerable: true,
configurable: true,
writable: false });
return support;
},
get supportsDocumentColors() {
var support = true;
-//#if !(FIREFOX || MOZCENTRAL)
-//#else
-// support = FirefoxCom.requestSync('supportsDocumentColors');
-//#endif
Object.defineProperty(this, 'supportsDocumentColors', { value: support,
enumerable: true,
configurable: true,
writable: false });
return support;
},
- get isHorizontalScrollbarEnabled() {
- var div = document.getElementById('viewerContainer');
- return div.scrollWidth > div.clientWidth;
+ get loadingBar() {
+ var bar = new ProgressBar('#loadingBar', {});
+ Object.defineProperty(this, 'loadingBar', { value: bar,
+ enumerable: true,
+ configurable: true,
+ writable: false });
+ return bar;
},
- initPassiveLoading: function pdfViewInitPassiveLoading() {
- if (!PDFView.loadingBar) {
- PDFView.loadingBar = new ProgressBar('#loadingBar', {});
- }
+ get isHorizontalScrollbarEnabled() {
+ return (PresentationMode.active ? false :
+ (this.container.scrollWidth > this.container.clientWidth));
+ },
- var pdfDataRangeTransport = {
- listeners: [],
- addListener: function PdfDataRangeTransport_addListener(listener) {
- this.listeners.push(listener);
- },
+ setTitleUsingUrl: function pdfViewSetTitleUsingUrl(url) {
+ this.url = url;
+ try {
+ this.setTitle(decodeURIComponent(getFileName(url)) || url);
+ } catch (e) {
+ // decodeURIComponent may throw URIError,
+ // fall back to using the unprocessed url in that case
+ this.setTitle(url);
+ }
+ },
- onDataRange: function PdfDataRangeTransport_onDataRange(begin, chunk) {
- for (var i = 0, n = this.listeners.length; i < n; ++i) {
- this.listeners[i](begin, chunk);
- }
- },
+ setTitle: function pdfViewSetTitle(title) {
+ document.title = title;
+ },
- requestDataRange: function PdfDataRangeTransport_requestDataRange(
- begin, end) {
- FirefoxCom.request('requestDataRange', { begin: begin, end: end });
- }
- };
+ close: function pdfViewClose() {
+ var errorWrapper = document.getElementById('errorWrapper');
+ errorWrapper.setAttribute('hidden', 'true');
- window.addEventListener('message', function windowMessage(e) {
- var args = e.data;
+ if (!this.pdfDocument) {
+ return;
+ }
- if (typeof args !== 'object' || !('pdfjsLoadAction' in args))
- return;
- switch (args.pdfjsLoadAction) {
- case 'supportsRangedLoading':
- PDFView.open(args.pdfUrl, 0, undefined, pdfDataRangeTransport, {
- length: args.length
- });
- break;
- case 'range':
- pdfDataRangeTransport.onDataRange(args.begin, args.chunk);
- break;
- case 'progress':
- PDFView.progress(args.loaded / args.total);
- break;
- case 'complete':
- if (!args.data) {
- PDFView.error(mozL10n.get('loading_error', null,
- 'An error occurred while loading the PDF.'), e);
- break;
- }
- PDFView.open(args.data, 0);
- break;
- }
- });
- FirefoxCom.requestSync('initPassiveLoading', null);
- },
+ this.pdfDocument.destroy();
+ this.pdfDocument = null;
- setTitleUsingUrl: function pdfViewSetTitleUsingUrl(url) {
- this.url = url;
- try {
- this.setTitle(decodeURIComponent(getFileName(url)) || url);
- } catch (e) {
- // decodeURIComponent may throw URIError,
- // fall back to using the unprocessed url in that case
- this.setTitle(url);
+ var thumbsView = document.getElementById('thumbnailView');
+ while (thumbsView.hasChildNodes()) {
+ thumbsView.removeChild(thumbsView.lastChild);
}
- },
- setTitle: function pdfViewSetTitle(title) {
- document.title = title;
-//#if B2G
-// document.getElementById('activityTitle').textContent = title;
-//#endif
+ if ('_loadingInterval' in thumbsView) {
+ clearInterval(thumbsView._loadingInterval);
+ }
+
+ var container = document.getElementById('viewer');
+ while (container.hasChildNodes()) {
+ container.removeChild(container.lastChild);
+ }
+
+ if (typeof PDFBug !== 'undefined') {
+ PDFBug.cleanup();
+ }
},
// TODO(mack): This function signature should really be pdfViewOpen(url, args)
open: function pdfViewOpen(url, scale, password,
pdfDataRangeTransport, args) {
+ if (this.pdfDocument) {
+ // Reload the preferences if a document was previously opened.
+ Preferences.reload();
+ }
+ this.close();
+
var parameters = {password: password};
if (typeof url === 'string') { // URL
this.setTitleUsingUrl(url);
parameters.url = url;
} else if (url && 'byteLength' in url) { // ArrayBuffer
parameters.data = url;
}
if (args) {
for (var prop in args) {
parameters[prop] = args[prop];
}
}
- if (!PDFView.loadingBar) {
- PDFView.loadingBar = new ProgressBar('#loadingBar', {});
- }
-
- this.pdfDocument = null;
var self = this;
self.loading = true;
- PDFJS.getDocument(parameters, pdfDataRangeTransport).then(
+ self.downloadComplete = false;
+
+ var passwordNeeded = function passwordNeeded(updatePassword, reason) {
+ PasswordPrompt.updatePassword = updatePassword;
+ PasswordPrompt.reason = reason;
+ PasswordPrompt.open();
+ };
+
+ function getDocumentProgress(progressData) {
+ self.progress(progressData.loaded / progressData.total);
+ }
+
+ PDFJS.getDocument(parameters, pdfDataRangeTransport, passwordNeeded,
+ getDocumentProgress).then(
function getDocumentCallback(pdfDocument) {
self.load(pdfDocument, scale);
self.loading = false;
},
function getDocumentError(message, exception) {
- if (exception && exception.name === 'PasswordException') {
- if (exception.code === 'needpassword') {
- var promptString = mozL10n.get('request_password', null,
- 'PDF is protected by a password:');
- password = prompt(promptString);
- if (password && password.length > 0) {
- return PDFView.open(url, scale, password);
- }
- }
- }
-
var loadingErrorMessage = mozL10n.get('loading_error', null,
'An error occurred while loading the PDF.');
if (exception && exception.name === 'InvalidPDFException') {
// change error message also for other builds
- var loadingErrorMessage = mozL10n.get('invalid_file_error', null,
+ loadingErrorMessage = mozL10n.get('invalid_file_error', null,
'Invalid or corrupted PDF file.');
-//#if B2G
-// window.alert(loadingErrorMessage);
-// return window.close();
-//#endif
}
if (exception && exception.name === 'MissingPDFException') {
// special message for missing PDF's
- var loadingErrorMessage = mozL10n.get('missing_file_error', null,
+ loadingErrorMessage = mozL10n.get('missing_file_error', null,
'Missing PDF file.');
-//#if B2G
-// window.alert(loadingErrorMessage);
-// return window.close();
-//#endif
}
var moreInfo = {
message: message
};
self.error(loadingErrorMessage, moreInfo);
self.loading = false;
- },
- function getDocumentProgress(progressData) {
- self.progress(progressData.loaded / progressData.total);
}
);
},
download: function pdfViewDownload() {
- function noData() {
- FirefoxCom.request('download', { originalUrl: url });
+ function downloadByUrl() {
+ downloadManager.downloadUrl(url, filename);
}
+
var url = this.url.split('#')[0];
-//#if !(FIREFOX || MOZCENTRAL)
+ var filename = getPDFFileNameFromURL(url);
+ var downloadManager = new DownloadManager();
+ downloadManager.onerror = function (err) {
+ // This error won't really be helpful because it's likely the
+ // fallback won't work either (or is already open).
+ PDFView.error('PDF failed to download.');
+ };
- var a = document.createElement('a');
+ if (!this.pdfDocument) { // the PDF is not ready yet
+ downloadByUrl();
+ return;
+ }
- // If _parent == self, then opening an identical URL with different
- // location hash will only cause a navigation, not a download.
- if (window.top === window && !('download' in a) &&
- url === window.location.href.split('#')[0]) {
- url += url.indexOf('?') === -1 ? '?' : '&';
+ if (!this.downloadComplete) { // the PDF is still downloading
+ downloadByUrl();
+ return;
}
- url += '#pdfjs.action=download';
- if (a.click) {
- // Use a.click() if available. Otherwise, Chrome might show
- // "Unsafe JavaScript attempt to initiate a navigation change
- // for frame with URL" and not open the PDF at all.
- // Supported by (not mentioned = untested):
- // - Firefox 6 - 19 (4- does not support a.click, 5 ignores a.click)
- // - Chrome 19 - 26 (18- does not support a.click)
- // - Opera 9 - 12.15
- // - Internet Explorer 6 - 10
- // - Safari 6 (5.1- does not support a.click)
- a.href = url;
- a.target = '_parent';
- // Use a.download if available. This increases the likelihood that
- // the file is downloaded instead of opened by another PDF plugin.
- if ('download' in a) {
- var filename = url.match(/([^\/?#=]+\.pdf)/i);
- a.download = filename ? filename[1] : 'file.pdf';
- }
- // <a> must be in the document for IE and recent Firefox versions.
- // (otherwise .click() is ignored)
- (document.body || document.documentElement).appendChild(a);
- a.click();
- a.parentNode.removeChild(a);
- } else {
- window.open(url, '_parent');
- }
-//#else
-// // Document isn't ready just try to download with the url.
-// if (!this.pdfDocument) {
-// noData();
-// return;
-// }
-// this.pdfDocument.getData().then(
-// function getDataSuccess(data) {
-// var blob = PDFJS.createBlob(data.buffer, 'application/pdf');
-// var blobUrl = window.URL.createObjectURL(blob);
-//
-// FirefoxCom.request('download', { blobUrl: blobUrl, originalUrl: url },
-// function response(err) {
-// if (err) {
-// // This error won't really be helpful because it's likely the
-// // fallback won't work either (or is already open).
-// PDFView.error('PDF failed to download.');
-// }
-// window.URL.revokeObjectURL(blobUrl);
-// }
-// );
-// },
-// noData // Error occurred try downloading with just the url.
-// );
-//#endif
- },
-
- fallback: function pdfViewFallback() {
-//#if !(FIREFOX || MOZCENTRAL)
-// return;
-//#else
-// // Only trigger the fallback once so we don't spam the user with messages
-// // for one PDF.
-// if (this.fellback)
-// return;
-// this.fellback = true;
-// var url = this.url.split('#')[0];
-// FirefoxCom.request('fallback', url, function response(download) {
-// if (!download)
-// return;
-// PDFView.download();
-// });
-//#endif
+ this.pdfDocument.getData().then(
+ function getDataSuccess(data) {
+ var blob = PDFJS.createBlob(data, 'application/pdf');
+ downloadManager.download(blob, url, filename);
+ },
+ downloadByUrl // Error occurred try downloading with just the url.
+ ).then(null, downloadByUrl);
+ },
+
+ fallback: function pdfViewFallback(featureId) {
+ return;
},
navigateTo: function pdfViewNavigateTo(dest) {
+ var destString = '';
var self = this;
- PDFJS.Promise.all([this.pagesPromise,
- this.destinationsPromise]).then(function() {
- if (typeof dest === 'string') {
- dest = self.destinations[dest];
- }
- if (!(dest instanceof Array)) {
- return; // invalid destination
- }
+
+ var goToDestination = function(destRef) {
+ self.pendingRefStr = null;
// dest array looks like that: <page-ref> </XYZ|FitXXX> <args..>
- var destRef = dest[0];
var pageNumber = destRef instanceof Object ?
self.pagesRefMap[destRef.num + ' ' + destRef.gen + ' R'] :
(destRef + 1);
if (pageNumber) {
if (pageNumber > self.pages.length) {
pageNumber = self.pages.length;
}
- self.page = pageNumber;
- if (!self.isPresentationMode) { // Avoid breaking presentation mode.
- var currentPage = self.pages[pageNumber - 1];
- currentPage.scrollIntoView(dest);
- }
+ var currentPage = self.pages[pageNumber - 1];
+ currentPage.scrollIntoView(dest);
+
+ // Update the browsing history.
+ PDFHistory.push({ dest: dest, hash: destString, page: pageNumber });
+ } else {
+ self.pdfDocument.getPageIndex(destRef).then(function (pageIndex) {
+ var pageNum = pageIndex + 1;
+ self.pagesRefMap[destRef.num + ' ' + destRef.gen + ' R'] = pageNum;
+ goToDestination(destRef);
+ });
+ }
+ };
+
+ this.destinationsPromise.then(function() {
+ if (typeof dest === 'string') {
+ destString = dest;
+ dest = self.destinations[dest];
+ }
+ if (!(dest instanceof Array)) {
+ return; // invalid destination
}
+ goToDestination(dest[0]);
});
},
getDestinationHash: function pdfViewGetDestinationHash(dest) {
- if (typeof dest === 'string')
+ if (typeof dest === 'string') {
return PDFView.getAnchorUrl('#' + escape(dest));
+ }
if (dest instanceof Array) {
var destRef = dest[0]; // see navigateTo method for dest format
var pageNumber = destRef instanceof Object ?
this.pagesRefMap[destRef.num + ' ' + destRef.gen + ' R'] :
(destRef + 1);
if (pageNumber) {
var pdfOpenParams = PDFView.getAnchorUrl('#page=' + pageNumber);
var destKind = dest[1];
if (typeof destKind === 'object' && 'name' in destKind &&
destKind.name == 'XYZ') {
- var scale = (dest[4] || this.currentScale);
- pdfOpenParams += '&zoom=' + (scale * 100);
+ var scale = (dest[4] || this.currentScaleValue);
+ var scaleNumber = parseFloat(scale);
+ if (scaleNumber) {
+ scale = scaleNumber * 100;
+ }
+ pdfOpenParams += '&zoom=' + scale;
if (dest[2] || dest[3]) {
pdfOpenParams += ',' + (dest[2] || 0) + ',' + (dest[3] || 0);
}
}
return pdfOpenParams;
}
}
return '';
},
/**
- * For the firefox extension we prefix the full url on anchor links so they
- * don't come up as resource:// urls and so open in new tab/window works.
- * @param {String} anchor The anchor hash include the #.
+ * Prefix the full url on anchor links to make sure that links are resolved
+ * relative to the current URL instead of the one defined in <base href>.
+ * @param {String} anchor The anchor hash, including the #.
*/
getAnchorUrl: function getAnchorUrl(anchor) {
-//#if !(FIREFOX || MOZCENTRAL)
return anchor;
-//#else
-// return this.url.split('#')[0] + anchor;
-//#endif
- },
-
- /**
- * Returns scale factor for the canvas. It makes sense for the HiDPI displays.
- * @return {Object} The object with horizontal (sx) and vertical (sy)
- scales. The scaled property is set to false if scaling is
- not required, true otherwise.
- */
- getOutputScale: function pdfViewGetOutputDPI() {
- var pixelRatio = 'devicePixelRatio' in window ? window.devicePixelRatio : 1;
- return {
- sx: pixelRatio,
- sy: pixelRatio,
- scaled: pixelRatio != 1
- };
},
/**
* Show the error box.
* @param {String} message A message that is human readable.
* @param {Object} moreInfo (optional) Further information about the error
* that is more technical. Should have a 'message'
* and optionally a 'stack' property.
*/
error: function pdfViewError(message, moreInfo) {
var moreInfoText = mozL10n.get('error_version_info',
{version: PDFJS.version || '?', build: PDFJS.build || '?'},
'PDF.js v{{version}} (build: {{build}})') + '\n';
if (moreInfo) {
moreInfoText +=
mozL10n.get('error_message', {message: moreInfo.message},
'Message: {{message}}');
if (moreInfo.stack) {
moreInfoText += '\n' +
mozL10n.get('error_stack', {stack: moreInfo.stack},
'Stack: {{stack}}');
} else {
if (moreInfo.filename) {
moreInfoText += '\n' +
mozL10n.get('error_file', {file: moreInfo.filename},
'File: {{file}}');
}
if (moreInfo.lineNumber) {
moreInfoText += '\n' +
mozL10n.get('error_line', {line: moreInfo.lineNumber},
'Line: {{line}}');
}
}
}
-//#if !(FIREFOX || MOZCENTRAL)
var errorWrapper = document.getElementById('errorWrapper');
errorWrapper.removeAttribute('hidden');
var errorMessage = document.getElementById('errorMessage');
errorMessage.textContent = message;
var closeButton = document.getElementById('errorClose');
closeButton.onclick = function() {
errorWrapper.setAttribute('hidden', 'true');
};
var errorMoreInfo = document.getElementById('errorMoreInfo');
var moreInfoButton = document.getElementById('errorShowMore');
var lessInfoButton = document.getElementById('errorShowLess');
moreInfoButton.onclick = function() {
errorMoreInfo.removeAttribute('hidden');
moreInfoButton.setAttribute('hidden', 'true');
lessInfoButton.removeAttribute('hidden');
+ errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px';
};
lessInfoButton.onclick = function() {
errorMoreInfo.setAttribute('hidden', 'true');
moreInfoButton.removeAttribute('hidden');
lessInfoButton.setAttribute('hidden', 'true');
};
+ moreInfoButton.oncontextmenu = noContextMenuHandler;
+ lessInfoButton.oncontextmenu = noContextMenuHandler;
+ closeButton.oncontextmenu = noContextMenuHandler;
moreInfoButton.removeAttribute('hidden');
lessInfoButton.setAttribute('hidden', 'true');
errorMoreInfo.value = moreInfoText;
-
- errorMoreInfo.rows = moreInfoText.split('\n').length - 1;
-//#else
-// console.error(message + '\n' + moreInfoText);
-// this.fallback();
-//#endif
},
progress: function pdfViewProgress(level) {
var percent = Math.round(level * 100);
- PDFView.loadingBar.percent = percent;
+ // When we transition from full request to range requests, it's possible
+ // that we discard some of the loaded data. This can cause the loading
+ // bar to move backwards. So prevent this by only updating the bar if it
+ // increases.
+ if (percent > PDFView.loadingBar.percent || isNaN(percent)) {
+ PDFView.loadingBar.percent = percent;
+ }
},
load: function pdfViewLoad(pdfDocument, scale) {
+ var self = this;
+ var isOnePageRenderedResolved = false;
+ var resolveOnePageRendered = null;
+ var onePageRendered = new Promise(function (resolve) {
+ resolveOnePageRendered = resolve;
+ });
function bindOnAfterDraw(pageView, thumbnailView) {
// when page is painted, using the image as thumbnail base
pageView.onAfterDraw = function pdfViewLoadOnAfterDraw() {
+ if (!isOnePageRenderedResolved) {
+ isOnePageRenderedResolved = true;
+ resolveOnePageRendered();
+ }
thumbnailView.setImage(pageView.canvas);
};
}
+ PDFFindController.reset();
+
this.pdfDocument = pdfDocument;
- var errorWrapper = document.getElementById('errorWrapper');
- errorWrapper.setAttribute('hidden', 'true');
+ DocumentProperties.resolveDataAvailable();
- pdfDocument.dataLoaded().then(function() {
- var loadingBar = document.getElementById('loadingBar');
- loadingBar.classList.add('hidden');
+ var downloadedPromise = pdfDocument.getDownloadInfo().then(function() {
+ self.downloadComplete = true;
+ PDFView.loadingBar.hide();
var outerContainer = document.getElementById('outerContainer');
outerContainer.classList.remove('loadingInProgress');
});
- var thumbsView = document.getElementById('thumbnailView');
- thumbsView.parentNode.scrollTop = 0;
-
- while (thumbsView.hasChildNodes())
- thumbsView.removeChild(thumbsView.lastChild);
-
- if ('_loadingInterval' in thumbsView)
- clearInterval(thumbsView._loadingInterval);
-
- var container = document.getElementById('viewer');
- while (container.hasChildNodes())
- container.removeChild(container.lastChild);
-
var pagesCount = pdfDocument.numPages;
+
var id = pdfDocument.fingerprint;
document.getElementById('numPages').textContent =
mozL10n.get('page_of', {pageCount: pagesCount}, 'of {{pageCount}}');
document.getElementById('pageNumber').max = pagesCount;
PDFView.documentFingerprint = id;
- var store = PDFView.store = new Settings(id);
+ var store = PDFView.store = new ViewHistory(id);
this.pageRotation = 0;
var pages = this.pages = [];
- this.pageText = [];
- this.startedTextExtraction = false;
var pagesRefMap = this.pagesRefMap = {};
var thumbnails = this.thumbnails = [];
- var pagesPromise = this.pagesPromise = new PDFJS.Promise();
- var self = this;
+ var resolvePagesPromise;
+ var pagesPromise = new Promise(function (resolve) {
+ resolvePagesPromise = resolve;
+ });
+ this.pagesPromise = pagesPromise;
var firstPagePromise = pdfDocument.getPage(1);
+ var container = document.getElementById('viewer');
+ var thumbsView = document.getElementById('thumbnailView');
// Fetch a single page so we can get a viewport that will be the default
// viewport for all pages
firstPagePromise.then(function(pdfPage) {
- var viewport = pdfPage.getViewport(scale || 1.0);
- var pagePromises = [];
+ var viewport = pdfPage.getViewport((scale || 1.0) * CSS_UNITS);
for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
var viewportClone = viewport.clone();
var pageView = new PageView(container, pageNum, scale,
self.navigateTo.bind(self),
viewportClone);
var thumbnailView = new ThumbnailView(thumbsView, pageNum,
viewportClone);
bindOnAfterDraw(pageView, thumbnailView);
pages.push(pageView);
thumbnails.push(thumbnailView);
}
- var event = document.createEvent('CustomEvent');
- event.initCustomEvent('documentload', true, true, {});
- window.dispatchEvent(event);
-
- for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
- var pagePromise = pdfDocument.getPage(pageNum);
- pagePromise.then(function(pdfPage) {
- var pageNum = pdfPage.pageNumber;
- var pageView = pages[pageNum - 1];
- if (!pageView.pdfPage) {
- // The pdfPage might already be set if we've already entered
- // pageView.draw()
- pageView.setPdfPage(pdfPage);
+ // Fetch all the pages since the viewport is needed before printing
+ // starts to create the correct size canvas. Wait until one page is
+ // rendered so we don't tie up too many resources early on.
+ onePageRendered.then(function () {
+ if (!PDFJS.disableAutoFetch) {
+ var getPagesLeft = pagesCount;
+ for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
+ pdfDocument.getPage(pageNum).then(function (pageNum, pdfPage) {
+ var pageView = pages[pageNum - 1];
+ if (!pageView.pdfPage) {
+ pageView.setPdfPage(pdfPage);
+ }
+ var refStr = pdfPage.ref.num + ' ' + pdfPage.ref.gen + ' R';
+ pagesRefMap[refStr] = pageNum;
+ getPagesLeft--;
+ if (!getPagesLeft) {
+ resolvePagesPromise();
+ }
+ }.bind(null, pageNum));
}
- var thumbnailView = thumbnails[pageNum - 1];
- if (!thumbnailView.pdfPage) {
- thumbnailView.setPdfPage(pdfPage);
- }
-
- var pageRef = pdfPage.ref;
- var refStr = pageRef.num + ' ' + pageRef.gen + ' R';
- pagesRefMap[refStr] = pdfPage.pageNumber;
- });
- pagePromises.push(pagePromise);
- }
+ } else {
+ // XXX: Printing is semi-broken with auto fetch disabled.
+ resolvePagesPromise();
+ }
+ });
- PDFJS.Promise.all(pagePromises).then(function(pages) {
- pagesPromise.resolve(pages);
+ downloadedPromise.then(function () {
+ var event = document.createEvent('CustomEvent');
+ event.initCustomEvent('documentload', true, true, {});
+ window.dispatchEvent(event);
});
+
+ PDFView.loadingBar.setWidth(container);
+
+ PDFFindController.resolveFirstPage();
+
+ // Initialize the browsing history.
+ PDFHistory.initialize(self.documentFingerprint);
});
+ // Fetch the necessary preference values.
+ var showPreviousViewOnLoad;
+ var showPreviousViewOnLoadPromise =
+ Preferences.get('showPreviousViewOnLoad').then(function (prefValue) {
+ showPreviousViewOnLoad = prefValue;
+ });
+ var defaultZoomValue;
+ var defaultZoomValuePromise =
+ Preferences.get('defaultZoomValue').then(function (prefValue) {
+ defaultZoomValue = prefValue;
+ });
+
var storePromise = store.initializedPromise;
- PDFJS.Promise.all([firstPagePromise, storePromise]).then(function() {
+ Promise.all([firstPagePromise, storePromise, showPreviousViewOnLoadPromise,
+ defaultZoomValuePromise]).then(function resolved() {
var storedHash = null;
- if (store.get('exists', false)) {
+ if (showPreviousViewOnLoad && store.get('exists', false)) {
var pageNum = store.get('page', '1');
- var zoom = store.get('zoom', PDFView.currentScale);
+ var zoom = defaultZoomValue || store.get('zoom', PDFView.currentScale);
var left = store.get('scrollLeft', '0');
var top = store.get('scrollTop', '0');
storedHash = 'page=' + pageNum + '&zoom=' + zoom + ',' +
- left + ',' + top;
+ left + ',' + top;
+ } else if (defaultZoomValue) {
+ storedHash = 'page=1&zoom=' + defaultZoomValue;
}
self.setInitialView(storedHash, scale);
// Make all navigation keys work on document load,
- // unless the viewer is embedded in another page.
- if (window.parent === window) {
- PDFView.container.focus();
- PDFView.container.blur();
+ // unless the viewer is embedded in a web page.
+ if (!self.isViewerEmbedded) {
+ self.container.focus();
}
+ }, function rejected(reason) {
+ console.error(reason);
+
+ firstPagePromise.then(function () {
+ self.setInitialView(null, scale);
+ });
});
pagesPromise.then(function() {
if (PDFView.supportsPrinting) {
pdfDocument.getJavaScript().then(function(javaScript) {
if (javaScript.length) {
console.warn('Warning: JavaScript is not supported');
- PDFView.fallback();
+ PDFView.fallback(PDFJS.UNSUPPORTED_FEATURES.javaScript);
}
// Hack to support auto printing.
var regex = /\bprint\s*\(/g;
for (var i = 0, ii = javaScript.length; i < ii; i++) {
var js = javaScript[i];
if (js && regex.test(js)) {
setTimeout(function() {
window.print();
});
return;
}
}
});
}
});
var destinationsPromise =
this.destinationsPromise = pdfDocument.getDestinations();
destinationsPromise.then(function(destinations) {
self.destinations = destinations;
});
// outline depends on destinations and pagesRefMap
var promises = [pagesPromise, destinationsPromise,
PDFView.animationStartedPromise];
- PDFJS.Promise.all(promises).then(function() {
+ Promise.all(promises).then(function() {
pdfDocument.getOutline().then(function(outline) {
self.outline = new DocumentOutlineView(outline);
document.getElementById('viewOutline').disabled = !outline;
+
+ if (outline &&
+ self.preferenceSidebarViewOnLoad === SidebarView.OUTLINE) {
+ self.switchSidebarView('outline', true);
+ }
+ });
+ pdfDocument.getAttachments().then(function(attachments) {
+ self.attachments = new DocumentAttachmentsView(attachments);
+ document.getElementById('viewAttachments').disabled = !attachments;
+
+ if (attachments &&
+ self.preferenceSidebarViewOnLoad === SidebarView.ATTACHMENTS) {
+ self.switchSidebarView('attachments', true);
+ }
});
});
+ if (self.preferenceSidebarViewOnLoad === SidebarView.THUMBS) {
+ Promise.all([firstPagePromise, onePageRendered]).then(function () {
+ self.switchSidebarView('thumbs', true);
+ });
+ }
+
pdfDocument.getMetadata().then(function(data) {
var info = data.info, metadata = data.metadata;
self.documentInfo = info;
self.metadata = metadata;
// Provides some basic debug information
console.log('PDF ' + pdfDocument.fingerprint + ' [' +
- info.PDFFormatVersion + ' ' + (info.Producer || '-') +
- ' / ' + (info.Creator || '-') + ']' +
- (PDFJS.version ? ' (PDF.js: ' + PDFJS.version + ')' : ''));
+ info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() +
+ ' / ' + (info.Creator || '-').trim() + ']' +
+ ' (PDF.js: ' + (PDFJS.version || '-') +
+ (!PDFJS.disableWebGL ? ' [WebGL]' : '') + ')');
var pdfTitle;
- if (metadata) {
- if (metadata.has('dc:title'))
- pdfTitle = metadata.get('dc:title');
+ if (metadata && metadata.has('dc:title')) {
+ pdfTitle = metadata.get('dc:title');
}
- if (!pdfTitle && info && info['Title'])
+ if (!pdfTitle && info && info['Title']) {
pdfTitle = info['Title'];
+ }
- if (pdfTitle)
+ if (pdfTitle) {
self.setTitle(pdfTitle + ' - ' + document.title);
+ }
if (info.IsAcroFormPresent) {
console.warn('Warning: AcroForm/XFA is not supported');
- PDFView.fallback();
+ PDFView.fallback(PDFJS.UNSUPPORTED_FEATURES.forms);
}
+
});
},
setInitialView: function pdfViewSetInitialView(storedHash, scale) {
// Reset the current scale, as otherwise the page's scale might not get
// updated if the zoom level stayed the same.
this.currentScale = 0;
this.currentScaleValue = null;
- if (this.initialBookmark) {
+ // When opening a new file (when one is already loaded in the viewer):
+ // Reset 'currentPageNumber', since otherwise the page's scale will be wrong
+ // if 'currentPageNumber' is larger than the number of pages in the file.
+ document.getElementById('pageNumber').value = currentPageNumber = 1;
+ // Reset the current position when loading a new file,
+ // to prevent displaying the wrong position in the document.
+ this.currentPosition = null;
+
+ if (PDFHistory.initialDestination) {
+ this.navigateTo(PDFHistory.initialDestination);
+ PDFHistory.initialDestination = null;
+ } else if (this.initialBookmark) {
this.setHash(this.initialBookmark);
+ PDFHistory.push({ hash: this.initialBookmark }, !!this.initialBookmark);
this.initialBookmark = null;
- }
- else if (storedHash)
+ } else if (storedHash) {
this.setHash(storedHash);
- else if (scale) {
- this.parseScale(scale, true);
+ } else if (scale) {
+ this.setScale(scale, true);
this.page = 1;
}
if (PDFView.currentScale === UNKNOWN_SCALE) {
// Scale was not initialized: invalid bookmark or scale was not specified.
// Setting the default one.
- this.parseScale(DEFAULT_SCALE, true);
+ this.setScale(DEFAULT_SCALE, true);
}
},
- renderHighestPriority: function pdfViewRenderHighestPriority() {
+ renderHighestPriority:
+ function pdfViewRenderHighestPriority(currentlyVisiblePages) {
+ if (PDFView.idleTimeout) {
+ clearTimeout(PDFView.idleTimeout);
+ PDFView.idleTimeout = null;
+ }
+
// Pages have a higher priority than thumbnails, so check them first.
- var visiblePages = this.getVisiblePages();
+ var visiblePages = currentlyVisiblePages || this.getVisiblePages();
var pageView = this.getHighestPriority(visiblePages, this.pages,
this.pageViewScroll.down);
if (pageView) {
this.renderView(pageView, 'page');
return;
}
// No pages needed rendering so check thumbnails.
if (this.sidebarOpen) {
var visibleThumbs = this.getVisibleThumbs();
var thumbView = this.getHighestPriority(visibleThumbs,
this.thumbnails,
this.thumbnailViewScroll.down);
- if (thumbView)
+ if (thumbView) {
this.renderView(thumbView, 'thumbnail');
+ return;
+ }
}
+
+ PDFView.idleTimeout = setTimeout(function () {
+ PDFView.cleanup();
+ }, CLEANUP_TIMEOUT);
+ },
+
+ cleanup: function pdfViewCleanup() {
+ for (var i = 0, ii = this.pages.length; i < ii; i++) {
+ if (this.pages[i] &&
+ this.pages[i].renderingState !== RenderingStates.FINISHED) {
+ this.pages[i].reset();
+ }
+ }
+ this.pdfDocument.cleanup();
},
getHighestPriority: function pdfViewGetHighestPriority(visible, views,
scrolledDown) {
// The state has changed figure out which page has the highest priority to
// render next (if any).
// Priority:
// 1 visible pages
// 2 if last scrolled down page after the visible pages
// 2 if last scrolled up page before the visible pages
var visibleViews = visible.views;
var numVisible = visibleViews.length;
if (numVisible === 0) {
return false;
}
for (var i = 0; i < numVisible; ++i) {
var view = visibleViews[i].view;
- if (!this.isViewFinished(view))
+ if (!this.isViewFinished(view)) {
return view;
+ }
}
// All the visible views have rendered, try to render next/previous pages.
if (scrolledDown) {
var nextPageIndex = visible.last.id;
// ID's start at 1 so no need to add 1.
- if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex]))
+ if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) {
return views[nextPageIndex];
+ }
} else {
var previousPageIndex = visible.first.id - 2;
if (views[previousPageIndex] &&
- !this.isViewFinished(views[previousPageIndex]))
+ !this.isViewFinished(views[previousPageIndex])) {
return views[previousPageIndex];
+ }
}
// Everything that needs to be rendered has been.
return false;
},
- isViewFinished: function pdfViewNeedsRendering(view) {
+ isViewFinished: function pdfViewIsViewFinished(view) {
return view.renderingState === RenderingStates.FINISHED;
},
// Render a page or thumbnail view. This calls the appropriate function based
// on the views state. If the view is already rendered it will return false.
renderView: function pdfViewRender(view, type) {
var state = view.renderingState;
switch (state) {
case RenderingStates.FINISHED:
return false;
case RenderingStates.PAUSED:
PDFView.highestPriorityPage = type + view.id;
view.resume();
break;
case RenderingStates.RUNNING:
PDFView.highestPriorityPage = type + view.id;
break;
case RenderingStates.INITIAL:
PDFView.highestPriorityPage = type + view.id;
view.draw(this.renderHighestPriority.bind(this));
break;
}
return true;
},
setHash: function pdfViewSetHash(hash) {
- if (!hash)
+ if (!hash) {
return;
+ }
if (hash.indexOf('=') >= 0) {
var params = PDFView.parseQueryString(hash);
// borrowing syntax from "Parameters for Opening PDF Files"
if ('nameddest' in params) {
+ PDFHistory.updateNextHashParam(params.nameddest);
PDFView.navigateTo(params.nameddest);
return;
}
+ var pageNumber, dest;
if ('page' in params) {
- var pageNumber = (params.page | 0) || 1;
- if ('zoom' in params) {
- var zoomArgs = params.zoom.split(','); // scale,left,top
- // building destination array
-
- // If the zoom value, it has to get divided by 100. If it is a string,
- // it should stay as it is.
- var zoomArg = zoomArgs[0];
- var zoomArgNumber = parseFloat(zoomArg);
- if (zoomArgNumber)
- zoomArg = zoomArgNumber / 100;
-
- var dest = [null, {name: 'XYZ'},
- zoomArgs.length > 1 ? (zoomArgs[1] | 0) : null,
- zoomArgs.length > 2 ? (zoomArgs[2] | 0) : null,
- zoomArg];
- var currentPage = this.pages[pageNumber - 1];
- currentPage.scrollIntoView(dest);
- } else {
- this.page = pageNumber; // simple page
+ pageNumber = (params.page | 0) || 1;
+ }
+ if ('zoom' in params) {
+ var zoomArgs = params.zoom.split(','); // scale,left,top
+ // building destination array
+
+ // If the zoom value, it has to get divided by 100. If it is a string,
+ // it should stay as it is.
+ var zoomArg = zoomArgs[0];
+ var zoomArgNumber = parseFloat(zoomArg);
+ if (zoomArgNumber) {
+ zoomArg = zoomArgNumber / 100;
}
+ dest = [null, {name: 'XYZ'},
+ zoomArgs.length > 1 ? (zoomArgs[1] | 0) : null,
+ zoomArgs.length > 2 ? (zoomArgs[2] | 0) : null,
+ zoomArg];
+ }
+ if (dest) {
+ var currentPage = this.pages[(pageNumber || this.page) - 1];
+ currentPage.scrollIntoView(dest);
+ } else if (pageNumber) {
+ this.page = pageNumber; // simple page
}
if ('pagemode' in params) {
- var toggle = document.getElementById('sidebarToggle');
- if (params.pagemode === 'thumbs' || params.pagemode === 'bookmarks') {
- if (!this.sidebarOpen) {
- toggle.click();
- }
- this.switchSidebarView(params.pagemode === 'thumbs' ?
- 'thumbs' : 'outline');
+ if (params.pagemode === 'thumbs' || params.pagemode === 'bookmarks' ||
+ params.pagemode === 'attachments') {
+ this.switchSidebarView((params.pagemode === 'bookmarks' ?
+ 'outline' : params.pagemode), true);
} else if (params.pagemode === 'none' && this.sidebarOpen) {
- toggle.click();
+ document.getElementById('sidebarToggle').click();
}
}
- } else if (/^\d+$/.test(hash)) // page number
+ } else if (/^\d+$/.test(hash)) { // page number
this.page = hash;
- else // named destination
+ } else { // named destination
+ PDFHistory.updateNextHashParam(unescape(hash));
PDFView.navigateTo(unescape(hash));
+ }
},
- switchSidebarView: function pdfViewSwitchSidebarView(view) {
+ switchSidebarView: function pdfViewSwitchSidebarView(view, openSidebar) {
+ if (openSidebar && !this.sidebarOpen) {
+ document.getElementById('sidebarToggle').click();
+ }
var thumbsView = document.getElementById('thumbnailView');
var outlineView = document.getElementById('outlineView');
+ var attachmentsView = document.getElementById('attachmentsView');
var thumbsButton = document.getElementById('viewThumbnail');
var outlineButton = document.getElementById('viewOutline');
+ var attachmentsButton = document.getElementById('viewAttachments');
switch (view) {
case 'thumbs':
- var wasOutlineViewVisible = thumbsView.classList.contains('hidden');
+ var wasAnotherViewVisible = thumbsView.classList.contains('hidden');
thumbsButton.classList.add('toggled');
outlineButton.classList.remove('toggled');
+ attachmentsButton.classList.remove('toggled');
thumbsView.classList.remove('hidden');
outlineView.classList.add('hidden');
+ attachmentsView.classList.add('hidden');
PDFView.renderHighestPriority();
- if (wasOutlineViewVisible) {
+ if (wasAnotherViewVisible) {
// Ensure that the thumbnail of the current page is visible
- // when switching from the outline view.
+ // when switching from another view.
scrollIntoView(document.getElementById('thumbnailContainer' +
this.page));
}
break;
case 'outline':
thumbsButton.classList.remove('toggled');
outlineButton.classList.add('toggled');
+ attachmentsButton.classList.remove('toggled');
thumbsView.classList.add('hidden');
outlineView.classList.remove('hidden');
+ attachmentsView.classList.add('hidden');
+
+ if (outlineButton.getAttribute('disabled')) {
+ return;
+ }
+ break;
+
+ case 'attachments':
+ thumbsButton.classList.remove('toggled');
+ outlineButton.classList.remove('toggled');
+ attachmentsButton.classList.add('toggled');
+ thumbsView.classList.add('hidden');
+ outlineView.classList.add('hidden');
+ attachmentsView.classList.remove('hidden');
- if (outlineButton.getAttribute('disabled'))
+ if (attachmentsButton.getAttribute('disabled')) {
return;
+ }
break;
}
},
getVisiblePages: function pdfViewGetVisiblePages() {
- if (!this.isPresentationMode) {
+ if (!PresentationMode.active) {
return this.getVisibleElements(this.container, this.pages, true);
} else {
- // The algorithm in getVisibleElements is broken in presentation mode.
- var visible = [], page = this.page;
- var currentPage = this.pages[page - 1];
+ // The algorithm in getVisibleElements doesn't work in all browsers and
+ // configurations when presentation mode is active.
+ var visible = [];
+ var currentPage = this.pages[this.page - 1];
visible.push({ id: currentPage.id, view: currentPage });
-
- return { first: currentPage, last: currentPage, views: visible};
+ return { first: currentPage, last: currentPage, views: visible };
}
},
getVisibleThumbs: function pdfViewGetVisibleThumbs() {
return this.getVisibleElements(this.thumbnailContainer, this.thumbnails);
},
// Generic helper to find out what elements are visible within a scroll pane.
getVisibleElements: function pdfViewGetVisibleElements(
scrollEl, views, sortByVisibility) {
var top = scrollEl.scrollTop, bottom = top + scrollEl.clientHeight;
var left = scrollEl.scrollLeft, right = left + scrollEl.clientWidth;
var visible = [], view;
var currentHeight, viewHeight, hiddenHeight, percentHeight;
var currentWidth, viewWidth;
for (var i = 0, ii = views.length; i < ii; ++i) {
view = views[i];
currentHeight = view.el.offsetTop + view.el.clientTop;
viewHeight = view.el.clientHeight;
if ((currentHeight + viewHeight) < top) {
continue;
}
if (currentHeight > bottom) {
break;
}
currentWidth = view.el.offsetLeft + view.el.clientLeft;
viewWidth = view.el.clientWidth;
if ((currentWidth + viewWidth) < left || currentWidth > right) {
continue;
}
hiddenHeight = Math.max(0, top - currentHeight) +
Math.max(0, currentHeight + viewHeight - bottom);
percentHeight = ((viewHeight - hiddenHeight) * 100 / viewHeight) | 0;
- visible.push({ id: view.id, y: currentHeight,
+ visible.push({ id: view.id, x: currentWidth, y: currentHeight,
view: view, percent: percentHeight });
}
var first = visible[0];
var last = visible[visible.length - 1];
if (sortByVisibility) {
visible.sort(function(a, b) {
var pc = a.percent - b.percent;
if (Math.abs(pc) > 0.001) {
return -pc;
}
return a.id - b.id; // ensure stability
});
}
return {first: first, last: last, views: visible};
},
// Helper function to parse query string (e.g. ?param1=value&parm2=...).
parseQueryString: function pdfViewParseQueryString(query) {
var parts = query.split('&');
var params = {};
- for (var i = 0, ii = parts.length; i < parts.length; ++i) {
+ for (var i = 0, ii = parts.length; i < ii; ++i) {
var param = parts[i].split('=');
var key = param[0];
var value = param.length > 1 ? param[1] : null;
params[decodeURIComponent(key)] = decodeURIComponent(value);
}
return params;
},
beforePrint: function pdfViewSetupBeforePrint() {
if (!this.supportsPrinting) {
var printMessage = mozL10n.get('printing_not_supported', null,
'Warning: Printing is not fully supported by this browser.');
this.error(printMessage);
return;
}
var alertNotReady = false;
+ var i, ii;
if (!this.pages.length) {
alertNotReady = true;
} else {
- for (var i = 0, ii = this.pages.length; i < ii; ++i) {
+ for (i = 0, ii = this.pages.length; i < ii; ++i) {
if (!this.pages[i].pdfPage) {
alertNotReady = true;
break;
}
}
}
if (alertNotReady) {
var notReadyMessage = mozL10n.get('printing_not_ready', null,
'Warning: The PDF is not fully loaded for printing.');
window.alert(notReadyMessage);
return;
}
var body = document.querySelector('body');
body.setAttribute('data-mozPrintCallback', true);
- for (var i = 0, ii = this.pages.length; i < ii; ++i) {
+ for (i = 0, ii = this.pages.length; i < ii; ++i) {
this.pages[i].beforePrint();
}
},
afterPrint: function pdfViewSetupAfterPrint() {
var div = document.getElementById('printContainer');
- while (div.hasChildNodes())
+ while (div.hasChildNodes()) {
div.removeChild(div.lastChild);
- },
-
- presentationMode: function pdfViewPresentationMode() {
- var isPresentationMode = document.fullscreenElement ||
- document.mozFullScreen ||
- document.webkitIsFullScreen;
-
- if (isPresentationMode) {
- return false;
- }
-
- var wrapper = document.getElementById('viewerContainer');
- if (document.documentElement.requestFullscreen) {
- wrapper.requestFullscreen();
- } else if (document.documentElement.mozRequestFullScreen) {
- wrapper.mozRequestFullScreen();
- } else if (document.documentElement.webkitRequestFullScreen) {
- wrapper.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
- } else {
- return false;
- }
-
- this.isPresentationMode = true;
- var currentPage = this.pages[this.page - 1];
- this.previousScale = this.currentScaleValue;
- this.parseScale('page-fit', true);
-
- // Wait for presentation mode to take effect
- setTimeout(function() {
- currentPage.scrollIntoView();
- }, 0);
-
- this.showPresentationControls();
- return true;
- },
-
- exitPresentationMode: function pdfViewExitPresentationMode() {
- this.isPresentationMode = false;
- this.parseScale(this.previousScale);
- this.page = this.page;
- this.clearMouseScrollState();
- this.hidePresentationControls();
-
- // Ensure that the thumbnail of the current page is visible
- // when exiting presentation mode.
- scrollIntoView(document.getElementById('thumbnailContainer' + this.page));
- },
-
- showPresentationControls: function pdfViewShowPresentationControls() {
- var DELAY_BEFORE_HIDING_CONTROLS = 3000;
- var wrapper = document.getElementById('viewerContainer');
- if (this.presentationControlsTimeout) {
- clearTimeout(this.presentationControlsTimeout);
- } else {
- wrapper.classList.add('presentationControls');
- }
- this.presentationControlsTimeout = setTimeout(function hideControls() {
- wrapper.classList.remove('presentationControls');
- delete PDFView.presentationControlsTimeout;
- }, DELAY_BEFORE_HIDING_CONTROLS);
- },
-
- hidePresentationControls: function pdfViewShowPresentationControls() {
- if (!this.presentationControlsTimeout) {
- return;
}
- clearTimeout(this.presentationControlsTimeout);
- delete this.presentationControlsTimeout;
-
- var wrapper = document.getElementById('viewerContainer');
- wrapper.classList.remove('presentationControls');
},
- rotatePages: function pdfViewPageRotation(delta) {
-
+ rotatePages: function pdfViewRotatePages(delta) {
+ var currentPage = this.pages[this.page - 1];
+ var i, l;
this.pageRotation = (this.pageRotation + 360 + delta) % 360;
- for (var i = 0, l = this.pages.length; i < l; i++) {
+ for (i = 0, l = this.pages.length; i < l; i++) {
var page = this.pages[i];
page.update(page.scale, this.pageRotation);
}
- for (var i = 0, l = this.thumbnails.length; i < l; i++) {
+ for (i = 0, l = this.thumbnails.length; i < l; i++) {
var thumb = this.thumbnails[i];
thumb.update(this.pageRotation);
}
- this.parseScale(this.currentScaleValue, true);
+ this.setScale(this.currentScaleValue, true, true);
this.renderHighestPriority();
- var currentPage = this.pages[this.page - 1];
- if (!currentPage) {
- return;
- }
-
- // Wait for presentation mode to take effect
- setTimeout(function() {
+ if (currentPage) {
currentPage.scrollIntoView();
- }, 0);
+ }
},
/**
* This function flips the page in presentation mode if the user scrolls up
* or down with large enough motion and prevents page flipping too often.
*
* @this {PDFView}
* @param {number} mouseScrollDelta The delta value from the mouse event.
*/
mouseScroll: function pdfViewMouseScroll(mouseScrollDelta) {
var MOUSE_SCROLL_COOLDOWN_TIME = 50;
var currentTime = (new Date()).getTime();
var storedTime = this.mouseScrollTimeStamp;
// In case one page has already been flipped there is a cooldown time
// which has to expire before next page can be scrolled on to.
if (currentTime > storedTime &&
- currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME)
+ currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) {
return;
+ }
// In case the user decides to scroll to the opposite direction than before
// clear the accumulated delta.
if ((this.mouseScrollDelta > 0 && mouseScrollDelta < 0) ||
- (this.mouseScrollDelta < 0 && mouseScrollDelta > 0))
+ (this.mouseScrollDelta < 0 && mouseScrollDelta > 0)) {
this.clearMouseScrollState();
+ }
this.mouseScrollDelta += mouseScrollDelta;
var PAGE_FLIP_THRESHOLD = 120;
if (Math.abs(this.mouseScrollDelta) >= PAGE_FLIP_THRESHOLD) {
var PageFlipDirection = {
UP: -1,
DOWN: 1
};
// In presentation mode scroll one page at a time.
var pageFlipDirection = (this.mouseScrollDelta > 0) ?
PageFlipDirection.UP :
PageFlipDirection.DOWN;
this.clearMouseScrollState();
var currentPage = this.page;
// In case we are already on the first or the last page there is no need
// to do anything.
if ((currentPage == 1 && pageFlipDirection == PageFlipDirection.UP) ||
(currentPage == this.pages.length &&
- pageFlipDirection == PageFlipDirection.DOWN))
+ pageFlipDirection == PageFlipDirection.DOWN)) {
return;
+ }
this.page += pageFlipDirection;
this.mouseScrollTimeStamp = currentTime;
}
},
/**
* This function clears the member attributes used with mouse scrolling in
* presentation mode.
*
* @this {PDFView}
*/
clearMouseScrollState: function pdfViewClearMouseScrollState() {
this.mouseScrollTimeStamp = 0;
this.mouseScrollDelta = 0;
}
};
+
var PageView = function pageView(container, id, scale,
navigateTo, defaultViewport) {
this.id = id;
this.rotation = 0;
this.scale = scale || 1.0;
this.viewport = defaultViewport;
- this.pdfPageRotate = defaultViewport.rotate;
+ this.pdfPageRotate = defaultViewport.rotation;
this.renderingState = RenderingStates.INITIAL;
this.resume = null;
- this.textContent = null;
this.textLayer = null;
+ this.zoomLayer = null;
+
+ this.annotationLayer = null;
+
var anchor = document.createElement('a');
anchor.name = '' + this.id;
var div = this.el = document.createElement('div');
div.id = 'pageContainer' + this.id;
div.className = 'page';
div.style.width = Math.floor(this.viewport.width) + 'px';
div.style.height = Math.floor(this.viewport.height) + 'px';
container.appendChild(anchor);
container.appendChild(div);
this.setPdfPage = function pageViewSetPdfPage(pdfPage) {
this.pdfPage = pdfPage;
this.pdfPageRotate = pdfPage.rotate;
- this.viewport = pdfPage.getViewport(this.scale);
+ var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
+ this.viewport = pdfPage.getViewport(this.scale * CSS_UNITS, totalRotation);
this.stats = pdfPage.stats;
- this.update();
+ this.reset();
};
this.destroy = function pageViewDestroy() {
- this.update();
+ this.zoomLayer = null;
+ this.reset();
if (this.pdfPage) {
this.pdfPage.destroy();
}
};
- this.update = function pageViewUpdate(scale, rotation) {
- this.renderingState = RenderingStates.INITIAL;
+ this.reset = function pageViewReset(keepAnnotations) {
+ if (this.renderTask) {
+ this.renderTask.cancel();
+ }
this.resume = null;
+ this.renderingState = RenderingStates.INITIAL;
- if (typeof rotation !== 'undefined') {
- this.rotation = rotation;
+ div.style.width = Math.floor(this.viewport.width) + 'px';
+ div.style.height = Math.floor(this.viewport.height) + 'px';
+
+ var childNodes = div.childNodes;
+ for (var i = div.childNodes.length - 1; i >= 0; i--) {
+ var node = childNodes[i];
+ if ((this.zoomLayer && this.zoomLayer === node) ||
+ (keepAnnotations && this.annotationLayer === node)) {
+ continue;
+ }
+ div.removeChild(node);
+ }
+ div.removeAttribute('data-loaded');
+
+ if (keepAnnotations) {
+ if (this.annotationLayer) {
+ // Hide annotationLayer until all elements are resized
+ // so they are not displayed on the already-resized page
+ this.annotationLayer.setAttribute('hidden', 'true');
+ }
+ } else {
+ this.annotationLayer = null;
}
+ delete this.canvas;
+
+ this.loadingIconDiv = document.createElement('div');
+ this.loadingIconDiv.className = 'loadingIcon';
+ div.appendChild(this.loadingIconDiv);
+ };
+
+ this.update = function pageViewUpdate(scale, rotation) {
this.scale = scale || this.scale;
+ if (typeof rotation !== 'undefined') {
+ this.rotation = rotation;
+ }
+
var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
this.viewport = this.viewport.clone({
- scale: this.scale,
+ scale: this.scale * CSS_UNITS,
rotation: totalRotation
});
- div.style.width = Math.floor(this.viewport.width) + 'px';
- div.style.height = Math.floor(this.viewport.height) + 'px';
-
- while (div.hasChildNodes())
- div.removeChild(div.lastChild);
- div.removeAttribute('data-loaded');
+ if (USE_ONLY_CSS_ZOOM && this.canvas) {
+ this.cssTransform(this.canvas);
+ return;
+ } else if (this.canvas && !this.zoomLayer) {
+ this.zoomLayer = this.canvas.parentNode;
+ this.zoomLayer.style.position = 'absolute';
+ }
+ if (this.zoomLayer) {
+ this.cssTransform(this.zoomLayer.firstChild);
+ }
+ this.reset(true);
+ };
- delete this.canvas;
+ this.cssTransform = function pageCssTransform(canvas) {
+ // Scale canvas, canvas wrapper, and page container.
+ var width = this.viewport.width;
+ var height = this.viewport.height;
+ canvas.style.width = canvas.parentNode.style.width = div.style.width =
+ Math.floor(width) + 'px';
+ canvas.style.height = canvas.parentNode.style.height = div.style.height =
+ Math.floor(height) + 'px';
+ // The canvas may have been originally rotated, so rotate relative to that.
+ var relativeRotation = this.viewport.rotation - canvas._viewport.rotation;
+ var absRotation = Math.abs(relativeRotation);
+ var scaleX = 1, scaleY = 1;
+ if (absRotation === 90 || absRotation === 270) {
+ // Scale x and y because of the rotation.
+ scaleX = height / width;
+ scaleY = width / height;
+ }
+ var cssTransform = 'rotate(' + relativeRotation + 'deg) ' +
+ 'scale(' + scaleX + ',' + scaleY + ')';
+ CustomStyle.setProp('transform', canvas, cssTransform);
+
+ if (this.textLayer) {
+ // Rotating the text layer is more complicated since the divs inside the
+ // the text layer are rotated.
+ // TODO: This could probably be simplified by drawing the text layer in
+ // one orientation then rotating overall.
+ var textLayerViewport = this.textLayer.viewport;
+ var textRelativeRotation = this.viewport.rotation -
+ textLayerViewport.rotation;
+ var textAbsRotation = Math.abs(textRelativeRotation);
+ var scale = width / textLayerViewport.width;
+ if (textAbsRotation === 90 || textAbsRotation === 270) {
+ scale = width / textLayerViewport.height;
+ }
+ var textLayerDiv = this.textLayer.textLayerDiv;
+ var transX, transY;
+ switch (textAbsRotation) {
+ case 0:
+ transX = transY = 0;
+ break;
+ case 90:
+ transX = 0;
+ transY = '-' + textLayerDiv.style.height;
+ break;
+ case 180:
+ transX = '-' + textLayerDiv.style.width;
+ transY = '-' + textLayerDiv.style.height;
+ break;
+ case 270:
+ transX = '-' + textLayerDiv.style.width;
+ transY = 0;
+ break;
+ default:
+ console.error('Bad rotation value.');
+ break;
+ }
+ CustomStyle.setProp('transform', textLayerDiv,
+ 'rotate(' + textAbsRotation + 'deg) ' +
+ 'scale(' + scale + ', ' + scale + ') ' +
+ 'translate(' + transX + ', ' + transY + ')');
+ CustomStyle.setProp('transformOrigin', textLayerDiv, '0% 0%');
+ }
- this.loadingIconDiv = document.createElement('div');
- this.loadingIconDiv.className = 'loadingIcon';
- div.appendChild(this.loadingIconDiv);
+ if (USE_ONLY_CSS_ZOOM && this.annotationLayer) {
+ setupAnnotations(div, this.pdfPage, this.viewport);
+ }
};
Object.defineProperty(this, 'width', {
get: function PageView_getWidth() {
return this.viewport.width;
},
enumerable: true
});
Object.defineProperty(this, 'height', {
get: function PageView_getHeight() {
return this.viewport.height;
},
enumerable: true
});
- function setupAnnotations(pdfPage, viewport) {
+ var self = this;
+
+ function setupAnnotations(pageDiv, pdfPage, viewport) {
+
function bindLink(link, dest) {
link.href = PDFView.getDestinationHash(dest);
link.onclick = function pageViewSetupLinksOnclick() {
- if (dest)
+ if (dest) {
PDFView.navigateTo(dest);
+ }
return false;
};
- link.className = 'internalLink';
+ if (dest) {
+ link.className = 'internalLink';
+ }
}
- function createElementWithStyle(tagName, item, rect) {
- if (!rect) {
- rect = viewport.convertToViewportRectangle(item.rect);
- rect = PDFJS.Util.normalizeRect(rect);
- }
- var element = document.createElement(tagName);
- element.style.left = Math.floor(rect[0]) + 'px';
- element.style.top = Math.floor(rect[1]) + 'px';
- element.style.width = Math.ceil(rect[2] - rect[0]) + 'px';
- element.style.height = Math.ceil(rect[3] - rect[1]) + 'px';
- return element;
- }
- function createTextAnnotation(item) {
- var container = document.createElement('section');
- container.className = 'annotText';
-
- var rect = viewport.convertToViewportRectangle(item.rect);
- rect = PDFJS.Util.normalizeRect(rect);
- // sanity check because of OOo-generated PDFs
- if ((rect[3] - rect[1]) < ANNOT_MIN_SIZE) {
- rect[3] = rect[1] + ANNOT_MIN_SIZE;
- }
- if ((rect[2] - rect[0]) < ANNOT_MIN_SIZE) {
- rect[2] = rect[0] + (rect[3] - rect[1]); // make it square
- }
- var image = createElementWithStyle('img', item, rect);
- var iconName = item.name;
- image.src = IMAGE_DIR + 'annotation-' +
- iconName.toLowerCase() + '.svg';
- image.alt = mozL10n.get('text_annotation_type', {type: iconName},
- '[{{type}} Annotation]');
- var content = document.createElement('div');
- content.setAttribute('hidden', true);
- var title = document.createElement('h1');
- var text = document.createElement('p');
- content.style.left = Math.floor(rect[2]) + 'px';
- content.style.top = Math.floor(rect[1]) + 'px';
- title.textContent = item.title;
-
- if (!item.content && !item.title) {
- content.setAttribute('hidden', true);
- } else {
- var e = document.createElement('span');
- var lines = item.content.split(/(?:\r\n?|\n)/);
- for (var i = 0, ii = lines.length; i < ii; ++i) {
- var line = lines[i];
- e.appendChild(document.createTextNode(line));
- if (i < (ii - 1))
- e.appendChild(document.createElement('br'));
- }
- text.appendChild(e);
- image.addEventListener('mouseover', function annotationImageOver() {
- content.removeAttribute('hidden');
- }, false);
-
- image.addEventListener('mouseout', function annotationImageOut() {
- content.setAttribute('hidden', true);
- }, false);
- }
-
- content.appendChild(title);
- content.appendChild(text);
- container.appendChild(image);
- container.appendChild(content);
-
- return container;
- }
-
- pdfPage.getAnnotations().then(function(items) {
- for (var i = 0; i < items.length; i++) {
- var item = items[i];
- switch (item.type) {
- case 'Link':
- var link = createElementWithStyle('a', item);
- link.href = item.url || '';
- if (!item.url)
- bindLink(link, ('dest' in item) ? item.dest : null);
- div.appendChild(link);
+
+ function bindNamedAction(link, action) {
+ link.href = PDFView.getAnchorUrl('');
+ link.onclick = function pageViewSetupNamedActionOnClick() {
+ // See PDF reference, table 8.45 - Named action
+ switch (action) {
+ case 'GoToPage':
+ document.getElementById('pageNumber').focus();
+ break;
+
+ case 'GoBack':
+ PDFHistory.back();
+ break;
+
+ case 'GoForward':
+ PDFHistory.forward();
+ break;
+
+ case 'Find':
+ if (!PDFView.supportsIntegratedFind) {
+ PDFFindBar.toggle();
+ }
+ break;
+
+ case 'NextPage':
+ PDFView.page++;
+ break;
+
+ case 'PrevPage':
+ PDFView.page--;
+ break;
+
+ case 'LastPage':
+ PDFView.page = PDFView.pages.length;
break;
- case 'Text':
- var textAnnotation = createTextAnnotation(item);
- if (textAnnotation)
- div.appendChild(textAnnotation);
+
+ case 'FirstPage':
+ PDFView.page = 1;
break;
+
+ default:
+ break; // No action according to spec
+ }
+ return false;
+ };
+ link.className = 'internalLink';
+ }
+
+ pdfPage.getAnnotations().then(function(annotationsData) {
+ viewport = viewport.clone({ dontFlip: true });
+ var transform = viewport.transform;
+ var transformStr = 'matrix(' + transform.join(',') + ')';
+ var data, element, i, ii;
+
+ if (self.annotationLayer) {
+ // If an annotationLayer already exists, refresh its children's
+ // transformation matrices
+ for (i = 0, ii = annotationsData.length; i < ii; i++) {
+ data = annotationsData[i];
+ element = self.annotationLayer.querySelector(
+ '[data-annotation-id="' + data.id + '"]');
+ if (element) {
+ CustomStyle.setProp('transform', element, transformStr);
+ }
+ }
+ // See this.reset()
+ self.annotationLayer.removeAttribute('hidden');
+ } else {
+ for (i = 0, ii = annotationsData.length; i < ii; i++) {
+ data = annotationsData[i];
+ var annotation = PDFJS.Annotation.fromData(data);
+ if (!annotation || !annotation.hasHtml()) {
+ continue;
+ }
+
+ element = annotation.getHtmlElement(pdfPage.commonObjs);
+ element.setAttribute('data-annotation-id', data.id);
+ mozL10n.translate(element);
+
+ data = annotation.getData();
+ var rect = data.rect;
+ var view = pdfPage.view;
+ rect = PDFJS.Util.normalizeRect([
+ rect[0],
+ view[3] - rect[1] + view[1],
+ rect[2],
+ view[3] - rect[3] + view[1]
+ ]);
+ element.style.left = rect[0] + 'px';
+ element.style.top = rect[1] + 'px';
+ element.style.position = 'absolute';
+
+ CustomStyle.setProp('transform', element, transformStr);
+ var transformOriginStr = -rect[0] + 'px ' + -rect[1] + 'px';
+ CustomStyle.setProp('transformOrigin', element, transformOriginStr);
+
+ if (data.subtype === 'Link' && !data.url) {
+ var link = element.getElementsByTagName('a')[0];
+ if (link) {
+ if (data.action) {
+ bindNamedAction(link, data.action);
+ } else {
+ bindLink(link, ('dest' in data) ? data.dest : null);
+ }
+ }
+ }
+
+ if (!self.annotationLayer) {
+ var annotationLayerDiv = document.createElement('div');
+ annotationLayerDiv.className = 'annotationLayer';
+ pageDiv.appendChild(annotationLayerDiv);
+ self.annotationLayer = annotationLayerDiv;
+ }
+
+ self.annotationLayer.appendChild(element);
}
}
});
}
this.getPagePoint = function pageViewGetPagePoint(x, y) {
return this.viewport.convertToPdfPoint(x, y);
};
this.scrollIntoView = function pageViewScrollIntoView(dest) {
- if (!dest) {
- scrollIntoView(div);
+ if (PresentationMode.active) {
+ if (PDFView.page !== this.id) {
+ // Avoid breaking PDFView.getVisiblePages in presentation mode.
+ PDFView.page = this.id;
return;
}
+ dest = null;
+ PDFView.setScale(PDFView.currentScaleValue, true, true);
+ }
+ if (!dest) {
+ scrollIntoView(div);
+ return;
+ }
- var x = 0, y = 0;
- var width = 0, height = 0, widthScale, heightScale;
- var scale = 0;
- switch (dest[1].name) {
- case 'XYZ':
- x = dest[2];
- y = dest[3];
- scale = dest[4];
- // If x and/or y coordinates are not supplied, default to
- // _top_ left of the page (not the obvious bottom left,
- // since aligning the bottom of the intended page with the
- // top of the window is rarely helpful).
- x = x !== null ? x : 0;
- y = y !== null ? y : this.height / this.scale;
- break;
- case 'Fit':
- case 'FitB':
- scale = 'page-fit';
- break;
- case 'FitH':
- case 'FitBH':
- y = dest[2];
- scale = 'page-width';
- break;
- case 'FitV':
- case 'FitBV':
- x = dest[2];
- scale = 'page-height';
- break;
- case 'FitR':
- x = dest[2];
- y = dest[3];
- width = dest[4] - x;
- height = dest[5] - y;
- widthScale = (this.container.clientWidth - SCROLLBAR_PADDING) /
- width / CSS_UNITS;
- heightScale = (this.container.clientHeight - SCROLLBAR_PADDING) /
- height / CSS_UNITS;
- scale = Math.min(widthScale, heightScale);
- break;
- default:
- return;
- }
+ var x = 0, y = 0;
+ var width = 0, height = 0, widthScale, heightScale;
+ var changeOrientation = (this.rotation % 180 === 0 ? false : true);
+ var pageWidth = (changeOrientation ? this.height : this.width) /
+ this.scale / CSS_UNITS;
+ var pageHeight = (changeOrientation ? this.width : this.height) /
+ this.scale / CSS_UNITS;
+ var scale = 0;
+ switch (dest[1].name) {
+ case 'XYZ':
+ x = dest[2];
+ y = dest[3];
+ scale = dest[4];
+ // If x and/or y coordinates are not supplied, default to
+ // _top_ left of the page (not the obvious bottom left,
+ // since aligning the bottom of the intended page with the
+ // top of the window is rarely helpful).
+ x = x !== null ? x : 0;
+ y = y !== null ? y : pageHeight;
+ break;
+ case 'Fit':
+ case 'FitB':
+ scale = 'page-fit';
+ break;
+ case 'FitH':
+ case 'FitBH':
+ y = dest[2];
+ scale = 'page-width';
+ break;
+ case 'FitV':
+ case 'FitBV':
+ x = dest[2];
+ width = pageWidth;
+ height = pageHeight;
+ scale = 'page-height';
+ break;
+ case 'FitR':
+ x = dest[2];
+ y = dest[3];
+ width = dest[4] - x;
+ height = dest[5] - y;
+ widthScale = (PDFView.container.clientWidth - SCROLLBAR_PADDING) /
+ width / CSS_UNITS;
+ heightScale = (PDFView.container.clientHeight - SCROLLBAR_PADDING) /
+ height / CSS_UNITS;
+ scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));
+ break;
+ default:
+ return;
+ }
+
+ if (scale && scale !== PDFView.currentScale) {
+ PDFView.setScale(scale, true, true);
+ } else if (PDFView.currentScale === UNKNOWN_SCALE) {
+ PDFView.setScale(DEFAULT_SCALE, true, true);
+ }
- if (scale && scale !== PDFView.currentScale)
- PDFView.parseScale(scale, true, true);
- else if (PDFView.currentScale === UNKNOWN_SCALE)
- PDFView.parseScale(DEFAULT_SCALE, true, true);
+ if (scale === 'page-fit' && !dest[4]) {
+ scrollIntoView(div);
+ return;
+ }
- var boundingRect = [
- this.viewport.convertToViewportPoint(x, y),
- this.viewport.convertToViewportPoint(x + width, y + height)
- ];
- setTimeout(function pageViewScrollIntoViewRelayout() {
- // letting page to re-layout before scrolling
- var scale = PDFView.currentScale;
- var x = Math.min(boundingRect[0][0], boundingRect[1][0]);
- var y = Math.min(boundingRect[0][1], boundingRect[1][1]);
- var width = Math.abs(boundingRect[0][0] - boundingRect[1][0]);
- var height = Math.abs(boundingRect[0][1] - boundingRect[1][1]);
-
- scrollIntoView(div, {left: x, top: y, width: width, height: height});
- }, 0);
+ var boundingRect = [
+ this.viewport.convertToViewportPoint(x, y),
+ this.viewport.convertToViewportPoint(x + width, y + height)
+ ];
+ var left = Math.min(boundingRect[0][0], boundingRect[1][0]);
+ var top = Math.min(boundingRect[0][1], boundingRect[1][1]);
+
+ scrollIntoView(div, { left: left, top: top });
};
this.getTextContent = function pageviewGetTextContent() {
- if (!this.textContent) {
- this.textContent = this.pdfPage.getTextContent();
- }
- return this.textContent;
+ return PDFView.getPage(this.id).then(function(pdfPage) {
+ return pdfPage.getTextContent();
+ });
};
this.draw = function pageviewDraw(callback) {
var pdfPage = this.pdfPage;
+ if (this.pagePdfPromise) {
+ return;
+ }
if (!pdfPage) {
var promise = PDFView.getPage(this.id);
promise.then(function(pdfPage) {
+ delete this.pagePdfPromise;
this.setPdfPage(pdfPage);
this.draw(callback);
}.bind(this));
+ this.pagePdfPromise = promise;
return;
}
if (this.renderingState !== RenderingStates.INITIAL) {
console.error('Must be in new state before drawing');
}
this.renderingState = RenderingStates.RUNNING;
+ var viewport = this.viewport;
+ // Wrap the canvas so if it has a css transform for highdpi the overflow
+ // will be hidden in FF.
+ var canvasWrapper = document.createElement('div');
+ canvasWrapper.style.width = div.style.width;
+ canvasWrapper.style.height = div.style.height;
+ canvasWrapper.classList.add('canvasWrapper');
+
var canvas = document.createElement('canvas');
canvas.id = 'page' + this.id;
- div.appendChild(canvas);
+ canvasWrapper.appendChild(canvas);
+ if (this.annotationLayer) {
+ // annotationLayer needs to stay on top
+ div.insertBefore(canvasWrapper, this.annotationLayer);
+ } else {
+ div.appendChild(canvasWrapper);
+ }
this.canvas = canvas;
- var scale = this.scale, viewport = this.viewport;
- var outputScale = PDFView.getOutputScale();
- canvas.width = Math.floor(viewport.width) * outputScale.sx;
- canvas.height = Math.floor(viewport.height) * outputScale.sy;
+ var ctx = canvas.getContext('2d');
+ var outputScale = getOutputScale(ctx);
+
+ if (USE_ONLY_CSS_ZOOM) {
+ var actualSizeViewport = viewport.clone({ scale: CSS_UNITS });
+ // Use a scale that will make the canvas be the original intended size
+ // of the page.
+ outputScale.sx *= actualSizeViewport.width / viewport.width;
+ outputScale.sy *= actualSizeViewport.height / viewport.height;
+ outputScale.scaled = true;
+ }
+
+ canvas.width = (Math.floor(viewport.width) * outputScale.sx) | 0;
+ canvas.height = (Math.floor(viewport.height) * outputScale.sy) | 0;
+ canvas.style.width = Math.floor(viewport.width) + 'px';
+ canvas.style.height = Math.floor(viewport.height) + 'px';
+ // Add the viewport so it's known what it was originally drawn with.
+ canvas._viewport = viewport;
var textLayerDiv = null;
if (!PDFJS.disableTextLayer) {
textLayerDiv = document.createElement('div');
textLayerDiv.className = 'textLayer';
- textLayerDiv.style.width = canvas.width + 'px';
- textLayerDiv.style.height = canvas.height + 'px';
- div.appendChild(textLayerDiv);
- }
- var textLayer = this.textLayer =
- textLayerDiv ? new TextLayerBuilder(textLayerDiv, this.id - 1) : null;
-
- if (outputScale.scaled) {
- var cssScale = 'scale(' + (1 / outputScale.sx) + ', ' +
- (1 / outputScale.sy) + ')';
- CustomStyle.setProp('transform' , canvas, cssScale);
- CustomStyle.setProp('transformOrigin' , canvas, '0% 0%');
- if (textLayerDiv) {
- CustomStyle.setProp('transform' , textLayerDiv, cssScale);
- CustomStyle.setProp('transformOrigin' , textLayerDiv, '0% 0%');
+ textLayerDiv.style.width = canvas.style.width;
+ textLayerDiv.style.height = canvas.style.height;
+ if (this.annotationLayer) {
+ // annotationLayer needs to stay on top
+ div.insertBefore(textLayerDiv, this.annotationLayer);
+ } else {
+ div.appendChild(textLayerDiv);
}
}
-
- var ctx = canvas.getContext('2d');
+ var textLayer = this.textLayer =
+ textLayerDiv ? new TextLayerBuilder({
+ textLayerDiv: textLayerDiv,
+ pageIndex: this.id - 1,
+ lastScrollSource: PDFView,
+ viewport: this.viewport,
+ isViewerInPresentationMode: PresentationMode.active
+ }) : null;
// TODO(mack): use data attributes to store these
ctx._scaleX = outputScale.sx;
ctx._scaleY = outputScale.sy;
if (outputScale.scaled) {
ctx.scale(outputScale.sx, outputScale.sy);
}
-//#if (FIREFOX || MOZCENTRAL)
-// // Checking if document fonts are used only once
-// var checkIfDocumentFontsUsed = !PDFView.pdfDocument.embeddedFontsUsed;
-//#endif
// Rendering area
var self = this;
- var renderingWasReset = false;
function pageViewDrawCallback(error) {
- if (renderingWasReset) {
+ // The renderTask may have been replaced by a new one, so only remove the
+ // reference to the renderTask if it matches the one that is triggering
+ // this callback.
+ if (renderTask === self.renderTask) {
+ self.renderTask = null;
+ }
+
+ if (error === 'cancelled') {
return;
}
self.renderingState = RenderingStates.FINISHED;
if (self.loadingIconDiv) {
div.removeChild(self.loadingIconDiv);
delete self.loadingIconDiv;
}
-//#if (FIREFOX || MOZCENTRAL)
-// if (checkIfDocumentFontsUsed && PDFView.pdfDocument.embeddedFontsUsed &&
-// !PDFView.supportsDocumentFonts) {
-// console.error(mozL10n.get('web_fonts_disabled', null,
-// 'Web fonts are disabled: unable to use embedded PDF fonts.'));
-// PDFView.fallback();
-// }
-// if (self.textLayer && self.textLayer.textDivs &&
-// self.textLayer.textDivs.length > 0 &&
-// !PDFView.supportsDocumentColors) {
-// console.error(mozL10n.get('web_colors_disabled', null,
-// 'Web colors are disabled.'));
-// PDFView.fallback();
-// }
-//#endif
+ if (self.zoomLayer) {
+ div.removeChild(self.zoomLayer);
+ self.zoomLayer = null;
+ }
+
if (error) {
PDFView.error(mozL10n.get('rendering_error', null,
'An error occurred while rendering the page.'), error);
}
self.stats = pdfPage.stats;
self.updateStats();
- if (self.onAfterDraw)
+ if (self.onAfterDraw) {
self.onAfterDraw();
+ }
cache.push(self);
var event = document.createEvent('CustomEvent');
event.initCustomEvent('pagerender', true, true, {
pageNumber: pdfPage.pageNumber
});
div.dispatchEvent(event);
callback();
}
var renderContext = {
canvasContext: ctx,
viewport: this.viewport,
textLayer: textLayer,
+ // intent: 'default', // === 'display'
continueCallback: function pdfViewcContinueCallback(cont) {
- if (self.renderingState === RenderingStates.INITIAL) {
- // The page update() was called, we just need to abort any rendering.
- renderingWasReset = true;
- return;
- }
-
if (PDFView.highestPriorityPage !== 'page' + self.id) {
self.renderingState = RenderingStates.PAUSED;
self.resume = function resumeCallback() {
self.renderingState = RenderingStates.RUNNING;
cont();
};
return;
}
cont();
}
};
- this.pdfPage.render(renderContext).then(
+ var renderTask = this.renderTask = this.pdfPage.render(renderContext);
+
+ this.renderTask.promise.then(
function pdfPageRenderCallback() {
pageViewDrawCallback(null);
+ if (textLayer) {
+ self.getTextContent().then(
+ function textContentResolved(textContent) {
+ textLayer.setTextContent(textContent);
+ }
+ );
+ }
},
function pdfPageRenderError(error) {
pageViewDrawCallback(error);
}
);
- if (textLayer) {
- this.getTextContent().then(
- function textContentResolved(textContent) {
- textLayer.setTextContent(textContent);
- }
- );
- }
-
- setupAnnotations(this.pdfPage, this.viewport);
+ setupAnnotations(div, pdfPage, this.viewport);
div.setAttribute('data-loaded', true);
};
this.beforePrint = function pageViewBeforePrint() {
var pdfPage = this.pdfPage;
var viewport = pdfPage.getViewport(1);
// Use the same hack we use for high dpi displays for printing to get better
// output until bug 811002 is fixed in FF.
var PRINT_OUTPUT_SCALE = 2;
- var canvas = this.canvas = document.createElement('canvas');
+ var canvas = document.createElement('canvas');
canvas.width = Math.floor(viewport.width) * PRINT_OUTPUT_SCALE;
canvas.height = Math.floor(viewport.height) * PRINT_OUTPUT_SCALE;
canvas.style.width = (PRINT_OUTPUT_SCALE * viewport.width) + 'pt';
canvas.style.height = (PRINT_OUTPUT_SCALE * viewport.height) + 'pt';
var cssScale = 'scale(' + (1 / PRINT_OUTPUT_SCALE) + ', ' +
(1 / PRINT_OUTPUT_SCALE) + ')';
CustomStyle.setProp('transform' , canvas, cssScale);
CustomStyle.setProp('transformOrigin' , canvas, '0% 0%');
var printContainer = document.getElementById('printContainer');
- printContainer.appendChild(canvas);
+ var canvasWrapper = document.createElement('div');
+ canvasWrapper.style.width = viewport.width + 'pt';
+ canvasWrapper.style.height = viewport.height + 'pt';
+ canvasWrapper.appendChild(canvas);
+ printContainer.appendChild(canvasWrapper);
- var self = this;
canvas.mozPrintCallback = function(obj) {
var ctx = obj.context;
ctx.save();
ctx.fillStyle = 'rgb(255, 255, 255)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.restore();
ctx.scale(PRINT_OUTPUT_SCALE, PRINT_OUTPUT_SCALE);
var renderContext = {
canvasContext: ctx,
- viewport: viewport
+ viewport: viewport,
+ intent: 'print'
};
- pdfPage.render(renderContext).then(function() {
+ pdfPage.render(renderContext).promise.then(function() {
// Tell the printEngine that rendering this canvas/page has finished.
obj.done();
- self.pdfPage.destroy();
}, function(error) {
console.error(error);
// Tell the printEngine that rendering this canvas/page has failed.
// This will make the print proces stop.
- if ('abort' in obj)
+ if ('abort' in obj) {
obj.abort();
- else
+ } else {
obj.done();
- self.pdfPage.destroy();
+ }
});
};
};
this.updateStats = function pageViewUpdateStats() {
if (!this.stats) {
return;
}
if (PDFJS.pdfBug && Stats.enabled) {
var stats = this.stats;
Stats.add(this.id, stats);
}
};
};
+
var ThumbnailView = function thumbnailView(container, id, defaultViewport) {
var anchor = document.createElement('a');
anchor.href = PDFView.getAnchorUrl('#page=' + id);
anchor.title = mozL10n.get('thumb_page_title', {page: id}, 'Page {{page}}');
anchor.onclick = function stopNavigation() {
PDFView.page = id;
return false;
};
-
this.pdfPage = undefined;
this.viewport = defaultViewport;
- this.pdfPageRotate = defaultViewport.rotate;
+ this.pdfPageRotate = defaultViewport.rotation;
this.rotation = 0;
this.pageWidth = this.viewport.width;
this.pageHeight = this.viewport.height;
this.pageRatio = this.pageWidth / this.pageHeight;
this.id = id;
this.canvasWidth = 98;
this.canvasHeight = this.canvasWidth / this.pageWidth * this.pageHeight;
this.scale = (this.canvasWidth / this.pageWidth);
var div = this.el = document.createElement('div');
div.id = 'thumbnailContainer' + id;
div.className = 'thumbnail';
if (id === 1) {
// Highlight the thumbnail of the first page when no page number is
// specified (or exists in cache) when the document is loaded.
div.classList.add('selected');
}
var ring = document.createElement('div');
ring.className = 'thumbnailSelectionRing';
ring.style.width = this.canvasWidth + 'px';
ring.style.height = this.canvasHeight + 'px';
div.appendChild(ring);
anchor.appendChild(div);
container.appendChild(anchor);
this.hasImage = false;
this.renderingState = RenderingStates.INITIAL;
this.setPdfPage = function thumbnailViewSetPdfPage(pdfPage) {
this.pdfPage = pdfPage;
this.pdfPageRotate = pdfPage.rotate;
- this.viewport = pdfPage.getViewport(1);
+ var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
+ this.viewport = pdfPage.getViewport(1, totalRotation);
this.update();
};
- this.update = function thumbnailViewUpdate(rot) {
- if (!this.pdfPage) {
- return;
- }
-
- if (rot !== undefined) {
- this.rotation = rot;
+ this.update = function thumbnailViewUpdate(rotation) {
+ if (rotation !== undefined) {
+ this.rotation = rotation;
}
-
- var totalRotation = (this.rotation + this.pdfPage.rotate) % 360;
+ var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
this.viewport = this.viewport.clone({
scale: 1,
rotation: totalRotation
});
this.pageWidth = this.viewport.width;
this.pageHeight = this.viewport.height;
this.pageRatio = this.pageWidth / this.pageHeight;
this.canvasHeight = this.canvasWidth / this.pageWidth * this.pageHeight;
this.scale = (this.canvasWidth / this.pageWidth);
div.removeAttribute('data-loaded');
ring.textContent = '';
ring.style.width = this.canvasWidth + 'px';
ring.style.height = this.canvasHeight + 'px';
this.hasImage = false;
this.renderingState = RenderingStates.INITIAL;
this.resume = null;
};
this.getPageDrawContext = function thumbnailViewGetPageDrawContext() {
var canvas = document.createElement('canvas');
canvas.id = 'thumbnail' + id;
canvas.width = this.canvasWidth;
canvas.height = this.canvasHeight;
canvas.className = 'thumbnailImage';
canvas.setAttribute('aria-label', mozL10n.get('thumb_page_canvas',
{page: id}, 'Thumbnail of Page {{page}}'));
div.setAttribute('data-loaded', true);
ring.appendChild(canvas);
var ctx = canvas.getContext('2d');
ctx.save();
ctx.fillStyle = 'rgb(255, 255, 255)';
ctx.fillRect(0, 0, this.canvasWidth, this.canvasHeight);
ctx.restore();
return ctx;
};
this.drawingRequired = function thumbnailViewDrawingRequired() {
return !this.hasImage;
};
this.draw = function thumbnailViewDraw(callback) {
if (!this.pdfPage) {
var promise = PDFView.getPage(this.id);
promise.then(function(pdfPage) {
this.setPdfPage(pdfPage);
this.draw(callback);
}.bind(this));
return;
}
if (this.renderingState !== RenderingStates.INITIAL) {
console.error('Must be in new state before drawing');
}
this.renderingState = RenderingStates.RUNNING;
if (this.hasImage) {
callback();
return;
}
var self = this;
var ctx = this.getPageDrawContext();
var drawViewport = this.viewport.clone({ scale: this.scale });
var renderContext = {
canvasContext: ctx,
viewport: drawViewport,
continueCallback: function(cont) {
if (PDFView.highestPriorityPage !== 'thumbnail' + self.id) {
self.renderingState = RenderingStates.PAUSED;
self.resume = function() {
self.renderingState = RenderingStates.RUNNING;
cont();
};
return;
}
cont();
}
};
- this.pdfPage.render(renderContext).then(
+ this.pdfPage.render(renderContext).promise.then(
function pdfPageRenderCallback() {
self.renderingState = RenderingStates.FINISHED;
callback();
},
function pdfPageRenderError(error) {
self.renderingState = RenderingStates.FINISHED;
callback();
}
);
this.hasImage = true;
};
this.setImage = function thumbnailViewSetImage(img) {
- if (this.hasImage || !img)
+ if (!this.pdfPage) {
+ var promise = PDFView.getPage(this.id);
+ promise.then(function(pdfPage) {
+ this.setPdfPage(pdfPage);
+ this.setImage(img);
+ }.bind(this));
+ return;
+ }
+ if (this.hasImage || !img) {
return;
+ }
this.renderingState = RenderingStates.FINISHED;
var ctx = this.getPageDrawContext();
ctx.drawImage(img, 0, 0, img.width, img.height,
0, 0, ctx.canvas.width, ctx.canvas.height);
this.hasImage = true;
};
};
-var DocumentOutlineView = function documentOutlineView(outline) {
- var outlineView = document.getElementById('outlineView');
- var outlineButton = document.getElementById('viewOutline');
- while (outlineView.firstChild)
- outlineView.removeChild(outlineView.firstChild);
-
- if (!outline) {
- if (!outlineView.classList.contains('hidden'))
- PDFView.switchSidebarView('thumbs');
-
- return;
- }
-
- function bindItemLink(domObj, item) {
- domObj.href = PDFView.getDestinationHash(item.dest);
- domObj.onclick = function documentOutlineViewOnclick(e) {
- PDFView.navigateTo(item.dest);
- return false;
- };
- }
-
-
- var queue = [{parent: outlineView, items: outline}];
- while (queue.length > 0) {
- var levelData = queue.shift();
- var i, n = levelData.items.length;
- for (i = 0; i < n; i++) {
- var item = levelData.items[i];
- var div = document.createElement('div');
- div.className = 'outlineItem';
- var a = document.createElement('a');
- bindItemLink(a, item);
- a.textContent = item.title;
- div.appendChild(a);
-
- if (item.items.length > 0) {
- var itemsDiv = document.createElement('div');
- itemsDiv.className = 'outlineItems';
- div.appendChild(itemsDiv);
- queue.push({parent: itemsDiv, items: item.items});
- }
-
- levelData.parent.appendChild(div);
- }
- }
-};
-
-// optimised CSS custom property getter/setter
-var CustomStyle = (function CustomStyleClosure() {
-
- // As noted on: http://www.zachstronaut.com/posts/2009/02/17/
- // animate-css-transforms-firefox-webkit.html
- // in some versions of IE9 it is critical that ms appear in this list
- // before Moz
- var prefixes = ['ms', 'Moz', 'Webkit', 'O'];
- var _cache = { };
-
- function CustomStyle() {
- }
-
- CustomStyle.getProp = function get(propName, element) {
- // check cache only when no element is given
- if (arguments.length == 1 && typeof _cache[propName] == 'string') {
- return _cache[propName];
- }
-
- element = element || document.documentElement;
- var style = element.style, prefixed, uPropName;
-
- // test standard property first
- if (typeof style[propName] == 'string') {
- return (_cache[propName] = propName);
- }
-
- // capitalize
- uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);
-
- // test vendor specific properties
- for (var i = 0, l = prefixes.length; i < l; i++) {
- prefixed = prefixes[i] + uPropName;
- if (typeof style[prefixed] == 'string') {
- return (_cache[propName] = prefixed);
- }
- }
-
- //if all fails then set to undefined
- return (_cache[propName] = 'undefined');
- };
-
- CustomStyle.setProp = function set(propName, element, str) {
- var prop = this.getProp(propName);
- if (prop != 'undefined')
- element.style[prop] = str;
- };
- return CustomStyle;
-})();
+var FIND_SCROLL_OFFSET_TOP = -50;
+var FIND_SCROLL_OFFSET_LEFT = -400;
-var TextLayerBuilder = function textLayerBuilder(textLayerDiv, pageIdx) {
+/**
+ * TextLayerBuilder provides text-selection
+ * functionality for the PDF. It does this
+ * by creating overlay divs over the PDF
+ * text. This divs contain text that matches
+ * the PDF text they are overlaying. This
+ * object also provides for a way to highlight
+ * text that is being searched for.
+ */
+var TextLayerBuilder = function textLayerBuilder(options) {
var textLayerFrag = document.createDocumentFragment();
- this.textLayerDiv = textLayerDiv;
+ this.textLayerDiv = options.textLayerDiv;
this.layoutDone = false;
this.divContentDone = false;
- this.pageIdx = pageIdx;
+ this.pageIdx = options.pageIndex;
this.matches = [];
+ this.lastScrollSource = options.lastScrollSource;
+ this.viewport = options.viewport;
+ this.isViewerInPresentationMode = options.isViewerInPresentationMode;
+ this.textDivs = [];
- this.beginLayout = function textLayerBuilderBeginLayout() {
- this.textDivs = [];
- this.renderingDone = false;
- };
+ if (typeof PDFFindController === 'undefined') {
+ window.PDFFindController = null;
+ }
- this.endLayout = function textLayerBuilderEndLayout() {
- this.layoutDone = true;
- this.insertDivContent();
- };
+ if (typeof this.lastScrollSource === 'undefined') {
+ this.lastScrollSource = null;
+ }
this.renderLayer = function textLayerBuilderRenderLayer() {
- var self = this;
var textDivs = this.textDivs;
- var bidiTexts = this.textContent.bidiTexts;
- var textLayerDiv = this.textLayerDiv;
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
// No point in rendering so many divs as it'd make the browser unusable
// even after the divs are rendered
var MAX_TEXT_DIVS_TO_RENDER = 100000;
- if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER)
+ if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {
return;
+ }
for (var i = 0, ii = textDivs.length; i < ii; i++) {
var textDiv = textDivs[i];
if ('isWhitespace' in textDiv.dataset) {
continue;
}
- textLayerFrag.appendChild(textDiv);
ctx.font = textDiv.style.fontSize + ' ' + textDiv.style.fontFamily;
var width = ctx.measureText(textDiv.textContent).width;
if (width > 0) {
+ textLayerFrag.appendChild(textDiv);
var textScale = textDiv.dataset.canvasWidth / width;
-
+ var rotation = textDiv.dataset.angle;
var transform = 'scale(' + textScale + ', 1)';
- if (bidiTexts[i].dir === 'ttb') {
- transform = 'rotate(90deg) ' + transform;
- }
+ transform = 'rotate(' + rotation + 'deg) ' + transform;
CustomStyle.setProp('transform' , textDiv, transform);
CustomStyle.setProp('transformOrigin' , textDiv, '0% 0%');
-
- textLayerDiv.appendChild(textDiv);
}
}
+ this.textLayerDiv.appendChild(textLayerFrag);
this.renderingDone = true;
this.updateMatches();
-
- textLayerDiv.appendChild(textLayerFrag);
};
this.setupRenderLayoutTimer = function textLayerSetupRenderLayoutTimer() {
// Schedule renderLayout() if user has been scrolling, otherwise
// run it right away
var RENDER_DELAY = 200; // in ms
var self = this;
- if (Date.now() - PDFView.lastScroll > RENDER_DELAY) {
+ var lastScroll = (this.lastScrollSource === null ?
+ 0 : this.lastScrollSource.lastScroll);
+
+ if (Date.now() - lastScroll > RENDER_DELAY) {
// Render right away
this.renderLayer();
} else {
// Schedule
- if (this.renderTimer)
+ if (this.renderTimer) {
clearTimeout(this.renderTimer);
+ }
this.renderTimer = setTimeout(function() {
self.setupRenderLayoutTimer();
}, RENDER_DELAY);
}
- };
-
- this.appendText = function textLayerBuilderAppendText(geom) {
- var textDiv = document.createElement('div');
-
- // vScale and hScale already contain the scaling to pixel units
- var fontHeight = geom.fontSize * Math.abs(geom.vScale);
- textDiv.dataset.canvasWidth = geom.canvasWidth * geom.hScale;
- textDiv.dataset.fontName = geom.fontName;
-
- textDiv.style.fontSize = fontHeight + 'px';
- textDiv.style.fontFamily = geom.fontFamily;
- textDiv.style.left = geom.x + 'px';
- textDiv.style.top = (geom.y - fontHeight) + 'px';
-
- // The content of the div is set in the `setTextContent` function.
-
- this.textDivs.push(textDiv);
- };
-
- this.insertDivContent = function textLayerUpdateTextContent() {
- // Only set the content of the divs once layout has finished, the content
- // for the divs is available and content is not yet set on the divs.
- if (!this.layoutDone || this.divContentDone || !this.textContent)
- return;
-
- this.divContentDone = true;
+ };
- var textDivs = this.textDivs;
- var bidiTexts = this.textContent.bidiTexts;
+ this.appendText = function textLayerBuilderAppendText(geom, styles) {
+ var style = styles[geom.fontName];
+ var textDiv = document.createElement('div');
+ this.textDivs.push(textDiv);
+ if (!/\S/.test(geom.str)) {
+ textDiv.dataset.isWhitespace = true;
+ return;
+ }
+ var tx = PDFJS.Util.transform(this.viewport.transform, geom.transform);
+ var angle = Math.atan2(tx[1], tx[0]);
+ if (style.vertical) {
+ angle += Math.PI / 2;
+ }
+ var fontHeight = Math.sqrt((tx[2] * tx[2]) + (tx[3] * tx[3]));
+ var fontAscent = (style.ascent ? style.ascent * fontHeight :
+ (style.descent ? (1 + style.descent) * fontHeight : fontHeight));
- for (var i = 0; i < bidiTexts.length; i++) {
- var bidiText = bidiTexts[i];
- var textDiv = textDivs[i];
- if (!/\S/.test(bidiText.str)) {
- textDiv.dataset.isWhitespace = true;
- continue;
- }
+ textDiv.style.position = 'absolute';
+ textDiv.style.left = (tx[4] + (fontAscent * Math.sin(angle))) + 'px';
+ textDiv.style.top = (tx[5] - (fontAscent * Math.cos(angle))) + 'px';
+ textDiv.style.fontSize = fontHeight + 'px';
+ textDiv.style.fontFamily = style.fontFamily;
- textDiv.textContent = bidiText.str;
- // bidiText.dir may be 'ttb' for vertical texts.
- textDiv.dir = bidiText.dir === 'rtl' ? 'rtl' : 'ltr';
+ textDiv.textContent = geom.str;
+ textDiv.dataset.fontName = geom.fontName;
+ textDiv.dataset.angle = angle * (180 / Math.PI);
+ if (style.vertical) {
+ textDiv.dataset.canvasWidth = geom.height * this.viewport.scale;
+ } else {
+ textDiv.dataset.canvasWidth = geom.width * this.viewport.scale;
}
- this.setupRenderLayoutTimer();
};
this.setTextContent = function textLayerBuilderSetTextContent(textContent) {
this.textContent = textContent;
- this.insertDivContent();
+
+ var textItems = textContent.items;
+ for (var i = 0; i < textItems.length; i++) {
+ this.appendText(textItems[i], textContent.styles);
+ }
+ this.divContentDone = true;
+
+ this.setupRenderLayoutTimer();
};
this.convertMatches = function textLayerBuilderConvertMatches(matches) {
var i = 0;
var iIndex = 0;
- var bidiTexts = this.textContent.bidiTexts;
+ var bidiTexts = this.textContent.items;
var end = bidiTexts.length - 1;
- var queryLen = PDFFindController.state.query.length;
-
- var lastDivIdx = -1;
- var pos;
+ var queryLen = (PDFFindController === null ?
+ 0 : PDFFindController.state.query.length);
var ret = [];
// Loop over all the matches.
for (var m = 0; m < matches.length; m++) {
var matchIdx = matches[m];
// # Calculate the begin position.
// Loop over the divIdxs.
while (i !== end && matchIdx >= (iIndex + bidiTexts[i].str.length)) {
iIndex += bidiTexts[i].str.length;
i++;
}
// TODO: Do proper handling here if something goes wrong.
if (i == bidiTexts.length) {
console.error('Could not find matching mapping');
}
var match = {
begin: {
divIdx: i,
offset: matchIdx - iIndex
}
};
// # Calculate the end position.
matchIdx += queryLen;
// Somewhat same array as above, but use a > instead of >= to get the end
// position right.
while (i !== end && matchIdx > (iIndex + bidiTexts[i].str.length)) {
iIndex += bidiTexts[i].str.length;
i++;
}
match.end = {
divIdx: i,
offset: matchIdx - iIndex
};
ret.push(match);
}
return ret;
};
this.renderMatches = function textLayerBuilder_renderMatches(matches) {
// Early exit if there is nothing to render.
if (matches.length === 0) {
return;
}
- var bidiTexts = this.textContent.bidiTexts;
+ var bidiTexts = this.textContent.items;
var textDivs = this.textDivs;
var prevEnd = null;
- var isSelectedPage = this.pageIdx === PDFFindController.selected.pageIdx;
- var selectedMatchIdx = PDFFindController.selected.matchIdx;
- var highlightAll = PDFFindController.state.highlightAll;
+ var isSelectedPage = (PDFFindController === null ?
+ false : (this.pageIdx === PDFFindController.selected.pageIdx));
+
+ var selectedMatchIdx = (PDFFindController === null ?
+ -1 : PDFFindController.selected.matchIdx);
+
+ var highlightAll = (PDFFindController === null ?
+ false : PDFFindController.state.highlightAll);
var infty = {
divIdx: -1,
offset: undefined
};
function beginText(begin, className) {
var divIdx = begin.divIdx;
var div = textDivs[divIdx];
div.textContent = '';
-
- var content = bidiTexts[divIdx].str.substring(0, begin.offset);
- var node = document.createTextNode(content);
- if (className) {
- var isSelected = isSelectedPage &&
- divIdx === selectedMatchIdx;
- var span = document.createElement('span');
- span.className = className + (isSelected ? ' selected' : '');
- span.appendChild(node);
- div.appendChild(span);
- return;
- }
- div.appendChild(node);
+ appendTextToDiv(divIdx, 0, begin.offset, className);
}
function appendText(from, to, className) {
- var divIdx = from.divIdx;
+ appendTextToDiv(from.divIdx, from.offset, to.offset, className);
+ }
+
+ function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
var div = textDivs[divIdx];
- var content = bidiTexts[divIdx].str.substring(from.offset, to.offset);
+ var content = bidiTexts[divIdx].str.substring(fromOffset, toOffset);
var node = document.createTextNode(content);
if (className) {
var span = document.createElement('span');
span.className = className;
span.appendChild(node);
div.appendChild(span);
return;
}
div.appendChild(node);
}
function highlightDiv(divIdx, className) {
textDivs[divIdx].className = className;
}
var i0 = selectedMatchIdx, i1 = i0 + 1, i;
if (highlightAll) {
i0 = 0;
i1 = matches.length;
} else if (!isSelectedPage) {
// Not highlighting all and this isn't the selected page, so do nothing.
return;
}
for (i = i0; i < i1; i++) {
var match = matches[i];
var begin = match.begin;
var end = match.end;
var isSelected = isSelectedPage && i === selectedMatchIdx;
var highlightSuffix = (isSelected ? ' selected' : '');
- if (isSelected)
- scrollIntoView(textDivs[begin.divIdx], {top: -50});
+ if (isSelected && !this.isViewerInPresentationMode) {
+ scrollIntoView(textDivs[begin.divIdx], { top: FIND_SCROLL_OFFSET_TOP,
+ left: FIND_SCROLL_OFFSET_LEFT });
+ }
// Match inside new div.
if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {
// If there was a previous div, then add the text at the end
if (prevEnd !== null) {
appendText(prevEnd, infty);
}
// clears the divs and set the content until the begin point.
beginText(begin);
} else {
appendText(prevEnd, begin);
}
if (begin.divIdx === end.divIdx) {
appendText(begin, end, 'highlight' + highlightSuffix);
} else {
appendText(begin, infty, 'highlight begin' + highlightSuffix);
for (var n = begin.divIdx + 1; n < end.divIdx; n++) {
highlightDiv(n, 'highlight middle' + highlightSuffix);
}
beginText(end, 'highlight end' + highlightSuffix);
}
prevEnd = end;
}
if (prevEnd) {
appendText(prevEnd, infty);
}
};
this.updateMatches = function textLayerUpdateMatches() {
// Only show matches, once all rendering is done.
- if (!this.renderingDone)
+ if (!this.renderingDone) {
return;
+ }
// Clear out all matches.
var matches = this.matches;
var textDivs = this.textDivs;
- var bidiTexts = this.textContent.bidiTexts;
+ var bidiTexts = this.textContent.items;
var clearedUntilDivIdx = -1;
// Clear out all current matches.
for (var i = 0; i < matches.length; i++) {
var match = matches[i];
var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);
for (var n = begin; n <= match.end.divIdx; n++) {
var div = textDivs[n];
div.textContent = bidiTexts[n].str;
div.className = '';
}
clearedUntilDivIdx = match.end.divIdx + 1;
}
- if (!PDFFindController.active)
+ if (PDFFindController === null || !PDFFindController.active) {
return;
+ }
// Convert the matches on the page controller into the match format used
// for the textLayer.
- this.matches = matches =
- this.convertMatches(PDFFindController.pageMatches[this.pageIdx] || []);
+ this.matches = matches = (this.convertMatches(PDFFindController === null ?
+ [] : (PDFFindController.pageMatches[this.pageIdx] || [])));
this.renderMatches(this.matches);
};
};
-document.addEventListener('DOMContentLoaded', function webViewerLoad(evt) {
- PDFView.initialize();
- var params = PDFView.parseQueryString(document.location.search.substring(1));
-//#if !(FIREFOX || MOZCENTRAL)
- var file = params.file || DEFAULT_URL;
-//#else
-//var file = window.location.toString()
-//#endif
+
+var DocumentOutlineView = function documentOutlineView(outline) {
+ var outlineView = document.getElementById('outlineView');
+ while (outlineView.firstChild) {
+ outlineView.removeChild(outlineView.firstChild);
+ }
+
+ if (!outline) {
+ if (!outlineView.classList.contains('hidden')) {
+ PDFView.switchSidebarView('thumbs');
+ }
+ return;
+ }
+
+ function bindItemLink(domObj, item) {
+ domObj.href = PDFView.getDestinationHash(item.dest);
+ domObj.onclick = function documentOutlineViewOnclick(e) {
+ PDFView.navigateTo(item.dest);
+ return false;
+ };
+ }
+
+ var queue = [{parent: outlineView, items: outline}];
+ while (queue.length > 0) {
+ var levelData = queue.shift();
+ var i, n = levelData.items.length;
+ for (i = 0; i < n; i++) {
+ var item = levelData.items[i];
+ var div = document.createElement('div');
+ div.className = 'outlineItem';
+ var a = document.createElement('a');
+ bindItemLink(a, item);
+ a.textContent = item.title;
+ div.appendChild(a);
+
+ if (item.items.length > 0) {
+ var itemsDiv = document.createElement('div');
+ itemsDiv.className = 'outlineItems';
+ div.appendChild(itemsDiv);
+ queue.push({parent: itemsDiv, items: item.items});
+ }
+
+ levelData.parent.appendChild(div);
+ }
+ }
+};
+
+
+var DocumentAttachmentsView = function documentAttachmentsView(attachments) {
+ var attachmentsView = document.getElementById('attachmentsView');
+ while (attachmentsView.firstChild) {
+ attachmentsView.removeChild(attachmentsView.firstChild);
+ }
+
+ if (!attachments) {
+ if (!attachmentsView.classList.contains('hidden')) {
+ PDFView.switchSidebarView('thumbs');
+ }
+ return;
+ }
+
+ function bindItemLink(domObj, item) {
+ domObj.onclick = function documentAttachmentsViewOnclick(e) {
+ var downloadManager = new DownloadManager();
+ downloadManager.downloadData(item.content, getFileName(item.filename),
+ '');
+ return false;
+ };
+ }
+
+ var names = Object.keys(attachments).sort(function(a,b) {
+ return a.toLowerCase().localeCompare(b.toLowerCase());
+ });
+ for (var i = 0, ii = names.length; i < ii; i++) {
+ var item = attachments[names[i]];
+ var div = document.createElement('div');
+ div.className = 'attachmentsItem';
+ var button = document.createElement('button');
+ bindItemLink(button, item);
+ button.textContent = getFileName(item.filename);
+ div.appendChild(button);
+ attachmentsView.appendChild(div);
+ }
+};
+
+
+
+function webViewerLoad(evt) {
+ PDFView.initialize().then(webViewerInitialized);
+}
+
+function webViewerInitialized() {
+ var params = PDFView.parseQueryString(document.location.search.substring(1));
+ var file = 'file' in params ? params.file : DEFAULT_URL;
+
+ var fileInput = document.createElement('input');
+ fileInput.id = 'fileInput';
+ fileInput.className = 'fileInput';
+ fileInput.setAttribute('type', 'file');
+ fileInput.oncontextmenu = noContextMenuHandler;
+ document.body.appendChild(fileInput);
+
+ if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
+ document.getElementById('openFile').setAttribute('hidden', 'true');
+ document.getElementById('secondaryOpenFile').setAttribute('hidden', 'true');
+ } else {
+ document.getElementById('fileInput').value = null;
+ }
// Special debugging flags in the hash section of the URL.
var hash = document.location.hash.substring(1);
var hashParams = PDFView.parseQueryString(hash);
if ('disableWorker' in hashParams) {
PDFJS.disableWorker = (hashParams['disableWorker'] === 'true');
}
if ('disableRange' in hashParams) {
PDFJS.disableRange = (hashParams['disableRange'] === 'true');
}
if ('disableAutoFetch' in hashParams) {
PDFJS.disableAutoFetch = (hashParams['disableAutoFetch'] === 'true');
}
-//#if !(FIREFOX || MOZCENTRAL)
- var locale = navigator.language;
- if ('locale' in hashParams)
+ if ('disableFontFace' in hashParams) {
+ PDFJS.disableFontFace = (hashParams['disableFontFace'] === 'true');
+ }
+
+ if ('disableHistory' in hashParams) {
+ PDFJS.disableHistory = (hashParams['disableHistory'] === 'true');
+ }
+
+ if ('webgl' in hashParams) {
+ PDFJS.disableWebGL = (hashParams['webgl'] !== 'true');
+ }
+
+ if ('useOnlyCssZoom' in hashParams) {
+ USE_ONLY_CSS_ZOOM = (hashParams['useOnlyCssZoom'] === 'true');
+ }
+
+ if ('verbosity' in hashParams) {
+ PDFJS.verbosity = hashParams['verbosity'] | 0;
+ }
+
+ if ('ignoreCurrentPositionOnZoom' in hashParams) {
+ IGNORE_CURRENT_POSITION_ON_ZOOM =
+ (hashParams['ignoreCurrentPositionOnZoom'] === 'true');
+ }
+
+
+
+ var locale = PDFJS.locale || navigator.language;
+ if ('locale' in hashParams) {
locale = hashParams['locale'];
+ }
mozL10n.setLanguage(locale);
-//#endif
if ('textLayer' in hashParams) {
switch (hashParams['textLayer']) {
case 'off':
PDFJS.disableTextLayer = true;
break;
case 'visible':
case 'shadow':
case 'hover':
var viewer = document.getElementById('viewer');
viewer.classList.add('textLayer-' + hashParams['textLayer']);
break;
}
}
-//#if !(FIREFOX || MOZCENTRAL)
if ('pdfBug' in hashParams) {
-//#else
-//if ('pdfBug' in hashParams && FirefoxCom.requestSync('pdfBugEnabled')) {
-//#endif
PDFJS.pdfBug = true;
var pdfBug = hashParams['pdfBug'];
var enabled = pdfBug.split(',');
PDFBug.enable(enabled);
PDFBug.init();
}
if (!PDFView.supportsPrinting) {
document.getElementById('print').classList.add('hidden');
+ document.getElementById('secondaryPrint').classList.add('hidden');
}
if (!PDFView.supportsFullscreen) {
document.getElementById('presentationMode').classList.add('hidden');
+ document.getElementById('secondaryPresentationMode').
+ classList.add('hidden');
}
if (PDFView.supportsIntegratedFind) {
document.getElementById('viewFind').classList.add('hidden');
}
- // Listen for warnings to trigger the fallback UI. Errors should be caught
- // and call PDFView.error() so we don't need to listen for those.
- PDFJS.LogManager.addLogger({
- warn: function() {
- PDFView.fallback();
- }
- });
+ // Listen for unsuporrted features to trigger the fallback UI.
+ PDFJS.UnsupportedManager.listen(PDFView.fallback.bind(PDFView));
+
+ // Suppress context menus for some controls
+ document.getElementById('scaleSelect').oncontextmenu = noContextMenuHandler;
var mainContainer = document.getElementById('mainContainer');
var outerContainer = document.getElementById('outerContainer');
mainContainer.addEventListener('transitionend', function(e) {
if (e.target == mainContainer) {
var event = document.createEvent('UIEvents');
event.initUIEvent('resize', false, false, window, 0);
window.dispatchEvent(event);
outerContainer.classList.remove('sidebarMoving');
}
}, true);
document.getElementById('sidebarToggle').addEventListener('click',
function() {
this.classList.toggle('toggled');
outerContainer.classList.add('sidebarMoving');
outerContainer.classList.toggle('sidebarOpen');
PDFView.sidebarOpen = outerContainer.classList.contains('sidebarOpen');
PDFView.renderHighestPriority();
});
document.getElementById('viewThumbnail').addEventListener('click',
function() {
PDFView.switchSidebarView('thumbs');
});
document.getElementById('viewOutline').addEventListener('click',
function() {
PDFView.switchSidebarView('outline');
});
+ document.getElementById('viewAttachments').addEventListener('click',
+ function() {
+ PDFView.switchSidebarView('attachments');
+ });
+
document.getElementById('previous').addEventListener('click',
function() {
PDFView.page--;
});
document.getElementById('next').addEventListener('click',
function() {
PDFView.page++;
});
document.getElementById('zoomIn').addEventListener('click',
function() {
PDFView.zoomIn();
});
document.getElementById('zoomOut').addEventListener('click',
function() {
PDFView.zoomOut();
});
- document.getElementById('presentationMode').addEventListener('click',
- function() {
- PDFView.presentationMode();
- });
-
- document.getElementById('print').addEventListener('click',
- function() {
- window.print();
- });
-
document.getElementById('pageNumber').addEventListener('click',
function() {
this.select();
});
document.getElementById('pageNumber').addEventListener('change',
function() {
// Handle the user inputting a floating point number.
PDFView.page = (this.value | 0);
if (this.value !== (this.value | 0).toString()) {
this.value = PDFView.page;
}
});
document.getElementById('scaleSelect').addEventListener('change',
function() {
- PDFView.parseScale(this.value);
+ PDFView.setScale(this.value);
});
- document.getElementById('firstPage').addEventListener('click',
- function() {
- PDFView.page = 1;
- });
+ document.getElementById('presentationMode').addEventListener('click',
+ SecondaryToolbar.presentationModeClick.bind(SecondaryToolbar));
- document.getElementById('lastPage').addEventListener('click',
- function() {
- PDFView.page = PDFView.pdfDocument.numPages;
- });
+ document.getElementById('openFile').addEventListener('click',
+ SecondaryToolbar.openFileClick.bind(SecondaryToolbar));
- document.getElementById('pageRotateCcw').addEventListener('click',
- function() {
- PDFView.rotatePages(-90);
- });
+ document.getElementById('print').addEventListener('click',
+ SecondaryToolbar.printClick.bind(SecondaryToolbar));
- document.getElementById('pageRotateCw').addEventListener('click',
- function() {
- PDFView.rotatePages(90);
- });
+ document.getElementById('download').addEventListener('click',
+ SecondaryToolbar.downloadClick.bind(SecondaryToolbar));
-//#if (FIREFOX || MOZCENTRAL)
-//PDFView.setTitleUsingUrl(file);
-//PDFView.initPassiveLoading();
-//return;
-//#endif
-//#if !B2G
- PDFView.open(file, 0);
-//#endif
-}, true);
+ if (file) {
+ PDFView.open(file, 0);
+ }
+}
+
+document.addEventListener('DOMContentLoaded', webViewerLoad, true);
function updateViewarea() {
- if (!PDFView.initialized)
+ if (!PDFView.initialized) {
return;
+ }
var visible = PDFView.getVisiblePages();
var visiblePages = visible.views;
if (visiblePages.length === 0) {
return;
}
- PDFView.renderHighestPriority();
+ PDFView.renderHighestPriority(visible);
var currentId = PDFView.page;
var firstPage = visible.first;
for (var i = 0, ii = visiblePages.length, stillFullyVisible = false;
i < ii; ++i) {
var page = visiblePages[i];
- if (page.percent < 100)
+ if (page.percent < 100) {
break;
-
+ }
if (page.id === PDFView.page) {
stillFullyVisible = true;
break;
}
}
if (!stillFullyVisible) {
currentId = visiblePages[0].id;
}
- if (!PDFView.isPresentationMode) {
+ if (!PresentationMode.active) {
updateViewarea.inProgress = true; // used in "set page"
PDFView.page = currentId;
updateViewarea.inProgress = false;
}
var currentScale = PDFView.currentScale;
var currentScaleValue = PDFView.currentScaleValue;
- var normalizedScaleValue = currentScaleValue == currentScale ?
- currentScale * 100 : currentScaleValue;
+ var normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ?
+ Math.round(currentScale * 10000) / 100 : currentScaleValue;
var pageNumber = firstPage.id;
var pdfOpenParams = '#page=' + pageNumber;
pdfOpenParams += '&zoom=' + normalizedScaleValue;
var currentPage = PDFView.pages[pageNumber - 1];
- var topLeft = currentPage.getPagePoint(PDFView.container.scrollLeft,
- (PDFView.container.scrollTop - firstPage.y));
- pdfOpenParams += ',' + Math.round(topLeft[0]) + ',' + Math.round(topLeft[1]);
-
- var store = PDFView.store;
- store.initializedPromise.then(function() {
- store.set('exists', true);
- store.set('page', pageNumber);
- store.set('zoom', normalizedScaleValue);
- store.set('scrollLeft', Math.round(topLeft[0]));
- store.set('scrollTop', Math.round(topLeft[1]));
+ var container = PDFView.container;
+ var topLeft = currentPage.getPagePoint((container.scrollLeft - firstPage.x),
+ (container.scrollTop - firstPage.y));
+ var intLeft = Math.round(topLeft[0]);
+ var intTop = Math.round(topLeft[1]);
+ pdfOpenParams += ',' + intLeft + ',' + intTop;
+
+ if (PresentationMode.active || PresentationMode.switchInProgress) {
+ PDFView.currentPosition = null;
+ } else {
+ PDFView.currentPosition = { page: pageNumber, left: intLeft, top: intTop };
+ }
+
+ PDFView.store.initializedPromise.then(function() {
+ PDFView.store.setMultiple({
+ 'exists': true,
+ 'page': pageNumber,
+ 'zoom': normalizedScaleValue,
+ 'scrollLeft': intLeft,
+ 'scrollTop': intTop
+ }).catch(function() {
+ // unable to write to storage
+ });
});
var href = PDFView.getAnchorUrl(pdfOpenParams);
document.getElementById('viewBookmark').href = href;
+ document.getElementById('secondaryViewBookmark').href = href;
+
+ // Update the current bookmark in the browsing history.
+ PDFHistory.updateCurrentBookmark(pdfOpenParams, pageNumber);
}
window.addEventListener('resize', function webViewerResize(evt) {
if (PDFView.initialized &&
(document.getElementById('pageWidthOption').selected ||
- document.getElementById('pageFitOption').selected ||
- document.getElementById('pageAutoOption').selected))
- PDFView.parseScale(document.getElementById('scaleSelect').value);
+ document.getElementById('pageFitOption').selected ||
+ document.getElementById('pageAutoOption').selected)) {
+ PDFView.setScale(document.getElementById('scaleSelect').value);
+ }
updateViewarea();
+
+ // Set the 'max-height' CSS property of the secondary toolbar.
+ SecondaryToolbar.setMaxHeight(PDFView.container);
});
window.addEventListener('hashchange', function webViewerHashchange(evt) {
- PDFView.setHash(document.location.hash.substring(1));
+ if (PDFHistory.isHashChangeUnlocked) {
+ PDFView.setHash(document.location.hash.substring(1));
+ }
});
window.addEventListener('change', function webViewerChange(evt) {
var files = evt.target.files;
- if (!files || files.length === 0)
+ if (!files || files.length === 0) {
return;
+ }
+ var file = files[0];
- // Read the local file into a Uint8Array.
- var fileReader = new FileReader();
- fileReader.onload = function webViewerChangeFileReaderOnload(evt) {
- var buffer = evt.target.result;
- var uint8Array = new Uint8Array(buffer);
- PDFView.open(uint8Array, 0);
- };
+ if (!PDFJS.disableCreateObjectURL &&
+ typeof URL !== 'undefined' && URL.createObjectURL) {
+ PDFView.open(URL.createObjectURL(file), 0);
+ } else {
+ // Read the local file into a Uint8Array.
+ var fileReader = new FileReader();
+ fileReader.onload = function webViewerChangeFileReaderOnload(evt) {
+ var buffer = evt.target.result;
+ var uint8Array = new Uint8Array(buffer);
+ PDFView.open(uint8Array, 0);
+ };
+ fileReader.readAsArrayBuffer(file);
+ }
- var file = files[0];
- fileReader.readAsArrayBuffer(file);
PDFView.setTitleUsingUrl(file.name);
// URL does not reflect proper document location - hiding some icons.
document.getElementById('viewBookmark').setAttribute('hidden', 'true');
+ document.getElementById('secondaryViewBookmark').
+ setAttribute('hidden', 'true');
document.getElementById('download').setAttribute('hidden', 'true');
+ document.getElementById('secondaryDownload').setAttribute('hidden', 'true');
}, true);
function selectScaleOption(value) {
var options = document.getElementById('scaleSelect').options;
var predefinedValueFound = false;
for (var i = 0; i < options.length; i++) {
var option = options[i];
if (option.value != value) {
option.selected = false;
continue;
}
option.selected = true;
predefinedValueFound = true;
}
return predefinedValueFound;
}
window.addEventListener('localized', function localized(evt) {
document.getElementsByTagName('html')[0].dir = mozL10n.getDirection();
- // Adjust the width of the zoom box to fit the content.
- PDFView.animationStartedPromise.then(
- function() {
- var container = document.getElementById('scaleSelectContainer');
+ PDFView.animationStartedPromise.then(function() {
+ // Adjust the width of the zoom box to fit the content.
+ // Note: This is only done if the zoom box is actually visible,
+ // since otherwise element.clientWidth will return 0.
+ var container = document.getElementById('scaleSelectContainer');
+ if (container.clientWidth > 0) {
var select = document.getElementById('scaleSelect');
select.setAttribute('style', 'min-width: inherit;');
- var width = select.clientWidth + 8;
- select.setAttribute('style', 'min-width: ' + (width + 20) + 'px;');
+ var width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING;
+ select.setAttribute('style', 'min-width: ' +
+ (width + SCALE_SELECT_PADDING) + 'px;');
container.setAttribute('style', 'min-width: ' + width + 'px; ' +
'max-width: ' + width + 'px;');
+ }
+
+ // Set the 'max-height' CSS property of the secondary toolbar.
+ SecondaryToolbar.setMaxHeight(PDFView.container);
});
}, true);
window.addEventListener('scalechange', function scalechange(evt) {
document.getElementById('zoomOut').disabled = (evt.scale === MIN_SCALE);
document.getElementById('zoomIn').disabled = (evt.scale === MAX_SCALE);
var customScaleOption = document.getElementById('customScaleOption');
customScaleOption.selected = false;
if (!evt.resetAutoSettings &&
- (document.getElementById('pageWidthOption').selected ||
- document.getElementById('pageFitOption').selected ||
- document.getElementById('pageAutoOption').selected)) {
- updateViewarea();
- return;
+ (document.getElementById('pageWidthOption').selected ||
+ document.getElementById('pageFitOption').selected ||
+ document.getElementById('pageAutoOption').selected)) {
+ updateViewarea();
+ return;
}
var predefinedValueFound = selectScaleOption('' + evt.scale);
if (!predefinedValueFound) {
customScaleOption.textContent = Math.round(evt.scale * 10000) / 100 + '%';
customScaleOption.selected = true;
}
updateViewarea();
}, true);
window.addEventListener('pagechange', function pagechange(evt) {
var page = evt.pageNumber;
if (PDFView.previousPageNumber !== page) {
document.getElementById('pageNumber').value = page;
var selected = document.querySelector('.thumbnail.selected');
- if (selected)
+ if (selected) {
selected.classList.remove('selected');
+ }
var thumbnail = document.getElementById('thumbnailContainer' + page);
thumbnail.classList.add('selected');
var visibleThumbs = PDFView.getVisibleThumbs();
var numVisibleThumbs = visibleThumbs.views.length;
- // If the thumbnail isn't currently visible scroll it into view.
+
+ // If the thumbnail isn't currently visible, scroll it into view.
if (numVisibleThumbs > 0) {
var first = visibleThumbs.first.id;
// Account for only one thumbnail being visible.
- var last = numVisibleThumbs > 1 ?
- visibleThumbs.last.id : first;
- if (page <= first || page >= last)
- scrollIntoView(thumbnail);
+ var last = (numVisibleThumbs > 1 ? visibleThumbs.last.id : first);
+ if (page <= first || page >= last) {
+ scrollIntoView(thumbnail, { top: THUMBNAIL_SCROLL_MARGIN });
+ }
}
-
}
document.getElementById('previous').disabled = (page <= 1);
document.getElementById('next').disabled = (page >= PDFView.pages.length);
}, true);
-// Firefox specific event, so that we can prevent browser from zooming
-window.addEventListener('DOMMouseScroll', function(evt) {
- if (evt.ctrlKey) {
- evt.preventDefault();
-
- var ticks = evt.detail;
- var direction = (ticks > 0) ? 'zoomOut' : 'zoomIn';
- for (var i = 0, length = Math.abs(ticks); i < length; i++)
- PDFView[direction]();
- } else if (PDFView.isPresentationMode) {
- var FIREFOX_DELTA_FACTOR = -40;
- PDFView.mouseScroll(evt.detail * FIREFOX_DELTA_FACTOR);
- }
-}, false);
+function handleMouseWheel(evt) {
+ var MOUSE_WHEEL_DELTA_FACTOR = 40;
+ var ticks = (evt.type === 'DOMMouseScroll') ? -evt.detail :
+ evt.wheelDelta / MOUSE_WHEEL_DELTA_FACTOR;
+ var direction = (ticks < 0) ? 'zoomOut' : 'zoomIn';
-window.addEventListener('mousemove', function mousemove(evt) {
- if (PDFView.isPresentationMode) {
- PDFView.showPresentationControls();
+ if (evt.ctrlKey) { // Only zoom the pages, not the entire viewer
+ evt.preventDefault();
+ PDFView[direction](Math.abs(ticks));
+ } else if (PresentationMode.active) {
+ PDFView.mouseScroll(ticks * MOUSE_WHEEL_DELTA_FACTOR);
}
-}, false);
+}
-window.addEventListener('mousedown', function mousedown(evt) {
- if (PDFView.isPresentationMode && evt.button === 0) {
- // Enable clicking of links in presentation mode.
- // Note: Only links that point to the currently loaded PDF document works.
- var targetHref = evt.target.href;
- var internalLink = targetHref && (targetHref.replace(/#.*$/, '') ===
- window.location.href.replace(/#.*$/, ''));
- if (!internalLink) {
- // Unless an internal link was clicked, advance a page in presentation
- // mode.
- evt.preventDefault();
- PDFView.page++;
- }
- }
-}, false);
+window.addEventListener('DOMMouseScroll', handleMouseWheel);
+window.addEventListener('mousewheel', handleMouseWheel);
window.addEventListener('click', function click(evt) {
- if (PDFView.isPresentationMode && evt.button === 0) {
+ if (!PresentationMode.active) {
+ if (SecondaryToolbar.opened && PDFView.container.contains(evt.target)) {
+ SecondaryToolbar.close();
+ }
+ } else if (evt.button === 0) {
// Necessary since preventDefault() in 'mousedown' won't stop
- // the event propagation in all circumstances.
+ // the event propagation in all circumstances in presentation mode.
evt.preventDefault();
}
}, false);
window.addEventListener('keydown', function keydown(evt) {
+ if (OverlayManager.active) {
+ return;
+ }
+
var handled = false;
var cmd = (evt.ctrlKey ? 1 : 0) |
(evt.altKey ? 2 : 0) |
(evt.shiftKey ? 4 : 0) |
(evt.metaKey ? 8 : 0);
// First, handle the key bindings that are independent whether an input
// control is selected or not.
if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {
// either CTRL or META key with optional SHIFT.
switch (evt.keyCode) {
- case 70:
+ case 70: // f
+ if (!PDFView.supportsIntegratedFind) {
+ PDFFindBar.open();
+ handled = true;
+ }
+ break;
+ case 71: // g
if (!PDFView.supportsIntegratedFind) {
- PDFFindBar.toggle();
+ PDFFindBar.dispatchEvent('again', cmd === 5 || cmd === 12);
handled = true;
}
break;
case 61: // FF/Mac '='
case 107: // FF '+' and '='
case 187: // Chrome '+'
case 171: // FF with German keyboard
PDFView.zoomIn();
handled = true;
break;
case 173: // FF/Mac '-'
case 109: // FF '-'
case 189: // Chrome '-'
PDFView.zoomOut();
handled = true;
break;
case 48: // '0'
case 96: // '0' on Numpad of Swedish keyboard
- PDFView.parseScale(DEFAULT_SCALE, true);
- handled = false; // keeping it unhandled (to restore page zoom to 100%)
+ // keeping it unhandled (to restore page zoom to 100%)
+ setTimeout(function () {
+ // ... and resetting the scale after browser adjusts its scale
+ PDFView.setScale(DEFAULT_SCALE, true);
+ });
+ handled = false;
+ break;
+ }
+ }
+
+ // CTRL or META without shift
+ if (cmd === 1 || cmd === 8) {
+ switch (evt.keyCode) {
+ case 83: // s
+ PDFView.download();
+ handled = true;
break;
}
}
- // CTRL or META with or without SHIFT.
- if (cmd == 1 || cmd == 8 || cmd == 5 || cmd == 12) {
+ // CTRL+ALT or Option+Command
+ if (cmd === 3 || cmd === 10) {
switch (evt.keyCode) {
+ case 80: // p
+ SecondaryToolbar.presentationModeClick();
+ handled = true;
+ break;
case 71: // g
- if (!PDFView.supportsIntegratedFind) {
- PDFFindBar.dispatchEvent('again', cmd == 5 || cmd == 12);
- handled = true;
- }
+ // focuses input#pageNumber field
+ document.getElementById('pageNumber').select();
+ handled = true;
break;
}
}
if (handled) {
evt.preventDefault();
return;
}
// Some shortcuts should not get handled if a control/input element
// is selected.
var curElement = document.activeElement || document.querySelector(':focus');
- if (curElement && (curElement.tagName.toUpperCase() === 'INPUT' ||
- curElement.tagName.toUpperCase() === 'SELECT')) {
- return;
- }
- var controlsElement = document.getElementById('toolbar');
- while (curElement) {
- if (curElement === controlsElement && !PDFView.isPresentationMode)
- return; // ignoring if the 'toolbar' element is focused
- curElement = curElement.parentNode;
+ var curElementTagName = curElement && curElement.tagName.toUpperCase();
+ if (curElementTagName === 'INPUT' ||
+ curElementTagName === 'TEXTAREA' ||
+ curElementTagName === 'SELECT') {
+ // Make sure that the secondary toolbar is closed when Escape is pressed.
+ if (evt.keyCode !== 27) { // 'Esc'
+ return;
+ }
}
if (cmd === 0) { // no control key pressed at all.
switch (evt.keyCode) {
case 38: // up arrow
case 33: // pg up
case 8: // backspace
- if (!PDFView.isPresentationMode &&
+ if (!PresentationMode.active &&
PDFView.currentScaleValue !== 'page-fit') {
break;
}
/* in presentation mode */
/* falls through */
case 37: // left arrow
// horizontal scrolling using arrow keys
if (PDFView.isHorizontalScrollbarEnabled) {
break;
}
/* falls through */
case 75: // 'k'
case 80: // 'p'
PDFView.page--;
handled = true;
break;
case 27: // esc key
+ if (SecondaryToolbar.opened) {
+ SecondaryToolbar.close();
+ handled = true;
+ }
if (!PDFView.supportsIntegratedFind && PDFFindBar.opened) {
PDFFindBar.close();
handled = true;
}
break;
case 40: // down arrow
case 34: // pg down
case 32: // spacebar
- if (!PDFView.isPresentationMode &&
+ if (!PresentationMode.active &&
PDFView.currentScaleValue !== 'page-fit') {
break;
}
/* falls through */
case 39: // right arrow
// horizontal scrolling using arrow keys
if (PDFView.isHorizontalScrollbarEnabled) {
break;
}
/* falls through */
case 74: // 'j'
case 78: // 'n'
PDFView.page++;
handled = true;
break;
case 36: // home
- if (PDFView.isPresentationMode) {
+ if (PresentationMode.active) {
PDFView.page = 1;
handled = true;
}
break;
case 35: // end
- if (PDFView.isPresentationMode) {
+ if (PresentationMode.active) {
PDFView.page = PDFView.pdfDocument.numPages;
handled = true;
}
break;
+ case 72: // 'h'
+ if (!PresentationMode.active) {
+ HandTool.toggle();
+ }
+ break;
case 82: // 'r'
PDFView.rotatePages(90);
break;
}
}
- if (cmd == 4) { // shift-key
+ if (cmd === 4) { // shift-key
switch (evt.keyCode) {
+ case 32: // spacebar
+ if (!PresentationMode.active &&
+ PDFView.currentScaleValue !== 'page-fit') {
+ break;
+ }
+ PDFView.page--;
+ handled = true;
+ break;
+
case 82: // 'r'
PDFView.rotatePages(-90);
break;
}
}
+ if (!handled && !PresentationMode.active) {
+ // 33=Page Up 34=Page Down 35=End 36=Home
+ // 37=Left 38=Up 39=Right 40=Down
+ if (evt.keyCode >= 33 && evt.keyCode <= 40 &&
+ !PDFView.container.contains(curElement)) {
+ // The page container is not focused, but a page navigation key has been
+ // pressed. Change the focus to the viewer container to make sure that
+ // navigation by keyboard works as expected.
+ PDFView.container.focus();
+ }
+ // 32=Spacebar
+ if (evt.keyCode === 32 && curElementTagName !== 'BUTTON') {
+ if (!PDFView.container.contains(curElement)) {
+ PDFView.container.focus();
+ }
+ }
+ }
+
+ if (cmd === 2) { // alt-key
+ switch (evt.keyCode) {
+ case 37: // left arrow
+ if (PresentationMode.active) {
+ PDFHistory.back();
+ handled = true;
+ }
+ break;
+ case 39: // right arrow
+ if (PresentationMode.active) {
+ PDFHistory.forward();
+ handled = true;
+ }
+ break;
+ }
+ }
+
if (handled) {
evt.preventDefault();
PDFView.clearMouseScrollState();
}
});
window.addEventListener('beforeprint', function beforePrint(evt) {
PDFView.beforePrint();
});
window.addEventListener('afterprint', function afterPrint(evt) {
PDFView.afterPrint();
});
-(function presentationModeClosure() {
- function presentationModeChange(e) {
- var isPresentationMode = document.fullscreenElement ||
- document.mozFullScreen ||
- document.webkitIsFullScreen;
-
- if (!isPresentationMode) {
- PDFView.exitPresentationMode();
- }
- }
-
- window.addEventListener('fullscreenchange', presentationModeChange, false);
- window.addEventListener('mozfullscreenchange', presentationModeChange, false);
- window.addEventListener('webkitfullscreenchange', presentationModeChange,
- false);
-})();
-
(function animationStartedClosure() {
// The offsetParent is not set until the pdf.js iframe or object is visible.
// Waiting for first animation.
- var requestAnimationFrame = window.requestAnimationFrame ||
- window.mozRequestAnimationFrame ||
- window.webkitRequestAnimationFrame ||
- window.oRequestAnimationFrame ||
- window.msRequestAnimationFrame ||
- function startAtOnce(callback) { callback(); };
- PDFView.animationStartedPromise = new PDFJS.Promise();
- requestAnimationFrame(function onAnimationFrame() {
- PDFView.animationStartedPromise.resolve();
+ PDFView.animationStartedPromise = new Promise(function (resolve) {
+ window.requestAnimationFrame(resolve);
});
})();
-//#if B2G
-//window.navigator.mozSetMessageHandler('activity', function(activity) {
-// var url = activity.source.data.url;
-// PDFView.open(url);
-// var cancelButton = document.getElementById('activityClose');
-// cancelButton.addEventListener('click', function() {
-// activity.postResult('close');
-// });
-//});
-//#endif
+
diff --git a/lib/viewers/pdf/viewer.patch b/lib/viewers/pdf/viewer.patch
index deb6a1b..fcb5b8d 100644
--- a/lib/viewers/pdf/viewer.patch
+++ b/lib/viewers/pdf/viewer.patch
@@ -1,128 +1,49 @@
-diff --git a/web/viewer.html b/web/viewer.html
-index e7ac263..19af9e7 100644
---- a/web/viewer.html
-+++ b/web/viewer.html
-@@ -20,57 +20,13 @@ limitations under the License.
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
- <title>PDF.js viewer</title>
+diff -u pdfviewer/viewer.html pdf/viewer.html
+--- pdfviewer/viewer.html 2014-06-02 19:17:37.000000000 +0200
++++ pdf/viewer.html 2014-07-26 19:49:49.000000000 +0200
+@@ -34,7 +34,7 @@
+ <!-- This snippet is used in production (included from viewer.html) -->
+ <link rel="resource" type="application/l10n" href="locale/locale.properties"/>
+ <script src="l10n.js"></script>
+-<script src="../build/pdf.js"></script>
++<script src="pdf.js"></script>
--<!--#if FIREFOX || MOZCENTRAL-->
--<!--#include viewer-snippet-firefox-extension.html-->
--<!--#endif-->
--
- <link rel="stylesheet" href="viewer.css"/>
--<!--#if !PRODUCTION-->
-- <link rel="resource" type="application/l10n" href="locale/locale.properties"/>
--<!--#endif-->
--
--<!--#if !(FIREFOX || MOZCENTRAL || CHROME)-->
- <script type="text/javascript" src="compatibility.js"></script>
--<!--#endif-->
--
--<!--#if !PRODUCTION-->
-- <script type="text/javascript" src="../external/webL10n/l10n.js"></script>
--<!--#endif-->
--
--<!--#if !PRODUCTION-->
-- <script type="text/javascript" src="../src/network.js"></script>
-- <script type="text/javascript" src="../src/chunked_stream.js"></script>
-- <script type="text/javascript" src="../src/pdf_manager.js"></script>
-- <script type="text/javascript" src="../src/core.js"></script>
-- <script type="text/javascript" src="../src/util.js"></script>
-- <script type="text/javascript" src="../src/api.js"></script>
-- <script type="text/javascript" src="../src/metadata.js"></script>
-- <script type="text/javascript" src="../src/canvas.js"></script>
-- <script type="text/javascript" src="../src/obj.js"></script>
-- <script type="text/javascript" src="../src/function.js"></script>
-- <script type="text/javascript" src="../src/charsets.js"></script>
-- <script type="text/javascript" src="../src/cidmaps.js"></script>
-- <script type="text/javascript" src="../src/colorspace.js"></script>
-- <script type="text/javascript" src="../src/crypto.js"></script>
-- <script type="text/javascript" src="../src/evaluator.js"></script>
-- <script type="text/javascript" src="../src/fonts.js"></script>
-- <script type="text/javascript" src="../src/glyphlist.js"></script>
-- <script type="text/javascript" src="../src/image.js"></script>
-- <script type="text/javascript" src="../src/metrics.js"></script>
-- <script type="text/javascript" src="../src/parser.js"></script>
-- <script type="text/javascript" src="../src/pattern.js"></script>
-- <script type="text/javascript" src="../src/stream.js"></script>
-- <script type="text/javascript" src="../src/worker.js"></script>
-- <script type="text/javascript" src="../external/jpgjs/jpg.js"></script>
-- <script type="text/javascript" src="../src/jpx.js"></script>
-- <script type="text/javascript" src="../src/jbig2.js"></script>
-- <script type="text/javascript" src="../src/bidi.js"></script>
-- <script type="text/javascript">PDFJS.workerSrc = '../src/worker_loader.js';</script>
--<!--#endif-->
--
--<!--#if GENERIC || CHROME-->
--<!--#include viewer-snippet.html-->
--<!--#endif-->
-+
-+ <link rel="resource" type="application/l10n" href="locale/locale.properties"/>
-+ <script type="text/javascript" src="l10n.js"></script>
-+ <script type="text/javascript" src="pdf.js"></script>
-+ <script type="text/javascript">PDFJS.workerSrc = 'pdf.js';</script>
- <script type="text/javascript" src="debugger.js"></script>
- <script type="text/javascript" src="viewer.js"></script>
-@@ -149,17 +105,10 @@ limitations under the License.
+
+@@ -173,7 +173,7 @@
<span data-l10n-id="presentation_mode_label">Presentation Mode</span>
</button>
-- <button id="openFile" class="toolbarButton openFile hiddenSmallView" title="Open File" tabindex="13" data-l10n-id="open_file">
-- <span data-l10n-id="open_file_label">Open</span>
-- </button>
--
- <button id="print" class="toolbarButton print" title="Print" tabindex="14" data-l10n-id="print">
+- <button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="14" data-l10n-id="open_file">
++ <button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="14" data-l10n-id="open_file" style="display:none">
+ <span data-l10n-id="open_file_label">Open</span>
+ </button>
+
+@@ -181,11 +181,11 @@
<span data-l10n-id="print_label">Print</span>
</button>
-- <button id="download" class="toolbarButton download" title="Download" tabindex="15" data-l10n-id="download">
-- <span data-l10n-id="download_label">Download</span>
-- </button>
+- <button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="16" data-l10n-id="download">
++ <button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="16" data-l10n-id="download" style="display:none">
+ <span data-l10n-id="download_label">Download</span>
+ </button>
<!-- <div class="toolbarButtonSpacer"></div> -->
- <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current view (copy or open in new window)" tabindex="16" data-l10n-id="bookmark"><span data-l10n-id="bookmark_label">Current View</span></a>
- </div>
-diff --git a/web/viewer.js b/web/viewer.js
-index ee93ebf..43d5501 100644
---- a/web/viewer.js
-+++ b/web/viewer.js
-@@ -3093,16 +3093,6 @@ document.addEventListener('DOMContentLoaded', function webViewerLoad(evt) {
- //var file = window.location.toString()
- //#endif
+- <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current view (copy or open in new window)" tabindex="17" data-l10n-id="bookmark">
++ <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current view (copy or open in new window)" tabindex="17" data-l10n-id="bookmark" style="display:none">
+ <span data-l10n-id="bookmark_label">Current View</span>
+ </a>
--//#if !(FIREFOX || MOZCENTRAL)
-- if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
-- document.getElementById('openFile').setAttribute('hidden', 'true');
-- } else {
-- document.getElementById('fileInput').value = null;
-- }
--//#else
--//document.getElementById('openFile').setAttribute('hidden', 'true');
--//#endif
--
- // Special debugging flags in the hash section of the URL.
- var hash = document.location.hash.substring(1);
- var hashParams = PDFView.parseQueryString(hash);
-@@ -3227,21 +3217,11 @@ document.addEventListener('DOMContentLoaded', function webViewerLoad(evt) {
- PDFView.presentationMode();
- });
+diff -u pdfviewer/viewer.js pdf/viewer.js
+--- pdfviewer/viewer.js 2014-06-02 19:17:37.000000000 +0200
++++ pdf/viewer.js 2014-07-26 19:43:34.000000000 +0200
+@@ -56,8 +56,8 @@
+ };
-- document.getElementById('openFile').addEventListener('click',
-- function() {
-- document.getElementById('fileInput').click();
-- });
--
- document.getElementById('print').addEventListener('click',
- function() {
- window.print();
- });
+ PDFJS.imageResourcesPath = './images/';
+- PDFJS.workerSrc = '../build/pdf.worker.js';
+- PDFJS.cMapUrl = '../web/cmaps/';
++ PDFJS.workerSrc = './pdf.worker.js';
++ PDFJS.cMapUrl = './cmaps/';
+ PDFJS.cMapPacked = true;
-- document.getElementById('download').addEventListener('click',
-- function() {
-- PDFView.download();
-- });
--
- document.getElementById('pageNumber').addEventListener('click',
- function() {
- this.select();
+ var mozL10n = document.mozL10n || document.webL10n;

File Metadata

Mime Type
application/octet-stream
Expires
Wed, Oct 16, 1:25 PM (1 d, 22 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
30/62/878966ef6f7eb940f4dc2129f1d1
Default Alt Text
(2 MB)

Event Timeline