aboutsummaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
Diffstat (limited to 'library')
-rw-r--r--library/certs/README.md13
-rw-r--r--library/phpqrcode/CHANGELOG38
-rw-r--r--library/phpqrcode/INSTALL67
-rw-r--r--library/phpqrcode/LICENSE165
-rw-r--r--library/phpqrcode/README45
-rw-r--r--library/phpqrcode/VERSION2
-rw-r--r--library/phpqrcode/bindings/tcpdf/qrcode.php2875
-rw-r--r--library/phpqrcode/cache/frame_1.dat2
-rw-r--r--library/phpqrcode/cache/frame_1.pngbin126 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_10.datbin204 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_10.pngbin202 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_11.datbin210 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_11.pngbin205 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_12.datbin222 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_12.pngbin216 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_13.datbin223 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_13.pngbin210 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_14.datbin227 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_14.pngbin213 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_15.datbin242 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_15.pngbin219 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_16.dat1
-rw-r--r--library/phpqrcode/cache/frame_16.pngbin211 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_17.datbin237 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_17.pngbin211 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_18.dat2
-rw-r--r--library/phpqrcode/cache/frame_18.pngbin228 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_19.dat3
-rw-r--r--library/phpqrcode/cache/frame_19.pngbin225 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_2.dat1
-rw-r--r--library/phpqrcode/cache/frame_2.pngbin144 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_20.datbin250 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_20.pngbin225 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_21.dat1
-rw-r--r--library/phpqrcode/cache/frame_21.pngbin235 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_22.dat3
-rw-r--r--library/phpqrcode/cache/frame_22.pngbin226 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_23.dat3
-rw-r--r--library/phpqrcode/cache/frame_23.pngbin220 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_24.dat1
-rw-r--r--library/phpqrcode/cache/frame_24.pngbin242 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_25.dat3
-rw-r--r--library/phpqrcode/cache/frame_25.pngbin242 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_26.dat2
-rw-r--r--library/phpqrcode/cache/frame_26.pngbin244 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_27.datbin284 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_27.pngbin237 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_28.datbin318 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_28.pngbin234 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_29.dat2
-rw-r--r--library/phpqrcode/cache/frame_29.pngbin232 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_3.dat1
-rw-r--r--library/phpqrcode/cache/frame_3.pngbin147 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_30.datbin324 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_30.pngbin255 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_31.dat1
-rw-r--r--library/phpqrcode/cache/frame_31.pngbin260 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_32.dat2
-rw-r--r--library/phpqrcode/cache/frame_32.pngbin262 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_33.dat14
-rw-r--r--library/phpqrcode/cache/frame_33.pngbin253 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_34.datbin331 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_34.pngbin256 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_35.datbin342 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_35.pngbin243 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_36.datbin370 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_36.pngbin272 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_37.datbin376 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_37.pngbin279 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_38.dat1
-rw-r--r--library/phpqrcode/cache/frame_38.pngbin279 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_39.datbin404 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_39.pngbin264 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_4.dat1
-rw-r--r--library/phpqrcode/cache/frame_4.pngbin149 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_40.dat2
-rw-r--r--library/phpqrcode/cache/frame_40.pngbin267 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_5.dat1
-rw-r--r--library/phpqrcode/cache/frame_5.pngbin150 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_6.datbin132 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_6.pngbin151 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_7.datbin196 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_7.pngbin189 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_8.datbin201 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_8.pngbin204 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_9.datbin206 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/frame_9.pngbin199 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_101_0.datbin157 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_105_0.datbin162 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_109_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_113_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_117_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_121_0.dat1
-rw-r--r--library/phpqrcode/cache/mask_0/mask_125_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_129_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_133_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_137_0.dat1
-rw-r--r--library/phpqrcode/cache/mask_0/mask_141_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_145_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_149_0.dat3
-rw-r--r--library/phpqrcode/cache/mask_0/mask_153_0.dat1
-rw-r--r--library/phpqrcode/cache/mask_0/mask_157_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_161_0.datbin241 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_165_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_169_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_173_0.dat1
-rw-r--r--library/phpqrcode/cache/mask_0/mask_177_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_21_0.datbin48 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_25_0.datbin57 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_29_0.datbin59 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_33_0.datbin62 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_37_0.datbin65 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_41_0.datbin68 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_45_0.datbin106 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_49_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_53_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_57_0.dat4
-rw-r--r--library/phpqrcode/cache/mask_0/mask_61_0.datbin119 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_65_0.datbin123 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_0/mask_69_0.dat1
-rw-r--r--library/phpqrcode/cache/mask_0/mask_73_0.dat1
-rw-r--r--library/phpqrcode/cache/mask_0/mask_77_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_81_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_85_0.dat2
-rw-r--r--library/phpqrcode/cache/mask_0/mask_89_0.dat1
-rw-r--r--library/phpqrcode/cache/mask_0/mask_93_0.dat3
-rw-r--r--library/phpqrcode/cache/mask_0/mask_97_0.datbin150 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_101_1.dat2
-rw-r--r--library/phpqrcode/cache/mask_1/mask_105_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_109_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_113_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_117_1.dat2
-rw-r--r--library/phpqrcode/cache/mask_1/mask_121_1.dat2
-rw-r--r--library/phpqrcode/cache/mask_1/mask_125_1.dat2
-rw-r--r--library/phpqrcode/cache/mask_1/mask_129_1.datbin164 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_133_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_137_1.dat3
-rw-r--r--library/phpqrcode/cache/mask_1/mask_141_1.dat2
-rw-r--r--library/phpqrcode/cache/mask_1/mask_145_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_149_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_153_1.dat2
-rw-r--r--library/phpqrcode/cache/mask_1/mask_157_1.dat2
-rw-r--r--library/phpqrcode/cache/mask_1/mask_161_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_165_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_169_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_173_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_177_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_21_1.datbin42 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_25_1.datbin48 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_29_1.datbin50 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_33_1.datbin53 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_37_1.datbin56 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_41_1.datbin58 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_45_1.datbin82 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_49_1.datbin84 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_53_1.datbin87 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_57_1.datbin92 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_61_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_65_1.datbin99 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_69_1.datbin102 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_73_1.datbin104 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_77_1.datbin110 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_81_1.datbin114 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_1/mask_85_1.dat2
-rw-r--r--library/phpqrcode/cache/mask_1/mask_89_1.dat1
-rw-r--r--library/phpqrcode/cache/mask_1/mask_93_1.dat2
-rw-r--r--library/phpqrcode/cache/mask_1/mask_97_1.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_101_2.dat3
-rw-r--r--library/phpqrcode/cache/mask_2/mask_105_2.dat1
-rw-r--r--library/phpqrcode/cache/mask_2/mask_109_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_113_2.dat1
-rw-r--r--library/phpqrcode/cache/mask_2/mask_117_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_121_2.datbin127 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_125_2.dat1
-rw-r--r--library/phpqrcode/cache/mask_2/mask_129_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_133_2.dat10
-rw-r--r--library/phpqrcode/cache/mask_2/mask_137_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_141_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_145_2.dat4
-rw-r--r--library/phpqrcode/cache/mask_2/mask_149_2.dat1
-rw-r--r--library/phpqrcode/cache/mask_2/mask_153_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_157_2.dat3
-rw-r--r--library/phpqrcode/cache/mask_2/mask_161_2.datbin190 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_165_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_169_2.datbin196 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_173_2.dat1
-rw-r--r--library/phpqrcode/cache/mask_2/mask_177_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_21_2.datbin35 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_25_2.datbin41 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_29_2.datbin45 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_33_2.datbin47 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_37_2.datbin47 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_41_2.dat1
-rw-r--r--library/phpqrcode/cache/mask_2/mask_45_2.datbin68 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_49_2.datbin70 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_53_2.datbin73 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_57_2.datbin76 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_61_2.datbin78 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_65_2.datbin89 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_69_2.datbin88 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_73_2.datbin94 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_77_2.dat1
-rw-r--r--library/phpqrcode/cache/mask_2/mask_81_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_85_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_2/mask_89_2.dat1
-rw-r--r--library/phpqrcode/cache/mask_2/mask_93_2.datbin103 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_2/mask_97_2.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_101_3.dat1
-rw-r--r--library/phpqrcode/cache/mask_3/mask_105_3.dat1
-rw-r--r--library/phpqrcode/cache/mask_3/mask_109_3.dat1
-rw-r--r--library/phpqrcode/cache/mask_3/mask_113_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_117_3.dat4
-rw-r--r--library/phpqrcode/cache/mask_3/mask_121_3.datbin212 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_125_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_129_3.dat8
-rw-r--r--library/phpqrcode/cache/mask_3/mask_133_3.datbin216 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_137_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_141_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_145_3.dat3
-rw-r--r--library/phpqrcode/cache/mask_3/mask_149_3.dat1
-rw-r--r--library/phpqrcode/cache/mask_3/mask_153_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_157_3.datbin248 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_161_3.dat3
-rw-r--r--library/phpqrcode/cache/mask_3/mask_165_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_169_3.dat1
-rw-r--r--library/phpqrcode/cache/mask_3/mask_173_3.dat1
-rw-r--r--library/phpqrcode/cache/mask_3/mask_177_3.datbin312 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_21_3.datbin60 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_25_3.datbin75 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_29_3.datbin75 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_33_3.datbin79 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_37_3.datbin83 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_41_3.datbin85 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_45_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_49_3.datbin127 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_53_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_57_3.datbin126 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_61_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_65_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_69_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_73_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_77_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_81_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_85_3.datbin160 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_3/mask_89_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_93_3.dat2
-rw-r--r--library/phpqrcode/cache/mask_3/mask_97_3.datbin175 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_101_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_105_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_109_4.datbin182 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_113_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_117_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_121_4.datbin208 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_125_4.datbin213 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_129_4.datbin220 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_133_4.dat3
-rw-r--r--library/phpqrcode/cache/mask_4/mask_137_4.datbin248 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_141_4.datbin254 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_145_4.datbin255 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_149_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_153_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_157_4.dat1
-rw-r--r--library/phpqrcode/cache/mask_4/mask_161_4.dat1
-rw-r--r--library/phpqrcode/cache/mask_4/mask_165_4.dat3
-rw-r--r--library/phpqrcode/cache/mask_4/mask_169_4.datbin297 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_173_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_177_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_21_4.datbin57 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_25_4.datbin76 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_29_4.datbin78 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_33_4.datbin89 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_37_4.datbin86 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_41_4.datbin89 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_45_4.datbin120 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_49_4.datbin124 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_53_4.datbin128 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_57_4.datbin130 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_61_4.datbin132 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_65_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_69_4.dat1
-rw-r--r--library/phpqrcode/cache/mask_4/mask_73_4.dat3
-rw-r--r--library/phpqrcode/cache/mask_4/mask_77_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_81_4.dat3
-rw-r--r--library/phpqrcode/cache/mask_4/mask_85_4.datbin154 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_4/mask_89_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_93_4.dat2
-rw-r--r--library/phpqrcode/cache/mask_4/mask_97_4.datbin176 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_101_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_105_5.datbin224 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_109_5.datbin211 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_113_5.dat9
-rw-r--r--library/phpqrcode/cache/mask_5/mask_117_5.dat1
-rw-r--r--library/phpqrcode/cache/mask_5/mask_121_5.datbin256 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_125_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_129_5.datbin259 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_133_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_137_5.dat3
-rw-r--r--library/phpqrcode/cache/mask_5/mask_141_5.datbin297 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_145_5.datbin300 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_149_5.dat3
-rw-r--r--library/phpqrcode/cache/mask_5/mask_153_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_157_5.dat1
-rw-r--r--library/phpqrcode/cache/mask_5/mask_161_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_165_5.datbin332 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_169_5.dat1
-rw-r--r--library/phpqrcode/cache/mask_5/mask_173_5.dat4
-rw-r--r--library/phpqrcode/cache/mask_5/mask_177_5.dat11
-rw-r--r--library/phpqrcode/cache/mask_5/mask_21_5.datbin74 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_25_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_29_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_33_5.datbin106 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_37_5.datbin103 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_41_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_45_5.dat1
-rw-r--r--library/phpqrcode/cache/mask_5/mask_49_5.datbin146 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_53_5.dat1
-rw-r--r--library/phpqrcode/cache/mask_5/mask_57_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_61_5.dat1
-rw-r--r--library/phpqrcode/cache/mask_5/mask_65_5.datbin163 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_69_5.datbin167 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_73_5.datbin184 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_77_5.dat1
-rw-r--r--library/phpqrcode/cache/mask_5/mask_81_5.dat3
-rw-r--r--library/phpqrcode/cache/mask_5/mask_85_5.datbin186 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_5/mask_89_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_93_5.dat2
-rw-r--r--library/phpqrcode/cache/mask_5/mask_97_5.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_101_6.dat2
-rw-r--r--library/phpqrcode/cache/mask_6/mask_105_6.dat3
-rw-r--r--library/phpqrcode/cache/mask_6/mask_109_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_113_6.dat3
-rw-r--r--library/phpqrcode/cache/mask_6/mask_117_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_121_6.datbin309 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_125_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_129_6.datbin310 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_133_6.datbin296 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_137_6.dat2
-rw-r--r--library/phpqrcode/cache/mask_6/mask_141_6.dat10
-rw-r--r--library/phpqrcode/cache/mask_6/mask_145_6.datbin357 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_149_6.dat2
-rw-r--r--library/phpqrcode/cache/mask_6/mask_153_6.datbin367 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_157_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_161_6.datbin399 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_165_6.datbin400 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_169_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_173_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_177_6.dat14
-rw-r--r--library/phpqrcode/cache/mask_6/mask_21_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_25_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_29_6.dat3
-rw-r--r--library/phpqrcode/cache/mask_6/mask_33_6.datbin124 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_37_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_41_6.datbin132 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_45_6.datbin189 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_49_6.dat2
-rw-r--r--library/phpqrcode/cache/mask_6/mask_53_6.datbin195 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_57_6.dat2
-rw-r--r--library/phpqrcode/cache/mask_6/mask_61_6.dat2
-rw-r--r--library/phpqrcode/cache/mask_6/mask_65_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_69_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_73_6.datbin230 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_77_6.dat1
-rw-r--r--library/phpqrcode/cache/mask_6/mask_81_6.dat3
-rw-r--r--library/phpqrcode/cache/mask_6/mask_85_6.datbin229 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_89_6.datbin263 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_93_6.datbin276 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_6/mask_97_6.dat2
-rw-r--r--library/phpqrcode/cache/mask_7/mask_101_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_105_7.dat2
-rw-r--r--library/phpqrcode/cache/mask_7/mask_109_7.dat2
-rw-r--r--library/phpqrcode/cache/mask_7/mask_113_7.dat11
-rw-r--r--library/phpqrcode/cache/mask_7/mask_117_7.dat2
-rw-r--r--library/phpqrcode/cache/mask_7/mask_121_7.dat2
-rw-r--r--library/phpqrcode/cache/mask_7/mask_125_7.datbin288 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_129_7.datbin282 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_133_7.datbin281 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_137_7.dat5
-rw-r--r--library/phpqrcode/cache/mask_7/mask_141_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_145_7.dat2
-rw-r--r--library/phpqrcode/cache/mask_7/mask_149_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_153_7.dat2
-rw-r--r--library/phpqrcode/cache/mask_7/mask_157_7.dat2
-rw-r--r--library/phpqrcode/cache/mask_7/mask_161_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_165_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_169_7.datbin383 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_173_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_177_7.datbin407 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_21_7.dat4
-rw-r--r--library/phpqrcode/cache/mask_7/mask_25_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_29_7.dat2
-rw-r--r--library/phpqrcode/cache/mask_7/mask_33_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_37_7.datbin122 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_41_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_45_7.datbin173 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_49_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_53_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_57_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_61_7.dat2
-rw-r--r--library/phpqrcode/cache/mask_7/mask_65_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_69_7.datbin202 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_73_7.datbin221 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_77_7.datbin226 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_81_7.dat1
-rw-r--r--library/phpqrcode/cache/mask_7/mask_85_7.datbin213 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_89_7.datbin244 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_93_7.datbin248 -> 0 bytes
-rw-r--r--library/phpqrcode/cache/mask_7/mask_97_7.dat2
-rw-r--r--library/phpqrcode/index.php94
-rw-r--r--library/phpqrcode/phpqrcode.php3312
-rw-r--r--library/phpqrcode/qrbitstream.php180
-rw-r--r--library/phpqrcode/qrconfig.php17
-rw-r--r--library/phpqrcode/qrconst.php54
-rw-r--r--library/phpqrcode/qrencode.php502
-rw-r--r--library/phpqrcode/qrimage.php95
-rw-r--r--library/phpqrcode/qrinput.php729
-rw-r--r--library/phpqrcode/qrlib.php43
-rw-r--r--library/phpqrcode/qrmask.php328
-rw-r--r--library/phpqrcode/qrrscode.php210
-rw-r--r--library/phpqrcode/qrspec.php592
-rw-r--r--library/phpqrcode/qrsplit.php311
-rw-r--r--library/phpqrcode/qrtools.php172
-rw-r--r--library/phpqrcode/tools/merge.bat2
-rw-r--r--library/phpqrcode/tools/merge.php70
-rw-r--r--library/phpqrcode/tools/merge.sh2
-rw-r--r--library/phpqrcode/tools/merged_config.php17
-rw-r--r--library/phpqrcode/tools/merged_header.php36
426 files changed, 12 insertions, 10417 deletions
diff --git a/library/certs/README.md b/library/certs/README.md
index 36a0cf30c..ee68fc06e 100644
--- a/library/certs/README.md
+++ b/library/certs/README.md
@@ -1 +1,12 @@
-This directory contains *browser valid* certs for use with hubzilla when using curl (server to server communication). The cacert.pem file in this directory is downloaded (when necessary) from the curl repository and tracks the Mozilla built-in certs. Additionally we've discovered we occasionally require intermediate certs from some cert providers which Mozilla and other browsers obtain automatically but curl does not. You may add these here if required. All these files are concatenated to create the library/cacert.pem file which we will use. \ No newline at end of file
+This directory contains *browser valid* certs for use with hubzilla when using curl (server to server communication). The cacert.pem file in this directory is downloaded (when necessary) from the curl repository and tracks the Mozilla built-in certs. Additionally we've discovered we occasionally require intermediate certs from some cert providers which Mozilla and other browsers obtain automatically but curl does not. You may add these here if required. All these files are concatenated to create the library/cacert.pem file which we will use.
+
+Obtain the converted mozilla certs here:
+http://curl.haxx.se/docs/caextract.html
+
+Store as cacert.pem in this directory and then
+
+cat *.pem > ../cacert.pem
+
+to generate the master file in /library/cacert.pem
+
+
diff --git a/library/phpqrcode/CHANGELOG b/library/phpqrcode/CHANGELOG
deleted file mode 100644
index 1088530c3..000000000
--- a/library/phpqrcode/CHANGELOG
+++ /dev/null
@@ -1,38 +0,0 @@
-* 1.0.0 build 2010031920
-
- - first public release
- - help in readme, install
- - cleanup ans separation of QRtools and QRspec
- - now TCPDF binding requires minimal changes in TCPDF, having most of job
- done in QRtools tcpdfBarcodeArray
- - nicer QRtools::timeBenchmark output
- - license and copyright notices in files
- - indent cleanup - from tab to 4spc, keep it that way please :)
- - sf project, repository, wiki
- - simple code generator in index.php
-
-* 1.1.0 build 2010032113
-
- - added merge tool wich generate merged version of code
- located in phpqrcode.php
- - splited qrconst.php from qrlib.php
-
-* 1.1.1 build 2010032405
-
- - patch by Rick Seymour allowing saving PNG and displaying it at the same time
- - added version info in VERSION file
- - modified merge tool to include version info into generated file
- - fixed e-mail in almost all head comments
-
-* 1.1.2 build 2010032722
-
- - full integration with TCPDF thanks to Nicola Asuni, it's author
- - fixed bug with alphanumeric encoding detection
-
-* 1.1.3 build 2010081807
-
- - short opening tags replaced with standard ones
-
-* 1.1.4 build 2010100721
-
- - added missing static keyword QRinput::check (found by Luke Brookhart, Onjax LLC)
diff --git a/library/phpqrcode/INSTALL b/library/phpqrcode/INSTALL
deleted file mode 100644
index eac6b072b..000000000
--- a/library/phpqrcode/INSTALL
+++ /dev/null
@@ -1,67 +0,0 @@
-== REQUIREMENTS ==
-
- * PHP5
- * PHP GD2 extension with JPEG and PNG support
-
-== INSTALLATION ==
-
-If you want to recreate cache by yourself make sure cache directory is
-writable and you have permisions to write into it. Also make sure you are
-able to read files in it if you have cache option enabled
-
-== CONFIGURATION ==
-
-Feel free to modify config constants in qrconfig.php file. Read about it in
-provided comments and project wiki page (links in README file)
-
-== QUICK START ==
-
-Notice: probably you should'nt use all of this in same script :)
-
-<?phpb
-
-//include only that one, rest required files will be included from it
-include "qrlib.php"
-
-//write code into file, Error corection lecer is lowest, L (one form: L,M,Q,H)
-//each code square will be 4x4 pixels (4x zoom)
-//code will have 2 code squares white boundary around
-
-QRcode::png('PHP QR Code :)', 'test.png', 'L', 4, 2);
-
-//same as above but outputs file directly into browser (with appr. header etc.)
-//all other settings are default
-//WARNING! it should be FIRST and ONLY output generated by script, otherwise
-//rest of output will land inside PNG binary, breaking it for sure
-QRcode::png('PHP QR Code :)');
-
-//show benchmark
-QRtools::timeBenchmark();
-
-//rebuild cache
-QRtools::buildCache();
-
-//code generated in text mode - as a binary table
-//then displayed out as HTML using Unicode block building chars :)
-$tab = $qr->encode('PHP QR Code :)');
-QRspec::debug($tab, true);
-
-== TCPDF INTEGRATION ==
-
-Inside bindings/tcpdf you will find slightly modified 2dbarcodes.php.
-Instal phpqrcode liblaty inside tcpdf folder, then overwrite (or merge)
-2dbarcodes.php
-
-Then use similar as example #50 from TCPDF examples:
-
-<?php
-
-$style = array(
- 'border' => true,
- 'padding' => 4,
- 'fgcolor' => array(0,0,0),
- 'bgcolor' => false, //array(255,255,255)
-);
-
-//code name: QR, specify error correction level after semicolon (L,M,Q,H)
-$pdf->write2DBarcode('PHP QR Code :)', 'QR,L', '', '', 30, 30, $style, 'N');
diff --git a/library/phpqrcode/LICENSE b/library/phpqrcode/LICENSE
deleted file mode 100644
index 188330326..000000000
--- a/library/phpqrcode/LICENSE
+++ /dev/null
@@ -1,165 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
- 0. Additional Definitions.
-
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
- 1. Exception to Section 3 of the GNU GPL.
-
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
- 2. Conveying Modified Versions.
-
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
-
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
-
- 3. Object Code Incorporating Material from Library Header Files.
-
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
-
- 4. Combined Works.
-
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
-
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
-
- d) Do one of the following:
-
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
-
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
-
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
-
- 5. Combined Libraries.
-
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/library/phpqrcode/README b/library/phpqrcode/README
deleted file mode 100644
index a022fb5e7..000000000
--- a/library/phpqrcode/README
+++ /dev/null
@@ -1,45 +0,0 @@
-This is PHP implementation of QR Code 2-D barcode generator. It is pure-php
-LGPL-licensed implementation based on C libqrencode by Kentaro Fukuchi.
-
-== LICENSING ==
-
-Copyright (C) 2010 by Dominik Dzienia
-
-This library is free software; you can redistribute it and/or modify it under
-the terms of the GNU Lesser General Public License as published by the Free
-Software Foundation; either version 3 of the License, or any later version.
-
-This library is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PARTICULAR PURPOSE. See the GNU Lesser General Public License (LICENSE file)
-for more details.
-
-You should have received a copy of the GNU Lesser General Public License along
-with this library; if not, write to the Free Software Foundation, Inc., 51
-Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-== INSTALATION AND USAGE ==
-
- * INSTALL file
- * http://sourceforge.net/apps/mediawiki/phpqrcode/index.php?title=Main_Page
-
-== CONTACT ==
-
-Fell free to contact me via e-mail (deltalab at poczta dot fm) or using
-folowing project pages:
-
- * http://sourceforge.net/projects/phpqrcode/
- * http://phpqrcode.sourceforge.net/
-
-== ACKNOWLEDGMENTS ==
-
-Based on C libqrencode library (ver. 3.1.1)
-Copyright (C) 2006-2010 by Kentaro Fukuchi
-http://megaui.net/fukuchi/works/qrencode/index.en.html
-
-QR Code is registered trademarks of DENSO WAVE INCORPORATED in JAPAN and other
-countries.
-
-Reed-Solomon code encoder is written by Phil Karn, KA9Q.
-Copyright (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q
- \ No newline at end of file
diff --git a/library/phpqrcode/VERSION b/library/phpqrcode/VERSION
deleted file mode 100644
index 9f99279ea..000000000
--- a/library/phpqrcode/VERSION
+++ /dev/null
@@ -1,2 +0,0 @@
-1.1.4
-2010100721 \ No newline at end of file
diff --git a/library/phpqrcode/bindings/tcpdf/qrcode.php b/library/phpqrcode/bindings/tcpdf/qrcode.php
deleted file mode 100644
index 7995460b5..000000000
--- a/library/phpqrcode/bindings/tcpdf/qrcode.php
+++ /dev/null
@@ -1,2875 +0,0 @@
-<?php
-//============================================================+
-// File name : qrcode.php
-// Begin : 2010-03-22
-// Last Update : 2010-03-29
-// Version : 1.0.002
-// License : GNU LGPL v.3 (http://www.gnu.org/copyleft/lesser.html)
-// ----------------------------------------------------------------------------
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-// or browse http://www.gnu.org/copyleft/lesser.html
-//
-// ----------------------------------------------------------------------------
-//
-// DESCRIPTION :
-//
-// Class to create QR-code arrays for TCPDF class.
-// QR Code symbol is a 2D barcode that can be scanned by
-// handy terminals such as a mobile phone with CCD.
-// The capacity of QR Code is up to 7000 digits or 4000
-// characters, and has high robustness.
-// This class supports QR Code model 2, described in
-// JIS (Japanese Industrial Standards) X0510:2004
-// or ISO/IEC 18004.
-// Currently the following features are not supported:
-// ECI and FNC1 mode, Micro QR Code, QR Code model 1,
-// Structured mode.
-//
-// This class is derived from the following projects:
-// ---------------------------------------------------------
-// "PHP QR Code encoder"
-// License: GNU-LGPLv3
-// Copyright (C) 2010 by Dominik Dzienia <deltalab at poczta dot fm>
-// http://phpqrcode.sourceforge.net/
-// https://sourceforge.net/projects/phpqrcode/
-//
-// The "PHP QR Code encoder" is based on
-// "C libqrencode library" (ver. 3.1.1)
-// License: GNU-LGPL 2.1
-// Copyright (C) 2006-2010 by Kentaro Fukuchi
-// http://megaui.net/fukuchi/works/qrencode/index.en.html
-//
-// Reed-Solomon code encoder is written by Phil Karn, KA9Q.
-// Copyright (C) 2002-2006 Phil Karn, KA9Q
-//
-// QR Code is registered trademark of DENSO WAVE INCORPORATED
-// http://www.denso-wave.com/qrcode/index-e.html
-// ---------------------------------------------------------
-//
-// Author: Nicola Asuni
-//
-// (c) Copyright 2010:
-// Nicola Asuni
-// Tecnick.com S.r.l.
-// Via della Pace, 11
-// 09044 Quartucciu (CA)
-// ITALY
-// www.tecnick.com
-// info@tecnick.com
-//============================================================+
-
-/**
- * Class to create QR-code arrays for TCPDF class.
- * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD.
- * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness.
- * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004.
- * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode.
- *
- * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html).
- * Please read comments on this class source file for full copyright and license information.
- *
- * @package com.tecnick.tcpdf
- * @abstract Class for generating QR-code array for TCPDF.
- * @author Nicola Asuni
- * @copyright 2010 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com
- * @link http://www.tcpdf.org
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- * @version 1.0.002
- */
-
-// definitions
-if (!defined('QRCODEDEFS')) {
-
- /**
- * Indicate that definitions for this class are set
- */
- define('QRCODEDEFS', true);
-
- // -----------------------------------------------------
-
- // Encoding modes (characters which can be encoded in QRcode)
-
- /**
- * Encoding mode
- */
- define('QR_MODE_NL', -1);
-
- /**
- * Encoding mode numeric (0-9). 3 characters are encoded to 10bit length. In theory, 7089 characters or less can be stored in a QRcode.
- */
- define('QR_MODE_NM', 0);
-
- /**
- * Encoding mode alphanumeric (0-9A-Z $%*+-./:) 45characters. 2 characters are encoded to 11bit length. In theory, 4296 characters or less can be stored in a QRcode.
- */
- define('QR_MODE_AN', 1);
-
- /**
- * Encoding mode 8bit byte data. In theory, 2953 characters or less can be stored in a QRcode.
- */
- define('QR_MODE_8B', 2);
-
- /**
- * Encoding mode KANJI. A KANJI character (multibyte character) is encoded to 13bit length. In theory, 1817 characters or less can be stored in a QRcode.
- */
- define('QR_MODE_KJ', 3);
-
- /**
- * Encoding mode STRUCTURED (currently unsupported)
- */
- define('QR_MODE_ST', 4);
-
- // -----------------------------------------------------
-
- // Levels of error correction.
- // QRcode has a function of an error correcting for miss reading that white is black.
- // Error correcting is defined in 4 level as below.
-
- /**
- * Error correction level L : About 7% or less errors can be corrected.
- */
- define('QR_ECLEVEL_L', 0);
-
- /**
- * Error correction level M : About 15% or less errors can be corrected.
- */
- define('QR_ECLEVEL_M', 1);
-
- /**
- * Error correction level Q : About 25% or less errors can be corrected.
- */
- define('QR_ECLEVEL_Q', 2);
-
- /**
- * Error correction level H : About 30% or less errors can be corrected.
- */
- define('QR_ECLEVEL_H', 3);
-
- // -----------------------------------------------------
-
- // Version. Size of QRcode is defined as version.
- // Version is from 1 to 40.
- // Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases.
- // So version 40 is 177*177 matrix.
-
- /**
- * Maximum QR Code version.
- */
- define('QRSPEC_VERSION_MAX', 40);
-
- /**
- * Maximum matrix size for maximum version (version 40 is 177*177 matrix).
- */
- define('QRSPEC_WIDTH_MAX', 177);
-
- // -----------------------------------------------------
-
- /**
- * Matrix index to get width from $capacity array.
- */
- define('QRCAP_WIDTH', 0);
-
- /**
- * Matrix index to get number of words from $capacity array.
- */
- define('QRCAP_WORDS', 1);
-
- /**
- * Matrix index to get remainder from $capacity array.
- */
- define('QRCAP_REMINDER', 2);
-
- /**
- * Matrix index to get error correction level from $capacity array.
- */
- define('QRCAP_EC', 3);
-
- // -----------------------------------------------------
-
- // Structure (currently usupported)
-
- /**
- * Number of header bits for structured mode
- */
- define('STRUCTURE_HEADER_BITS', 20);
-
- /**
- * Max number of symbols for structured mode
- */
- define('MAX_STRUCTURED_SYMBOLS', 16);
-
- // -----------------------------------------------------
-
- // Masks
-
- /**
- * Down point base value for case 1 mask pattern (concatenation of same color in a line or a column)
- */
- define('N1', 3);
-
- /**
- * Down point base value for case 2 mask pattern (module block of same color)
- */
- define('N2', 3);
-
- /**
- * Down point base value for case 3 mask pattern (1:1:3:1:1(dark:bright:dark:bright:dark)pattern in a line or a column)
- */
- define('N3', 40);
-
- /**
- * Down point base value for case 4 mask pattern (ration of dark modules in whole)
- */
- define('N4', 10);
-
- // -----------------------------------------------------
-
- // Optimization settings
-
- /**
- * if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
- */
- define('QR_FIND_BEST_MASK', true);
-
- /**
- * if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
- */
- define('QR_FIND_FROM_RANDOM', 2);
-
- /**
- * when QR_FIND_BEST_MASK === false
- */
- define('QR_DEFAULT_MASK', 2);
-
- // -----------------------------------------------------
-
-} // end of definitions
-
-// #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
-
-if (!class_exists('QRcode', false)) {
-
- // for compaibility with PHP4
- if (!function_exists('str_split')) {
- /**
- * Convert a string to an array (needed for PHP4 compatibility)
- * @param string $string The input string.
- * @param int $split_length Maximum length of the chunk.
- * @return If the optional split_length parameter is specified, the returned array will be broken down into chunks with each being split_length in length, otherwise each chunk will be one character in length. FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string , the entire string is returned as the first (and only) array element.
- */
- function str_split($string, $split_length=1) {
- if ((strlen($string) > $split_length) OR (!$split_length)) {
- do {
- $c = strlen($string);
- $parts[] = substr($string, 0, $split_length);
- $string = substr($string, $split_length);
- } while ($string !== false);
- } else {
- $parts = array($string);
- }
- return $parts;
- }
- }
-
- // #####################################################
-
- /**
- * Class to create QR-code arrays for TCPDF class.
- * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD.
- * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness.
- * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004.
- * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode.
- *
- * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html).
- * Please read comments on this class source file for full copyright and license information.
- *
- * @name QRcode
- * @package com.tecnick.tcpdf
- * @abstract Class for generating QR-code array for TCPDF.
- * @author Nicola Asuni
- * @copyright 2010 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com
- * @link http://www.tcpdf.org
- * @license http://www.gnu.org/copyleft/lesser.html LGPL
- * @version 1.0.002
- */
- class QRcode {
-
- /**
- * @var barcode array to be returned which is readable by TCPDF
- * @access protected
- */
- protected $barcode_array = array();
-
- /**
- * @var QR code version. Size of QRcode is defined as version. Version is from 1 to 40. Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. So version 40 is 177*177 matrix.
- * @access protected
- */
- protected $version = 0;
-
- /**
- * @var Levels of error correction. See definitions for possible values.
- * @access protected
- */
- protected $level = QR_ECLEVEL_L;
-
- /**
- * @var Encoding mode
- * @access protected
- */
- protected $hint = QR_MODE_8B;
-
- /**
- * @var if true the input string will be converted to uppercase
- * @access protected
- */
- protected $casesensitive = true;
-
- /**
- * @var structured QR code (not supported yet)
- * @access protected
- */
- protected $structured = 0;
-
- /**
- * @var mask data
- * @access protected
- */
- protected $data;
-
- // FrameFiller
-
- /**
- * @var width
- * @access protected
- */
- protected $width;
-
- /**
- * @var frame
- * @access protected
- */
- protected $frame;
-
- /**
- * @var X position of bit
- * @access protected
- */
- protected $x;
-
- /**
- * @var Y position of bit
- * @access protected
- */
- protected $y;
-
- /**
- * @var direction
- * @access protected
- */
- protected $dir;
-
- /**
- * @var single bit
- * @access protected
- */
- protected $bit;
-
- // ---- QRrawcode ----
-
- /**
- * @var data code
- * @access protected
- */
- protected $datacode = array();
-
- /**
- * @var error correction code
- * @access protected
- */
- protected $ecccode = array();
-
- /**
- * @var blocks
- * @access protected
- */
- protected $blocks;
-
- /**
- * @var Reed-Solomon blocks
- * @access protected
- */
- protected $rsblocks = array(); //of RSblock
-
- /**
- * @var counter
- * @access protected
- */
- protected $count;
-
- /**
- * @var data length
- * @access protected
- */
- protected $dataLength;
-
- /**
- * @var error correction length
- * @access protected
- */
- protected $eccLength;
-
- /**
- * @var b1
- * @access protected
- */
- protected $b1;
-
- // ---- QRmask ----
-
- /**
- * @var run length
- * @access protected
- */
- protected $runLength = array();
-
- // ---- QRsplit ----
-
- /**
- * @var input data string
- * @access protected
- */
- protected $dataStr = '';
-
- /**
- * @var input items
- * @access protected
- */
- protected $items;
-
- // Reed-Solomon items
-
- /**
- * @var Reed-Solomon items
- * @access protected
- */
- protected $rsitems = array();
-
- /**
- * @var array of frames
- * @access protected
- */
- protected $frames = array();
-
- /**
- * @var alphabet-numeric convesion table
- * @access protected
- */
- protected $anTable = array(
- -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, //
- 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, //
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, //
- -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, //
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -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 //
- );
-
- /**
- * @var array Table of the capacity of symbols
- * See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004.
- * @access protected
- */
- protected $capacity = array(
- array( 0, 0, 0, array( 0, 0, 0, 0)), //
- array( 21, 26, 0, array( 7, 10, 13, 17)), // 1
- array( 25, 44, 7, array( 10, 16, 22, 28)), //
- array( 29, 70, 7, array( 15, 26, 36, 44)), //
- array( 33, 100, 7, array( 20, 36, 52, 64)), //
- array( 37, 134, 7, array( 26, 48, 72, 88)), // 5
- array( 41, 172, 7, array( 36, 64, 96, 112)), //
- array( 45, 196, 0, array( 40, 72, 108, 130)), //
- array( 49, 242, 0, array( 48, 88, 132, 156)), //
- array( 53, 292, 0, array( 60, 110, 160, 192)), //
- array( 57, 346, 0, array( 72, 130, 192, 224)), // 10
- array( 61, 404, 0, array( 80, 150, 224, 264)), //
- array( 65, 466, 0, array( 96, 176, 260, 308)), //
- array( 69, 532, 0, array( 104, 198, 288, 352)), //
- array( 73, 581, 3, array( 120, 216, 320, 384)), //
- array( 77, 655, 3, array( 132, 240, 360, 432)), // 15
- array( 81, 733, 3, array( 144, 280, 408, 480)), //
- array( 85, 815, 3, array( 168, 308, 448, 532)), //
- array( 89, 901, 3, array( 180, 338, 504, 588)), //
- array( 93, 991, 3, array( 196, 364, 546, 650)), //
- array( 97, 1085, 3, array( 224, 416, 600, 700)), // 20
- array(101, 1156, 4, array( 224, 442, 644, 750)), //
- array(105, 1258, 4, array( 252, 476, 690, 816)), //
- array(109, 1364, 4, array( 270, 504, 750, 900)), //
- array(113, 1474, 4, array( 300, 560, 810, 960)), //
- array(117, 1588, 4, array( 312, 588, 870, 1050)), // 25
- array(121, 1706, 4, array( 336, 644, 952, 1110)), //
- array(125, 1828, 4, array( 360, 700, 1020, 1200)), //
- array(129, 1921, 3, array( 390, 728, 1050, 1260)), //
- array(133, 2051, 3, array( 420, 784, 1140, 1350)), //
- array(137, 2185, 3, array( 450, 812, 1200, 1440)), // 30
- array(141, 2323, 3, array( 480, 868, 1290, 1530)), //
- array(145, 2465, 3, array( 510, 924, 1350, 1620)), //
- array(149, 2611, 3, array( 540, 980, 1440, 1710)), //
- array(153, 2761, 3, array( 570, 1036, 1530, 1800)), //
- array(157, 2876, 0, array( 570, 1064, 1590, 1890)), // 35
- array(161, 3034, 0, array( 600, 1120, 1680, 1980)), //
- array(165, 3196, 0, array( 630, 1204, 1770, 2100)), //
- array(169, 3362, 0, array( 660, 1260, 1860, 2220)), //
- array(173, 3532, 0, array( 720, 1316, 1950, 2310)), //
- array(177, 3706, 0, array( 750, 1372, 2040, 2430)) // 40
- );
-
- /**
- * @var array Length indicator
- * @access protected
- */
- protected $lengthTableBits = array(
- array(10, 12, 14),
- array( 9, 11, 13),
- array( 8, 16, 16),
- array( 8, 10, 12)
- );
-
- /**
- * @var array Table of the error correction code (Reed-Solomon block)
- * See Table 12-16 (pp.30-36), JIS X0510:2004.
- * @access protected
- */
- protected $eccTable = array(
- array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)), //
- array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1
- array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), //
- array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)), //
- array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)), //
- array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5
- array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)), //
- array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)), //
- array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)), //
- array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)), //
- array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), // 10
- array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)), //
- array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)), //
- array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)), //
- array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)), //
- array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), // 15
- array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)), //
- array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)), //
- array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)), //
- array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)), //
- array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), // 20
- array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)), //
- array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)), //
- array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)), //
- array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)), //
- array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), // 25
- array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)), //
- array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)), //
- array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), //
- array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)), //
- array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), // 30
- array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)), //
- array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)), //
- array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)), //
- array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)), //
- array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), // 35
- array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), //
- array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)), //
- array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), //
- array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)), //
- array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)) // 40
- );
-
- /**
- * @var array Positions of alignment patterns.
- * This array includes only the second and the third position of the alignment patterns. Rest of them can be calculated from the distance between them.
- * See Table 1 in Appendix E (pp.71) of JIS X0510:2004.
- * @access protected
- */
- protected $alignmentPattern = array(
- array( 0, 0),
- array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5
- array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10
- array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), // 11-15
- array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), // 16-20
- array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), // 21-25
- array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), // 26-30
- array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), // 31-35
- array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58) // 35-40
- );
-
- /**
- * @var array Version information pattern (BCH coded).
- * See Table 1 in Appendix D (pp.68) of JIS X0510:2004.
- * size: [QRSPEC_VERSION_MAX - 6]
- * @access protected
- */
- protected $versionPattern = array(
- 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, //
- 0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, //
- 0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, //
- 0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, //
- 0x27541, 0x28c69
- );
-
- /**
- * @var array Format information
- * @access protected
- */
- protected $formatInfo = array(
- array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), //
- array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), //
- array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), //
- array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b) //
- );
-
-
- // -------------------------------------------------
- // -------------------------------------------------
-
-
- /**
- * This is the class constructor.
- * Creates a QRcode object
- * @param string $code code to represent using QRcode
- * @param string $eclevel error level: <ul><li>L : About 7% or less errors can be corrected.</li><li>M : About 15% or less errors can be corrected.</li><li>Q : About 25% or less errors can be corrected.</li><li>H : About 30% or less errors can be corrected.</li></ul>
- * @access public
- * @since 1.0.000
- */
- public function __construct($code, $eclevel = 'L') {
- $barcode_array = array();
- if ((is_null($code)) OR ($code == '\0') OR ($code == '')) {
- return false;
- }
- // set error correction level
- $this->level = array_search($eclevel, array('L', 'M', 'Q', 'H'));
- if ($this->level === false) {
- $this->level = QR_ECLEVEL_L;
- }
- if (($this->hint != QR_MODE_8B) AND ($this->hint != QR_MODE_KJ)) {
- return false;
- }
- if (($this->version < 0) OR ($this->version > QRSPEC_VERSION_MAX)) {
- return false;
- }
- $this->items = array();
- $this->encodeString($code);
- $qrTab = $this->binarize($this->data);
- $size = count($qrTab);
- $barcode_array['num_rows'] = $size;
- $barcode_array['num_cols'] = $size;
- $barcode_array['bcode'] = array();
- foreach ($qrTab as $line) {
- $arrAdd = array();
- foreach (str_split($line) as $char) {
- $arrAdd[] = ($char=='1')?1:0;
- }
- $barcode_array['bcode'][] = $arrAdd;
- }
- $this->barcode_array = $barcode_array;
- }
-
- /**
- * Returns a barcode array which is readable by TCPDF
- * @return array barcode array readable by TCPDF;
- * @access public
- */
- public function getBarcodeArray() {
- return $this->barcode_array;
- }
-
- /**
- * Convert the frame in binary form
- * @param array $frame array to binarize
- * @return array frame in binary form
- */
- protected function binarize($frame) {
- $len = count($frame);
- // the frame is square (width = height)
- foreach ($frame as &$frameLine) {
- for ($i=0; $i<$len; $i++) {
- $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0';
- }
- }
- return $frame;
- }
-
- /**
- * Encode the input string to QR code
- * @param string $string input string to encode
- */
- protected function encodeString($string) {
- $this->dataStr = $string;
- if (!$this->casesensitive) {
- $this->toUpper();
- }
- $ret = $this->splitString();
- if ($ret < 0) {
- return NULL;
- }
- $this->encodeMask(-1);
- }
-
- /**
- * Encode mask
- * @param int $mask masking mode
- */
- protected function encodeMask($mask) {
- $spec = array(0, 0, 0, 0, 0);
- $this->datacode = $this->getByteStream($this->items);
- if (is_null($this->datacode)) {
- return NULL;
- }
- $spec = $this->getEccSpec($this->version, $this->level, $spec);
- $this->b1 = $this->rsBlockNum1($spec);
- $this->dataLength = $this->rsDataLength($spec);
- $this->eccLength = $this->rsEccLength($spec);
- $this->ecccode = array_fill(0, $this->eccLength, 0);
- $this->blocks = $this->rsBlockNum($spec);
- $ret = $this->init($spec);
- if ($ret < 0) {
- return NULL;
- }
- $this->count = 0;
- $this->width = $this->getWidth($this->version);
- $this->frame = $this->newFrame($this->version);
- $this->x = $this->width - 1;
- $this->y = $this->width - 1;
- $this->dir = -1;
- $this->bit = -1;
- // inteleaved data and ecc codes
- for ($i=0; $i < ($this->dataLength + $this->eccLength); $i++) {
- $code = $this->getCode();
- $bit = 0x80;
- for ($j=0; $j<8; $j++) {
- $addr = $this->getNextPosition();
- $this->setFrameAt($addr, 0x02 | (($bit & $code) != 0));
- $bit = $bit >> 1;
- }
- }
- // remainder bits
- $j = $this->getRemainder($this->version);
- for ($i=0; $i<$j; $i++) {
- $addr = $this->getNextPosition();
- $this->setFrameAt($addr, 0x02);
- }
- // masking
- $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0);
- if ($mask < 0) {
- if (QR_FIND_BEST_MASK) {
- $masked = $this->mask($this->width, $this->frame, $this->level);
- } else {
- $masked = $this->makeMask($this->width, $this->frame, (intval(QR_DEFAULT_MASK) % 8), $this->level);
- }
- } else {
- $masked = $this->makeMask($this->width, $this->frame, $mask, $this->level);
- }
- if ($masked == NULL) {
- return NULL;
- }
- $this->data = $masked;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // FrameFiller
-
- /**
- * Set frame value at specified position
- * @param array $at x,y position
- * @param int $val value of the character to set
- */
- protected function setFrameAt($at, $val) {
- $this->frame[$at['y']][$at['x']] = chr($val);
- }
-
- /**
- * Get frame value at specified position
- * @param array $at x,y position
- * @return value at specified position
- */
- protected function getFrameAt($at) {
- return ord($this->frame[$at['y']][$at['x']]);
- }
-
- /**
- * Return the next frame position
- * @return array of x,y coordinates
- */
- protected function getNextPosition() {
- do {
- if ($this->bit == -1) {
- $this->bit = 0;
- return array('x'=>$this->x, 'y'=>$this->y);
- }
- $x = $this->x;
- $y = $this->y;
- $w = $this->width;
- if ($this->bit == 0) {
- $x--;
- $this->bit++;
- } else {
- $x++;
- $y += $this->dir;
- $this->bit--;
- }
- if ($this->dir < 0) {
- if ($y < 0) {
- $y = 0;
- $x -= 2;
- $this->dir = 1;
- if ($x == 6) {
- $x--;
- $y = 9;
- }
- }
- } else {
- if ($y == $w) {
- $y = $w - 1;
- $x -= 2;
- $this->dir = -1;
- if ($x == 6) {
- $x--;
- $y -= 8;
- }
- }
- }
- if (($x < 0) OR ($y < 0)) {
- return NULL;
- }
- $this->x = $x;
- $this->y = $y;
- } while(ord($this->frame[$y][$x]) & 0x80);
- return array('x'=>$x, 'y'=>$y);
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRrawcode
-
- /**
- * Initialize code.
- * @param array $spec array of ECC specification
- * @return 0 in case of success, -1 in case of error
- */
- protected function init($spec) {
- $dl = $this->rsDataCodes1($spec);
- $el = $this->rsEccCodes1($spec);
- $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
- $blockNo = 0;
- $dataPos = 0;
- $eccPos = 0;
- $endfor = $this->rsBlockNum1($spec);
- for ($i=0; $i < $endfor; ++$i) {
- $ecc = array_slice($this->ecccode, $eccPos);
- $this->rsblocks[$blockNo] = array();
- $this->rsblocks[$blockNo]['dataLength'] = $dl;
- $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos);
- $this->rsblocks[$blockNo]['eccLength'] = $el;
- $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
- $this->rsblocks[$blockNo]['ecc'] = $ecc;
- $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
- $dataPos += $dl;
- $eccPos += $el;
- $blockNo++;
- }
- if ($this->rsBlockNum2($spec) == 0) {
- return 0;
- }
- $dl = $this->rsDataCodes2($spec);
- $el = $this->rsEccCodes2($spec);
- $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
- if ($rs == NULL) {
- return -1;
- }
- $endfor = $this->rsBlockNum2($spec);
- for ($i=0; $i < $endfor; ++$i) {
- $ecc = array_slice($this->ecccode, $eccPos);
- $this->rsblocks[$blockNo] = array();
- $this->rsblocks[$blockNo]['dataLength'] = $dl;
- $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos);
- $this->rsblocks[$blockNo]['eccLength'] = $el;
- $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
- $this->rsblocks[$blockNo]['ecc'] = $ecc;
- $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc);
- $dataPos += $dl;
- $eccPos += $el;
- $blockNo++;
- }
- return 0;
- }
-
- /**
- * Return Reed-Solomon block code.
- * @return array rsblocks
- */
- protected function getCode() {
- if ($this->count < $this->dataLength) {
- $row = $this->count % $this->blocks;
- $col = $this->count / $this->blocks;
- if ($col >= $this->rsblocks[0]['dataLength']) {
- $row += $this->b1;
- }
- $ret = $this->rsblocks[$row]['data'][$col];
- } elseif ($this->count < $this->dataLength + $this->eccLength) {
- $row = ($this->count - $this->dataLength) % $this->blocks;
- $col = ($this->count - $this->dataLength) / $this->blocks;
- $ret = $this->rsblocks[$row]['ecc'][$col];
- } else {
- return 0;
- }
- $this->count++;
- return $ret;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRmask
-
- /**
- * Write Format Information on frame and returns the number of black bits
- * @param int $width frame width
- * @param array $frame frame
- * @param array $mask masking mode
- * @param int $level error correction level
- * @return int blacks
- */
- protected function writeFormatInformation($width, &$frame, $mask, $level) {
- $blacks = 0;
- $format = $this->getFormatInfo($mask, $level);
- for ($i=0; $i<8; ++$i) {
- if ($format & 1) {
- $blacks += 2;
- $v = 0x85;
- } else {
- $v = 0x84;
- }
- $frame[8][$width - 1 - $i] = chr($v);
- if ($i < 6) {
- $frame[$i][8] = chr($v);
- } else {
- $frame[$i + 1][8] = chr($v);
- }
- $format = $format >> 1;
- }
- for ($i=0; $i<7; ++$i) {
- if ($format & 1) {
- $blacks += 2;
- $v = 0x85;
- } else {
- $v = 0x84;
- }
- $frame[$width - 7 + $i][8] = chr($v);
- if ($i == 0) {
- $frame[8][7] = chr($v);
- } else {
- $frame[8][6 - $i] = chr($v);
- }
- $format = $format >> 1;
- }
- return $blacks;
- }
-
- /**
- * mask0
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask0($x, $y) {
- return ($x + $y) & 1;
- }
-
- /**
- * mask1
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask1($x, $y) {
- return ($y & 1);
- }
-
- /**
- * mask2
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask2($x, $y) {
- return ($x % 3);
- }
-
- /**
- * mask3
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask3($x, $y) {
- return ($x + $y) % 3;
- }
-
- /**
- * mask4
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask4($x, $y) {
- return (((int)($y / 2)) + ((int)($x / 3))) & 1;
- }
-
- /**
- * mask5
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask5($x, $y) {
- return (($x * $y) & 1) + ($x * $y) % 3;
- }
-
- /**
- * mask6
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask6($x, $y) {
- return ((($x * $y) & 1) + ($x * $y) % 3) & 1;
- }
-
- /**
- * mask7
- * @param int $x X position
- * @param int $y Y position
- * @return int mask
- */
- protected function mask7($x, $y) {
- return ((($x * $y) % 3) + (($x + $y) & 1)) & 1;
- }
-
- /**
- * Return bitmask
- * @param int $maskNo mask number
- * @param int $width width
- * @param array $frame frame
- * @return array bitmask
- */
- protected function generateMaskNo($maskNo, $width, $frame) {
- $bitMask = array_fill(0, $width, array_fill(0, $width, 0));
- for ($y=0; $y<$width; ++$y) {
- for ($x=0; $x<$width; ++$x) {
- if (ord($frame[$y][$x]) & 0x80) {
- $bitMask[$y][$x] = 0;
- } else {
- $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y);
- $bitMask[$y][$x] = ($maskFunc == 0)?1:0;
- }
- }
- }
- return $bitMask;
- }
-
- /**
- * makeMaskNo
- * @param int $maskNo
- * @param int $width
- * @param int $s
- * @param int $d
- * @param boolean $maskGenOnly
- * @return int b
- */
- protected function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly=false) {
- $b = 0;
- $bitMask = array();
- $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d);
- if ($maskGenOnly) {
- return;
- }
- $d = $s;
- for ($y=0; $y<$width; ++$y) {
- for ($x=0; $x<$width; ++$x) {
- if ($bitMask[$y][$x] == 1) {
- $d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]);
- }
- $b += (int)(ord($d[$y][$x]) & 1);
- }
- }
- return $b;
- }
-
- /**
- * makeMask
- * @param int $width
- * @param array $frame
- * @param int $maskNo
- * @param int $level
- * @return array mask
- */
- protected function makeMask($width, $frame, $maskNo, $level) {
- $masked = array_fill(0, $width, str_repeat("\0", $width));
- $this->makeMaskNo($maskNo, $width, $frame, $masked);
- $this->writeFormatInformation($width, $masked, $maskNo, $level);
- return $masked;
- }
-
- /**
- * calcN1N3
- * @param int $length
- * @return int demerit
- */
- protected function calcN1N3($length) {
- $demerit = 0;
- for ($i=0; $i<$length; ++$i) {
- if ($this->runLength[$i] >= 5) {
- $demerit += (N1 + ($this->runLength[$i] - 5));
- }
- if ($i & 1) {
- if (($i >= 3) AND ($i < ($length-2)) AND ($this->runLength[$i] % 3 == 0)) {
- $fact = (int)($this->runLength[$i] / 3);
- if (($this->runLength[$i-2] == $fact)
- AND ($this->runLength[$i-1] == $fact)
- AND ($this->runLength[$i+1] == $fact)
- AND ($this->runLength[$i+2] == $fact)) {
- if (($this->runLength[$i-3] < 0) OR ($this->runLength[$i-3] >= (4 * $fact))) {
- $demerit += N3;
- } elseif ((($i+3) >= $length) OR ($this->runLength[$i+3] >= (4 * $fact))) {
- $demerit += N3;
- }
- }
- }
- }
- }
- return $demerit;
- }
-
- /**
- * evaluateSymbol
- * @param int $width
- * @param array $frame
- * @return int demerit
- */
- protected function evaluateSymbol($width, $frame) {
- $head = 0;
- $demerit = 0;
- for ($y=0; $y<$width; ++$y) {
- $head = 0;
- $this->runLength[0] = 1;
- $frameY = $frame[$y];
- if ($y > 0) {
- $frameYM = $frame[$y-1];
- }
- for ($x=0; $x<$width; ++$x) {
- if (($x > 0) AND ($y > 0)) {
- $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]);
- $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]);
- if (($b22 | ($w22 ^ 1)) & 1) {
- $demerit += N2;
- }
- }
- if (($x == 0) AND (ord($frameY[$x]) & 1)) {
- $this->runLength[0] = -1;
- $head = 1;
- $this->runLength[$head] = 1;
- } elseif ($x > 0) {
- if ((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) {
- $head++;
- $this->runLength[$head] = 1;
- } else {
- $this->runLength[$head]++;
- }
- }
- }
- $demerit += $this->calcN1N3($head+1);
- }
- for ($x=0; $x<$width; ++$x) {
- $head = 0;
- $this->runLength[0] = 1;
- for ($y=0; $y<$width; ++$y) {
- if (($y == 0) AND (ord($frame[$y][$x]) & 1)) {
- $this->runLength[0] = -1;
- $head = 1;
- $this->runLength[$head] = 1;
- } elseif ($y > 0) {
- if ((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) {
- $head++;
- $this->runLength[$head] = 1;
- } else {
- $this->runLength[$head]++;
- }
- }
- }
- $demerit += $this->calcN1N3($head+1);
- }
- return $demerit;
- }
-
- /**
- * mask
- * @param int $width
- * @param array $frame
- * @param int $level
- * @return array best mask
- */
- protected function mask($width, $frame, $level) {
- $minDemerit = PHP_INT_MAX;
- $bestMaskNum = 0;
- $bestMask = array();
- $checked_masks = array(0, 1, 2, 3, 4, 5, 6, 7);
- if (QR_FIND_FROM_RANDOM !== false) {
- $howManuOut = 8 - (QR_FIND_FROM_RANDOM % 9);
- for ($i = 0; $i < $howManuOut; ++$i) {
- $remPos = rand (0, count($checked_masks)-1);
- unset($checked_masks[$remPos]);
- $checked_masks = array_values($checked_masks);
- }
- }
- $bestMask = $frame;
- foreach ($checked_masks as $i) {
- $mask = array_fill(0, $width, str_repeat("\0", $width));
- $demerit = 0;
- $blacks = 0;
- $blacks = $this->makeMaskNo($i, $width, $frame, $mask);
- $blacks += $this->writeFormatInformation($width, $mask, $i, $level);
- $blacks = (int)(100 * $blacks / ($width * $width));
- $demerit = (int)((int)(abs($blacks - 50) / 5) * N4);
- $demerit += $this->evaluateSymbol($width, $mask);
- if ($demerit < $minDemerit) {
- $minDemerit = $demerit;
- $bestMask = $mask;
- $bestMaskNum = $i;
- }
- }
- return $bestMask;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRsplit
-
- /**
- * Return true if the character at specified position is a number
- * @param string $str string
- * @param int $pos characted position
- * @return boolean true of false
- */
- protected function isdigitat($str, $pos) {
- if ($pos >= strlen($str)) {
- return false;
- }
- return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
- }
-
- /**
- * Return true if the character at specified position is an alphanumeric character
- * @param string $str string
- * @param int $pos characted position
- * @return boolean true of false
- */
- protected function isalnumat($str, $pos) {
- if ($pos >= strlen($str)) {
- return false;
- }
- return ($this->lookAnTable(ord($str[$pos])) >= 0);
- }
-
- /**
- * identifyMode
- * @param int $pos
- * @return int mode
- */
- protected function identifyMode($pos) {
- if ($pos >= strlen($this->dataStr)) {
- return QR_MODE_NL;
- }
- $c = $this->dataStr[$pos];
- if ($this->isdigitat($this->dataStr, $pos)) {
- return QR_MODE_NM;
- } elseif ($this->isalnumat($this->dataStr, $pos)) {
- return QR_MODE_AN;
- } elseif ($this->hint == QR_MODE_KJ) {
- if ($pos+1 < strlen($this->dataStr)) {
- $d = $this->dataStr[$pos+1];
- $word = (ord($c) << 8) | ord($d);
- if (($word >= 0x8140 && $word <= 0x9ffc) OR ($word >= 0xe040 && $word <= 0xebbf)) {
- return QR_MODE_KJ;
- }
- }
- }
- return QR_MODE_8B;
- }
-
- /**
- * eatNum
- * @return int run
- */
- protected function eatNum() {
- $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
- $p = 0;
- while($this->isdigitat($this->dataStr, $p)) {
- $p++;
- }
- $run = $p;
- $mode = $this->identifyMode($p);
- if ($mode == QR_MODE_8B) {
- $dif = $this->estimateBitsModeNum($run) + 4 + $ln
- + $this->estimateBitsMode8(1) // + 4 + l8
- - $this->estimateBitsMode8($run + 1); // - 4 - l8
- if ($dif > 0) {
- return $this->eat8();
- }
- }
- if ($mode == QR_MODE_AN) {
- $dif = $this->estimateBitsModeNum($run) + 4 + $ln
- + $this->estimateBitsModeAn(1) // + 4 + la
- - $this->estimateBitsModeAn($run + 1);// - 4 - la
- if ($dif > 0) {
- return $this->eatAn();
- }
- }
- $this->items = $this->appendNewInputItem($this->items, QR_MODE_NM, $run, str_split($this->dataStr));
- return $run;
- }
-
- /**
- * eatAn
- * @return int run
- */
- protected function eatAn() {
- $la = $this->lengthIndicator(QR_MODE_AN, $this->version);
- $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
- $p = 0;
- while($this->isalnumat($this->dataStr, $p)) {
- if ($this->isdigitat($this->dataStr, $p)) {
- $q = $p;
- while($this->isdigitat($this->dataStr, $q)) {
- $q++;
- }
- $dif = $this->estimateBitsModeAn($p) // + 4 + la
- + $this->estimateBitsModeNum($q - $p) + 4 + $ln
- - $this->estimateBitsModeAn($q); // - 4 - la
- if ($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else {
- $p++;
- }
- }
- $run = $p;
- if (!$this->isalnumat($this->dataStr, $p)) {
- $dif = $this->estimateBitsModeAn($run) + 4 + $la
- + $this->estimateBitsMode8(1) // + 4 + l8
- - $this->estimateBitsMode8($run + 1); // - 4 - l8
- if ($dif > 0) {
- return $this->eat8();
- }
- }
- $this->items = $this->appendNewInputItem($this->items, QR_MODE_AN, $run, str_split($this->dataStr));
- return $run;
- }
-
- /**
- * eatKanji
- * @return int run
- */
- protected function eatKanji() {
- $p = 0;
- while($this->identifyMode($p) == QR_MODE_KJ) {
- $p += 2;
- }
- $this->items = $this->appendNewInputItem($this->items, QR_MODE_KJ, $p, str_split($this->dataStr));
- return $run;
- }
-
- /**
- * eat8
- * @return int run
- */
- protected function eat8() {
- $la = $this->lengthIndicator(QR_MODE_AN, $this->version);
- $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
- $p = 1;
- $dataStrLen = strlen($this->dataStr);
- while($p < $dataStrLen) {
- $mode = $this->identifyMode($p);
- if ($mode == QR_MODE_KJ) {
- break;
- }
- if ($mode == QR_MODE_NM) {
- $q = $p;
- while($this->isdigitat($this->dataStr, $q)) {
- $q++;
- }
- $dif = $this->estimateBitsMode8($p) // + 4 + l8
- + $this->estimateBitsModeNum($q - $p) + 4 + $ln
- - $this->estimateBitsMode8($q); // - 4 - l8
- if ($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } elseif ($mode == QR_MODE_AN) {
- $q = $p;
- while($this->isalnumat($this->dataStr, $q)) {
- $q++;
- }
- $dif = $this->estimateBitsMode8($p) // + 4 + l8
- + $this->estimateBitsModeAn($q - $p) + 4 + $la
- - $this->estimateBitsMode8($q); // - 4 - l8
- if ($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else {
- $p++;
- }
- }
- $run = $p;
- $this->items = $this->appendNewInputItem($this->items, QR_MODE_8B, $run, str_split($this->dataStr));
- return $run;
- }
-
- /**
- * splitString
- */
- protected function splitString() {
- while (strlen($this->dataStr) > 0) {
- if ($this->dataStr == '') {
- return 0;
- }
- $mode = $this->identifyMode(0);
- switch ($mode) {
- case QR_MODE_NM: {
- $length = $this->eatNum();
- break;
- }
- case QR_MODE_AN: {
- $length = $this->eatAn();
- break;
- }
- case QR_MODE_KJ: {
- if ($hint == QR_MODE_KJ) {
- $length = $this->eatKanji();
- } else {
- $length = $this->eat8();
- }
- break;
- }
- default: {
- $length = $this->eat8();
- break;
- }
- }
- if ($length == 0) {
- return 0;
- }
- if ($length < 0) {
- return -1;
- }
- $this->dataStr = substr($this->dataStr, $length);
- }
- }
-
- /**
- * toUpper
- */
- protected function toUpper() {
- $stringLen = strlen($this->dataStr);
- $p = 0;
- while ($p < $stringLen) {
- $mode = $this->identifyMode(substr($this->dataStr, $p), $this->hint);
- if ($mode == QR_MODE_KJ) {
- $p += 2;
- } else {
- if ((ord($this->dataStr[$p]) >= ord('a')) AND (ord($this->dataStr[$p]) <= ord('z'))) {
- $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32);
- }
- $p++;
- }
- }
- return $this->dataStr;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRinputItem
-
- /**
- * newInputItem
- * @param int $mode
- * @param int $size
- * @param array $data
- * @param array $bstream
- * @return array input item
- */
- protected function newInputItem($mode, $size, $data, $bstream=null) {
- $setData = array_slice($data, 0, $size);
- if (count($setData) < $size) {
- $setData = array_merge($setData, array_fill(0, ($size - count($setData)), 0));
- }
- if (!$this->check($mode, $size, $setData)) {
- return NULL;
- }
- $inputitem = array();
- $inputitem['mode'] = $mode;
- $inputitem['size'] = $size;
- $inputitem['data'] = $setData;
- $inputitem['bstream'] = $bstream;
- return $inputitem;
- }
-
- /**
- * encodeModeNum
- * @param array $inputitem
- * @param int $version
- * @return array input item
- */
- protected function encodeModeNum($inputitem, $version) {
- $words = (int)($inputitem['size'] / 3);
- $inputitem['bstream'] = array();
- $val = 0x1;
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_NM, $version), $inputitem['size']);
- for ($i=0; $i < $words; ++$i) {
- $val = (ord($inputitem['data'][$i*3 ]) - ord('0')) * 100;
- $val += (ord($inputitem['data'][$i*3+1]) - ord('0')) * 10;
- $val += (ord($inputitem['data'][$i*3+2]) - ord('0'));
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 10, $val);
- }
- if ($inputitem['size'] - $words * 3 == 1) {
- $val = ord($inputitem['data'][$words*3]) - ord('0');
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
- } elseif (($inputitem['size'] - ($words * 3)) == 2) {
- $val = (ord($inputitem['data'][$words*3 ]) - ord('0')) * 10;
- $val += (ord($inputitem['data'][$words*3+1]) - ord('0'));
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 7, $val);
- }
- return $inputitem;
- }
-
- /**
- * encodeModeAn
- * @param array $inputitem
- * @param int $version
- * @return array input item
- */
- protected function encodeModeAn($inputitem, $version) {
- $words = (int)($inputitem['size'] / 2);
- $inputitem['bstream'] = array();
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x02);
- $inputitem['bstream'] = $this->appendNum(v, $this->lengthIndicator(QR_MODE_AN, $version), $inputitem['size']);
- for ($i=0; $i < $words; ++$i) {
- $val = (int)$this->lookAnTable(ord($inputitem['data'][$i*2 ])) * 45;
- $val += (int)$this->lookAnTable(ord($inputitem['data'][$i*2+1]));
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 11, $val);
- }
- if ($inputitem['size'] & 1) {
- $val = $this->lookAnTable(ord($inputitem['data'][($words * 2)]));
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 6, $val);
- }
- return $inputitem;
- }
-
- /**
- * encodeMode8
- * @param array $inputitem
- * @param int $version
- * @return array input item
- */
- protected function encodeMode8($inputitem, $version) {
- $inputitem['bstream'] = array();
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x4);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_8B, $version), $inputitem['size']);
- for ($i=0; $i < $inputitem['size']; ++$i) {
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][$i]));
- }
- return $inputitem;
- }
-
- /**
- * encodeModeKanji
- * @param array $inputitem
- * @param int $version
- * @return array input item
- */
- protected function encodeModeKanji($inputitem, $version) {
- $inputitem['bstream'] = array();
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x8);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_KJ, $version), (int)($inputitem['size'] / 2));
- for ($i=0; $i<$inputitem['size']; $i+=2) {
- $val = (ord($inputitem['data'][$i]) << 8) | ord($inputitem['data'][$i+1]);
- if ($val <= 0x9ffc) {
- $val -= 0x8140;
- } else {
- $val -= 0xc140;
- }
- $h = ($val >> 8) * 0xc0;
- $val = ($val & 0xff) + $h;
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 13, $val);
- }
- return $inputitem;
- }
-
- /**
- * encodeModeStructure
- * @param array $inputitem
- * @return array input item
- */
- protected function encodeModeStructure($inputitem) {
- $inputitem['bstream'] = array();
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x03);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][1]) - 1);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][0]) - 1);
- $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][2]));
- return $inputitem;
- }
-
- /**
- * encodeBitStream
- * @param array $inputitem
- * @param int $version
- * @return array input item
- */
- protected function encodeBitStream($inputitem, $version) {
- $inputitem['bstream'] = array();
- $words = $this->maximumWords($inputitem['mode'], $version);
- if ($inputitem['size'] > $words) {
- $st1 = $this->newInputItem($inputitem['mode'], $words, $inputitem['data']);
- $st2 = $this->newInputItem($inputitem['mode'], $inputitem['size'] - $words, array_slice($inputitem['data'], $words));
- $st1 = $this->encodeBitStream($st1, $version);
- $st2 = $this->encodeBitStream($st2, $version);
- $inputitem['bstream'] = array();
- $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st1['bstream']);
- $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st2['bstream']);
- } else {
- switch($inputitem['mode']) {
- case QR_MODE_NM: {
- $inputitem = $this->encodeModeNum($inputitem, $version);
- break;
- }
- case QR_MODE_AN: {
- $inputitem = $this->encodeModeAn($inputitem, $version);
- break;
- }
- case QR_MODE_8B: {
- $inputitem = $this->encodeMode8($inputitem, $version);
- break;
- }
- case QR_MODE_KJ: {
- $inputitem = $this->encodeModeKanji($inputitem, $version);
- break;
- }
- case QR_MODE_ST: {
- $inputitem = $this->encodeModeStructure($inputitem);
- break;
- }
- default: {
- break;
- }
- }
- }
- return $inputitem;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRinput
-
- /**
- * Append data to an input object.
- * The data is copied and appended to the input object.
- * @param array items input items
- * @param int $mode encoding mode.
- * @param int $size size of data (byte).
- * @param array $data array of input data.
- * @return items
- *
- */
- protected function appendNewInputItem($items, $mode, $size, $data) {
- $items[] = $this->newInputItem($mode, $size, $data);
- return $items;
- }
-
- /**
- * insertStructuredAppendHeader
- * @param array $items
- * @param int $size
- * @param int $index
- * @param int $parity
- * @return array items
- */
- protected function insertStructuredAppendHeader($items, $size, $index, $parity) {
- if ($size > MAX_STRUCTURED_SYMBOLS) {
- return -1;
- }
- if (($index <= 0) OR ($index > MAX_STRUCTURED_SYMBOLS)) {
- return -1;
- }
- $buf = array($size, $index, $parity);
- $entry = $this->newInputItem(QR_MODE_ST, 3, buf);
- array_unshift($items, $entry);
- return $items;
- }
-
- /**
- * calcParity
- * @param array $items
- * @return int parity
- */
- protected function calcParity($items) {
- $parity = 0;
- foreach ($items as $item) {
- if ($item['mode'] != QR_MODE_ST) {
- for ($i=$item['size']-1; $i>=0; --$i) {
- $parity ^= $item['data'][$i];
- }
- }
- }
- return $parity;
- }
-
- /**
- * checkModeNum
- * @param int $size
- * @param array $data
- * @return boolean true or false
- */
- protected function checkModeNum($size, $data) {
- for ($i=0; $i<$size; ++$i) {
- if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))){
- return false;
- }
- }
- return true;
- }
-
- /**
- * estimateBitsModeNum
- * @param int $size
- * @return int number of bits
- */
- protected function estimateBitsModeNum($size) {
- $w = (int)$size / 3;
- $bits = $w * 10;
- switch($size - $w * 3) {
- case 1: {
- $bits += 4;
- break;
- }
- case 2: {
- $bits += 7;
- break;
- }
- default: {
- break;
- }
- }
- return $bits;
- }
-
- /**
- * Look up the alphabet-numeric convesion table (see JIS X0510:2004, pp.19).
- * @param int $c character value
- * @return value
- */
- protected function lookAnTable($c) {
- return (($c > 127)?-1:$this->anTable[$c]);
- }
-
- /**
- * checkModeAn
- * @param int $size
- * @param array $data
- * @return boolean true or false
- */
- protected function checkModeAn($size, $data) {
- for ($i=0; $i<$size; ++$i) {
- if ($this->lookAnTable(ord($data[$i])) == -1) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * estimateBitsModeAn
- * @param int $size
- * @return int number of bits
- */
- protected function estimateBitsModeAn($size) {
- $w = (int)($size / 2);
- $bits = $w * 11;
- if ($size & 1) {
- $bits += 6;
- }
- return $bits;
- }
-
- /**
- * estimateBitsMode8
- * @param int $size
- * @return int number of bits
- */
- protected function estimateBitsMode8($size) {
- return $size * 8;
- }
-
- /**
- * estimateBitsModeKanji
- * @param int $size
- * @return int number of bits
- */
- protected function estimateBitsModeKanji($size) {
- return (int)(($size / 2) * 13);
- }
-
- /**
- * checkModeKanji
- * @param int $size
- * @param array $data
- * @return boolean true or false
- */
- protected function checkModeKanji($size, $data) {
- if ($size & 1) {
- return false;
- }
- for ($i=0; $i<$size; $i+=2) {
- $val = (ord($data[$i]) << 8) | ord($data[$i+1]);
- if (($val < 0x8140) OR (($val > 0x9ffc) AND ($val < 0xe040)) OR ($val > 0xebbf)) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Validate the input data.
- * @param int $mode encoding mode.
- * @param int $size size of data (byte).
- * @param array data data to validate
- * @return boolean true in case of valid data, false otherwise
- */
- protected function check($mode, $size, $data) {
- if ($size <= 0) {
- return false;
- }
- switch($mode) {
- case QR_MODE_NM: {
- return $this->checkModeNum($size, $data);
- }
- case QR_MODE_AN: {
- return $this->checkModeAn($size, $data);
- }
- case QR_MODE_KJ: {
- return $this->checkModeKanji($size, $data);
- }
- case QR_MODE_8B: {
- return true;
- }
- case QR_MODE_ST: {
- return true;
- }
- default: {
- break;
- }
- }
- return false;
- }
-
- /**
- * estimateBitStreamSize
- * @param array $items
- * @param int $version
- * @return int bits
- */
- protected function estimateBitStreamSize($items, $version) {
- $bits = 0;
- if ($version == 0) {
- $version = 1;
- }
- foreach ($items as $item) {
- switch($item['mode']) {
- case QR_MODE_NM: {
- $bits = $this->estimateBitsModeNum($item['size']);
- break;
- }
- case QR_MODE_AN: {
- $bits = $this->estimateBitsModeAn($item['size']);
- break;
- }
- case QR_MODE_8B: {
- $bits = $this->estimateBitsMode8($item['size']);
- break;
- }
- case QR_MODE_KJ: {
- $bits = $this->estimateBitsModeKanji($item['size']);
- break;
- }
- case QR_MODE_ST: {
- return STRUCTURE_HEADER_BITS;
- }
- default: {
- return 0;
- }
- }
- $l = $this->lengthIndicator($item['mode'], $version);
- $m = 1 << $l;
- $num = (int)(($item['size'] + $m - 1) / $m);
- $bits += $num * (4 + $l);
- }
- return $bits;
- }
-
- /**
- * estimateVersion
- * @param array $items
- * @return int version
- */
- protected function estimateVersion($items) {
- $version = 0;
- $prev = 0;
- do {
- $prev = $version;
- $bits = $this->estimateBitStreamSize($items, $prev);
- $version = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
- if ($version < 0) {
- return -1;
- }
- } while ($version > $prev);
- return $version;
- }
-
- /**
- * lengthOfCode
- * @param int $mode
- * @param int $version
- * @param int $bits
- * @return int size
- */
- protected function lengthOfCode($mode, $version, $bits) {
- $payload = $bits - 4 - $this->lengthIndicator($mode, $version);
- switch($mode) {
- case QR_MODE_NM: {
- $chunks = (int)($payload / 10);
- $remain = $payload - $chunks * 10;
- $size = $chunks * 3;
- if ($remain >= 7) {
- $size += 2;
- } elseif ($remain >= 4) {
- $size += 1;
- }
- break;
- }
- case QR_MODE_AN: {
- $chunks = (int)($payload / 11);
- $remain = $payload - $chunks * 11;
- $size = $chunks * 2;
- if ($remain >= 6) {
- ++$size;
- }
- break;
- }
- case QR_MODE_8B: {
- $size = (int)($payload / 8);
- break;
- }
- case QR_MODE_KJ: {
- $size = (int)(($payload / 13) * 2);
- break;
- }
- case QR_MODE_ST: {
- $size = (int)($payload / 8);
- break;
- }
- default: {
- $size = 0;
- break;
- }
- }
- $maxsize = $this->maximumWords($mode, $version);
- if ($size < 0) {
- $size = 0;
- }
- if ($size > $maxsize) {
- $size = $maxsize;
- }
- return $size;
- }
-
- /**
- * createBitStream
- * @param array $items
- * @return array of items and total bits
- */
- protected function createBitStream($items) {
- $total = 0;
- foreach ($items as $key => $item) {
- $items[$key] = $this->encodeBitStream($item, $this->version);
- $bits = count($items[$key]['bstream']);
- $total += $bits;
- }
- return array($items, $total);
- }
-
- /**
- * convertData
- * @param array $items
- * @return array items
- */
- protected function convertData($items) {
- $ver = $this->estimateVersion($items);
- if ($ver > $this->version) {
- $this->version = $ver;
- }
- for (;;) {
- $cbs = $this->createBitStream($items);
- $items = $cbs[0];
- $bits = $cbs[1];
- if ($bits < 0) {
- return -1;
- }
- $ver = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
- if ($ver < 0) {
- return -1;
- } elseif ($ver > $this->version) {
- $this->version = $ver;
- } else {
- break;
- }
- }
- return $items;
- }
-
- /**
- * Append Padding Bit to bitstream
- * @param array $bstream
- * @return array bitstream
- */
- protected function appendPaddingBit($bstream) {
- $bits = count($bstream);
- $maxwords = $this->getDataLength($this->version, $this->level);
- $maxbits = $maxwords * 8;
- if ($maxbits == $bits) {
- return 0;
- }
- if ($maxbits - $bits < 5) {
- return $this->appendNum($bstream, $maxbits - $bits, 0);
- }
- $bits += 4;
- $words = (int)(($bits + 7) / 8);
- $padding = array();
- $padding = $this->appendNum($padding, $words * 8 - $bits + 4, 0);
- $padlen = $maxwords - $words;
- if ($padlen > 0) {
- $padbuf = array();
- for ($i=0; $i<$padlen; ++$i) {
- $padbuf[$i] = ($i&1)?0x11:0xec;
- }
- $padding = $this->appendBytes($padding, $padlen, $padbuf);
- }
- return $this->appendBitstream($bstream, $padding);
- }
-
- /**
- * mergeBitStream
- * @param array $bstream
- * @return array bitstream
- */
- protected function mergeBitStream($items) {
- $items = $this->convertData($items);
- $bstream = array();
- foreach ($items as $item) {
- $bstream = $this->appendBitstream($bstream, $item['bstream']);
- }
- return $bstream;
- }
-
- /**
- * Returns a stream of bits.
- * @param int $items
- * @return array padded merged byte stream
- */
- protected function getBitStream($items) {
- $bstream = $this->mergeBitStream($items);
- return $this->appendPaddingBit($bstream);
- }
-
- /**
- * Pack all bit streams padding bits into a byte array.
- * @param int $items
- * @return array padded merged byte stream
- */
- protected function getByteStream($items) {
- $bstream = $this->getBitStream($items);
- return $this->bitstreamToByte($bstream);
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRbitstream
-
- /**
- * Return an array with zeros
- * @param int $setLength array size
- * @return array
- */
- protected function allocate($setLength) {
- return array_fill(0, $setLength, 0);
- }
-
- /**
- * Return new bitstream from number
- * @param int $bits number of bits
- * @param int $num number
- * @return array bitstream
- */
- protected function newFromNum($bits, $num) {
- $bstream = $this->allocate($bits);
- $mask = 1 << ($bits - 1);
- for ($i=0; $i<$bits; ++$i) {
- if ($num & $mask) {
- $bstream[$i] = 1;
- } else {
- $bstream[$i] = 0;
- }
- $mask = $mask >> 1;
- }
- return $bstream;
- }
-
- /**
- * Return new bitstream from bytes
- * @param int $size size
- * @param array $data bytes
- * @return array bitstream
- */
- protected function newFromBytes($size, $data) {
- $bstream = $this->allocate($size * 8);
- $p=0;
- for ($i=0; $i<$size; ++$i) {
- $mask = 0x80;
- for ($j=0; $j<8; ++$j) {
- if ($data[$i] & $mask) {
- $bstream[$p] = 1;
- } else {
- $bstream[$p] = 0;
- }
- $p++;
- $mask = $mask >> 1;
- }
- }
- return $bstream;
- }
-
- /**
- * Append one bitstream to another
- * @param array $bitstream original bitstream
- * @param array $append bitstream to append
- * @return array bitstream
- */
- protected function appendBitstream($bitstream, $append) {
- if ((!is_array($append)) OR (count($append) == 0)) {
- return $bitstream;
- }
- if (count($bitstream) == 0) {
- return $append;
- }
- return array_values(array_merge($bitstream, $append));
- }
-
- /**
- * Append one bitstream created from number to another
- * @param array $bitstream original bitstream
- * @param int $bits number of bits
- * @param int $num number
- * @return array bitstream
- */
- protected function appendNum($bitstream, $bits, $num) {
- if ($bits == 0) {
- return 0;
- }
- $b = $this->newFromNum($bits, $num);
- return $this->appendBitstream($bitstream, $b);
- }
-
- /**
- * Append one bitstream created from bytes to another
- * @param array $bitstream original bitstream
- * @param int $size size
- * @param array $data bytes
- * @return array bitstream
- */
- protected function appendBytes($bitstream, $size, $data) {
- if ($size == 0) {
- return 0;
- }
- $b = $this->newFromBytes($size, $data);
- return $this->appendBitstream($bitstream, $b);
- }
-
- /**
- * Convert bitstream to bytes
- * @param array $bitstream original bitstream
- * @return array of bytes
- */
- protected function bitstreamToByte($bstream) {
- $size = count($bstream);
- if ($size == 0) {
- return array();
- }
- $data = array_fill(0, (int)(($size + 7) / 8), 0);
- $bytes = (int)($size / 8);
- $p = 0;
- for ($i=0; $i<$bytes; $i++) {
- $v = 0;
- for ($j=0; $j<8; $j++) {
- $v = $v << 1;
- $v |= $bstream[$p];
- $p++;
- }
- $data[$i] = $v;
- }
- if ($size & 7) {
- $v = 0;
- for ($j=0; $j<($size & 7); $j++) {
- $v = $v << 1;
- $v |= $bstream[$p];
- $p++;
- }
- $data[$bytes] = $v;
- }
- return $data;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRspec
-
- /**
- * Replace a value on the array at the specified position
- * @param array $srctab
- * @param int $x X position
- * @param int $y Y position
- * @param string $repl value to replace
- * @param int $replLen length of the repl string
- * @return array srctab
- */
- protected function qrstrset($srctab, $x, $y, $repl, $replLen=false) {
- $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl));
- return $srctab;
- }
-
- /**
- * Return maximum data code length (bytes) for the version.
- * @param int $version version
- * @param int $level error correction level
- * @return int maximum size (bytes)
- */
- protected function getDataLength($version, $level) {
- return $this->capacity[$version][QRCAP_WORDS] - $this->capacity[$version][QRCAP_EC][$level];
- }
-
- /**
- * Return maximum error correction code length (bytes) for the version.
- * @param int $version version
- * @param int $level error correction level
- * @return int ECC size (bytes)
- */
- protected function getECCLength($version, $level){
- return $this->capacity[$version][QRCAP_EC][$level];
- }
-
- /**
- * Return the width of the symbol for the version.
- * @param int $version version
- * @return int width
- */
- protected function getWidth($version) {
- return $this->capacity[$version][QRCAP_WIDTH];
- }
-
- /**
- * Return the numer of remainder bits.
- * @param int $version version
- * @return int number of remainder bits
- */
- protected function getRemainder($version) {
- return $this->capacity[$version][QRCAP_REMINDER];
- }
-
- /**
- * Return a version number that satisfies the input code length.
- * @param int $size input code length (byte)
- * @param int $level error correction level
- * @return int version number
- */
- protected function getMinimumVersion($size, $level) {
- for ($i=1; $i <= QRSPEC_VERSION_MAX; ++$i) {
- $words = $this->capacity[$i][QRCAP_WORDS] - $this->capacity[$i][QRCAP_EC][$level];
- if ($words >= $size) {
- return $i;
- }
- }
- return -1;
- }
-
- /**
- * Return the size of length indicator for the mode and version.
- * @param int $mode encoding mode
- * @param int $version version
- * @return int the size of the appropriate length indicator (bits).
- */
- protected function lengthIndicator($mode, $version) {
- if ($mode == QR_MODE_ST) {
- return 0;
- }
- if ($version <= 9) {
- $l = 0;
- } elseif ($version <= 26) {
- $l = 1;
- } else {
- $l = 2;
- }
- return $this->lengthTableBits[$mode][$l];
- }
-
- /**
- * Return the maximum length for the mode and version.
- * @param int $mode encoding mode
- * @param int $version version
- * @return int the maximum length (bytes)
- */
- protected function maximumWords($mode, $version) {
- if ($mode == QR_MODE_ST) {
- return 3;
- }
- if ($version <= 9) {
- $l = 0;
- } else if ($version <= 26) {
- $l = 1;
- } else {
- $l = 2;
- }
- $bits = $this->lengthTableBits[$mode][$l];
- $words = (1 << $bits) - 1;
- if ($mode == QR_MODE_KJ) {
- $words *= 2; // the number of bytes is required
- }
- return $words;
- }
-
- /**
- * Return an array of ECC specification.
- * @param int $version version
- * @param int $level error correction level
- * @param array $spec an array of ECC specification contains as following: {# of type1 blocks, # of data code, # of ecc code, # of type2 blocks, # of data code}
- * @return array spec
- */
- protected function getEccSpec($version, $level, $spec) {
- if (count($spec) < 5) {
- $spec = array(0, 0, 0, 0, 0);
- }
- $b1 = $this->eccTable[$version][$level][0];
- $b2 = $this->eccTable[$version][$level][1];
- $data = $this->getDataLength($version, $level);
- $ecc = $this->getECCLength($version, $level);
- if ($b2 == 0) {
- $spec[0] = $b1;
- $spec[1] = (int)($data / $b1);
- $spec[2] = (int)($ecc / $b1);
- $spec[3] = 0;
- $spec[4] = 0;
- } else {
- $spec[0] = $b1;
- $spec[1] = (int)($data / ($b1 + $b2));
- $spec[2] = (int)($ecc / ($b1 + $b2));
- $spec[3] = $b2;
- $spec[4] = $spec[1] + 1;
- }
- return $spec;
- }
-
- /**
- * Put an alignment marker.
- * @param array $frame frame
- * @param int $width width
- * @param int $ox X center coordinate of the pattern
- * @param int $oy Y center coordinate of the pattern
- * @return array frame
- */
- protected function putAlignmentMarker($frame, $ox, $oy) {
- $finder = array(
- "\xa1\xa1\xa1\xa1\xa1",
- "\xa1\xa0\xa0\xa0\xa1",
- "\xa1\xa0\xa1\xa0\xa1",
- "\xa1\xa0\xa0\xa0\xa1",
- "\xa1\xa1\xa1\xa1\xa1"
- );
- $yStart = $oy - 2;
- $xStart = $ox - 2;
- for ($y=0; $y < 5; $y++) {
- $frame = $this->qrstrset($frame, $xStart, $yStart+$y, $finder[$y]);
- }
- return $frame;
- }
-
- /**
- * Put an alignment pattern.
- * @param int $version version
- * @param array $fram frame
- * @param int $width width
- * @return array frame
- */
- protected function putAlignmentPattern($version, $frame, $width) {
- if ($version < 2) {
- return $frame;
- }
- $d = $this->alignmentPattern[$version][1] - $this->alignmentPattern[$version][0];
- if ($d < 0) {
- $w = 2;
- } else {
- $w = (int)(($width - $this->alignmentPattern[$version][0]) / $d + 2);
- }
- if ($w * $w - 3 == 1) {
- $x = $this->alignmentPattern[$version][0];
- $y = $this->alignmentPattern[$version][0];
- $frame = $this->putAlignmentMarker($frame, $x, $y);
- return $frame;
- }
- $cx = $this->alignmentPattern[$version][0];
- $wo = $w - 1;
- for ($x=1; $x < $wo; ++$x) {
- $frame = $this->putAlignmentMarker($frame, 6, $cx);
- $frame = $this->putAlignmentMarker($frame, $cx, 6);
- $cx += $d;
- }
- $cy = $this->alignmentPattern[$version][0];
- for ($y=0; $y < $wo; ++$y) {
- $cx = $this->alignmentPattern[$version][0];
- for ($x=0; $x < $wo; ++$x) {
- $frame = $this->putAlignmentMarker($frame, $cx, $cy);
- $cx += $d;
- }
- $cy += $d;
- }
- return $frame;
- }
-
- /**
- * Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. Use lower 18 bits.
- * @param int $version version
- * @return BCH encoded version information pattern
- */
- protected function getVersionPattern($version) {
- if (($version < 7) OR ($version > QRSPEC_VERSION_MAX)) {
- return 0;
- }
- return $this->versionPattern[($version - 7)];
- }
-
- /**
- * Return BCH encoded format information pattern.
- * @param array $mask
- * @param int $level error correction level
- * @return BCH encoded format information pattern
- */
- protected function getFormatInfo($mask, $level) {
- if (($mask < 0) OR ($mask > 7)) {
- return 0;
- }
- if (($level < 0) OR ($level > 3)) {
- return 0;
- }
- return $this->formatInfo[$level][$mask];
- }
-
- /**
- * Put a finder pattern.
- * @param array $frame frame
- * @param int $width width
- * @param int $ox X center coordinate of the pattern
- * @param int $oy Y center coordinate of the pattern
- * @return array frame
- */
- protected function putFinderPattern($frame, $ox, $oy) {
- $finder = array(
- "\xc1\xc1\xc1\xc1\xc1\xc1\xc1",
- "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
- "\xc1\xc1\xc1\xc1\xc1\xc1\xc1"
- );
- for ($y=0; $y < 7; $y++) {
- $frame = $this->qrstrset($frame, $ox, ($oy + $y), $finder[$y]);
- }
- return $frame;
- }
-
- /**
- * Return a copy of initialized frame.
- * @param int $version version
- * @return Array of unsigned char.
- */
- protected function createFrame($version) {
- $width = $this->capacity[$version][QRCAP_WIDTH];
- $frameLine = str_repeat ("\0", $width);
- $frame = array_fill(0, $width, $frameLine);
- // Finder pattern
- $frame = $this->putFinderPattern($frame, 0, 0);
- $frame = $this->putFinderPattern($frame, $width - 7, 0);
- $frame = $this->putFinderPattern($frame, 0, $width - 7);
- // Separator
- $yOffset = $width - 7;
- for ($y=0; $y < 7; ++$y) {
- $frame[$y][7] = "\xc0";
- $frame[$y][$width - 8] = "\xc0";
- $frame[$yOffset][7] = "\xc0";
- ++$yOffset;
- }
- $setPattern = str_repeat("\xc0", 8);
- $frame = $this->qrstrset($frame, 0, 7, $setPattern);
- $frame = $this->qrstrset($frame, $width-8, 7, $setPattern);
- $frame = $this->qrstrset($frame, 0, $width - 8, $setPattern);
- // Format info
- $setPattern = str_repeat("\x84", 9);
- $frame = $this->qrstrset($frame, 0, 8, $setPattern);
- $frame = $this->qrstrset($frame, $width - 8, 8, $setPattern, 8);
- $yOffset = $width - 8;
- for ($y=0; $y < 8; ++$y,++$yOffset) {
- $frame[$y][8] = "\x84";
- $frame[$yOffset][8] = "\x84";
- }
- // Timing pattern
- $wo = $width - 15;
- for ($i=1; $i < $wo; ++$i) {
- $frame[6][7+$i] = chr(0x90 | ($i & 1));
- $frame[7+$i][6] = chr(0x90 | ($i & 1));
- }
- // Alignment pattern
- $frame = $this->putAlignmentPattern($version, $frame, $width);
- // Version information
- if ($version >= 7) {
- $vinf = $this->getVersionPattern($version);
- $v = $vinf;
- for ($x=0; $x<6; ++$x) {
- for ($y=0; $y<3; ++$y) {
- $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1));
- $v = $v >> 1;
- }
- }
- $v = $vinf;
- for ($y=0; $y<6; ++$y) {
- for ($x=0; $x<3; ++$x) {
- $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1));
- $v = $v >> 1;
- }
- }
- }
- // and a little bit...
- $frame[$width - 8][8] = "\x81";
- return $frame;
- }
-
- /**
- * Set new frame for the specified version.
- * @param int $version version
- * @return Array of unsigned char.
- */
- protected function newFrame($version) {
- if (($version < 1) OR ($version > QRSPEC_VERSION_MAX)) {
- return NULL;
- }
- if (!isset($this->frames[$version])) {
- $this->frames[$version] = $this->createFrame($version);
- }
- if (is_null($this->frames[$version])) {
- return NULL;
- }
- return $this->frames[$version];
- }
-
- /**
- * Return block number 0
- * @param array $spec
- * @return int value
- */
- protected function rsBlockNum($spec) {
- return ($spec[0] + $spec[3]);
- }
-
- /**
- * Return block number 1
- * @param array $spec
- * @return int value
- */
- protected function rsBlockNum1($spec) {
- return $spec[0];
- }
-
- /**
- * Return data codes 1
- * @param array $spec
- * @return int value
- */
- protected function rsDataCodes1($spec) {
- return $spec[1];
- }
-
- /**
- * Return ecc codes 1
- * @param array $spec
- * @return int value
- */
- protected function rsEccCodes1($spec) {
- return $spec[2];
- }
-
- /**
- * Return block number 2
- * @param array $spec
- * @return int value
- */
- protected function rsBlockNum2($spec) {
- return $spec[3];
- }
-
- /**
- * Return data codes 2
- * @param array $spec
- * @return int value
- */
- protected function rsDataCodes2($spec) {
- return $spec[4];
- }
-
- /**
- * Return ecc codes 2
- * @param array $spec
- * @return int value
- */
- protected function rsEccCodes2($spec) {
- return $spec[2];
- }
-
- /**
- * Return data length
- * @param array $spec
- * @return int value
- */
- protected function rsDataLength($spec) {
- return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]);
- }
-
- /**
- * Return ecc length
- * @param array $spec
- * @return int value
- */
- protected function rsEccLength($spec) {
- return ($spec[0] + $spec[3]) * $spec[2];
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRrs
-
- /**
- * Initialize a Reed-Solomon codec and add it to existing rsitems
- * @param int $symsize symbol size, bits
- * @param int $gfpoly Field generator polynomial coefficients
- * @param int $fcr first root of RS code generator polynomial, index form
- * @param int $prim primitive element to generate polynomial roots
- * @param int $nroots RS code generator polynomial degree (number of roots)
- * @param int $pad padding bytes at front of shortened block
- * @return array Array of RS values:<ul><li>mm = Bits per symbol;</li><li>nn = Symbols per block;</li><li>alpha_to = log lookup table array;</li><li>index_of = Antilog lookup table array;</li><li>genpoly = Generator polynomial array;</li><li>nroots = Number of generator;</li><li>roots = number of parity symbols;</li><li>fcr = First consecutive root, index form;</li><li>prim = Primitive element, index form;</li><li>iprim = prim-th root of 1, index form;</li><li>pad = Padding bytes in shortened block;</li><li>gfpoly</ul>.
- */
- protected function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
- foreach ($this->rsitems as $rs) {
- if (($rs['pad'] != $pad) OR ($rs['nroots'] != $nroots) OR ($rs['mm'] != $symsize)
- OR ($rs['gfpoly'] != $gfpoly) OR ($rs['fcr'] != $fcr) OR ($rs['prim'] != $prim)) {
- continue;
- }
- return $rs;
- }
- $rs = $this->init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad);
- array_unshift($this->rsitems, $rs);
- return $rs;
- }
-
- // - - - - - - - - - - - - - - - - - - - - - - - - -
-
- // QRrsItem
-
- /**
- * modnn
- * @param array RS values
- * @param int $x X position
- * @return int X osition
- */
- protected function modnn($rs, $x) {
- while ($x >= $rs['nn']) {
- $x -= $rs['nn'];
- $x = ($x >> $rs['mm']) + ($x & $rs['nn']);
- }
- return $x;
- }
-
- /**
- * Initialize a Reed-Solomon codec and returns an array of values.
- * @param int $symsize symbol size, bits
- * @param int $gfpoly Field generator polynomial coefficients
- * @param int $fcr first root of RS code generator polynomial, index form
- * @param int $prim primitive element to generate polynomial roots
- * @param int $nroots RS code generator polynomial degree (number of roots)
- * @param int $pad padding bytes at front of shortened block
- * @return array Array of RS values:<ul><li>mm = Bits per symbol;</li><li>nn = Symbols per block;</li><li>alpha_to = log lookup table array;</li><li>index_of = Antilog lookup table array;</li><li>genpoly = Generator polynomial array;</li><li>nroots = Number of generator;</li><li>roots = number of parity symbols;</li><li>fcr = First consecutive root, index form;</li><li>prim = Primitive element, index form;</li><li>iprim = prim-th root of 1, index form;</li><li>pad = Padding bytes in shortened block;</li><li>gfpoly</ul>.
- */
- protected function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
- // Based on Reed solomon encoder by Phil Karn, KA9Q (GNU-LGPLv2)
- $rs = null;
- // Check parameter ranges
- if (($symsize < 0) OR ($symsize > 8)) {
- return $rs;
- }
- if (($fcr < 0) OR ($fcr >= (1<<$symsize))) {
- return $rs;
- }
- if (($prim <= 0) OR ($prim >= (1<<$symsize))) {
- return $rs;
- }
- if (($nroots < 0) OR ($nroots >= (1<<$symsize))) {
- return $rs;
- }
- if (($pad < 0) OR ($pad >= ((1<<$symsize) -1 - $nroots))) {
- return $rs;
- }
- $rs = array();
- $rs['mm'] = $symsize;
- $rs['nn'] = (1 << $symsize) - 1;
- $rs['pad'] = $pad;
- $rs['alpha_to'] = array_fill(0, ($rs['nn'] + 1), 0);
- $rs['index_of'] = array_fill(0, ($rs['nn'] + 1), 0);
- // PHP style macro replacement ;)
- $NN =& $rs['nn'];
- $A0 =& $NN;
- // Generate Galois field lookup tables
- $rs['index_of'][0] = $A0; // log(zero) = -inf
- $rs['alpha_to'][$A0] = 0; // alpha**-inf = 0
- $sr = 1;
- for ($i=0; $i<$rs['nn']; ++$i) {
- $rs['index_of'][$sr] = $i;
- $rs['alpha_to'][$i] = $sr;
- $sr <<= 1;
- if ($sr & (1 << $symsize)) {
- $sr ^= $gfpoly;
- }
- $sr &= $rs['nn'];
- }
- if ($sr != 1) {
- // field generator polynomial is not primitive!
- return NULL;
- }
- // Form RS code generator polynomial from its roots
- $rs['genpoly'] = array_fill(0, ($nroots + 1), 0);
- $rs['fcr'] = $fcr;
- $rs['prim'] = $prim;
- $rs['nroots'] = $nroots;
- $rs['gfpoly'] = $gfpoly;
- // Find prim-th root of 1, used in decoding
- for ($iprim=1; ($iprim % $prim) != 0; $iprim += $rs['nn']) {
- ; // intentional empty-body loop!
- }
- $rs['iprim'] = (int)($iprim / $prim);
- $rs['genpoly'][0] = 1;
-
-
- for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) {
- $rs['genpoly'][$i+1] = 1;
- // Multiply rs->genpoly[] by @**(root + x)
- for ($j = $i; $j > 0; --$j) {
- if ($rs['genpoly'][$j] != 0) {
- $rs['genpoly'][$j] = $rs['genpoly'][$j-1] ^ $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][$j]] + $root)];
- } else {
- $rs['genpoly'][$j] = $rs['genpoly'][$j-1];
- }
- }
- // rs->genpoly[0] can never be zero
- $rs['genpoly'][0] = $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][0]] + $root)];
- }
- // convert rs->genpoly[] to index form for quicker encoding
- for ($i = 0; $i <= $nroots; ++$i) {
- $rs['genpoly'][$i] = $rs['index_of'][$rs['genpoly'][$i]];
- }
- return $rs;
- }
-
- /**
- * Encode a Reed-Solomon codec and returns the parity array
- * @param array $rs RS values
- * @param array $data data
- * @param array $parity parity
- * @return parity array
- */
- protected function encode_rs_char($rs, $data, $parity) {
- $MM =& $rs['mm']; // bits per symbol
- $NN =& $rs['nn']; // the total number of symbols in a RS block
- $ALPHA_TO =& $rs['alpha_to']; // the address of an array of NN elements to convert Galois field elements in index (log) form to polynomial form
- $INDEX_OF =& $rs['index_of']; // the address of an array of NN elements to convert Galois field elements in polynomial form to index (log) form
- $GENPOLY =& $rs['genpoly']; // an array of NROOTS+1 elements containing the generator polynomial in index form
- $NROOTS =& $rs['nroots']; // the number of roots in the RS code generator polynomial, which is the same as the number of parity symbols in a block
- $FCR =& $rs['fcr']; // first consecutive root, index form
- $PRIM =& $rs['prim']; // primitive element, index form
- $IPRIM =& $rs['iprim']; // prim-th root of 1, index form
- $PAD =& $rs['pad']; // the number of pad symbols in a block
- $A0 =& $NN;
- $parity = array_fill(0, $NROOTS, 0);
- for ($i=0; $i < ($NN - $NROOTS - $PAD); $i++) {
- $feedback = $INDEX_OF[$data[$i] ^ $parity[0]];
- if ($feedback != $A0) {
- // feedback term is non-zero
- // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
- // always be for the polynomials constructed by init_rs()
- $feedback = $this->modnn($rs, $NN - $GENPOLY[$NROOTS] + $feedback);
- for ($j=1; $j < $NROOTS; ++$j) {
- $parity[$j] ^= $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[($NROOTS - $j)])];
- }
- }
- // Shift
- array_shift($parity);
- if ($feedback != $A0) {
- array_push($parity, $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[0])]);
- } else {
- array_push($parity, 0);
- }
- }
- return $parity;
- }
-
- } // end QRcode class
-
-} // END OF "class_exists QRcode"
-?>
diff --git a/library/phpqrcode/cache/frame_1.dat b/library/phpqrcode/cache/frame_1.dat
deleted file mode 100644
index be28feac4..000000000
--- a/library/phpqrcode/cache/frame_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚÁ À E9³u`³"PÅ„CÛ牗T!0$
-E•É²Q™Ém½úhÛ¾9{kI"› 9Ln)Ap¤åÖ¾Ë>ß^‡Õz³mënÅ–;ü´mßn†ú¦Ë \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_1.png b/library/phpqrcode/cache/frame_1.png
deleted file mode 100644
index 86ce6e98d..000000000
--- a/library/phpqrcode/cache/frame_1.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_10.dat b/library/phpqrcode/cache/frame_10.dat
deleted file mode 100644
index aff163f68..000000000
--- a/library/phpqrcode/cache/frame_10.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_10.png b/library/phpqrcode/cache/frame_10.png
deleted file mode 100644
index dbfcd70b5..000000000
--- a/library/phpqrcode/cache/frame_10.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_11.dat b/library/phpqrcode/cache/frame_11.dat
deleted file mode 100644
index 95af68a47..000000000
--- a/library/phpqrcode/cache/frame_11.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_11.png b/library/phpqrcode/cache/frame_11.png
deleted file mode 100644
index c07c761f1..000000000
--- a/library/phpqrcode/cache/frame_11.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_12.dat b/library/phpqrcode/cache/frame_12.dat
deleted file mode 100644
index 73228b362..000000000
--- a/library/phpqrcode/cache/frame_12.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_12.png b/library/phpqrcode/cache/frame_12.png
deleted file mode 100644
index 8ba67822c..000000000
--- a/library/phpqrcode/cache/frame_12.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_13.dat b/library/phpqrcode/cache/frame_13.dat
deleted file mode 100644
index 2256f0e34..000000000
--- a/library/phpqrcode/cache/frame_13.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_13.png b/library/phpqrcode/cache/frame_13.png
deleted file mode 100644
index 6e49d35a0..000000000
--- a/library/phpqrcode/cache/frame_13.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_14.dat b/library/phpqrcode/cache/frame_14.dat
deleted file mode 100644
index e9ae09329..000000000
--- a/library/phpqrcode/cache/frame_14.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_14.png b/library/phpqrcode/cache/frame_14.png
deleted file mode 100644
index efc36c034..000000000
--- a/library/phpqrcode/cache/frame_14.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_15.dat b/library/phpqrcode/cache/frame_15.dat
deleted file mode 100644
index 18727818d..000000000
--- a/library/phpqrcode/cache/frame_15.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_15.png b/library/phpqrcode/cache/frame_15.png
deleted file mode 100644
index a9f416c7c..000000000
--- a/library/phpqrcode/cache/frame_15.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_16.dat b/library/phpqrcode/cache/frame_16.dat
deleted file mode 100644
index 60af67845..000000000
--- a/library/phpqrcode/cache/frame_16.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí™A„ E]sëIX´;¸Ün6€È`‚q”êêW6ñ奚`Œ%A/3!¢°‚¢Š!g–ÈÌ¡’1N) éE¢Ï|;®—>6â¸Þ97$ëÄôëc]kköwé1Öü[·m­CÍœcÊRºÄê¹>¦èµ¾šE,•hʼnp„#áxFyWÏÇVWGçòÕ3¼Õ+шþàË“úSŽâ}Äž#áG8b^c^cÏÀŽp„c&3YQ"ñŽ÷çÌvµù›…ñàÎþþ¼–¹kÞ9ŠÜ‡÷}”¹³ï×ú ¢Ä¿QäÿL—/ÝÔÀÏ \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_16.png b/library/phpqrcode/cache/frame_16.png
deleted file mode 100644
index 6ac8fe890..000000000
--- a/library/phpqrcode/cache/frame_16.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_17.dat b/library/phpqrcode/cache/frame_17.dat
deleted file mode 100644
index 87f0cf593..000000000
--- a/library/phpqrcode/cache/frame_17.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_17.png b/library/phpqrcode/cache/frame_17.png
deleted file mode 100644
index 5b929ac73..000000000
--- a/library/phpqrcode/cache/frame_17.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_18.dat b/library/phpqrcode/cache/frame_18.dat
deleted file mode 100644
index bb7138c1d..000000000
--- a/library/phpqrcode/cache/frame_18.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí™A
-ƒ0E]çÖ…,2;sƒä&ÉÍšh¥ÛêO¡ôÝÈàã1&09OIv@DDÒ Ì&§Ù‰KXÈÕFv•<Ádqò9Ö<%h•¹ Yïs !(d¥²ës;~||b(ÏøYůg#µ`œK ±S¼Åô¹Ä¶˜ùsàidßLg:Ó™Îtþ/gmª™ƒkÅMâ3³{­4rTÈQýÿe¥·s·>ó<Ó™Ît¦3éÌ;ïH¼#Ñ™Ît¦3ÍYœ+og©hù¶óµÙ½¬lnðûF>Øi^»#awm;gè~pÛgìNs{6z’‘»ãºïÞäp¾Ê' \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_18.png b/library/phpqrcode/cache/frame_18.png
deleted file mode 100644
index ee0d6a35e..000000000
--- a/library/phpqrcode/cache/frame_18.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_19.dat b/library/phpqrcode/cache/frame_19.dat
deleted file mode 100644
index 95e26adc1..000000000
--- a/library/phpqrcode/cache/frame_19.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíšA
-Ä E»öÖ.ÌNo 7Ñ›¶iiRÚN2‹áW%ðxÁ@ÚÚœê'­
-u6×êˆ.*S;}˜«ÒàÏT úèÌzrt¹ï%ç,ÒÅÚâÎ}ç;“âç)¹Ÿ˜âÝZÚîLåè¹÷¬Pçç$¯×÷ÏqËgœLÂôdJ‡;Üáw¸Ãý.]z#Ÿ¾«[ͽïOg‚­Æô"ÐË áBíî¦}Ç}‡;Üáw¸Ãî˜#1GbŽ„;Üáw¸Ãý_ÝC+w¢@Dfî÷ïç™uø2™ÅÚÉNþû9R7|pWßkïû®¿“ßßkºö¿ºú»¼ÎÓ \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_19.png b/library/phpqrcode/cache/frame_19.png
deleted file mode 100644
index 20fddd84c..000000000
--- a/library/phpqrcode/cache/frame_19.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_2.dat b/library/phpqrcode/cache/frame_2.dat
deleted file mode 100644
index 7e42f31ca..000000000
--- a/library/phpqrcode/cache/frame_2.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚÍ’Í À F{vë&  à&°Y+?Z1öÐSŸ'y!¢ŸÌÁa815&£•Û´ŽÙHå£Ùžc³•l«ÏFÆè1º#é6 fÊÖü©§6Äø•O7ˆ¨†C¦«›ðÖžÏ8gI®ÏöfB¦ÃÄÿæ\DÔ»( \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_2.png b/library/phpqrcode/cache/frame_2.png
deleted file mode 100644
index 9c150ebe3..000000000
--- a/library/phpqrcode/cache/frame_2.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_20.dat b/library/phpqrcode/cache/frame_20.dat
deleted file mode 100644
index d5ecc1d8a..000000000
--- a/library/phpqrcode/cache/frame_20.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_20.png b/library/phpqrcode/cache/frame_20.png
deleted file mode 100644
index 23a061d54..000000000
--- a/library/phpqrcode/cache/frame_20.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_21.dat b/library/phpqrcode/cache/frame_21.dat
deleted file mode 100644
index 1974dd9d4..000000000
--- a/library/phpqrcode/cache/frame_21.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíšA„ E]sëIX´;¹Ün6Up‚“в™ÿ]Ù˜þ< i-eWö‹¶˜)×äÅ•¼ÉÂ…H\jvqÙHL\6–šÝÐ…rI›¢LܹÜÕ%ÅÓ@´þ±V—vÆÂúý¤(ÏP4|ÎXnÒgÉß¼~]D¾ÉÕ×u1Us S\À°€,ÿÅ2Þ¢N§Ã?D›KºüF-:“eJ]p_À°€,˜a0Ã`†ÁÝ XÀ°`†Á ƒw,` X´]˜ˆ™‚¹‹˜°5 ‰®Y4{å±æñ2íûåvçJs†±Ûí9±˜í)õu±Û¹êÏØ,«]¸“‹Ù^_§7$ƒ_Í \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_21.png b/library/phpqrcode/cache/frame_21.png
deleted file mode 100644
index 291598c72..000000000
--- a/library/phpqrcode/cache/frame_21.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_22.dat b/library/phpqrcode/cache/frame_22.dat
deleted file mode 100644
index 0f01802d2..000000000
--- a/library/phpqrcode/cache/frame_22.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíšA
-„0 E]{ë.’]{{{³©Z¥BepÆÞwe@V›ERZ3»Á"*2o€4¦y‰)i#dÒbdFÒ…´ŒI"ú‘—4ž½W­IíuŠÓ45ßx«.Z­SÙ{ÁŸ¯8åËÿk={o.±qÊÙ£[œÍ:帒q»õƒy
-)t#á„N8ádCj-OOG}¼:/Ÿ:sz!Å)^<ùe½·S·uâ{ 'œp 'ú=ú=ú=¾'œp 'œp¢ß£ß£ßãN8á„Óÿ9©ªˆôpQQõ]HÔpz¾ØGœ^æ½Qº˜I|¾ß³u;9™ÎïÕëd;“X~$ËÙÑÉt¶ÊÛédy \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_22.png b/library/phpqrcode/cache/frame_22.png
deleted file mode 100644
index bc97bd01b..000000000
--- a/library/phpqrcode/cache/frame_22.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_23.dat b/library/phpqrcode/cache/frame_23.dat
deleted file mode 100644
index ee3b37073..000000000
--- a/library/phpqrcode/cache/frame_23.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíšA
-à E³öÖfo 7Ñ›U) %M!ΔÂûYu(<šð“sK²“Tœ›Ó
-É&§IÚ\i+¥Ðª™(m®´FQ¡¹¯h±æöüèv~n1„oÏ]sëçÖï¤_ÞŸÊ3`î_w2õȹ•lc[¼•;·Ûc֟ˤ’Nóª4Üpà 7ÜpÃímTÿ¸œ›‘ÝêrÞiñä_ƒç¿pS=7Þ7Üpà 7ÜpÃ>IŸ¤Oò-Á 7Üpà 7ú$}’>É·7Üpà ·tss‰Órs §åVÍÎÜÆ÷’mýï¡Ò¹ò‡Þñ}R~7ôà&¾÷º?7ùÞýÔ¦Iïbhâ{æ»<ÀMi- \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_23.png b/library/phpqrcode/cache/frame_23.png
deleted file mode 100644
index b8f16ae23..000000000
--- a/library/phpqrcode/cache/frame_23.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_24.dat b/library/phpqrcode/cache/frame_24.dat
deleted file mode 100644
index 7b92e29c4..000000000
--- a/library/phpqrcode/cache/frame_24.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí›Aƒ E»öÖMX0;¸ÜnVP4ÚHSS»xßU3±/O´ý LiJ4ž±Vâ JCŠ%ý‰6VR&ÃÞD‘BœHjDù‚JÏ??™¯êBl­cDZñ½§'óU­ëXïUïÞ0æÃywÍį÷j¬é똳€3Å›¾ë˜cj†ù£{¨¥½:GqÄGÿÝñøŸûÚ°N†v;¹¶ç¬“J ‡ÄÐ<û‡É]ŽêëÈóˆ#Ž8âˆ#Ž8âH'§“ÓÉùÍÁGqÄGéätr:9Ï#Ž8âˆ#Ž8âØ“h­ˆ¯NÔt”Œ´Ö_ÝØ>t¹eëìS­¯¦æžù^\g¯õÎQe?ùvuöÌoïÕ;ˆï>ìˆ*ïwlò×mÑ \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_24.png b/library/phpqrcode/cache/frame_24.png
deleted file mode 100644
index 397c64f85..000000000
--- a/library/phpqrcode/cache/frame_24.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_25.dat b/library/phpqrcode/cache/frame_25.dat
deleted file mode 100644
index ba125182e..000000000
--- a/library/phpqrcode/cache/frame_25.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíÛA
-à …á¬së‚‹™]rƒx½Y51mMÈBG
-ÿ¸*Sx|Ua5Ƶ‚Z—Š„-,Ž1ä²HÑPÒRj–šX5§®i†©’áG©>W¥ŽžRïöÕ/Ëâ+uT廯å Ïӯ嗴ªuæÏ¥Ú[Sía£[kví÷5•+5n§Á´JêÜ%+V¬X±bÅŠõ߬u'Á±þÔû SRýå÷štzZ»ì+÷+V¬X±bÅŠ•ÙŸÙŸÙŸûŠ+V¬X±bÅÊìÏìÏìÏ}ÅŠ+V¬X±ö±ª¤¥ÖVI©¢ÖÖ‘+k«qÿ[úËtŽ·oVZÍþvoNV³wÇ}µ{³r<ýR­Þ"RÍÞ]ê W«r} \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_25.png b/library/phpqrcode/cache/frame_25.png
deleted file mode 100644
index 25bc4454a..000000000
--- a/library/phpqrcode/cache/frame_25.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_26.dat b/library/phpqrcode/cache/frame_26.dat
deleted file mode 100644
index d34a73f15..000000000
--- a/library/phpqrcode/cache/frame_26.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí›A
-à E³öÖ…,t§7ˆ7Ñ›U E)i7ï»*~cÃüÅÄXÖEBÆè°FC–˜³6¡:&çL,å¬Mv.ŽÂÎæKgŸÕ¸ãYMç>ŸÎí>ûmÛš·?ª•vô¹¾mg?ßÒ±Îþ³æηªd˜“Cµ¹U¦ÏIk•ÚÚE\ÕÙMs†f˜a†f˜a>œ[sÓˆ9쬩ެ8bö<kÕÙ7œ}ç†k³™§õ™ÿ3Ì0à 3Ì0à 3Ìä*r¹Š\Å7 f˜a†f˜a†fr¹Š\Å7 f˜a†f˜a†YÆÙÎ æd›4ƒ9kíÆÌÔÝyûX y‰gŒØÙ)›«dwnÌ¢ûU×>Ëî”]ßöLgÉÝÁ›³è¾äEo‚ w1 \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_26.png b/library/phpqrcode/cache/frame_26.png
deleted file mode 100644
index f4a6b3938..000000000
--- a/library/phpqrcode/cache/frame_26.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_27.dat b/library/phpqrcode/cache/frame_27.dat
deleted file mode 100644
index b4d9ffd4f..000000000
--- a/library/phpqrcode/cache/frame_27.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_27.png b/library/phpqrcode/cache/frame_27.png
deleted file mode 100644
index 8419ec230..000000000
--- a/library/phpqrcode/cache/frame_27.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_28.dat b/library/phpqrcode/cache/frame_28.dat
deleted file mode 100644
index 8cbaa1961..000000000
--- a/library/phpqrcode/cache/frame_28.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_28.png b/library/phpqrcode/cache/frame_28.png
deleted file mode 100644
index 7609d8e1f..000000000
--- a/library/phpqrcode/cache/frame_28.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_29.dat b/library/phpqrcode/cache/frame_29.dat
deleted file mode 100644
index 5e4a71103..000000000
--- a/library/phpqrcode/cache/frame_29.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜAƒ …a×Þº ‹™Ü@n7+*¶šÖÚ4‘!Í?®Jšðò ³”抮«]ª—ÉSŸâTf)–ÙsŠIÂ"…È”bžÝ0…Š|•"LuÙ¸î,Ž×EÇ1\6®*ÏuQÞ?¼>aÌÏ…ãþñŽÄRõ-r­“÷n.ïꯋ\®T¿ü:Ó*)|)°À ,°À ,þÑâêóåéx_ã¬}:^R„ƒUoÉ¢‰uÁ~ÁÞ‰X`XÐÐÐа_`X`XÐÐа_`X`XÐÐÐаwbX`¿¥PUõö)DÔÞ"cÈ{‹zçÎõ3ê›é<}¸ó¡^?b÷mÿÎÂìžƒíº°»óaûŽ´’Âê.]
-³{Q6uáT,9 \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_29.png b/library/phpqrcode/cache/frame_29.png
deleted file mode 100644
index ffe072c86..000000000
--- a/library/phpqrcode/cache/frame_29.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_3.dat b/library/phpqrcode/cache/frame_3.dat
deleted file mode 100644
index 188d531c2..000000000
--- a/library/phpqrcode/cache/frame_3.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí“Á À E{vë&  à&°Y+¢b¤öÐkŸ'yù‘¤¿ÌÁa :äÀTXlÞ¶$W+Óvû®îœ¢9}gRæ¬@H0YPB½ÆÃEmÚÚ?ûœÍ±ísœÖ"bµìt2cnÖé†É:½ﺭë;¿Y§“ÃzÿQã«7¿Ô \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_3.png b/library/phpqrcode/cache/frame_3.png
deleted file mode 100644
index 945ee7cb9..000000000
--- a/library/phpqrcode/cache/frame_3.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_30.dat b/library/phpqrcode/cache/frame_30.dat
deleted file mode 100644
index 44cf3d317..000000000
--- a/library/phpqrcode/cache/frame_30.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_30.png b/library/phpqrcode/cache/frame_30.png
deleted file mode 100644
index 75dbddd24..000000000
--- a/library/phpqrcode/cache/frame_30.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_31.dat b/library/phpqrcode/cache/frame_31.dat
deleted file mode 100644
index ce429d0a6..000000000
--- a/library/phpqrcode/cache/frame_31.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÜAƒ …a×Þº ØÉ à&r³‚ Á´¸ªÎ4ù§«†´yù‚Ä·!¥mV3Iµv­!ÒœÖ2¢i\NSSä4EF2+65Å¥‰e¾þÃ/Wœs]šñ¾‰!„Á?ÿpÅõû¦=S~ùüÄ?Ëý+þx¦Ö6r6yö³Ùƹ}“Ç´™ë×eR1-W•l°Ál°Á›ûÒŒÞXŸz/>Væ«·ù§:ñÒÒÄAš8üý-+mTíÎÎbl°Ál°ÁlèštMº&]“³l°Ál°Áº&]“®I×ä¼Ál°Ál°Áº&]“®Éyƒ 6Ø`ƒ 6Ø`ƒÍÝi¬uy´ØXWòè±Éi¬²\t†ýz•—Š>•.î”z¾kÊß t²¿7©ß7òwJõÏ”¶4Òw‘ÒˆßÓÖÍ85‰ \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_31.png b/library/phpqrcode/cache/frame_31.png
deleted file mode 100644
index b14d1fa26..000000000
--- a/library/phpqrcode/cache/frame_31.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_32.dat b/library/phpqrcode/cache/frame_32.dat
deleted file mode 100644
index aaa0808e2..000000000
--- a/library/phpqrcode/cache/frame_32.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜÁ
-„ …áÖ¾õ€‹ë.ß ßDßl¬, ¦šMz‰ÿ6›†Ã‡ gcJËD;ô'.®A’IqžÞ‰ÄI,Ir¢Y¨»‘ËFk%‰DþOæy|EDªD×û(LÓ_YÊ>*ßš?aÊOƒ¿k±L_£<[c—ñ¶ï>Êc˘õuÔLIäÕ%Â#Œ0Â#Œ0Â#ŒÞotÑ¢šõµ}ÅÜ4Ífv_)‰ÂE¢pú¬h5R·88³1Â#Œ0Â#Œ0¢ÓÒié´tZÎ#Œ0Â#Œ0Â#Œ0¢ÓÒié´tZÎ#Œ0Â#Œ0Â#Œ0¢ÓÒié´tZÎlŒ0Â#Œ0£÷9q"¢ÉHÜœH™Qþµï"ÛÕL5}-ÝÜY×¾Óê¸kì`¤â>¶z鸳®þÖ4&Òp÷á!‘Šû!«ù`¿:5 \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_32.png b/library/phpqrcode/cache/frame_32.png
deleted file mode 100644
index 58d42db3c..000000000
--- a/library/phpqrcode/cache/frame_32.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_33.dat b/library/phpqrcode/cache/frame_33.dat
deleted file mode 100644
index a2613755a..000000000
--- a/library/phpqrcode/cache/frame_33.dat
+++ /dev/null
@@ -1,14 +0,0 @@
-xÚíÜAƒ …a×Þº‰‹™Ü@n7+*L++Ó柮óò‰ÌbbÜ*LCï‘°‡‰c k™H¥rš”j•²J5Yíi~0•_«òŒû×TÊTõ}å—e©>ýö5‘b_åwÐÍŸ?¿¤ßìæ§ÖÜù†\ý­RaÆi+7õßW©¦\ãþwLUNåL¦Â
-+¬°Â
-+¬°Âêÿ­jßÒO·ŸkcëÞñôç\Ë©|%•o<á‹k–­Lî+Î+Îv¬°Â
-+¬°Â
-+¬°ÂŠ>}ú ô8¯°Â
-+¬°Â
-+¬°Â
-+ú ôè3Ðgà¼Â
-+¬°Â
-+¬°Â
-+¬è3Ðg Ï@Ÿó
-+¬°Â
-+¬°Â
-+¬°:R‰¨ªX³ÚB‰9«”IÔ=çkÞ±o/Swçؘ™Ù¯Ï`g¶áÅÊÌÈr_Ù™™Y¾ƒVSY™ÅzIefnmQoz >á \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_33.png b/library/phpqrcode/cache/frame_33.png
deleted file mode 100644
index 924c728e0..000000000
--- a/library/phpqrcode/cache/frame_33.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_34.dat b/library/phpqrcode/cache/frame_34.dat
deleted file mode 100644
index 7ceb0259d..000000000
--- a/library/phpqrcode/cache/frame_34.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_34.png b/library/phpqrcode/cache/frame_34.png
deleted file mode 100644
index a477042d8..000000000
--- a/library/phpqrcode/cache/frame_34.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_35.dat b/library/phpqrcode/cache/frame_35.dat
deleted file mode 100644
index 56bc3e28e..000000000
--- a/library/phpqrcode/cache/frame_35.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_35.png b/library/phpqrcode/cache/frame_35.png
deleted file mode 100644
index d29806c60..000000000
--- a/library/phpqrcode/cache/frame_35.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_36.dat b/library/phpqrcode/cache/frame_36.dat
deleted file mode 100644
index 282c60d23..000000000
--- a/library/phpqrcode/cache/frame_36.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_36.png b/library/phpqrcode/cache/frame_36.png
deleted file mode 100644
index 96ecb4213..000000000
--- a/library/phpqrcode/cache/frame_36.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_37.dat b/library/phpqrcode/cache/frame_37.dat
deleted file mode 100644
index 015c0f24b..000000000
--- a/library/phpqrcode/cache/frame_37.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_37.png b/library/phpqrcode/cache/frame_37.png
deleted file mode 100644
index fcc51627d..000000000
--- a/library/phpqrcode/cache/frame_37.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_38.dat b/library/phpqrcode/cache/frame_38.dat
deleted file mode 100644
index 71cf53eb5..000000000
--- a/library/phpqrcode/cache/frame_38.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÝAªƒ0ÐŽÝuÁA2«;ÐèÎkü(üg¾Ày•tp9Äï$Ëò™¹Dœ”ò¼\ºe^'tÒ-aIºŠFMšSškÂðIóŤÓ:7®¤|LúkŸNã8N7®œöi}ö‡×Ÿi,Ÿ[W†¿g®Ó´Ì°ë?3ô1÷i™¾N·}}=ÂOM:4“”)S¦L™2eÊ”)S¦L#$½ÿ ôÂJã­þÂJM:}ý]˜•ÖL›Ù§ÎSÿQL™2eÊ”)S¦L™2Õ¡èPt(:Šó”)S¦L™2eÊ”)S¦:ŠE‡¢Cqž2eÊ”)S¦L™2eÊ”©E‡¢CÑ¡8O™2eÊ”)S¦L™2eÊT‡¢CÑ¡èPœ§L™2eÊ”)S¦L™2Ý“¦”sJCIKÖÔ‚iÍ93ônº_Ñò ÿ¾¿ü¼“+R‡û®£“ièû£Žû4ö\Çg¿¥¤‘ïŽ;% }ßaÞnŽ£ \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_38.png b/library/phpqrcode/cache/frame_38.png
deleted file mode 100644
index 89238f3c5..000000000
--- a/library/phpqrcode/cache/frame_38.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_39.dat b/library/phpqrcode/cache/frame_39.dat
deleted file mode 100644
index 53511f736..000000000
--- a/library/phpqrcode/cache/frame_39.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_39.png b/library/phpqrcode/cache/frame_39.png
deleted file mode 100644
index 1dc9cd1bc..000000000
--- a/library/phpqrcode/cache/frame_39.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_4.dat b/library/phpqrcode/cache/frame_4.dat
deleted file mode 100644
index 67b30e82a..000000000
--- a/library/phpqrcode/cache/frame_4.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí”Á À E=»uÐ pجQ•ØCOMŸ'ÃË$ ³@à¨Ø3e–F©\FNXRyÉؾC{‰a8­Ræ Ńa2@ñ圉qküßÉH1ê(£ˆÅ`cç¦j³~Ë0ö¥¿ÃܨÖËÃعnXÿGåÿÄ€ \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_4.png b/library/phpqrcode/cache/frame_4.png
deleted file mode 100644
index b72f9e70d..000000000
--- a/library/phpqrcode/cache/frame_4.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_40.dat b/library/phpqrcode/cache/frame_40.dat
deleted file mode 100644
index 90d36dd13..000000000
--- a/library/phpqrcode/cache/frame_40.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÝAŠƒ@Ь½õ€‹îÞ@o¢7“˜`“Qfeºä•«PA>¦ÀÚô<?jjo5WNiz›yºWý‰ó´&]ß…C?“IœrþWâñ^;ï8·—
-ãýs<ðûöS{Å9^gEß}>ã°<]ßÕÐëß³bZ«nã¥^A›öQ}[÷9^ª]«yþìnajM܇K̘1cÆŒ3f̘1ã¸Æ{ßW5}ç½{ÍÑ7lMßÒïÞšxÜI<¼áK½¨Æáαyl3f̘1cÆŒ3f̘1ã«Û»Ù»={·“αyl3f̘1cÆŒ3f̘1ã«Û»Ù»={·“αyl3f̘1cÆŒ3f̘1ã«Û»Ù»={·“αyl3f̘1cÆŒ3f̘1ã«Û»Ù»={·“αyl3f̘1cÆŒ3f̘ñ÷çœSÊ‘ŒÓ’7¥HÆKÞ¼g\ç¾âuõßÏ_ÿªr'4Ü[çÞ-Æ]›…qˆûL·ç8ƱÛY1q„»‹Ä!î—ÞÔ/(%û \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_40.png b/library/phpqrcode/cache/frame_40.png
deleted file mode 100644
index 8034d862d..000000000
--- a/library/phpqrcode/cache/frame_40.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_5.dat b/library/phpqrcode/cache/frame_5.dat
deleted file mode 100644
index d5dafe186..000000000
--- a/library/phpqrcode/cache/frame_5.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí”1À E½u 7ЛÀÍZµ‡|N†—üD B0@R$l,-™>VKZ[<ýØÚz—qÆŽ¨ØYJ&ƒiåš‚‹ZyË:Y'ë¯YµÁVÿ&—e•RÄ"§sj©Ýrþö+Ëé‰ù.·MÆŽ»–Ó9ÓòzµsŽ”É, \ No newline at end of file
diff --git a/library/phpqrcode/cache/frame_5.png b/library/phpqrcode/cache/frame_5.png
deleted file mode 100644
index 96b6494f3..000000000
--- a/library/phpqrcode/cache/frame_5.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_6.dat b/library/phpqrcode/cache/frame_6.dat
deleted file mode 100644
index 0fc3d039e..000000000
--- a/library/phpqrcode/cache/frame_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_6.png b/library/phpqrcode/cache/frame_6.png
deleted file mode 100644
index 05ca358b0..000000000
--- a/library/phpqrcode/cache/frame_6.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_7.dat b/library/phpqrcode/cache/frame_7.dat
deleted file mode 100644
index 43375960f..000000000
--- a/library/phpqrcode/cache/frame_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_7.png b/library/phpqrcode/cache/frame_7.png
deleted file mode 100644
index 7d2ff4f3e..000000000
--- a/library/phpqrcode/cache/frame_7.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_8.dat b/library/phpqrcode/cache/frame_8.dat
deleted file mode 100644
index 669b325f3..000000000
--- a/library/phpqrcode/cache/frame_8.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_8.png b/library/phpqrcode/cache/frame_8.png
deleted file mode 100644
index db1f1877a..000000000
--- a/library/phpqrcode/cache/frame_8.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_9.dat b/library/phpqrcode/cache/frame_9.dat
deleted file mode 100644
index d79295ee0..000000000
--- a/library/phpqrcode/cache/frame_9.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/frame_9.png b/library/phpqrcode/cache/frame_9.png
deleted file mode 100644
index 74ddf08da..000000000
--- a/library/phpqrcode/cache/frame_9.png
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_101_0.dat b/library/phpqrcode/cache/mask_0/mask_101_0.dat
deleted file mode 100644
index 51deabaef..000000000
--- a/library/phpqrcode/cache/mask_0/mask_101_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_105_0.dat b/library/phpqrcode/cache/mask_0/mask_105_0.dat
deleted file mode 100644
index 97e9e5dff..000000000
--- a/library/phpqrcode/cache/mask_0/mask_105_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_109_0.dat b/library/phpqrcode/cache/mask_0/mask_109_0.dat
deleted file mode 100644
index eadf83a2c..000000000
--- a/library/phpqrcode/cache/mask_0/mask_109_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÚ=
-€0 н§iï9'Åb‡$ ¾tËýáÚû^#iª¥Ëi?³ÅôÛbúK[AUØFå¾ÆµÄ³x]mŸ]2Ž-Ä–KŽ~ ÏVw}¶X›ûÆÆÆÆÆÆÆ&O²É“Þ666666yRž”'½%lllll/´åhœl…Ãîm ¹¤êádël™¶´3Ù+ïÛmÍ« \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_113_0.dat b/library/phpqrcode/cache/mask_0/mask_113_0.dat
deleted file mode 100644
index 5eb7f5de2..000000000
--- a/library/phpqrcode/cache/mask_0/mask_113_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÚ;
-…0Ð>«Iö¿9+Eñƒ‚sá=ϤL1Ì„[¤÷¹FáZU‹4‡?i<ÿç;7çòç;‡ÆP¥Œ#ýW-[ñݯ6÷µddddddüc",;í"¼Ÿskæ‘‘‘‘‘‘‘‘Q&—Éerw######£L.¯Êäæ‘‘‘‘‘‘‘±Ð˜y¼1†^˲\òîÆØ3Æâ³ÚÓóøÏÆ ‘Ñv \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_117_0.dat b/library/phpqrcode/cache/mask_0/mask_117_0.dat
deleted file mode 100644
index 781c7f875..000000000
--- a/library/phpqrcode/cache/mask_0/mask_117_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÚA
-„0 Ð}OÓÞÿr³R,#3öñ¥Ë,âÃþ¢½o5ŸCµØÐq:õõÖ;;¬wvN­ÁJZGÅ=Œm»û}Úö ѱ¬¬¬¬¬¬¬¬µ¦2âÞi‹RïïkÆj_YYYYYYYYeÙ_ö·¯¬¬¬¬¬¬¬¬²¿ì/ûÛWVVVVVVÖkîáýd-úϺ,#¦ßÀOÖÎZc]|‡{ž¾Áúˆ­$™ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_121_0.dat b/library/phpqrcode/cache/mask_0/mask_121_0.dat
deleted file mode 100644
index 68810c347..000000000
--- a/library/phpqrcode/cache/mask_0/mask_121_0.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÛ1„ ОÓÀý/·•w YMüSø Ä8>2SÐûÖF O­EÓÈÌÓc«W\ûÛ¼š‹{c§æpK›GÕžB·ÐšþímûŽxhfffffffæ/s2ÛÇÚ2W|*÷d®1ÛÏÌÌÌÌÌÌÌÌÌê*5³ºÊÆÌÌÌÌÌÌÌ̬®RW©«œaÌÌÌÌÌÌÌÌsöòËÁ\xm~8ß®¸ƒr0wæjsdm÷ªýü&óâyÙ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_125_0.dat b/library/phpqrcode/cache/mask_0/mask_125_0.dat
deleted file mode 100644
index 2c73ef1a8..000000000
--- a/library/phpqrcode/cache/mask_0/mask_125_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÛA
-€ н§Ñû_®•‘TH`3AO—L4ü kí£ÍÃ(áÍÛewö›GWÖÙ××.í #ÃÞ2¿û¡} \ëçYú»¤´gggggggggg_d>Ïïµòj^™ÕØsíö;;;;;;;;;;»'ÇÉqö;;;;;;;;;»'Ë°ËqþuììììììììµÇ_Pì‰Íçö—ÏóYwÄ{eÿš=dÍ×ÌýþGû/ý“¸ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_129_0.dat b/library/phpqrcode/cache/mask_0/mask_129_0.dat
deleted file mode 100644
index 812ee8a66..000000000
--- a/library/phpqrcode/cache/mask_0/mask_129_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÛ1
-Å ÀÞÓèý/—*Ÿ„DøEØ'ÉhgõtÙ-ì}_£pV‹· \"Ìb=sþ—ÁÌå™ó[ƒÐJŒô=8DhÅoàºÛž' 0XÐ ÑüÎÛ´©è‘¬e 0`À€ ˜ôÊ Ì j" 0`ÀÀ¼ Wf`^P0`À€æ½2ó‚šÈ€ ¼Ò óÉôd07(ì“<OÁŠåo¡§ëÁ— 6 ÎSÞ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_133_0.dat b/library/phpqrcode/cache/mask_0/mask_133_0.dat
deleted file mode 100644
index 03b41d36d..000000000
--- a/library/phpqrcode/cache/mask_0/mask_133_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÛ1
-€0 н§Iï9§Š¢ÚTyí–)<4äh§N¾‡SÒš¨·]°èZŒ­?¶[¿µH<™u…ïâÐFIø7®·´žRÛ`Á‚ ,X°ø±EÖÞ¹×Ë´]»Wg±¦…yÁ‚ ,X°`!ØÁYÈ#æ ,X°`Á‚…<"È#æ ,X°`Á‚…<bg!˜,X°`Á‚‹WyÉO 4Ñ·˜¸wf¿á>Y‹/XLÿGb…yÁ"êpT \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_137_0.dat b/library/phpqrcode/cache/mask_0/mask_137_0.dat
deleted file mode 100644
index f6d993b03..000000000
--- a/library/phpqrcode/cache/mask_0/mask_137_0.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÜ1„ ОÓÀý/·•+FÉZ?®JšÉ Læ7Ôº¬ØÝ*ÑBÚa%L~šŒË»òä”ÉØéÊ“C“ðJ›´YîIWJ ½™ý.K]ñR˜0a„ “›$ç“ïINTwÎlLža¢Ÿè±L˜0a„ &Ld@PÔO˜0a„ &L˜0‘e@P?a„ &L˜0aÂD”e@ý„ &L˜0aÂäÏM²ŸIlL&)dl˜ígøÃacR™<É$övê,ý„ɺ?U2ç] \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_141_0.dat b/library/phpqrcode/cache/mask_0/mask_141_0.dat
deleted file mode 100644
index 8c685c8ea..000000000
--- a/library/phpqrcode/cache/mask_0/mask_141_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜ=
-€0 н§iï9'EÑúÖDx͘%<lð[Zë|ZP­N ¦NÃæ‘MÌ7;·múfovmœ 6-Ów³§Þ¥}•y¶ã°aÆ 6lØ°ný_¼tÊeÒivØüËƾ±‹Ù°aÆ 6lØÈšòYÓ.fÆ 6lØ°a#kÊSldMû† 6lØ°aÆ YSÖ”5í6lØ°aÆ 6ƒmâœÙØ$æÜ& 3dyãecSÙüÙ&ìNÕLû†Í¾&ëîº< \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_145_0.dat b/library/phpqrcode/cache/mask_0/mask_145_0.dat
deleted file mode 100644
index 9c9c1ae19..000000000
--- a/library/phpqrcode/cache/mask_0/mask_145_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜ;
-…0Ð>«Iö¿9+EñÇ{ˆõ$åm†ƒ^˜&µŽ§u¼³S"µÍDŒþ6ÚŸ]9ùÉè8ìU“M£“bÔÒ¾£Y¤Òù[ß2拉Ĉ#FŒ1bĈ£Ï%ôµiRNšæ½–ѳì#;›#FŒ1bĈ‘N«¯1Òií#FŒ1bĈ#FŒtZ}‘Nk1bĈ#FŒ1b¤ÓêkŒtZ;›#FŒ1bÄèõFV-ŒÂuè"IoD-Œ*£7uû×jÚ>b´MV“+ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_149_0.dat b/library/phpqrcode/cache/mask_0/mask_149_0.dat
deleted file mode 100644
index d25835029..000000000
--- a/library/phpqrcode/cache/mask_0/mask_149_0.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíÜA
-€ н§Ñû_®MEQXP৞.Ý|94³°ÖeµÁ{³JL¨všŠÕ#«^Ü÷Ïn[õ ß?;µ
-ZIV-ñ»ÚÄ*wï¸Ë’1*+V¬X±bÅŠ«ßX¥ü·¯g¥ÛwŒèqX}ÇJ½RÛY±bÅŠ+V¬X±beΠwfeΠ^±bÅŠ+V¬X±bÅÊœAïÌÊœA½bÅŠ+V¬X±bÅŠ•9ƒÞÙœÁœA½bÅŠ+V¬X±bÅŠÕl•ó0ÞÎ*0Tßj`?˜öÝΪ²ú¢Õð;Xë«ë=zZr* \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_153_0.dat b/library/phpqrcode/cache/mask_0/mask_153_0.dat
deleted file mode 100644
index fc79e9ede..000000000
--- a/library/phpqrcode/cache/mask_0/mask_153_0.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÜ1€ ÐÓÀý/礑h¢&F¾ú`ìÒ¼@I;Pë¼ZÀ^­•XÛÍŒÙmfÏÆ.™=Û5 [if-õœ­R+!wr»Ëœg\j̘1cÆŒ3f̘1cf–Ôo.±2¬?Š1ûž™zæ `ÆŒ3f̘1cÆŒ™¹†™¹†zÆŒ3f̘1cÆŒ3fæztfæê3f̘1cÆŒ3f̘™k˜k03×ð0cÆŒ3f̘1cö³¬Ï9;³ÐÄŽÍö›‰`vf•Ù̆ßÍšZϘ߶W9 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_157_0.dat b/library/phpqrcode/cache/mask_0/mask_157_0.dat
deleted file mode 100644
index ad749f305..000000000
--- a/library/phpqrcode/cache/mask_0/mask_157_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜA
-€ н§Ñû_®•QRù©§»Y ùkí«…ìÍ*q͵ÓîØ=j7§~ÙnNýÔ.p%Úµäs·i¯ÝÕã.½×ÈöرcÇŽ;vìر{Ù.-W¬õ2={êì¾mgÞy+رcÇŽ;vìØɳ2;yÖ¼cÇŽ;vìرcÇNž•ÉØɳæ;vìرcÇŽ;v2™<ËNžõV°cÇŽ;vìر“ge2vò¬yÇŽ;vìرcÇî¦]ÞÂ;»àæÆv¹"õÞ]e÷'»˜;[“ç»û{¾|Aµ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_161_0.dat b/library/phpqrcode/cache/mask_0/mask_161_0.dat
deleted file mode 100644
index 4bdc5fdd3..000000000
--- a/library/phpqrcode/cache/mask_0/mask_161_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_165_0.dat b/library/phpqrcode/cache/mask_0/mask_165_0.dat
deleted file mode 100644
index 3a17a0510..000000000
--- a/library/phpqrcode/cache/mask_0/mask_165_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÝ;
-€0À>§Iî9+ÅàDyÁIÊ4Ë ÷5Ö:¯¶W«ÄÙv«dù¢åqñߜܴ<þæd×2x%[¶žËU™%ðÝÞî2×]&K–,Y²dÉ’%Ë¡,S¿Õ—“r2ydÌ=,ÿk©_º{X²dÉ’%K–,Y²d)Û0³”mè—,Y²dÉ’%K–,Y²d)Û0³”mè—,Y²dÉ’%K–,Y²”m˜Çe,eú%K–,Y²dÉ’%K–,eæq–² ýÒÝÃ’%K–,Y²dÉ’å…eî:ËŠ<³Œš!Óÿ¡ÐYV–,ßñ:B¿dù|O¨$*# \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_169_0.dat b/library/phpqrcode/cache/mask_0/mask_169_0.dat
deleted file mode 100644
index c4787d9db..000000000
--- a/library/phpqrcode/cache/mask_0/mask_169_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÝ1
-€0À>¯Iþÿ9EQÑ=˜¤Ls æä¶IïË{³Zt¡ã´R¦™þ}òÀôï“SÓð•n:ª|§›R[è?î¶Ô_*S¦L™2eÊ”)S¦L™™&ϦëI šê¯O˜2ÕOý£˜2eÊ”)S¦L™2e*C1ïËP˜ÊPôS¦L™2eÊ”)S¦L™ÊPÌû2¦2ý”)S¦L™2eÊ”)S¦Le(æ}¦2ý”)S¦L™2eÊ”)S¦Le(æ}¦2ý”)S¦L™2eÊ”)S¦³iöc7;Ó"…Þ™FͦÞÙ™v¦L Üý^¥Ÿ2}oOäß'r \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_173_0.dat b/library/phpqrcode/cache/mask_0/mask_173_0.dat
deleted file mode 100644
index 5ef85e7ad..000000000
--- a/library/phpqrcode/cache/mask_0/mask_173_0.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÝ1ƒ0ÀÞ¯±ÿÿ¹T ¥ˆ¬[4véæ2ŠØƽok݇ÕÊ;¦Ó²]fûôÖžýdûä½ölj°lGÒÿö0n+œß»m³GŒË–-[¶lÙ²eû"Ûêï·ûY»}o¯öíÀ–íÕVÞÊ[¶lÙ²eË–-[¶lÙ²e«ÓÕ°ÕƒÉ[Ï2¶lÙ²eË–-[¶lÙ²e«ÓÕ°ÕƒÉ[Ï2¶lÙ²eË–-[¶lÙ²e«ÓÕ°ÕƒÉ[¶lÙ²eË–-[¶lÙ²eËV¦«a«“·lÙ²eË–-[¶lÙ²ef[ÿB°“mа÷¶Eû„”;¶N¶-ÛœT¸/r’·lÿ¿?ØÔ*Ñ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_177_0.dat b/library/phpqrcode/cache/mask_0/mask_177_0.dat
deleted file mode 100644
index 78a26a77b..000000000
--- a/library/phpqrcode/cache/mask_0/mask_177_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÝ1
-…0Ð>§Iî9+?Š²Øèß—”iÖ‡ dšÌ¹¯ÕxÖˆxÝNÌø/ÆÕ§|{öظ²ÿöìÖ8d¥¯´ÿø0òhž×=öùcFf̘1cÆŒ3f̘q¼qÂ=ïw6Ê;l·»4cÆ•±<–ÇŒ3f̘1cÆŒ3fÌXï¦Ò»1Ö»ÉcÆŒ3f̘1cÆŒ3fÌXï¦b¬w“ÇŒ3f̘1cÆŒ3f̘±ÞM'ÄXï&å1cÆŒ3f̘1cÆŒ3Ö»é„ônŒõnò˜1cÆŒ3f̘1cÆŒÃ3U<‡ \7í+’Þ(<OÆŒŸ·ÎŠ™–ÇŒßÛÕä4@ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_21_0.dat b/library/phpqrcode/cache/mask_0/mask_21_0.dat
deleted file mode 100644
index 368c9941f..000000000
--- a/library/phpqrcode/cache/mask_0/mask_21_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_25_0.dat b/library/phpqrcode/cache/mask_0/mask_25_0.dat
deleted file mode 100644
index e4a5b6d8a..000000000
--- a/library/phpqrcode/cache/mask_0/mask_25_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_29_0.dat b/library/phpqrcode/cache/mask_0/mask_29_0.dat
deleted file mode 100644
index 74a216b4f..000000000
--- a/library/phpqrcode/cache/mask_0/mask_29_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_33_0.dat b/library/phpqrcode/cache/mask_0/mask_33_0.dat
deleted file mode 100644
index 2ec712a7a..000000000
--- a/library/phpqrcode/cache/mask_0/mask_33_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_37_0.dat b/library/phpqrcode/cache/mask_0/mask_37_0.dat
deleted file mode 100644
index 1588cfce1..000000000
--- a/library/phpqrcode/cache/mask_0/mask_37_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_41_0.dat b/library/phpqrcode/cache/mask_0/mask_41_0.dat
deleted file mode 100644
index e369027e3..000000000
--- a/library/phpqrcode/cache/mask_0/mask_41_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_45_0.dat b/library/phpqrcode/cache/mask_0/mask_45_0.dat
deleted file mode 100644
index 452f126c8..000000000
--- a/library/phpqrcode/cache/mask_0/mask_45_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_49_0.dat b/library/phpqrcode/cache/mask_0/mask_49_0.dat
deleted file mode 100644
index fdd2aac15..000000000
--- a/library/phpqrcode/cache/mask_0/mask_49_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÕKÀ EÑ9«ýo®#?H/›6g$Ï-ª­,X]
-˜›xݘ;Àð·˜ XÔ°ì9ºˆ<ÜѺ¤åq¤Œ2 Af÷îHð7ø/5We„{Ô#ØáìfÞ¨ÁÐ?à®4û=N >Çæ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_53_0.dat b/library/phpqrcode/cache/mask_0/mask_53_0.dat
deleted file mode 100644
index 572d279ef..000000000
--- a/library/phpqrcode/cache/mask_0/mask_53_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÖK
-@!й«Ñýo®QÑϺ:(m&ܯžs-¹¬®É6õÑZ{¥m4Y†²Xâù®.FÀÙ­‹ê¦XZi·Ðùj=:έ֋bå¿‘VH 8 –#¤[—ù²¾‹ãYвç¾^XÔ÷e \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_57_0.dat b/library/phpqrcode/cache/mask_0/mask_57_0.dat
deleted file mode 100644
index ea81e6dc6..000000000
--- a/library/phpqrcode/cache/mask_0/mask_57_0.dat
+++ /dev/null
@@ -1,4 +0,0 @@
-xÚíÖA
-À À{^“üÿs=YLÕš (
-ou¨– j) ¬ª
-Z7y„ÙëÍñv,Ô´ìwVQ ži»¤ìGiÒ¤¹ÅDfÂÛ•ÉÄwo4ùѤ¹ÐÄoÎLÿÌéLȼÁœ©·›Á³Õì}î4 hå \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_61_0.dat b/library/phpqrcode/cache/mask_0/mask_61_0.dat
deleted file mode 100644
index 93d2444d8..000000000
--- a/library/phpqrcode/cache/mask_0/mask_61_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_65_0.dat b/library/phpqrcode/cache/mask_0/mask_65_0.dat
deleted file mode 100644
index df29d7bfb..000000000
--- a/library/phpqrcode/cache/mask_0/mask_65_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_0/mask_69_0.dat b/library/phpqrcode/cache/mask_0/mask_69_0.dat
deleted file mode 100644
index 8a2cfbd7c..000000000
--- a/library/phpqrcode/cache/mask_0/mask_69_0.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí×KÀ Ð=§û_®+­mÏBìà’d|Q"s+1®®È"¯),ß=“EÛàa TÄ"çÒÅãnæE-3 ,°ÀKY‹wÝ=ZšZïT Þ.,°ÀK1‹ÿ#<XBtËâ<Šþa ÿÇbº#Îx/;X.®‡Ô \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_73_0.dat b/library/phpqrcode/cache/mask_0/mask_73_0.dat
deleted file mode 100644
index 3de460662..000000000
--- a/library/phpqrcode/cache/mask_0/mask_73_0.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíØ1À …áÓÀý/×ÉFSM(´Æ7†—/JTmeÓ•¤‚lš´É×s™|½©)YY“UÝS%Á7{i¹é(L˜0moÊ짻'¯÷ãªw‚‰Ç„ {œ=ÎŒcÂô)÷2˜Š‚Ö¦À~ªøÃLz–)üvZ5O2]=Œó? \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_77_0.dat b/library/phpqrcode/cache/mask_0/mask_77_0.dat
deleted file mode 100644
index 2717fd86b..000000000
--- a/library/phpqrcode/cache/mask_0/mask_77_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØA€ DÑ}OÓÞÿr®0  ÎBÃ/;b†Hp/‹­*K‡E7íG¶þã/_l}ïxˆ‹MP
-[(ç­Š³ÄZÞ›•lI6lض´eÏ·³×Oû˜ìÝÍÆ^À† 6î,î,ö6lØ&lù³Æ& ÛÏ^ÕWcó}m©5uåÿöEÛ;âe \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_81_0.dat b/library/phpqrcode/cache/mask_0/mask_81_0.dat
deleted file mode 100644
index 2d9a052fc..000000000
--- a/library/phpqrcode/cache/mask_0/mask_81_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØ1€ …ὧiï9'•Bß ñ‡áñE¤Mpo#
-³& ŒaâÙ6ãõ)cæ~Úèb •1Ôß±‹´âߧµ|Y$FŒ1Nõq_·´.¯Ôð¿¹31bĈ‘~M¿æÎ`Ĉco{B£807úŒòôdtŒ’³võÿøfãßØÜþ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_85_0.dat b/library/phpqrcode/cache/mask_0/mask_85_0.dat
deleted file mode 100644
index eb8197b20..000000000
--- a/library/phpqrcode/cache/mask_0/mask_85_0.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØ1
-À …á=§Iî¹NE‘Z_†À· ¯m E÷Vqyº2Yh,S‹[ÏúŸ­gý¥UXJkd¼×.Öß~>Öž!ÅŠ+V¬å¬ª½õöí÷.Ýõ±2¯X±bÅŠ•ÿ¬Ì+V¬X±–²ê.ökBèÞz±·ÔwðƒÕ±¦Ì€gÌkë¡YZý \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_89_0.dat b/library/phpqrcode/cache/mask_0/mask_89_0.dat
deleted file mode 100644
index aaa4c5267..000000000
--- a/library/phpqrcode/cache/mask_0/mask_89_0.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÙ1€ …ὧiï9'Œˆ€Ñ×ýËHl?Lšà^"ë&M—™?bî—qÃÜ?˸äÉ,µ9²þó!µ‰z¢]VêÈScÆŒ3æ_š•÷à¾cÓé!î`nÍô3f̘1cÆÌŒ„™ 3f̘1/fÖ>.Uæ¤ÄcóË»;ã ¨2;æ™YÒžÕÏ+™7Þý \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_93_0.dat b/library/phpqrcode/cache/mask_0/mask_93_0.dat
deleted file mode 100644
index e218fa0ef..000000000
--- a/library/phpqrcode/cache/mask_0/mask_93_0.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíÙK
-À EÑyV÷¿¹Ž,ÚO¬mÞ rãPHŽ0 {’´š°ôäå2ûbö¨ìýÞc{t¦Qáƒ]
-{QÞ{“Þ{弬֒¤ÇŽ;vìØ_Ú³ßÕ}ÏÂ÷ýËL€}l§ß±cÇŽ;vì̑̑̑رcÇŽû¢öüÐÎ.LÛæÕegwì3ö´žqe¿ÿѾ@i \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_0/mask_97_0.dat b/library/phpqrcode/cache/mask_0/mask_97_0.dat
deleted file mode 100644
index 74ac719d0..000000000
--- a/library/phpqrcode/cache/mask_0/mask_97_0.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_101_1.dat b/library/phpqrcode/cache/mask_1/mask_101_1.dat
deleted file mode 100644
index ec939b521..000000000
--- a/library/phpqrcode/cache/mask_1/mask_101_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÖ1
-À н§‰÷¿\Q÷ªEóþ¢d  1¢¦ÌNô<±#½ËÕ–¯Õ-7u™þ.ÃÓl²Ô¦eiXXXXXRZVíÊVeIo1û,,,,,v%‹?ŒÙgaaaa±÷YÌ K&K=/·œ·+Ûå˱ó²Öò¼ÞŽã \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_105_1.dat b/library/phpqrcode/cache/mask_1/mask_105_1.dat
deleted file mode 100644
index e1f5c99b4..000000000
--- a/library/phpqrcode/cache/mask_1/mask_105_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÖ1€ ÐÝÓ”û_Î¥‡b€÷ KóB¬?"Ó*#WÌʘt€éÍùíügÓŽ“JîéqUM9¸•‡‰‰‰‰©ÔTùêçLLv“¾Ç¤ïÙLLLLLLz“¾gG01111šòy„iåÑߘ–4mð=Õ›n§¥+2 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_109_1.dat b/library/phpqrcode/cache/mask_1/mask_109_1.dat
deleted file mode 100644
index 7e0d6d164..000000000
--- a/library/phpqrcode/cache/mask_1/mask_109_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÖ± À À>Ó˜ý—Kƒ€°•À}“ˆÆ:!£èiY‰™'*3§]fÛsþÛÉÓÒîm¹ºb[ÞJÂÆÆÆÆÆƶŖÝKÆ9›}ccccccÓ'u.6ûÆÆÆÆÆÆƦs±é“Þ6666¶R[ÿ^gû{/lÇØÙ·Û Þ7Í‚ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_113_1.dat b/library/phpqrcode/cache/mask_1/mask_113_1.dat
deleted file mode 100644
index 1dd666d9b..000000000
--- a/library/phpqrcode/cache/mask_1/mask_113_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÖ1€ ÀÞ×ÿÿœ -8fL(pBŽlDM™è9";ýÄ-÷ò÷;?1îpâÐ{¼\åÆú%-ŒŒŒŒŒŒ“3:@Ûad4ŒŒŒŒŒŒŒŒú*£NîÍaddddddÔÉÍ#######ã#c]75®ÓåÚã¢Æåæ1ÏxYuñ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_117_1.dat b/library/phpqrcode/cache/mask_1/mask_117_1.dat
deleted file mode 100644
index 8921f6437..000000000
--- a/library/phpqrcode/cache/mask_1/mask_117_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÖ» À À>Ó˜ý—Kƒ€ø$ø^’ 8Y–QSV'zž8‘þjzëÌʇ¬™^]Þסµ‡¬õekXYYYYYYYjݵ#¶
-+«yeeeeeeeeµ#²²šWVVVVVVVV;"+«yeeeeeeel­'ëe;b»±&²^9¯{­/ÊJ$p \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_121_1.dat b/library/phpqrcode/cache/mask_1/mask_121_1.dat
deleted file mode 100644
index 64bd8ba04..000000000
--- a/library/phpqrcode/cache/mask_1/mask_121_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí×1
-À н§‰÷¿\— ¥C¡PbÑ—EÁÁ<DñGdµŠŠQG̪±3óèð©û×k?3ï¸sÉ9_Žz¢9iåÅÌÌÌÌÌÌÌ|3WþÃú3³ûÌÌÌÌÌÌÌÌÌ,WÉÌr•7Œ™™™™™™™™YÆ`–«¼aÌÌÌÌÌÌÌÌ›sd^ü¿ÝgÌÛš¿Ïõæ4Øð \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_125_1.dat b/library/phpqrcode/cache/mask_1/mask_125_1.dat
deleted file mode 100644
index d5881dd5d..000000000
--- a/library/phpqrcode/cache/mask_1/mask_125_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí×1
-À н§‰÷¿\— :ŠòþÒ‚ƒ>$’DdÆ©ÄÊ•Y»³ÿŸtëÚ…öλ»÷ÏÕÛó0£$ìììììììììì›ì§ûù¹ÆήÞÙÙÙÙÙÙÙÙÙÙõóììêÝg–a7ÇyëØÙÙÙÙÙÙÙ¯³ç—½Y??ÿØÙ{Õ{ý¾D“ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_129_1.dat b/library/phpqrcode/cache/mask_1/mask_129_1.dat
deleted file mode 100644
index 62cd1c9a1..000000000
--- a/library/phpqrcode/cache/mask_1/mask_129_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_133_1.dat b/library/phpqrcode/cache/mask_1/mask_133_1.dat
deleted file mode 100644
index 18d68dce8..000000000
--- a/library/phpqrcode/cache/mask_1/mask_133_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí×1€ ÐÝÓ”û_Î…€“ºh«¼¿h˜šÒ|"zÚÛ‰™-*dNÁâÔâÙó¦H¼‡«QÄ¢ÕR ,X°`ñc‹¬Þ9ÎY°(na_°`Á‚ ,Xè,XØ,X°`Á‚ Þ#:8 ﻓ ,X°`ÁBïdÁ¾`Á‚ ,X|Ï¢Y\X¬Ö;Ç 7-ݹ; ` \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_137_1.dat b/library/phpqrcode/cache/mask_1/mask_137_1.dat
deleted file mode 100644
index 284d7beab..000000000
--- a/library/phpqrcode/cache/mask_1/mask_137_1.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚí×1
-€0 ÐÝÓ¤÷¿œKh]D¥‘¾,-t ò#²ÚŒŠQ[T©Ñ “K“s§7_Š›è¤È?9|•B&ÙX›^L˜0a„ÉÂ&3÷“þ„ÉMÌ&L˜0a„ &2 ¼ÃD4c™0a„ &L˜È€òÐŒe„ &L˜0ab·—w˜È€f,&L˜0a„É7&y2¹a²ònßoL˜<01O
-˜ì¾ç \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_141_1.dat b/library/phpqrcode/cache/mask_1/mask_141_1.dat
deleted file mode 100644
index 83220ddb4..000000000
--- a/library/phpqrcode/cache/mask_1/mask_141_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí×1
-À À>¯9ÿÿ¹4¢6)ƒ3×$`s ²¸uÊ®‰>Wdš¾ ›)›g³•'°±MÂ{3\d6u¹’bØ°aÆ 6lؼn³û]ÜNØ°9ÄFÞ°aÆ 6lØ°a£3°a#oØ°aÆ 6lØ°ÑØ°Ñ5e16lØ°aÆ ]SŸb£kÊ6lØ°aÆ ›mê—ͤÍß;CûcÃf‘¼IdsG¹ÿ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_145_1.dat b/library/phpqrcode/cache/mask_1/mask_145_1.dat
deleted file mode 100644
index 6a9950f7a..000000000
--- a/library/phpqrcode/cache/mask_1/mask_145_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÜ!€0@Ïk®ÿÿ¦¡ 4a)³qæ2i.YCUO{35²UZÆFŒn]ÏfN>bd£ðwtzJF}ÁFŒ1bĈ#FŒýÆ(¡¯FŒ6r1bĈ#FŒ1ÒE1ÒiÝlFŒ1bĈ#FŒtFŒÜ#FŒ1bĈ#FŒtZ}#÷ˆ#FŒ1bĈÑl£þeôÀHÉùG£µÜ£@£Ù’î \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_149_1.dat b/library/phpqrcode/cache/mask_1/mask_149_1.dat
deleted file mode 100644
index 02a3cdc6e..000000000
--- a/library/phpqrcode/cache/mask_1/mask_149_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíØ1€ ÐÝÓ”û_Î…ˆƒqÁHÞ_Xšòc‰èi«#Gd̘ŠÕ”Õ›á÷g…¬LUè^Ý®VR«>dKV¬X±bÅŠ+VÛXeùo¿ÎX±ÚÌJ_±bÅŠ+V¬X±bÅÊ;ƒÝ™+}ÅŠ+V¬X±bÅŠ+VöAV¬ô•ngÅŠ+V¬X±bÅŠ•}+ï úŠ+V¬X±bÅŠ«VýËjÒÊ>øhewfõ›•¾*`uTqí \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_153_1.dat b/library/phpqrcode/cache/mask_1/mask_153_1.dat
deleted file mode 100644
index 2abfca20b..000000000
--- a/library/phpqrcode/cache/mask_1/mask_153_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØ1
-€0ÀÞ×\þÿ9›Ãbt³Ešc'›ªÎHHÍ•š9³efßžmff²MïÙíª›õ #.̘1cÆŒ3f̘1cf–Ô7¯3f̘Ùg̘1cÆŒ3f̘1c¦o2cæ]Ã?€3f̘1cÆŒ3fÞ5ôMfÌì3f̘1cÆŒ3f̘1Ó7utfÌì3f̘1cÆŒ3f̘=ÌúËl¡™¾ùj¦£3ûÕÌ>ÛÈì¤ÐVü \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_157_1.dat b/library/phpqrcode/cache/mask_1/mask_157_1.dat
deleted file mode 100644
index 17344b891..000000000
--- a/library/phpqrcode/cache/mask_1/mask_157_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí×1
-À À>¯9ÿÿ¹4S¦d/Ì5‚Õ1ÈÊVÍ)SkŽJžµ»­vßÜ7´³ÝÞÝíé…ÛÍeGä°cÇŽ;vìرc÷²]Z¯¸îÙ±c'ïرcÇŽ;vìرÓ+رÓgå;vìرcÇŽ;}V¯`ÇNÞù+رcÇŽ;vìØé:;vòŽ;vìرcÇŽ;½‚;}VÞ±cÇŽ;vìص±›'»ÍvzÅ#;Œ]Œ¼klw¯oA` \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_161_1.dat b/library/phpqrcode/cache/mask_1/mask_161_1.dat
deleted file mode 100644
index 669ade1b8..000000000
--- a/library/phpqrcode/cache/mask_1/mask_161_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíØ1€0ÐÝÓÐû_Î…XӨš yi~…ˆ¬Q©bÖÕkvÈp±á³ê7'M u¸Ù=¼]ņÙð([ 2dÈáÏ +þÛ\' 2”‡ 2dÈ!C† 2´s0/3d(½) 2dÈ!C† 24ë1dhç 2dÈ!C† 2dhÖcÈ¡<dÈ!C† 2dÈ¡ƒy™!CyèMaÈ!C† 2dØÞ0¿ —šõ^š—4”‡[ž‹E2 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_165_1.dat b/library/phpqrcode/cache/mask_1/mask_165_1.dat
deleted file mode 100644
index abb48f0b1..000000000
--- a/library/phpqrcode/cache/mask_1/mask_165_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíØ1€ ÐÝÓ”û_Î¥LK^–æ…#²FµŠYWt¨Ù%Ë–ïÂÿœ4¶ÔåÁ÷r¹šM,³éQºX²dÉ’%K–,Y¶²¬ú¯þœ°dÉÒ¼dÉ’%K–,Y²dÉ’%K’%K» ó’%K–,Y²dÉ’%K–v2$K–vÞ–,Y²dÉ’%K–,YÊò8K–楷‡%K–,Y²dÉ’%K–2$K–,ÍK–,Y²dÉ’%K–,ÛZæ—åVKò£¥<≥yy¤å ™ó)Î \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_169_1.dat b/library/phpqrcode/cache/mask_1/mask_169_1.dat
deleted file mode 100644
index ba21b710b..000000000
--- a/library/phpqrcode/cache/mask_1/mask_169_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíØ1À н§Áû_® ÑîM,ØÇâàB^ æ‘5*V¬º¢K­N™n2ýú¦¹©NòNOµ‘i6>ÊS¦L™2eÊ”)S¦L™2­œMç S¦LÍS¦L™2eÊ”)S¦L™2•Må}¦LÍSS¦L™2eÊ”)S¦LeSyŸ)SóÔÅ”)S¦L™2eÊ”)S;Ù”)S;ó”)S¦L™2eÊ”)S¦v(²)S¦v(æ)S¦L™2eÊ”)S¦íLódºÍT6}a*ï3mljžmzC' \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_173_1.dat b/library/phpqrcode/cache/mask_1/mask_173_1.dat
deleted file mode 100644
index 436918c0b..000000000
--- a/library/phpqrcode/cache/mask_1/mask_173_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíØ1€ ÐÝÓ”û_Î¥''Ó@y]Xšò1?"g¬:1çŠfn˶ÌöË»ö¬­m¼·¯«»™m.?¶¶lÙ²eË–-ÛF¶«ÿß>glÙ²•·Þ2¶lÙ²eË–-[¶lÙ²e«O`Ë–­¼eË–-[¶lÙ²eË–-[¶lõ lÙ²•·lÙ²eË–-[¶lÙ²eËV¦O`Ë–­¼eË–-[¶lÙ²eË–-[¶z0}[¶z0yË–-[¶lÙ²eË–-[¶E¶ùe[h«OøÍVWö…­¼=Ìötÿ*| \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_177_1.dat b/library/phpqrcode/cache/mask_1/mask_177_1.dat
deleted file mode 100644
index 12e2e522f..000000000
--- a/library/phpqrcode/cache/mask_1/mask_177_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíØ1€ ÀÞ×ÿÿœÍE¨¬Œp0×XÐà„,a#rÚÊ}®¨6}ÇŒ§¿Ùÿ»¶‰±~Ž‡£\Ð8 •ÆŒ3f̘1cÆŒ—7®ðÎ{Ö3f,ÝyŒ3f̘1cÆŒ3fÌX_¡¯`ÌXï&3f̘1cÆŒ3f̘±ÞM_Á˜1cy̘1cÆŒ3f̘1cÆŒë+3f,ÝyŒ3f̘1cÆŒ3fÌX_¡bÌXï&3f̘1cÆŒ3fÌxãü2žd¬¯øÔX'Äx[cy|¨ñ ¸•3ë \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_21_1.dat b/library/phpqrcode/cache/mask_1/mask_21_1.dat
deleted file mode 100644
index f87e0a112..000000000
--- a/library/phpqrcode/cache/mask_1/mask_21_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_25_1.dat b/library/phpqrcode/cache/mask_1/mask_25_1.dat
deleted file mode 100644
index 3a225e30f..000000000
--- a/library/phpqrcode/cache/mask_1/mask_25_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_29_1.dat b/library/phpqrcode/cache/mask_1/mask_29_1.dat
deleted file mode 100644
index 0a1cb3b5d..000000000
--- a/library/phpqrcode/cache/mask_1/mask_29_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_33_1.dat b/library/phpqrcode/cache/mask_1/mask_33_1.dat
deleted file mode 100644
index 318949df0..000000000
--- a/library/phpqrcode/cache/mask_1/mask_33_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_37_1.dat b/library/phpqrcode/cache/mask_1/mask_37_1.dat
deleted file mode 100644
index 5bd9e3aa0..000000000
--- a/library/phpqrcode/cache/mask_1/mask_37_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_41_1.dat b/library/phpqrcode/cache/mask_1/mask_41_1.dat
deleted file mode 100644
index 52e9e58f4..000000000
--- a/library/phpqrcode/cache/mask_1/mask_41_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_45_1.dat b/library/phpqrcode/cache/mask_1/mask_45_1.dat
deleted file mode 100644
index b35c567dc..000000000
--- a/library/phpqrcode/cache/mask_1/mask_45_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_49_1.dat b/library/phpqrcode/cache/mask_1/mask_49_1.dat
deleted file mode 100644
index d20d71710..000000000
--- a/library/phpqrcode/cache/mask_1/mask_49_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_53_1.dat b/library/phpqrcode/cache/mask_1/mask_53_1.dat
deleted file mode 100644
index a676d7dfa..000000000
--- a/library/phpqrcode/cache/mask_1/mask_53_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_57_1.dat b/library/phpqrcode/cache/mask_1/mask_57_1.dat
deleted file mode 100644
index 896ed4357..000000000
--- a/library/phpqrcode/cache/mask_1/mask_57_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_61_1.dat b/library/phpqrcode/cache/mask_1/mask_61_1.dat
deleted file mode 100644
index 4165a4bd2..000000000
--- a/library/phpqrcode/cache/mask_1/mask_61_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚ30€CbpPº™ÝØÅi`÷@ê&ÚßH^§Ðn¨a†dQ»Gíµ{Ôn<v“Z®ÁÅGíMk£vÚ=j7¶¶â ³›Öå9mäán7â›<»ª³Âh \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_65_1.dat b/library/phpqrcode/cache/mask_1/mask_65_1.dat
deleted file mode 100644
index db8db88a8..000000000
--- a/library/phpqrcode/cache/mask_1/mask_65_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_69_1.dat b/library/phpqrcode/cache/mask_1/mask_69_1.dat
deleted file mode 100644
index 03bba657f..000000000
--- a/library/phpqrcode/cache/mask_1/mask_69_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_73_1.dat b/library/phpqrcode/cache/mask_1/mask_73_1.dat
deleted file mode 100644
index a729fdf04..000000000
--- a/library/phpqrcode/cache/mask_1/mask_73_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_77_1.dat b/library/phpqrcode/cache/mask_1/mask_77_1.dat
deleted file mode 100644
index 0fe0b03e8..000000000
--- a/library/phpqrcode/cache/mask_1/mask_77_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_81_1.dat b/library/phpqrcode/cache/mask_1/mask_81_1.dat
deleted file mode 100644
index eacbdb1a2..000000000
--- a/library/phpqrcode/cache/mask_1/mask_81_1.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_1/mask_85_1.dat b/library/phpqrcode/cache/mask_1/mask_85_1.dat
deleted file mode 100644
index b8a20c754..000000000
--- a/library/phpqrcode/cache/mask_1/mask_85_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÙ1
-À н§‰÷¿\©]‹‰4ðþ˜AA hÄÌØM¬\Q‘µjsë·úAk§U·ûújm‘un2RÃÊÊÊÊÚΚ5·ž:k;«»ÅÊÊÊÊjƲº[¬¬¬¬eoÅí­›[™oð¬ÿ[ÇÎk®õ¨ðZä \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_89_1.dat b/library/phpqrcode/cache/mask_1/mask_89_1.dat
deleted file mode 100644
index e9d226f35..000000000
--- a/library/phpqrcode/cache/mask_1/mask_89_1.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÙ1€ ÐÝÓ”û_Î…‹N…h}%Àƒ@ iDOËHŒ±*cä"æûµ<öØgþâÈ)û<mõBsŸ¨¥‡™™™™ù—æÌwðja.av™™™™™ý‘ü7˜ÝAffff極‰2æ·¾ÝÙ5 æuØ­ç9ß|²Þä \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_93_1.dat b/library/phpqrcode/cache/mask_1/mask_93_1.dat
deleted file mode 100644
index f37836c61..000000000
--- a/library/phpqrcode/cache/mask_1/mask_93_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÙ;
-À À>§Ñû_.Ä4I‘ìâ‡yí‚Ž¢¸`)-5*¥ç(™é£of[Ósm€}åÑÃöý¶õÉö6YM ;;;;;ûG{ô»zÕØ·µ»«ìììììììz1vw•}œ=úwuûìýLÆ%û?û"ç=Ç~e—i \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_1/mask_97_1.dat b/library/phpqrcode/cache/mask_1/mask_97_1.dat
deleted file mode 100644
index 24fa60fc3..000000000
--- a/library/phpqrcode/cache/mask_1/mask_97_1.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÙ1
-À0н§1÷¿\—ÐtncKÌû«ƒ<DŒèi3#Gdgt(lxVûÉP¡ÃÔ9ÜFñ¡7lia``````ØÞq/]5†­ všÁ½Äàne``````xùÛ-mXá^Êú±3Ì5,´y†-†ù# \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_101_2.dat b/library/phpqrcode/cache/mask_2/mask_101_2.dat
deleted file mode 100644
index e39fd2cf1..000000000
--- a/library/phpqrcode/cache/mask_2/mask_101_2.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíÚ1
-À н§‰÷¿œ‹C‡â ‰Ux!“’?1ªe÷«ž ä)Ÿç“ás”Ê*¼KÛ®LfòšB¡P(”ÝJÖ®¤Ü¨x/
-…B‘a(2 …B¡P(2 E†¡P(ʲR÷Så(%qWR®S¼—ÿ”iY‰ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_105_2.dat b/library/phpqrcode/cache/mask_2/mask_105_2.dat
deleted file mode 100644
index 7b63e31ba..000000000
--- a/library/phpqrcode/cache/mask_2/mask_105_2.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÚ!À @ß×ÿÿ\Mƒ«iØp4sÁ€™ 6¬ ê™‘Ys®"¤7þÛù&)=ñ; ÒÜŒð"‘H$Ò¥µ¯;é|IžH$‰DÒ÷t#}OžH$‰DÒ÷Húžä’H$©·”þ­ÕIZß#HgKòÔJºt”$• \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_109_2.dat b/library/phpqrcode/cache/mask_2/mask_109_2.dat
deleted file mode 100644
index 252f6d807..000000000
--- a/library/phpqrcode/cache/mask_2/mask_109_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÚ1
-À0н§1÷¿\—@¶NÖˆ<q’À#ƒð#v­ßúÔ´-e~_«¨Š¿­[Ú÷«ä¦Ñh46JKžÓFjöF£Ñh4šÌE“'i4F£É“4y’F£Ñh´¾ZÁEcS-;—Ð&jö­©öŒ³Æñ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_113_2.dat b/library/phpqrcode/cache/mask_2/mask_113_2.dat
deleted file mode 100644
index 26b5d7eab..000000000
--- a/library/phpqrcode/cache/mask_2/mask_113_2.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÚ1€0ÐÝÓÐû_ÎÅ¡‰‰Ðª0óÚäD\5*{ª#ˆ½bò’H'o+vUÓÇR1ŸPÐD"‘H$øÑ>‰D"‘H$ÊäD™œH$‰D"Q&—WerûH$‰D"ñ±ç*x[±(Ë?/ÚÇ÷ˆ'ŸŠnd \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_117_2.dat b/library/phpqrcode/cache/mask_2/mask_117_2.dat
deleted file mode 100644
index b4dcce46f..000000000
--- a/library/phpqrcode/cache/mask_2/mask_117_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÚ1
-À À>¯9ÿÿ¹4!m dOƒs\§0X,laÕ5#¿÷Eª¾>Z[íœÖ·ŽÉêã½ÄR©T*•J¥R?Q-œº«*¯T*•J¥R©º?U÷—W*•J¥R©TÝŸªûË+•J¥R©Ô¤Úùó~m5Õ©;ªòúSõ&+ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_121_2.dat b/library/phpqrcode/cache/mask_2/mask_121_2.dat
deleted file mode 100644
index a2a0097b1..000000000
--- a/library/phpqrcode/cache/mask_2/mask_121_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_125_2.dat b/library/phpqrcode/cache/mask_2/mask_125_2.dat
deleted file mode 100644
index 0ea40fdae..000000000
--- a/library/phpqrcode/cache/mask_2/mask_125_2.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÛ!À P¿Ó”û_ƒ@ U(Ûkp@^Mú£Ú®5ÕôªúËîòâ-ú‰:ðöVF_žÌ\t:N§Óétú÷õ¼yžN×qt:N§ÓétºG—ãô;N§Óét:.ËÐå8:N§ÓétzA}ÿµ‹ôÔyžN×q¿Ñ;+nŠ& \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_129_2.dat b/library/phpqrcode/cache/mask_2/mask_129_2.dat
deleted file mode 100644
index bf048394b..000000000
--- a/library/phpqrcode/cache/mask_2/mask_129_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÛ1
-À0н§Ñû_®KÈVÚ¡¨'.Éôþ!«²¶w]A0XðÄú÷~˜ «ÚÞ  ö!›š€€€€€€à£ fK# x˜Fy€À4È vey€€€€€€€@^°+È ç º~™ž ¨Û L#ÁêveI \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_133_2.dat b/library/phpqrcode/cache/mask_2/mask_133_2.dat
deleted file mode 100644
index 9e78b6de5..000000000
--- a/library/phpqrcode/cache/mask_2/mask_133_2.dat
+++ /dev/null
@@ -1,10 +0,0 @@
-xÚíÛ1
-À н§‰÷¿œ‹à&´`¢ô…Lâð”üÁˆQ-½g=Aq•bëú¹ŠÊª<‹všb½+©)((((((((ÊIën*…<b§G(((((((((ä
-yÄ{AAAAAAAA!˜Á)ä
-
-
-
-
-
-
-Š•¢ð'ùeŠ¬¹“‚â½ÂMý©¢fv{ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_137_2.dat b/library/phpqrcode/cache/mask_2/mask_137_2.dat
deleted file mode 100644
index 95c3c48cd..000000000
--- a/library/phpqrcode/cache/mask_2/mask_137_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜ1
-À н§‰÷¿\—N‚I,/d+Ê£`ð/F|5*zª'H.”,xëO[KšKª«øŸŒ–’õ‰MBBBBBBÒT’|?!!9”8Å$$$$$$$$$$2 ‰ hžÈ€$2 yBBBBBBBBBB"eÈ€æ ÉŸ$µ¯IÜ%É¿Û“œHœb’©_xêÛë \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_141_2.dat b/library/phpqrcode/cache/mask_2/mask_141_2.dat
deleted file mode 100644
index da07da2e8..000000000
--- a/library/phpqrcode/cache/mask_2/mask_141_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜ=
-À н§‰÷¿œ‹t*-ˆ?±¼M…‡á[ŒhUöõ]WÐüB¯ç;–ÎÔd¨wS’j>÷­lš ††fŽÆ„ÓÐÐÐÐÐÐÐÐÐÈš44²& ¬)OÑÈšÞY“FÖ4á444444444c4~œ9S³:3ÐЌטpšÇ®>® \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_145_2.dat b/library/phpqrcode/cache/mask_2/mask_145_2.dat
deleted file mode 100644
index 9ff2bbf3f..000000000
--- a/library/phpqrcode/cache/mask_2/mask_145_2.dat
+++ /dev/null
@@ -1,4 +0,0 @@
-xÚíÜ1
-À н§ùÞÿr]
-Ý,tˆQ^È&ÊCˆð“§ÆÒ~ë
-щ¢Éj~mɾ¢.ÕåŽFgÑüìMDDDDDDDDDDDÔST™×ˆˆêD¦ŸˆˆˆˆˆˆˆˆˆH¦•ŽˆdZï‘L+¯É´DDDDDDDDDDD2-‘é'"""""""":BÔäת½EåY„ˆ¨Ddú‰¾û† †Š \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_149_2.dat b/library/phpqrcode/cache/mask_2/mask_149_2.dat
deleted file mode 100644
index d52e0484b..000000000
--- a/library/phpqrcode/cache/mask_2/mask_149_2.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÜ;€@ÀÞÓÀý/gcaGÖBXBç'“-ˆ¼Âˆ«²»ouÕ§UQ½dõRVOm¡šTƒÎ*Ç«Ê;;šŠŠŠŠŠŠŠŠŠj¨ªå»ŠªEe2PQQQQQQQQQQQɨ¨ä TTTTTTTTTTTTr»3•œÁ¼¢¢¢¢¢¢¢¢¢¢¢’3ØR©ä &ÕßTsþŒ·»ªk¤¢z_e2P=ê ïd™ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_153_2.dat b/library/phpqrcode/cache/mask_2/mask_153_2.dat
deleted file mode 100644
index 3b0604101..000000000
--- a/library/phpqrcode/cache/mask_2/mask_153_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜ1
-€0 ÐÝÓ¤÷¿œ‹8ZP!¿úB¶ÒòèèZuÔÈ賶"û“ìbuºñö™‹ÈÒ*îÎƲé)]MFFFFFFFFFFFFö†¬%= #‹‘™ddddddddddddr ot2¹†yFFFFFFFFFFFF&× #“k‘‘‘‘‘‘‘‘‘‘‘‘É5ÈÈL 2222222222²(YÚµ½7ÉÈ"d¦ÙóÞ@H— \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_157_2.dat b/library/phpqrcode/cache/mask_2/mask_157_2.dat
deleted file mode 100644
index 2baf535e2..000000000
--- a/library/phpqrcode/cache/mask_2/mask_157_2.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíÜ1
-€0À>¯¹üÿs6‚M¹ÎqUH1¤XØ&Uç̘½fÝ/u-çûé'ñíæ.ºû[ÍKGGGGGGGGGG÷H×|NG¨“(ttttttttttú¬NF§ÏÊ;::::::::::}–ŽNŸ¥££££££££££Ózèè$
->«“Ñé³…ŽŽŽŽŽŽŽŽn­ üAø#ºî^AG—§“(t¯ì =3{ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_161_2.dat b/library/phpqrcode/cache/mask_2/mask_161_2.dat
deleted file mode 100644
index d2df7594e..000000000
--- a/library/phpqrcode/cache/mask_2/mask_161_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_165_2.dat b/library/phpqrcode/cache/mask_2/mask_165_2.dat
deleted file mode 100644
index 2e6cd7c6f..000000000
--- a/library/phpqrcode/cache/mask_2/mask_165_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÝ1
-€0 ÐÝÓ¤÷¿œ‹Šè ?òBÆVü¥UG¼žµ%åùÐêþ¸åÙ×*“+ú_ŽfÊËs MIIIIIIIIIù–2d;£¤l¨4‰()))))))))))eöqJÙ†IDIIIIIIIIIII)Û ¤”mPRRRRRRRRRRRÊ6lº””² JJJJJJJJJJJJÙ†}œR¶aQRRRRRRRRRRNeòK?R픔͔&åW½3U \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_169_2.dat b/library/phpqrcode/cache/mask_2/mask_169_2.dat
deleted file mode 100644
index 4052062b8..000000000
--- a/library/phpqrcode/cache/mask_2/mask_169_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_173_2.dat b/library/phpqrcode/cache/mask_2/mask_173_2.dat
deleted file mode 100644
index 0a30ba530..000000000
--- a/library/phpqrcode/cache/mask_2/mask_173_2.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÝ+€@ PÏiº÷¿ÚfÝtóš:>y &d U߬ÔýÍS´´[íþª»ùé¡Õ]5Z;a¼Û5VÛž™´´´´´´´´´´AÚÀï[ZÚË´Œ–––––––––––––V¦«¡ÕƒI0ZZZZZZZZZZZZZZ=-­L‚ÑÒÒÒÒÒÒÒÒÒÒÒÒÒêÁhiõ`Œ–––––––––––––VFK«“·´´´´´´´´´´´´ÉÚü?‚ݧÍìhioÒJ0Úà}³¢o \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_177_2.dat b/library/phpqrcode/cache/mask_2/mask_177_2.dat
deleted file mode 100644
index d2c52f990..000000000
--- a/library/phpqrcode/cache/mask_2/mask_177_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÝ1
-À EÁ>§Yï¹4’V$Í~± ,CŠ…¼&UóŒÞ÷;OoŠk5b÷ÑÏ™áâ”óŽG°x9¥Û%&&&&&&&&&&&n$îöõOL|‡Øv#&&&&&&&&&&&&&ÖÝbbݘ˜˜˜˜˜˜˜˜˜˜˜˜˜Xw#&ÖÝl7bbbbbbbbbbbbbbÝM"ÖÝl7bbbbbbbbbbbbbbÝMa!&Ö݈‰‰‰‰‰‰‰‰‰‰‰‰3Ä)U<WܱWŸ/¶Ýˆ#î n  \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_21_2.dat b/library/phpqrcode/cache/mask_2/mask_21_2.dat
deleted file mode 100644
index 7466be4bb..000000000
--- a/library/phpqrcode/cache/mask_2/mask_21_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_25_2.dat b/library/phpqrcode/cache/mask_2/mask_25_2.dat
deleted file mode 100644
index 0bc44c034..000000000
--- a/library/phpqrcode/cache/mask_2/mask_25_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_29_2.dat b/library/phpqrcode/cache/mask_2/mask_29_2.dat
deleted file mode 100644
index 5112d11ef..000000000
--- a/library/phpqrcode/cache/mask_2/mask_29_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_33_2.dat b/library/phpqrcode/cache/mask_2/mask_33_2.dat
deleted file mode 100644
index 5bac0c80d..000000000
--- a/library/phpqrcode/cache/mask_2/mask_33_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_37_2.dat b/library/phpqrcode/cache/mask_2/mask_37_2.dat
deleted file mode 100644
index bdfc0bd43..000000000
--- a/library/phpqrcode/cache/mask_2/mask_37_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_41_2.dat b/library/phpqrcode/cache/mask_2/mask_41_2.dat
deleted file mode 100644
index c55c63e8c..000000000
--- a/library/phpqrcode/cache/mask_2/mask_41_2.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚ30€C¸ †¯JB€&¶Ã¹†ШÊQ•£*‡ªJXi@lÉ0øUÂý> *F™>– \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_45_2.dat b/library/phpqrcode/cache/mask_2/mask_45_2.dat
deleted file mode 100644
index ad44ff188..000000000
--- a/library/phpqrcode/cache/mask_2/mask_45_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_49_2.dat b/library/phpqrcode/cache/mask_2/mask_49_2.dat
deleted file mode 100644
index 6e8edff24..000000000
--- a/library/phpqrcode/cache/mask_2/mask_49_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_53_2.dat b/library/phpqrcode/cache/mask_2/mask_53_2.dat
deleted file mode 100644
index 682cae2aa..000000000
--- a/library/phpqrcode/cache/mask_2/mask_53_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_57_2.dat b/library/phpqrcode/cache/mask_2/mask_57_2.dat
deleted file mode 100644
index 66a5c056b..000000000
--- a/library/phpqrcode/cache/mask_2/mask_57_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_61_2.dat b/library/phpqrcode/cache/mask_2/mask_61_2.dat
deleted file mode 100644
index 77d3815eb..000000000
--- a/library/phpqrcode/cache/mask_2/mask_61_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_65_2.dat b/library/phpqrcode/cache/mask_2/mask_65_2.dat
deleted file mode 100644
index caf184ada..000000000
--- a/library/phpqrcode/cache/mask_2/mask_65_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_69_2.dat b/library/phpqrcode/cache/mask_2/mask_69_2.dat
deleted file mode 100644
index 6a3801bf5..000000000
--- a/library/phpqrcode/cache/mask_2/mask_69_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_73_2.dat b/library/phpqrcode/cache/mask_2/mask_73_2.dat
deleted file mode 100644
index 74945b718..000000000
--- a/library/phpqrcode/cache/mask_2/mask_73_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_77_2.dat b/library/phpqrcode/cache/mask_2/mask_77_2.dat
deleted file mode 100644
index 903cba4a0..000000000
--- a/library/phpqrcode/cache/mask_2/mask_77_2.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíØ1À н§Áû_®‹CMŠØ>òGót Ñ«eó¨+Ž×FWÄZE¼­mÓ&gÞ‡F£Ñ¶h‰ùF+×t/F£ÙYvF£´õ³ïµÜì¥Õjçô[*7òÕa¶ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_81_2.dat b/library/phpqrcode/cache/mask_2/mask_81_2.dat
deleted file mode 100644
index 17a9ac2a1..000000000
--- a/library/phpqrcode/cache/mask_2/mask_81_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØ1
-À0н§Ñû_®KÉÒ©Vi!O\"á‘Aøˆ«ò]¯:‚x»‘çÃbWµ½1ÅuȦ&‰Ä_‰µT ΋6œH$‰ÒU^‰Dâ~bׯëb=gˆ³âžûXî­ÛÙ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_85_2.dat b/library/phpqrcode/cache/mask_2/mask_85_2.dat
deleted file mode 100644
index 72c74ff9a..000000000
--- a/library/phpqrcode/cache/mask_2/mask_85_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØ1
-À0Ð=§1÷¿\—B7¡ÖÖOþ$á‘A0$â¬ý8W­ ¦ê­þwjguÞu¿­æ§Š¡R©T*u•÷SÖ§Ž¨æ•J¥R©ÞTóJ¥R©ÿRö‡ÕêÞ¢N¨æµ˜çVû \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_89_2.dat b/library/phpqrcode/cache/mask_2/mask_89_2.dat
deleted file mode 100644
index 06c9a4fe3..000000000
--- a/library/phpqrcode/cache/mask_2/mask_89_2.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÙ± À0 À>ÓÈû/—&E*câÇQqâëÃŃ ªzf$òš«ÈËrM…ßåô„ß<ŽÈsa#d2™L&’?ïArYŸÉd2™LöG"ë3™L&“{ÊÙëRygw“;ÈúÊ ƒñÚI \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_2/mask_93_2.dat b/library/phpqrcode/cache/mask_2/mask_93_2.dat
deleted file mode 100644
index f5202963d..000000000
--- a/library/phpqrcode/cache/mask_2/mask_93_2.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_2/mask_97_2.dat b/library/phpqrcode/cache/mask_2/mask_97_2.dat
deleted file mode 100644
index 38842b989..000000000
--- a/library/phpqrcode/cache/mask_2/mask_97_2.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÙ1
-À0н§Ñû_®Ki·vH4 <q  Â#®Ê©ýÔ„ÂËôsÔ-TUÕ²S¸_YÔ@ k…‘¼DØI°@ äV‚ÜJ a©PtÅÿ—0œ—›ö¡C8%ó¬ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_101_3.dat b/library/phpqrcode/cache/mask_3/mask_101_3.dat
deleted file mode 100644
index fa9925121..000000000
--- a/library/phpqrcode/cache/mask_3/mask_101_3.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÚK€ EÑyWSö¿9'D1ñŸ¾ªp ã /9±Ðîu•èÝ,kžu9–Ò¤¼$¶îû%‰Ý­wAL¹¤b%ClA³ƒzqÛ´å붌‚bˆ!†ØÇĤwå™XÜ4`Áõ¶_ö'FWrŽ!†bˆõ&Æt1Ä<FWrŽ!†bˆýXŒé‚yŒ®äC 1ĆÓý©²Ó‡Ì)E{WúÙ¯AÓ…gLž1]¼-&øƼ§®”æLqn‰ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_105_3.dat b/library/phpqrcode/cache/mask_3/mask_105_3.dat
deleted file mode 100644
index d8a28ce98..000000000
--- a/library/phpqrcode/cache/mask_3/mask_105_3.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÚ1€ DÑ~O3Üÿr6„Ð@(œ1ê'†„¬ûâÂJ}4Ï£¦gk 9’7ÐéA=­÷ž¯Ÿèi»÷p}‘“w¸õZJo¬ýûÜ8Ë¢ÏJB=ôÐCÏs= =÷;ô”Hê³zT.çz衇zô{ô{ô{T.çz衇zô{ô{ô{T.z衇zoÔS$P«T õhŽŽE©Ž%•Ô¿ôbßž¯r•ª\RåL$Ý \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_109_3.dat b/library/phpqrcode/cache/mask_3/mask_109_3.dat
deleted file mode 100644
index 48d94040e..000000000
--- a/library/phpqrcode/cache/mask_3/mask_109_3.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÚ1€ DÑ~O3Üÿr6Ñ‹Ý ÁO(‹Í¾™©V6ïÓsy±¹š¡¹Ð>’)ë_%s×_½Õƒd3KŽO1^ša†§LŸá,†$’H"‰$’KzRP—t[I&¯ÿX’ÝÍ9‰$’H"‰$’äIò$y’sI$‘DI$É“äIò$»I$‘DÉ%eëÌsò!¹¼=—™‚äLAZ5—œ'åÌ“IVý“rîn¸»/2oÆ… \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_113_3.dat b/library/phpqrcode/cache/mask_3/mask_113_3.dat
deleted file mode 100644
index 023b27304..000000000
--- a/library/phpqrcode/cache/mask_3/mask_113_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÚA
-€0 DÑ}N“ÞÿrnDëÂFj2úK‚ÂÈCÂt?W«ÜݲîZ“iêÀ.qÕÁ‹ŒoýP ô¯ªª%SmjÕÖÂ7ËÞ¦‹:·©ª¨¢Š*ª¨N©Ê:@¤:݇·ìýÁŠ¾º•*€¹Š*ª¨¢Š*ª¨f©ÒW9dª2˜«¨¢Š*ª¨¢Šj–*}•S@ Ê`®¢Š*ª¨¢Šj½ªæ¯à§ª6ðJlº¾êÑ¿Ã}ÕÕ}ÕÕ§€•T‹¿UßaÈ24hnt \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_117_3.dat b/library/phpqrcode/cache/mask_3/mask_117_3.dat
deleted file mode 100644
index 79cc04d14..000000000
--- a/library/phpqrcode/cache/mask_3/mask_117_3.dat
+++ /dev/null
@@ -1,4 +0,0 @@
-xÚíÛ1
-Ã0 Ð]§Qî¹.¡xIÚB$úŒ‡€Á?~!É<ÇQ?ß#–ç¶Ð5µ/tIÝJ8owøié{áßçâ¬}£Sø˜^ã~‡¢½q猉P„ &L˜0áJá¢î1ÊúϻݢðD×K'¬J¨Ã„ &L˜0á…õÃn
-«ê0a„ &Lxgaý°Gƒ°*¡&L˜0aÂ{
-g{è¡Ÿþ2¨ë‡s¢Ή~˜ðì7\]%r¢Jôö9nZ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_121_3.dat b/library/phpqrcode/cache/mask_3/mask_121_3.dat
deleted file mode 100644
index aff5a7be5..000000000
--- a/library/phpqrcode/cache/mask_3/mask_121_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_125_3.dat b/library/phpqrcode/cache/mask_3/mask_125_3.dat
deleted file mode 100644
index e2febdbdd..000000000
--- a/library/phpqrcode/cache/mask_3/mask_125_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÛ1
-Ä Ð~N3ÞÿrÛ„]·‰BБÝ'?<Âà/̼VÛµ»Ýóþü¨ ïÒ”¿ÿ´…<–’0-_±Jä[¥ü?† +wÔÄ^;*ÃyòäÉ“'Ož<ù’/9ÏÏɯì9±<áîyÓÆœ'Ož<yòäÉ“'¿J^“Òa—È›6¦ yòäÉ“'Ož<ùGòš”{–¼icΓ'Ož<yòäÉå÷ßPû–¯ §·šó|Î]¨ZÖ¤²²Iee“:[~Ë?Ÿÿ<mJò_¶NŠ: \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_129_3.dat b/library/phpqrcode/cache/mask_3/mask_129_3.dat
deleted file mode 100644
index b1ce63b74..000000000
--- a/library/phpqrcode/cache/mask_3/mask_129_3.dat
+++ /dev/null
@@ -1,8 +0,0 @@
-xÚíÛA
-€ н§ï¹6!n” ðG<q‚4øhð/ªºG?;ÇhÓs¤€¹‚LST¨õÞ÷ëOj»÷åúâ 2#¥ÐÓ
-DÛ×y`¶Ü«ïÙÒP @
-ÏÎ\†BêŽ4*yt$‰
-(P  /È ò‚¼ #Q @
-äyA^t$
-(P @‚¼ /È ò‚ŽD
-(ü\¡¢ô–.`ý§íÉ›j¥oªéC °Sˆ ç;R¥;Rî.€Iõ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_133_3.dat b/library/phpqrcode/cache/mask_3/mask_133_3.dat
deleted file mode 100644
index f4181507a..000000000
--- a/library/phpqrcode/cache/mask_3/mask_133_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_137_3.dat b/library/phpqrcode/cache/mask_3/mask_137_3.dat
deleted file mode 100644
index e24ac5b51..000000000
--- a/library/phpqrcode/cache/mask_3/mask_137_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜA
-Â0Ð}N“ÞÿrnªFÔHSš™à YQ|øé‡ÒZ÷µEìf•æuì,%Ë Í$‰uj÷ÓG£:Ãßzèèóo»Âu¶,:O òsâY»Ä°ï’e:tèÐI¡sÅÕj÷¨|ãÌ+ê»Nø5ŽŽd“ltèСC‡:tÎèè;Úèb:’M²Ñ¡C‡:tèÐ9££ïh£ËëH6ÉF‡:tèСCǽ Ú¨{A%›d£C‡:tèü³NìÓ$^ur ò˜dV—èô±'\Ówj–¾S³´Ñt‚þ;U²½'[ø,7ÃÜ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_141_3.dat b/library/phpqrcode/cache/mask_3/mask_141_3.dat
deleted file mode 100644
index a3f6a2480..000000000
--- a/library/phpqrcode/cache/mask_3/mask_141_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜA
-Â0Ð}Nó{ÿ˹)%]ØjÀf /d!ˆuÈÃOŠUûÚæícµîõô0}šùaº4ùR9ëòÊ_½õ¡T~é`˜ÓÙÌ_ R[’T‡Õ®¯ððn1öÝ’Â"EŠ)R¤H-*•p—~H…Ü¥ßJýäÞ„Ô°”égú‘"EŠ)R¤H‘J“Ò§4ß‘2ýL?R¤H‘"EŠ)RiRú”滀”égú‘"EŠ)R¤H‘ò ­>¥ùz†Öô#EŠ)R¤H‘Z@ªbÂl-)ÌÝ¿ñ<ߧ*©OURŸ"5&•ö›š5ý*iúeÎ J]®+ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_145_3.dat b/library/phpqrcode/cache/mask_3/mask_145_3.dat
deleted file mode 100644
index 338b7e7a8..000000000
--- a/library/phpqrcode/cache/mask_3/mask_145_3.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíÜÁ
-‚@Ðý|Íóÿ®”•:Œ^ñ ³JyÌ¡¤ªyM§î×j‹×-'
-9¤V—SÛýÖ¦K¶©9ëÇe¬µ)PíyUûû¹£wËeÞ-m jÔ¨Q£F5jÔ¨RËiÙ«ÔF4×_wk}·0+µµjRBR£F5jÔ¨Q»ƒš¾¦eßOMBJHjÔ¨Q£F5jwPÓ×´ì˪IH I5jÔ¨Q£FͳÇúš–íÙc éw5jÔ¨Q£FíµŠ:¡œÿÑzS«Ž*2¤¯UZ_«¾CÒ×*­e_Oí´ïZ¥%dIȯûâ†b \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_149_3.dat b/library/phpqrcode/cache/mask_3/mask_149_3.dat
deleted file mode 100644
index 30bc5fabc..000000000
--- a/library/phpqrcode/cache/mask_3/mask_149_3.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÜA‚0Ð}Oó¹ÿåÜ â¦Hé ¯éÂô“'¬Z×2{oVÛ|Ι«%µ™ê>‚yû·R{‡!8îäÂI+JpI|#¶Ýfì–5κ[âP A‚ $H Á‚Q}ð)Õ&<¹÷E‚§ JQ)J A‚ $H Ás5zþ¥¨%H A‚ $Hà4A^£ÿ5A)*E $H A‚ $è½ Þ3ïMHQ‚ $H A‚ç æü3Þ§`ÞP¯©®o¢Ý>X{טÔè+±ÑWb£¿¡àìß`IÑã)5׈%dš \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_153_3.dat b/library/phpqrcode/cache/mask_3/mask_153_3.dat
deleted file mode 100644
index 89cdec031..000000000
--- a/library/phpqrcode/cache/mask_3/mask_153_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜA
-Â0Ð}Nósÿ˹)7mJ¦õ…,Å}8µêX=c¿W^G“e’ÝNó<v]]bí­Iͯ_½Ïû¸gY+M³§j íò“»vË‹tì–Œ&Mš4iÒ¤I“&MšÿªxÞœÑÜu~o[¯~ö4W55­¦¥I“&Mš4iÒ¤I“æS5ML¯©i5-Mš4iÒ¤I“&Mš4o­iz`z@SÓjZš4iÒ¤I“&Mš4izÅôÀôÀs(šVÓÒ¤I“&Mš4iÒ¤¹¬Y‘ÁzK 6ñ¦Ï›•:=¨ÔéÍ_hÆþ6·7m¥6mÞM{üHã \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_157_3.dat b/library/phpqrcode/cache/mask_3/mask_157_3.dat
deleted file mode 100644
index 167e6f844..000000000
--- a/library/phpqrcode/cache/mask_3/mask_157_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_161_3.dat b/library/phpqrcode/cache/mask_3/mask_161_3.dat
deleted file mode 100644
index 72a26a4fc..000000000
--- a/library/phpqrcode/cache/mask_3/mask_161_3.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíÜA
-Â0Ð}N“ÜÿrnªF±ÑTká…,„€NûðÛ ÄZ—Ñ’f7J÷:³Æ’^`WáÙ”U×á»nXÚ¤¼Ç§M-½¾‡™#V¹¥+ß¡ËÛ+9z–ÜÒ–YÒ l”)S¦L™òo•cŸ±¯Ê±O_Cå?ß©õ%Ê;*Kl‰M™2eÊ”)S¦L™2åYeý²]ÊÏÊ[bS¦L™2eÊ”)S¦LyVY¿lW„òGÊ[bS¦L™2eÊ”)S¦LÙÙ
-ý²]g+$¶ßeÊ”)S¦L™2eÊ”­Ð/Ûq¶BbKlÊ”)S¦L™2eÊqÊ™ÿ‚þ¨œ]à­Â£{ÎA¿¼¦œÔ/×ô~¹¦ïŠœV9ï»\%ö÷‰[ãP¯#' \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_165_3.dat b/library/phpqrcode/cache/mask_3/mask_165_3.dat
deleted file mode 100644
index 870af8f4f..000000000
--- a/library/phpqrcode/cache/mask_3/mask_165_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÝA
-Â0Ð}N3¹ÿåÜT‰ #ØZþÀ Y¥uÈí:ÆÌ›¯1–ϱE®Uæ¹TÙT|SüþÒ·Ô ñ ¿qž)òm-sG²øì ¾ ýBæÈ.C‘ĉ'Nœ8qâÄŸâáÿÕ÷âwv7û[Æç'„tgÄÿ!.Õ¥:qâĉ'Nœ8qâÄÄõãv`ˆ_+.Õ¥:qâĉ'Nœ8qâÄÄõãv`ˆ—êR8qâĉ'Nœ8qâΤèÇíÀ8“"Õ¥:qâĉ'Nœ8qâÄIÑÛq&EªKuâĉ'Nœ8qâ½Ä+¾È9:¹}kFT?^úñêпG¼Åo<0Õ«Cªg/æ_ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_169_3.dat b/library/phpqrcode/cache/mask_3/mask_169_3.dat
deleted file mode 100644
index 943109526..000000000
--- a/library/phpqrcode/cache/mask_3/mask_169_3.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÝA‚0Ð}O3Üÿrnˆ¢‰ñ·¾¦ ¨)}á'3ªæ1EÎÇh‹ßÑ]î4üP[ £_«ñÁ¥]Kvè‡<ÃË™fpý©#ýûª¶y_Êlù[œgëe£ôéÓ§OŸ>}úôéÓÿoý ªµ%uJV/µ°“{¿„þ—ô%¿ä§OŸ>}úôéÓ§OŸþ¨úê}Ýú§êK~ÉOŸ>}úôéÓ§OŸ>ýQõÕûº=ô/Ñ—ü’Ÿ>}úôéÓ§OŸ>}ú£ê«÷u{èï×—ü’Ÿ>}úôéÓ§OŸ>}ú£ê«÷u{蟪/ù%?}úôéÓ§OŸ>}ú¿×¯.N4ÿ»<Oúµõ±‘”z¿z©÷lôêz¿zéö ¢ŸøîW/É_’ÿ´yp \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_173_3.dat b/library/phpqrcode/cache/mask_3/mask_173_3.dat
deleted file mode 100644
index 746698627..000000000
--- a/library/phpqrcode/cache/mask_3/mask_173_3.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÝA‚0Ð}O3ÜÿrnPkŒTTèŒyM$&e/|ù"ÖµdÝÝjÝuþy[¥a»i‹KˆÑ{úòÌM S&z[B…UBÂRIÂCÞ!Ón5Æ\w«4ìB $@ $°[”ÿ°£3Ûëc²½E^%”xw á ÒA:@ $@ $@ $B‚fI³D ÒA:@ $@ $@ $p¶Í’f‰„Ã%Hé@ $@ $@ $@BR š%Í ¿” ¤ $@ $@ $@ )$h–4K$L ¤ $@ $@ $@³„ü_{”PgØÛ´yŽÍ>áƒVMm–¢R³•š¥‘ø™Òá¸t(1ï…¢| \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_177_3.dat b/library/phpqrcode/cache/mask_3/mask_177_3.dat
deleted file mode 100644
index 9586979a1..000000000
--- a/library/phpqrcode/cache/mask_3/mask_177_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_21_3.dat b/library/phpqrcode/cache/mask_3/mask_21_3.dat
deleted file mode 100644
index bcb4eec49..000000000
--- a/library/phpqrcode/cache/mask_3/mask_21_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_25_3.dat b/library/phpqrcode/cache/mask_3/mask_25_3.dat
deleted file mode 100644
index 0ffc375fc..000000000
--- a/library/phpqrcode/cache/mask_3/mask_25_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_29_3.dat b/library/phpqrcode/cache/mask_3/mask_29_3.dat
deleted file mode 100644
index 6150ac128..000000000
--- a/library/phpqrcode/cache/mask_3/mask_29_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_33_3.dat b/library/phpqrcode/cache/mask_3/mask_33_3.dat
deleted file mode 100644
index 6053b5e39..000000000
--- a/library/phpqrcode/cache/mask_3/mask_33_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_37_3.dat b/library/phpqrcode/cache/mask_3/mask_37_3.dat
deleted file mode 100644
index 5dea5b9cb..000000000
--- a/library/phpqrcode/cache/mask_3/mask_37_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_41_3.dat b/library/phpqrcode/cache/mask_3/mask_41_3.dat
deleted file mode 100644
index ca9ddc2aa..000000000
--- a/library/phpqrcode/cache/mask_3/mask_41_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_45_3.dat b/library/phpqrcode/cache/mask_3/mask_45_3.dat
deleted file mode 100644
index 3daad97f8..000000000
--- a/library/phpqrcode/cache/mask_3/mask_45_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí”K
-À D÷sšñþ—ëFJ(&™)ô³0d¡øЇ’³FÞg!Œ[8Ò=èÛ&ËiaÂÎD)Åd8&AËÕ¬¡a³áÀÛä 1'™I–I”«×³ž7Ù9ù­ exÀ“ß¾È ÄÒIìû&Ö´¯Cçu´ÍJy‚ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_49_3.dat b/library/phpqrcode/cache/mask_3/mask_49_3.dat
deleted file mode 100644
index 7f6508ddd..000000000
--- a/library/phpqrcode/cache/mask_3/mask_49_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_53_3.dat b/library/phpqrcode/cache/mask_3/mask_53_3.dat
deleted file mode 100644
index 8800beab1..000000000
--- a/library/phpqrcode/cache/mask_3/mask_53_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí–K
-À0D÷s½ÿåº ­¥‰Ñ! -(.Bp&|ˆ"-t–&`Æq‘Q-"†ð9Ù_+)Be/H8¾ãD®¼%‘a~šÐ}spKFN˜úöœ¶Ö=,ÂÆ;‡;a^tª4÷–‰Ï\™ÞF™ÎáÂÀÊÎSNé§éâ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_57_3.dat b/library/phpqrcode/cache/mask_3/mask_57_3.dat
deleted file mode 100644
index 4e1e5da38..000000000
--- a/library/phpqrcode/cache/mask_3/mask_57_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_61_3.dat b/library/phpqrcode/cache/mask_3/mask_61_3.dat
deleted file mode 100644
index bf1a3cc7f..000000000
--- a/library/phpqrcode/cache/mask_3/mask_61_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí–A
-À0ï¾fýÿçz‘4-%š•Ò*Ãâd°Ðpž!ÝyZÜ«‰æ‚uäõ(ù¸~ë=¹&ÉÛ“´‹)œÌR2â"/ò"ÿ<9çŠFΊ=r§þbòšó"/ò“ƒîÌíçrw¹"2®¯¹ãçÈøùBòèŸ#3-Ø0-KÀW \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_65_3.dat b/library/phpqrcode/cache/mask_3/mask_65_3.dat
deleted file mode 100644
index 85892089b..000000000
--- a/library/phpqrcode/cache/mask_3/mask_65_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí—Q
-€ Dÿç4»÷¿\?R•Û …Å,û!¨OŠ²-òNv®Í1 :Âc¡Zœuï Ú"U‹MÕF ~jK¨€´…-la‹[^q^³Q\éœ=…o”-la‹ÿZpUÒÞB¬„äÿ ±@IµÖKµJzÉ¢|1â ÷¹ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_69_3.dat b/library/phpqrcode/cache/mask_3/mask_69_3.dat
deleted file mode 100644
index 55318a87b..000000000
--- a/library/phpqrcode/cache/mask_3/mask_69_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí×Á
-€0 Ð{¿&ûÿŸó2¤'—®dô l†=,¹F½îéy;$§ì‡¤”WEË-R„Š¨³:¢¡%T,O2½×g…"Ä"‹,²È¢/DÍyĈ˜¹ôɧ{þO䮳È"‹,:N„vÈEñWNÎ#(&,ö,‘䕺Š®ë]æxØ… \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_73_3.dat b/library/phpqrcode/cache/mask_3/mask_73_3.dat
deleted file mode 100644
index 15be77f64..000000000
--- a/library/phpqrcode/cache/mask_3/mask_73_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí˜Q
-€0 Cÿ{šìþ—ógè;è¥JJ?dÔ¬K„=ÚRaÃsJhTJ6exÎkaºú¥§\$é‘n¯´IE,-/ÑÓXB¢è*Ñ…=ËâžíÚÒýweeé4™¢è¸tÿöÌ’tšLщî«t t”ß«œèà¯bž –gF…fž ÖáqºõoÖd¢Ðdn-ð? \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_77_3.dat b/library/phpqrcode/cache/mask_3/mask_77_3.dat
deleted file mode 100644
index ec7828044..000000000
--- a/library/phpqrcode/cache/mask_3/mask_77_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØA
-€0 Àû¾&ùÿç¼­BŠiÖRaK"té`I@³¶|¶º…fX—ö±Ôâ­yiöåólõE‘:Sza18G¾À‰if˜K*©¤?–:YÜC1쌞졘(ቷ—êöJ*©¤’¾’jÊl*Õí•TRI×KëÌîR^Ø™æœÞksûÂ)cÌ)cÌ)³JZø¦¶óí¥äãa· \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_81_3.dat b/library/phpqrcode/cache/mask_3/mask_81_3.dat
deleted file mode 100644
index 47bc0f793..000000000
--- a/library/phpqrcode/cache/mask_3/mask_81_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØ1
-À Fá=§‰÷¿\‘,JÑGAúÄ¡‹ýhjÀÌ>ÚÙ#Ê3X™À’ø:çk÷Ô¹\ûFM JÝhuÇú½3¸¨>ƒT­ZõŸÔ{ÇãPSgøP'¹ÉkÔV¸jÕªU«¶_Û¯ý¯U«V­º•»=P Îo†O:WÒ‹ÞäÝjü[ŸWxÒÎmò Ù5 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_85_3.dat b/library/phpqrcode/cache/mask_3/mask_85_3.dat
deleted file mode 100644
index 02c4f8cdb..000000000
--- a/library/phpqrcode/cache/mask_3/mask_85_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_3/mask_89_3.dat b/library/phpqrcode/cache/mask_3/mask_89_3.dat
deleted file mode 100644
index 2b4cb59fc..000000000
--- a/library/phpqrcode/cache/mask_3/mask_89_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÙ1€ …ὧ)÷¿œ *.@àUÁü ƒÓÓ|±¶‰î¹’âeŵ6Û¢‚‹äw5*÷ô) oôi¨K®‘¢4nk>Áè1}d>œÐ@ 4ÐXYC¾oœò Û¡1<º©A§ h F„ûÆt
-ß 4Ð@µ5´—ž1ÁWrÒï>7û«û†Gíµ}}¤¡x7|ÇN‘gÆîÚN \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_93_3.dat b/library/phpqrcode/cache/mask_3/mask_93_3.dat
deleted file mode 100644
index b4cc8a971..000000000
--- a/library/phpqrcode/cache/mask_3/mask_93_3.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÙA
-€0 DÑ}N“ÞÿrnJɪQš~éB¨Œú06 û£n®aá¸<<¦×‡‡ôÿe6×M—R™ýCùÅPÈ ¥LÀ±ôÌ“išØ9MŽ 2È ƒLkÅ®½dD»v*ó"a·ÔX†jBdAdªdèôZöÀTßdAd®qYø0exö÷ö¼Ÿqe§çÊN¯«Œú©ª&WV“ææQvcô \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_3/mask_97_3.dat b/library/phpqrcode/cache/mask_3/mask_97_3.dat
deleted file mode 100644
index 7adc9ebaa..000000000
--- a/library/phpqrcode/cache/mask_3/mask_97_3.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_101_4.dat b/library/phpqrcode/cache/mask_4/mask_101_4.dat
deleted file mode 100644
index 1c97dc048..000000000
--- a/library/phpqrcode/cache/mask_4/mask_101_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíšA€ Füÿs^1 b¤‹ÆáИª]ÃØÖ4šm+Æ8Ð+˜Ve¬Ä^H­R]–\Íc‡®ŠÛ
-·oõWN#¸îXáéØá+lð ž­HE³cp \à—^.Î9qñW9ø¼ïç"ò…:¸À.ŸæBßÿó÷ùBƒ \àæ0Ìa˜ÃPǨcp \ÞÍÅïO•’‹N¥qjpGÖô}“ô}¥Ê$.äË…Š§ÐŠ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_105_4.dat b/library/phpqrcode/cache/mask_4/mask_105_4.dat
deleted file mode 100644
index 0211cdb3a..000000000
--- a/library/phpqrcode/cache/mask_4/mask_105_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíšK
-€0 D÷=Mrÿ˹‘øA …ÎTáe‘EFóL2 #ŽÈÌé¹¢…_I!“‹•ßú­£ç딤Ѻ““Î-Õ«km¿Oñá]sS T6*ùª'8Á NŸâ$Þî'N¥Z‹Êí^œ<JvNôsNp‚œà„ßÃïá÷è'æœà'8Á ¿‡ßÃï1÷˜{p‚œàô?N¿µnœ¼JóüBÏ…ùü^Øüž[i'úiHI-¶¢m+W \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_109_4.dat b/library/phpqrcode/cache/mask_4/mask_109_4.dat
deleted file mode 100644
index 2cc0c815d..000000000
--- a/library/phpqrcode/cache/mask_4/mask_109_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_113_4.dat b/library/phpqrcode/cache/mask_4/mask_113_4.dat
deleted file mode 100644
index 99bd73f69..000000000
--- a/library/phpqrcode/cache/mask_4/mask_113_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÚA
-à н§Ñû_®‹Jb)t&„çBBÒøK_•‰¤Ö³µÖ6õC+5/q_Üghfâ×Çú©Éíÿž¿CbH+¾p›º¿¯§;WK?ÞüGútô ‰ñ¿*GŽ9r|‚c`ÕÑc¾¶Î9FKHÌq4­«9räÈ‘#Ç…ŽêUÏ×ÍGë*GŽ9räÈÑ>¹}rûäÖUë*GŽ9r|ºcÌ[Á£cNâ¬Þ[_=Æ׫5¼^ÍJ¼£ù¸ 1*ôq›v \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_117_4.dat b/library/phpqrcode/cache/mask_4/mask_117_4.dat
deleted file mode 100644
index 386725918..000000000
--- a/library/phpqrcode/cache/mask_4/mask_117_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÚË
-à н_£ÿÿs]4Ø¥©Dg¤nò¸à‰2Jj}´ÖÚÒ¾·RsSWG¶R¿ŒÉ§†žÚ)5¬»ÞE†áämá#ܯ•ã¾Õðk_"ÃzŸ”š3Â\¹råÊ•+×r ­L»k|ê/{„¹;Ž'×àÔ<WóÕ:Ì•+W®\¹rÝÜU=lŸ3ÏÕ|µsåÊ•+W®\û;÷wîo¾Z‡¹råÊ•+×ý\ƒþ¼sÍKýÃûzešS×”z83u#Wóubjdð àÝ$Ÿ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_121_4.dat b/library/phpqrcode/cache/mask_4/mask_121_4.dat
deleted file mode 100644
index 84957eb7b..000000000
--- a/library/phpqrcode/cache/mask_4/mask_121_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_125_4.dat b/library/phpqrcode/cache/mask_4/mask_125_4.dat
deleted file mode 100644
index b98dc813a..000000000
--- a/library/phpqrcode/cache/mask_4/mask_125_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_129_4.dat b/library/phpqrcode/cache/mask_4/mask_129_4.dat
deleted file mode 100644
index 8ecfa2508..000000000
--- a/library/phpqrcode/cache/mask_4/mask_129_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_133_4.dat b/library/phpqrcode/cache/mask_4/mask_133_4.dat
deleted file mode 100644
index 69f83acbd..000000000
--- a/library/phpqrcode/cache/mask_4/mask_133_4.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíÛA
-à н§Ñû_®›Òš…BþÂËB¨2à‹f™ó{­µ
-ÇíÆcf¥¨°gÈKqøã=óÙ)Ú®£‹»çWÀŠlK2Þ¿ÊË8:oþCRd¬\pÁ\pñ@­ï+$EÅÿÏùQ.ìÎç\pÁ\è#úˆ>¢Ø/œ#\pÁ\pÁ…>¢è#ö ç\pÁ\p¡è#úˆ>âqŽpÁ\pÁÅ.º¾$¿ºÈIqü𽤠dô‘ÑG’R»°_4¦è ò€˜ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_137_4.dat b/library/phpqrcode/cache/mask_4/mask_137_4.dat
deleted file mode 100644
index 0c09c487c..000000000
--- a/library/phpqrcode/cache/mask_4/mask_137_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_141_4.dat b/library/phpqrcode/cache/mask_4/mask_141_4.dat
deleted file mode 100644
index 62b03f243..000000000
--- a/library/phpqrcode/cache/mask_4/mask_141_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_145_4.dat b/library/phpqrcode/cache/mask_4/mask_145_4.dat
deleted file mode 100644
index 33fb21124..000000000
--- a/library/phpqrcode/cache/mask_4/mask_145_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_149_4.dat b/library/phpqrcode/cache/mask_4/mask_149_4.dat
deleted file mode 100644
index de99310f3..000000000
--- a/library/phpqrcode/cache/mask_4/mask_149_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜÁ
-!н_£ÿÿsmœÉ Œ„Á+XÓ‹9=ó.ªõ=Zkça”š]ÕÞ’> K¯jò´oé ¾ªý|¯SªŠSWKùZmË׌ºƒÃjé¾€Ã\’Š¹çЪ2ï W\qÅW\qÅÕñ®"~·ß× ­jvÚtòê®òªŠv¥_Ùíƒ\qÅW\qÅW\q%g3Èä ú•}+®¸âŠ+®¸âŠ+®ä r9ƒœA¿²rÅW\qÅW\qÅ•œAÎ g3èWöAû W\qÅW\qÅW—«œÆ]åVµ~v{êDŸ™3ÔÈœ!¹ªƒ\éWÇô«¬Â^<ír/ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_153_4.dat b/library/phpqrcode/cache/mask_4/mask_153_4.dat
deleted file mode 100644
index e827dd16f..000000000
--- a/library/phpqrcode/cache/mask_4/mask_153_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØ1ƒ0ÀÞ¯ñýÿsi,')p!äµ4.ÜГ;±½¿WUmßçj=¿²„²ê°Ê.NO¾þ>úûšçTµÚ[÷¾S7vÜÛœg¶q•„?æ÷ÞÒ
-š{pe¹o“3Î8ãŒ3Î8ãŒ3Î8{ØYXzðá,°²Û_úO¤ÓYfeñÎô3sÓÜäŒ3Î8ãŒ3Î8ãŒ3¹†\C®!×ÐÏÌMs“3Î8ãŒ3Î8ãŒ3Îär ¹†\C?379ãŒ3Î8ãŒ3Î8ãŒ3¹†\C®!×07ÍMÎ8ãŒ3Î8ãŒ3ÎÎq¶þÚé,»²ËmMrs›k¤Wvœ3ýìÀ~–WÜ €WB \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_157_4.dat b/library/phpqrcode/cache/mask_4/mask_157_4.dat
deleted file mode 100644
index ad5fcf69d..000000000
--- a/library/phpqrcode/cache/mask_4/mask_157_4.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÜ1Â0ÀÞ¯ñýÿs4˜"FPà=iRX¢XÉÛ0ç멪€u 4ftÑÖl}Òm¾øßýžéâž­»Sû|²ËÑŽëSÌ û¶ŽÄPÏ5<]öÉrÇwÜqÇwÜq÷£»È^QáéN6ÃûáéZ¸sß™³æ,wÜqÇwÜqÇ>«Ïê³ú¬ûÎœ5g¹ãŽ;î¸ãŽ;îôY}VŸÕgÝwæ,wÜqÇwÜqÇwú¬>«Ïê³æ¬9ËwÜqÇwÜq§Ïê³ú¬>ë¾3gÍYî¸ãŽ;î¸ãî[ww?P3Üå§ÛþòÑƘÝggtŸí®¡;÷]ûû.3àw4A¯ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_161_4.dat b/library/phpqrcode/cache/mask_4/mask_161_4.dat
deleted file mode 100644
index 7604c4540..000000000
--- a/library/phpqrcode/cache/mask_4/mask_161_4.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÚA‚@ Ðýœfæþ—s!AL€Ä_|,ˆ™4òl)iï¯mŒ²ßl­×‰0'¼÷ +E¸û…£ ÷–]N\ºêüxÅ#·‡§2Ÿç/ü¼_¬{—7gÛò9ì¼Ù·ÔÀÖ}óï2‡rÈ!‡•?}-³#<Zü×χëj"¬áP>T—Õe9äC9äC9üÀ¡~ùöý²÷6Sʇ겺Ì!‡rÈ!‡rÈ!‡æôËÞÛ˜sÕe9äC9äC94ç _öÞÆœƒ|¨.«ËrÈ!‡rÈ!‡šsÐ/›s0ç ªËê2‡rÈ!‡rÈá8ì§}D‚ÃÎìçw£ùýrï—«DXΡ|xÃ|˜ä!à2ð \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_165_4.dat b/library/phpqrcode/cache/mask_4/mask_165_4.dat
deleted file mode 100644
index d83d63165..000000000
--- a/library/phpqrcode/cache/mask_4/mask_165_4.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíÚA
-1 Ð}OÓÞÿr.ª"Ñ*?úfÑÅÌP‚óLHIï—kŒµÎ«õZQ¦…8
-Gy÷êqkñ-ž¿ÿÎn5£Œ½Ú+?ÌÒñùù¾Ýâ¿ø|ÖŽ÷Òþà·kKn®E¢¬ñŹä’K.¹ä’K.?ï2º£˜.ó£|¼EJ§{å2<Ê:.åKu\ç’K.¹ä’K.¹ä’Ë—úñ¿êÇmu)_ªãê8—\rÉ%—\rÉ%—\šÛÐ;'2·!_ªãê8—\rÉ%—\rÉ%—\šÛÐ;'2·!_ªã\rÉ%—\rÉ%—\rinC?nnÃ9‘¹ ùRç’K.¹ä’K.¹äò;.û²óHqY'ÊݽéþN·F?ÞKôã•¢,êR¾üé|™è My*3 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_169_4.dat b/library/phpqrcode/cache/mask_4/mask_169_4.dat
deleted file mode 100644
index 4aac95c1e..000000000
--- a/library/phpqrcode/cache/mask_4/mask_169_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_173_4.dat b/library/phpqrcode/cache/mask_4/mask_173_4.dat
deleted file mode 100644
index 9df4d865d..000000000
--- a/library/phpqrcode/cache/mask_4/mask_173_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØK
-1À}N“ÜÿrnÂa øÃ~ZY!ÎÐJÑt^ï×5Æ(¸/«õÌjk–z[pjµ§_Ø?~v:|jwúÕ–_mû£îXzòoõ–Ó6?nËÞŠ<ö°j³$pË-·ÜrË-·_p[z¾=ÞVíæ–Qí¦3ÝæTéV¿ÕoÍ ÜrË-·ÜrË-·ÜrË-·r09˜L¦ßšÌ ÜrË-·ÜrË-·ÜrË-·r09˜L¦ßšÌ ÜrË-·ÜrË-·ÜrË-·r09˜L¦ßšÌ ÜrË-·ÜrË-·ÜrË-·r09˜L¦ßšÌ ÜrË-·ÜrË-·Ür›æv­æ6¯Ú÷ßý?•,eå`=*K¬6Ú­~û§ý6£à ´*× \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_177_4.dat b/library/phpqrcode/cache/mask_4/mask_177_4.dat
deleted file mode 100644
index 6437d2511..000000000
--- a/library/phpqrcode/cache/mask_4/mask_177_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíØA
-!À»¯Ñÿ.1B„éMyð”![ c÷þ\cŒ²ûZ­çV\¹Üq“Š7ßâÝEó‡Oýzg~ÅkëøË¿jž;pg”Šu²Í[*7Š×½¥ºöÀŠóTpÌ1ÇsÌ1ÇsÌñqÇ!¯ÿ‹ã Šw/òr¯ÿå8«âXÇú±~l®à˜cŽ9æ˜cŽ9æ˜cŽ9–»ÉÝänr7¹›~l®0WpÌ1ÇsÌ1ÇsÌ1ÇËÝänr7¹›~l®0WpÌ1ÇsÌ1ÇsÌ1ÇËÝänr7¹›~¬›+8æ˜cŽ9æ˜cŽ9æ˜cŽånr7¹›ÜM+8æ˜cŽ9æ˜cŽ9æ˜ãtÇû§oEÇ™ŸÉN¥Xy¹[ËÝR+¾‰cýø¯ûqNÑ\,4J \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_21_4.dat b/library/phpqrcode/cache/mask_4/mask_21_4.dat
deleted file mode 100644
index e006b67e4..000000000
--- a/library/phpqrcode/cache/mask_4/mask_21_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_25_4.dat b/library/phpqrcode/cache/mask_4/mask_25_4.dat
deleted file mode 100644
index 0c7c44bbb..000000000
--- a/library/phpqrcode/cache/mask_4/mask_25_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_29_4.dat b/library/phpqrcode/cache/mask_4/mask_29_4.dat
deleted file mode 100644
index c28dc20e8..000000000
--- a/library/phpqrcode/cache/mask_4/mask_29_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_33_4.dat b/library/phpqrcode/cache/mask_4/mask_33_4.dat
deleted file mode 100644
index 5834b6fb5..000000000
--- a/library/phpqrcode/cache/mask_4/mask_33_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_37_4.dat b/library/phpqrcode/cache/mask_4/mask_37_4.dat
deleted file mode 100644
index 4bf2e26ed..000000000
--- a/library/phpqrcode/cache/mask_4/mask_37_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_41_4.dat b/library/phpqrcode/cache/mask_4/mask_41_4.dat
deleted file mode 100644
index b75b7d052..000000000
--- a/library/phpqrcode/cache/mask_4/mask_41_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_45_4.dat b/library/phpqrcode/cache/mask_4/mask_45_4.dat
deleted file mode 100644
index 1b921f300..000000000
--- a/library/phpqrcode/cache/mask_4/mask_45_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_49_4.dat b/library/phpqrcode/cache/mask_4/mask_49_4.dat
deleted file mode 100644
index e417f9476..000000000
--- a/library/phpqrcode/cache/mask_4/mask_49_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_53_4.dat b/library/phpqrcode/cache/mask_4/mask_53_4.dat
deleted file mode 100644
index 7e88826dd..000000000
--- a/library/phpqrcode/cache/mask_4/mask_53_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_57_4.dat b/library/phpqrcode/cache/mask_4/mask_57_4.dat
deleted file mode 100644
index 84669c7d6..000000000
--- a/library/phpqrcode/cache/mask_4/mask_57_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_61_4.dat b/library/phpqrcode/cache/mask_4/mask_61_4.dat
deleted file mode 100644
index d127c3be2..000000000
--- a/library/phpqrcode/cache/mask_4/mask_61_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_65_4.dat b/library/phpqrcode/cache/mask_4/mask_65_4.dat
deleted file mode 100644
index c24343d94..000000000
--- a/library/phpqrcode/cache/mask_4/mask_65_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí—K€ D÷œ¦½ÿåtX£Ð™.4ÓE1^ÂãÓhv†»OæÍx„ùéW“ð0 ñ°JHÅ»‡½­ðz[ÿ^܈[vâȾ
-yy‡ZÀkß=`„™êv·cíǃî…<ȃ<üÚCî/)zàÜ‘×¯× ¡ÈÃÇÎC²Œš"" \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_69_4.dat b/library/phpqrcode/cache/mask_4/mask_69_4.dat
deleted file mode 100644
index a73b1144d..000000000
--- a/library/phpqrcode/cache/mask_4/mask_69_4.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí—;À0CwN÷¿\—ˆ~¤¨;C$3°$<)/m­ºß¥žeÎ¥T±‘2  —:¥]ÿ^VV¡%ƲzAïnÈpv…s"y‘y‘y)zöá¤dÄu6½àª½Gú¾È‹¼ÈËi^šÂ/<ÊtÓrÂrrÚ)9ͤlõrìó‚.¶‡Ö \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_73_4.dat b/library/phpqrcode/cache/mask_4/mask_73_4.dat
deleted file mode 100644
index 72f89227e..000000000
--- a/library/phpqrcode/cache/mask_4/mask_73_4.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚí˜A
-€0 ïyMòÿÏé¡´)1Ý-‚lE3š=Ô}¬ˆ(Öô°9ŸTÇdÎÒò–E/eO ZOžîãÛÅ»KíY;ÛúpS5Ð+‘ÄëNžäIžŠžà|
-"©eìvúö+DÝ“æNs'Oò¤WŽkîäIž¾ð„ì†Ìž¸¤FúòrÜi9Î&óô«ÿ ‡]?ÃóA \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_77_4.dat b/library/phpqrcode/cache/mask_4/mask_77_4.dat
deleted file mode 100644
index 993c48608..000000000
--- a/library/phpqrcode/cache/mask_4/mask_77_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí˜Ñ
-€0Eßý÷ÿ?×ËjFe8¯0êú uØN©0Õ­µ‰lB´†6‡:«h·<½õ–§¥CÜe\,¹ †ìÔÜ—~ø & rd0 »Sz£7z+ô–êoº»ÓÜþëäÝŽVâuÊ:¥7z£·Wo¿š ËÎSÖ)ë”Þèmoù3ë O‹y;:*h¥Þ>û¿a€ïCe \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_81_4.dat b/library/phpqrcode/cache/mask_4/mask_81_4.dat
deleted file mode 100644
index dd6521613..000000000
--- a/library/phpqrcode/cache/mask_4/mask_81_4.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚí˜A
-€0 ïyMòÿÏy‘XE m7"89ä 2’Ѹ ûQ1ݳÌëˆ+¸x‰x;ÅÓt35DIY÷¶1x\:už³ýº•}î¦e/ ê§Æ#ñø¢Th<
-‰ùùU¤BzÔË<²×ì5ñˆG<’×ä5{G<⢿®5Äñ<饫>¯]ž×UÄr¿xuÐ ” Üû \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_85_4.dat b/library/phpqrcode/cache/mask_4/mask_85_4.dat
deleted file mode 100644
index c8d5123e2..000000000
--- a/library/phpqrcode/cache/mask_4/mask_85_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_4/mask_89_4.dat b/library/phpqrcode/cache/mask_4/mask_89_4.dat
deleted file mode 100644
index 5b9bd7ec3..000000000
--- a/library/phpqrcode/cache/mask_4/mask_89_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÙ1
-€0 …ὧIî9«Æ% Í Š‡ VÞðÚ€f×r÷ÅÖ0}òzì=¼#9ùìéûÎäÒ•:§þû~›sØó¹¨1BÕg&ë4pÆgœq.p.»í°&g·ÿÂT05Érgú™sgœqÆçrgæ¯Ïuô3çÎ8ãŒóëkÿ.Egm²»b*ÐÍ&›7ÔÉÍÎ?íçúð ¯:Þü \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_93_4.dat b/library/phpqrcode/cache/mask_4/mask_93_4.dat
deleted file mode 100644
index be7f5e525..000000000
--- a/library/phpqrcode/cache/mask_4/mask_93_4.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÙK
-À „ὧIî¹n$}P‚ÅŒBù]¸‘Né§È@ÍÎáî%sŒfkÒ«¢}CzòoA}aʽ2½|¤îé~ØÀªD&žl=¥êÀÜç¦Yœ®•ÁwÜqÇ}³» q\ÜEéY³˜já®K_âÎyçžÁwÜqÇwz$=’É=ƒ;î¸ãŽû_Ý‹ÿ€>ÜõéŸ+ÑpÓÓöH“öÈéÜ9ï¢DÞi \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_4/mask_97_4.dat b/library/phpqrcode/cache/mask_4/mask_97_4.dat
deleted file mode 100644
index 5d848caad..000000000
--- a/library/phpqrcode/cache/mask_4/mask_97_4.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_101_5.dat b/library/phpqrcode/cache/mask_5/mask_101_5.dat
deleted file mode 100644
index c21869e83..000000000
--- a/library/phpqrcode/cache/mask_5/mask_101_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíšÑ
-€ Eßýšíÿ®+£%=ÜM¢3Cbvó¸ Ѭ›«ÍNkû¹´gqõkqq{©%ôO¿ÒòüoçžùÈû,i–¨ÅKÖeœeçÁ3[›|‰îiž¶÷‡¾õ˜ã©V¥¥h]` Æ` Æ0¦Ê•±¸zË´TÔ0Gu×ì/qŒ8F®„1ƒ±3¶:WÊò>õ˜´#ŽÇÈ•0c0öQÆ8»øE=F#Ž‘+a ÆþÄXÖÍž+cV©%9W>ßíQž]Tk©¹“Y-gL¸÷óîq¬DËè‰‹Ï \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_105_5.dat b/library/phpqrcode/cache/mask_5/mask_105_5.dat
deleted file mode 100644
index bc8798c64..000000000
--- a/library/phpqrcode/cache/mask_5/mask_105_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_109_5.dat b/library/phpqrcode/cache/mask_5/mask_109_5.dat
deleted file mode 100644
index 25a394402..000000000
--- a/library/phpqrcode/cache/mask_5/mask_109_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_113_5.dat b/library/phpqrcode/cache/mask_5/mask_113_5.dat
deleted file mode 100644
index 25f42b8b2..000000000
--- a/library/phpqrcode/cache/mask_5/mask_113_5.dat
+++ /dev/null
@@ -1,9 +0,0 @@
-xÚí›Á
-ƒ0DïùšÝÿÿ¹^Ò6¥I63[è[EDqÌc˜ÅÑ+•ÏjÃy¤ì81•û\c
-·‹7Úc«åªÆõû?uý}DK™4¦}Çï,¥kkûgì--ž3[÷½´U…Æ‚y„UX…UXýSV ³:Ï«ëûÕî,÷è|æýкSúô¾Š¯â«°
-«°
-«°
-«VÉ«¢¼*ÑXÒ[á«ø*¾
-«°
-«°
-«°zŠUò*ßN÷Vø*¾J€UX…UX…ÕSóèXiýÊjTi4f¹õZkU^­Ôè_‡ìê­~ŠU‘çxþ }Õ®ñZ/r \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_117_5.dat b/library/phpqrcode/cache/mask_5/mask_117_5.dat
deleted file mode 100644
index f236940de..000000000
--- a/library/phpqrcode/cache/mask_5/mask_117_5.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí›Á„ Dï|Mçÿn/*{ÁM¦ÕÍ+„˜pÐI_&mˆ-äŽèѾžCæõä­òÏ3­2u­?o-kgB7wc=¯™‘ªU%yíoÝùRæhÓ¯șDo:Ö¶y¤R£JkQ^a†a†a†ÿáqOgÚiJ¯ýç ;úœáqOgÚ)ÓŠãÃø0 Ã0 Ã0 Ãð[¦v×ö>ç=>ŒãÃ0 Ã0 Ã0 ÃOf˜z˜3Ž»=>ŒãÃ0 Ã0 Ã0ü.†3ÿ÷ïZ£$¯×·8\õp”ÔÃùw4½Çá:ã¨ÖZÀp¤:q¹ÖÄù§X 7 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_121_5.dat b/library/phpqrcode/cache/mask_5/mask_121_5.dat
deleted file mode 100644
index 9bb5c4158..000000000
--- a/library/phpqrcode/cache/mask_5/mask_121_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_125_5.dat b/library/phpqrcode/cache/mask_5/mask_125_5.dat
deleted file mode 100644
index 2161c50a4..000000000
--- a/library/phpqrcode/cache/mask_5/mask_125_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí›A
-Ä E÷ž&¹ÿåfc;S´¶$?‹‹”ŠØQ4ëáYaßhûyJ}9ºg=×Ú=©liŸ´.;nh_ÍÔýïwzýží.÷qôƒCW”¶üÏȧyº× uëÞë’PkÏ;ÌÃ<ÌÃ<ÌÃ<ÌÃ|*óqëùÎü,‡ m“kWæqçNÊl—%ª ŸÇçñy˜‡y˜‡y˜‡y˜‡ù×Ì×^Ïæ2ä°…sX|ŸÇçaæaæaæaæ3Ï™9lH‹Ïãóø<ÌÃ<ÌÃ<ÌÃ<Ì¿›÷웿Ì[í¢õüên`ì™TíÚûqŠ¶8ó¡^—vôy©öŽ« \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_129_5.dat b/library/phpqrcode/cache/mask_5/mask_129_5.dat
deleted file mode 100644
index f0c1d6502..000000000
--- a/library/phpqrcode/cache/mask_5/mask_129_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_133_5.dat b/library/phpqrcode/cache/mask_5/mask_133_5.dat
deleted file mode 100644
index 46be8b094..000000000
--- a/library/phpqrcode/cache/mask_5/mask_133_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜA
-Ã0 DѽOcÝÿr]4%1mCTåÉƯ„Ð÷xÎœ[DvÌ=Æá{Fúú–E¤Ïµˆäq½?Ý¿Ü9ûkeÑ­ù}±'2^ý•cœçš4G”žÛ:¶3=J£K-šôF0‚Œ`#ÿÍHÒþˆwð'#ß<{Ú~—Z4é :BG舻F0‚Œ`„áGø~„ŽÐ:‚Œ`#Á?Âð#t„ŽÐw-Œ`#Á?Âð#ü¡#t#ÁF0r·…ïÙ}Qõš}e¤üÝòR‹Ú;ø<ùçCžéV‹}Ñ—‘ìó¢ËÙY-Hž \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_137_5.dat b/library/phpqrcode/cache/mask_5/mask_137_5.dat
deleted file mode 100644
index 064e7f2f3..000000000
--- a/library/phpqrcode/cache/mask_5/mask_137_5.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-x򒆄
-ƒ0 …áû>Móþ/·ÇkÅ1mÂøªÈXº³ü=‰–ö¾µÈhýÕÚîså×áH"ãk ÇM„:îúê–3qÒOü¿W}ÿ9’Ô–¬I”‰“ýHž1ÙG;þ- Ï©sìîÚ¶ù?Ò[%M
-Å v°ƒìü#;£zg^ÝÔ3Õd}Î6‹“Å9ÛÆΨޙ×@7õ”Ò„ïð¾#gÃv°ƒì`;׳£Þ©\ï$ÔÅåŸð¾ÃwälØÁv°ƒì`çvÔ;ÞÖ}7Êwøß‘³a;ØÁv°ƒkA­µ”ïð¾#gÃv°ƒì`ç=N2wúxg§WÓ¤@n?Ûëc}½SQ“:ûZd?+¨ÏÎú9vÆÎzß)£ÉæÝáP \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_141_5.dat b/library/phpqrcode/cache/mask_5/mask_141_5.dat
deleted file mode 100644
index 60c1a8e81..000000000
--- a/library/phpqrcode/cache/mask_5/mask_141_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_145_5.dat b/library/phpqrcode/cache/mask_5/mask_145_5.dat
deleted file mode 100644
index 9303c07f9..000000000
--- a/library/phpqrcode/cache/mask_5/mask_145_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_149_5.dat b/library/phpqrcode/cache/mask_5/mask_149_5.dat
deleted file mode 100644
index 4256cefd0..000000000
--- a/library/phpqrcode/cache/mask_5/mask_149_5.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíÜ[
-Â0Ðÿ®&³ÿÍùcµ }-s+'Š‡œ^;AÇxŽêã=¦ÅëQ­Ï_gUÝﵪæãx­ÆÞGûõTí½ëȺV¹ïúœU̪UE®«å¬æõ_IÇ´;ÿŽÇT1×öÅóôÌ Š©µ
-]W 2È ƒ 2Èà ¶|oß5ØuóꆬuI¶:(WK­U躒ƒrPÊAdAdA; vÞ®íÑoíÝ_zNOæÏ{2rPÊA9È ƒ 2È ƒ 2Èà9íÑß}^O挞Œ”ƒrÐwQdAdAýn½žŒßMÈA9(dAdA¯^Wó„² ŽäZ…Ý.+•³GŸ^«ÌÿëKêÉÜÑ`×µ}Ë`_FÖê÷k \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_153_5.dat b/library/phpqrcode/cache/mask_5/mask_153_5.dat
deleted file mode 100644
index deea09d77..000000000
--- a/library/phpqrcode/cache/mask_5/mask_153_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-x򒆄
-‚@Ðw¿fæÿ®—¬¨Ð¬`ïÖÙD"I¶ÁÃe­ê<:aÔu,7ï«öOfÖÛ³šuÀëPÍ6Žî~ñís¾zÕÁÏûãsÞÏ,jÄÕ¬c¯³ëÌVöZvߨmé° ¸ì—s^uÜH®YðuÆ&›l²É&›l²É&›_±9¤¯±ÚÜê ;]³Ä^Ðjs«O;ì˜Ü”›rSn²É&›l²É&›l²9½Íy×›ƒÖèzAÖ ’›rSnÊM6Ùd“M6Ùd“M6§µéÞƒ»÷@/è±$7å¦Ü”›l²É&›l²É&›lzŽzAžC‘›rSnÊM6Ùd“M6Ùd“ÍOlîþ7á°šUìu¶NªãÖ›»F¯Úcú·óÌêÍP³P›—œSÔ,l;HûO§ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_157_5.dat b/library/phpqrcode/cache/mask_5/mask_157_5.dat
deleted file mode 100644
index 176e2a69f..000000000
--- a/library/phpqrcode/cache/mask_5/mask_157_5.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíØ1ƒ0DÑÞ§ñÞÿriœ˜( r*¥· „\™Õ~>Cï£*¥ú¬v¹ïsýØ]Åœ_{W!Çzﶬ/ÏÝÞõ÷ÝÅÕ)½Ë™»¹Áöä¤vÿ ›ÏV‘®×6ÜV‘•Þ»ð¹Ã,f1‹YÌb³˜Ê Ìn^o¯¿>¿þí\Oï]øÜñ,Ïò,Ïb³˜Å,f1‹YyVž•gåYžåYžåYÌb³˜Å,f1+Ïʳò¬<˳<˳¾1‹YÌb³˜Å¬<+Ïʳò,Ïò,Ïb³˜Å,f1‹YyVž•gåYžåYžåYÌb³˜Å,fÿïÝukys77—Èì}ïvçŠÉæmbž=¥wÙsw³)ï»tWÖ†Ó:® \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_161_5.dat b/library/phpqrcode/cache/mask_5/mask_161_5.dat
deleted file mode 100644
index 70d5fb008..000000000
--- a/library/phpqrcode/cache/mask_5/mask_161_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜI
-ƒ@н§éºÿå²ÑDp@ èo|m ˜¢ßrHk㨤Ñ~c˜½o³^ÝÃJz­×°‚–#5l»¿î¦S_92Ûî ©“[¯}¾ÜÃÈZÊŸ‡ó=œìTê2ìÿÆ€×P‘™2[cVì衆ÌC–Yf™å'-‡ÛìXÎ9>üv§Ë~u»“½sK5ì`Êe¹,—å2Ë,³Ì2Ë,³Ì2Ëç-ë—ßÐ//¯/o_q¾}KÇç¾ä²\–Ër™e–Yf™e–Yf™å³–õËoè—Ý+òÿ¹/¹,—å²\f™e–Yf™e–YfÙ³úe÷Šx¶B.Ëe¹Ì2Ë,³Ì2Ë,³Ì²g+ôËîñl…\–ËrÙ16Ë,³Ì2Ë,³üì<œv.×r륆Á½Þ¼‚™ýrO5ÌÿŸöÔs_ýZÎÉ”uËI¹_ÃìÞ*Ÿ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_165_5.dat b/library/phpqrcode/cache/mask_5/mask_165_5.dat
deleted file mode 100644
index 94af813d9..000000000
--- a/library/phpqrcode/cache/mask_5/mask_165_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_169_5.dat b/library/phpqrcode/cache/mask_5/mask_169_5.dat
deleted file mode 100644
index 921a77076..000000000
--- a/library/phpqrcode/cache/mask_5/mask_169_5.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÛÑj„0Ð÷|Íäÿ®/¶niµ¢K¹£'ŠÈÊ.rö:ÁT-m&¶ZÛx9¯yüq§3rÿµOgàv¼OO_zׯ§u`]ÿüÈ·¾ßitëا™ãt½Ùñil¦oc¿‚ö1ã3j9Ž%_g|ëÔ§Æ)ûì³Ï>ûì³Ï>ûÏ°¿=×teÌ&õþ_ã4¤Þÿ²¿=×t¥UŸÊ}¹/÷å>ûì³Ï>ûì³Ï>ûO´¯Þr½5/u“¹>¹/÷å¾ÜgŸ}öÙgŸ}öÙgÿ®öÕûO®÷½Ûsv®OîË}¹/÷ÙgŸ}öÙgŸ}öÙ·–G½o-w{¬å‘ûr_î{ægŸ}öÙgŸ}öÙg_½¯Þ÷nµ<r_îË}Ïüì³Ï>ûì³Ïþ=ì×n]˜4Nk§Öβ_Êðÿ­÷«M½¿ž¦×ûû´Ï8ím?ñÿ´SF…·<· \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_173_5.dat b/library/phpqrcode/cache/mask_5/mask_173_5.dat
deleted file mode 100644
index f9a674136..000000000
--- a/library/phpqrcode/cache/mask_5/mask_173_5.dat
+++ /dev/null
@@ -1,4 +0,0 @@
-xÚíÛ[
-ƒ0Ðÿ¬&³ÿÍõG1Ðø¢gäD)[°Cz¼±÷eDÖѷц÷=R¾NÏ6²îóÚFÒíJm ÞÏJq÷Pœ}ëxÞö séîÑ_¾õ}¶éGÚF©y;žíú¿‹
-[;ý]™öé¯eÃk[®ÅQbT«m±yË&0 L`ÂÌ„Y?á¨ÇðرÝÚæ¼wØ›· ïfý„£ÃcÇÊÕVNä9Á½˜À&0 L`˜×„Zý„¤}0=F=F9ANä÷L`˜À&0 L`Bz¬Y²fIñß=F9ANä&0 L`˜À&0 ž‹´fIÑs‘r‚œ 'È L`˜À&0 L`<iÍ’£ç"å9AN˜À&0 L`˜ðVÖ­aB¯XÛ"ý„±²ù×,U­m…>Øö±
-=Æw˜óZ¶gBÎœPª¶” !8 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_177_5.dat b/library/phpqrcode/cache/mask_5/mask_177_5.dat
deleted file mode 100644
index b07c636b6..000000000
--- a/library/phpqrcode/cache/mask_5/mask_177_5.dat
+++ /dev/null
@@ -1,11 +0,0 @@
-xÚíÝÑŠÂ0Ð÷~ÍÌÿÿܾحˆšŠ ÎuO,"% ñô:$Xui=¹ÕѶ«×ÕƒŸïô¸g÷Ƹ?Îq­.úÕSo~æz׉¹õWï:ó™·=Žh1cÜqóøèñþ]ì”Ƕ¼îiÇÖ!÷¼ßçírß8Æó˜¬`+XÁ
-V°‚ õŠµÓê»j›Ïjž;—8ÆóX®+ä
-¹ÂoV°‚¬`+XÁ
-V°â?[1µ^ñh-Ö³5Z;§¶©¶ùrmS®+ä
-¹ÂoV°‚¬`+XÁ
-V°â;¬°ËZ,µÍYµM¹B®+ä
-V°‚¬`+XÁ
-V°‚ö™Z‹eŸ©Ú¦}¦r…\!WȬ`+XÁ
-V°‚¬`+ì3µKmÓ>S¹B®+ä
-V°‚¬`+XÁ
-V°¢cþò㊛Ç{g;¦^Qq5¡ZU»ÆÕÝ®ûŸQÛLã0+*&YDqÈñéô*6 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_21_5.dat b/library/phpqrcode/cache/mask_5/mask_21_5.dat
deleted file mode 100644
index 04f97ea69..000000000
--- a/library/phpqrcode/cache/mask_5/mask_21_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_25_5.dat b/library/phpqrcode/cache/mask_5/mask_25_5.dat
deleted file mode 100644
index c20b59b1f..000000000
--- a/library/phpqrcode/cache/mask_5/mask_25_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚ‘a
-@!ƒÿï4îþ— ޳ʢš™ ?,"ÅÔÌ"j½¦¡Ž?n<¶OÕÛäa ¬w, l}rG‹M;ϦÏ9[ží ¤¢_ú±x|ŸÊÖ=´l4lK¨ýv½ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_29_5.dat b/library/phpqrcode/cache/mask_5/mask_29_5.dat
deleted file mode 100644
index 217ec1b8a..000000000
--- a/library/phpqrcode/cache/mask_5/mask_29_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚÕ’]
-À ƒß=M¿û_n0W .«Ž=-ÁŸ4¡mÄy×B€ìÓ+² ‰·ÜR×á“çôˆ‹†$¼­Æƒ.=s/,+îB÷7žó³q®zÄ~§q>=GéÙêŽZùyÎ:—ÜDRŸ« \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_33_5.dat b/library/phpqrcode/cache/mask_5/mask_33_5.dat
deleted file mode 100644
index 726d7fd75..000000000
--- a/library/phpqrcode/cache/mask_5/mask_33_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_37_5.dat b/library/phpqrcode/cache/mask_5/mask_37_5.dat
deleted file mode 100644
index 6d32ca6fa..000000000
--- a/library/phpqrcode/cache/mask_5/mask_37_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_41_5.dat b/library/phpqrcode/cache/mask_5/mask_41_5.dat
deleted file mode 100644
index e07c6172a..000000000
--- a/library/phpqrcode/cache/mask_5/mask_41_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíTA
-À »÷5Íÿ?7˜«ÈXMtxÒ´x©¤ …¸?@‚˜›7@ò¾~"éN$õ‡SÖÉ°Ä{ø+C³¨ÛA'Êör\PŒpè<Þ÷-¼ ͺ:S3s¹Ô‰ùÛ»ËÞ©Îz#žóqw™ó› >þ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_45_5.dat b/library/phpqrcode/cache/mask_5/mask_45_5.dat
deleted file mode 100644
index 5168a17f9..000000000
--- a/library/phpqrcode/cache/mask_5/mask_45_5.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíUA€ »ï5íÿ?ç„U:N&Z"†”:;4P1=ƒbNvSGÆM1¶ÜË›½n<ëv`q³¤{ìîßMg§ã¶4þå=Gó-T¹‹º?›“Ôß='kíÈu™Û­ž“õ>‘ëß'¯®çþÜ(éκŽö Jô{EßѵsÊ]È ,§sqð \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_49_5.dat b/library/phpqrcode/cache/mask_5/mask_49_5.dat
deleted file mode 100644
index 9f3f3cd7d..000000000
--- a/library/phpqrcode/cache/mask_5/mask_49_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_53_5.dat b/library/phpqrcode/cache/mask_5/mask_53_5.dat
deleted file mode 100644
index 449807bae..000000000
--- a/library/phpqrcode/cache/mask_5/mask_53_5.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíVAÀ »óúÿÏíâ"Ë zYf5ƘJC ª ˜A;ÄÜáé¾Âlû\˜,†ëdòR.¯ \(åe_Ýú ³æôеaNi5†ª\żŽ†ÿÐÐë‡aLPòò(¯ÐàÒ;×ý±2שÃãå¯jÈN6O u…+é¯Ñl{y•«6odúá^ ãÚàçC[‡%® „ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_57_5.dat b/library/phpqrcode/cache/mask_5/mask_57_5.dat
deleted file mode 100644
index c7dd81f39..000000000
--- a/library/phpqrcode/cache/mask_5/mask_57_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíVA
-À »÷5Éÿ?·‹NÝlªƒZ‹HAbB‰Z0aÓ ìÎMÆÒÃd`1Ýz”'"<Õ1™æ9nvͨ.ãô )bÝ»µ~¤;˜<KÛÒö‡Ú¾x_×Ö÷ÛEu 3ã·][ÿ/[T«oËJÛϵU羉4Ïçévå HûPnÖäë|»òÛ˜Im!wîL1/8,gã \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_61_5.dat b/library/phpqrcode/cache/mask_5/mask_61_5.dat
deleted file mode 100644
index dee749fbf..000000000
--- a/library/phpqrcode/cache/mask_5/mask_61_5.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí—Q€ Cÿwšíþ—óC ÁÕ–ÏB ‰¾´.Ý›•wÙpí¯¯»žKv€g;ÌÞû|3:ÅÆ}÷Ø“c0þÉ´ j­­Öj7(©lÑwe^™WæJæɾ…ÐSïÌwßÐt_e‹¾«Î«·Tæ•ùŠMœÏßOçsæô9ubs=Õ?þ‰ò~~Š­ù>Ÿ9ú¾ÕZ#tõBÁ~ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_65_5.dat b/library/phpqrcode/cache/mask_5/mask_65_5.dat
deleted file mode 100644
index ecd938068..000000000
--- a/library/phpqrcode/cache/mask_5/mask_65_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_69_5.dat b/library/phpqrcode/cache/mask_5/mask_69_5.dat
deleted file mode 100644
index ead4edc1f..000000000
--- a/library/phpqrcode/cache/mask_5/mask_69_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_73_5.dat b/library/phpqrcode/cache/mask_5/mask_73_5.dat
deleted file mode 100644
index 00001176d..000000000
--- a/library/phpqrcode/cache/mask_5/mask_73_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_77_5.dat b/library/phpqrcode/cache/mask_5/mask_77_5.dat
deleted file mode 100644
index 1652cdc2d..000000000
--- a/library/phpqrcode/cache/mask_5/mask_77_5.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí˜Q€ Cÿwšõþ—ó#&C`T£±ÃÃ6¼”ƹ—B¶ü(«Þ©9Ü Ù'Ö†äÑÖìƒÚ¢ÓÀÀzk·å"hõÜêÝv.` »øâücXöB5[ñ(ÅÖF>71Ó/3ò4ÎØΪz÷^'ÑÔÝ[˜Fyglg•®M>•OÅTLÅ4Ï”{÷&3ëWy*ŸÊ§b*¦ï`ºÚ<3õ;´‘îÞVo0÷/s—6nÿ‘§Ï0Íya½ß[û”ªmácE \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_81_5.dat b/library/phpqrcode/cache/mask_5/mask_81_5.dat
deleted file mode 100644
index 71215e952..000000000
--- a/library/phpqrcode/cache/mask_5/mask_81_5.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚí˜Á
-À Cï~Móÿ?·Ãtz°U4½ŒÔ"£ }tšÕÀMX2|.îÉ‹¸Ë™F\œžð¸õÑÂ~mõ‘4 ÷±¿ØXu
-Ù”, ÍÌw—:— E†Æ„>ŠµXÿõ̯=_Ö]g>±>óÂÆzæמ‡/ë)5ךk±k±kùµüZs­¸X‹µX¿¬Y{Ü®Ñè}ô¶áç~mt¿æîšìÃÏý:S#™µÑ&;U#)ñÚä \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_85_5.dat b/library/phpqrcode/cache/mask_5/mask_85_5.dat
deleted file mode 100644
index 09cf0e281..000000000
--- a/library/phpqrcode/cache/mask_5/mask_85_5.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_5/mask_89_5.dat b/library/phpqrcode/cache/mask_5/mask_89_5.dat
deleted file mode 100644
index 5fff53069..000000000
--- a/library/phpqrcode/cache/mask_5/mask_89_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-x򒪇
-à „ÿû4Éû¿Üþ¸5eÆÙå®npQ¤´ Gú™cÖÍf‡µðl^^‡;;bŽ5;`¬k¶©¶U͹߮¾ßj`ÍNósÜùùO=Ú\[a6‡žÁ°¶~ÞnLÍD?‹ ±!6ÄÆ°ñuüÈF%w¿*Ȭ²ÌkÎù¦f¢Ÿ77”SĆØbƒÃ†êXodw_ùØ—mµ¨â†â†ØbClüÈNÛ™ ck&äîY¯­VoÜ¡™×·B×¢»Ø¨œAl6Æ šæJjÜx \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_93_5.dat b/library/phpqrcode/cache/mask_5/mask_93_5.dat
deleted file mode 100644
index ec4240bd3..000000000
--- a/library/phpqrcode/cache/mask_5/mask_93_5.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí™K
-Ã0 D÷>æþ—ë&©»ð¯µ& áÉÆ fP^”ÁŠ8BY5ÊÇs(imœ®¼ÙÒ®¤±®=f—µ÷3¨/wÛ§§‡E»¬y¯§ŸïYŽQ¦wf‘á[}¯å¨ ²„[»9ï0303ÏefÇÏÌ™Ùñ3'3=<òÆK{níæ¼Sg¨3ü›`f`f`æ¿Ìdø™ÞÞè®oiü£¦ÎPgø7Á ÌÀ Ì܇GµjkÞG]í}?V/æë kÒ×Þ÷ÀWi72–Js™vÃ|*"f^ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_5/mask_97_5.dat b/library/phpqrcode/cache/mask_5/mask_97_5.dat
deleted file mode 100644
index 509d1174f..000000000
--- a/library/phpqrcode/cache/mask_5/mask_97_5.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíšA„ E÷œ¦½ÿåf!3bf5í¯Æ¼Bˆ‘ùé£|#f=<3l6<›§Ž_+xjÿ©ÁÛ) “ÙÝ©Ãy°“ïÿ¯ ‰J ¹yXiïÜ»ª5¤IzsÙžîcëuÄeQ¡¡ °K°K°K·d)â—>,ͼwx®DƒÖ·.,;ãÂsÔ%êg,Á,Á,=€¥ëýRÐóὓ¼7u‰ºÄK°K°ôT–D÷†<(n lY’þŸÞhÐùVÛ¹s÷Þ•ôy¸Œ¥´ýP±§Eñ<¸öq \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_101_6.dat b/library/phpqrcode/cache/mask_6/mask_101_6.dat
deleted file mode 100644
index 13f97a0fd..000000000
--- a/library/phpqrcode/cache/mask_6/mask_101_6.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíšk
-„0 „ÿç4Éý/·Ën_.‰Ê2#ˆS‹H”6±_“PâÞZ ›Ïf˳_¡îé,ï7ØžÛà+·%×åWÇÂîd„–âÏnå}–“_&«Ok;Œ×úP¾Çfµ>³t‚yY×¾]Öns °;s·æs‚Ú,º!Lk¬ÁÔ…cbLŒ‰12cÔX9Ëó1 ÔÀZç#XÐò±En#;ÏsvŒT~L~L±RŒ‰11vsÆ.‹•”³‹1‚ò±¿ò1ù1ù1ÅJ1&ÆÄØÓÙŃó1ù1ù1ÅJ1&ƞī²gËØ KLƪjl¬¬k{g¼Úž5óKò1/ëÇù¯~,aŒ»ù‰õc««ö$“Þ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_105_6.dat b/library/phpqrcode/cache/mask_6/mask_105_6.dat
deleted file mode 100644
index a58fec749..000000000
--- a/library/phpqrcode/cache/mask_6/mask_105_6.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚíšQ
-ƒ@ Dÿsšäþ—k¡®ÙBÒZ»#o)Sd}ÌGÜ·Šå¹lú쯯Ö^‹žúú³®)G]Sñ4ÝS×ëšÞÞñ¸ó?½#BºZö:Õã+{þñÅ×s§ÁH¨KþNóiIŽÂ!¦«mþòe1
-RWe9!ÿ¡`ö`ï¶ìUy¯Ë€§uë:檞»ëÖåšU=w×-ûo•ÔºwB·}cMÞKßÃ÷è¹°{°{ä=òyßÃ÷è¹°{°{ä=òyßÃ÷è¹°{°wSö¤caoìi'Ýföºé½õyO=C•yO=C•y¯›ß[Ÿ÷Äó{SÞ»œ=—;Ÿ|v4}ϯ2‰¨¸0§ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_109_6.dat b/library/phpqrcode/cache/mask_6/mask_109_6.dat
deleted file mode 100644
index be7b4749e..000000000
--- a/library/phpqrcode/cache/mask_6/mask_109_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíšAÂ0 ï~ýÿÏDBHÓC½HãV2‡Æ0Ùn¥uoªò£lø쯯²¯Ë»=Û¢s9[ˆŽõl'«ºÝ?™íë7ÏíR"¯ &“§Û2™ÕßÏ:7QqX_•n» §û]£$ÓÕš–EIYôÁ*¦³ÆL”üq0 “0 “0ù{LJýäз(s\ɳwœô¾‰¦X÷-Ó7^öÑIt„I˜„I˜„Iü$~?‰N¢“0 “0 “0‰ŸÄOâ'ÑIt’g7LÂ$Lþ-“›„¡€Iuzrfr M÷“^ê'}“éÍ÷“•ùÉ(ÉO~RŸé]1Y²ãLÄžuÒå9ó¡QÍÓ• \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_113_6.dat b/library/phpqrcode/cache/mask_6/mask_113_6.dat
deleted file mode 100644
index 397f52741..000000000
--- a/library/phpqrcode/cache/mask_6/mask_113_6.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚí›Ñ Eßû5ôÿN£°¤Õ‰ëõÁÃÈbF6¨on´¶¯,m›>·gSÅ9ìñÞRWã½ðˆcŒÇ•9Œ&»%‰1ùöÏ_÷Þcx= GR^°šw-z?Ãêdzõvî=î,¹ê°}Ô¥?ǹژ³:Å9œmÓ=—ó=@U”¶ä²‰„UX…UXýVe ³ûÕÜÅ~Õby4WúÕéiæ¿:Ýe=ó‰ó¡<SZmAWÑUtVaVaVaõZVñ«5~µüÿÕþ´åVè*ºŠ®Â*¬Â*¬Â*¬^Å*~•wk¹ºŠ®¢«°
-«°
-«°ZϪb¥õ‘ÕayT¬f«ëüj¾ÖºÊ¯jÖZÏ~µÉß´t_@Un¥Ù°ªѾ€YWsV‹ê ¶[|H \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_117_6.dat b/library/phpqrcode/cache/mask_6/mask_117_6.dat
deleted file mode 100644
index 99108bef7..000000000
--- a/library/phpqrcode/cache/mask_6/mask_117_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí›a Fÿ÷4íý/§‰#EœŒv3¾nŸŒŽ·/m ª›Y´©›T¿õÑwm<õ~?ölûjÁGÛ×îøšC×qSÿ/¯¾6f£tÝŸ¥oï¿Ó”f^ûl'ó7`ÁŸZø²ÌCÊ Â?×úŸ¥heª®²i¤¥šXq4Ó[Ù€´Ô‰…a†a†aþ†û9]P‹ÌÅñ³YžÍìéM<6îçaË[äð¸gÞ:Œ£Ã0 Ã0 Ã0 ×g˜x8:ÎYã¨z;7§C‡Ñat†a†a†aøº ³Æ±,§C‡Ñat†a†a†‹á´íþO çU6Ô «8¢âáÌ=ðgî÷xx\ǵƑXÇQåt§2¬©JœZ‹ä:¬gˆÓ C+\ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_121_6.dat b/library/phpqrcode/cache/mask_6/mask_121_6.dat
deleted file mode 100644
index f3c329945..000000000
--- a/library/phpqrcode/cache/mask_6/mask_121_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_125_6.dat b/library/phpqrcode/cache/mask_6/mask_125_6.dat
deleted file mode 100644
index ff64d44fc..000000000
--- a/library/phpqrcode/cache/mask_6/mask_125_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí›A„0E÷œ¦Üÿr3™±¶&H °yØb+öùSlhí0Ͳ6L¦ëöwEŸÍÑ¿žœfÇ®I‡»÷¤vî;»íó&vwž,oýÅ]ué¶dþ]|½k棘øÞ9ÔŠCú“¦}îs“1»9Jw9Ë¡½Zb¢=ðŠèå€PK&æaæaæaæa>€ù’õüɼ—Æú$<>¯OÑôvòÊù'ÅûËåCçÑytæaæaæaæa~›ùòõ|êžÔÙ'9li‹Î£óè<ÌÃ<ÌÃ<ÌÃ<ÌÃüóìI‘æç°è<:ÎÃ<ÌÃ<ÌÃ<ÌÃüóÙ•WæDz¸‚y¿:.z=¿ª ŒÝ“ʯ œsØVšÃ¶E=ll›_k0_#võ°³Î¯˜mÝ÷›j \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_129_6.dat b/library/phpqrcode/cache/mask_6/mask_129_6.dat
deleted file mode 100644
index b4695c3ff..000000000
--- a/library/phpqrcode/cache/mask_6/mask_129_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_133_6.dat b/library/phpqrcode/cache/mask_6/mask_133_6.dat
deleted file mode 100644
index 40911dc57..000000000
--- a/library/phpqrcode/cache/mask_6/mask_133_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_137_6.dat b/library/phpqrcode/cache/mask_6/mask_137_6.dat
deleted file mode 100644
index 43ccb68c6..000000000
--- a/library/phpqrcode/cache/mask_6/mask_137_6.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíœÑƒ Eßû5ðÿ?·e…¥ÕÍÍ^²4fHåp[1-e)UQÊV¬û]žU™W÷Nî5ù§o“*8|›Œ÷Û©ìW¹£š6žbk?Ý÷ÿ{‹f¬´„ì|>¾sÖª‡ìür6öö¸“6‡«ú°6ÉrÒŸ¶=ûüv¸Ú²þWy±Ú ¢¶Š-¸Ê'
-ìÀìÀΟ²ãÅ;q tQE>U–϶öf‘¯•ê³­ìxñN]TcÑ(sâ®7tÝAwðÙ`v`v`v`çkvˆwfŽwtû;]«ùÞ ;躃Ï;°;°;°;çÙ!Þ™;Þaoôå]ºƒî ;øl°;°;°;°Ã· | Ê· èºƒîà³ÁìÀìÀìŒì(3}Œìl.­š?«…"Þ‰r}äÇ;Ú\}¼S¦Ù-AžœüwÚ<9;úEVœ'§×ˆôó¡ð \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_141_6.dat b/library/phpqrcode/cache/mask_6/mask_141_6.dat
deleted file mode 100644
index 0340409a4..000000000
--- a/library/phpqrcode/cache/mask_6/mask_141_6.dat
+++ /dev/null
@@ -1,10 +0,0 @@
-xÚíœa Fÿ÷4íý/§‰c Òêâ¤]òزÈ…¥ª[²¬¤=Éð[E럓ÖÜósî¹m,éšÛfÒn/ß|kj\ä¿òj§?g½ÝþòÈ[qþû(NO˜Zc5ûŠ©SGGP[oM×Vá’Ö¸´éf¼¥÷vÖL<<eÓ
-+‘Äša*XG6¬ÄÀ)˜‚)˜‚)˜‚©cLåúS½6±tj¨Mö]o÷ÀßW8¿D~ñO·šD£`•?µ×†N¡Sèk?˜‚)˜‚)˜‚)˜*ÉþÔUü)ïÌ×? þSIÁ=
-t
-B§XûÁLÁLÁLÁT5¦ð§®âOqæîQ Sè:ÅÚ¦`
-¦`
-¦`
-¦ø†Š3_¾¡E§Ð)t
-¦`
-¦`
-¦`êâL¥‡¿yb*?2ÐÈT5i½?U!ÆK÷§*ÄxéþT7iý™o¸IÃEI¦´„R•ˆEÖuJ+MÆ7 ºÄ' \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_145_6.dat b/library/phpqrcode/cache/mask_6/mask_145_6.dat
deleted file mode 100644
index 6c1421513..000000000
--- a/library/phpqrcode/cache/mask_6/mask_145_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_149_6.dat b/library/phpqrcode/cache/mask_6/mask_149_6.dat
deleted file mode 100644
index 69e988350..000000000
--- a/library/phpqrcode/cache/mask_6/mask_149_6.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíœÑ
-ƒ0 Eßó5ÍÿÿÜÆfµƒ47ÍÝ8UD“6Ëñ’ÓÚ2¼z´mØpßž¦ªk8«»¥öŒ}åÅGì«ÉôÓ•ÅëN}?}æÄW“:ƒÈÚguàWA´ËŒ7 ~Û;­)ƒÇâãØ{̪ǿ+ÖWPþºOÛ¢¤öÍþrµEƒ\j˜wG)yË–àw©À‚A„A„A„AM%òÁá™æ2ùà`µµ2«’d”³l–¯àÚ|p}¦eqP’¢ƒè :ˆ    Âàe j想=úlïþT5™©É ƒè :ˆ    Âà© ²Gÿë{ôÔdö×dÐAtDaaaaaï&Ø£§&Ãwè :ˆ    Ö1¨ÒÙð•Á-MRb0éÖW˜f½ ëöèuzŽ5™&Y“iIѺšŒNÑ€A­—»PÑQS«ÎþL}4 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_153_6.dat b/library/phpqrcode/cache/mask_6/mask_153_6.dat
deleted file mode 100644
index 3ab6130ed..000000000
--- a/library/phpqrcode/cache/mask_6/mask_153_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_157_6.dat b/library/phpqrcode/cache/mask_6/mask_157_6.dat
deleted file mode 100644
index b45c0ceec..000000000
--- a/library/phpqrcode/cache/mask_6/mask_157_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÝA‚@DÑ}Ÿfæþ—ÓDÐN%¾Ón Ã§ü,ÚÖ–ÕSVÛVí>·ÇW³Ã³»—CöaïzÈ6îÝÉUü¼~Ò»·{`ný•Š¸õÙÉÝ»dvVýy~µrÒ·Z¯"çq·Ûk{>g$ÅáXK¶õÈU}m\b÷ja¤GÞx˜Å,f1‹YÌbö¿™òÙ]½z¬‘­Ìž½ƒš^¯.ë5Ó[?Ö嬜•³r³˜Å,f1‹YÌòY>Ëgù¬œ•³rVÎb³˜Å,f1‹Y>Ëgù,Ÿ•³rVÎúmŒYÌb³˜Å,fù,Ÿå³|VÎÊY9‹YÌb³˜Å,fù,Ÿå³|VÎÊY9+g1‹YÌb³˜ýŠÙ‹ ½̦M7>2{9zºÏ¶hŸm3Éçûlò|ã9ßxóÙ¼™ä#f#Ÿx•6 ÿ˜³-îvë%…N' \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_161_6.dat b/library/phpqrcode/cache/mask_6/mask_161_6.dat
deleted file mode 100644
index ecec68b1a..000000000
--- a/library/phpqrcode/cache/mask_6/mask_161_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_165_6.dat b/library/phpqrcode/cache/mask_6/mask_165_6.dat
deleted file mode 100644
index d641dfa3d..000000000
--- a/library/phpqrcode/cache/mask_6/mask_165_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_169_6.dat b/library/phpqrcode/cache/mask_6/mask_169_6.dat
deleted file mode 100644
index ae689723d..000000000
--- a/library/phpqrcode/cache/mask_6/mask_169_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÝáJÃ0Ðÿ÷i’÷9[ÛJÓɘók{²1Äb˜!gßnhHkS뉭-­V?·¯KI¯»ïôó×ÏÝ1íý1Ýû§Æ£ÝŽ/½¨·Á˜ŽæÉ`þê/zû)*º=°Ÿ3Úì¿g6õöý^k6ÖÓ5CæÇéêYË<ÉK¨ÍkMùÚã[õy@ÓGµ&_=~¢²Ï>ûì³Ï>ûì³ûãµ¾ +õþõ'{«„Õ§_õVËŠÚx­-âJýËø<ӛܗûr_î³Ï>ûì³Ï>ûì³iûêý;×ûù÷öœr­OîË}¹/÷ÙgŸ}öÙgŸ}öÙ¿¦}õþ½ë}÷ö¼x­OîË}¹/÷ÙgŸ}öÙgŸ}öÙ·—G½o/{{ìå‘ûr_îûÎÏ>ûì³Ï>ûì³o/zß^÷öØË#÷å¾Ü÷Ÿ}öÙgŸ}öÙ¿†ý£d²ì'ŸÊ³µ|ÔQR½ßNSï·Ã3¹’êý³œËÓãÏåYÖú²ÏäÚ³ÿ‰ZÉ'Çms¿EŸÇ·j›5ø \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_173_6.dat b/library/phpqrcode/cache/mask_6/mask_173_6.dat
deleted file mode 100644
index 95fa97c7b..000000000
--- a/library/phpqrcode/cache/mask_6/mask_173_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÝaŠÂ0Ðÿ9MrÿËí¢­M SÜ*:a_-²5hh_¿)©uÛZÖ­[éþ®÷¦lïÓoûÛ’sŸmKúšíø›NÇ{òÿãHÌ?x­Ï`l‡#fï9>’ÚŸ[¯õeé·Ð„ÏŽß“­¡ ï?þ^ìóöm÷ó®­ð*û/KËm¿—ãhËy%ÞËv-nKl¥í»Âè–í¤kK¸L`˜À&&Ìê g5†¯µ•(·gºwxôY¢ÜžîÞáa¬žpVcøZ[‰Æ#O=¡ëSNä9Á½˜À&0 L`˜Ç„¥ê ¹ç't­jŒjŒ]QNä9Á½˜À&0 L`˜Ás–ÌYRcü@QNä9 L`˜À&0 L`‚ç"ÍYRcô\¤œ 'È r˜À&0 L`˜ÀÏEš³¤Æè¹H9ANä&0 L`˜À&ü²¯ 7špÜ6¯`Â|õ²¬õ„hm¸œs–ò¯ ××ëR5Ƭ™³Æ˜½È‰ k\ÌX/²Ï ‘ )÷g9È \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_177_6.dat b/library/phpqrcode/cache/mask_6/mask_177_6.dat
deleted file mode 100644
index e9f0476f0..000000000
--- a/library/phpqrcode/cache/mask_6/mask_177_6.dat
+++ /dev/null
@@ -1,14 +0,0 @@
-xÚíÝÑn„ …á{žÞÿåÚ¤*4vÛ´u¦û¡1‰£²ø{<L­Gi‘Kí¥ ¿ëGUÌíäŠß÷Ç]çmÜ/ó6žÜÛjÿõ?mZ¤müzÌy/úξgÍjÏÿ\ÌÕ“—¢<`Å_¶ã>f{Š¿Ð¿³_ñù,¶,K9o 4ŽÇµôù7lËñÞniJiggiår<¤-MGÆ
-¬À
-¬À
-¬À
-¬xuVÄ÷+zÌÒRøCÌr9‡+Gqç6ÞQWžñb"ø×Qe×ï"ùWLº‚® +è
-ß XXXXX/ÁŠ|~Åj,ÖnŒÖmu¼MÞæÚÛ¤+è
-º‚®ð ‚XXXXXñ¯Ya,–±X¼Í;¼Mº‚® +è
-ß XXXXX晋ež)oÓ<Sº‚® +è
-¬À
-¬À
-¬À
-¬À
-¬À
-¬0ÏÔX,Þ¦y¦t]AWÐXXXXX;V¤Hù‰92mŽ¬Øe3éWdÉQØÇbeÉQؽÍ]>Ó˜Þf’|¦ƒ·™–5²H“û¸ëŠší¥÷7/D \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_21_6.dat b/library/phpqrcode/cache/mask_6/mask_21_6.dat
deleted file mode 100644
index 6bd505b4a..000000000
--- a/library/phpqrcode/cache/mask_6/mask_21_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚQÀ Cÿ9M{ÿËi]èÒýX‰1¤À Å-½ C!»É³Dìû7 W ìÙœ§Ø&rDñ)~Î]<MÎ ·3(>{ƒïA ¡«ÿíŽa²¼Sý \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_25_6.dat b/library/phpqrcode/cache/mask_6/mask_25_6.dat
deleted file mode 100644
index d45083aab..000000000
--- a/library/phpqrcode/cache/mask_6/mask_25_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚQAÀ »÷5öÿŸÛ2)êe+Ä(XmÊZtÆ*(õÚ¹«;ÃçtJã<峂†_Ú¤‡3°oŠÜ½Ú´"Ì¢a²zh}Ñ&qv€µSGÊÖ™,ó-÷‡™J›Í4}³™¦oS[âü}w \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_29_6.dat b/library/phpqrcode/cache/mask_6/mask_29_6.dat
deleted file mode 100644
index 0408e2240..000000000
--- a/library/phpqrcode/cache/mask_6/mask_29_6.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚÕRA
-À0 ºûšäÿŸÛXcÔõ²ÓL(4E”ÔˆB
-8CÖܾ޳nÃM©+lǪÃÕ†Ožé1]&•Ú¥4UëD-6-$:6ÊdZá?yæÛlôÝf£?í˜ åŽ8?žß²±<Ûlôž}ž¹g›göí * \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_33_6.dat b/library/phpqrcode/cache/mask_6/mask_33_6.dat
deleted file mode 100644
index 8de4ba5c9..000000000
--- a/library/phpqrcode/cache/mask_6/mask_33_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_37_6.dat b/library/phpqrcode/cache/mask_6/mask_37_6.dat
deleted file mode 100644
index b37ff0ab6..000000000
--- a/library/phpqrcode/cache/mask_6/mask_37_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí”AÀ &ýÿçÚT `½ôèj<PÜ0¡¢jB#ÿ&š´âù,Yo´îê…fU¯Ùjó*UõÕú•ÑYÀ–¬[ƒ•oY5 Œ~Š5 T7bnb, …]Æ˘ûñü‚³¦‘ƒ-‹¹Ñ÷ñÃÌqF:s¢tæDcèØhÙ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_41_6.dat b/library/phpqrcode/cache/mask_6/mask_41_6.dat
deleted file mode 100644
index c1535f785..000000000
--- a/library/phpqrcode/cache/mask_6/mask_41_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_45_6.dat b/library/phpqrcode/cache/mask_6/mask_45_6.dat
deleted file mode 100644
index a7da7ee02..000000000
--- a/library/phpqrcode/cache/mask_6/mask_45_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_49_6.dat b/library/phpqrcode/cache/mask_6/mask_49_6.dat
deleted file mode 100644
index 64ded7093..000000000
--- a/library/phpqrcode/cache/mask_6/mask_49_6.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíVQÅ ûïiàþ—{K&·ÂêÇûYX¤³ØÙ0ï̦!=ÛýŠ­tÇån&ÅðfpŒWL
-±`¤/¯<Ï“KVrU¢\1öbGpáê@ÄìÓ‘&fNëŒ/+ƽqÙà ¢`ðàòAWÿçêSƒÉßRGpõþ_5|Æ|zÀ×xν:¸¢ªåJ©‚+WE©m4hÛ4Ú3tÜ­ƒ.×Á©A­g`\ÉÒù¬÷ʤþ*ÙÅFÈô \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_53_6.dat b/library/phpqrcode/cache/mask_6/mask_53_6.dat
deleted file mode 100644
index 9139e3259..000000000
--- a/library/phpqrcode/cache/mask_6/mask_53_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_57_6.dat b/library/phpqrcode/cache/mask_6/mask_57_6.dat
deleted file mode 100644
index 61e7e2428..000000000
--- a/library/phpqrcode/cache/mask_6/mask_57_6.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíWÑà |çkàÿ®K¦ÂÜQ¹-Ë^@cª"Wr^U‡YÅÔM³>_Ý`åÃî8¦Ž¹€GÁ1“œ`–B”Ý`;»ù+ØÂì}åÄÌØ&s£ÒçŒ]<§J…QF=mb3 UŒF'ÚØ6¶Æ–á„E âü€¹5õJa÷wZØÖù60¢¬
-ß[¹·ë¶9¡±ý9¶”ì{Á–SšÛ\Ýž8Õ`k&­Áœos}{â[Rß¾ý[¥+—þwðºÕO‹èd^jW \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_61_6.dat b/library/phpqrcode/cache/mask_6/mask_61_6.dat
deleted file mode 100644
index f2d3f10df..000000000
--- a/library/phpqrcode/cache/mask_6/mask_61_6.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí—KÀ D÷s¸ÿåÚ¤µE~Ý‚ihÌÄ'™
-ÑŽÍÀòNÏ'oVWßéà£jspèÚCzÓþìÑο©¥ÃaÌÏg!«…#WD%~Ü˃Y?±JÛfŒÚåR€E¸¢ŽÁKoæͼ™Ç˜§ü|Ƀˎ*ÌOÿP7 Šž‡åÛn¾ë¼½¥™7ósã†`ž½ïÌÍÖÀõsúåçdôD¾Ÿÿ¹Ÿsé~>ý<ßiÌK'Žl'¸×9¥ûÐ%.ÆîÄ7 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_65_6.dat b/library/phpqrcode/cache/mask_6/mask_65_6.dat
deleted file mode 100644
index 550fc8fe7..000000000
--- a/library/phpqrcode/cache/mask_6/mask_65_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíWQÅ ûïiäþ—{KžNLk?˜e$ŒQ´ikÝìÆÚ4¸çö1{˜á‰ð×`+®!úÚ®ºM Á? áû “’°È1b°8†ž £·¦.ŒÞ^ƒwÌÞò¹ìèsn²ÁFjè5¹…EaQX|‹=wä¼@°2v<òÅ‹Åž»‰–|4w»êê\ÔUXÇBQz+óÊT±ÈTǹÖcøBÓzž/4­ç8Õë,‘»5Ý`¡¥¨»ý¹È± üOV$ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_69_6.dat b/library/phpqrcode/cache/mask_6/mask_69_6.dat
deleted file mode 100644
index a3e4fa0f2..000000000
--- a/library/phpqrcode/cache/mask_6/mask_69_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí˜KÄ @÷œî¹™dThÃðí¦ hLSSEžq eY@<ã¯+Þ*£|ß窮 %‹®‹>¥¡¨®‹¹zÃ*7ë–Åe´¤öÆ6ãQ¶½©S`šÞ.²¯>»sE Ë'¨%@[‘Ž6°@PË0Ãh £aôFÕxtpl²2§Âóý ‡Q-g1N†feo^ßøÑüë†Ñ0F¯dT>N_ÕOö’‘wË‹G3ìùªu†åœÁ»gˆå {‘3<Ê[žÔº b?Â'6ï^ºŠ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_73_6.dat b/library/phpqrcode/cache/mask_6/mask_73_6.dat
deleted file mode 100644
index ab71b70ae..000000000
--- a/library/phpqrcode/cache/mask_6/mask_73_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_77_6.dat b/library/phpqrcode/cache/mask_6/mask_77_6.dat
deleted file mode 100644
index ad5a660e3..000000000
--- a/library/phpqrcode/cache/mask_6/mask_77_6.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí˜Ñà EßùøÿŸÛ²i‹ÙÅVäaË.š¦±F©§pST›YÖô4q÷ú~´z…«=Ÿä:öÍ’ û6îøÍüôm8‘¾:#0PضiDy:2Å '§ùZ­s±Š&}Ïôç滜\r‘0\¥Åš•˜Xw¬Â;iP¬äàÈ”Lœ)ÒS¬±£eÔ•Ü{hˆDu9÷L‘žb½•©JÞÒS÷ŒSÆ)™’)™ÞgZš{÷þeÜøŸé)ã”qJ¦dúLw+ƒ#Ó3-V0ÅÕ·lîjƒ¹™ýÚ ×S-ÕS ê½9=ݯ÷¦5ÁPPïõq1Mõ?ågÓ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_81_6.dat b/library/phpqrcode/cache/mask_6/mask_81_6.dat
deleted file mode 100644
index 28a6d0752..000000000
--- a/library/phpqrcode/cache/mask_6/mask_81_6.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-xÚí™Q„0Dÿ9 Üÿr»ÉÚR³LÕvök‡šÆ`´¤¯0 º;æi6ÜûçÑÚ\|ñí_¿êccÔ1«¢h¾ýuŒ§½ioÞó#2ƒ¬}x*.YûtÃ&¸­±
-Ö°¶ÀÖq/K‚;3ÌväeÐ̢Ȋ҂AÛH±ë?`]é5ÒðK¿¡Êü´†w¿!}{Zû߲žW
-Œ”yâ·¾Àž^§_y­¼k±k±–^K¯•×ªáb-ÖbÝYSÚ¸'ÖœNóÈuÃ×õšÕ#M½fõHS¯Q?|]¯IýðA¯ÆÚi™Mû÷‘yíì¤yuWà \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_6/mask_85_6.dat b/library/phpqrcode/cache/mask_6/mask_85_6.dat
deleted file mode 100644
index d5403e49a..000000000
--- a/library/phpqrcode/cache/mask_6/mask_85_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_89_6.dat b/library/phpqrcode/cache/mask_6/mask_89_6.dat
deleted file mode 100644
index eeeb5d197..000000000
--- a/library/phpqrcode/cache/mask_6/mask_89_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_93_6.dat b/library/phpqrcode/cache/mask_6/mask_93_6.dat
deleted file mode 100644
index 6ff38db68..000000000
--- a/library/phpqrcode/cache/mask_6/mask_93_6.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_6/mask_97_6.dat b/library/phpqrcode/cache/mask_6/mask_97_6.dat
deleted file mode 100644
index 3a2072efd..000000000
--- a/library/phpqrcode/cache/mask_6/mask_97_6.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíšaƒ0…ÿs¸ÿå¶dÅêÒÒFx[²=4ÆH–ùŠoŠj3«4í&§s}¹*ŽÃž— ÷a V¸cˆ&3žêÜ5‰arWç^aþ«÷LClÉÒzžqì,ÝÌÑ1†xî µ‰SQ»N»ô»]·¢/GiuÄ`&æ ¢–wƒ%‚,‘%²D–ÈYú"K½t¸¤+åHE'|R2Ï(v1¨öv–¢ÿqiëëŸqd‰,‘%²D–~€¥è%Ø»Jjï}íͺĺÄgY"Kd‰,ý+Kñö
-–]W–të+sF/)ü]¥.zNòÚÝ'`°>®½1='#–`+bƒ¥l]Z±”¶­¬ýð \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_101_7.dat b/library/phpqrcode/cache/mask_7/mask_101_7.dat
deleted file mode 100644
index 1f6bc5129..000000000
--- a/library/phpqrcode/cache/mask_7/mask_101_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíšQà Cÿ}rÿËm“Ê`éÚÊfªjòTé#±¥ÔäÞ54'tûí…îf¼aÈЇo°–$±c<ÙËêãÝÓÕñHÝ Ìh8„lÕÛûþÁëo=½Ä„ŽÅ§àHvº©;‹z€¤!ƒ|/‹FŽÐ3cfÌŒ‰S×Ê…±±ゼêñ 8©KŽ)4©9 ”Qç1ç1×J3fÆÌØÅ›S+ÅwÖcçõ˜ó˜ó˜k¥3cf캌ùîâ¾zÌyÌy̵Ҍ™±1¦{¨²bL÷¶çÍX™S+óï.to{>ô˜îmO§ÇJ2²û3cÄ<6ãXn0F´ ) \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_105_7.dat b/library/phpqrcode/cache/mask_7/mask_105_7.dat
deleted file mode 100644
index 6b0cacfe9..000000000
--- a/library/phpqrcode/cache/mask_7/mask_105_7.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíšA
-Ä0E÷žFï¹a MÒ™˜N¾Px)¸pQ£¼è_è~ž|ñ(b¿F’„šç$.Ÿa¿o“ÝòWÿGNÚPæUÇ–·‰Mþ%{‡ëoôHQôÙUñl¯Ö´¿¬L^>+Éçm­“#{°{eo&Y2sÛoM•)gncO9s›ßZŠ³´3wÇo™„Ú+Âè{ô=f.ìÁìÁz½‡Þ£ïÑ÷˜¹°{°{è=ôz¾GßcæÂìÁÞsÙkCQÏžpÓíÊ^¶€&Ñ{^£÷¼Nï­Ê·UïÕìï ìe5°ç}¯æE‰wGûßn+o \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_109_7.dat b/library/phpqrcode/cache/mask_7/mask_109_7.dat
deleted file mode 100644
index 9875cbe8c..000000000
--- a/library/phpqrcode/cache/mask_7/mask_109_7.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíšA
-…0 D÷9MrÿË}µÚ*˜ _x-d˜ú:Î"îÇŠ¢Ý-kÅ"Šâ¨š¢œ•dŒ{›¿Õ»ü¤·ñã¯ó³ÞÊגɬ|<b2+ßU á¶ý­ÊîÚ%Z}‰.Úq%Gi²¾¶h QA9˜„I˜„I˜üG&‹Éž·<ßø oÍ:Ï,ubÞ2}ãmÞ„_ D'ÑI˜„I˜„I˜ÄOâ'ñ“è$: “0 “0 “øIü$~D'ùwÃ$LÂ䇙TÌOvLVOO^˜<ÓøÉòùÉÞOúbµÄOºÎOºÖOºÊ›™Þt\3™¬“®<ÊG¼Í« \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_113_7.dat b/library/phpqrcode/cache/mask_7/mask_113_7.dat
deleted file mode 100644
index b6e215982..000000000
--- a/library/phpqrcode/cache/mask_7/mask_113_7.dat
+++ /dev/null
@@ -1,11 +0,0 @@
-xÚíšQƒ Dÿ÷4pÿ˵M´PeQ‘6éÃd?Ô¸°>'ƒÒÚràQ5+ sûŒ¡)Ûc•Õê7úÕ-ÑÕó»1nní–ºqÿÉ”–ÔÍJtgô¬^îʉwÿ̘Ň-ùƒ?ÿ*š&Mmý@ee5éø^Ñ
-c¢”°
-«°
-«ÀªÒ,¬¶ýªïbï\1¿×3ýjõ4óØT¿ZžfÅ¢·»o鯠«è*º
-«°
-«°
-«°:›Uüêt¿*ü¿ú½¹ºŠ®¢«°
-«°
-«°
-«“Xů²0<·BWÑUtVaVaVƒYÕl
-Þ°ªÙkýf5éýª_Ö ¿ªÙkýáW5{­«µ€ä–5pnõC¬éªZ:¬Å bv \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_117_7.dat b/library/phpqrcode/cache/mask_7/mask_117_7.dat
deleted file mode 100644
index cde78c10d..000000000
--- a/library/phpqrcode/cache/mask_7/mask_117_7.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí›Yà Dÿç4pÿËU•²ÈêIª>"ù%6æed ‘Ò8rðS ÍNsŽµU¯ánëk5¦Xe­øjѻު®u—Ûî¦ô¿ö±VÛXgøê,l`øøîuÝÊÀî÷£!‚h‰XZù\VãlM±ìë|[ͬÝÂ0 Ã0 Ã0 ÿÃí–#hF'ëøc]²±ž¾¦iéí>ìúŽûHÐat†a†a†a~<ÃÔÆzØyÆqkO‡£Ãè0 Ã0 Ã0 ÃðææŒãªžF‡Ña†a†aþ)†§2ÇË°éfÃ’áþ%ƒÀz8ùëátO=¼žâ€3ÿ=Ž‚áÖî3œÜ:ìÿcw‘
-ûV$¢ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_121_7.dat b/library/phpqrcode/cache/mask_7/mask_121_7.dat
deleted file mode 100644
index d5d577f7e..000000000
--- a/library/phpqrcode/cache/mask_7/mask_121_7.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí›[
-Ä Eÿ³šdÿ›ú°ŒÆi;^az,ø#6Æž^rÝׂ§h¶ŽôµÈêÐ&Ýì¨çÜ^amýËÀ•YŸ9×_Òغô5C·r–6ë®ðt^ù^ÅWlûÅÐEä˜ôز~É¿|èM®èmýÁåÛmSò}÷¶Ó( Û° Û° Û°}ŽmQ½]ŒZ§Vüq½]¼ÓvËѲ"™M¹1fÙúGÔÛÛ, q½½ÍB·Ñmt¶a¶a¶a¶ÂöÄz»eF²3»cxI¹—D·Ñmt¶a¶a¶a¶ÿŸmÎnð’ý$ºn£Û° Û° Û° Ûa[}ï¦`[yëæÀö–°¾Þ–Þ»)Ïn<¹æ4ÜKú/éó¼¤O¢»s§l¨nçlÔmŸµÝ/GëÙ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_125_7.dat b/library/phpqrcode/cache/mask_7/mask_125_7.dat
deleted file mode 100644
index f9ec0887b..000000000
--- a/library/phpqrcode/cache/mask_7/mask_125_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_129_7.dat b/library/phpqrcode/cache/mask_7/mask_129_7.dat
deleted file mode 100644
index 9bf51d529..000000000
--- a/library/phpqrcode/cache/mask_7/mask_129_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_133_7.dat b/library/phpqrcode/cache/mask_7/mask_133_7.dat
deleted file mode 100644
index b643ffeda..000000000
--- a/library/phpqrcode/cache/mask_7/mask_133_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_137_7.dat b/library/phpqrcode/cache/mask_7/mask_137_7.dat
deleted file mode 100644
index 11d212bf4..000000000
--- a/library/phpqrcode/cache/mask_7/mask_137_7.dat
+++ /dev/null
@@ -1,5 +0,0 @@
-xÚíœÝ
-à Fïó4úþ/· úc§‹«_Ç‚+¸{üSÚK<E±Óœ%um‰Ä”¶OÄÃcåPÕNsûÑuõÝß+Ÿ šÒʺQS,E)Öµ÷^ÿf¼Õaç—_ÃHkoKrÇ6»DÓZQ›öï‹Úö F><ŸÚÎo[l
-ìÀìÀΟ²Ó
-©ý0û¡7Ö‰µVÆl;b¶–ëüè™7æõfM¾S´†î ;è1ìÀìÀìÀìL³C¾<ßQí[+@wÐt‡˜ v`v`v`v&Ù!ß ›ï°7ÚX+@wÐt‡˜ v`v`v`v8 ÊYP΂¢;èºCÌ;°;°;°saG{™Ä;Ú»>vRœ|ÇžåùŽö®K¾£½ë£ØMÎðHÖ
-‚³#Ð(S›ËÎòúqÌçd \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_141_7.dat b/library/phpqrcode/cache/mask_7/mask_141_7.dat
deleted file mode 100644
index 98dffab00..000000000
--- a/library/phpqrcode/cache/mask_7/mask_141_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíœA„ E÷= Üÿr“IëŒTY@¿ÉÄÅ0!µøø|1”²—št¹bG0µæԗѤ…s¡2Z/îç¿oa‚ìøÜ\ÿq¬ãzÜÛOnÒ‹MºÏñÞn™šñt„áX"Kÿ—m‘eM}çÚòCpµíÄP™L^¾µŒ„S0S0S0S£L ø)Ç”‚ŸÚ˜êYß¾%žÔbÑý,õS©l?ÕzC§Ð)tŠµLÁLÁLÁLI2…ŸzŸŠRX¶h¾£@§Ð)tŠµLÁLÁLÁLI1…Ÿz‘ŸbÏ·óŽB§Ð)Ö~0S0S0S0Å7´ø)ö|ù†B§Ð)˜‚)˜‚)˜‚©÷3Õ–«L%Ÿ tfª¬wM±Ÿ*:~ªhù©»¡Zºç«sn’cª÷$1UTtJgÆ8‹ÌÕOYºE \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_145_7.dat b/library/phpqrcode/cache/mask_7/mask_145_7.dat
deleted file mode 100644
index 4aa2bac11..000000000
--- a/library/phpqrcode/cache/mask_7/mask_145_7.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíœÑ
-à Eßó5úÿ?W6Zµ ¦-›^é±àƒ2‰q§×ÄbG‰Ÿ¢X6(ƉuÍ"“LbÑbÝGuû÷ŽÎ¼®··Gkø¨:HwA[¿jšÔm¯øH¢ø¬Ýžï3ïŬýîßâOðkQ{l·|ê»èT›†EmÇ JfÙLÊ?ŸÚ2"&Á¬Á¬Á¬Á¬ÁÚ¬)Äk©ÝRf¢—µÙcï“Ñ̉ÓåFŠÑ,§“z©¦=躆®±‡„5Xƒ5Xƒ5Xƒµ7±F¼¶\¼¦p–ÚUs#躆®±‡„5Xƒ5Xƒ5Xƒµ°F¼¶d¼ÆYö•Üº†®¡kì!a Ö` Ö` Ö`o‰×8ËæÛct ]C×ØC¬Á¬Á¬ gMå­‚5…[´N¬%éÄk÷h•ñZp®?›¯IÜ£•Ï²ƒ^n$ˆÑæÞY7A×ÖÆëZP[¶ fÈ“0 \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_149_7.dat b/library/phpqrcode/cache/mask_7/mask_149_7.dat
deleted file mode 100644
index 809f00554..000000000
--- a/library/phpqrcode/cache/mask_7/mask_149_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÜÑnà …á{? ¼ÿËu“Ú†­…´2»ÕG$nˆˆcççÈF¡µKëÉ×Ðb3ª÷ôþÖªt³îûªPc çÌ¥Ó7[¢?9:ñÕý['éÁë9'¾*Ó– àGæÜa°½hÖ_¿¹/«zÁ+Î6XB‡>ê˜2ôqYÀJ…0Êù黚BfaƒÄ 1ˆÁª ȇ9c7Gë ùOl©ô,Å^¥ßÅ꽓òÁ3ƒÕòA:Hé Ä 1ˆA bƒÄàÿ0X4œ%Ù«½û#ÇÔd>¢&Cé ¤ƒÄ 1ˆA bƒ<šA{ôo¿G¯&óLM†ÒA:H1ˆA bƒÄ 1è¿ {ôj2þ› ƒtbƒÄ 1ˆA &1Xç`¼_ Ö9ÛðÊ`«™®B˜¶G_çlÃ5™:g5™¶ajMæÍLÔÁŠËèƒIý <|r. \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_153_7.dat b/library/phpqrcode/cache/mask_7/mask_153_7.dat
deleted file mode 100644
index c1ab27664..000000000
--- a/library/phpqrcode/cache/mask_7/mask_153_7.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜQ‚0„á÷= ½ÿ匉B5ˆ
-ю惤/ͲåïØIÙiº^-àî®Zkm|»YDhë9 ›ÎêÃ\{’KÇƶ·{Ÿy—³Ç3ßv†¶Ì»œE]u`RÚÇrý"›ß}ÛY ½ëeÂ2{ÛVV8][×.n:+2_ç¶ÊÂBÃ&6±‰Mlb›ØÄ&6ß`3i¿9Y³³åΌ諡yÙúU}ÔŸ82f-vÚ–Õ6 nÒMºI7±‰Mlb›ØÄ&6±ùólæî7ãÎð‚þÕ ¢›t“nÒMlb›ØÄ&6±‰Mlþ2›ÎüÍÙ^Ð/ˆnÒMºI7±‰Mlb›ØÄ&6±é;gxA¾C¡›t“núO‹Mlb›ØÄ&6±y€Íy•ÇfP¥Õ[6Ÿ4ºßÌ«Ùk`v^Ð+Ó9Ä Ê¬OÛ±ùð}Ï攨›™+ZXíè®=:iWE \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_157_7.dat b/library/phpqrcode/cache/mask_7/mask_157_7.dat
deleted file mode 100644
index 2db27f685..000000000
--- a/library/phpqrcode/cache/mask_7/mask_157_7.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíÜM
-ƒ0Eáù[M²ÿÍ•‚­ü£s¡_„ ž‰ÇÛã ­}F¹†Qks½‡Ì{Ý%¶WqÛ÷×îø.ž­¬Ýþϯ­]Ü8evV½ßbvV}è®_µÜEÌ»n3W^KÃ\Ÿ`äÖV캽çZl³˜Å,f1‹YÌþ;³af±Ôkž·Þ¨×úiàè“ÁÄzÍôÖËz?urVÎÊY9‹YÌb³˜Å,fù,Ÿå³|VÎÊY9+g1‹YÌb³˜Å,Ÿå³|–ÏÊY9+gý7Æ,f1‹YÌb³|–ÏòY>+g嬜Å,f1‹YÌb³|–ÏòY>+g嬜•³˜Å,f1‹YÌþÈlâùƳi§o˜ý.\¦ÏÆo<úl;9º:Âg[®Ï¶lŸmÁÔ^œI>=gÏ™œ³-yk_TAµ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_161_7.dat b/library/phpqrcode/cache/mask_7/mask_161_7.dat
deleted file mode 100644
index 35ba8ff48..000000000
--- a/library/phpqrcode/cache/mask_7/mask_161_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÜÑŽÂ …áûyšòþ/皨E)Æ®›î1~4áÂœý93,˵´ «+µØZT=Zeâ¶C»¹ú.<sþô¹ŸvÙÞÏ>~ißµ§¯ÊÞÖ&>Œ,–ÿÔï´6eù˜·í•Ö~,láW]ì ®»º2Íê꺱Ý\Ñþ;×µ2j"–±Œe,ËrXŒÝµVÓ(ícìµµZÓ–1‘™§8Þ©í§‰±/,'ÇØt™.ÓeºŒe,cËXÆ2–±Œåß±,_þŠ|ytõüç£ï|ÎÜ]¦Ët™.cËXÆ2–±Œe,cyËòå/É—­ysî‹.ÓeºL—±Œe,cËXÆ2–±lo…|ÙZ{+è2]¦Ëbl,cËXÆ2–±Œe{+äËÖŠØ[A—é2]¦ËXÆ2–±Œe,c9åÌCÐXÎ<ëþÆò’Ÿ/owsP¾œyÖý]¾œyÖ}·VdÙìæ°¹¯d9J—Ó‡ì)Ë1õ jI2ë \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_165_7.dat b/library/phpqrcode/cache/mask_7/mask_165_7.dat
deleted file mode 100644
index e27fb8edf..000000000
--- a/library/phpqrcode/cache/mask_7/mask_165_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÝQŽ‚0Ðÿ·š²ÿÍM&A,NĘ̈!—x0é‡&XZׇZ»-KØ«[êÞÉeÉj‡½Œëæx,ƒ§¼ú.ï·g}ë`;ÿþþ+k{ËÑ~1ŸŽÿ}á+k{ËØ¥ž™¾SGùWãgî}‡Ý¬@Û?_µö8í¾o+·k][·hô”Wü8~·u·ÜMÆgœqÆg|j<õ·ú¶¶Ú*ßq=<¯”Ïü¤æÛ“RwÆ“ëñÕøøÌüÄÌéŸÈq9.Çå8ãŒ3Î8ãŒ3Î8ãIÆÕãUGÿ?~µsnr\ŽËq9Î8ãŒ3Î8ãŒ3Îx€qõøÇÕã®yç979.Çå¸gœqÆgœqÆgÜ=)êq×À¸'EŽËq9.ÇgœqÆgœqÆwOŠzÜ50îI‘ãr\Žû­Î8ãŒ3Î8ãŒ_ÆøVvd}²ÇÞøü¡aõx˯ÇÛ5êñã)¹&ÿ9)ñÙÞf¼¥çxþ3øYH]ûS^*/ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_169_7.dat b/library/phpqrcode/cache/mask_7/mask_169_7.dat
deleted file mode 100644
index ef1a181f2..000000000
--- a/library/phpqrcode/cache/mask_7/mask_169_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_173_7.dat b/library/phpqrcode/cache/mask_7/mask_173_7.dat
deleted file mode 100644
index 3b5137125..000000000
--- a/library/phpqrcode/cache/mask_7/mask_173_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíÝÝjÃ0 Ð{=Mòþ/· RbÖH¬û«´rj\Ç=ý,ºm·coúZŽ8;»ïmÏ÷½mÛÝë±0b÷ƒ_ßšt$~Wu5ÛÇšNnÜ'?dÕf2¶í(oÁïßGÚ,Løþù÷õ6_{»zÅÑ÷Æ? Ë9úwq9Ç àS!ÆŒëÛ9Îoë€î2 L`˜˜pµŒ¬––O»Enï¶v8L˜²v8L¸º UáY×"ûd}ê K›r‚œ 'È ÖL`˜À&0 L`B'fÕ:ïO8ÛTcTc\kŒr‚œ 'È ÖL`˜À&0 L`BìY²gIñ§kŒr‚œ 'È ÖL`˜À&0 L`‚ç"íYRcô\¤œ 'È r˜À&0 L`˜ÀÏEÚ³¤Æè¹H9ANä&0 L`˜À&ü'úÿ!Ø;êÅq+¶Yõ„l*´Ü³´þ=Ø€ã9¶jŒ[2ÚÖÿ€ Ms¤Ÿ‡Ô„–ç­ë*Ø \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_177_7.dat b/library/phpqrcode/cache/mask_7/mask_177_7.dat
deleted file mode 100644
index 068477c92..000000000
--- a/library/phpqrcode/cache/mask_7/mask_177_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_21_7.dat b/library/phpqrcode/cache/mask_7/mask_21_7.dat
deleted file mode 100644
index 4f9f1386d..000000000
--- a/library/phpqrcode/cache/mask_7/mask_21_7.dat
+++ /dev/null
@@ -1,4 +0,0 @@
-xÚQ
-À0 Bÿ=Þÿr]š˜-?]Rl‡ä݃2•¦¹nc
-ð[Ž¹öÝnùAÃ".–j+êi
-~‹x3<úaXÚ{H†ÖC1xÉÀ)â„á¤üSå \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_25_7.dat b/library/phpqrcode/cache/mask_7/mask_25_7.dat
deleted file mode 100644
index cefe1b972..000000000
--- a/library/phpqrcode/cache/mask_7/mask_25_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚQAÀ »÷5ôÿŸ[F@©àaƒ„ÄÔÖZ̲… >;’ÐÀQ±ÊIÖÀQH8Rÿ¼ñÒˆGÉ"èz,ù½&‡ñþ;±­Ð'oñ»97”%P8%÷6oǽ;]ÞúNWnÝ[äf7¹ÌÕvÔ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_29_7.dat b/library/phpqrcode/cache/mask_7/mask_29_7.dat
deleted file mode 100644
index e3d7391b7..000000000
--- a/library/phpqrcode/cache/mask_7/mask_29_7.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚÕR9À ÛýšøÿŸ«ŠÈQpX˜$læŲf!I2pgSãªêªMZj·ºóÌÃÂ<K.êØ·
-ÂÇ—­Ñê^DŽ/è_yž/ßgcxVÙ0ŸBf#ŽÖÿ]BÇϽʳhí9Þ¹ËóÀ›^Ÿä \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_33_7.dat b/library/phpqrcode/cache/mask_7/mask_33_7.dat
deleted file mode 100644
index 1763f4286..000000000
--- a/library/phpqrcode/cache/mask_7/mask_33_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíSAÀ@¼Ïkøÿçš6¨¨á²Ç’8Èì0 7-n† ZbE0¶"™£°t]…£µ3Ztqúó>"útŠðï¡e0¾¿#Ô›`_Ë1-±ÞóŽé´câÝÍ÷òha÷~/¡Eh™4¦Åæ"ä˜~Ï \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_37_7.dat b/library/phpqrcode/cache/mask_7/mask_37_7.dat
deleted file mode 100644
index 87d9a1a9d..000000000
--- a/library/phpqrcode/cache/mask_7/mask_37_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_41_7.dat b/library/phpqrcode/cache/mask_7/mask_41_7.dat
deleted file mode 100644
index 8acec04f0..000000000
--- a/library/phpqrcode/cache/mask_7/mask_41_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíTAÀ »÷5ôÿŸ[fDYæ(O’^¬ÅbR3/~t/L"¹Ä7SQQ5…jÔ\S—šiíñÎb£ß#Õ†ÈÂ×+Ç£¤w#æzõx?Þ㽧A-ëšw•u曑Y7$b.%AËÇ;•w«Rµ÷ñï•œoxG}?ƒ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_45_7.dat b/library/phpqrcode/cache/mask_7/mask_45_7.dat
deleted file mode 100644
index dbba31d0b..000000000
--- a/library/phpqrcode/cache/mask_7/mask_45_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_49_7.dat b/library/phpqrcode/cache/mask_7/mask_49_7.dat
deleted file mode 100644
index be5dce8b7..000000000
--- a/library/phpqrcode/cache/mask_7/mask_49_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚíVË€0»÷kàÿÎhœC-X.žÆ<ì¨h6Ì‹ 3À½ð,B Ô”ó,ç@’Ï€d5$K¸"T|p•%9"¼ypæ,ïâæ¡=<ÆÉm¡•÷˜Ô‰!‹«?¸¦÷DÀW"˜²(®¸Aó-Ö\- J\©{0p¥lÁWW]ƒÒŒ4ºž?4h= Z_ƒÖd+ýg(æ*ã*+붵(ÏÇæ \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_53_7.dat b/library/phpqrcode/cache/mask_7/mask_53_7.dat
deleted file mode 100644
index 7028ef6d7..000000000
--- a/library/phpqrcode/cache/mask_7/mask_53_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí–KÀ D÷s¼ÿåš&´Råkºiª&,H)øtD×jÁ =¨µÐÎQa˜ž«P"d¹s1ZyC®|hey ­üCvéaH°›7ø‰+ùO…Åu¥QÎsZtb…°Íð7 µvãúÀŠ­h™VµÌ µ~èùà·1#ÿ~‡[Ëf˜†ùÙæfHkZ¶JtµœŸmZÎÏ6½—ÉsÕúá‹ ƒw¸rÍ&C×߶f \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_57_7.dat b/library/phpqrcode/cache/mask_7/mask_57_7.dat
deleted file mode 100644
index ee3107a3c..000000000
--- a/library/phpqrcode/cache/mask_7/mask_57_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí—A€0ïûšöÿŸ3&•ÒH)Kb¼Ð&ˆqÅÖžÕ[-ÌÀÞÏÖŒ …Ú9Ér¡Ys ×.«ÎiÝÓ¾`´ìòØú~—­ëGé{cœiƒÕ‚»\Y<˜.©|·Åì2´ØÛŸÙ2š ŠQQ[[÷^N·ë€88½líÏÃÁ[}[šPl?g+o*Ï–˜4W¶û1  ü Õ33˜Ò[¿\Gosó­bkèm”mËômÿÊ^¬¢hë \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_61_7.dat b/library/phpqrcode/cache/mask_7/mask_61_7.dat
deleted file mode 100644
index 76f8d7271..000000000
--- a/library/phpqrcode/cache/mask_7/mask_61_7.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚí—K
-À D÷sšäþ—+-µ*5ÿm²¤cŸaT¢1Ø9—YÌ쌧êL9 糶¬²çísù//i‡‡Ê\„éb®ö©æÂÄ«âÞë-"^²DŒH-iÝ;bnA¢¼™7ófîet¶7Ù·yÌ£E:r”<4ß6ó(üu÷y{K3oæ"óÌý|a½oÌ?ᜟ‡ïç«Ÿ“ò´pù9åýœj~NêÆ›Èìs¹ÑçTYú¡ Âu \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_65_7.dat b/library/phpqrcode/cache/mask_7/mask_65_7.dat
deleted file mode 100644
index d8b920626..000000000
--- a/library/phpqrcode/cache/mask_7/mask_65_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí—A€ ïûøÿçŒI‘*í6^L!é…°¶ ¸i)mTÇT] VW\ï9e@—4Ku^Â#N%:ö,ÖÙmYÈÂJNã„è9¯“Šà¶©ˆvAè2úþÑÏœ”HÉ"YüšÅÜö +?`ýBXDüBX̽{¿‹Á.³Ëw‘ÿ¨d‘,~΂k’,¸^ïbQâ~±.Ãà\¯wó ®×ë^«Ï÷îOY˜ÞEôJmXâÑÏ"% \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_69_7.dat b/library/phpqrcode/cache/mask_7/mask_69_7.dat
deleted file mode 100644
index c2db0204a..000000000
--- a/library/phpqrcode/cache/mask_7/mask_69_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_73_7.dat b/library/phpqrcode/cache/mask_7/mask_73_7.dat
deleted file mode 100644
index f414e4a58..000000000
--- a/library/phpqrcode/cache/mask_7/mask_73_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_77_7.dat b/library/phpqrcode/cache/mask_7/mask_77_7.dat
deleted file mode 100644
index 3e52bfd3f..000000000
--- a/library/phpqrcode/cache/mask_7/mask_77_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_81_7.dat b/library/phpqrcode/cache/mask_7/mask_81_7.dat
deleted file mode 100644
index 78e08dfc6..000000000
--- a/library/phpqrcode/cache/mask_7/mask_81_7.dat
+++ /dev/null
@@ -1 +0,0 @@
-xÚí™ÁÄ Dïó5ðÿ?×lÒ"ÍŠÝ•¹u4áÀa„>ukv oÌ40Ý÷ãT±%9¯‘Ô6²ü÷ªU5‹*sI{`¹ªÿ™_²>S?ç}(:yâTïlï{G&E\”Ö6¨õ}"A’¤X‹õ XϬ«²³Ç<Âmwx°fÜá‘G”<k£ræU•eεεX‹µX‹µüZ~­s­;\¬ÅZ¬3ë¸|y¬ /ÍwÖÕÃp˯ë×Æ÷ëUÛ[~Í}O¬«oÓ`mÌsÍÝ‘¤)~,Ý \ No newline at end of file
diff --git a/library/phpqrcode/cache/mask_7/mask_85_7.dat b/library/phpqrcode/cache/mask_7/mask_85_7.dat
deleted file mode 100644
index a53824aee..000000000
--- a/library/phpqrcode/cache/mask_7/mask_85_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_89_7.dat b/library/phpqrcode/cache/mask_7/mask_89_7.dat
deleted file mode 100644
index 32934a441..000000000
--- a/library/phpqrcode/cache/mask_7/mask_89_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_93_7.dat b/library/phpqrcode/cache/mask_7/mask_93_7.dat
deleted file mode 100644
index 1955f6b7d..000000000
--- a/library/phpqrcode/cache/mask_7/mask_93_7.dat
+++ /dev/null
Binary files differ
diff --git a/library/phpqrcode/cache/mask_7/mask_97_7.dat b/library/phpqrcode/cache/mask_7/mask_97_7.dat
deleted file mode 100644
index b277368bd..000000000
--- a/library/phpqrcode/cache/mask_7/mask_97_7.dat
+++ /dev/null
@@ -1,2 +0,0 @@
-xÚíšáƒ0„ÿßÓÀû¿Ü²D[ÌÚâV.K¶«Iÿ`…â'ž³sxáº÷Âyäå”$ùxãxÃ"Îéª×= O^&pêb¶ÊÈYʬž$êKŸÝ£àÁÉŽ8KŸ…Ë ÎeÃŒó¡¥ ÔøŸ3:$bI,‰%±$–ÄÒYb襶
-M)¯TôŽ %q®¬Èô綦EÿœX}jlØT—T—ôŽKbI,‰%±ô,ñõã_e[%íýŽöV]R]Ò;N,‰%±$–þ’%VŸ@`‰Ñ%pa©m€§—(}ñ_¥%í%ÚÛ¸ÚÛøÚÛÈ4¥='u)ai¿.;M¾ù> \ No newline at end of file
diff --git a/library/phpqrcode/index.php b/library/phpqrcode/index.php
deleted file mode 100644
index 9e14b7eaa..000000000
--- a/library/phpqrcode/index.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Exemplatory usage
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- echo "<h1>PHP QR Code</h1><hr/>";
-
- //set it to writable location, a place for temp generated PNG files
- $PNG_TEMP_DIR = dirname(__FILE__).DIRECTORY_SEPARATOR.'temp'.DIRECTORY_SEPARATOR;
-
- //html PNG location prefix
- $PNG_WEB_DIR = 'temp/';
-
- include "qrlib.php";
-
- //ofcourse we need rights to create temp dir
- if (!file_exists($PNG_TEMP_DIR))
- mkdir($PNG_TEMP_DIR);
-
-
- $filename = $PNG_TEMP_DIR.'test.png';
-
- //processing form input
- //remember to sanitize user input in real-life solution !!!
- $errorCorrectionLevel = 'L';
- if (isset($_REQUEST['level']) && in_array($_REQUEST['level'], array('L','M','Q','H')))
- $errorCorrectionLevel = $_REQUEST['level'];
-
- $matrixPointSize = 4;
- if (isset($_REQUEST['size']))
- $matrixPointSize = min(max((int)$_REQUEST['size'], 1), 10);
-
-
- if (isset($_REQUEST['data'])) {
-
- //it's very important!
- if (trim($_REQUEST['data']) == '')
- die('data cannot be empty! <a href="?">back</a>');
-
- // user data
- $filename = $PNG_TEMP_DIR.'test'.md5($_REQUEST['data'].'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png';
- QRcode::png($_REQUEST['data'], $filename, $errorCorrectionLevel, $matrixPointSize, 2);
-
- } else {
-
- //default data
- echo 'You can provide data in GET parameter: <a href="?data=like_that">like that</a><hr/>';
- QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);
-
- }
-
- //display generated file
- echo '<img src="'.$PNG_WEB_DIR.basename($filename).'" /><hr/>';
-
- //config form
- echo '<form action="index.php" method="post">
- Data:&nbsp;<input name="data" value="'.(isset($_REQUEST['data'])?htmlspecialchars($_REQUEST['data']):'PHP QR Code :)').'" />&nbsp;
- ECC:&nbsp;<select name="level">
- <option value="L"'.(($errorCorrectionLevel=='L')?' selected':'').'>L - smallest</option>
- <option value="M"'.(($errorCorrectionLevel=='M')?' selected':'').'>M</option>
- <option value="Q"'.(($errorCorrectionLevel=='Q')?' selected':'').'>Q</option>
- <option value="H"'.(($errorCorrectionLevel=='H')?' selected':'').'>H - best</option>
- </select>&nbsp;
- Size:&nbsp;<select name="size">';
-
- for($i=1;$i<=10;$i++)
- echo '<option value="'.$i.'"'.(($matrixPointSize==$i)?' selected':'').'>'.$i.'</option>';
-
- echo '</select>&nbsp;
- <input type="submit" value="GENERATE"></form><hr/>';
-
- // benchmark
- QRtools::timeBenchmark();
-
- \ No newline at end of file
diff --git a/library/phpqrcode/phpqrcode.php b/library/phpqrcode/phpqrcode.php
deleted file mode 100644
index 80adb9df2..000000000
--- a/library/phpqrcode/phpqrcode.php
+++ /dev/null
@@ -1,3312 +0,0 @@
-<?php
-
-/*
- * PHP QR Code encoder
- *
- * This file contains MERGED version of PHP QR Code library.
- * It was auto-generated from full version for your convenience.
- *
- * This merged version was configured to not requre any external files,
- * with disabled cache, error loging and weker but faster mask matching.
- * If you need tune it up please use non-merged version.
- *
- * For full version, documentation, examples of use please visit:
- *
- * http://phpqrcode.sourceforge.net/
- * https://sourceforge.net/projects/phpqrcode/
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-
-
-/*
- * Version: 1.1.4
- * Build: 2010100721
- */
-
-
-
-//---- qrconst.php -----------------------------
-
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Common constants
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- // Encoding modes
-
- define('QR_MODE_NUL', -1);
- define('QR_MODE_NUM', 0);
- define('QR_MODE_AN', 1);
- define('QR_MODE_8', 2);
- define('QR_MODE_KANJI', 3);
- define('QR_MODE_STRUCTURE', 4);
-
- // Levels of error correction.
-
- define('QR_ECLEVEL_L', 0);
- define('QR_ECLEVEL_M', 1);
- define('QR_ECLEVEL_Q', 2);
- define('QR_ECLEVEL_H', 3);
-
- // Supported output formats
-
- define('QR_FORMAT_TEXT', 0);
- define('QR_FORMAT_PNG', 1);
-
- class qrstr {
- public static function set(&$srctab, $x, $y, $repl, $replLen = false) {
- $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl));
- }
- }
-
-
-
-//---- merged_config.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Config file, tuned-up for merged verion
- */
-
- define('QR_CACHEABLE', false); // use cache - more disk reads but less CPU power, masks and format templates are stored there
- define('QR_CACHE_DIR', false); // used when QR_CACHEABLE === true
- define('QR_LOG_DIR', false); // default error logs dir
-
- define('QR_FIND_BEST_MASK', true); // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
- define('QR_FIND_FROM_RANDOM', 2); // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
- define('QR_DEFAULT_MASK', 2); // when QR_FIND_BEST_MASK === false
-
- define('QR_PNG_MAXIMUM_SIZE', 1024); // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images
-
-
-
-
-//---- qrtools.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Toolset, handy and debug utilites.
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRtools {
-
- //----------------------------------------------------------------------
- public static function binarize($frame)
- {
- $len = count($frame);
- foreach ($frame as &$frameLine) {
-
- for($i=0; $i<$len; $i++) {
- $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0';
- }
- }
-
- return $frame;
- }
-
- //----------------------------------------------------------------------
- public static function tcpdfBarcodeArray($code, $mode = 'QR,L', $tcPdfVersion = '4.5.037')
- {
- $barcode_array = array();
-
- if (!is_array($mode))
- $mode = explode(',', $mode);
-
- $eccLevel = 'L';
-
- if (count($mode) > 1) {
- $eccLevel = $mode[1];
- }
-
- $qrTab = QRcode::text($code, false, $eccLevel);
- $size = count($qrTab);
-
- $barcode_array['num_rows'] = $size;
- $barcode_array['num_cols'] = $size;
- $barcode_array['bcode'] = array();
-
- foreach ($qrTab as $line) {
- $arrAdd = array();
- foreach(str_split($line) as $char)
- $arrAdd[] = ($char=='1')?1:0;
- $barcode_array['bcode'][] = $arrAdd;
- }
-
- return $barcode_array;
- }
-
- //----------------------------------------------------------------------
- public static function clearCache()
- {
- self::$frames = array();
- }
-
- //----------------------------------------------------------------------
- public static function buildCache()
- {
- QRtools::markTime('before_build_cache');
-
- $mask = new QRmask();
- for ($a=1; $a <= QRSPEC_VERSION_MAX; $a++) {
- $frame = QRspec::newFrame($a);
- if (QR_IMAGE) {
- $fileName = QR_CACHE_DIR.'frame_'.$a.'.png';
- QRimage::png(self::binarize($frame), $fileName, 1, 0);
- }
-
- $width = count($frame);
- $bitMask = array_fill(0, $width, array_fill(0, $width, 0));
- for ($maskNo=0; $maskNo<8; $maskNo++)
- $mask->makeMaskNo($maskNo, $width, $frame, $bitMask, true);
- }
-
- QRtools::markTime('after_build_cache');
- }
-
- //----------------------------------------------------------------------
- public static function log($outfile, $err)
- {
- if (QR_LOG_DIR !== false) {
- if ($err != '') {
- if ($outfile !== false) {
- file_put_contents(QR_LOG_DIR.basename($outfile).'-errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND);
- } else {
- file_put_contents(QR_LOG_DIR.'errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND);
- }
- }
- }
- }
-
- //----------------------------------------------------------------------
- public static function dumpMask($frame)
- {
- $width = count($frame);
- for($y=0;$y<$width;$y++) {
- for($x=0;$x<$width;$x++) {
- echo ord($frame[$y][$x]).',';
- }
- }
- }
-
- //----------------------------------------------------------------------
- public static function markTime($markerId)
- {
- list($usec, $sec) = explode(" ", microtime());
- $time = ((float)$usec + (float)$sec);
-
- if (!isset($GLOBALS['qr_time_bench']))
- $GLOBALS['qr_time_bench'] = array();
-
- $GLOBALS['qr_time_bench'][$markerId] = $time;
- }
-
- //----------------------------------------------------------------------
- public static function timeBenchmark()
- {
- self::markTime('finish');
-
- $lastTime = 0;
- $startTime = 0;
- $p = 0;
-
- echo '<table cellpadding="3" cellspacing="1">
- <thead><tr style="border-bottom:1px solid silver"><td colspan="2" style="text-align:center">BENCHMARK</td></tr></thead>
- <tbody>';
-
- foreach($GLOBALS['qr_time_bench'] as $markerId=>$thisTime) {
- if ($p > 0) {
- echo '<tr><th style="text-align:right">till '.$markerId.': </th><td>'.number_format($thisTime-$lastTime, 6).'s</td></tr>';
- } else {
- $startTime = $thisTime;
- }
-
- $p++;
- $lastTime = $thisTime;
- }
-
- echo '</tbody><tfoot>
- <tr style="border-top:2px solid black"><th style="text-align:right">TOTAL: </th><td>'.number_format($lastTime-$startTime, 6).'s</td></tr>
- </tfoot>
- </table>';
- }
-
- }
-
- //##########################################################################
-
- QRtools::markTime('start');
-
-
-
-
-//---- qrspec.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * QR Code specifications
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * The following data / specifications are taken from
- * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004)
- * or
- * "Automatic identification and data capture techniques --
- * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('QRSPEC_VERSION_MAX', 40);
- define('QRSPEC_WIDTH_MAX', 177);
-
- define('QRCAP_WIDTH', 0);
- define('QRCAP_WORDS', 1);
- define('QRCAP_REMINDER', 2);
- define('QRCAP_EC', 3);
-
- class QRspec {
-
- public static $capacity = array(
- array( 0, 0, 0, array( 0, 0, 0, 0)),
- array( 21, 26, 0, array( 7, 10, 13, 17)), // 1
- array( 25, 44, 7, array( 10, 16, 22, 28)),
- array( 29, 70, 7, array( 15, 26, 36, 44)),
- array( 33, 100, 7, array( 20, 36, 52, 64)),
- array( 37, 134, 7, array( 26, 48, 72, 88)), // 5
- array( 41, 172, 7, array( 36, 64, 96, 112)),
- array( 45, 196, 0, array( 40, 72, 108, 130)),
- array( 49, 242, 0, array( 48, 88, 132, 156)),
- array( 53, 292, 0, array( 60, 110, 160, 192)),
- array( 57, 346, 0, array( 72, 130, 192, 224)), //10
- array( 61, 404, 0, array( 80, 150, 224, 264)),
- array( 65, 466, 0, array( 96, 176, 260, 308)),
- array( 69, 532, 0, array( 104, 198, 288, 352)),
- array( 73, 581, 3, array( 120, 216, 320, 384)),
- array( 77, 655, 3, array( 132, 240, 360, 432)), //15
- array( 81, 733, 3, array( 144, 280, 408, 480)),
- array( 85, 815, 3, array( 168, 308, 448, 532)),
- array( 89, 901, 3, array( 180, 338, 504, 588)),
- array( 93, 991, 3, array( 196, 364, 546, 650)),
- array( 97, 1085, 3, array( 224, 416, 600, 700)), //20
- array(101, 1156, 4, array( 224, 442, 644, 750)),
- array(105, 1258, 4, array( 252, 476, 690, 816)),
- array(109, 1364, 4, array( 270, 504, 750, 900)),
- array(113, 1474, 4, array( 300, 560, 810, 960)),
- array(117, 1588, 4, array( 312, 588, 870, 1050)), //25
- array(121, 1706, 4, array( 336, 644, 952, 1110)),
- array(125, 1828, 4, array( 360, 700, 1020, 1200)),
- array(129, 1921, 3, array( 390, 728, 1050, 1260)),
- array(133, 2051, 3, array( 420, 784, 1140, 1350)),
- array(137, 2185, 3, array( 450, 812, 1200, 1440)), //30
- array(141, 2323, 3, array( 480, 868, 1290, 1530)),
- array(145, 2465, 3, array( 510, 924, 1350, 1620)),
- array(149, 2611, 3, array( 540, 980, 1440, 1710)),
- array(153, 2761, 3, array( 570, 1036, 1530, 1800)),
- array(157, 2876, 0, array( 570, 1064, 1590, 1890)), //35
- array(161, 3034, 0, array( 600, 1120, 1680, 1980)),
- array(165, 3196, 0, array( 630, 1204, 1770, 2100)),
- array(169, 3362, 0, array( 660, 1260, 1860, 2220)),
- array(173, 3532, 0, array( 720, 1316, 1950, 2310)),
- array(177, 3706, 0, array( 750, 1372, 2040, 2430)) //40
- );
-
- //----------------------------------------------------------------------
- public static function getDataLength($version, $level)
- {
- return self::$capacity[$version][QRCAP_WORDS] - self::$capacity[$version][QRCAP_EC][$level];
- }
-
- //----------------------------------------------------------------------
- public static function getECCLength($version, $level)
- {
- return self::$capacity[$version][QRCAP_EC][$level];
- }
-
- //----------------------------------------------------------------------
- public static function getWidth($version)
- {
- return self::$capacity[$version][QRCAP_WIDTH];
- }
-
- //----------------------------------------------------------------------
- public static function getRemainder($version)
- {
- return self::$capacity[$version][QRCAP_REMINDER];
- }
-
- //----------------------------------------------------------------------
- public static function getMinimumVersion($size, $level)
- {
-
- for($i=1; $i<= QRSPEC_VERSION_MAX; $i++) {
- $words = self::$capacity[$i][QRCAP_WORDS] - self::$capacity[$i][QRCAP_EC][$level];
- if($words >= $size)
- return $i;
- }
-
- return -1;
- }
-
- //######################################################################
-
- public static $lengthTableBits = array(
- array(10, 12, 14),
- array( 9, 11, 13),
- array( 8, 16, 16),
- array( 8, 10, 12)
- );
-
- //----------------------------------------------------------------------
- public static function lengthIndicator($mode, $version)
- {
- if ($mode == QR_MODE_STRUCTURE)
- return 0;
-
- if ($version <= 9) {
- $l = 0;
- } else if ($version <= 26) {
- $l = 1;
- } else {
- $l = 2;
- }
-
- return self::$lengthTableBits[$mode][$l];
- }
-
- //----------------------------------------------------------------------
- public static function maximumWords($mode, $version)
- {
- if($mode == QR_MODE_STRUCTURE)
- return 3;
-
- if($version <= 9) {
- $l = 0;
- } else if($version <= 26) {
- $l = 1;
- } else {
- $l = 2;
- }
-
- $bits = self::$lengthTableBits[$mode][$l];
- $words = (1 << $bits) - 1;
-
- if($mode == QR_MODE_KANJI) {
- $words *= 2; // the number of bytes is required
- }
-
- return $words;
- }
-
- // Error correction code -----------------------------------------------
- // Table of the error correction code (Reed-Solomon block)
- // See Table 12-16 (pp.30-36), JIS X0510:2004.
-
- public static $eccTable = array(
- array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)),
- array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1
- array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)),
- array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)),
- array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)),
- array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5
- array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)),
- array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)),
- array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)),
- array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)),
- array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), //10
- array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)),
- array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)),
- array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)),
- array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)),
- array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), //15
- array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)),
- array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)),
- array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)),
- array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)),
- array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), //20
- array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)),
- array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)),
- array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)),
- array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)),
- array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), //25
- array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)),
- array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)),
- array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)),
- array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)),
- array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), //30
- array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)),
- array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)),
- array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)),
- array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)),
- array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), //35
- array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)),
- array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)),
- array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)),
- array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)),
- array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)),//40
- );
-
- //----------------------------------------------------------------------
- // CACHEABLE!!!
-
- public static function getEccSpec($version, $level, array &$spec)
- {
- if (count($spec) < 5) {
- $spec = array(0,0,0,0,0);
- }
-
- $b1 = self::$eccTable[$version][$level][0];
- $b2 = self::$eccTable[$version][$level][1];
- $data = self::getDataLength($version, $level);
- $ecc = self::getECCLength($version, $level);
-
- if($b2 == 0) {
- $spec[0] = $b1;
- $spec[1] = (int)($data / $b1);
- $spec[2] = (int)($ecc / $b1);
- $spec[3] = 0;
- $spec[4] = 0;
- } else {
- $spec[0] = $b1;
- $spec[1] = (int)($data / ($b1 + $b2));
- $spec[2] = (int)($ecc / ($b1 + $b2));
- $spec[3] = $b2;
- $spec[4] = $spec[1] + 1;
- }
- }
-
- // Alignment pattern ---------------------------------------------------
-
- // Positions of alignment patterns.
- // This array includes only the second and the third position of the
- // alignment patterns. Rest of them can be calculated from the distance
- // between them.
-
- // See Table 1 in Appendix E (pp.71) of JIS X0510:2004.
-
- public static $alignmentPattern = array(
- array( 0, 0),
- array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5
- array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10
- array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), //11-15
- array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), //16-20
- array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), //21-25
- array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), //26-30
- array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), //31-35
- array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58), //35-40
- );
-
-
- /** --------------------------------------------------------------------
- * Put an alignment marker.
- * @param frame
- * @param width
- * @param ox,oy center coordinate of the pattern
- */
- public static function putAlignmentMarker(array &$frame, $ox, $oy)
- {
- $finder = array(
- "\xa1\xa1\xa1\xa1\xa1",
- "\xa1\xa0\xa0\xa0\xa1",
- "\xa1\xa0\xa1\xa0\xa1",
- "\xa1\xa0\xa0\xa0\xa1",
- "\xa1\xa1\xa1\xa1\xa1"
- );
-
- $yStart = $oy-2;
- $xStart = $ox-2;
-
- for($y=0; $y<5; $y++) {
- QRstr::set($frame, $xStart, $yStart+$y, $finder[$y]);
- }
- }
-
- //----------------------------------------------------------------------
- public static function putAlignmentPattern($version, &$frame, $width)
- {
- if($version < 2)
- return;
-
- $d = self::$alignmentPattern[$version][1] - self::$alignmentPattern[$version][0];
- if($d < 0) {
- $w = 2;
- } else {
- $w = (int)(($width - self::$alignmentPattern[$version][0]) / $d + 2);
- }
-
- if($w * $w - 3 == 1) {
- $x = self::$alignmentPattern[$version][0];
- $y = self::$alignmentPattern[$version][0];
- self::putAlignmentMarker($frame, $x, $y);
- return;
- }
-
- $cx = self::$alignmentPattern[$version][0];
- for($x=1; $x<$w - 1; $x++) {
- self::putAlignmentMarker($frame, 6, $cx);
- self::putAlignmentMarker($frame, $cx, 6);
- $cx += $d;
- }
-
- $cy = self::$alignmentPattern[$version][0];
- for($y=0; $y<$w-1; $y++) {
- $cx = self::$alignmentPattern[$version][0];
- for($x=0; $x<$w-1; $x++) {
- self::putAlignmentMarker($frame, $cx, $cy);
- $cx += $d;
- }
- $cy += $d;
- }
- }
-
- // Version information pattern -----------------------------------------
-
- // Version information pattern (BCH coded).
- // See Table 1 in Appendix D (pp.68) of JIS X0510:2004.
-
- // size: [QRSPEC_VERSION_MAX - 6]
-
- public static $versionPattern = array(
- 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d,
- 0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9,
- 0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75,
- 0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64,
- 0x27541, 0x28c69
- );
-
- //----------------------------------------------------------------------
- public static function getVersionPattern($version)
- {
- if($version < 7 || $version > QRSPEC_VERSION_MAX)
- return 0;
-
- return self::$versionPattern[$version -7];
- }
-
- // Format information --------------------------------------------------
- // See calcFormatInfo in tests/test_qrspec.c (orginal qrencode c lib)
-
- public static $formatInfo = array(
- array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976),
- array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0),
- array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed),
- array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b)
- );
-
- public static function getFormatInfo($mask, $level)
- {
- if($mask < 0 || $mask > 7)
- return 0;
-
- if($level < 0 || $level > 3)
- return 0;
-
- return self::$formatInfo[$level][$mask];
- }
-
- // Frame ---------------------------------------------------------------
- // Cache of initial frames.
-
- public static $frames = array();
-
- /** --------------------------------------------------------------------
- * Put a finder pattern.
- * @param frame
- * @param width
- * @param ox,oy upper-left coordinate of the pattern
- */
- public static function putFinderPattern(&$frame, $ox, $oy)
- {
- $finder = array(
- "\xc1\xc1\xc1\xc1\xc1\xc1\xc1",
- "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
- "\xc1\xc1\xc1\xc1\xc1\xc1\xc1"
- );
-
- for($y=0; $y<7; $y++) {
- QRstr::set($frame, $ox, $oy+$y, $finder[$y]);
- }
- }
-
- //----------------------------------------------------------------------
- public static function createFrame($version)
- {
- $width = self::$capacity[$version][QRCAP_WIDTH];
- $frameLine = str_repeat ("\0", $width);
- $frame = array_fill(0, $width, $frameLine);
-
- // Finder pattern
- self::putFinderPattern($frame, 0, 0);
- self::putFinderPattern($frame, $width - 7, 0);
- self::putFinderPattern($frame, 0, $width - 7);
-
- // Separator
- $yOffset = $width - 7;
-
- for($y=0; $y<7; $y++) {
- $frame[$y][7] = "\xc0";
- $frame[$y][$width - 8] = "\xc0";
- $frame[$yOffset][7] = "\xc0";
- $yOffset++;
- }
-
- $setPattern = str_repeat("\xc0", 8);
-
- QRstr::set($frame, 0, 7, $setPattern);
- QRstr::set($frame, $width-8, 7, $setPattern);
- QRstr::set($frame, 0, $width - 8, $setPattern);
-
- // Format info
- $setPattern = str_repeat("\x84", 9);
- QRstr::set($frame, 0, 8, $setPattern);
- QRstr::set($frame, $width - 8, 8, $setPattern, 8);
-
- $yOffset = $width - 8;
-
- for($y=0; $y<8; $y++,$yOffset++) {
- $frame[$y][8] = "\x84";
- $frame[$yOffset][8] = "\x84";
- }
-
- // Timing pattern
-
- for($i=1; $i<$width-15; $i++) {
- $frame[6][7+$i] = chr(0x90 | ($i & 1));
- $frame[7+$i][6] = chr(0x90 | ($i & 1));
- }
-
- // Alignment pattern
- self::putAlignmentPattern($version, $frame, $width);
-
- // Version information
- if($version >= 7) {
- $vinf = self::getVersionPattern($version);
-
- $v = $vinf;
-
- for($x=0; $x<6; $x++) {
- for($y=0; $y<3; $y++) {
- $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1));
- $v = $v >> 1;
- }
- }
-
- $v = $vinf;
- for($y=0; $y<6; $y++) {
- for($x=0; $x<3; $x++) {
- $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1));
- $v = $v >> 1;
- }
- }
- }
-
- // and a little bit...
- $frame[$width - 8][8] = "\x81";
-
- return $frame;
- }
-
- //----------------------------------------------------------------------
- public static function debug($frame, $binary_mode = false)
- {
- if ($binary_mode) {
-
- foreach ($frame as &$frameLine) {
- $frameLine = join('<span class="m">&nbsp;&nbsp;</span>', explode('0', $frameLine));
- $frameLine = join('&#9608;&#9608;', explode('1', $frameLine));
- }
-
- ?>
- <style>
- .m { background-color: white; }
- </style>
- <?php
- echo '<pre><tt><br/ ><br/ ><br/ >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
- echo join("<br/ >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", $frame);
- echo '</tt></pre><br/ ><br/ ><br/ ><br/ ><br/ ><br/ >';
-
- } else {
-
- foreach ($frame as &$frameLine) {
- $frameLine = join('<span class="m">&nbsp;</span>', explode("\xc0", $frameLine));
- $frameLine = join('<span class="m">&#9618;</span>', explode("\xc1", $frameLine));
- $frameLine = join('<span class="p">&nbsp;</span>', explode("\xa0", $frameLine));
- $frameLine = join('<span class="p">&#9618;</span>', explode("\xa1", $frameLine));
- $frameLine = join('<span class="s">&#9671;</span>', explode("\x84", $frameLine)); //format 0
- $frameLine = join('<span class="s">&#9670;</span>', explode("\x85", $frameLine)); //format 1
- $frameLine = join('<span class="x">&#9762;</span>', explode("\x81", $frameLine)); //special bit
- $frameLine = join('<span class="c">&nbsp;</span>', explode("\x90", $frameLine)); //clock 0
- $frameLine = join('<span class="c">&#9719;</span>', explode("\x91", $frameLine)); //clock 1
- $frameLine = join('<span class="f">&nbsp;</span>', explode("\x88", $frameLine)); //version
- $frameLine = join('<span class="f">&#9618;</span>', explode("\x89", $frameLine)); //version
- $frameLine = join('&#9830;', explode("\x01", $frameLine));
- $frameLine = join('&#8901;', explode("\0", $frameLine));
- }
-
- ?>
- <style>
- .p { background-color: yellow; }
- .m { background-color: #00FF00; }
- .s { background-color: #FF0000; }
- .c { background-color: aqua; }
- .x { background-color: pink; }
- .f { background-color: gold; }
- </style>
- <?php
- echo "<pre><tt>";
- echo join("<br/ >", $frame);
- echo "</tt></pre>";
-
- }
- }
-
- //----------------------------------------------------------------------
- public static function serial($frame)
- {
- return gzcompress(join("\n", $frame), 9);
- }
-
- //----------------------------------------------------------------------
- public static function unserial($code)
- {
- return explode("\n", gzuncompress($code));
- }
-
- //----------------------------------------------------------------------
- public static function newFrame($version)
- {
- if($version < 1 || $version > QRSPEC_VERSION_MAX)
- return null;
-
- if(!isset(self::$frames[$version])) {
-
- $fileName = QR_CACHE_DIR.'frame_'.$version.'.dat';
-
- if (QR_CACHEABLE) {
- if (file_exists($fileName)) {
- self::$frames[$version] = self::unserial(file_get_contents($fileName));
- } else {
- self::$frames[$version] = self::createFrame($version);
- file_put_contents($fileName, self::serial(self::$frames[$version]));
- }
- } else {
- self::$frames[$version] = self::createFrame($version);
- }
- }
-
- if(is_null(self::$frames[$version]))
- return null;
-
- return self::$frames[$version];
- }
-
- //----------------------------------------------------------------------
- public static function rsBlockNum($spec) { return $spec[0] + $spec[3]; }
- public static function rsBlockNum1($spec) { return $spec[0]; }
- public static function rsDataCodes1($spec) { return $spec[1]; }
- public static function rsEccCodes1($spec) { return $spec[2]; }
- public static function rsBlockNum2($spec) { return $spec[3]; }
- public static function rsDataCodes2($spec) { return $spec[4]; }
- public static function rsEccCodes2($spec) { return $spec[2]; }
- public static function rsDataLength($spec) { return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); }
- public static function rsEccLength($spec) { return ($spec[0] + $spec[3]) * $spec[2]; }
-
- }
-
-
-
-//---- qrimage.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Image output of code using GD2
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('QR_IMAGE', true);
-
- class QRimage {
-
- //----------------------------------------------------------------------
- public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE)
- {
- $image = self::image($frame, $pixelPerPoint, $outerFrame);
-
- if ($filename === false) {
- Header("Content-type: image/png");
- ImagePng($image);
- } else {
- if($saveandprint===TRUE){
- ImagePng($image, $filename);
- header("Content-type: image/png");
- ImagePng($image);
- }else{
- ImagePng($image, $filename);
- }
- }
-
- ImageDestroy($image);
- }
-
- //----------------------------------------------------------------------
- public static function jpg($frame, $filename = false, $pixelPerPoint = 8, $outerFrame = 4, $q = 85)
- {
- $image = self::image($frame, $pixelPerPoint, $outerFrame);
-
- if ($filename === false) {
- Header("Content-type: image/jpeg");
- ImageJpeg($image, null, $q);
- } else {
- ImageJpeg($image, $filename, $q);
- }
-
- ImageDestroy($image);
- }
-
- //----------------------------------------------------------------------
- private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4)
- {
- $h = count($frame);
- $w = strlen($frame[0]);
-
- $imgW = $w + 2*$outerFrame;
- $imgH = $h + 2*$outerFrame;
-
- $base_image =ImageCreate($imgW, $imgH);
-
- $col[0] = ImageColorAllocate($base_image,255,255,255);
- $col[1] = ImageColorAllocate($base_image,0,0,0);
-
- imagefill($base_image, 0, 0, $col[0]);
-
- for($y=0; $y<$h; $y++) {
- for($x=0; $x<$w; $x++) {
- if ($frame[$y][$x] == '1') {
- ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]);
- }
- }
- }
-
- $target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint);
- ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH);
- ImageDestroy($base_image);
-
- return $target_image;
- }
- }
-
-
-
-//---- qrinput.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Input encoding class
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('STRUCTURE_HEADER_BITS', 20);
- define('MAX_STRUCTURED_SYMBOLS', 16);
-
- class QRinputItem {
-
- public $mode;
- public $size;
- public $data;
- public $bstream;
-
- public function __construct($mode, $size, $data, $bstream = null)
- {
- $setData = array_slice($data, 0, $size);
-
- if (count($setData) < $size) {
- $setData = array_merge($setData, array_fill(0,$size-count($setData),0));
- }
-
- if(!QRinput::check($mode, $size, $setData)) {
- throw new Exception('Error m:'.$mode.',s:'.$size.',d:'.join(',',$setData));
- return null;
- }
-
- $this->mode = $mode;
- $this->size = $size;
- $this->data = $setData;
- $this->bstream = $bstream;
- }
-
- //----------------------------------------------------------------------
- public function encodeModeNum($version)
- {
- try {
-
- $words = (int)($this->size / 3);
- $bs = new QRbitstream();
-
- $val = 0x1;
- $bs->appendNum(4, $val);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_NUM, $version), $this->size);
-
- for($i=0; $i<$words; $i++) {
- $val = (ord($this->data[$i*3 ]) - ord('0')) * 100;
- $val += (ord($this->data[$i*3+1]) - ord('0')) * 10;
- $val += (ord($this->data[$i*3+2]) - ord('0'));
- $bs->appendNum(10, $val);
- }
-
- if($this->size - $words * 3 == 1) {
- $val = ord($this->data[$words*3]) - ord('0');
- $bs->appendNum(4, $val);
- } else if($this->size - $words * 3 == 2) {
- $val = (ord($this->data[$words*3 ]) - ord('0')) * 10;
- $val += (ord($this->data[$words*3+1]) - ord('0'));
- $bs->appendNum(7, $val);
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeModeAn($version)
- {
- try {
- $words = (int)($this->size / 2);
- $bs = new QRbitstream();
-
- $bs->appendNum(4, 0x02);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_AN, $version), $this->size);
-
- for($i=0; $i<$words; $i++) {
- $val = (int)QRinput::lookAnTable(ord($this->data[$i*2 ])) * 45;
- $val += (int)QRinput::lookAnTable(ord($this->data[$i*2+1]));
-
- $bs->appendNum(11, $val);
- }
-
- if($this->size & 1) {
- $val = QRinput::lookAnTable(ord($this->data[$words * 2]));
- $bs->appendNum(6, $val);
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeMode8($version)
- {
- try {
- $bs = new QRbitstream();
-
- $bs->appendNum(4, 0x4);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_8, $version), $this->size);
-
- for($i=0; $i<$this->size; $i++) {
- $bs->appendNum(8, ord($this->data[$i]));
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeModeKanji($version)
- {
- try {
-
- $bs = new QRbitrtream();
-
- $bs->appendNum(4, 0x8);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_KANJI, $version), (int)($this->size / 2));
-
- for($i=0; $i<$this->size; $i+=2) {
- $val = (ord($this->data[$i]) << 8) | ord($this->data[$i+1]);
- if($val <= 0x9ffc) {
- $val -= 0x8140;
- } else {
- $val -= 0xc140;
- }
-
- $h = ($val >> 8) * 0xc0;
- $val = ($val & 0xff) + $h;
-
- $bs->appendNum(13, $val);
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeModeStructure()
- {
- try {
- $bs = new QRbitstream();
-
- $bs->appendNum(4, 0x03);
- $bs->appendNum(4, ord($this->data[1]) - 1);
- $bs->appendNum(4, ord($this->data[0]) - 1);
- $bs->appendNum(8, ord($this->data[2]));
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function estimateBitStreamSizeOfEntry($version)
- {
- $bits = 0;
-
- if($version == 0)
- $version = 1;
-
- switch($this->mode) {
- case QR_MODE_NUM: $bits = QRinput::estimateBitsModeNum($this->size); break;
- case QR_MODE_AN: $bits = QRinput::estimateBitsModeAn($this->size); break;
- case QR_MODE_8: $bits = QRinput::estimateBitsMode8($this->size); break;
- case QR_MODE_KANJI: $bits = QRinput::estimateBitsModeKanji($this->size);break;
- case QR_MODE_STRUCTURE: return STRUCTURE_HEADER_BITS;
- default:
- return 0;
- }
-
- $l = QRspec::lengthIndicator($this->mode, $version);
- $m = 1 << $l;
- $num = (int)(($this->size + $m - 1) / $m);
-
- $bits += $num * (4 + $l);
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public function encodeBitStream($version)
- {
- try {
-
- unset($this->bstream);
- $words = QRspec::maximumWords($this->mode, $version);
-
- if($this->size > $words) {
-
- $st1 = new QRinputItem($this->mode, $words, $this->data);
- $st2 = new QRinputItem($this->mode, $this->size - $words, array_slice($this->data, $words));
-
- $st1->encodeBitStream($version);
- $st2->encodeBitStream($version);
-
- $this->bstream = new QRbitstream();
- $this->bstream->append($st1->bstream);
- $this->bstream->append($st2->bstream);
-
- unset($st1);
- unset($st2);
-
- } else {
-
- $ret = 0;
-
- switch($this->mode) {
- case QR_MODE_NUM: $ret = $this->encodeModeNum($version); break;
- case QR_MODE_AN: $ret = $this->encodeModeAn($version); break;
- case QR_MODE_8: $ret = $this->encodeMode8($version); break;
- case QR_MODE_KANJI: $ret = $this->encodeModeKanji($version);break;
- case QR_MODE_STRUCTURE: $ret = $this->encodeModeStructure(); break;
-
- default:
- break;
- }
-
- if($ret < 0)
- return -1;
- }
-
- return $this->bstream->size();
-
- } catch (Exception $e) {
- return -1;
- }
- }
- };
-
- //##########################################################################
-
- class QRinput {
-
- public $items;
-
- private $version;
- private $level;
-
- //----------------------------------------------------------------------
- public function __construct($version = 0, $level = QR_ECLEVEL_L)
- {
- if ($version < 0 || $version > QRSPEC_VERSION_MAX || $level > QR_ECLEVEL_H) {
- throw new Exception('Invalid version no');
- return NULL;
- }
-
- $this->version = $version;
- $this->level = $level;
- }
-
- //----------------------------------------------------------------------
- public function getVersion()
- {
- return $this->version;
- }
-
- //----------------------------------------------------------------------
- public function setVersion($version)
- {
- if($version < 0 || $version > QRSPEC_VERSION_MAX) {
- throw new Exception('Invalid version no');
- return -1;
- }
-
- $this->version = $version;
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function getErrorCorrectionLevel()
- {
- return $this->level;
- }
-
- //----------------------------------------------------------------------
- public function setErrorCorrectionLevel($level)
- {
- if($level > QR_ECLEVEL_H) {
- throw new Exception('Invalid ECLEVEL');
- return -1;
- }
-
- $this->level = $level;
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function appendEntry(QRinputItem $entry)
- {
- $this->items[] = $entry;
- }
-
- //----------------------------------------------------------------------
- public function append($mode, $size, $data)
- {
- try {
- $entry = new QRinputItem($mode, $size, $data);
- $this->items[] = $entry;
- return 0;
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
-
- public function insertStructuredAppendHeader($size, $index, $parity)
- {
- if( $size > MAX_STRUCTURED_SYMBOLS ) {
- throw new Exception('insertStructuredAppendHeader wrong size');
- }
-
- if( $index <= 0 || $index > MAX_STRUCTURED_SYMBOLS ) {
- throw new Exception('insertStructuredAppendHeader wrong index');
- }
-
- $buf = array($size, $index, $parity);
-
- try {
- $entry = new QRinputItem(QR_MODE_STRUCTURE, 3, buf);
- array_unshift($this->items, $entry);
- return 0;
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function calcParity()
- {
- $parity = 0;
-
- foreach($this->items as $item) {
- if($item->mode != QR_MODE_STRUCTURE) {
- for($i=$item->size-1; $i>=0; $i--) {
- $parity ^= $item->data[$i];
- }
- }
- }
-
- return $parity;
- }
-
- //----------------------------------------------------------------------
- public static function checkModeNum($size, $data)
- {
- for($i=0; $i<$size; $i++) {
- if((ord($data[$i]) < ord('0')) || (ord($data[$i]) > ord('9'))){
- return false;
- }
- }
-
- return true;
- }
-
- //----------------------------------------------------------------------
- public static function estimateBitsModeNum($size)
- {
- $w = (int)$size / 3;
- $bits = $w * 10;
-
- switch($size - $w * 3) {
- case 1:
- $bits += 4;
- break;
- case 2:
- $bits += 7;
- break;
- default:
- break;
- }
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public static $anTable = array(
- -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,
- 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1,
- -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -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
- );
-
- //----------------------------------------------------------------------
- public static function lookAnTable($c)
- {
- return (($c > 127)?-1:self::$anTable[$c]);
- }
-
- //----------------------------------------------------------------------
- public static function checkModeAn($size, $data)
- {
- for($i=0; $i<$size; $i++) {
- if (self::lookAnTable(ord($data[$i])) == -1) {
- return false;
- }
- }
-
- return true;
- }
-
- //----------------------------------------------------------------------
- public static function estimateBitsModeAn($size)
- {
- $w = (int)($size / 2);
- $bits = $w * 11;
-
- if($size & 1) {
- $bits += 6;
- }
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public static function estimateBitsMode8($size)
- {
- return $size * 8;
- }
-
- //----------------------------------------------------------------------
- public function estimateBitsModeKanji($size)
- {
- return (int)(($size / 2) * 13);
- }
-
- //----------------------------------------------------------------------
- public static function checkModeKanji($size, $data)
- {
- if($size & 1)
- return false;
-
- for($i=0; $i<$size; $i+=2) {
- $val = (ord($data[$i]) << 8) | ord($data[$i+1]);
- if( $val < 0x8140
- || ($val > 0x9ffc && $val < 0xe040)
- || $val > 0xebbf) {
- return false;
- }
- }
-
- return true;
- }
-
- /***********************************************************************
- * Validation
- **********************************************************************/
-
- public static function check($mode, $size, $data)
- {
- if($size <= 0)
- return false;
-
- switch($mode) {
- case QR_MODE_NUM: return self::checkModeNum($size, $data); break;
- case QR_MODE_AN: return self::checkModeAn($size, $data); break;
- case QR_MODE_KANJI: return self::checkModeKanji($size, $data); break;
- case QR_MODE_8: return true; break;
- case QR_MODE_STRUCTURE: return true; break;
-
- default:
- break;
- }
-
- return false;
- }
-
-
- //----------------------------------------------------------------------
- public function estimateBitStreamSize($version)
- {
- $bits = 0;
-
- foreach($this->items as $item) {
- $bits += $item->estimateBitStreamSizeOfEntry($version);
- }
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public function estimateVersion()
- {
- $version = 0;
- $prev = 0;
- do {
- $prev = $version;
- $bits = $this->estimateBitStreamSize($prev);
- $version = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level);
- if ($version < 0) {
- return -1;
- }
- } while ($version > $prev);
-
- return $version;
- }
-
- //----------------------------------------------------------------------
- public static function lengthOfCode($mode, $version, $bits)
- {
- $payload = $bits - 4 - QRspec::lengthIndicator($mode, $version);
- switch($mode) {
- case QR_MODE_NUM:
- $chunks = (int)($payload / 10);
- $remain = $payload - $chunks * 10;
- $size = $chunks * 3;
- if($remain >= 7) {
- $size += 2;
- } else if($remain >= 4) {
- $size += 1;
- }
- break;
- case QR_MODE_AN:
- $chunks = (int)($payload / 11);
- $remain = $payload - $chunks * 11;
- $size = $chunks * 2;
- if($remain >= 6)
- $size++;
- break;
- case QR_MODE_8:
- $size = (int)($payload / 8);
- break;
- case QR_MODE_KANJI:
- $size = (int)(($payload / 13) * 2);
- break;
- case QR_MODE_STRUCTURE:
- $size = (int)($payload / 8);
- break;
- default:
- $size = 0;
- break;
- }
-
- $maxsize = QRspec::maximumWords($mode, $version);
- if($size < 0) $size = 0;
- if($size > $maxsize) $size = $maxsize;
-
- return $size;
- }
-
- //----------------------------------------------------------------------
- public function createBitStream()
- {
- $total = 0;
-
- foreach($this->items as $item) {
- $bits = $item->encodeBitStream($this->version);
-
- if($bits < 0)
- return -1;
-
- $total += $bits;
- }
-
- return $total;
- }
-
- //----------------------------------------------------------------------
- public function convertData()
- {
- $ver = $this->estimateVersion();
- if($ver > $this->getVersion()) {
- $this->setVersion($ver);
- }
-
- for(;;) {
- $bits = $this->createBitStream();
-
- if($bits < 0)
- return -1;
-
- $ver = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level);
- if($ver < 0) {
- throw new Exception('WRONG VERSION');
- return -1;
- } else if($ver > $this->getVersion()) {
- $this->setVersion($ver);
- } else {
- break;
- }
- }
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function appendPaddingBit(&$bstream)
- {
- $bits = $bstream->size();
- $maxwords = QRspec::getDataLength($this->version, $this->level);
- $maxbits = $maxwords * 8;
-
- if ($maxbits == $bits) {
- return 0;
- }
-
- if ($maxbits - $bits < 5) {
- return $bstream->appendNum($maxbits - $bits, 0);
- }
-
- $bits += 4;
- $words = (int)(($bits + 7) / 8);
-
- $padding = new QRbitstream();
- $ret = $padding->appendNum($words * 8 - $bits + 4, 0);
-
- if($ret < 0)
- return $ret;
-
- $padlen = $maxwords - $words;
-
- if($padlen > 0) {
-
- $padbuf = array();
- for($i=0; $i<$padlen; $i++) {
- $padbuf[$i] = ($i&1)?0x11:0xec;
- }
-
- $ret = $padding->appendBytes($padlen, $padbuf);
-
- if($ret < 0)
- return $ret;
-
- }
-
- $ret = $bstream->append($padding);
-
- return $ret;
- }
-
- //----------------------------------------------------------------------
- public function mergeBitStream()
- {
- if($this->convertData() < 0) {
- return null;
- }
-
- $bstream = new QRbitstream();
-
- foreach($this->items as $item) {
- $ret = $bstream->append($item->bstream);
- if($ret < 0) {
- return null;
- }
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public function getBitStream()
- {
-
- $bstream = $this->mergeBitStream();
-
- if($bstream == null) {
- return null;
- }
-
- $ret = $this->appendPaddingBit($bstream);
- if($ret < 0) {
- return null;
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public function getByteStream()
- {
- $bstream = $this->getBitStream();
- if($bstream == null) {
- return null;
- }
-
- return $bstream->toByte();
- }
- }
-
-
-
-
-
-
-//---- qrbitstream.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Bitstream class
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRbitstream {
-
- public $data = array();
-
- //----------------------------------------------------------------------
- public function size()
- {
- return count($this->data);
- }
-
- //----------------------------------------------------------------------
- public function allocate($setLength)
- {
- $this->data = array_fill(0, $setLength, 0);
- return 0;
- }
-
- //----------------------------------------------------------------------
- public static function newFromNum($bits, $num)
- {
- $bstream = new QRbitstream();
- $bstream->allocate($bits);
-
- $mask = 1 << ($bits - 1);
- for($i=0; $i<$bits; $i++) {
- if($num & $mask) {
- $bstream->data[$i] = 1;
- } else {
- $bstream->data[$i] = 0;
- }
- $mask = $mask >> 1;
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public static function newFromBytes($size, $data)
- {
- $bstream = new QRbitstream();
- $bstream->allocate($size * 8);
- $p=0;
-
- for($i=0; $i<$size; $i++) {
- $mask = 0x80;
- for($j=0; $j<8; $j++) {
- if($data[$i] & $mask) {
- $bstream->data[$p] = 1;
- } else {
- $bstream->data[$p] = 0;
- }
- $p++;
- $mask = $mask >> 1;
- }
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public function append(QRbitstream $arg)
- {
- if (is_null($arg)) {
- return -1;
- }
-
- if($arg->size() == 0) {
- return 0;
- }
-
- if($this->size() == 0) {
- $this->data = $arg->data;
- return 0;
- }
-
- $this->data = array_values(array_merge($this->data, $arg->data));
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function appendNum($bits, $num)
- {
- if ($bits == 0)
- return 0;
-
- $b = QRbitstream::newFromNum($bits, $num);
-
- if(is_null($b))
- return -1;
-
- $ret = $this->append($b);
- unset($b);
-
- return $ret;
- }
-
- //----------------------------------------------------------------------
- public function appendBytes($size, $data)
- {
- if ($size == 0)
- return 0;
-
- $b = QRbitstream::newFromBytes($size, $data);
-
- if(is_null($b))
- return -1;
-
- $ret = $this->append($b);
- unset($b);
-
- return $ret;
- }
-
- //----------------------------------------------------------------------
- public function toByte()
- {
-
- $size = $this->size();
-
- if($size == 0) {
- return array();
- }
-
- $data = array_fill(0, (int)(($size + 7) / 8), 0);
- $bytes = (int)($size / 8);
-
- $p = 0;
-
- for($i=0; $i<$bytes; $i++) {
- $v = 0;
- for($j=0; $j<8; $j++) {
- $v = $v << 1;
- $v |= $this->data[$p];
- $p++;
- }
- $data[$i] = $v;
- }
-
- if($size & 7) {
- $v = 0;
- for($j=0; $j<($size & 7); $j++) {
- $v = $v << 1;
- $v |= $this->data[$p];
- $p++;
- }
- $data[$bytes] = $v;
- }
-
- return $data;
- }
-
- }
-
-
-
-
-//---- qrsplit.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Input splitting classes
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * The following data / specifications are taken from
- * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004)
- * or
- * "Automatic identification and data capture techniques --
- * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
- class QRsplit {
-
- public $dataStr = '';
- public $input;
- public $modeHint;
-
- //----------------------------------------------------------------------
- public function __construct($dataStr, $input, $modeHint)
- {
- $this->dataStr = $dataStr;
- $this->input = $input;
- $this->modeHint = $modeHint;
- }
-
- //----------------------------------------------------------------------
- public static function isdigitat($str, $pos)
- {
- if ($pos >= strlen($str))
- return false;
-
- return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
- }
-
- //----------------------------------------------------------------------
- public static function isalnumat($str, $pos)
- {
- if ($pos >= strlen($str))
- return false;
-
- return (QRinput::lookAnTable(ord($str[$pos])) >= 0);
- }
-
- //----------------------------------------------------------------------
- public function identifyMode($pos)
- {
- if ($pos >= strlen($this->dataStr))
- return QR_MODE_NUL;
-
- $c = $this->dataStr[$pos];
-
- if(self::isdigitat($this->dataStr, $pos)) {
- return QR_MODE_NUM;
- } else if(self::isalnumat($this->dataStr, $pos)) {
- return QR_MODE_AN;
- } else if($this->modeHint == QR_MODE_KANJI) {
-
- if ($pos+1 < strlen($this->dataStr))
- {
- $d = $this->dataStr[$pos+1];
- $word = (ord($c) << 8) | ord($d);
- if(($word >= 0x8140 && $word <= 0x9ffc) || ($word >= 0xe040 && $word <= 0xebbf)) {
- return QR_MODE_KANJI;
- }
- }
- }
-
- return QR_MODE_8;
- }
-
- //----------------------------------------------------------------------
- public function eatNum()
- {
- $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
-
- $p = 0;
- while(self::isdigitat($this->dataStr, $p)) {
- $p++;
- }
-
- $run = $p;
- $mode = $this->identifyMode($p);
-
- if($mode == QR_MODE_8) {
- $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln
- + QRinput::estimateBitsMode8(1) // + 4 + l8
- - QRinput::estimateBitsMode8($run + 1); // - 4 - l8
- if($dif > 0) {
- return $this->eat8();
- }
- }
- if($mode == QR_MODE_AN) {
- $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln
- + QRinput::estimateBitsModeAn(1) // + 4 + la
- - QRinput::estimateBitsModeAn($run + 1);// - 4 - la
- if($dif > 0) {
- return $this->eatAn();
- }
- }
-
- $ret = $this->input->append(QR_MODE_NUM, $run, str_split($this->dataStr));
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function eatAn()
- {
- $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion());
- $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
-
- $p = 0;
-
- while(self::isalnumat($this->dataStr, $p)) {
- if(self::isdigitat($this->dataStr, $p)) {
- $q = $p;
- while(self::isdigitat($this->dataStr, $q)) {
- $q++;
- }
-
- $dif = QRinput::estimateBitsModeAn($p) // + 4 + la
- + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln
- - QRinput::estimateBitsModeAn($q); // - 4 - la
-
- if($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else {
- $p++;
- }
- }
-
- $run = $p;
-
- if(!self::isalnumat($this->dataStr, $p)) {
- $dif = QRinput::estimateBitsModeAn($run) + 4 + $la
- + QRinput::estimateBitsMode8(1) // + 4 + l8
- - QRinput::estimateBitsMode8($run + 1); // - 4 - l8
- if($dif > 0) {
- return $this->eat8();
- }
- }
-
- $ret = $this->input->append(QR_MODE_AN, $run, str_split($this->dataStr));
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function eatKanji()
- {
- $p = 0;
-
- while($this->identifyMode($p) == QR_MODE_KANJI) {
- $p += 2;
- }
-
- $ret = $this->input->append(QR_MODE_KANJI, $p, str_split($this->dataStr));
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function eat8()
- {
- $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion());
- $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
-
- $p = 1;
- $dataStrLen = strlen($this->dataStr);
-
- while($p < $dataStrLen) {
-
- $mode = $this->identifyMode($p);
- if($mode == QR_MODE_KANJI) {
- break;
- }
- if($mode == QR_MODE_NUM) {
- $q = $p;
- while(self::isdigitat($this->dataStr, $q)) {
- $q++;
- }
- $dif = QRinput::estimateBitsMode8($p) // + 4 + l8
- + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln
- - QRinput::estimateBitsMode8($q); // - 4 - l8
- if($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else if($mode == QR_MODE_AN) {
- $q = $p;
- while(self::isalnumat($this->dataStr, $q)) {
- $q++;
- }
- $dif = QRinput::estimateBitsMode8($p) // + 4 + l8
- + QRinput::estimateBitsModeAn($q - $p) + 4 + $la
- - QRinput::estimateBitsMode8($q); // - 4 - l8
- if($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else {
- $p++;
- }
- }
-
- $run = $p;
- $ret = $this->input->append(QR_MODE_8, $run, str_split($this->dataStr));
-
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function splitString()
- {
- while (strlen($this->dataStr) > 0)
- {
- if($this->dataStr == '')
- return 0;
-
- $mode = $this->identifyMode(0);
-
- switch ($mode) {
- case QR_MODE_NUM: $length = $this->eatNum(); break;
- case QR_MODE_AN: $length = $this->eatAn(); break;
- case QR_MODE_KANJI:
- if ($hint == QR_MODE_KANJI)
- $length = $this->eatKanji();
- else $length = $this->eat8();
- break;
- default: $length = $this->eat8(); break;
-
- }
-
- if($length == 0) return 0;
- if($length < 0) return -1;
-
- $this->dataStr = substr($this->dataStr, $length);
- }
- }
-
- //----------------------------------------------------------------------
- public function toUpper()
- {
- $stringLen = strlen($this->dataStr);
- $p = 0;
-
- while ($p<$stringLen) {
- $mode = self::identifyMode(substr($this->dataStr, $p), $this->modeHint);
- if($mode == QR_MODE_KANJI) {
- $p += 2;
- } else {
- if (ord($this->dataStr[$p]) >= ord('a') && ord($this->dataStr[$p]) <= ord('z')) {
- $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32);
- }
- $p++;
- }
- }
-
- return $this->dataStr;
- }
-
- //----------------------------------------------------------------------
- public static function splitStringToQRinput($string, QRinput $input, $modeHint, $casesensitive = true)
- {
- if(is_null($string) || $string == '\0' || $string == '') {
- throw new Exception('empty string!!!');
- }
-
- $split = new QRsplit($string, $input, $modeHint);
-
- if(!$casesensitive)
- $split->toUpper();
-
- return $split->splitString();
- }
- }
-
-
-
-//---- qrrscode.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Reed-Solomon error correction support
- *
- * Copyright (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q
- * (libfec is released under the GNU Lesser General Public License.)
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRrsItem {
-
- public $mm; // Bits per symbol
- public $nn; // Symbols per block (= (1<<mm)-1)
- public $alpha_to = array(); // log lookup table
- public $index_of = array(); // Antilog lookup table
- public $genpoly = array(); // Generator polynomial
- public $nroots; // Number of generator roots = number of parity symbols
- public $fcr; // First consecutive root, index form
- public $prim; // Primitive element, index form
- public $iprim; // prim-th root of 1, index form
- public $pad; // Padding bytes in shortened block
- public $gfpoly;
-
- //----------------------------------------------------------------------
- public function modnn($x)
- {
- while ($x >= $this->nn) {
- $x -= $this->nn;
- $x = ($x >> $this->mm) + ($x & $this->nn);
- }
-
- return $x;
- }
-
- //----------------------------------------------------------------------
- public static function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad)
- {
- // Common code for intializing a Reed-Solomon control block (char or int symbols)
- // Copyright 2004 Phil Karn, KA9Q
- // May be used under the terms of the GNU Lesser General Public License (LGPL)
-
- $rs = null;
-
- // Check parameter ranges
- if($symsize < 0 || $symsize > 8) return $rs;
- if($fcr < 0 || $fcr >= (1<<$symsize)) return $rs;
- if($prim <= 0 || $prim >= (1<<$symsize)) return $rs;
- if($nroots < 0 || $nroots >= (1<<$symsize)) return $rs; // Can't have more roots than symbol values!
- if($pad < 0 || $pad >= ((1<<$symsize) -1 - $nroots)) return $rs; // Too much padding
-
- $rs = new QRrsItem();
- $rs->mm = $symsize;
- $rs->nn = (1<<$symsize)-1;
- $rs->pad = $pad;
-
- $rs->alpha_to = array_fill(0, $rs->nn+1, 0);
- $rs->index_of = array_fill(0, $rs->nn+1, 0);
-
- // PHP style macro replacement ;)
- $NN =& $rs->nn;
- $A0 =& $NN;
-
- // Generate Galois field lookup tables
- $rs->index_of[0] = $A0; // log(zero) = -inf
- $rs->alpha_to[$A0] = 0; // alpha**-inf = 0
- $sr = 1;
-
- for($i=0; $i<$rs->nn; $i++) {
- $rs->index_of[$sr] = $i;
- $rs->alpha_to[$i] = $sr;
- $sr <<= 1;
- if($sr & (1<<$symsize)) {
- $sr ^= $gfpoly;
- }
- $sr &= $rs->nn;
- }
-
- if($sr != 1){
- // field generator polynomial is not primitive!
- $rs = NULL;
- return $rs;
- }
-
- /* Form RS code generator polynomial from its roots */
- $rs->genpoly = array_fill(0, $nroots+1, 0);
-
- $rs->fcr = $fcr;
- $rs->prim = $prim;
- $rs->nroots = $nroots;
- $rs->gfpoly = $gfpoly;
-
- /* Find prim-th root of 1, used in decoding */
- for($iprim=1;($iprim % $prim) != 0;$iprim += $rs->nn)
- ; // intentional empty-body loop!
-
- $rs->iprim = (int)($iprim / $prim);
- $rs->genpoly[0] = 1;
-
- for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) {
- $rs->genpoly[$i+1] = 1;
-
- // Multiply rs->genpoly[] by @**(root + x)
- for ($j = $i; $j > 0; $j--) {
- if ($rs->genpoly[$j] != 0) {
- $rs->genpoly[$j] = $rs->genpoly[$j-1] ^ $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[$j]] + $root)];
- } else {
- $rs->genpoly[$j] = $rs->genpoly[$j-1];
- }
- }
- // rs->genpoly[0] can never be zero
- $rs->genpoly[0] = $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[0]] + $root)];
- }
-
- // convert rs->genpoly[] to index form for quicker encoding
- for ($i = 0; $i <= $nroots; $i++)
- $rs->genpoly[$i] = $rs->index_of[$rs->genpoly[$i]];
-
- return $rs;
- }
-
- //----------------------------------------------------------------------
- public function encode_rs_char($data, &$parity)
- {
- $MM =& $this->mm;
- $NN =& $this->nn;
- $ALPHA_TO =& $this->alpha_to;
- $INDEX_OF =& $this->index_of;
- $GENPOLY =& $this->genpoly;
- $NROOTS =& $this->nroots;
- $FCR =& $this->fcr;
- $PRIM =& $this->prim;
- $IPRIM =& $this->iprim;
- $PAD =& $this->pad;
- $A0 =& $NN;
-
- $parity = array_fill(0, $NROOTS, 0);
-
- for($i=0; $i< ($NN-$NROOTS-$PAD); $i++) {
-
- $feedback = $INDEX_OF[$data[$i] ^ $parity[0]];
- if($feedback != $A0) {
- // feedback term is non-zero
-
- // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
- // always be for the polynomials constructed by init_rs()
- $feedback = $this->modnn($NN - $GENPOLY[$NROOTS] + $feedback);
-
- for($j=1;$j<$NROOTS;$j++) {
- $parity[$j] ^= $ALPHA_TO[$this->modnn($feedback + $GENPOLY[$NROOTS-$j])];
- }
- }
-
- // Shift
- array_shift($parity);
- if($feedback != $A0) {
- array_push($parity, $ALPHA_TO[$this->modnn($feedback + $GENPOLY[0])]);
- } else {
- array_push($parity, 0);
- }
- }
- }
- }
-
- //##########################################################################
-
- class QRrs {
-
- public static $items = array();
-
- //----------------------------------------------------------------------
- public static function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad)
- {
- foreach(self::$items as $rs) {
- if($rs->pad != $pad) continue;
- if($rs->nroots != $nroots) continue;
- if($rs->mm != $symsize) continue;
- if($rs->gfpoly != $gfpoly) continue;
- if($rs->fcr != $fcr) continue;
- if($rs->prim != $prim) continue;
-
- return $rs;
- }
-
- $rs = QRrsItem::init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad);
- array_unshift(self::$items, $rs);
-
- return $rs;
- }
- }
-
-
-
-//---- qrmask.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Masking
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('N1', 3);
- define('N2', 3);
- define('N3', 40);
- define('N4', 10);
-
- class QRmask {
-
- public $runLength = array();
-
- //----------------------------------------------------------------------
- public function __construct()
- {
- $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0);
- }
-
- //----------------------------------------------------------------------
- public function writeFormatInformation($width, &$frame, $mask, $level)
- {
- $blacks = 0;
- $format = QRspec::getFormatInfo($mask, $level);
-
- for($i=0; $i<8; $i++) {
- if($format & 1) {
- $blacks += 2;
- $v = 0x85;
- } else {
- $v = 0x84;
- }
-
- $frame[8][$width - 1 - $i] = chr($v);
- if($i < 6) {
- $frame[$i][8] = chr($v);
- } else {
- $frame[$i + 1][8] = chr($v);
- }
- $format = $format >> 1;
- }
-
- for($i=0; $i<7; $i++) {
- if($format & 1) {
- $blacks += 2;
- $v = 0x85;
- } else {
- $v = 0x84;
- }
-
- $frame[$width - 7 + $i][8] = chr($v);
- if($i == 0) {
- $frame[8][7] = chr($v);
- } else {
- $frame[8][6 - $i] = chr($v);
- }
-
- $format = $format >> 1;
- }
-
- return $blacks;
- }
-
- //----------------------------------------------------------------------
- public function mask0($x, $y) { return ($x+$y)&1; }
- public function mask1($x, $y) { return ($y&1); }
- public function mask2($x, $y) { return ($x%3); }
- public function mask3($x, $y) { return ($x+$y)%3; }
- public function mask4($x, $y) { return (((int)($y/2))+((int)($x/3)))&1; }
- public function mask5($x, $y) { return (($x*$y)&1)+($x*$y)%3; }
- public function mask6($x, $y) { return ((($x*$y)&1)+($x*$y)%3)&1; }
- public function mask7($x, $y) { return ((($x*$y)%3)+(($x+$y)&1))&1; }
-
- //----------------------------------------------------------------------
- private function generateMaskNo($maskNo, $width, $frame)
- {
- $bitMask = array_fill(0, $width, array_fill(0, $width, 0));
-
- for($y=0; $y<$width; $y++) {
- for($x=0; $x<$width; $x++) {
- if(ord($frame[$y][$x]) & 0x80) {
- $bitMask[$y][$x] = 0;
- } else {
- $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y);
- $bitMask[$y][$x] = ($maskFunc == 0)?1:0;
- }
-
- }
- }
-
- return $bitMask;
- }
-
- //----------------------------------------------------------------------
- public static function serial($bitFrame)
- {
- $codeArr = array();
-
- foreach ($bitFrame as $line)
- $codeArr[] = join('', $line);
-
- return gzcompress(join("\n", $codeArr), 9);
- }
-
- //----------------------------------------------------------------------
- public static function unserial($code)
- {
- $codeArr = array();
-
- $codeLines = explode("\n", gzuncompress($code));
- foreach ($codeLines as $line)
- $codeArr[] = str_split($line);
-
- return $codeArr;
- }
-
- //----------------------------------------------------------------------
- public function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly = false)
- {
- $b = 0;
- $bitMask = array();
-
- $fileName = QR_CACHE_DIR.'mask_'.$maskNo.DIRECTORY_SEPARATOR.'mask_'.$width.'_'.$maskNo.'.dat';
-
- if (QR_CACHEABLE) {
- if (file_exists($fileName)) {
- $bitMask = self::unserial(file_get_contents($fileName));
- } else {
- $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d);
- if (!file_exists(QR_CACHE_DIR.'mask_'.$maskNo))
- mkdir(QR_CACHE_DIR.'mask_'.$maskNo);
- file_put_contents($fileName, self::serial($bitMask));
- }
- } else {
- $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d);
- }
-
- if ($maskGenOnly)
- return;
-
- $d = $s;
-
- for($y=0; $y<$width; $y++) {
- for($x=0; $x<$width; $x++) {
- if($bitMask[$y][$x] == 1) {
- $d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]);
- }
- $b += (int)(ord($d[$y][$x]) & 1);
- }
- }
-
- return $b;
- }
-
- //----------------------------------------------------------------------
- public function makeMask($width, $frame, $maskNo, $level)
- {
- $masked = array_fill(0, $width, str_repeat("\0", $width));
- $this->makeMaskNo($maskNo, $width, $frame, $masked);
- $this->writeFormatInformation($width, $masked, $maskNo, $level);
-
- return $masked;
- }
-
- //----------------------------------------------------------------------
- public function calcN1N3($length)
- {
- $demerit = 0;
-
- for($i=0; $i<$length; $i++) {
-
- if($this->runLength[$i] >= 5) {
- $demerit += (N1 + ($this->runLength[$i] - 5));
- }
- if($i & 1) {
- if(($i >= 3) && ($i < ($length-2)) && ($this->runLength[$i] % 3 == 0)) {
- $fact = (int)($this->runLength[$i] / 3);
- if(($this->runLength[$i-2] == $fact) &&
- ($this->runLength[$i-1] == $fact) &&
- ($this->runLength[$i+1] == $fact) &&
- ($this->runLength[$i+2] == $fact)) {
- if(($this->runLength[$i-3] < 0) || ($this->runLength[$i-3] >= (4 * $fact))) {
- $demerit += N3;
- } else if((($i+3) >= $length) || ($this->runLength[$i+3] >= (4 * $fact))) {
- $demerit += N3;
- }
- }
- }
- }
- }
- return $demerit;
- }
-
- //----------------------------------------------------------------------
- public function evaluateSymbol($width, $frame)
- {
- $head = 0;
- $demerit = 0;
-
- for($y=0; $y<$width; $y++) {
- $head = 0;
- $this->runLength[0] = 1;
-
- $frameY = $frame[$y];
-
- if ($y>0)
- $frameYM = $frame[$y-1];
-
- for($x=0; $x<$width; $x++) {
- if(($x > 0) && ($y > 0)) {
- $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]);
- $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]);
-
- if(($b22 | ($w22 ^ 1))&1) {
- $demerit += N2;
- }
- }
- if(($x == 0) && (ord($frameY[$x]) & 1)) {
- $this->runLength[0] = -1;
- $head = 1;
- $this->runLength[$head] = 1;
- } else if($x > 0) {
- if((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) {
- $head++;
- $this->runLength[$head] = 1;
- } else {
- $this->runLength[$head]++;
- }
- }
- }
-
- $demerit += $this->calcN1N3($head+1);
- }
-
- for($x=0; $x<$width; $x++) {
- $head = 0;
- $this->runLength[0] = 1;
-
- for($y=0; $y<$width; $y++) {
- if($y == 0 && (ord($frame[$y][$x]) & 1)) {
- $this->runLength[0] = -1;
- $head = 1;
- $this->runLength[$head] = 1;
- } else if($y > 0) {
- if((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) {
- $head++;
- $this->runLength[$head] = 1;
- } else {
- $this->runLength[$head]++;
- }
- }
- }
-
- $demerit += $this->calcN1N3($head+1);
- }
-
- return $demerit;
- }
-
-
- //----------------------------------------------------------------------
- public function mask($width, $frame, $level)
- {
- $minDemerit = PHP_INT_MAX;
- $bestMaskNum = 0;
- $bestMask = array();
-
- $checked_masks = array(0,1,2,3,4,5,6,7);
-
- if (QR_FIND_FROM_RANDOM !== false) {
-
- $howManuOut = 8-(QR_FIND_FROM_RANDOM % 9);
- for ($i = 0; $i < $howManuOut; $i++) {
- $remPos = rand (0, count($checked_masks)-1);
- unset($checked_masks[$remPos]);
- $checked_masks = array_values($checked_masks);
- }
-
- }
-
- $bestMask = $frame;
-
- foreach($checked_masks as $i) {
- $mask = array_fill(0, $width, str_repeat("\0", $width));
-
- $demerit = 0;
- $blacks = 0;
- $blacks = $this->makeMaskNo($i, $width, $frame, $mask);
- $blacks += $this->writeFormatInformation($width, $mask, $i, $level);
- $blacks = (int)(100 * $blacks / ($width * $width));
- $demerit = (int)((int)(abs($blacks - 50) / 5) * N4);
- $demerit += $this->evaluateSymbol($width, $mask);
-
- if($demerit < $minDemerit) {
- $minDemerit = $demerit;
- $bestMask = $mask;
- $bestMaskNum = $i;
- }
- }
-
- return $bestMask;
- }
-
- //----------------------------------------------------------------------
- }
-
-
-
-
-//---- qrencode.php -----------------------------
-
-
-
-
-/*
- * PHP QR Code encoder
- *
- * Main encoder classes.
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRrsblock {
- public $dataLength;
- public $data = array();
- public $eccLength;
- public $ecc = array();
-
- public function __construct($dl, $data, $el, &$ecc, QRrsItem $rs)
- {
- $rs->encode_rs_char($data, $ecc);
-
- $this->dataLength = $dl;
- $this->data = $data;
- $this->eccLength = $el;
- $this->ecc = $ecc;
- }
- };
-
- //##########################################################################
-
- class QRrawcode {
- public $version;
- public $datacode = array();
- public $ecccode = array();
- public $blocks;
- public $rsblocks = array(); //of RSblock
- public $count;
- public $dataLength;
- public $eccLength;
- public $b1;
-
- //----------------------------------------------------------------------
- public function __construct(QRinput $input)
- {
- $spec = array(0,0,0,0,0);
-
- $this->datacode = $input->getByteStream();
- if(is_null($this->datacode)) {
- throw new Exception('null imput string');
- }
-
- QRspec::getEccSpec($input->getVersion(), $input->getErrorCorrectionLevel(), $spec);
-
- $this->version = $input->getVersion();
- $this->b1 = QRspec::rsBlockNum1($spec);
- $this->dataLength = QRspec::rsDataLength($spec);
- $this->eccLength = QRspec::rsEccLength($spec);
- $this->ecccode = array_fill(0, $this->eccLength, 0);
- $this->blocks = QRspec::rsBlockNum($spec);
-
- $ret = $this->init($spec);
- if($ret < 0) {
- throw new Exception('block alloc error');
- return null;
- }
-
- $this->count = 0;
- }
-
- //----------------------------------------------------------------------
- public function init(array $spec)
- {
- $dl = QRspec::rsDataCodes1($spec);
- $el = QRspec::rsEccCodes1($spec);
- $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
-
-
- $blockNo = 0;
- $dataPos = 0;
- $eccPos = 0;
- for($i=0; $i<QRspec::rsBlockNum1($spec); $i++) {
- $ecc = array_slice($this->ecccode,$eccPos);
- $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs);
- $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
-
- $dataPos += $dl;
- $eccPos += $el;
- $blockNo++;
- }
-
- if(QRspec::rsBlockNum2($spec) == 0)
- return 0;
-
- $dl = QRspec::rsDataCodes2($spec);
- $el = QRspec::rsEccCodes2($spec);
- $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
-
- if($rs == NULL) return -1;
-
- for($i=0; $i<QRspec::rsBlockNum2($spec); $i++) {
- $ecc = array_slice($this->ecccode,$eccPos);
- $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs);
- $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
-
- $dataPos += $dl;
- $eccPos += $el;
- $blockNo++;
- }
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function getCode()
- {
- $ret;
-
- if($this->count < $this->dataLength) {
- $row = $this->count % $this->blocks;
- $col = $this->count / $this->blocks;
- if($col >= $this->rsblocks[0]->dataLength) {
- $row += $this->b1;
- }
- $ret = $this->rsblocks[$row]->data[$col];
- } else if($this->count < $this->dataLength + $this->eccLength) {
- $row = ($this->count - $this->dataLength) % $this->blocks;
- $col = ($this->count - $this->dataLength) / $this->blocks;
- $ret = $this->rsblocks[$row]->ecc[$col];
- } else {
- return 0;
- }
- $this->count++;
-
- return $ret;
- }
- }
-
- //##########################################################################
-
- class QRcode {
-
- public $version;
- public $width;
- public $data;
-
- //----------------------------------------------------------------------
- public function encodeMask(QRinput $input, $mask)
- {
- if($input->getVersion() < 0 || $input->getVersion() > QRSPEC_VERSION_MAX) {
- throw new Exception('wrong version');
- }
- if($input->getErrorCorrectionLevel() > QR_ECLEVEL_H) {
- throw new Exception('wrong level');
- }
-
- $raw = new QRrawcode($input);
-
- QRtools::markTime('after_raw');
-
- $version = $raw->version;
- $width = QRspec::getWidth($version);
- $frame = QRspec::newFrame($version);
-
- $filler = new FrameFiller($width, $frame);
- if(is_null($filler)) {
- return NULL;
- }
-
- // inteleaved data and ecc codes
- for($i=0; $i<$raw->dataLength + $raw->eccLength; $i++) {
- $code = $raw->getCode();
- $bit = 0x80;
- for($j=0; $j<8; $j++) {
- $addr = $filler->next();
- $filler->setFrameAt($addr, 0x02 | (($bit & $code) != 0));
- $bit = $bit >> 1;
- }
- }
-
- QRtools::markTime('after_filler');
-
- unset($raw);
-
- // remainder bits
- $j = QRspec::getRemainder($version);
- for($i=0; $i<$j; $i++) {
- $addr = $filler->next();
- $filler->setFrameAt($addr, 0x02);
- }
-
- $frame = $filler->frame;
- unset($filler);
-
-
- // masking
- $maskObj = new QRmask();
- if($mask < 0) {
-
- if (QR_FIND_BEST_MASK) {
- $masked = $maskObj->mask($width, $frame, $input->getErrorCorrectionLevel());
- } else {
- $masked = $maskObj->makeMask($width, $frame, (intval(QR_DEFAULT_MASK) % 8), $input->getErrorCorrectionLevel());
- }
- } else {
- $masked = $maskObj->makeMask($width, $frame, $mask, $input->getErrorCorrectionLevel());
- }
-
- if($masked == NULL) {
- return NULL;
- }
-
- QRtools::markTime('after_mask');
-
- $this->version = $version;
- $this->width = $width;
- $this->data = $masked;
-
- return $this;
- }
-
- //----------------------------------------------------------------------
- public function encodeInput(QRinput $input)
- {
- return $this->encodeMask($input, -1);
- }
-
- //----------------------------------------------------------------------
- public function encodeString8bit($string, $version, $level)
- {
- if(string == NULL) {
- throw new Exception('empty string!');
- return NULL;
- }
-
- $input = new QRinput($version, $level);
- if($input == NULL) return NULL;
-
- $ret = $input->append($input, QR_MODE_8, strlen($string), str_split($string));
- if($ret < 0) {
- unset($input);
- return NULL;
- }
- return $this->encodeInput($input);
- }
-
- //----------------------------------------------------------------------
- public function encodeString($string, $version, $level, $hint, $casesensitive)
- {
-
- if($hint != QR_MODE_8 && $hint != QR_MODE_KANJI) {
- throw new Exception('bad hint');
- return NULL;
- }
-
- $input = new QRinput($version, $level);
- if($input == NULL) return NULL;
-
- $ret = QRsplit::splitStringToQRinput($string, $input, $hint, $casesensitive);
- if($ret < 0) {
- return NULL;
- }
-
- return $this->encodeInput($input);
- }
-
- //----------------------------------------------------------------------
- public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false)
- {
- $enc = QRencode::factory($level, $size, $margin);
- return $enc->encodePNG($text, $outfile, $saveandprint=false);
- }
-
- //----------------------------------------------------------------------
- public static function text($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4)
- {
- $enc = QRencode::factory($level, $size, $margin);
- return $enc->encode($text, $outfile);
- }
-
- //----------------------------------------------------------------------
- public static function raw($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4)
- {
- $enc = QRencode::factory($level, $size, $margin);
- return $enc->encodeRAW($text, $outfile);
- }
- }
-
- //##########################################################################
-
- class FrameFiller {
-
- public $width;
- public $frame;
- public $x;
- public $y;
- public $dir;
- public $bit;
-
- //----------------------------------------------------------------------
- public function __construct($width, &$frame)
- {
- $this->width = $width;
- $this->frame = $frame;
- $this->x = $width - 1;
- $this->y = $width - 1;
- $this->dir = -1;
- $this->bit = -1;
- }
-
- //----------------------------------------------------------------------
- public function setFrameAt($at, $val)
- {
- $this->frame[$at['y']][$at['x']] = chr($val);
- }
-
- //----------------------------------------------------------------------
- public function getFrameAt($at)
- {
- return ord($this->frame[$at['y']][$at['x']]);
- }
-
- //----------------------------------------------------------------------
- public function next()
- {
- do {
-
- if($this->bit == -1) {
- $this->bit = 0;
- return array('x'=>$this->x, 'y'=>$this->y);
- }
-
- $x = $this->x;
- $y = $this->y;
- $w = $this->width;
-
- if($this->bit == 0) {
- $x--;
- $this->bit++;
- } else {
- $x++;
- $y += $this->dir;
- $this->bit--;
- }
-
- if($this->dir < 0) {
- if($y < 0) {
- $y = 0;
- $x -= 2;
- $this->dir = 1;
- if($x == 6) {
- $x--;
- $y = 9;
- }
- }
- } else {
- if($y == $w) {
- $y = $w - 1;
- $x -= 2;
- $this->dir = -1;
- if($x == 6) {
- $x--;
- $y -= 8;
- }
- }
- }
- if($x < 0 || $y < 0) return null;
-
- $this->x = $x;
- $this->y = $y;
-
- } while(ord($this->frame[$y][$x]) & 0x80);
-
- return array('x'=>$x, 'y'=>$y);
- }
-
- } ;
-
- //##########################################################################
-
- class QRencode {
-
- public $casesensitive = true;
- public $eightbit = false;
-
- public $version = 0;
- public $size = 3;
- public $margin = 4;
-
- public $structured = 0; // not supported yet
-
- public $level = QR_ECLEVEL_L;
- public $hint = QR_MODE_8;
-
- //----------------------------------------------------------------------
- public static function factory($level = QR_ECLEVEL_L, $size = 3, $margin = 4)
- {
- $enc = new QRencode();
- $enc->size = $size;
- $enc->margin = $margin;
-
- switch ($level.'') {
- case '0':
- case '1':
- case '2':
- case '3':
- $enc->level = $level;
- break;
- case 'l':
- case 'L':
- $enc->level = QR_ECLEVEL_L;
- break;
- case 'm':
- case 'M':
- $enc->level = QR_ECLEVEL_M;
- break;
- case 'q':
- case 'Q':
- $enc->level = QR_ECLEVEL_Q;
- break;
- case 'h':
- case 'H':
- $enc->level = QR_ECLEVEL_H;
- break;
- }
-
- return $enc;
- }
-
- //----------------------------------------------------------------------
- public function encodeRAW($intext, $outfile = false)
- {
- $code = new QRcode();
-
- if($this->eightbit) {
- $code->encodeString8bit($intext, $this->version, $this->level);
- } else {
- $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive);
- }
-
- return $code->data;
- }
-
- //----------------------------------------------------------------------
- public function encode($intext, $outfile = false)
- {
- $code = new QRcode();
-
- if($this->eightbit) {
- $code->encodeString8bit($intext, $this->version, $this->level);
- } else {
- $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive);
- }
-
- QRtools::markTime('after_encode');
-
- if ($outfile!== false) {
- file_put_contents($outfile, join("\n", QRtools::binarize($code->data)));
- } else {
- return QRtools::binarize($code->data);
- }
- }
-
- //----------------------------------------------------------------------
- public function encodePNG($intext, $outfile = false,$saveandprint=false)
- {
- try {
-
- ob_start();
- $tab = $this->encode($intext);
- $err = ob_get_contents();
- ob_end_clean();
-
- if ($err != '')
- QRtools::log($outfile, $err);
-
- $maxSize = (int)(QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$this->margin));
-
- QRimage::png($tab, $outfile, min(max(1, $this->size), $maxSize), $this->margin,$saveandprint);
-
- } catch (Exception $e) {
-
- QRtools::log($outfile, $e->getMessage());
-
- }
- }
- }
-
-
diff --git a/library/phpqrcode/qrbitstream.php b/library/phpqrcode/qrbitstream.php
deleted file mode 100644
index 7d4ec4a6c..000000000
--- a/library/phpqrcode/qrbitstream.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Bitstream class
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRbitstream {
-
- public $data = array();
-
- //----------------------------------------------------------------------
- public function size()
- {
- return count($this->data);
- }
-
- //----------------------------------------------------------------------
- public function allocate($setLength)
- {
- $this->data = array_fill(0, $setLength, 0);
- return 0;
- }
-
- //----------------------------------------------------------------------
- public static function newFromNum($bits, $num)
- {
- $bstream = new QRbitstream();
- $bstream->allocate($bits);
-
- $mask = 1 << ($bits - 1);
- for($i=0; $i<$bits; $i++) {
- if($num & $mask) {
- $bstream->data[$i] = 1;
- } else {
- $bstream->data[$i] = 0;
- }
- $mask = $mask >> 1;
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public static function newFromBytes($size, $data)
- {
- $bstream = new QRbitstream();
- $bstream->allocate($size * 8);
- $p=0;
-
- for($i=0; $i<$size; $i++) {
- $mask = 0x80;
- for($j=0; $j<8; $j++) {
- if($data[$i] & $mask) {
- $bstream->data[$p] = 1;
- } else {
- $bstream->data[$p] = 0;
- }
- $p++;
- $mask = $mask >> 1;
- }
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public function append(QRbitstream $arg)
- {
- if (is_null($arg)) {
- return -1;
- }
-
- if($arg->size() == 0) {
- return 0;
- }
-
- if($this->size() == 0) {
- $this->data = $arg->data;
- return 0;
- }
-
- $this->data = array_values(array_merge($this->data, $arg->data));
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function appendNum($bits, $num)
- {
- if ($bits == 0)
- return 0;
-
- $b = QRbitstream::newFromNum($bits, $num);
-
- if(is_null($b))
- return -1;
-
- $ret = $this->append($b);
- unset($b);
-
- return $ret;
- }
-
- //----------------------------------------------------------------------
- public function appendBytes($size, $data)
- {
- if ($size == 0)
- return 0;
-
- $b = QRbitstream::newFromBytes($size, $data);
-
- if(is_null($b))
- return -1;
-
- $ret = $this->append($b);
- unset($b);
-
- return $ret;
- }
-
- //----------------------------------------------------------------------
- public function toByte()
- {
-
- $size = $this->size();
-
- if($size == 0) {
- return array();
- }
-
- $data = array_fill(0, (int)(($size + 7) / 8), 0);
- $bytes = (int)($size / 8);
-
- $p = 0;
-
- for($i=0; $i<$bytes; $i++) {
- $v = 0;
- for($j=0; $j<8; $j++) {
- $v = $v << 1;
- $v |= $this->data[$p];
- $p++;
- }
- $data[$i] = $v;
- }
-
- if($size & 7) {
- $v = 0;
- for($j=0; $j<($size & 7); $j++) {
- $v = $v << 1;
- $v |= $this->data[$p];
- $p++;
- }
- $data[$bytes] = $v;
- }
-
- return $data;
- }
-
- }
diff --git a/library/phpqrcode/qrconfig.php b/library/phpqrcode/qrconfig.php
deleted file mode 100644
index e53dff8c2..000000000
--- a/library/phpqrcode/qrconfig.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Config file, feel free to modify
- */
-
- define('QR_CACHEABLE', true); // use cache - more disk reads but less CPU power, masks and format templates are stored there
- define('QR_CACHE_DIR', dirname(__FILE__).DIRECTORY_SEPARATOR.'cache'.DIRECTORY_SEPARATOR); // used when QR_CACHEABLE === true
- define('QR_LOG_DIR', dirname(__FILE__).DIRECTORY_SEPARATOR); // default error logs dir
-
- define('QR_FIND_BEST_MASK', true); // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
- define('QR_FIND_FROM_RANDOM', false); // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
- define('QR_DEFAULT_MASK', 2); // when QR_FIND_BEST_MASK === false
-
- define('QR_PNG_MAXIMUM_SIZE', 1024); // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images
- \ No newline at end of file
diff --git a/library/phpqrcode/qrconst.php b/library/phpqrcode/qrconst.php
deleted file mode 100644
index 9fac9fdc1..000000000
--- a/library/phpqrcode/qrconst.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/*
- * PHP QR Code encoder
- *
- * Common constants
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- // Encoding modes
-
- define('QR_MODE_NUL', -1);
- define('QR_MODE_NUM', 0);
- define('QR_MODE_AN', 1);
- define('QR_MODE_8', 2);
- define('QR_MODE_KANJI', 3);
- define('QR_MODE_STRUCTURE', 4);
-
- // Levels of error correction.
-
- define('QR_ECLEVEL_L', 0);
- define('QR_ECLEVEL_M', 1);
- define('QR_ECLEVEL_Q', 2);
- define('QR_ECLEVEL_H', 3);
-
- // Supported output formats
-
- define('QR_FORMAT_TEXT', 0);
- define('QR_FORMAT_PNG', 1);
-
- class qrstr {
- public static function set(&$srctab, $x, $y, $repl, $replLen = false) {
- $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl));
- }
- } \ No newline at end of file
diff --git a/library/phpqrcode/qrencode.php b/library/phpqrcode/qrencode.php
deleted file mode 100644
index 4b77a5bdd..000000000
--- a/library/phpqrcode/qrencode.php
+++ /dev/null
@@ -1,502 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Main encoder classes.
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRrsblock {
- public $dataLength;
- public $data = array();
- public $eccLength;
- public $ecc = array();
-
- public function __construct($dl, $data, $el, &$ecc, QRrsItem $rs)
- {
- $rs->encode_rs_char($data, $ecc);
-
- $this->dataLength = $dl;
- $this->data = $data;
- $this->eccLength = $el;
- $this->ecc = $ecc;
- }
- };
-
- //##########################################################################
-
- class QRrawcode {
- public $version;
- public $datacode = array();
- public $ecccode = array();
- public $blocks;
- public $rsblocks = array(); //of RSblock
- public $count;
- public $dataLength;
- public $eccLength;
- public $b1;
-
- //----------------------------------------------------------------------
- public function __construct(QRinput $input)
- {
- $spec = array(0,0,0,0,0);
-
- $this->datacode = $input->getByteStream();
- if(is_null($this->datacode)) {
- throw new Exception('null imput string');
- }
-
- QRspec::getEccSpec($input->getVersion(), $input->getErrorCorrectionLevel(), $spec);
-
- $this->version = $input->getVersion();
- $this->b1 = QRspec::rsBlockNum1($spec);
- $this->dataLength = QRspec::rsDataLength($spec);
- $this->eccLength = QRspec::rsEccLength($spec);
- $this->ecccode = array_fill(0, $this->eccLength, 0);
- $this->blocks = QRspec::rsBlockNum($spec);
-
- $ret = $this->init($spec);
- if($ret < 0) {
- throw new Exception('block alloc error');
- return null;
- }
-
- $this->count = 0;
- }
-
- //----------------------------------------------------------------------
- public function init(array $spec)
- {
- $dl = QRspec::rsDataCodes1($spec);
- $el = QRspec::rsEccCodes1($spec);
- $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
-
-
- $blockNo = 0;
- $dataPos = 0;
- $eccPos = 0;
- for($i=0; $i<QRspec::rsBlockNum1($spec); $i++) {
- $ecc = array_slice($this->ecccode,$eccPos);
- $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs);
- $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
-
- $dataPos += $dl;
- $eccPos += $el;
- $blockNo++;
- }
-
- if(QRspec::rsBlockNum2($spec) == 0)
- return 0;
-
- $dl = QRspec::rsDataCodes2($spec);
- $el = QRspec::rsEccCodes2($spec);
- $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
-
- if($rs == NULL) return -1;
-
- for($i=0; $i<QRspec::rsBlockNum2($spec); $i++) {
- $ecc = array_slice($this->ecccode,$eccPos);
- $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs);
- $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
-
- $dataPos += $dl;
- $eccPos += $el;
- $blockNo++;
- }
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function getCode()
- {
- $ret;
-
- if($this->count < $this->dataLength) {
- $row = $this->count % $this->blocks;
- $col = $this->count / $this->blocks;
- if($col >= $this->rsblocks[0]->dataLength) {
- $row += $this->b1;
- }
- $ret = $this->rsblocks[$row]->data[$col];
- } else if($this->count < $this->dataLength + $this->eccLength) {
- $row = ($this->count - $this->dataLength) % $this->blocks;
- $col = ($this->count - $this->dataLength) / $this->blocks;
- $ret = $this->rsblocks[$row]->ecc[$col];
- } else {
- return 0;
- }
- $this->count++;
-
- return $ret;
- }
- }
-
- //##########################################################################
-
- class QRcode {
-
- public $version;
- public $width;
- public $data;
-
- //----------------------------------------------------------------------
- public function encodeMask(QRinput $input, $mask)
- {
- if($input->getVersion() < 0 || $input->getVersion() > QRSPEC_VERSION_MAX) {
- throw new Exception('wrong version');
- }
- if($input->getErrorCorrectionLevel() > QR_ECLEVEL_H) {
- throw new Exception('wrong level');
- }
-
- $raw = new QRrawcode($input);
-
- QRtools::markTime('after_raw');
-
- $version = $raw->version;
- $width = QRspec::getWidth($version);
- $frame = QRspec::newFrame($version);
-
- $filler = new FrameFiller($width, $frame);
- if(is_null($filler)) {
- return NULL;
- }
-
- // inteleaved data and ecc codes
- for($i=0; $i<$raw->dataLength + $raw->eccLength; $i++) {
- $code = $raw->getCode();
- $bit = 0x80;
- for($j=0; $j<8; $j++) {
- $addr = $filler->next();
- $filler->setFrameAt($addr, 0x02 | (($bit & $code) != 0));
- $bit = $bit >> 1;
- }
- }
-
- QRtools::markTime('after_filler');
-
- unset($raw);
-
- // remainder bits
- $j = QRspec::getRemainder($version);
- for($i=0; $i<$j; $i++) {
- $addr = $filler->next();
- $filler->setFrameAt($addr, 0x02);
- }
-
- $frame = $filler->frame;
- unset($filler);
-
-
- // masking
- $maskObj = new QRmask();
- if($mask < 0) {
-
- if (QR_FIND_BEST_MASK) {
- $masked = $maskObj->mask($width, $frame, $input->getErrorCorrectionLevel());
- } else {
- $masked = $maskObj->makeMask($width, $frame, (intval(QR_DEFAULT_MASK) % 8), $input->getErrorCorrectionLevel());
- }
- } else {
- $masked = $maskObj->makeMask($width, $frame, $mask, $input->getErrorCorrectionLevel());
- }
-
- if($masked == NULL) {
- return NULL;
- }
-
- QRtools::markTime('after_mask');
-
- $this->version = $version;
- $this->width = $width;
- $this->data = $masked;
-
- return $this;
- }
-
- //----------------------------------------------------------------------
- public function encodeInput(QRinput $input)
- {
- return $this->encodeMask($input, -1);
- }
-
- //----------------------------------------------------------------------
- public function encodeString8bit($string, $version, $level)
- {
- if(string == NULL) {
- throw new Exception('empty string!');
- return NULL;
- }
-
- $input = new QRinput($version, $level);
- if($input == NULL) return NULL;
-
- $ret = $input->append($input, QR_MODE_8, strlen($string), str_split($string));
- if($ret < 0) {
- unset($input);
- return NULL;
- }
- return $this->encodeInput($input);
- }
-
- //----------------------------------------------------------------------
- public function encodeString($string, $version, $level, $hint, $casesensitive)
- {
-
- if($hint != QR_MODE_8 && $hint != QR_MODE_KANJI) {
- throw new Exception('bad hint');
- return NULL;
- }
-
- $input = new QRinput($version, $level);
- if($input == NULL) return NULL;
-
- $ret = QRsplit::splitStringToQRinput($string, $input, $hint, $casesensitive);
- if($ret < 0) {
- return NULL;
- }
-
- return $this->encodeInput($input);
- }
-
- //----------------------------------------------------------------------
- public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false)
- {
- $enc = QRencode::factory($level, $size, $margin);
- return $enc->encodePNG($text, $outfile, $saveandprint=false);
- }
-
- //----------------------------------------------------------------------
- public static function text($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4)
- {
- $enc = QRencode::factory($level, $size, $margin);
- return $enc->encode($text, $outfile);
- }
-
- //----------------------------------------------------------------------
- public static function raw($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4)
- {
- $enc = QRencode::factory($level, $size, $margin);
- return $enc->encodeRAW($text, $outfile);
- }
- }
-
- //##########################################################################
-
- class FrameFiller {
-
- public $width;
- public $frame;
- public $x;
- public $y;
- public $dir;
- public $bit;
-
- //----------------------------------------------------------------------
- public function __construct($width, &$frame)
- {
- $this->width = $width;
- $this->frame = $frame;
- $this->x = $width - 1;
- $this->y = $width - 1;
- $this->dir = -1;
- $this->bit = -1;
- }
-
- //----------------------------------------------------------------------
- public function setFrameAt($at, $val)
- {
- $this->frame[$at['y']][$at['x']] = chr($val);
- }
-
- //----------------------------------------------------------------------
- public function getFrameAt($at)
- {
- return ord($this->frame[$at['y']][$at['x']]);
- }
-
- //----------------------------------------------------------------------
- public function next()
- {
- do {
-
- if($this->bit == -1) {
- $this->bit = 0;
- return array('x'=>$this->x, 'y'=>$this->y);
- }
-
- $x = $this->x;
- $y = $this->y;
- $w = $this->width;
-
- if($this->bit == 0) {
- $x--;
- $this->bit++;
- } else {
- $x++;
- $y += $this->dir;
- $this->bit--;
- }
-
- if($this->dir < 0) {
- if($y < 0) {
- $y = 0;
- $x -= 2;
- $this->dir = 1;
- if($x == 6) {
- $x--;
- $y = 9;
- }
- }
- } else {
- if($y == $w) {
- $y = $w - 1;
- $x -= 2;
- $this->dir = -1;
- if($x == 6) {
- $x--;
- $y -= 8;
- }
- }
- }
- if($x < 0 || $y < 0) return null;
-
- $this->x = $x;
- $this->y = $y;
-
- } while(ord($this->frame[$y][$x]) & 0x80);
-
- return array('x'=>$x, 'y'=>$y);
- }
-
- } ;
-
- //##########################################################################
-
- class QRencode {
-
- public $casesensitive = true;
- public $eightbit = false;
-
- public $version = 0;
- public $size = 3;
- public $margin = 4;
-
- public $structured = 0; // not supported yet
-
- public $level = QR_ECLEVEL_L;
- public $hint = QR_MODE_8;
-
- //----------------------------------------------------------------------
- public static function factory($level = QR_ECLEVEL_L, $size = 3, $margin = 4)
- {
- $enc = new QRencode();
- $enc->size = $size;
- $enc->margin = $margin;
-
- switch ($level.'') {
- case '0':
- case '1':
- case '2':
- case '3':
- $enc->level = $level;
- break;
- case 'l':
- case 'L':
- $enc->level = QR_ECLEVEL_L;
- break;
- case 'm':
- case 'M':
- $enc->level = QR_ECLEVEL_M;
- break;
- case 'q':
- case 'Q':
- $enc->level = QR_ECLEVEL_Q;
- break;
- case 'h':
- case 'H':
- $enc->level = QR_ECLEVEL_H;
- break;
- }
-
- return $enc;
- }
-
- //----------------------------------------------------------------------
- public function encodeRAW($intext, $outfile = false)
- {
- $code = new QRcode();
-
- if($this->eightbit) {
- $code->encodeString8bit($intext, $this->version, $this->level);
- } else {
- $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive);
- }
-
- return $code->data;
- }
-
- //----------------------------------------------------------------------
- public function encode($intext, $outfile = false)
- {
- $code = new QRcode();
-
- if($this->eightbit) {
- $code->encodeString8bit($intext, $this->version, $this->level);
- } else {
- $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive);
- }
-
- QRtools::markTime('after_encode');
-
- if ($outfile!== false) {
- file_put_contents($outfile, join("\n", QRtools::binarize($code->data)));
- } else {
- return QRtools::binarize($code->data);
- }
- }
-
- //----------------------------------------------------------------------
- public function encodePNG($intext, $outfile = false,$saveandprint=false)
- {
- try {
-
- ob_start();
- $tab = $this->encode($intext);
- $err = ob_get_contents();
- ob_end_clean();
-
- if ($err != '')
- QRtools::log($outfile, $err);
-
- $maxSize = (int)(QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$this->margin));
-
- QRimage::png($tab, $outfile, min(max(1, $this->size), $maxSize), $this->margin,$saveandprint);
-
- } catch (Exception $e) {
-
- QRtools::log($outfile, $e->getMessage());
-
- }
- }
- }
diff --git a/library/phpqrcode/qrimage.php b/library/phpqrcode/qrimage.php
deleted file mode 100644
index 10b0a6e1b..000000000
--- a/library/phpqrcode/qrimage.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Image output of code using GD2
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('QR_IMAGE', true);
-
- class QRimage {
-
- //----------------------------------------------------------------------
- public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE)
- {
- $image = self::image($frame, $pixelPerPoint, $outerFrame);
-
- if ($filename === false) {
- Header("Content-type: image/png");
- ImagePng($image);
- } else {
- if($saveandprint===TRUE){
- ImagePng($image, $filename);
- header("Content-type: image/png");
- ImagePng($image);
- }else{
- ImagePng($image, $filename);
- }
- }
-
- ImageDestroy($image);
- }
-
- //----------------------------------------------------------------------
- public static function jpg($frame, $filename = false, $pixelPerPoint = 8, $outerFrame = 4, $q = 85)
- {
- $image = self::image($frame, $pixelPerPoint, $outerFrame);
-
- if ($filename === false) {
- Header("Content-type: image/jpeg");
- ImageJpeg($image, null, $q);
- } else {
- ImageJpeg($image, $filename, $q);
- }
-
- ImageDestroy($image);
- }
-
- //----------------------------------------------------------------------
- private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4)
- {
- $h = count($frame);
- $w = strlen($frame[0]);
-
- $imgW = $w + 2*$outerFrame;
- $imgH = $h + 2*$outerFrame;
-
- $base_image =ImageCreate($imgW, $imgH);
-
- $col[0] = ImageColorAllocate($base_image,255,255,255);
- $col[1] = ImageColorAllocate($base_image,0,0,0);
-
- imagefill($base_image, 0, 0, $col[0]);
-
- for($y=0; $y<$h; $y++) {
- for($x=0; $x<$w; $x++) {
- if ($frame[$y][$x] == '1') {
- ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]);
- }
- }
- }
-
- $target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint);
- ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH);
- ImageDestroy($base_image);
-
- return $target_image;
- }
- } \ No newline at end of file
diff --git a/library/phpqrcode/qrinput.php b/library/phpqrcode/qrinput.php
deleted file mode 100644
index 0f6d7f944..000000000
--- a/library/phpqrcode/qrinput.php
+++ /dev/null
@@ -1,729 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Input encoding class
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('STRUCTURE_HEADER_BITS', 20);
- define('MAX_STRUCTURED_SYMBOLS', 16);
-
- class QRinputItem {
-
- public $mode;
- public $size;
- public $data;
- public $bstream;
-
- public function __construct($mode, $size, $data, $bstream = null)
- {
- $setData = array_slice($data, 0, $size);
-
- if (count($setData) < $size) {
- $setData = array_merge($setData, array_fill(0,$size-count($setData),0));
- }
-
- if(!QRinput::check($mode, $size, $setData)) {
- throw new Exception('Error m:'.$mode.',s:'.$size.',d:'.join(',',$setData));
- return null;
- }
-
- $this->mode = $mode;
- $this->size = $size;
- $this->data = $setData;
- $this->bstream = $bstream;
- }
-
- //----------------------------------------------------------------------
- public function encodeModeNum($version)
- {
- try {
-
- $words = (int)($this->size / 3);
- $bs = new QRbitstream();
-
- $val = 0x1;
- $bs->appendNum(4, $val);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_NUM, $version), $this->size);
-
- for($i=0; $i<$words; $i++) {
- $val = (ord($this->data[$i*3 ]) - ord('0')) * 100;
- $val += (ord($this->data[$i*3+1]) - ord('0')) * 10;
- $val += (ord($this->data[$i*3+2]) - ord('0'));
- $bs->appendNum(10, $val);
- }
-
- if($this->size - $words * 3 == 1) {
- $val = ord($this->data[$words*3]) - ord('0');
- $bs->appendNum(4, $val);
- } else if($this->size - $words * 3 == 2) {
- $val = (ord($this->data[$words*3 ]) - ord('0')) * 10;
- $val += (ord($this->data[$words*3+1]) - ord('0'));
- $bs->appendNum(7, $val);
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeModeAn($version)
- {
- try {
- $words = (int)($this->size / 2);
- $bs = new QRbitstream();
-
- $bs->appendNum(4, 0x02);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_AN, $version), $this->size);
-
- for($i=0; $i<$words; $i++) {
- $val = (int)QRinput::lookAnTable(ord($this->data[$i*2 ])) * 45;
- $val += (int)QRinput::lookAnTable(ord($this->data[$i*2+1]));
-
- $bs->appendNum(11, $val);
- }
-
- if($this->size & 1) {
- $val = QRinput::lookAnTable(ord($this->data[$words * 2]));
- $bs->appendNum(6, $val);
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeMode8($version)
- {
- try {
- $bs = new QRbitstream();
-
- $bs->appendNum(4, 0x4);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_8, $version), $this->size);
-
- for($i=0; $i<$this->size; $i++) {
- $bs->appendNum(8, ord($this->data[$i]));
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeModeKanji($version)
- {
- try {
-
- $bs = new QRbitrtream();
-
- $bs->appendNum(4, 0x8);
- $bs->appendNum(QRspec::lengthIndicator(QR_MODE_KANJI, $version), (int)($this->size / 2));
-
- for($i=0; $i<$this->size; $i+=2) {
- $val = (ord($this->data[$i]) << 8) | ord($this->data[$i+1]);
- if($val <= 0x9ffc) {
- $val -= 0x8140;
- } else {
- $val -= 0xc140;
- }
-
- $h = ($val >> 8) * 0xc0;
- $val = ($val & 0xff) + $h;
-
- $bs->appendNum(13, $val);
- }
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function encodeModeStructure()
- {
- try {
- $bs = new QRbitstream();
-
- $bs->appendNum(4, 0x03);
- $bs->appendNum(4, ord($this->data[1]) - 1);
- $bs->appendNum(4, ord($this->data[0]) - 1);
- $bs->appendNum(8, ord($this->data[2]));
-
- $this->bstream = $bs;
- return 0;
-
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function estimateBitStreamSizeOfEntry($version)
- {
- $bits = 0;
-
- if($version == 0)
- $version = 1;
-
- switch($this->mode) {
- case QR_MODE_NUM: $bits = QRinput::estimateBitsModeNum($this->size); break;
- case QR_MODE_AN: $bits = QRinput::estimateBitsModeAn($this->size); break;
- case QR_MODE_8: $bits = QRinput::estimateBitsMode8($this->size); break;
- case QR_MODE_KANJI: $bits = QRinput::estimateBitsModeKanji($this->size);break;
- case QR_MODE_STRUCTURE: return STRUCTURE_HEADER_BITS;
- default:
- return 0;
- }
-
- $l = QRspec::lengthIndicator($this->mode, $version);
- $m = 1 << $l;
- $num = (int)(($this->size + $m - 1) / $m);
-
- $bits += $num * (4 + $l);
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public function encodeBitStream($version)
- {
- try {
-
- unset($this->bstream);
- $words = QRspec::maximumWords($this->mode, $version);
-
- if($this->size > $words) {
-
- $st1 = new QRinputItem($this->mode, $words, $this->data);
- $st2 = new QRinputItem($this->mode, $this->size - $words, array_slice($this->data, $words));
-
- $st1->encodeBitStream($version);
- $st2->encodeBitStream($version);
-
- $this->bstream = new QRbitstream();
- $this->bstream->append($st1->bstream);
- $this->bstream->append($st2->bstream);
-
- unset($st1);
- unset($st2);
-
- } else {
-
- $ret = 0;
-
- switch($this->mode) {
- case QR_MODE_NUM: $ret = $this->encodeModeNum($version); break;
- case QR_MODE_AN: $ret = $this->encodeModeAn($version); break;
- case QR_MODE_8: $ret = $this->encodeMode8($version); break;
- case QR_MODE_KANJI: $ret = $this->encodeModeKanji($version);break;
- case QR_MODE_STRUCTURE: $ret = $this->encodeModeStructure(); break;
-
- default:
- break;
- }
-
- if($ret < 0)
- return -1;
- }
-
- return $this->bstream->size();
-
- } catch (Exception $e) {
- return -1;
- }
- }
- };
-
- //##########################################################################
-
- class QRinput {
-
- public $items;
-
- private $version;
- private $level;
-
- //----------------------------------------------------------------------
- public function __construct($version = 0, $level = QR_ECLEVEL_L)
- {
- if ($version < 0 || $version > QRSPEC_VERSION_MAX || $level > QR_ECLEVEL_H) {
- throw new Exception('Invalid version no');
- return NULL;
- }
-
- $this->version = $version;
- $this->level = $level;
- }
-
- //----------------------------------------------------------------------
- public function getVersion()
- {
- return $this->version;
- }
-
- //----------------------------------------------------------------------
- public function setVersion($version)
- {
- if($version < 0 || $version > QRSPEC_VERSION_MAX) {
- throw new Exception('Invalid version no');
- return -1;
- }
-
- $this->version = $version;
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function getErrorCorrectionLevel()
- {
- return $this->level;
- }
-
- //----------------------------------------------------------------------
- public function setErrorCorrectionLevel($level)
- {
- if($level > QR_ECLEVEL_H) {
- throw new Exception('Invalid ECLEVEL');
- return -1;
- }
-
- $this->level = $level;
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function appendEntry(QRinputItem $entry)
- {
- $this->items[] = $entry;
- }
-
- //----------------------------------------------------------------------
- public function append($mode, $size, $data)
- {
- try {
- $entry = new QRinputItem($mode, $size, $data);
- $this->items[] = $entry;
- return 0;
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
-
- public function insertStructuredAppendHeader($size, $index, $parity)
- {
- if( $size > MAX_STRUCTURED_SYMBOLS ) {
- throw new Exception('insertStructuredAppendHeader wrong size');
- }
-
- if( $index <= 0 || $index > MAX_STRUCTURED_SYMBOLS ) {
- throw new Exception('insertStructuredAppendHeader wrong index');
- }
-
- $buf = array($size, $index, $parity);
-
- try {
- $entry = new QRinputItem(QR_MODE_STRUCTURE, 3, buf);
- array_unshift($this->items, $entry);
- return 0;
- } catch (Exception $e) {
- return -1;
- }
- }
-
- //----------------------------------------------------------------------
- public function calcParity()
- {
- $parity = 0;
-
- foreach($this->items as $item) {
- if($item->mode != QR_MODE_STRUCTURE) {
- for($i=$item->size-1; $i>=0; $i--) {
- $parity ^= $item->data[$i];
- }
- }
- }
-
- return $parity;
- }
-
- //----------------------------------------------------------------------
- public static function checkModeNum($size, $data)
- {
- for($i=0; $i<$size; $i++) {
- if((ord($data[$i]) < ord('0')) || (ord($data[$i]) > ord('9'))){
- return false;
- }
- }
-
- return true;
- }
-
- //----------------------------------------------------------------------
- public static function estimateBitsModeNum($size)
- {
- $w = (int)$size / 3;
- $bits = $w * 10;
-
- switch($size - $w * 3) {
- case 1:
- $bits += 4;
- break;
- case 2:
- $bits += 7;
- break;
- default:
- break;
- }
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public static $anTable = array(
- -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,
- 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1,
- -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -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
- );
-
- //----------------------------------------------------------------------
- public static function lookAnTable($c)
- {
- return (($c > 127)?-1:self::$anTable[$c]);
- }
-
- //----------------------------------------------------------------------
- public static function checkModeAn($size, $data)
- {
- for($i=0; $i<$size; $i++) {
- if (self::lookAnTable(ord($data[$i])) == -1) {
- return false;
- }
- }
-
- return true;
- }
-
- //----------------------------------------------------------------------
- public static function estimateBitsModeAn($size)
- {
- $w = (int)($size / 2);
- $bits = $w * 11;
-
- if($size & 1) {
- $bits += 6;
- }
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public static function estimateBitsMode8($size)
- {
- return $size * 8;
- }
-
- //----------------------------------------------------------------------
- public function estimateBitsModeKanji($size)
- {
- return (int)(($size / 2) * 13);
- }
-
- //----------------------------------------------------------------------
- public static function checkModeKanji($size, $data)
- {
- if($size & 1)
- return false;
-
- for($i=0; $i<$size; $i+=2) {
- $val = (ord($data[$i]) << 8) | ord($data[$i+1]);
- if( $val < 0x8140
- || ($val > 0x9ffc && $val < 0xe040)
- || $val > 0xebbf) {
- return false;
- }
- }
-
- return true;
- }
-
- /***********************************************************************
- * Validation
- **********************************************************************/
-
- public static function check($mode, $size, $data)
- {
- if($size <= 0)
- return false;
-
- switch($mode) {
- case QR_MODE_NUM: return self::checkModeNum($size, $data); break;
- case QR_MODE_AN: return self::checkModeAn($size, $data); break;
- case QR_MODE_KANJI: return self::checkModeKanji($size, $data); break;
- case QR_MODE_8: return true; break;
- case QR_MODE_STRUCTURE: return true; break;
-
- default:
- break;
- }
-
- return false;
- }
-
-
- //----------------------------------------------------------------------
- public function estimateBitStreamSize($version)
- {
- $bits = 0;
-
- foreach($this->items as $item) {
- $bits += $item->estimateBitStreamSizeOfEntry($version);
- }
-
- return $bits;
- }
-
- //----------------------------------------------------------------------
- public function estimateVersion()
- {
- $version = 0;
- $prev = 0;
- do {
- $prev = $version;
- $bits = $this->estimateBitStreamSize($prev);
- $version = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level);
- if ($version < 0) {
- return -1;
- }
- } while ($version > $prev);
-
- return $version;
- }
-
- //----------------------------------------------------------------------
- public static function lengthOfCode($mode, $version, $bits)
- {
- $payload = $bits - 4 - QRspec::lengthIndicator($mode, $version);
- switch($mode) {
- case QR_MODE_NUM:
- $chunks = (int)($payload / 10);
- $remain = $payload - $chunks * 10;
- $size = $chunks * 3;
- if($remain >= 7) {
- $size += 2;
- } else if($remain >= 4) {
- $size += 1;
- }
- break;
- case QR_MODE_AN:
- $chunks = (int)($payload / 11);
- $remain = $payload - $chunks * 11;
- $size = $chunks * 2;
- if($remain >= 6)
- $size++;
- break;
- case QR_MODE_8:
- $size = (int)($payload / 8);
- break;
- case QR_MODE_KANJI:
- $size = (int)(($payload / 13) * 2);
- break;
- case QR_MODE_STRUCTURE:
- $size = (int)($payload / 8);
- break;
- default:
- $size = 0;
- break;
- }
-
- $maxsize = QRspec::maximumWords($mode, $version);
- if($size < 0) $size = 0;
- if($size > $maxsize) $size = $maxsize;
-
- return $size;
- }
-
- //----------------------------------------------------------------------
- public function createBitStream()
- {
- $total = 0;
-
- foreach($this->items as $item) {
- $bits = $item->encodeBitStream($this->version);
-
- if($bits < 0)
- return -1;
-
- $total += $bits;
- }
-
- return $total;
- }
-
- //----------------------------------------------------------------------
- public function convertData()
- {
- $ver = $this->estimateVersion();
- if($ver > $this->getVersion()) {
- $this->setVersion($ver);
- }
-
- for(;;) {
- $bits = $this->createBitStream();
-
- if($bits < 0)
- return -1;
-
- $ver = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level);
- if($ver < 0) {
- throw new Exception('WRONG VERSION');
- return -1;
- } else if($ver > $this->getVersion()) {
- $this->setVersion($ver);
- } else {
- break;
- }
- }
-
- return 0;
- }
-
- //----------------------------------------------------------------------
- public function appendPaddingBit(&$bstream)
- {
- $bits = $bstream->size();
- $maxwords = QRspec::getDataLength($this->version, $this->level);
- $maxbits = $maxwords * 8;
-
- if ($maxbits == $bits) {
- return 0;
- }
-
- if ($maxbits - $bits < 5) {
- return $bstream->appendNum($maxbits - $bits, 0);
- }
-
- $bits += 4;
- $words = (int)(($bits + 7) / 8);
-
- $padding = new QRbitstream();
- $ret = $padding->appendNum($words * 8 - $bits + 4, 0);
-
- if($ret < 0)
- return $ret;
-
- $padlen = $maxwords - $words;
-
- if($padlen > 0) {
-
- $padbuf = array();
- for($i=0; $i<$padlen; $i++) {
- $padbuf[$i] = ($i&1)?0x11:0xec;
- }
-
- $ret = $padding->appendBytes($padlen, $padbuf);
-
- if($ret < 0)
- return $ret;
-
- }
-
- $ret = $bstream->append($padding);
-
- return $ret;
- }
-
- //----------------------------------------------------------------------
- public function mergeBitStream()
- {
- if($this->convertData() < 0) {
- return null;
- }
-
- $bstream = new QRbitstream();
-
- foreach($this->items as $item) {
- $ret = $bstream->append($item->bstream);
- if($ret < 0) {
- return null;
- }
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public function getBitStream()
- {
-
- $bstream = $this->mergeBitStream();
-
- if($bstream == null) {
- return null;
- }
-
- $ret = $this->appendPaddingBit($bstream);
- if($ret < 0) {
- return null;
- }
-
- return $bstream;
- }
-
- //----------------------------------------------------------------------
- public function getByteStream()
- {
- $bstream = $this->getBitStream();
- if($bstream == null) {
- return null;
- }
-
- return $bstream->toByte();
- }
- }
-
-
- \ No newline at end of file
diff --git a/library/phpqrcode/qrlib.php b/library/phpqrcode/qrlib.php
deleted file mode 100644
index d55c4af29..000000000
--- a/library/phpqrcode/qrlib.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Root library file, prepares environment and includes dependencies
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- $QR_BASEDIR = dirname(__FILE__).DIRECTORY_SEPARATOR;
-
- // Required libs
-
- include $QR_BASEDIR."qrconst.php";
- include $QR_BASEDIR."qrconfig.php";
- include $QR_BASEDIR."qrtools.php";
- include $QR_BASEDIR."qrspec.php";
- include $QR_BASEDIR."qrimage.php";
- include $QR_BASEDIR."qrinput.php";
- include $QR_BASEDIR."qrbitstream.php";
- include $QR_BASEDIR."qrsplit.php";
- include $QR_BASEDIR."qrrscode.php";
- include $QR_BASEDIR."qrmask.php";
- include $QR_BASEDIR."qrencode.php";
-
diff --git a/library/phpqrcode/qrmask.php b/library/phpqrcode/qrmask.php
deleted file mode 100644
index b14d7ae16..000000000
--- a/library/phpqrcode/qrmask.php
+++ /dev/null
@@ -1,328 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Masking
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('N1', 3);
- define('N2', 3);
- define('N3', 40);
- define('N4', 10);
-
- class QRmask {
-
- public $runLength = array();
-
- //----------------------------------------------------------------------
- public function __construct()
- {
- $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0);
- }
-
- //----------------------------------------------------------------------
- public function writeFormatInformation($width, &$frame, $mask, $level)
- {
- $blacks = 0;
- $format = QRspec::getFormatInfo($mask, $level);
-
- for($i=0; $i<8; $i++) {
- if($format & 1) {
- $blacks += 2;
- $v = 0x85;
- } else {
- $v = 0x84;
- }
-
- $frame[8][$width - 1 - $i] = chr($v);
- if($i < 6) {
- $frame[$i][8] = chr($v);
- } else {
- $frame[$i + 1][8] = chr($v);
- }
- $format = $format >> 1;
- }
-
- for($i=0; $i<7; $i++) {
- if($format & 1) {
- $blacks += 2;
- $v = 0x85;
- } else {
- $v = 0x84;
- }
-
- $frame[$width - 7 + $i][8] = chr($v);
- if($i == 0) {
- $frame[8][7] = chr($v);
- } else {
- $frame[8][6 - $i] = chr($v);
- }
-
- $format = $format >> 1;
- }
-
- return $blacks;
- }
-
- //----------------------------------------------------------------------
- public function mask0($x, $y) { return ($x+$y)&1; }
- public function mask1($x, $y) { return ($y&1); }
- public function mask2($x, $y) { return ($x%3); }
- public function mask3($x, $y) { return ($x+$y)%3; }
- public function mask4($x, $y) { return (((int)($y/2))+((int)($x/3)))&1; }
- public function mask5($x, $y) { return (($x*$y)&1)+($x*$y)%3; }
- public function mask6($x, $y) { return ((($x*$y)&1)+($x*$y)%3)&1; }
- public function mask7($x, $y) { return ((($x*$y)%3)+(($x+$y)&1))&1; }
-
- //----------------------------------------------------------------------
- private function generateMaskNo($maskNo, $width, $frame)
- {
- $bitMask = array_fill(0, $width, array_fill(0, $width, 0));
-
- for($y=0; $y<$width; $y++) {
- for($x=0; $x<$width; $x++) {
- if(ord($frame[$y][$x]) & 0x80) {
- $bitMask[$y][$x] = 0;
- } else {
- $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y);
- $bitMask[$y][$x] = ($maskFunc == 0)?1:0;
- }
-
- }
- }
-
- return $bitMask;
- }
-
- //----------------------------------------------------------------------
- public static function serial($bitFrame)
- {
- $codeArr = array();
-
- foreach ($bitFrame as $line)
- $codeArr[] = join('', $line);
-
- return gzcompress(join("\n", $codeArr), 9);
- }
-
- //----------------------------------------------------------------------
- public static function unserial($code)
- {
- $codeArr = array();
-
- $codeLines = explode("\n", gzuncompress($code));
- foreach ($codeLines as $line)
- $codeArr[] = str_split($line);
-
- return $codeArr;
- }
-
- //----------------------------------------------------------------------
- public function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly = false)
- {
- $b = 0;
- $bitMask = array();
-
- $fileName = QR_CACHE_DIR.'mask_'.$maskNo.DIRECTORY_SEPARATOR.'mask_'.$width.'_'.$maskNo.'.dat';
-
- if (QR_CACHEABLE) {
- if (file_exists($fileName)) {
- $bitMask = self::unserial(file_get_contents($fileName));
- } else {
- $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d);
- if (!file_exists(QR_CACHE_DIR.'mask_'.$maskNo))
- mkdir(QR_CACHE_DIR.'mask_'.$maskNo);
- file_put_contents($fileName, self::serial($bitMask));
- }
- } else {
- $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d);
- }
-
- if ($maskGenOnly)
- return;
-
- $d = $s;
-
- for($y=0; $y<$width; $y++) {
- for($x=0; $x<$width; $x++) {
- if($bitMask[$y][$x] == 1) {
- $d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]);
- }
- $b += (int)(ord($d[$y][$x]) & 1);
- }
- }
-
- return $b;
- }
-
- //----------------------------------------------------------------------
- public function makeMask($width, $frame, $maskNo, $level)
- {
- $masked = array_fill(0, $width, str_repeat("\0", $width));
- $this->makeMaskNo($maskNo, $width, $frame, $masked);
- $this->writeFormatInformation($width, $masked, $maskNo, $level);
-
- return $masked;
- }
-
- //----------------------------------------------------------------------
- public function calcN1N3($length)
- {
- $demerit = 0;
-
- for($i=0; $i<$length; $i++) {
-
- if($this->runLength[$i] >= 5) {
- $demerit += (N1 + ($this->runLength[$i] - 5));
- }
- if($i & 1) {
- if(($i >= 3) && ($i < ($length-2)) && ($this->runLength[$i] % 3 == 0)) {
- $fact = (int)($this->runLength[$i] / 3);
- if(($this->runLength[$i-2] == $fact) &&
- ($this->runLength[$i-1] == $fact) &&
- ($this->runLength[$i+1] == $fact) &&
- ($this->runLength[$i+2] == $fact)) {
- if(($this->runLength[$i-3] < 0) || ($this->runLength[$i-3] >= (4 * $fact))) {
- $demerit += N3;
- } else if((($i+3) >= $length) || ($this->runLength[$i+3] >= (4 * $fact))) {
- $demerit += N3;
- }
- }
- }
- }
- }
- return $demerit;
- }
-
- //----------------------------------------------------------------------
- public function evaluateSymbol($width, $frame)
- {
- $head = 0;
- $demerit = 0;
-
- for($y=0; $y<$width; $y++) {
- $head = 0;
- $this->runLength[0] = 1;
-
- $frameY = $frame[$y];
-
- if ($y>0)
- $frameYM = $frame[$y-1];
-
- for($x=0; $x<$width; $x++) {
- if(($x > 0) && ($y > 0)) {
- $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]);
- $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]);
-
- if(($b22 | ($w22 ^ 1))&1) {
- $demerit += N2;
- }
- }
- if(($x == 0) && (ord($frameY[$x]) & 1)) {
- $this->runLength[0] = -1;
- $head = 1;
- $this->runLength[$head] = 1;
- } else if($x > 0) {
- if((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) {
- $head++;
- $this->runLength[$head] = 1;
- } else {
- $this->runLength[$head]++;
- }
- }
- }
-
- $demerit += $this->calcN1N3($head+1);
- }
-
- for($x=0; $x<$width; $x++) {
- $head = 0;
- $this->runLength[0] = 1;
-
- for($y=0; $y<$width; $y++) {
- if($y == 0 && (ord($frame[$y][$x]) & 1)) {
- $this->runLength[0] = -1;
- $head = 1;
- $this->runLength[$head] = 1;
- } else if($y > 0) {
- if((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) {
- $head++;
- $this->runLength[$head] = 1;
- } else {
- $this->runLength[$head]++;
- }
- }
- }
-
- $demerit += $this->calcN1N3($head+1);
- }
-
- return $demerit;
- }
-
-
- //----------------------------------------------------------------------
- public function mask($width, $frame, $level)
- {
- $minDemerit = PHP_INT_MAX;
- $bestMaskNum = 0;
- $bestMask = array();
-
- $checked_masks = array(0,1,2,3,4,5,6,7);
-
- if (QR_FIND_FROM_RANDOM !== false) {
-
- $howManuOut = 8-(QR_FIND_FROM_RANDOM % 9);
- for ($i = 0; $i < $howManuOut; $i++) {
- $remPos = rand (0, count($checked_masks)-1);
- unset($checked_masks[$remPos]);
- $checked_masks = array_values($checked_masks);
- }
-
- }
-
- $bestMask = $frame;
-
- foreach($checked_masks as $i) {
- $mask = array_fill(0, $width, str_repeat("\0", $width));
-
- $demerit = 0;
- $blacks = 0;
- $blacks = $this->makeMaskNo($i, $width, $frame, $mask);
- $blacks += $this->writeFormatInformation($width, $mask, $i, $level);
- $blacks = (int)(100 * $blacks / ($width * $width));
- $demerit = (int)((int)(abs($blacks - 50) / 5) * N4);
- $demerit += $this->evaluateSymbol($width, $mask);
-
- if($demerit < $minDemerit) {
- $minDemerit = $demerit;
- $bestMask = $mask;
- $bestMaskNum = $i;
- }
- }
-
- return $bestMask;
- }
-
- //----------------------------------------------------------------------
- }
diff --git a/library/phpqrcode/qrrscode.php b/library/phpqrcode/qrrscode.php
deleted file mode 100644
index 591129a32..000000000
--- a/library/phpqrcode/qrrscode.php
+++ /dev/null
@@ -1,210 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Reed-Solomon error correction support
- *
- * Copyright (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q
- * (libfec is released under the GNU Lesser General Public License.)
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRrsItem {
-
- public $mm; // Bits per symbol
- public $nn; // Symbols per block (= (1<<mm)-1)
- public $alpha_to = array(); // log lookup table
- public $index_of = array(); // Antilog lookup table
- public $genpoly = array(); // Generator polynomial
- public $nroots; // Number of generator roots = number of parity symbols
- public $fcr; // First consecutive root, index form
- public $prim; // Primitive element, index form
- public $iprim; // prim-th root of 1, index form
- public $pad; // Padding bytes in shortened block
- public $gfpoly;
-
- //----------------------------------------------------------------------
- public function modnn($x)
- {
- while ($x >= $this->nn) {
- $x -= $this->nn;
- $x = ($x >> $this->mm) + ($x & $this->nn);
- }
-
- return $x;
- }
-
- //----------------------------------------------------------------------
- public static function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad)
- {
- // Common code for intializing a Reed-Solomon control block (char or int symbols)
- // Copyright 2004 Phil Karn, KA9Q
- // May be used under the terms of the GNU Lesser General Public License (LGPL)
-
- $rs = null;
-
- // Check parameter ranges
- if($symsize < 0 || $symsize > 8) return $rs;
- if($fcr < 0 || $fcr >= (1<<$symsize)) return $rs;
- if($prim <= 0 || $prim >= (1<<$symsize)) return $rs;
- if($nroots < 0 || $nroots >= (1<<$symsize)) return $rs; // Can't have more roots than symbol values!
- if($pad < 0 || $pad >= ((1<<$symsize) -1 - $nroots)) return $rs; // Too much padding
-
- $rs = new QRrsItem();
- $rs->mm = $symsize;
- $rs->nn = (1<<$symsize)-1;
- $rs->pad = $pad;
-
- $rs->alpha_to = array_fill(0, $rs->nn+1, 0);
- $rs->index_of = array_fill(0, $rs->nn+1, 0);
-
- // PHP style macro replacement ;)
- $NN =& $rs->nn;
- $A0 =& $NN;
-
- // Generate Galois field lookup tables
- $rs->index_of[0] = $A0; // log(zero) = -inf
- $rs->alpha_to[$A0] = 0; // alpha**-inf = 0
- $sr = 1;
-
- for($i=0; $i<$rs->nn; $i++) {
- $rs->index_of[$sr] = $i;
- $rs->alpha_to[$i] = $sr;
- $sr <<= 1;
- if($sr & (1<<$symsize)) {
- $sr ^= $gfpoly;
- }
- $sr &= $rs->nn;
- }
-
- if($sr != 1){
- // field generator polynomial is not primitive!
- $rs = NULL;
- return $rs;
- }
-
- /* Form RS code generator polynomial from its roots */
- $rs->genpoly = array_fill(0, $nroots+1, 0);
-
- $rs->fcr = $fcr;
- $rs->prim = $prim;
- $rs->nroots = $nroots;
- $rs->gfpoly = $gfpoly;
-
- /* Find prim-th root of 1, used in decoding */
- for($iprim=1;($iprim % $prim) != 0;$iprim += $rs->nn)
- ; // intentional empty-body loop!
-
- $rs->iprim = (int)($iprim / $prim);
- $rs->genpoly[0] = 1;
-
- for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) {
- $rs->genpoly[$i+1] = 1;
-
- // Multiply rs->genpoly[] by @**(root + x)
- for ($j = $i; $j > 0; $j--) {
- if ($rs->genpoly[$j] != 0) {
- $rs->genpoly[$j] = $rs->genpoly[$j-1] ^ $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[$j]] + $root)];
- } else {
- $rs->genpoly[$j] = $rs->genpoly[$j-1];
- }
- }
- // rs->genpoly[0] can never be zero
- $rs->genpoly[0] = $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[0]] + $root)];
- }
-
- // convert rs->genpoly[] to index form for quicker encoding
- for ($i = 0; $i <= $nroots; $i++)
- $rs->genpoly[$i] = $rs->index_of[$rs->genpoly[$i]];
-
- return $rs;
- }
-
- //----------------------------------------------------------------------
- public function encode_rs_char($data, &$parity)
- {
- $MM =& $this->mm;
- $NN =& $this->nn;
- $ALPHA_TO =& $this->alpha_to;
- $INDEX_OF =& $this->index_of;
- $GENPOLY =& $this->genpoly;
- $NROOTS =& $this->nroots;
- $FCR =& $this->fcr;
- $PRIM =& $this->prim;
- $IPRIM =& $this->iprim;
- $PAD =& $this->pad;
- $A0 =& $NN;
-
- $parity = array_fill(0, $NROOTS, 0);
-
- for($i=0; $i< ($NN-$NROOTS-$PAD); $i++) {
-
- $feedback = $INDEX_OF[$data[$i] ^ $parity[0]];
- if($feedback != $A0) {
- // feedback term is non-zero
-
- // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
- // always be for the polynomials constructed by init_rs()
- $feedback = $this->modnn($NN - $GENPOLY[$NROOTS] + $feedback);
-
- for($j=1;$j<$NROOTS;$j++) {
- $parity[$j] ^= $ALPHA_TO[$this->modnn($feedback + $GENPOLY[$NROOTS-$j])];
- }
- }
-
- // Shift
- array_shift($parity);
- if($feedback != $A0) {
- array_push($parity, $ALPHA_TO[$this->modnn($feedback + $GENPOLY[0])]);
- } else {
- array_push($parity, 0);
- }
- }
- }
- }
-
- //##########################################################################
-
- class QRrs {
-
- public static $items = array();
-
- //----------------------------------------------------------------------
- public static function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad)
- {
- foreach(self::$items as $rs) {
- if($rs->pad != $pad) continue;
- if($rs->nroots != $nroots) continue;
- if($rs->mm != $symsize) continue;
- if($rs->gfpoly != $gfpoly) continue;
- if($rs->fcr != $fcr) continue;
- if($rs->prim != $prim) continue;
-
- return $rs;
- }
-
- $rs = QRrsItem::init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad);
- array_unshift(self::$items, $rs);
-
- return $rs;
- }
- } \ No newline at end of file
diff --git a/library/phpqrcode/qrspec.php b/library/phpqrcode/qrspec.php
deleted file mode 100644
index 92aea0c78..000000000
--- a/library/phpqrcode/qrspec.php
+++ /dev/null
@@ -1,592 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * QR Code specifications
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * The following data / specifications are taken from
- * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004)
- * or
- * "Automatic identification and data capture techniques --
- * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- define('QRSPEC_VERSION_MAX', 40);
- define('QRSPEC_WIDTH_MAX', 177);
-
- define('QRCAP_WIDTH', 0);
- define('QRCAP_WORDS', 1);
- define('QRCAP_REMINDER', 2);
- define('QRCAP_EC', 3);
-
- class QRspec {
-
- public static $capacity = array(
- array( 0, 0, 0, array( 0, 0, 0, 0)),
- array( 21, 26, 0, array( 7, 10, 13, 17)), // 1
- array( 25, 44, 7, array( 10, 16, 22, 28)),
- array( 29, 70, 7, array( 15, 26, 36, 44)),
- array( 33, 100, 7, array( 20, 36, 52, 64)),
- array( 37, 134, 7, array( 26, 48, 72, 88)), // 5
- array( 41, 172, 7, array( 36, 64, 96, 112)),
- array( 45, 196, 0, array( 40, 72, 108, 130)),
- array( 49, 242, 0, array( 48, 88, 132, 156)),
- array( 53, 292, 0, array( 60, 110, 160, 192)),
- array( 57, 346, 0, array( 72, 130, 192, 224)), //10
- array( 61, 404, 0, array( 80, 150, 224, 264)),
- array( 65, 466, 0, array( 96, 176, 260, 308)),
- array( 69, 532, 0, array( 104, 198, 288, 352)),
- array( 73, 581, 3, array( 120, 216, 320, 384)),
- array( 77, 655, 3, array( 132, 240, 360, 432)), //15
- array( 81, 733, 3, array( 144, 280, 408, 480)),
- array( 85, 815, 3, array( 168, 308, 448, 532)),
- array( 89, 901, 3, array( 180, 338, 504, 588)),
- array( 93, 991, 3, array( 196, 364, 546, 650)),
- array( 97, 1085, 3, array( 224, 416, 600, 700)), //20
- array(101, 1156, 4, array( 224, 442, 644, 750)),
- array(105, 1258, 4, array( 252, 476, 690, 816)),
- array(109, 1364, 4, array( 270, 504, 750, 900)),
- array(113, 1474, 4, array( 300, 560, 810, 960)),
- array(117, 1588, 4, array( 312, 588, 870, 1050)), //25
- array(121, 1706, 4, array( 336, 644, 952, 1110)),
- array(125, 1828, 4, array( 360, 700, 1020, 1200)),
- array(129, 1921, 3, array( 390, 728, 1050, 1260)),
- array(133, 2051, 3, array( 420, 784, 1140, 1350)),
- array(137, 2185, 3, array( 450, 812, 1200, 1440)), //30
- array(141, 2323, 3, array( 480, 868, 1290, 1530)),
- array(145, 2465, 3, array( 510, 924, 1350, 1620)),
- array(149, 2611, 3, array( 540, 980, 1440, 1710)),
- array(153, 2761, 3, array( 570, 1036, 1530, 1800)),
- array(157, 2876, 0, array( 570, 1064, 1590, 1890)), //35
- array(161, 3034, 0, array( 600, 1120, 1680, 1980)),
- array(165, 3196, 0, array( 630, 1204, 1770, 2100)),
- array(169, 3362, 0, array( 660, 1260, 1860, 2220)),
- array(173, 3532, 0, array( 720, 1316, 1950, 2310)),
- array(177, 3706, 0, array( 750, 1372, 2040, 2430)) //40
- );
-
- //----------------------------------------------------------------------
- public static function getDataLength($version, $level)
- {
- return self::$capacity[$version][QRCAP_WORDS] - self::$capacity[$version][QRCAP_EC][$level];
- }
-
- //----------------------------------------------------------------------
- public static function getECCLength($version, $level)
- {
- return self::$capacity[$version][QRCAP_EC][$level];
- }
-
- //----------------------------------------------------------------------
- public static function getWidth($version)
- {
- return self::$capacity[$version][QRCAP_WIDTH];
- }
-
- //----------------------------------------------------------------------
- public static function getRemainder($version)
- {
- return self::$capacity[$version][QRCAP_REMINDER];
- }
-
- //----------------------------------------------------------------------
- public static function getMinimumVersion($size, $level)
- {
-
- for($i=1; $i<= QRSPEC_VERSION_MAX; $i++) {
- $words = self::$capacity[$i][QRCAP_WORDS] - self::$capacity[$i][QRCAP_EC][$level];
- if($words >= $size)
- return $i;
- }
-
- return -1;
- }
-
- //######################################################################
-
- public static $lengthTableBits = array(
- array(10, 12, 14),
- array( 9, 11, 13),
- array( 8, 16, 16),
- array( 8, 10, 12)
- );
-
- //----------------------------------------------------------------------
- public static function lengthIndicator($mode, $version)
- {
- if ($mode == QR_MODE_STRUCTURE)
- return 0;
-
- if ($version <= 9) {
- $l = 0;
- } else if ($version <= 26) {
- $l = 1;
- } else {
- $l = 2;
- }
-
- return self::$lengthTableBits[$mode][$l];
- }
-
- //----------------------------------------------------------------------
- public static function maximumWords($mode, $version)
- {
- if($mode == QR_MODE_STRUCTURE)
- return 3;
-
- if($version <= 9) {
- $l = 0;
- } else if($version <= 26) {
- $l = 1;
- } else {
- $l = 2;
- }
-
- $bits = self::$lengthTableBits[$mode][$l];
- $words = (1 << $bits) - 1;
-
- if($mode == QR_MODE_KANJI) {
- $words *= 2; // the number of bytes is required
- }
-
- return $words;
- }
-
- // Error correction code -----------------------------------------------
- // Table of the error correction code (Reed-Solomon block)
- // See Table 12-16 (pp.30-36), JIS X0510:2004.
-
- public static $eccTable = array(
- array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)),
- array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1
- array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)),
- array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)),
- array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)),
- array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5
- array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)),
- array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)),
- array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)),
- array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)),
- array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), //10
- array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)),
- array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)),
- array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)),
- array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)),
- array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), //15
- array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)),
- array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)),
- array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)),
- array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)),
- array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), //20
- array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)),
- array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)),
- array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)),
- array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)),
- array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), //25
- array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)),
- array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)),
- array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)),
- array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)),
- array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), //30
- array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)),
- array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)),
- array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)),
- array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)),
- array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), //35
- array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)),
- array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)),
- array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)),
- array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)),
- array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)),//40
- );
-
- //----------------------------------------------------------------------
- // CACHEABLE!!!
-
- public static function getEccSpec($version, $level, array &$spec)
- {
- if (count($spec) < 5) {
- $spec = array(0,0,0,0,0);
- }
-
- $b1 = self::$eccTable[$version][$level][0];
- $b2 = self::$eccTable[$version][$level][1];
- $data = self::getDataLength($version, $level);
- $ecc = self::getECCLength($version, $level);
-
- if($b2 == 0) {
- $spec[0] = $b1;
- $spec[1] = (int)($data / $b1);
- $spec[2] = (int)($ecc / $b1);
- $spec[3] = 0;
- $spec[4] = 0;
- } else {
- $spec[0] = $b1;
- $spec[1] = (int)($data / ($b1 + $b2));
- $spec[2] = (int)($ecc / ($b1 + $b2));
- $spec[3] = $b2;
- $spec[4] = $spec[1] + 1;
- }
- }
-
- // Alignment pattern ---------------------------------------------------
-
- // Positions of alignment patterns.
- // This array includes only the second and the third position of the
- // alignment patterns. Rest of them can be calculated from the distance
- // between them.
-
- // See Table 1 in Appendix E (pp.71) of JIS X0510:2004.
-
- public static $alignmentPattern = array(
- array( 0, 0),
- array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5
- array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10
- array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), //11-15
- array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), //16-20
- array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), //21-25
- array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), //26-30
- array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), //31-35
- array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58), //35-40
- );
-
-
- /** --------------------------------------------------------------------
- * Put an alignment marker.
- * @param frame
- * @param width
- * @param ox,oy center coordinate of the pattern
- */
- public static function putAlignmentMarker(array &$frame, $ox, $oy)
- {
- $finder = array(
- "\xa1\xa1\xa1\xa1\xa1",
- "\xa1\xa0\xa0\xa0\xa1",
- "\xa1\xa0\xa1\xa0\xa1",
- "\xa1\xa0\xa0\xa0\xa1",
- "\xa1\xa1\xa1\xa1\xa1"
- );
-
- $yStart = $oy-2;
- $xStart = $ox-2;
-
- for($y=0; $y<5; $y++) {
- QRstr::set($frame, $xStart, $yStart+$y, $finder[$y]);
- }
- }
-
- //----------------------------------------------------------------------
- public static function putAlignmentPattern($version, &$frame, $width)
- {
- if($version < 2)
- return;
-
- $d = self::$alignmentPattern[$version][1] - self::$alignmentPattern[$version][0];
- if($d < 0) {
- $w = 2;
- } else {
- $w = (int)(($width - self::$alignmentPattern[$version][0]) / $d + 2);
- }
-
- if($w * $w - 3 == 1) {
- $x = self::$alignmentPattern[$version][0];
- $y = self::$alignmentPattern[$version][0];
- self::putAlignmentMarker($frame, $x, $y);
- return;
- }
-
- $cx = self::$alignmentPattern[$version][0];
- for($x=1; $x<$w - 1; $x++) {
- self::putAlignmentMarker($frame, 6, $cx);
- self::putAlignmentMarker($frame, $cx, 6);
- $cx += $d;
- }
-
- $cy = self::$alignmentPattern[$version][0];
- for($y=0; $y<$w-1; $y++) {
- $cx = self::$alignmentPattern[$version][0];
- for($x=0; $x<$w-1; $x++) {
- self::putAlignmentMarker($frame, $cx, $cy);
- $cx += $d;
- }
- $cy += $d;
- }
- }
-
- // Version information pattern -----------------------------------------
-
- // Version information pattern (BCH coded).
- // See Table 1 in Appendix D (pp.68) of JIS X0510:2004.
-
- // size: [QRSPEC_VERSION_MAX - 6]
-
- public static $versionPattern = array(
- 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d,
- 0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9,
- 0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75,
- 0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64,
- 0x27541, 0x28c69
- );
-
- //----------------------------------------------------------------------
- public static function getVersionPattern($version)
- {
- if($version < 7 || $version > QRSPEC_VERSION_MAX)
- return 0;
-
- return self::$versionPattern[$version -7];
- }
-
- // Format information --------------------------------------------------
- // See calcFormatInfo in tests/test_qrspec.c (orginal qrencode c lib)
-
- public static $formatInfo = array(
- array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976),
- array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0),
- array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed),
- array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b)
- );
-
- public static function getFormatInfo($mask, $level)
- {
- if($mask < 0 || $mask > 7)
- return 0;
-
- if($level < 0 || $level > 3)
- return 0;
-
- return self::$formatInfo[$level][$mask];
- }
-
- // Frame ---------------------------------------------------------------
- // Cache of initial frames.
-
- public static $frames = array();
-
- /** --------------------------------------------------------------------
- * Put a finder pattern.
- * @param frame
- * @param width
- * @param ox,oy upper-left coordinate of the pattern
- */
- public static function putFinderPattern(&$frame, $ox, $oy)
- {
- $finder = array(
- "\xc1\xc1\xc1\xc1\xc1\xc1\xc1",
- "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
- "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
- "\xc1\xc1\xc1\xc1\xc1\xc1\xc1"
- );
-
- for($y=0; $y<7; $y++) {
- QRstr::set($frame, $ox, $oy+$y, $finder[$y]);
- }
- }
-
- //----------------------------------------------------------------------
- public static function createFrame($version)
- {
- $width = self::$capacity[$version][QRCAP_WIDTH];
- $frameLine = str_repeat ("\0", $width);
- $frame = array_fill(0, $width, $frameLine);
-
- // Finder pattern
- self::putFinderPattern($frame, 0, 0);
- self::putFinderPattern($frame, $width - 7, 0);
- self::putFinderPattern($frame, 0, $width - 7);
-
- // Separator
- $yOffset = $width - 7;
-
- for($y=0; $y<7; $y++) {
- $frame[$y][7] = "\xc0";
- $frame[$y][$width - 8] = "\xc0";
- $frame[$yOffset][7] = "\xc0";
- $yOffset++;
- }
-
- $setPattern = str_repeat("\xc0", 8);
-
- QRstr::set($frame, 0, 7, $setPattern);
- QRstr::set($frame, $width-8, 7, $setPattern);
- QRstr::set($frame, 0, $width - 8, $setPattern);
-
- // Format info
- $setPattern = str_repeat("\x84", 9);
- QRstr::set($frame, 0, 8, $setPattern);
- QRstr::set($frame, $width - 8, 8, $setPattern, 8);
-
- $yOffset = $width - 8;
-
- for($y=0; $y<8; $y++,$yOffset++) {
- $frame[$y][8] = "\x84";
- $frame[$yOffset][8] = "\x84";
- }
-
- // Timing pattern
-
- for($i=1; $i<$width-15; $i++) {
- $frame[6][7+$i] = chr(0x90 | ($i & 1));
- $frame[7+$i][6] = chr(0x90 | ($i & 1));
- }
-
- // Alignment pattern
- self::putAlignmentPattern($version, $frame, $width);
-
- // Version information
- if($version >= 7) {
- $vinf = self::getVersionPattern($version);
-
- $v = $vinf;
-
- for($x=0; $x<6; $x++) {
- for($y=0; $y<3; $y++) {
- $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1));
- $v = $v >> 1;
- }
- }
-
- $v = $vinf;
- for($y=0; $y<6; $y++) {
- for($x=0; $x<3; $x++) {
- $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1));
- $v = $v >> 1;
- }
- }
- }
-
- // and a little bit...
- $frame[$width - 8][8] = "\x81";
-
- return $frame;
- }
-
- //----------------------------------------------------------------------
- public static function debug($frame, $binary_mode = false)
- {
- if ($binary_mode) {
-
- foreach ($frame as &$frameLine) {
- $frameLine = join('<span class="m">&nbsp;&nbsp;</span>', explode('0', $frameLine));
- $frameLine = join('&#9608;&#9608;', explode('1', $frameLine));
- }
-
- ?>
- <style>
- .m { background-color: white; }
- </style>
- <?php
- echo '<pre><tt><br/ ><br/ ><br/ >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
- echo join("<br/ >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", $frame);
- echo '</tt></pre><br/ ><br/ ><br/ ><br/ ><br/ ><br/ >';
-
- } else {
-
- foreach ($frame as &$frameLine) {
- $frameLine = join('<span class="m">&nbsp;</span>', explode("\xc0", $frameLine));
- $frameLine = join('<span class="m">&#9618;</span>', explode("\xc1", $frameLine));
- $frameLine = join('<span class="p">&nbsp;</span>', explode("\xa0", $frameLine));
- $frameLine = join('<span class="p">&#9618;</span>', explode("\xa1", $frameLine));
- $frameLine = join('<span class="s">&#9671;</span>', explode("\x84", $frameLine)); //format 0
- $frameLine = join('<span class="s">&#9670;</span>', explode("\x85", $frameLine)); //format 1
- $frameLine = join('<span class="x">&#9762;</span>', explode("\x81", $frameLine)); //special bit
- $frameLine = join('<span class="c">&nbsp;</span>', explode("\x90", $frameLine)); //clock 0
- $frameLine = join('<span class="c">&#9719;</span>', explode("\x91", $frameLine)); //clock 1
- $frameLine = join('<span class="f">&nbsp;</span>', explode("\x88", $frameLine)); //version
- $frameLine = join('<span class="f">&#9618;</span>', explode("\x89", $frameLine)); //version
- $frameLine = join('&#9830;', explode("\x01", $frameLine));
- $frameLine = join('&#8901;', explode("\0", $frameLine));
- }
-
- ?>
- <style>
- .p { background-color: yellow; }
- .m { background-color: #00FF00; }
- .s { background-color: #FF0000; }
- .c { background-color: aqua; }
- .x { background-color: pink; }
- .f { background-color: gold; }
- </style>
- <?php
- echo "<pre><tt>";
- echo join("<br/ >", $frame);
- echo "</tt></pre>";
-
- }
- }
-
- //----------------------------------------------------------------------
- public static function serial($frame)
- {
- return gzcompress(join("\n", $frame), 9);
- }
-
- //----------------------------------------------------------------------
- public static function unserial($code)
- {
- return explode("\n", gzuncompress($code));
- }
-
- //----------------------------------------------------------------------
- public static function newFrame($version)
- {
- if($version < 1 || $version > QRSPEC_VERSION_MAX)
- return null;
-
- if(!isset(self::$frames[$version])) {
-
- $fileName = QR_CACHE_DIR.'frame_'.$version.'.dat';
-
- if (QR_CACHEABLE) {
- if (file_exists($fileName)) {
- self::$frames[$version] = self::unserial(file_get_contents($fileName));
- } else {
- self::$frames[$version] = self::createFrame($version);
- file_put_contents($fileName, self::serial(self::$frames[$version]));
- }
- } else {
- self::$frames[$version] = self::createFrame($version);
- }
- }
-
- if(is_null(self::$frames[$version]))
- return null;
-
- return self::$frames[$version];
- }
-
- //----------------------------------------------------------------------
- public static function rsBlockNum($spec) { return $spec[0] + $spec[3]; }
- public static function rsBlockNum1($spec) { return $spec[0]; }
- public static function rsDataCodes1($spec) { return $spec[1]; }
- public static function rsEccCodes1($spec) { return $spec[2]; }
- public static function rsBlockNum2($spec) { return $spec[3]; }
- public static function rsDataCodes2($spec) { return $spec[4]; }
- public static function rsEccCodes2($spec) { return $spec[2]; }
- public static function rsDataLength($spec) { return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); }
- public static function rsEccLength($spec) { return ($spec[0] + $spec[3]) * $spec[2]; }
-
- } \ No newline at end of file
diff --git a/library/phpqrcode/qrsplit.php b/library/phpqrcode/qrsplit.php
deleted file mode 100644
index d75b82737..000000000
--- a/library/phpqrcode/qrsplit.php
+++ /dev/null
@@ -1,311 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Input splitting classes
- *
- * Based on libqrencode C library distributed under LGPL 2.1
- * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <fukuchi@megaui.net>
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * The following data / specifications are taken from
- * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004)
- * or
- * "Automatic identification and data capture techniques --
- * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
- class QRsplit {
-
- public $dataStr = '';
- public $input;
- public $modeHint;
-
- //----------------------------------------------------------------------
- public function __construct($dataStr, $input, $modeHint)
- {
- $this->dataStr = $dataStr;
- $this->input = $input;
- $this->modeHint = $modeHint;
- }
-
- //----------------------------------------------------------------------
- public static function isdigitat($str, $pos)
- {
- if ($pos >= strlen($str))
- return false;
-
- return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
- }
-
- //----------------------------------------------------------------------
- public static function isalnumat($str, $pos)
- {
- if ($pos >= strlen($str))
- return false;
-
- return (QRinput::lookAnTable(ord($str[$pos])) >= 0);
- }
-
- //----------------------------------------------------------------------
- public function identifyMode($pos)
- {
- if ($pos >= strlen($this->dataStr))
- return QR_MODE_NUL;
-
- $c = $this->dataStr[$pos];
-
- if(self::isdigitat($this->dataStr, $pos)) {
- return QR_MODE_NUM;
- } else if(self::isalnumat($this->dataStr, $pos)) {
- return QR_MODE_AN;
- } else if($this->modeHint == QR_MODE_KANJI) {
-
- if ($pos+1 < strlen($this->dataStr))
- {
- $d = $this->dataStr[$pos+1];
- $word = (ord($c) << 8) | ord($d);
- if(($word >= 0x8140 && $word <= 0x9ffc) || ($word >= 0xe040 && $word <= 0xebbf)) {
- return QR_MODE_KANJI;
- }
- }
- }
-
- return QR_MODE_8;
- }
-
- //----------------------------------------------------------------------
- public function eatNum()
- {
- $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
-
- $p = 0;
- while(self::isdigitat($this->dataStr, $p)) {
- $p++;
- }
-
- $run = $p;
- $mode = $this->identifyMode($p);
-
- if($mode == QR_MODE_8) {
- $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln
- + QRinput::estimateBitsMode8(1) // + 4 + l8
- - QRinput::estimateBitsMode8($run + 1); // - 4 - l8
- if($dif > 0) {
- return $this->eat8();
- }
- }
- if($mode == QR_MODE_AN) {
- $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln
- + QRinput::estimateBitsModeAn(1) // + 4 + la
- - QRinput::estimateBitsModeAn($run + 1);// - 4 - la
- if($dif > 0) {
- return $this->eatAn();
- }
- }
-
- $ret = $this->input->append(QR_MODE_NUM, $run, str_split($this->dataStr));
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function eatAn()
- {
- $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion());
- $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
-
- $p = 0;
-
- while(self::isalnumat($this->dataStr, $p)) {
- if(self::isdigitat($this->dataStr, $p)) {
- $q = $p;
- while(self::isdigitat($this->dataStr, $q)) {
- $q++;
- }
-
- $dif = QRinput::estimateBitsModeAn($p) // + 4 + la
- + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln
- - QRinput::estimateBitsModeAn($q); // - 4 - la
-
- if($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else {
- $p++;
- }
- }
-
- $run = $p;
-
- if(!self::isalnumat($this->dataStr, $p)) {
- $dif = QRinput::estimateBitsModeAn($run) + 4 + $la
- + QRinput::estimateBitsMode8(1) // + 4 + l8
- - QRinput::estimateBitsMode8($run + 1); // - 4 - l8
- if($dif > 0) {
- return $this->eat8();
- }
- }
-
- $ret = $this->input->append(QR_MODE_AN, $run, str_split($this->dataStr));
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function eatKanji()
- {
- $p = 0;
-
- while($this->identifyMode($p) == QR_MODE_KANJI) {
- $p += 2;
- }
-
- $ret = $this->input->append(QR_MODE_KANJI, $p, str_split($this->dataStr));
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function eat8()
- {
- $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion());
- $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
-
- $p = 1;
- $dataStrLen = strlen($this->dataStr);
-
- while($p < $dataStrLen) {
-
- $mode = $this->identifyMode($p);
- if($mode == QR_MODE_KANJI) {
- break;
- }
- if($mode == QR_MODE_NUM) {
- $q = $p;
- while(self::isdigitat($this->dataStr, $q)) {
- $q++;
- }
- $dif = QRinput::estimateBitsMode8($p) // + 4 + l8
- + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln
- - QRinput::estimateBitsMode8($q); // - 4 - l8
- if($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else if($mode == QR_MODE_AN) {
- $q = $p;
- while(self::isalnumat($this->dataStr, $q)) {
- $q++;
- }
- $dif = QRinput::estimateBitsMode8($p) // + 4 + l8
- + QRinput::estimateBitsModeAn($q - $p) + 4 + $la
- - QRinput::estimateBitsMode8($q); // - 4 - l8
- if($dif < 0) {
- break;
- } else {
- $p = $q;
- }
- } else {
- $p++;
- }
- }
-
- $run = $p;
- $ret = $this->input->append(QR_MODE_8, $run, str_split($this->dataStr));
-
- if($ret < 0)
- return -1;
-
- return $run;
- }
-
- //----------------------------------------------------------------------
- public function splitString()
- {
- while (strlen($this->dataStr) > 0)
- {
- if($this->dataStr == '')
- return 0;
-
- $mode = $this->identifyMode(0);
-
- switch ($mode) {
- case QR_MODE_NUM: $length = $this->eatNum(); break;
- case QR_MODE_AN: $length = $this->eatAn(); break;
- case QR_MODE_KANJI:
- if ($hint == QR_MODE_KANJI)
- $length = $this->eatKanji();
- else $length = $this->eat8();
- break;
- default: $length = $this->eat8(); break;
-
- }
-
- if($length == 0) return 0;
- if($length < 0) return -1;
-
- $this->dataStr = substr($this->dataStr, $length);
- }
- }
-
- //----------------------------------------------------------------------
- public function toUpper()
- {
- $stringLen = strlen($this->dataStr);
- $p = 0;
-
- while ($p<$stringLen) {
- $mode = self::identifyMode(substr($this->dataStr, $p), $this->modeHint);
- if($mode == QR_MODE_KANJI) {
- $p += 2;
- } else {
- if (ord($this->dataStr[$p]) >= ord('a') && ord($this->dataStr[$p]) <= ord('z')) {
- $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32);
- }
- $p++;
- }
- }
-
- return $this->dataStr;
- }
-
- //----------------------------------------------------------------------
- public static function splitStringToQRinput($string, QRinput $input, $modeHint, $casesensitive = true)
- {
- if(is_null($string) || $string == '\0' || $string == '') {
- throw new Exception('empty string!!!');
- }
-
- $split = new QRsplit($string, $input, $modeHint);
-
- if(!$casesensitive)
- $split->toUpper();
-
- return $split->splitString();
- }
- } \ No newline at end of file
diff --git a/library/phpqrcode/qrtools.php b/library/phpqrcode/qrtools.php
deleted file mode 100644
index 3012db493..000000000
--- a/library/phpqrcode/qrtools.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Toolset, handy and debug utilites.
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- class QRtools {
-
- //----------------------------------------------------------------------
- public static function binarize($frame)
- {
- $len = count($frame);
- foreach ($frame as &$frameLine) {
-
- for($i=0; $i<$len; $i++) {
- $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0';
- }
- }
-
- return $frame;
- }
-
- //----------------------------------------------------------------------
- public static function tcpdfBarcodeArray($code, $mode = 'QR,L', $tcPdfVersion = '4.5.037')
- {
- $barcode_array = array();
-
- if (!is_array($mode))
- $mode = explode(',', $mode);
-
- $eccLevel = 'L';
-
- if (count($mode) > 1) {
- $eccLevel = $mode[1];
- }
-
- $qrTab = QRcode::text($code, false, $eccLevel);
- $size = count($qrTab);
-
- $barcode_array['num_rows'] = $size;
- $barcode_array['num_cols'] = $size;
- $barcode_array['bcode'] = array();
-
- foreach ($qrTab as $line) {
- $arrAdd = array();
- foreach(str_split($line) as $char)
- $arrAdd[] = ($char=='1')?1:0;
- $barcode_array['bcode'][] = $arrAdd;
- }
-
- return $barcode_array;
- }
-
- //----------------------------------------------------------------------
- public static function clearCache()
- {
- self::$frames = array();
- }
-
- //----------------------------------------------------------------------
- public static function buildCache()
- {
- QRtools::markTime('before_build_cache');
-
- $mask = new QRmask();
- for ($a=1; $a <= QRSPEC_VERSION_MAX; $a++) {
- $frame = QRspec::newFrame($a);
- if (QR_IMAGE) {
- $fileName = QR_CACHE_DIR.'frame_'.$a.'.png';
- QRimage::png(self::binarize($frame), $fileName, 1, 0);
- }
-
- $width = count($frame);
- $bitMask = array_fill(0, $width, array_fill(0, $width, 0));
- for ($maskNo=0; $maskNo<8; $maskNo++)
- $mask->makeMaskNo($maskNo, $width, $frame, $bitMask, true);
- }
-
- QRtools::markTime('after_build_cache');
- }
-
- //----------------------------------------------------------------------
- public static function log($outfile, $err)
- {
- if (QR_LOG_DIR !== false) {
- if ($err != '') {
- if ($outfile !== false) {
- file_put_contents(QR_LOG_DIR.basename($outfile).'-errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND);
- } else {
- file_put_contents(QR_LOG_DIR.'errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND);
- }
- }
- }
- }
-
- //----------------------------------------------------------------------
- public static function dumpMask($frame)
- {
- $width = count($frame);
- for($y=0;$y<$width;$y++) {
- for($x=0;$x<$width;$x++) {
- echo ord($frame[$y][$x]).',';
- }
- }
- }
-
- //----------------------------------------------------------------------
- public static function markTime($markerId)
- {
- list($usec, $sec) = explode(" ", microtime());
- $time = ((float)$usec + (float)$sec);
-
- if (!isset($GLOBALS['qr_time_bench']))
- $GLOBALS['qr_time_bench'] = array();
-
- $GLOBALS['qr_time_bench'][$markerId] = $time;
- }
-
- //----------------------------------------------------------------------
- public static function timeBenchmark()
- {
- self::markTime('finish');
-
- $lastTime = 0;
- $startTime = 0;
- $p = 0;
-
- echo '<table cellpadding="3" cellspacing="1">
- <thead><tr style="border-bottom:1px solid silver"><td colspan="2" style="text-align:center">BENCHMARK</td></tr></thead>
- <tbody>';
-
- foreach($GLOBALS['qr_time_bench'] as $markerId=>$thisTime) {
- if ($p > 0) {
- echo '<tr><th style="text-align:right">till '.$markerId.': </th><td>'.number_format($thisTime-$lastTime, 6).'s</td></tr>';
- } else {
- $startTime = $thisTime;
- }
-
- $p++;
- $lastTime = $thisTime;
- }
-
- echo '</tbody><tfoot>
- <tr style="border-top:2px solid black"><th style="text-align:right">TOTAL: </th><td>'.number_format($lastTime-$startTime, 6).'s</td></tr>
- </tfoot>
- </table>';
- }
-
- }
-
- //##########################################################################
-
- QRtools::markTime('start');
- \ No newline at end of file
diff --git a/library/phpqrcode/tools/merge.bat b/library/phpqrcode/tools/merge.bat
deleted file mode 100644
index b60a4853c..000000000
--- a/library/phpqrcode/tools/merge.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-php ./merge.php
-pause \ No newline at end of file
diff --git a/library/phpqrcode/tools/merge.php b/library/phpqrcode/tools/merge.php
deleted file mode 100644
index 19d338b34..000000000
--- a/library/phpqrcode/tools/merge.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-/*
- * PHP QR Code encoder
- *
- * Tool for merging all library files into one, simpler to incorporate.
- *
- * MAKE SURE THAT RESULTING PHPQRCode.php (and its dir) ARE WRITABLE!
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- $QR_BASEDIR = dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR;
- $QR_TOOLSDIR = dirname(__FILE__).DIRECTORY_SEPARATOR;
-
- $outputFile = $QR_BASEDIR.'phpqrcode.php';
-
- // Required libs
-
- $fileList = array(
- $QR_BASEDIR.'qrconst.php',
- $QR_TOOLSDIR.'merged_config.php',
- $QR_BASEDIR.'qrtools.php',
- $QR_BASEDIR.'qrspec.php',
- $QR_BASEDIR.'qrimage.php',
- $QR_BASEDIR.'qrinput.php',
- $QR_BASEDIR.'qrbitstream.php',
- $QR_BASEDIR.'qrsplit.php',
- $QR_BASEDIR.'qrrscode.php',
- $QR_BASEDIR.'qrmask.php',
- $QR_BASEDIR.'qrencode.php'
- );
-
- $headerFile = $QR_TOOLSDIR.'merged_header.php';
- $versionFile = $QR_BASEDIR.'VERSION';
-
- $outputCode = '';
-
- foreach($fileList as $fileName) {
- $outputCode .= "\n\n".'//---- '.basename($fileName).' -----------------------------'."\n\n";
- $anotherCode = file_get_contents($fileName);
- $anotherCode = preg_replace ('/^<\?php/', '', $anotherCode);
- $anotherCode = preg_replace ('/\?>\*$/', '', $anotherCode);
- $outputCode .= "\n\n".$anotherCode."\n\n";
- }
-
- $versionDataEx = explode("\n", file_get_contents($versionFile));
-
- $outputContents = file_get_contents($headerFile);
- $outputContents .= "\n\n/*\n * Version: ".trim($versionDataEx[0])."\n * Build: ".trim($versionDataEx[1])."\n */\n\n";
- $outputContents .= $outputCode;
-
- file_put_contents($outputFile, $outputContents);
-
- \ No newline at end of file
diff --git a/library/phpqrcode/tools/merge.sh b/library/phpqrcode/tools/merge.sh
deleted file mode 100644
index e4c2fbcb8..000000000
--- a/library/phpqrcode/tools/merge.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-php ./merge.php \ No newline at end of file
diff --git a/library/phpqrcode/tools/merged_config.php b/library/phpqrcode/tools/merged_config.php
deleted file mode 100644
index 55ddb4506..000000000
--- a/library/phpqrcode/tools/merged_config.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/*
- * PHP QR Code encoder
- *
- * Config file, tuned-up for merged verion
- */
-
- define('QR_CACHEABLE', false); // use cache - more disk reads but less CPU power, masks and format templates are stored there
- define('QR_CACHE_DIR', false); // used when QR_CACHEABLE === true
- define('QR_LOG_DIR', false); // default error logs dir
-
- define('QR_FIND_BEST_MASK', true); // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
- define('QR_FIND_FROM_RANDOM', 2); // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
- define('QR_DEFAULT_MASK', 2); // when QR_FIND_BEST_MASK === false
-
- define('QR_PNG_MAXIMUM_SIZE', 1024); // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images
- \ No newline at end of file
diff --git a/library/phpqrcode/tools/merged_header.php b/library/phpqrcode/tools/merged_header.php
deleted file mode 100644
index 25805e564..000000000
--- a/library/phpqrcode/tools/merged_header.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * PHP QR Code encoder
- *
- * This file contains MERGED version of PHP QR Code library.
- * It was auto-generated from full version for your convenience.
- *
- * This merged version was configured to not requre any external files,
- * with disabled cache, error loging and weker but faster mask matching.
- * If you need tune it up please use non-merged version.
- *
- * For full version, documentation, examples of use please visit:
- *
- * http://phpqrcode.sourceforge.net/
- * https://sourceforge.net/projects/phpqrcode/
- *
- * PHP QR Code is distributed under LGPL 3
- * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
- \ No newline at end of file