当前位置:   article > 正文

CESHIA_aaak7com

aaak7com

  1. * html2canvas 1.0.0-alpha.12 <https://html2canvas.hertzen.com>
  2. * Copyright (c) 2018 Niklas von Hertzen <https://hertzen.com>
  3. * Released under MIT License
  4. */
  5. (function webpackUniversalModuleDefinition(root, factory) {
  6. if(typeof exports === 'object' && typeof module === 'object')
  7. module.exports = factory();
  8. else if(typeof define === 'function' && define.amd)
  9. define([], factory);
  10. else if(typeof exports === 'object')
  11. exports["html2canvas"] = factory();
  12. else
  13. root["html2canvas"] = factory();
  14. }
  15. "use strict";
  16. // http://dev.w3.org/csswg/css-color/
  17. Object.defineProperty(exports, "__esModule", {
  18. value: true
  19. });
  20. /***/ }),
  21. /* 46 */
  22. /***/ (function(module, exports, __webpack_require__) {
  23. "use strict";
  24. Object.defineProperty(exports, "__esModule", {
  25. value: true
  26. });
  27. var _Util = __webpack_require__(13);
  28. Object.defineProperty(exports, 'toCodePoints', {
  29. enumerable: true,
  30. get: function get() {
  31. return _Util.toCodePoints;
  32. }
  33. });
  34. Object.defineProperty(exports, 'fromCodePoint', {
  35. enumerable: true,
  36. get: function get() {
  37. return _Util.fromCodePoint;
  38. }
  39. });
  40. var _LineBreak = __webpack_require__(47);
  41. Object.defineProperty(exports, 'LineBreaker', {
  42. enumerable: true,
  43. get: function get() {
  44. return _LineBreak.LineBreaker;
  45. }
  46. });
  47. /***/ }),
  48. /* 47 */
  49. /***/ (function(module, exports, __webpack_require__) {
  50. "use strict";
  51. Object.defineProperty(exports, "__esModule", {
  52. value: true
  53. });
  54. exports.LineBreaker = exports.inlineBreakOpportunities = exports.lineBreakAtIndex = exports.codePointsToCharacterClasses = exports.UnicodeTrie = exports.BREAK_ALLOWED = exports.BREAK_NOT_ALLOWED = exports.BREAK_MANDATORY = exports.classes = exports.LETTER_NUMBER_MODIFIER = undefined;
  55. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  56. var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
  57. var _Trie = __webpack_require__(48);
  58. var _linebreakTrie = __webpack_require__(49);
  59. var _linebreakTrie2 = _interopRequireDefault(_linebreakTrie);
  60. var _Util = __webpack_require__(13);
  61. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  62. function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
  63. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  64. var LETTER_NUMBER_MODIFIER = exports.LETTER_NUMBER_MODIFIER = 50;
  65. // Non-tailorable Line Breaking Classes
  66. var BK = 1; // Cause a line break (after)
  67. var CR = 2; // Cause a line break (after), except between CR and LF
  68. var LF = 3; // Cause a line break (after)
  69. var CM = 4; // Prohibit a line break between the character and the preceding character
  70. var NL = 5; // Cause a line break (after)
  71. var SG = 6; // Do not occur in well-formed text
  72. var WJ = 7; // Prohibit line breaks before and after
  73. var ZW = 8; // Provide a break opportunity
  74. var GL = 9; // Prohibit line breaks before and after
  75. var SP = 10; // Enable indirect line breaks
  76. var ZWJ = 11; // Prohibit line breaks within joiner sequences
  77. // Break Opportunities
  78. var B2 = 12; // Provide a line break opportunity before and after the character
  79. var BA = 13; // Generally provide a line break opportunity after the character
  80. var BB = 14; // Generally provide a line break opportunity before the character
  81. var HY = 15; // Provide a line break opportunity after the character, except in numeric context
  82. var CB = 16; // Provide a line break opportunity contingent on additional information
  83. // Characters Prohibiting Certain Breaks
  84. var CL = 17; // Prohibit line breaks before
  85. var CP = 18; // Prohibit line breaks before
  86. var EX = 19; // Prohibit line breaks before
  87. var IN = 20; // Allow only indirect line breaks between pairs
  88. var NS = 21; // Allow only indirect line breaks before
  89. var OP = 22; // Prohibit line breaks after
  90. var QU = 23; // Act like they are both opening and closing
  91. // Numeric Context
  92. var IS = 24; // Prevent breaks after any and before numeric
  93. var NU = 25; // Form numeric expressions for line breaking purposes
  94. var PO = 26; // Do not break following a numeric expression
  95. var PR = 27; // Do not break in front of a numeric expression
  96. var SY = 28; // Prevent a break before; and allow a break after
  97. // Other Characters
  98. var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID
  99. var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters
  100. var CJ = 31; // Treat as NS or ID for strict or normal breaking.
  101. var EB = 32; // Do not break from following Emoji Modifier
  102. var EM = 33; // Do not break from preceding Emoji Base
  103. var H2 = 34; // Form Korean syllable blocks
  104. var H3 = 35; // Form Korean syllable blocks
  105. var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic
  106. var ID = 37; // Break before or after; except in some numeric context
  107. var JL = 38; // Form Korean syllable blocks
  108. var JV = 39; // Form Korean syllable blocks
  109. var JT = 40; // Form Korean syllable blocks
  110. var RI = 41; // Keep pairs together. For pairs; break before and after other classes
  111. var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis
  112. var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions
  113. var classes = exports.classes = {
  114. BK: BK,
  115. CR: CR,
  116. LF: LF,
  117. CM: CM,
  118. NL: NL,
  119. SG: SG,
  120. WJ: WJ,
  121. ZW: ZW,
  122. GL: GL,
  123. SP: SP,
  124. ZWJ: ZWJ,
  125. B2: B2,
  126. BA: BA,
  127. BB: BB,
  128. HY: HY,
  129. CB: CB,
  130. CL: CL,
  131. CP: CP,
  132. EX: EX,
  133. IN: IN,
  134. NS: NS,
  135. OP: OP,
  136. QU: QU,
  137. IS: IS,
  138. NU: NU,
  139. PO: PO,
  140. PR: PR,
  141. SY: SY,
  142. AI: AI,
  143. AL: AL,
  144. CJ: CJ,
  145. EB: EB,
  146. EM: EM,
  147. H2: H2,
  148. H3: H3,
  149. HL: HL,
  150. ID: ID,
  151. JL: JL,
  152. JV: JV,
  153. JT: JT,
  154. RI: RI,
  155. SA: SA,
  156. XX: XX
  157. };
  158. var BREAK_MANDATORY = exports.BREAK_MANDATORY = '!';
  159. var BREAK_NOT_ALLOWED = exports.BREAK_NOT_ALLOWED = '×';
  160. var BREAK_ALLOWED = exports.BREAK_ALLOWED = '÷';
  161. var UnicodeTrie = exports.UnicodeTrie = (0, _Trie.createTrieFromBase64)(_linebreakTrie2.default);
  162. var ALPHABETICS = [AL, HL];
  163. var HARD_LINE_BREAKS = [BK, CR, LF, NL];
  164. var SPACE = [SP, ZW];
  165. var PREFIX_POSTFIX = [PR, PO];
  166. var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);
  167. var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];
  168. var HYPHEN = [HY, BA];
  169. var codePointsToCharacterClasses = exports.codePointsToCharacterClasses = function codePointsToCharacterClasses(codePoints) {
  170. var lineBreak = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'strict';
  171. var types = [];
  172. var indicies = [];
  173. var categories = [];
  174. codePoints.forEach(function (codePoint, index) {
  175. var classType = UnicodeTrie.get(codePoint);
  176. if (classType > LETTER_NUMBER_MODIFIER) {
  177. categories.push(true);
  178. classType -= LETTER_NUMBER_MODIFIER;
  179. } else {
  180. categories.push(false);
  181. }
  182. if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {
  183. // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0
  184. if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {
  185. indicies.push(index);
  186. return types.push(CB);
  187. }
  188. }
  189. if (classType === CM || classType === ZWJ) {
  190. // LB10 Treat any remaining combining mark or ZWJ as AL.
  191. if (index === 0) {
  192. indicies.push(index);
  193. return types.push(AL);
  194. }
  195. // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of
  196. // the base character in all of the following rules. Treat ZWJ as if it were CM.
  197. var prev = types[index - 1];
  198. if (LINE_BREAKS.indexOf(prev) === -1) {
  199. indicies.push(indicies[index - 1]);
  200. return types.push(prev);
  201. }
  202. indicies.push(index);
  203. return types.push(AL);
  204. }
  205. indicies.push(index);
  206. if (classType === CJ) {
  207. return types.push(lineBreak === 'strict' ? NS : ID);
  208. }
  209. if (classType === SA) {
  210. return types.push(AL);
  211. }
  212. if (classType === AI) {
  213. return types.push(AL);
  214. }
  215. // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL
  216. // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised
  217. // to take into account the actual line breaking properties for these characters.
  218. if (classType === XX) {
  219. if (codePoint >= 0x20000 && codePoint <= 0x2fffd || codePoint >= 0x30000 && codePoint <= 0x3fffd) {
  220. return types.push(ID);
  221. } else {
  222. return types.push(AL);
  223. }
  224. }
  225. types.push(classType);
  226. });
  227. return [indicies, types, categories];
  228. };
  229. var isAdjacentWithSpaceIgnored = function isAdjacentWithSpaceIgnored(a, b, currentIndex, classTypes) {
  230. var current = classTypes[currentIndex];
  231. if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {
  232. var i = currentIndex;
  233. while (i <= classTypes.length) {
  234. i++;
  235. var next = classTypes[i];
  236. if (next === b) {
  237. return true;
  238. }
  239. if (next !== SP) {
  240. break;
  241. }
  242. }
  243. }
  244. if (current === SP) {
  245. var _i = currentIndex;
  246. while (_i > 0) {
  247. _i--;
  248. var prev = classTypes[_i];
  249. if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {
  250. var n = currentIndex;
  251. while (n <= classTypes.length) {
  252. n++;
  253. var _next = classTypes[n];
  254. if (_next === b) {
  255. return true;
  256. }
  257. if (_next !== SP) {
  258. break;
  259. }
  260. }
  261. }
  262. if (prev !== SP) {
  263. break;
  264. }
  265. }
  266. }
  267. return false;
  268. };
  269. var previousNonSpaceClassType = function previousNonSpaceClassType(currentIndex, classTypes) {
  270. var i = currentIndex;
  271. while (i >= 0) {
  272. var type = classTypes[i];
  273. if (type === SP) {
  274. i--;
  275. } else {
  276. return type;
  277. }
  278. }
  279. return 0;
  280. };
  281. var _lineBreakAtIndex = function _lineBreakAtIndex(codePoints, classTypes, indicies, index, forbiddenBreaks) {
  282. if (indicies[index] === 0) {
  283. return BREAK_NOT_ALLOWED;
  284. }
  285. var currentIndex = index - 1;
  286. if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {
  287. return BREAK_NOT_ALLOWED;
  288. }
  289. var beforeIndex = currentIndex - 1;
  290. var afterIndex = currentIndex + 1;
  291. var current = classTypes[currentIndex];
  292. // LB4 Always break after hard line breaks.
  293. // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.
  294. var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;
  295. var next = classTypes[afterIndex];
  296. if (current === CR && next === LF) {
  297. return BREAK_NOT_ALLOWED;
  298. }
  299. if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
  300. return BREAK_MANDATORY;
  301. }
  302. // LB6 Do not break before hard line breaks.
  303. if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
  304. return BREAK_NOT_ALLOWED;
  305. }
  306. // LB7 Do not break before spaces or zero width space.
  307. if (SPACE.indexOf(next) !== -1) {
  308. return BREAK_NOT_ALLOWED;
  309. }
  310. // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.
  311. if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
  312. return BREAK_ALLOWED;
  313. }
  314. // LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier.
  315. if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) {
  316. return BREAK_NOT_ALLOWED;
  317. }
  318. // LB11 Do not break before or after Word joiner and related characters.
  319. if (current === WJ || next === WJ) {
  320. return BREAK_NOT_ALLOWED;
  321. }
  322. // LB12 Do not break after NBSP and related characters.
  323. if (current === GL) {
  324. return BREAK_NOT_ALLOWED;
  325. }
  326. // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.
  327. if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
  328. return BREAK_NOT_ALLOWED;
  329. }
  330. // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.
  331. if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
  332. return BREAK_NOT_ALLOWED;
  333. }
  334. // LB14 Do not break after ‘[’, even after spaces.
  335. if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
  336. return BREAK_NOT_ALLOWED;
  337. }
  338. // LB15 Do not break within ‘”[’, even with intervening spaces.
  339. if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
  340. return BREAK_NOT_ALLOWED;
  341. }
  342. // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.
  343. if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
  344. return BREAK_NOT_ALLOWED;
  345. }
  346. // LB17 Do not break within ‘——’, even with intervening spaces.
  347. if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
  348. return BREAK_NOT_ALLOWED;
  349. }
  350. // LB18 Break after spaces.
  351. if (current === SP) {
  352. return BREAK_ALLOWED;
  353. }
  354. // LB19 Do not break before or after quotation marks, such as ‘ ” ’.
  355. if (current === QU || next === QU) {
  356. return BREAK_NOT_ALLOWED;
  357. }
  358. // LB20 Break before and after unresolved CB.
  359. if (next === CB || current === CB) {
  360. return BREAK_ALLOWED;
  361. }
  362. // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.
  363. if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
  364. return BREAK_NOT_ALLOWED;
  365. }
  366. // LB21a Don't break after Hebrew + Hyphen.
  367. if (before === HL && HYPHEN.indexOf(current) !== -1) {
  368. return BREAK_NOT_ALLOWED;
  369. }
  370. // LB21b Don’t break between Solidus and Hebrew letters.
  371. if (current === SY && next === HL) {
  372. return BREAK_NOT_ALLOWED;
  373. }
  374. // LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.
  375. if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) {
  376. return BREAK_NOT_ALLOWED;
  377. }
  378. // LB23 Do not break between digits and letters.
  379. if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {
  380. return BREAK_NOT_ALLOWED;
  381. }
  382. // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.
  383. if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {
  384. return BREAK_NOT_ALLOWED;
  385. }
  386. // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.
  387. if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
  388. return BREAK_NOT_ALLOWED;
  389. }
  390. // LB25 Do not break between the following pairs of classes relevant to numbers:
  391. if (
  392. // (PR | PO) × ( OP | HY )? NU
  393. [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) ||
  394. // ( OP | HY ) × NU
  395. [OP, HY].indexOf(current) !== -1 && next === NU ||
  396. // NU × (NU | SY | IS)
  397. current === NU && [NU, SY, IS].indexOf(next) !== -1) {
  398. return BREAK_NOT_ALLOWED;
  399. }
  400. // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)
  401. if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
  402. var prevIndex = currentIndex;
  403. while (prevIndex >= 0) {
  404. var type = classTypes[prevIndex];
  405. if (type === NU) {
  406. return BREAK_NOT_ALLOWED;
  407. } else if ([SY, IS].indexOf(type) !== -1) {
  408. prevIndex--;
  409. } else {
  410. break;
  411. }
  412. }
  413. }
  414. // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))
  415. if ([PR, PO].indexOf(next) !== -1) {
  416. var _prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;
  417. while (_prevIndex >= 0) {
  418. var _type = classTypes[_prevIndex];
  419. if (_type === NU) {
  420. return BREAK_NOT_ALLOWED;
  421. } else if ([SY, IS].indexOf(_type) !== -1) {
  422. _prevIndex--;
  423. } else {
  424. break;
  425. }
  426. }
  427. }
  428. // LB26 Do not break a Korean syllable.
  429. if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {
  430. return BREAK_NOT_ALLOWED;
  431. }
  432. // LB27 Treat a Korean Syllable Block the same as ID.
  433. if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {
  434. return BREAK_NOT_ALLOWED;
  435. }
  436. // LB28 Do not break between alphabetics (“at”).
  437. if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
  438. return BREAK_NOT_ALLOWED;
  439. }
  440. // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).
  441. if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
  442. return BREAK_NOT_ALLOWED;
  443. }
  444. // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.
  445. if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {
  446. return BREAK_NOT_ALLOWED;
  447. }
  448. // LB30a Break between two regional indicator symbols if and only if there are an even number of regional
  449. // indicators preceding the position of the break.
  450. if (current === RI && next === RI) {
  451. var i = indicies[currentIndex];
  452. var count = 1;
  453. while (i > 0) {
  454. i--;
  455. if (classTypes[i] === RI) {
  456. count++;
  457. } else {
  458. break;
  459. }
  460. }
  461. if (count % 2 !== 0) {
  462. return BREAK_NOT_ALLOWED;
  463. }
  464. }
  465. // LB30b Do not break between an emoji base and an emoji modifier.
  466. if (current === EB && next === EM) {
  467. return BREAK_NOT_ALLOWED;
  468. }
  469. return BREAK_ALLOWED;
  470. };
  471. var lineBreakAtIndex = exports.lineBreakAtIndex = function lineBreakAtIndex(codePoints, index) {
  472. // LB2 Never break at the start of text.
  473. if (index === 0) {
  474. return BREAK_NOT_ALLOWED;
  475. }
  476. // LB3 Always break at the end of text.
  477. if (index >= codePoints.length) {
  478. return BREAK_MANDATORY;
  479. }
  480. var _codePointsToCharacte = codePointsToCharacterClasses(codePoints),
  481. _codePointsToCharacte2 = _slicedToArray(_codePointsToCharacte, 2),
  482. indicies = _codePointsToCharacte2[0],
  483. classTypes = _codePointsToCharacte2[1];
  484. return _lineBreakAtIndex(codePoints, classTypes, indicies, index);
  485. };
  486. var cssFormattedClasses = function cssFormattedClasses(codePoints, options) {
  487. if (!options) {
  488. options = { lineBreak: 'normal', wordBreak: 'normal' };
  489. }
  490. var _codePointsToCharacte3 = codePointsToCharacterClasses(codePoints, options.lineBreak),
  491. _codePointsToCharacte4 = _slicedToArray(_codePointsToCharacte3, 3),
  492. indicies = _codePointsToCharacte4[0],
  493. classTypes = _codePointsToCharacte4[1],
  494. isLetterNumber = _codePointsToCharacte4[2];
  495. if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {
  496. classTypes = classTypes.map(function (type) {
  497. return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;
  498. });
  499. }
  500. var forbiddenBreakpoints = options.wordBreak === 'keep-all' ? isLetterNumber.map(function (isLetterNumber, i) {
  501. return isLetterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;
  502. }) : null;
  503. return [indicies, classTypes, forbiddenBreakpoints];
  504. };
  505. var inlineBreakOpportunities = exports.inlineBreakOpportunities = function inlineBreakOpportunities(str, options) {
  506. var codePoints = (0, _Util.toCodePoints)(str);
  507. var output = BREAK_NOT_ALLOWED;
  508. var _cssFormattedClasses = cssFormattedClasses(codePoints, options),
  509. _cssFormattedClasses2 = _slicedToArray(_cssFormattedClasses, 3),
  510. indicies = _cssFormattedClasses2[0],
  511. classTypes = _cssFormattedClasses2[1],
  512. forbiddenBreakpoints = _cssFormattedClasses2[2];
  513. codePoints.forEach(function (codePoint, i) {
  514. output += (0, _Util.fromCodePoint)(codePoint) + (i >= codePoints.length - 1 ? BREAK_MANDATORY : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));
  515. });
  516. return output;
  517. };
  518. var Break = function () {
  519. function Break(codePoints, lineBreak, start, end) {
  520. _classCallCheck(this, Break);
  521. this._codePoints = codePoints;
  522. this.required = lineBreak === BREAK_MANDATORY;
  523. this.start = start;
  524. this.end = end;
  525. }
  526. _createClass(Break, [{
  527. key: 'slice',
  528. value: function slice() {
  529. return _Util.fromCodePoint.apply(undefined, _toConsumableArray(this._codePoints.slice(this.start, this.end)));
  530. }
  531. }]);
  532. return Break;
  533. }();
  534. var LineBreaker = exports.LineBreaker = function LineBreaker(str, options) {
  535. var codePoints = (0, _Util.toCodePoints)(str);
  536. var _cssFormattedClasses3 = cssFormattedClasses(codePoints, options),
  537. _cssFormattedClasses4 = _slicedToArray(_cssFormattedClasses3, 3),
  538. indicies = _cssFormattedClasses4[0],
  539. classTypes = _cssFormattedClasses4[1],
  540. forbiddenBreakpoints = _cssFormattedClasses4[2];
  541. var length = codePoints.length;
  542. var lastEnd = 0;
  543. var nextIndex = 0;
  544. return {
  545. next: function next() {
  546. if (nextIndex >= length) {
  547. return { done: true };
  548. }
  549. var lineBreak = BREAK_NOT_ALLOWED;
  550. while (nextIndex < length && (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED) {}
  551. if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {
  552. var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);
  553. lastEnd = nextIndex;
  554. return { value: value, done: false };
  555. }
  556. return { done: true };
  557. }
  558. };
  559. };
  560. /***/ }),
  561. /* 48 */
  562. /***/ (function(module, exports, __webpack_require__) {
  563. "use strict";
  564. Object.defineProperty(exports, "__esModule", {
  565. value: true
  566. });
  567. exports.Trie = exports.createTrieFromBase64 = exports.UTRIE2_INDEX_2_MASK = exports.UTRIE2_INDEX_2_BLOCK_LENGTH = exports.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = exports.UTRIE2_INDEX_1_OFFSET = exports.UTRIE2_UTF8_2B_INDEX_2_LENGTH = exports.UTRIE2_UTF8_2B_INDEX_2_OFFSET = exports.UTRIE2_INDEX_2_BMP_LENGTH = exports.UTRIE2_LSCP_INDEX_2_LENGTH = exports.UTRIE2_DATA_MASK = exports.UTRIE2_DATA_BLOCK_LENGTH = exports.UTRIE2_LSCP_INDEX_2_OFFSET = exports.UTRIE2_SHIFT_1_2 = exports.UTRIE2_INDEX_SHIFT = exports.UTRIE2_SHIFT_1 = exports.UTRIE2_SHIFT_2 = undefined;
  568. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  569. var _Util = __webpack_require__(13);
  570. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  571. /** Shift size for getting the index-2 table offset. */
  572. var UTRIE2_SHIFT_2 = exports.UTRIE2_SHIFT_2 = 5;
  573. /** Shift size for getting the index-1 table offset. */
  574. var UTRIE2_SHIFT_1 = exports.UTRIE2_SHIFT_1 = 6 + 5;
  575. /**
  576. * Shift size for shifting left the index array values.
  577. * Increases possible data size with 16-bit index values at the cost
  578. * of compactability.
  579. * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.
  580. */
  581. var UTRIE2_INDEX_SHIFT = exports.UTRIE2_INDEX_SHIFT = 2;
  582. /**
  583. * Difference between the two shift sizes,
  584. * for getting an index-1 offset from an index-2 offset. 6=11-5
  585. */
  586. var UTRIE2_SHIFT_1_2 = exports.UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
  587. /**
  588. * The part of the index-2 table for U+D800..U+DBFF stores values for
  589. * lead surrogate code _units_ not code _points_.
  590. * Values for lead surrogate code _points_ are indexed with this portion of the table.
  591. * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)
  592. */
  593. var UTRIE2_LSCP_INDEX_2_OFFSET = exports.UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;
  594. /** Number of entries in a data block. 32=0x20 */
  595. var UTRIE2_DATA_BLOCK_LENGTH = exports.UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
  596. /** Mask for getting the lower bits for the in-data-block offset. */
  597. var UTRIE2_DATA_MASK = exports.UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
  598. var UTRIE2_LSCP_INDEX_2_LENGTH = exports.UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;
  599. /** Count the lengths of both BMP pieces. 2080=0x820 */
  600. var UTRIE2_INDEX_2_BMP_LENGTH = exports.UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
  601. /**
  602. * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.
  603. * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.
  604. */
  605. var UTRIE2_UTF8_2B_INDEX_2_OFFSET = exports.UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
  606. var UTRIE2_UTF8_2B_INDEX_2_LENGTH = exports.UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */
  607. /**
  608. * The index-1 table, only used for supplementary code points, at offset 2112=0x840.
  609. * Variable length, for code points up to highStart, where the last single-value range starts.
  610. * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.
  611. * (For 0x100000 supplementary code points U+10000..U+10ffff.)
  612. *
  613. * The part of the index-2 table for supplementary code points starts
  614. * after this index-1 table.
  615. *
  616. * Both the index-1 table and the following part of the index-2 table
  617. * are omitted completely if there is only BMP data.
  618. */
  619. var UTRIE2_INDEX_1_OFFSET = exports.UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
  620. /**
  621. * Number of index-1 entries for the BMP. 32=0x20
  622. * This part of the index-1 table is omitted from the serialized form.
  623. */
  624. var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = exports.UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;
  625. /** Number of entries in an index-2 block. 64=0x40 */
  626. var UTRIE2_INDEX_2_BLOCK_LENGTH = exports.UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
  627. /** Mask for getting the lower bits for the in-index-2-block offset. */
  628. var UTRIE2_INDEX_2_MASK = exports.UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
  629. var createTrieFromBase64 = exports.createTrieFromBase64 = function createTrieFromBase64(base64) {
  630. var buffer = (0, _Util.decode)(base64);
  631. var view32 = Array.isArray(buffer) ? (0, _Util.polyUint32Array)(buffer) : new Uint32Array(buffer);
  632. var view16 = Array.isArray(buffer) ? (0, _Util.polyUint16Array)(buffer) : new Uint16Array(buffer);
  633. var headerLength = 24;
  634. var index = view16.slice(headerLength / 2, view32[4] / 2);
  635. var data = view32[5] === 2 ? view16.slice((headerLength + view32[4]) / 2) : view32.slice(Math.ceil((headerLength + view32[4]) / 4));
  636. return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);
  637. };
  638. var Trie = exports.Trie = function () {
  639. function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {
  640. _classCallCheck(this, Trie);
  641. this.initialValue = initialValue;
  642. this.errorValue = errorValue;
  643. this.highStart = highStart;
  644. this.highValueIndex = highValueIndex;
  645. this.index = index;
  646. this.data = data;
  647. }
  648. /**
  649. * Get the value for a code point as stored in the Trie.
  650. *
  651. * @param codePoint the code point
  652. * @return the value
  653. */
  654. _createClass(Trie, [{
  655. key: 'get',
  656. value: function get(codePoint) {
  657. var ix = void 0;
  658. if (codePoint >= 0) {
  659. if (codePoint < 0x0d800 || codePoint > 0x0dbff && codePoint <= 0x0ffff) {
  660. // Ordinary BMP code point, excluding leading surrogates.
  661. // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.
  662. // 16 bit data is stored in the index array itself.
  663. ix = this.index[codePoint >> UTRIE2_SHIFT_2];
  664. ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
  665. return this.data[ix];
  666. }
  667. if (codePoint <= 0xffff) {
  668. // Lead Surrogate Code Point. A Separate index section is stored for
  669. // lead surrogate code units and code points.
  670. // The main index has the code unit data.
  671. // For this function, we need the code point data.
  672. // Note: this expression could be refactored for slightly improved efficiency, but
  673. // surrogate code points will be so rare in practice that it's not worth it.
  674. ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 0xd800 >> UTRIE2_SHIFT_2)];
  675. ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
  676. return this.data[ix];
  677. }
  678. if (codePoint < this.highStart) {
  679. // Supplemental code point, use two-level lookup.
  680. ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
  681. ix = this.index[ix];
  682. ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;
  683. ix = this.index[ix];
  684. ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
  685. return this.data[ix];
  686. }
  687. if (codePoint <= 0x10ffff) {
  688. return this.data[this.highValueIndex];
  689. }
  690. }
  691. // Fall through. The code point is outside of the legal range of 0..0x10ffff.
  692. return this.errorValue;
  693. }
  694. }]);
  695. return Trie;
  696. }();
  697. /***/ }),
  698. /* 49 */
  699. /***/ (function(module, exports, __webpack_require__) {
  700. "use strict";
  701. module.exports = 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA';
  702. /***/ }),
  703. /* 50 */
  704. /***/ (function(module, exports, __webpack_require__) {
  705. "use strict";
  706. Object.defineProperty(exports, "__esModule", {
  707. value: true
  708. });
  709. var _Path = __webpack_require__(5);
  710. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  711. var Circle = function Circle(x, y, radius) {
  712. _classCallCheck(this, Circle);
  713. this.type = _Path.PATH.CIRCLE;
  714. this.x = x;
  715. this.y = y;
  716. this.radius = radius;
  717. if (true) {
  718. if (isNaN(x)) {
  719. console.error('Invalid x value given for Circle');
  720. }
  721. if (isNaN(y)) {
  722. console.error('Invalid y value given for Circle');
  723. }
  724. if (isNaN(radius)) {
  725. console.error('Invalid radius value given for Circle');
  726. }
  727. }
  728. };
  729. exports.default = Circle;
  730. /***/ }),
  731. /* 51 */
  732. /***/ (function(module, exports, __webpack_require__) {
  733. "use strict";
  734. Object.defineProperty(exports, "__esModule", {
  735. value: true
  736. });
  737. var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
  738. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  739. var _Bounds = __webpack_require__(2);
  740. var _Font = __webpack_require__(25);
  741. var _Gradient = __webpack_require__(52);
  742. var _TextContainer = __webpack_require__(9);
  743. var _TextContainer2 = _interopRequireDefault(_TextContainer);
  744. var _background = __webpack_require__(4);
  745. var _border = __webpack_require__(12);
  746. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  747. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  748. var Renderer = function () {
  749. function Renderer(target, options) {
  750. _classCallCheck(this, Renderer);
  751. this.target = target;
  752. this.options = options;
  753. target.render(options);
  754. }
  755. _createClass(Renderer, [{
  756. key: 'renderNode',
  757. value: function renderNode(container) {
  758. if (container.isVisible()) {
  759. this.renderNodeBackgroundAndBorders(container);
  760. this.renderNodeContent(container);
  761. }
  762. }
  763. }, {
  764. key: 'renderNodeContent',
  765. value: function renderNodeContent(container) {
  766. var _this = this;
  767. var callback = function callback() {
  768. if (container.childNodes.length) {
  769. container.childNodes.forEach(function (child) {
  770. if (child instanceof _TextContainer2.default) {
  771. var style = child.parent.style;
  772. _this.target.renderTextNode(child.bounds, style.color, style.font, style.textDecoration, style.textShadow);
  773. } else {
  774. _this.target.drawShape(child, container.style.color);
  775. }
  776. });
  777. }
  778. if (container.image) {
  779. var _image = _this.options.imageStore.get(container.image);
  780. if (_image) {
  781. var contentBox = (0, _Bounds.calculateContentBox)(container.bounds, container.style.padding, container.style.border);
  782. var _width = typeof _image.width === 'number' && _image.width > 0 ? _image.width : contentBox.width;
  783. var _height = typeof _image.height === 'number' && _image.height > 0 ? _image.height : contentBox.height;
  784. if (_width > 0 && _height > 0) {
  785. _this.target.clip([(0, _Bounds.calculatePaddingBoxPath)(container.curvedBounds)], function () {
  786. _this.target.drawImage(_image, new _Bounds.Bounds(0, 0, _width, _height), contentBox);
  787. });
  788. }
  789. }
  790. }
  791. };
  792. var paths = container.getClipPaths();
  793. if (paths.length) {
  794. this.target.clip(paths, callback);
  795. } else {
  796. callback();
  797. }
  798. }
  799. }, {
  800. key: 'renderNodeBackgroundAndBorders',
  801. value: function renderNodeBackgroundAndBorders(container) {
  802. var _this2 = this;
  803. var HAS_BACKGROUND = !container.style.background.backgroundColor.isTransparent() || container.style.background.backgroundImage.length;
  804. var hasRenderableBorders = container.style.border.some(function (border) {
  805. return border.borderStyle !== _border.BORDER_STYLE.NONE && !border.borderColor.isTransparent();
  806. });
  807. var callback = function callback() {
  808. var backgroundPaintingArea = (0, _background.calculateBackgroungPaintingArea)(container.curvedBounds, container.style.background.backgroundClip);
  809. if (HAS_BACKGROUND) {
  810. _this2.target.clip([backgroundPaintingArea], function () {
  811. if (!container.style.background.backgroundColor.isTransparent()) {
  812. _this2.target.fill(container.style.background.backgroundColor);
  813. }
  814. _this2.renderBackgroundImage(container);
  815. });
  816. }
  817. container.style.border.forEach(function (border, side) {
  818. if (border.borderStyle !== _border.BORDER_STYLE.NONE && !border.borderColor.isTransparent()) {
  819. _this2.renderBorder(border, side, container.curvedBounds);
  820. }
  821. });
  822. };
  823. if (HAS_BACKGROUND || hasRenderableBorders) {
  824. var paths = container.parent ? container.parent.getClipPaths() : [];
  825. if (paths.length) {
  826. this.target.clip(paths, callback);
  827. } else {
  828. callback();
  829. }
  830. }
  831. }
  832. }, {
  833. key: 'renderBackgroundImage',
  834. value: function renderBackgroundImage(container) {
  835. var _this3 = this;
  836. container.style.background.backgroundImage.slice(0).reverse().forEach(function (backgroundImage) {
  837. if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) {
  838. _this3.renderBackgroundRepeat(container, backgroundImage);
  839. } else if (/gradient/i.test(backgroundImage.source.method)) {
  840. _this3.renderBackgroundGradient(container, backgroundImage);
  841. }
  842. });
  843. }
  844. }, {
  845. key: 'renderBackgroundRepeat',
  846. value: function renderBackgroundRepeat(container, background) {
  847. var image = this.options.imageStore.get(background.source.args[0]);
  848. if (image) {
  849. var backgroundPositioningArea = (0, _background.calculateBackgroungPositioningArea)(container.style.background.backgroundOrigin, container.bounds, container.style.padding, container.style.border);
  850. var backgroundImageSize = (0, _background.calculateBackgroundSize)(background, image, backgroundPositioningArea);
  851. var position = (0, _background.calculateBackgroundPosition)(background.position, backgroundImageSize, backgroundPositioningArea);
  852. var _path = (0, _background.calculateBackgroundRepeatPath)(background, position, backgroundImageSize, backgroundPositioningArea, container.bounds);
  853. var _offsetX = Math.round(backgroundPositioningArea.left + position.x);
  854. var _offsetY = Math.round(backgroundPositioningArea.top + position.y);
  855. this.target.renderRepeat(_path, image, backgroundImageSize, _offsetX, _offsetY);
  856. }
  857. }
  858. }, {
  859. key: 'renderBackgroundGradient',
  860. value: function renderBackgroundGradient(container, background) {
  861. var backgroundPositioningArea = (0, _background.calculateBackgroungPositioningArea)(container.style.background.backgroundOrigin, container.bounds, container.style.padding, container.style.border);
  862. var backgroundImageSize = (0, _background.calculateGradientBackgroundSize)(background, backgroundPositioningArea);
  863. var position = (0, _background.calculateBackgroundPosition)(background.position, backgroundImageSize, backgroundPositioningArea);
  864. var gradientBounds = new _Bounds.Bounds(Math.round(backgroundPositioningArea.left + position.x), Math.round(backgroundPositioningArea.top + position.y), backgroundImageSize.width, backgroundImageSize.height);
  865. var gradient = (0, _Gradient.parseGradient)(container, background.source, gradientBounds);
  866. if (gradient) {
  867. switch (gradient.type) {
  868. case _Gradient.GRADIENT_TYPE.LINEAR_GRADIENT:
  869. // $FlowFixMe
  870. this.target.renderLinearGradient(gradientBounds, gradient);
  871. break;
  872. case _Gradient.GRADIENT_TYPE.RADIAL_GRADIENT:
  873. // $FlowFixMe
  874. this.target.renderRadialGradient(gradientBounds, gradient);
  875. break;
  876. }
  877. }
  878. }
  879. }, {
  880. key: 'renderBorder',
  881. value: function renderBorder(border, side, curvePoints) {
  882. this.target.drawShape((0, _Bounds.parsePathForBorder)(curvePoints, side), border.borderColor);
  883. }
  884. }, {
  885. key: 'renderStack',
  886. value: function renderStack(stack) {
  887. var _this4 = this;
  888. if (stack.container.isVisible()) {
  889. var _opacity = stack.getOpacity();
  890. if (_opacity !== this._opacity) {
  891. this.target.setOpacity(stack.getOpacity());
  892. this._opacity = _opacity;
  893. }
  894. var _transform = stack.container.style.transform;
  895. if (_transform !== null) {
  896. this.target.transform(stack.container.bounds.left + _transform.transformOrigin[0].value, stack.container.bounds.top + _transform.transformOrigin[1].value, _transform.transform, function () {
  897. return _this4.renderStackContent(stack);
  898. });
  899. } else {
  900. this.renderStackContent(stack);
  901. }
  902. }
  903. }
  904. }, {
  905. key: 'renderStackContent',
  906. value: function renderStackContent(stack) {
  907. var _splitStackingContext = splitStackingContexts(stack),
  908. _splitStackingContext2 = _slicedToArray(_splitStackingContext, 5),
  909. negativeZIndex = _splitStackingContext2[0],
  910. zeroOrAutoZIndexOrTransformedOrOpacity = _splitStackingContext2[1],
  911. positiveZIndex = _splitStackingContext2[2],
  912. nonPositionedFloats = _splitStackingContext2[3],
  913. nonPositionedInlineLevel = _splitStackingContext2[4];
  914. var _splitDescendants = splitDescendants(stack),
  915. _splitDescendants2 = _slicedToArray(_splitDescendants, 2),
  916. inlineLevel = _splitDescendants2[0],
  917. nonInlineLevel = _splitDescendants2[1];
  918. // https://www.w3.org/TR/css-position-3/#painting-order
  919. // 1. the background and borders of the element forming the stacking context.
  920. this.renderNodeBackgroundAndBorders(stack.container);
  921. // 2. the child stacking contexts with negative stack levels (most negative first).
  922. negativeZIndex.sort(sortByZIndex).forEach(this.renderStack, this);
  923. // 3. For all its in-flow, non-positioned, block-level descendants in tree order:
  924. this.renderNodeContent(stack.container);
  925. nonInlineLevel.forEach(this.renderNode, this);
  926. // 4. All non-positioned floating descendants, in tree order. For each one of these,
  927. // treat the element as if it created a new stacking context, but any positioned descendants and descendants
  928. // which actually create a new stacking context should be considered part of the parent stacking context,
  929. // not this new one.
  930. nonPositionedFloats.forEach(this.renderStack, this);
  931. // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.
  932. nonPositionedInlineLevel.forEach(this.renderStack, this);
  933. inlineLevel.forEach(this.renderNode, this);
  934. // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:
  935. // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.
  936. // For those with 'z-index: auto', treat the element as if it created a new stacking context,
  937. // but any positioned descendants and descendants which actually create a new stacking context should be
  938. // considered part of the parent stacking context, not this new one. For those with 'z-index: 0',
  939. // treat the stacking context generated atomically.
  940. //
  941. // All opacity descendants with opacity less than 1
  942. //
  943. // All transform descendants with transform other than none
  944. zeroOrAutoZIndexOrTransformedOrOpacity.forEach(this.renderStack, this);
  945. // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index
  946. // order (smallest first) then tree order.
  947. positiveZIndex.sort(sortByZIndex).forEach(this.renderStack, this);
  948. }
  949. }, {
  950. key: 'render',
  951. value: function render(stack) {
  952. var _this5 = this;
  953. if (this.options.backgroundColor) {
  954. this.target.rectangle(this.options.x, this.options.y, this.options.width, this.options.height, this.options.backgroundColor);
  955. }
  956. this.renderStack(stack);
  957. var target = this.target.getTarget();
  958. if (true) {
  959. return target.then(function (output) {
  960. _this5.options.logger.log('Render completed');
  961. return output;
  962. });
  963. }
  964. return target;
  965. }
  966. }]);
  967. return Renderer;
  968. }();
  969. exports.default = Renderer;
  970. var splitDescendants = function splitDescendants(stack) {
  971. var inlineLevel = [];
  972. var nonInlineLevel = [];
  973. var length = stack.children.length;
  974. for (var i = 0; i < length; i++) {
  975. var child = stack.children[i];
  976. if (child.isInlineLevel()) {
  977. inlineLevel.push(child);
  978. } else {
  979. nonInlineLevel.push(child);
  980. }
  981. }
  982. return [inlineLevel, nonInlineLevel];
  983. };
  984. var splitStackingContexts = function splitStackingContexts(stack) {
  985. var negativeZIndex = [];
  986. var zeroOrAutoZIndexOrTransformedOrOpacity = [];
  987. var positiveZIndex = [];
  988. var nonPositionedFloats = [];
  989. var nonPositionedInlineLevel = [];
  990. var length = stack.contexts.length;
  991. for (var i = 0; i < length; i++) {
  992. var child = stack.contexts[i];
  993. if (child.container.isPositioned() || child.container.style.opacity < 1 || child.container.isTransformed()) {
  994. if (child.container.style.zIndex.order < 0) {
  995. negativeZIndex.push(child);
  996. } else if (child.container.style.zIndex.order > 0) {
  997. positiveZIndex.push(child);
  998. } else {
  999. zeroOrAutoZIndexOrTransformedOrOpacity.push(child);
  1000. }
  1001. } else {
  1002. if (child.container.isFloating()) {
  1003. nonPositionedFloats.push(child);
  1004. } else {
  1005. nonPositionedInlineLevel.push(child);
  1006. }
  1007. }
  1008. }
  1009. return [negativeZIndex, zeroOrAutoZIndexOrTransformedOrOpacity, positiveZIndex, nonPositionedFloats, nonPositionedInlineLevel];
  1010. };
  1011. var sortByZIndex = function sortByZIndex(a, b) {
  1012. if (a.container.style.zIndex.order > b.container.style.zIndex.order) {
  1013. return 1;
  1014. } else if (a.container.style.zIndex.order < b.container.style.zIndex.order) {
  1015. return -1;
  1016. }
  1017. return a.container.index > b.container.index ? 1 : -1;
  1018. };
  1019. /***/ }),
  1020. /* 52 */
  1021. /***/ (function(module, exports, __webpack_require__) {
  1022. "use strict";
  1023. Object.defineProperty(exports, "__esModule", {
  1024. value: true
  1025. });
  1026. exports.transformWebkitRadialGradientArgs = exports.parseGradient = exports.RadialGradient = exports.LinearGradient = exports.RADIAL_GRADIENT_SHAPE = exports.GRADIENT_TYPE = undefined;
  1027. var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
  1028. var _NodeContainer = __webpack_require__(6);
  1029. var _NodeContainer2 = _interopRequireDefault(_NodeContainer);
  1030. var _Angle = __webpack_require__(53);
  1031. var _Color = __webpack_require__(0);
  1032. var _Color2 = _interopRequireDefault(_Color);
  1033. var _Length = __webpack_require__(1);
  1034. var _Length2 = _interopRequireDefault(_Length);
  1035. var _Util = __webpack_require__(3);
  1036. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  1037. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1038. var SIDE_OR_CORNER = /^(to )?(left|top|right|bottom)( (left|top|right|bottom))?$/i;
  1039. var PERCENTAGE_ANGLES = /^([+-]?\d*\.?\d+)% ([+-]?\d*\.?\d+)%$/i;
  1040. var ENDS_WITH_LENGTH = /(px)|%|( 0)$/i;
  1041. var FROM_TO_COLORSTOP = /^(from|to|color-stop)\((?:([\d.]+)(%)?,\s*)?(.+?)\)$/i;
  1042. var RADIAL_SHAPE_DEFINITION = /^\s*(circle|ellipse)?\s*((?:([\d.]+)(px|r?em|%)\s*(?:([\d.]+)(px|r?em|%))?)|closest-side|closest-corner|farthest-side|farthest-corner)?\s*(?:at\s*(?:(left|center|right)|([\d.]+)(px|r?em|%))\s+(?:(top|center|bottom)|([\d.]+)(px|r?em|%)))?(?:\s|$)/i;
  1043. var GRADIENT_TYPE = exports.GRADIENT_TYPE = {
  1044. LINEAR_GRADIENT: 0,
  1045. RADIAL_GRADIENT: 1
  1046. };
  1047. var RADIAL_GRADIENT_SHAPE = exports.RADIAL_GRADIENT_SHAPE = {
  1048. CIRCLE: 0,
  1049. ELLIPSE: 1
  1050. };
  1051. var LENGTH_FOR_POSITION = {
  1052. left: new _Length2.default('0%'),
  1053. top: new _Length2.default('0%'),
  1054. center: new _Length2.default('50%'),
  1055. right: new _Length2.default('100%'),
  1056. bottom: new _Length2.default('100%')
  1057. };
  1058. var LinearGradient = exports.LinearGradient = function LinearGradient(colorStops, direction) {
  1059. _classCallCheck(this, LinearGradient);
  1060. this.type = GRADIENT_TYPE.LINEAR_GRADIENT;
  1061. this.colorStops = colorStops;
  1062. this.direction = direction;
  1063. };
  1064. var RadialGradient = exports.RadialGradient = function RadialGradient(colorStops, shape, center, radius) {
  1065. _classCallCheck(this, RadialGradient);
  1066. this.type = GRADIENT_TYPE.RADIAL_GRADIENT;
  1067. this.colorStops = colorStops;
  1068. this.shape = shape;
  1069. this.center = center;
  1070. this.radius = radius;
  1071. };
  1072. var parseGradient = exports.parseGradient = function parseGradient(container, _ref, bounds) {
  1073. var args = _ref.args,
  1074. method = _ref.method,
  1075. prefix = _ref.prefix;
  1076. if (method === 'linear-gradient') {
  1077. return parseLinearGradient(args, bounds, !!prefix);
  1078. } else if (method === 'gradient' && args[0] === 'linear') {
  1079. // TODO handle correct angle
  1080. return parseLinearGradient(['to bottom'].concat(transformObsoleteColorStops(args.slice(3))), bounds, !!prefix);
  1081. } else if (method === 'radial-gradient') {
  1082. return parseRadialGradient(container, prefix === '-webkit-' ? transformWebkitRadialGradientArgs(args) : args, bounds);
  1083. } else if (method === 'gradient' && args[0] === 'radial') {
  1084. return parseRadialGradient(container, transformObsoleteColorStops(transformWebkitRadialGradientArgs(args.slice(1))), bounds);
  1085. }
  1086. };
  1087. var parseColorStops = function parseColorStops(args, firstColorStopIndex, lineLength) {
  1088. var colorStops = [];
  1089. for (var i = firstColorStopIndex; i < args.length; i++) {
  1090. var value = args[i];
  1091. var HAS_LENGTH = ENDS_WITH_LENGTH.test(value);
  1092. var lastSpaceIndex = value.lastIndexOf(' ');
  1093. var _color = new _Color2.default(HAS_LENGTH ? value.substring(0, lastSpaceIndex) : value);
  1094. var _stop = HAS_LENGTH ? new _Length2.default(value.substring(lastSpaceIndex + 1)) : i === firstColorStopIndex ? new _Length2.default('0%') : i === args.length - 1 ? new _Length2.default('100%') : null;
  1095. colorStops.push({ color: _color, stop: _stop });
  1096. }
  1097. var absoluteValuedColorStops = colorStops.map(function (_ref2) {
  1098. var color = _ref2.color,
  1099. stop = _ref2.stop;
  1100. var absoluteStop = lineLength === 0 ? 0 : stop ? stop.getAbsoluteValue(lineLength) / lineLength : null;
  1101. return {
  1102. color: color,
  1103. // $FlowFixMe
  1104. stop: absoluteStop
  1105. };
  1106. });
  1107. var previousColorStop = absoluteValuedColorStops[0].stop;
  1108. for (var _i = 0; _i < absoluteValuedColorStops.length; _i++) {
  1109. if (previousColorStop !== null) {
  1110. var _stop2 = absoluteValuedColorStops[_i].stop;
  1111. if (_stop2 === null) {
  1112. var n = _i;
  1113. while (absoluteValuedColorStops[n].stop === null) {
  1114. n++;
  1115. }
  1116. var steps = n - _i + 1;
  1117. var nextColorStep = absoluteValuedColorStops[n].stop;
  1118. var stepSize = (nextColorStep - previousColorStop) / steps;
  1119. for (; _i < n; _i++) {
  1120. previousColorStop = absoluteValuedColorStops[_i].stop = previousColorStop + stepSize;
  1121. }
  1122. } else {
  1123. previousColorStop = _stop2;
  1124. }
  1125. }
  1126. }
  1127. return absoluteValuedColorStops;
  1128. };
  1129. var parseLinearGradient = function parseLinearGradient(args, bounds, hasPrefix) {
  1130. var angle = (0, _Angle.parseAngle)(args[0]);
  1131. var HAS_SIDE_OR_CORNER = SIDE_OR_CORNER.test(args[0]);
  1132. var HAS_DIRECTION = HAS_SIDE_OR_CORNER || angle !== null || PERCENTAGE_ANGLES.test(args[0]);
  1133. var direction = HAS_DIRECTION ? angle !== null ? calculateGradientDirection(
  1134. // if there is a prefix, the 0° angle points due East (instead of North per W3C)
  1135. hasPrefix ? angle - Math.PI * 0.5 : angle, bounds) : HAS_SIDE_OR_CORNER ? parseSideOrCorner(args[0], bounds) : parsePercentageAngle(args[0], bounds) : calculateGradientDirection(Math.PI, bounds);
  1136. var firstColorStopIndex = HAS_DIRECTION ? 1 : 0;
  1137. // TODO: Fix some inaccuracy with color stops with px values
  1138. var lineLength = Math.min((0, _Util.distance)(Math.abs(direction.x0) + Math.abs(direction.x1), Math.abs(direction.y0) + Math.abs(direction.y1)), bounds.width * 2, bounds.height * 2);
  1139. return new LinearGradient(parseColorStops(args, firstColorStopIndex, lineLength), direction);
  1140. };
  1141. var parseRadialGradient = function parseRadialGradient(container, args, bounds) {
  1142. var m = args[0].match(RADIAL_SHAPE_DEFINITION);
  1143. var shape = m && (m[1] === 'circle' || // explicit shape specification
  1144. m[3] !== undefined && m[5] === undefined) // only one radius coordinate
  1145. ? RADIAL_GRADIENT_SHAPE.CIRCLE : RADIAL_GRADIENT_SHAPE.ELLIPSE;
  1146. var radius = {};
  1147. var center = {};
  1148. if (m) {
  1149. // Radius
  1150. if (m[3] !== undefined) {
  1151. radius.x = (0, _Length.calculateLengthFromValueWithUnit)(container, m[3], m[4]).getAbsoluteValue(bounds.width);
  1152. }
  1153. if (m[5] !== undefined) {
  1154. radius.y = (0, _Length.calculateLengthFromValueWithUnit)(container, m[5], m[6]).getAbsoluteValue(bounds.height);
  1155. }
  1156. // Position
  1157. if (m[7]) {
  1158. center.x = LENGTH_FOR_POSITION[m[7].toLowerCase()];
  1159. } else if (m[8] !== undefined) {
  1160. center.x = (0, _Length.calculateLengthFromValueWithUnit)(container, m[8], m[9]);
  1161. }
  1162. if (m[10]) {
  1163. center.y = LENGTH_FOR_POSITION[m[10].toLowerCase()];
  1164. } else if (m[11] !== undefined) {
  1165. center.y = (0, _Length.calculateLengthFromValueWithUnit)(container, m[11], m[12]);
  1166. }
  1167. }
  1168. var gradientCenter = {
  1169. x: center.x === undefined ? bounds.width / 2 : center.x.getAbsoluteValue(bounds.width),
  1170. y: center.y === undefined ? bounds.height / 2 : center.y.getAbsoluteValue(bounds.height)
  1171. };
  1172. var gradientRadius = calculateRadius(m && m[2] || 'farthest-corner', shape, gradientCenter, radius, bounds);
  1173. return new RadialGradient(parseColorStops(args, m ? 1 : 0, Math.min(gradientRadius.x, gradientRadius.y)), shape, gradientCenter, gradientRadius);
  1174. };
  1175. var calculateGradientDirection = function calculateGradientDirection(radian, bounds) {
  1176. var width = bounds.width;
  1177. var height = bounds.height;
  1178. var HALF_WIDTH = width * 0.5;
  1179. var HALF_HEIGHT = height * 0.5;
  1180. var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));
  1181. var HALF_LINE_LENGTH = lineLength / 2;
  1182. var x0 = HALF_WIDTH + Math.sin(radian) * HALF_LINE_LENGTH;
  1183. var y0 = HALF_HEIGHT - Math.cos(radian) * HALF_LINE_LENGTH;
  1184. var x1 = width - x0;
  1185. var y1 = height - y0;
  1186. return { x0: x0, x1: x1, y0: y0, y1: y1 };
  1187. };
  1188. var parseTopRight = function parseTopRight(bounds) {
  1189. return Math.acos(bounds.width / 2 / ((0, _Util.distance)(bounds.width, bounds.height) / 2));
  1190. };
  1191. var parseSideOrCorner = function parseSideOrCorner(side, bounds) {
  1192. switch (side) {
  1193. case 'bottom':
  1194. case 'to top':
  1195. return calculateGradientDirection(0, bounds);
  1196. case 'left':
  1197. case 'to right':
  1198. return calculateGradientDirection(Math.PI / 2, bounds);
  1199. case 'right':
  1200. case 'to left':
  1201. return calculateGradientDirection(3 * Math.PI / 2, bounds);
  1202. case 'top right':
  1203. case 'right top':
  1204. case 'to bottom left':
  1205. case 'to left bottom':
  1206. return calculateGradientDirection(Math.PI + parseTopRight(bounds), bounds);
  1207. case 'top left':
  1208. case 'left top':
  1209. case 'to bottom right':
  1210. case 'to right bottom':
  1211. return calculateGradientDirection(Math.PI - parseTopRight(bounds), bounds);
  1212. case 'bottom left':
  1213. case 'left bottom':
  1214. case 'to top right':
  1215. case 'to right top':
  1216. return calculateGradientDirection(parseTopRight(bounds), bounds);
  1217. case 'bottom right':
  1218. case 'right bottom':
  1219. case 'to top left':
  1220. case 'to left top':
  1221. return calculateGradientDirection(2 * Math.PI - parseTopRight(bounds), bounds);
  1222. case 'top':
  1223. case 'to bottom':
  1224. default:
  1225. return calculateGradientDirection(Math.PI, bounds);
  1226. }
  1227. };
  1228. var parsePercentageAngle = function parsePercentageAngle(angle, bounds) {
  1229. var _angle$split$map = angle.split(' ').map(parseFloat),
  1230. _angle$split$map2 = _slicedToArray(_angle$split$map, 2),
  1231. left = _angle$split$map2[0],
  1232. top = _angle$split$map2[1];
  1233. var ratio = left / 100 * bounds.width / (top / 100 * bounds.height);
  1234. return calculateGradientDirection(Math.atan(isNaN(ratio) ? 1 : ratio) + Math.PI / 2, bounds);
  1235. };
  1236. var findCorner = function findCorner(bounds, x, y, closest) {
  1237. var corners = [{ x: 0, y: 0 }, { x: 0, y: bounds.height }, { x: bounds.width, y: 0 }, { x: bounds.width, y: bounds.height }];
  1238. // $FlowFixMe
  1239. return corners.reduce(function (stat, corner) {
  1240. var d = (0, _Util.distance)(x - corner.x, y - corner.y);
  1241. if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {
  1242. return {
  1243. optimumCorner: corner,
  1244. optimumDistance: d
  1245. };
  1246. }
  1247. return stat;
  1248. }, {
  1249. optimumDistance: closest ? Infinity : -Infinity,
  1250. optimumCorner: null
  1251. }).optimumCorner;
  1252. };
  1253. var calculateRadius = function calculateRadius(extent, shape, center, radius, bounds) {
  1254. var x = center.x;
  1255. var y = center.y;
  1256. var rx = 0;
  1257. var ry = 0;
  1258. switch (extent) {
  1259. case 'closest-side':
  1260. // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.
  1261. // If the shape is an ellipse, it exactly meets the closest side in each dimension.
  1262. if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
  1263. rx = ry = Math.min(Math.abs(x), Math.abs(x - bounds.width), Math.abs(y), Math.abs(y - bounds.height));
  1264. } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
  1265. rx = Math.min(Math.abs(x), Math.abs(x - bounds.width));
  1266. ry = Math.min(Math.abs(y), Math.abs(y - bounds.height));
  1267. }
  1268. break;
  1269. case 'closest-corner':
  1270. // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.
  1271. // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.
  1272. if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
  1273. rx = ry = Math.min((0, _Util.distance)(x, y), (0, _Util.distance)(x, y - bounds.height), (0, _Util.distance)(x - bounds.width, y), (0, _Util.distance)(x - bounds.width, y - bounds.height));
  1274. } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
  1275. // Compute the ratio ry/rx (which is to be the same as for "closest-side")
  1276. var c = Math.min(Math.abs(y), Math.abs(y - bounds.height)) / Math.min(Math.abs(x), Math.abs(x - bounds.width));
  1277. var corner = findCorner(bounds, x, y, true);
  1278. rx = (0, _Util.distance)(corner.x - x, (corner.y - y) / c);
  1279. ry = c * rx;
  1280. }
  1281. break;
  1282. case 'farthest-side':
  1283. // Same as closest-side, except the ending shape is sized based on the farthest side(s)
  1284. if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
  1285. rx = ry = Math.max(Math.abs(x), Math.abs(x - bounds.width), Math.abs(y), Math.abs(y - bounds.height));
  1286. } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
  1287. rx = Math.max(Math.abs(x), Math.abs(x - bounds.width));
  1288. ry = Math.max(Math.abs(y), Math.abs(y - bounds.height));
  1289. }
  1290. break;
  1291. case 'farthest-corner':
  1292. // Same as closest-corner, except the ending shape is sized based on the farthest corner.
  1293. // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.
  1294. if (shape === RADIAL_GRADIENT_SHAPE.CIRCLE) {
  1295. rx = ry = Math.max((0, _Util.distance)(x, y), (0, _Util.distance)(x, y - bounds.height), (0, _Util.distance)(x - bounds.width, y), (0, _Util.distance)(x - bounds.width, y - bounds.height));
  1296. } else if (shape === RADIAL_GRADIENT_SHAPE.ELLIPSE) {
  1297. // Compute the ratio ry/rx (which is to be the same as for "farthest-side")
  1298. var _c = Math.max(Math.abs(y), Math.abs(y - bounds.height)) / Math.max(Math.abs(x), Math.abs(x - bounds.width));
  1299. var _corner = findCorner(bounds, x, y, false);
  1300. rx = (0, _Util.distance)(_corner.x - x, (_corner.y - y) / _c);
  1301. ry = _c * rx;
  1302. }
  1303. break;
  1304. default:
  1305. // pixel or percentage values
  1306. rx = radius.x || 0;
  1307. ry = radius.y !== undefined ? radius.y : rx;
  1308. break;
  1309. }
  1310. return {
  1311. x: rx,
  1312. y: ry
  1313. };
  1314. };
  1315. var transformWebkitRadialGradientArgs = exports.transformWebkitRadialGradientArgs = function transformWebkitRadialGradientArgs(args) {
  1316. var shape = '';
  1317. var radius = '';
  1318. var extent = '';
  1319. var position = '';
  1320. var idx = 0;
  1321. var POSITION = /^(left|center|right|\d+(?:px|r?em|%)?)(?:\s+(top|center|bottom|\d+(?:px|r?em|%)?))?$/i;
  1322. var SHAPE_AND_EXTENT = /^(circle|ellipse)?\s*(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)?$/i;
  1323. var RADIUS = /^\d+(px|r?em|%)?(?:\s+\d+(px|r?em|%)?)?$/i;
  1324. var matchStartPosition = args[idx].match(POSITION);
  1325. if (matchStartPosition) {
  1326. idx++;
  1327. }
  1328. var matchShapeExtent = args[idx].match(SHAPE_AND_EXTENT);
  1329. if (matchShapeExtent) {
  1330. shape = matchShapeExtent[1] || '';
  1331. extent = matchShapeExtent[2] || '';
  1332. if (extent === 'contain') {
  1333. extent = 'closest-side';
  1334. } else if (extent === 'cover') {
  1335. extent = 'farthest-corner';
  1336. }
  1337. idx++;
  1338. }
  1339. var matchStartRadius = args[idx].match(RADIUS);
  1340. if (matchStartRadius) {
  1341. idx++;
  1342. }
  1343. var matchEndPosition = args[idx].match(POSITION);
  1344. if (matchEndPosition) {
  1345. idx++;
  1346. }
  1347. var matchEndRadius = args[idx].match(RADIUS);
  1348. if (matchEndRadius) {
  1349. idx++;
  1350. }
  1351. var matchPosition = matchEndPosition || matchStartPosition;
  1352. if (matchPosition && matchPosition[1]) {
  1353. position = matchPosition[1] + (/^\d+$/.test(matchPosition[1]) ? 'px' : '');
  1354. if (matchPosition[2]) {
  1355. position += ' ' + matchPosition[2] + (/^\d+$/.test(matchPosition[2]) ? 'px' : '');
  1356. }
  1357. }
  1358. var matchRadius = matchEndRadius || matchStartRadius;
  1359. if (matchRadius) {
  1360. radius = matchRadius[0];
  1361. if (!matchRadius[1]) {
  1362. radius += 'px';
  1363. }
  1364. }
  1365. if (position && !shape && !radius && !extent) {
  1366. radius = position;
  1367. position = '';
  1368. }
  1369. if (position) {
  1370. position = 'at ' + position;
  1371. }
  1372. return [[shape, extent, radius, position].filter(function (s) {
  1373. return !!s;
  1374. }).join(' ')].concat(args.slice(idx));
  1375. };
  1376. var transformObsoleteColorStops = function transformObsoleteColorStops(args) {
  1377. return args.map(function (color) {
  1378. return color.match(FROM_TO_COLORSTOP);
  1379. })
  1380. // $FlowFixMe
  1381. .map(function (v, index) {
  1382. if (!v) {
  1383. return args[index];
  1384. }
  1385. switch (v[1]) {
  1386. case 'from':
  1387. return v[4] + ' 0%';
  1388. case 'to':
  1389. return v[4] + ' 100%';
  1390. case 'color-stop':
  1391. if (v[3] === '%') {
  1392. return v[4] + ' ' + v[2];
  1393. }
  1394. return v[4] + ' ' + parseFloat(v[2]) * 100 + '%';
  1395. }
  1396. });
  1397. };
  1398. /***/ }),
  1399. /* 53 */
  1400. /***/ (function(module, exports, __webpack_require__) {
  1401. "use strict";
  1402. Object.defineProperty(exports, "__esModule", {
  1403. value: true
  1404. });
  1405. var ANGLE = /([+-]?\d*\.?\d+)(deg|grad|rad|turn)/i;
  1406. var parseAngle = exports.parseAngle = function parseAngle(angle) {
  1407. var match = angle.match(ANGLE);
  1408. if (match) {
  1409. var value = parseFloat(match[1]);
  1410. switch (match[2].toLowerCase()) {
  1411. case 'deg':
  1412. return Math.PI * value / 180;
  1413. case 'grad':
  1414. return Math.PI / 200 * value;
  1415. case 'rad':
  1416. return value;
  1417. case 'turn':
  1418. return Math.PI * 2 * value;
  1419. }
  1420. }
  1421. return null;
  1422. };
  1423. /***/ }),
  1424. /* 54 */
  1425. /***/ (function(module, exports, __webpack_require__) {
  1426. "use strict";
  1427. Object.defineProperty(exports, "__esModule", {
  1428. value: true
  1429. });
  1430. exports.cloneWindow = exports.DocumentCloner = undefined;
  1431. var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
  1432. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1433. var _Bounds = __webpack_require__(2);
  1434. var _Proxy = __webpack_require__(26);
  1435. var _ResourceLoader = __webpack_require__(55);
  1436. var _ResourceLoader2 = _interopRequireDefault(_ResourceLoader);
  1437. var _Util = __webpack_require__(3);
  1438. var _background = __webpack_require__(4);
  1439. var _CanvasRenderer = __webpack_require__(15);
  1440. var _CanvasRenderer2 = _interopRequireDefault(_CanvasRenderer);
  1441. var _PseudoNodeContent = __webpack_require__(56);
  1442. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  1443. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1444. var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';
  1445. var DocumentCloner = exports.DocumentCloner = function () {
  1446. function DocumentCloner(element, options, logger, copyInline, renderer) {
  1447. _classCallCheck(this, DocumentCloner);
  1448. this.referenceElement = element;
  1449. this.scrolledElements = [];
  1450. this.copyStyles = copyInline;
  1451. this.inlineImages = copyInline;
  1452. this.logger = logger;
  1453. this.options = options;
  1454. this.renderer = renderer;
  1455. this.resourceLoader = new _ResourceLoader2.default(options, logger, window);
  1456. this.pseudoContentData = {
  1457. counters: {},
  1458. quoteDepth: 0
  1459. };
  1460. // $FlowFixMe
  1461. this.documentElement = this.cloneNode(element.ownerDocument.documentElement);
  1462. }
  1463. _createClass(DocumentCloner, [{
  1464. key: 'inlineAllImages',
  1465. value: function inlineAllImages(node) {
  1466. var _this = this;
  1467. if (this.inlineImages && node) {
  1468. var style = node.style;
  1469. Promise.all((0, _background.parseBackgroundImage)(style.backgroundImage).map(function (backgroundImage) {
  1470. if (backgroundImage.method === 'url') {
  1471. return _this.resourceLoader.inlineImage(backgroundImage.args[0]).then(function (img) {
  1472. return img && typeof img.src === 'string' ? 'url("' + img.src + '")' : 'none';
  1473. }).catch(function (e) {
  1474. if (true) {
  1475. _this.logger.log('Unable to load image', e);
  1476. }
  1477. });
  1478. }
  1479. return Promise.resolve('' + backgroundImage.prefix + backgroundImage.method + '(' + backgroundImage.args.join(',') + ')');
  1480. })).then(function (backgroundImages) {
  1481. if (backgroundImages.length > 1) {
  1482. // TODO Multiple backgrounds somehow broken in Chrome
  1483. style.backgroundColor = '';
  1484. }
  1485. style.backgroundImage = backgroundImages.join(',');
  1486. });
  1487. if (node instanceof HTMLImageElement) {
  1488. this.resourceLoader.inlineImage(node.src).then(function (img) {
  1489. if (img && node instanceof HTMLImageElement && node.parentNode) {
  1490. var parentNode = node.parentNode;
  1491. var clonedChild = (0, _Util.copyCSSStyles)(node.style, img.cloneNode(false));
  1492. parentNode.replaceChild(clonedChild, node);
  1493. }
  1494. }).catch(function (e) {
  1495. if (true) {
  1496. _this.logger.log('Unable to load image', e);
  1497. }
  1498. });
  1499. }
  1500. }
  1501. }
  1502. }, {
  1503. key: 'inlineFonts',
  1504. value: function inlineFonts(document) {
  1505. var _this2 = this;
  1506. return Promise.all(Array.from(document.styleSheets).map(function (sheet) {
  1507. if (sheet.href) {
  1508. return fetch(sheet.href).then(function (res) {
  1509. return res.text();
  1510. }).then(function (text) {
  1511. return createStyleSheetFontsFromText(text, sheet.href);
  1512. }).catch(function (e) {
  1513. if (true) {
  1514. _this2.logger.log('Unable to load stylesheet', e);
  1515. }
  1516. return [];
  1517. });
  1518. }
  1519. return getSheetFonts(sheet, document);
  1520. })).then(function (fonts) {
  1521. return fonts.reduce(function (acc, font) {
  1522. return acc.concat(font);
  1523. }, []);
  1524. }).then(function (fonts) {
  1525. return Promise.all(fonts.map(function (font) {
  1526. return fetch(font.formats[0].src).then(function (response) {
  1527. return response.blob();
  1528. }).then(function (blob) {
  1529. return new Promise(function (resolve, reject) {
  1530. var reader = new FileReader();
  1531. reader.onerror = reject;
  1532. reader.onload = function () {
  1533. // $FlowFixMe
  1534. var result = reader.result;
  1535. resolve(result);
  1536. };
  1537. reader.readAsDataURL(blob);
  1538. });
  1539. }).then(function (dataUri) {
  1540. font.fontFace.setProperty('src', 'url("' + dataUri + '")');
  1541. return '@font-face {' + font.fontFace.cssText + ' ';
  1542. });
  1543. }));
  1544. }).then(function (fontCss) {
  1545. var style = document.createElement('style');
  1546. style.textContent = fontCss.join('\n');
  1547. _this2.documentElement.appendChild(style);
  1548. });
  1549. }
  1550. }, {
  1551. key: 'createElementClone',
  1552. value: function createElementClone(node) {
  1553. var _this3 = this;
  1554. if (this.copyStyles && node instanceof HTMLCanvasElement) {
  1555. var img = node.ownerDocument.createElement('img');
  1556. try {
  1557. img.src = node.toDataURL();
  1558. return img;
  1559. } catch (e) {
  1560. if (true) {
  1561. this.logger.log('Unable to clone canvas contents, canvas is tainted');
  1562. }
  1563. }
  1564. }
  1565. if (node instanceof HTMLIFrameElement) {
  1566. var tempIframe = node.cloneNode(false);
  1567. var iframeKey = generateIframeKey();
  1568. tempIframe.setAttribute('data-html2canvas-internal-iframe-key', iframeKey);
  1569. var _parseBounds = (0, _Bounds.parseBounds)(node, 0, 0),
  1570. width = _parseBounds.width,
  1571. height = _parseBounds.height;
  1572. this.resourceLoader.cache[iframeKey] = getIframeDocumentElement(node, this.options).then(function (documentElement) {
  1573. return _this3.renderer(documentElement, {
  1574. async: _this3.options.async,
  1575. allowTaint: _this3.options.allowTaint,
  1576. backgroundColor: '#ffffff',
  1577. canvas: null,
  1578. imageTimeout: _this3.options.imageTimeout,
  1579. logging: _this3.options.logging,
  1580. proxy: _this3.options.proxy,
  1581. removeContainer: _this3.options.removeContainer,
  1582. scale: _this3.options.scale,
  1583. foreignObjectRendering: _this3.options.foreignObjectRendering,
  1584. useCORS: _this3.options.useCORS,
  1585. target: new _CanvasRenderer2.default(),
  1586. width: width,
  1587. height: height,
  1588. x: 0,
  1589. y: 0,
  1590. windowWidth: documentElement.ownerDocument.defaultView.innerWidth,
  1591. windowHeight: documentElement.ownerDocument.defaultView.innerHeight,
  1592. scrollX: documentElement.ownerDocument.defaultView.pageXOffset,
  1593. scrollY: documentElement.ownerDocument.defaultView.pageYOffset
  1594. }, _this3.logger.child(iframeKey));
  1595. }).then(function (canvas) {
  1596. return new Promise(function (resolve, reject) {
  1597. var iframeCanvas = document.createElement('img');
  1598. iframeCanvas.onload = function () {
  1599. return resolve(canvas);
  1600. };
  1601. iframeCanvas.onerror = reject;
  1602. iframeCanvas.src = canvas.toDataURL();
  1603. if (tempIframe.parentNode) {
  1604. tempIframe.parentNode.replaceChild((0, _Util.copyCSSStyles)(node.ownerDocument.defaultView.getComputedStyle(node), iframeCanvas), tempIframe);
  1605. }
  1606. });
  1607. });
  1608. return tempIframe;
  1609. }
  1610. if (node instanceof HTMLStyleElement && node.sheet && node.sheet.cssRules) {
  1611. var css = [].slice.call(node.sheet.cssRules, 0).reduce(function (css, rule) {
  1612. try {
  1613. if (rule && rule.cssText) {
  1614. return css + rule.cssText;
  1615. }
  1616. return css;
  1617. } catch (err) {
  1618. _this3.logger.log('Unable to access cssText property', rule.name);
  1619. return css;
  1620. }
  1621. }, '');
  1622. var style = node.cloneNode(false);
  1623. style.textContent = css;
  1624. return style;
  1625. }
  1626. return node.cloneNode(false);
  1627. }
  1628. }, {
  1629. key: 'cloneNode',
  1630. value: function cloneNode(node) {
  1631. var clone = node.nodeType === Node.TEXT_NODE ? document.createTextNode(node.nodeValue) : this.createElementClone(node);
  1632. var window = node.ownerDocument.defaultView;
  1633. var style = node instanceof window.HTMLElement ? window.getComputedStyle(node) : null;
  1634. var styleBefore = node instanceof window.HTMLElement ? window.getComputedStyle(node, ':before') : null;
  1635. var styleAfter = node instanceof window.HTMLElement ? window.getComputedStyle(node, ':after') : null;
  1636. if (this.referenceElement === node && clone instanceof window.HTMLElement) {
  1637. this.clonedReferenceElement = clone;
  1638. }
  1639. if (clone instanceof window.HTMLBodyElement) {
  1640. createPseudoHideStyles(clone);
  1641. }
  1642. var counters = (0, _PseudoNodeContent.parseCounterReset)(style, this.pseudoContentData);
  1643. var contentBefore = (0, _PseudoNodeContent.resolvePseudoContent)(node, styleBefore, this.pseudoContentData);
  1644. for (var child = node.firstChild; child; child = child.nextSibling) {
  1645. if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT' &&
  1646. // $FlowFixMe
  1647. !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== 'function' ||
  1648. // $FlowFixMe
  1649. !this.options.ignoreElements(child))) {
  1650. if (!this.copyStyles || child.nodeName !== 'STYLE') {
  1651. clone.appendChild(this.cloneNode(child));
  1652. }
  1653. }
  1654. }
  1655. var contentAfter = (0, _PseudoNodeContent.resolvePseudoContent)(node, styleAfter, this.pseudoContentData);
  1656. (0, _PseudoNodeContent.popCounters)(counters, this.pseudoContentData);
  1657. if (node instanceof window.HTMLElement && clone instanceof window.HTMLElement) {
  1658. if (styleBefore) {
  1659. this.inlineAllImages(inlinePseudoElement(node, clone, styleBefore, contentBefore, PSEUDO_BEFORE));
  1660. }
  1661. if (styleAfter) {
  1662. this.inlineAllImages(inlinePseudoElement(node, clone, styleAfter, contentAfter, PSEUDO_AFTER));
  1663. }
  1664. if (style && this.copyStyles && !(node instanceof HTMLIFrameElement)) {
  1665. (0, _Util.copyCSSStyles)(style, clone);
  1666. }
  1667. this.inlineAllImages(clone);
  1668. if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
  1669. this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);
  1670. }
  1671. switch (node.nodeName) {
  1672. case 'CANVAS':
  1673. if (!this.copyStyles) {
  1674. cloneCanvasContents(node, clone);
  1675. }
  1676. break;
  1677. case 'TEXTAREA':
  1678. case 'SELECT':
  1679. clone.value = node.value;
  1680. break;
  1681. }
  1682. }
  1683. return clone;
  1684. }
  1685. }]);
  1686. return DocumentCloner;
  1687. }();
  1688. var getSheetFonts = function getSheetFonts(sheet, document) {
  1689. // $FlowFixMe
  1690. return (sheet.cssRules ? Array.from(sheet.cssRules) : []).filter(function (rule) {
  1691. return rule.type === CSSRule.FONT_FACE_RULE;
  1692. }).map(function (rule) {
  1693. var src = (0, _background.parseBackgroundImage)(rule.style.getPropertyValue('src'));
  1694. var formats = [];
  1695. for (var i = 0; i < src.length; i++) {
  1696. if (src[i].method === 'url' && src[i + 1] && src[i + 1].method === 'format') {
  1697. var a = document.createElement('a');
  1698. a.href = src[i].args[0];
  1699. if (document.body) {
  1700. document.body.appendChild(a);
  1701. }
  1702. var font = {
  1703. src: a.href,
  1704. format: src[i + 1].args[0]
  1705. };
  1706. formats.push(font);
  1707. }
  1708. }
  1709. return {
  1710. // TODO select correct format for browser),
  1711. formats: formats.filter(function (font) {
  1712. return (/^woff/i.test(font.format)
  1713. );
  1714. }),
  1715. fontFace: rule.style
  1716. };
  1717. }).filter(function (font) {
  1718. return font.formats.length;
  1719. });
  1720. };
  1721. var createStyleSheetFontsFromText = function createStyleSheetFontsFromText(text, baseHref) {
  1722. var doc = document.implementation.createHTMLDocument('');
  1723. var base = document.createElement('base');
  1724. // $FlowFixMe
  1725. base.href = baseHref;
  1726. var style = document.createElement('style');
  1727. style.textContent = text;
  1728. if (doc.head) {
  1729. doc.head.appendChild(base);
  1730. }
  1731. if (doc.body) {
  1732. doc.body.appendChild(style);
  1733. }
  1734. return style.sheet ? getSheetFonts(style.sheet, doc) : [];
  1735. };
  1736. var restoreOwnerScroll = function restoreOwnerScroll(ownerDocument, x, y) {
  1737. if (ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {
  1738. ownerDocument.defaultView.scrollTo(x, y);
  1739. }
  1740. };
  1741. var cloneCanvasContents = function cloneCanvasContents(canvas, clonedCanvas) {
  1742. try {
  1743. if (clonedCanvas) {
  1744. clonedCanvas.width = canvas.width;
  1745. clonedCanvas.height = canvas.height;
  1746. var ctx = canvas.getContext('2d');
  1747. var clonedCtx = clonedCanvas.getContext('2d');
  1748. if (ctx) {
  1749. clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
  1750. } else {
  1751. clonedCtx.drawImage(canvas, 0, 0);
  1752. }
  1753. }
  1754. } catch (e) {}
  1755. };
  1756. var inlinePseudoElement = function inlinePseudoElement(node, clone, style, contentItems, pseudoElt) {
  1757. if (!style || !style.content || style.content === 'none' || style.content === '-moz-alt-content' || style.display === 'none') {
  1758. return;
  1759. }
  1760. var anonymousReplacedElement = clone.ownerDocument.createElement('html2canvaspseudoelement');
  1761. (0, _Util.copyCSSStyles)(style, anonymousReplacedElement);
  1762. if (contentItems) {
  1763. var len = contentItems.length;
  1764. for (var i = 0; i < len; i++) {
  1765. var item = contentItems[i];
  1766. switch (item.type) {
  1767. case _PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE.IMAGE:
  1768. var img = clone.ownerDocument.createElement('img');
  1769. img.src = (0, _background.parseBackgroundImage)('url(' + item.value + ')')[0].args[0];
  1770. img.style.opacity = '1';
  1771. anonymousReplacedElement.appendChild(img);
  1772. break;
  1773. case _PseudoNodeContent.PSEUDO_CONTENT_ITEM_TYPE.TEXT:
  1774. anonymousReplacedElement.appendChild(clone.ownerDocument.createTextNode(item.value));
  1775. break;
  1776. }
  1777. }
  1778. }
  1779. anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
  1780. clone.className += pseudoElt === PSEUDO_BEFORE ? ' ' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
  1781. if (pseudoElt === PSEUDO_BEFORE) {
  1782. clone.insertBefore(anonymousReplacedElement, clone.firstChild);
  1783. } else {
  1784. clone.appendChild(anonymousReplacedElement);
  1785. }
  1786. return anonymousReplacedElement;
  1787. };
  1788. var URL_REGEXP = /^url\((.+)\)$/i;
  1789. var PSEUDO_BEFORE = ':before';
  1790. var PSEUDO_AFTER = ':after';
  1791. var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';
  1792. var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';
  1793. var PSEUDO_HIDE_ELEMENT_STYLE = '{\n content: "" !important;\n display: none !important;\n}';
  1794. var createPseudoHideStyles = function createPseudoHideStyles(body) {
  1795. createStyles(body, '.' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + '\n .' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);
  1796. };
  1797. var createStyles = function createStyles(body, styles) {
  1798. var style = body.ownerDocument.createElement('style');
  1799. style.innerHTML = styles;
  1800. body.appendChild(style);
  1801. };
  1802. var initNode = function initNode(_ref) {
  1803. var _ref2 = _slicedToArray(_ref, 3),
  1804. element = _ref2[0],
  1805. x = _ref2[1],
  1806. y = _ref2[2];
  1807. element.scrollLeft = x;
  1808. element.scrollTop = y;
  1809. };
  1810. var generateIframeKey = function generateIframeKey() {
  1811. return Math.ceil(Date.now() + Math.random() * 10000000).toString(16);
  1812. };
  1813. var DATA_URI_REGEXP = /^data:text\/(.+);(base64)?,(.*)$/i;
  1814. var getIframeDocumentElement = function getIframeDocumentElement(node, options) {
  1815. try {
  1816. return Promise.resolve(node.contentWindow.document.documentElement);
  1817. } catch (e) {
  1818. return options.proxy ? (0, _Proxy.Proxy)(node.src, options).then(function (html) {
  1819. var match = html.match(DATA_URI_REGEXP);
  1820. if (!match) {
  1821. return Promise.reject();
  1822. }
  1823. return match[2] === 'base64' ? window.atob(decodeURIComponent(match[3])) : decodeURIComponent(match[3]);
  1824. }).then(function (html) {
  1825. return createIframeContainer(node.ownerDocument, (0, _Bounds.parseBounds)(node, 0, 0)).then(function (cloneIframeContainer) {
  1826. var cloneWindow = cloneIframeContainer.contentWindow;
  1827. var documentClone = cloneWindow.document;
  1828. documentClone.open();
  1829. documentClone.write(html);
  1830. var iframeLoad = iframeLoader(cloneIframeContainer).then(function () {
  1831. return documentClone.documentElement;
  1832. });
  1833. documentClone.close();
  1834. return iframeLoad;
  1835. });
  1836. }) : Promise.reject();
  1837. }
  1838. };
  1839. var createIframeContainer = function createIframeContainer(ownerDocument, bounds) {
  1840. var cloneIframeContainer = ownerDocument.createElement('iframe');
  1841. cloneIframeContainer.className = 'html2canvas-container';
  1842. cloneIframeContainer.style.visibility = 'hidden';
  1843. cloneIframeContainer.style.position = 'fixed';
  1844. cloneIframeContainer.style.left = '-10000px';
  1845. cloneIframeContainer.style.top = '0px';
  1846. cloneIframeContainer.style.border = '0';
  1847. cloneIframeContainer.width = bounds.width.toString();
  1848. cloneIframeContainer.height = bounds.height.toString();
  1849. cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it
  1850. cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');
  1851. if (!ownerDocument.body) {
  1852. return Promise.reject( true ? 'Body element not found in Document that is getting rendered' : '');
  1853. }
  1854. ownerDocument.body.appendChild(cloneIframeContainer);
  1855. return Promise.resolve(cloneIframeContainer);
  1856. };
  1857. var iframeLoader = function iframeLoader(cloneIframeContainer) {
  1858. var cloneWindow = cloneIframeContainer.contentWindow;
  1859. var documentClone = cloneWindow.document;
  1860. return new Promise(function (resolve, reject) {
  1861. cloneWindow.onload = cloneIframeContainer.onload = documentClone.onreadystatechange = function () {
  1862. var interval = setInterval(function () {
  1863. if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {
  1864. clearInterval(interval);
  1865. resolve(cloneIframeContainer);
  1866. }
  1867. }, 50);
  1868. };
  1869. });
  1870. };
  1871. var cloneWindow = exports.cloneWindow = function cloneWindow(ownerDocument, bounds, referenceElement, options, logger, renderer) {
  1872. var cloner = new DocumentCloner(referenceElement, options, logger, false, renderer);
  1873. var scrollX = ownerDocument.defaultView.pageXOffset;
  1874. var scrollY = ownerDocument.defaultView.pageYOffset;
  1875. return createIframeContainer(ownerDocument, bounds).then(function (cloneIframeContainer) {
  1876. var cloneWindow = cloneIframeContainer.contentWindow;
  1877. var documentClone = cloneWindow.document;
  1878. /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle
  1879. if window url is about:blank, we can assign the url to current by writing onto the document
  1880. */
  1881. var iframeLoad = iframeLoader(cloneIframeContainer).then(function () {
  1882. cloner.scrolledElements.forEach(initNode);
  1883. cloneWindow.scrollTo(bounds.left, bounds.top);
  1884. if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== bounds.top || cloneWindow.scrollX !== bounds.left)) {
  1885. documentClone.documentElement.style.top = -bounds.top + 'px';
  1886. documentClone.documentElement.style.left = -bounds.left + 'px';
  1887. documentClone.documentElement.style.position = 'absolute';
  1888. }
  1889. var result = Promise.resolve([cloneIframeContainer, cloner.clonedReferenceElement, cloner.resourceLoader]);
  1890. var onclone = options.onclone;
  1891. return cloner.clonedReferenceElement instanceof cloneWindow.HTMLElement || cloner.clonedReferenceElement instanceof ownerDocument.defaultView.HTMLElement || cloner.clonedReferenceElement instanceof HTMLElement ? typeof onclone === 'function' ? Promise.resolve().then(function () {
  1892. return onclone(documentClone);
  1893. }).then(function () {
  1894. return result;
  1895. }) : result : Promise.reject( true ? 'Error finding the ' + referenceElement.nodeName + ' in the cloned document' : '');
  1896. });
  1897. documentClone.open();
  1898. documentClone.write(serializeDoctype(document.doctype) + '<html></html>');
  1899. // Chrome scrolls the parent document for some reason after the write to the cloned window???
  1900. restoreOwnerScroll(referenceElement.ownerDocument, scrollX, scrollY);
  1901. documentClone.replaceChild(documentClone.adoptNode(cloner.documentElement), documentClone.documentElement);
  1902. documentClone.close();
  1903. return iframeLoad;
  1904. });
  1905. };
  1906. var serializeDoctype = function serializeDoctype(doctype) {
  1907. var str = '';
  1908. if (doctype) {
  1909. str += '<!DOCTYPE ';
  1910. if (doctype.name) {
  1911. str += doctype.name;
  1912. }
  1913. if (doctype.internalSubset) {
  1914. str += doctype.internalSubset;
  1915. }
  1916. if (doctype.publicId) {
  1917. str += '"' + doctype.publicId + '"';
  1918. }
  1919. if (doctype.systemId) {
  1920. str += '"' + doctype.systemId + '"';
  1921. }
  1922. str += '>';
  1923. }
  1924. return str;
  1925. };
  1926. /***/ }),
  1927. /* 55 */
  1928. /***/ (function(module, exports, __webpack_require__) {
  1929. "use strict";
  1930. Object.defineProperty(exports, "__esModule", {
  1931. value: true
  1932. });
  1933. exports.ResourceStore = undefined;
  1934. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1935. var _Feature = __webpack_require__(10);
  1936. var _Feature2 = _interopRequireDefault(_Feature);
  1937. var _Proxy = __webpack_require__(26);
  1938. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  1939. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1940. var ResourceLoader = function () {
  1941. function ResourceLoader(options, logger, window) {
  1942. _classCallCheck(this, ResourceLoader);
  1943. this.options = options;
  1944. this._window = window;
  1945. this.origin = this.getOrigin(window.location.href);
  1946. this.cache = {};
  1947. this.logger = logger;
  1948. this._index = 0;
  1949. }
  1950. _createClass(ResourceLoader, [{
  1951. key: 'loadImage',
  1952. value: function loadImage(src) {
  1953. var _this = this;
  1954. if (this.hasResourceInCache(src)) {
  1955. return src;
  1956. }
  1957. if (isBlobImage(src)) {
  1958. this.cache[src] = _loadImage(src, this.options.imageTimeout || 0);
  1959. return src;
  1960. }
  1961. if (!isSVG(src) || _Feature2.default.SUPPORT_SVG_DRAWING) {
  1962. if (this.options.allowTaint === true || isInlineImage(src) || this.isSameOrigin(src)) {
  1963. return this.addImage(src, src, false);
  1964. } else if (!this.isSameOrigin(src)) {
  1965. if (typeof this.options.proxy === 'string') {
  1966. this.cache[src] = (0, _Proxy.Proxy)(src, this.options).then(function (src) {
  1967. return _loadImage(src, _this.options.imageTimeout || 0);
  1968. });
  1969. return src;
  1970. } else if (this.options.useCORS === true && _Feature2.default.SUPPORT_CORS_IMAGES) {
  1971. return this.addImage(src, src, true);
  1972. }
  1973. }
  1974. }
  1975. }
  1976. }, {
  1977. key: 'inlineImage',
  1978. value: function inlineImage(src) {
  1979. var _this2 = this;
  1980. if (isInlineImage(src)) {
  1981. return _loadImage(src, this.options.imageTimeout || 0);
  1982. }
  1983. if (this.hasResourceInCache(src)) {
  1984. return this.cache[src];
  1985. }
  1986. if (!this.isSameOrigin(src) && typeof this.options.proxy === 'string') {
  1987. return this.cache[src] = (0, _Proxy.Proxy)(src, this.options).then(function (src) {
  1988. return _loadImage(src, _this2.options.imageTimeout || 0);
  1989. });
  1990. }
  1991. return this.xhrImage(src);
  1992. }
  1993. }, {
  1994. key: 'xhrImage',
  1995. value: function xhrImage(src) {
  1996. var _this3 = this;
  1997. this.cache[src] = new Promise(function (resolve, reject) {
  1998. var xhr = new XMLHttpRequest();
  1999. xhr.onreadystatechange = function () {
  2000. if (xhr.readyState === 4) {
  2001. if (xhr.status !== 200) {
  2002. reject('Failed to fetch image ' + src.substring(0, 256) + ' with status code ' + xhr.status);
  2003. } else {
  2004. var reader = new FileReader();
  2005. reader.addEventListener('load', function () {
  2006. // $FlowFixMe
  2007. var result = reader.result;
  2008. resolve(result);
  2009. }, false);
  2010. reader.addEventListener('error', function (e) {
  2011. return reject(e);
  2012. }, false);
  2013. reader.readAsDataURL(xhr.response);
  2014. }
  2015. }
  2016. };
  2017. xhr.responseType = 'blob';
  2018. if (_this3.options.imageTimeout) {
  2019. var timeout = _this3.options.imageTimeout;
  2020. xhr.timeout = timeout;
  2021. xhr.ontimeout = function () {
  2022. return reject( true ? 'Timed out (' + timeout + 'ms) fetching ' + src.substring(0, 256) : '');
  2023. };
  2024. }
  2025. xhr.open('GET', src, true);
  2026. xhr.send();
  2027. }).then(function (src) {
  2028. return _loadImage(src, _this3.options.imageTimeout || 0);
  2029. });
  2030. return this.cache[src];
  2031. }
  2032. }, {
  2033. key: 'loadCanvas',
  2034. value: function loadCanvas(node) {
  2035. var key = String(this._index++);
  2036. this.cache[key] = Promise.resolve(node);
  2037. return key;
  2038. }
  2039. }, {
  2040. key: 'hasResourceInCache',
  2041. value: function hasResourceInCache(key) {
  2042. return typeof this.cache[key] !== 'undefined';
  2043. }
  2044. }, {
  2045. key: 'addImage',
  2046. value: function addImage(key, src, useCORS) {
  2047. var _this4 = this;
  2048. if (true) {
  2049. this.logger.log('Added image ' + key.substring(0, 256));
  2050. }
  2051. var imageLoadHandler = function imageLoadHandler(supportsDataImages) {
  2052. return new Promise(function (resolve, reject) {
  2053. var img = new Image();
  2054. img.onload = function () {
  2055. return resolve(img);
  2056. };
  2057. //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous
  2058. if (!supportsDataImages || useCORS) {
  2059. // img.crossOrigin = 'anonymous'; // !!!此处修改
  2060. img.crossOrigin = '';
  2061. }
  2062. img.onerror = reject;
  2063. // img.src = src; // !!!此处修改
  2064. if(src.indexOf('data:image')>-1){ // 图片地址后加时间 base64图片不变
  2065. // base64 图片操作
  2066. img.src = src;
  2067. }else{
  2068. //path 图片操作
  2069. img.src = src+"?"+new Date().getTime();
  2070. }
  2071. if (img.complete === true) {
  2072. // Inline XML images may fail to parse, throwing an Error later on
  2073. setTimeout(function () {
  2074. resolve(img);
  2075. }, 500);
  2076. }
  2077. if (_this4.options.imageTimeout) {
  2078. var timeout = _this4.options.imageTimeout;
  2079. setTimeout(function () {
  2080. return reject( true ? 'Timed out (' + timeout + 'ms) fetching ' + src.substring(0, 256) : '');
  2081. }, timeout);
  2082. }
  2083. });
  2084. };
  2085. this.cache[key] = isInlineBase64Image(src) && !isSVG(src) ? // $FlowFixMe
  2086. _Feature2.default.SUPPORT_BASE64_DRAWING(src).then(imageLoadHandler) : imageLoadHandler(true);
  2087. return key;
  2088. }
  2089. }, {
  2090. key: 'isSameOrigin',
  2091. value: function isSameOrigin(url) {
  2092. return this.getOrigin(url) === this.origin;
  2093. }
  2094. }, {
  2095. key: 'getOrigin',
  2096. value: function getOrigin(url) {
  2097. var link = this._link || (this._link = this._window.document.createElement('a'));
  2098. link.href = url;
  2099. link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/
  2100. return link.protocol + link.hostname + link.port;
  2101. }
  2102. }, {
  2103. key: 'ready',
  2104. value: function ready() {
  2105. var _this5 = this;
  2106. var keys = Object.keys(this.cache);
  2107. var values = keys.map(function (str) {
  2108. return _this5.cache[str].catch(function (e) {
  2109. if (true) {
  2110. _this5.logger.log('Unable to load image', e);
  2111. }
  2112. return null;
  2113. });
  2114. });
  2115. return Promise.all(values).then(function (images) {
  2116. if (true) {
  2117. _this5.logger.log('Finished loading ' + images.length + ' images', images);
  2118. }
  2119. return new ResourceStore(keys, images);
  2120. });
  2121. }
  2122. }]);
  2123. return ResourceLoader;
  2124. }();
  2125. exports.default = ResourceLoader;
  2126. var ResourceStore = exports.ResourceStore = function () {
  2127. function ResourceStore(keys, resources) {
  2128. _classCallCheck(this, ResourceStore);
  2129. this._keys = keys;
  2130. this._resources = resources;
  2131. }
  2132. _createClass(ResourceStore, [{
  2133. key: 'get',
  2134. value: function get(key) {
  2135. var index = this._keys.indexOf(key);
  2136. return index === -1 ? null : this._resources[index];
  2137. }
  2138. }]);
  2139. return ResourceStore;
  2140. }();
  2141. var INLINE_SVG = /^data:image\/svg\+xml/i;
  2142. var INLINE_BASE64 = /^data:image\/.*;base64,/i;
  2143. var INLINE_IMG = /^data:image\/.*/i;
  2144. var isInlineImage = function isInlineImage(src) {
  2145. return INLINE_IMG.test(src);
  2146. };
  2147. var isInlineBase64Image = function isInlineBase64Image(src) {
  2148. return INLINE_BASE64.test(src);
  2149. };
  2150. var isBlobImage = function isBlobImage(src) {
  2151. return src.substr(0, 4) === 'blob';
  2152. };
  2153. var isSVG = function isSVG(src) {
  2154. return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);
  2155. };
  2156. var _loadImage = function _loadImage(src, timeout) {
  2157. return new Promise(function (resolve, reject) {
  2158. var img = new Image();
  2159. img.onload = function () {
  2160. return resolve(img);
  2161. };
  2162. img.onerror = reject;
  2163. img.src = src;
  2164. if (img.complete === true) {
  2165. // Inline XML images may fail to parse, throwing an Error later on
  2166. setTimeout(function () {
  2167. resolve(img);
  2168. }, 500);
  2169. }
  2170. if (timeout) {
  2171. setTimeout(function () {
  2172. return reject( true ? 'Timed out (' + timeout + 'ms) loading image' : '');
  2173. }, timeout);
  2174. }
  2175. });
  2176. };
  2177. /***/ }),
  2178. /* 56 */
  2179. /***/ (function(module, exports, __webpack_require__) {
  2180. "use strict";
  2181. Object.defineProperty(exports, "__esModule", {
  2182. value: true
  2183. });
  2184. exports.parseContent = exports.resolvePseudoContent = exports.popCounters = exports.parseCounterReset = exports.TOKEN_TYPE = exports.PSEUDO_CONTENT_ITEM_TYPE = undefined;
  2185. var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
  2186. var _ListItem = __webpack_require__(14);
  2187. var _listStyle = __webpack_require__(8);
  2188. var PSEUDO_CONTENT_ITEM_TYPE = exports.PSEUDO_CONTENT_ITEM_TYPE = {
  2189. TEXT: 0,
  2190. IMAGE: 1
  2191. };
  2192. var TOKEN_TYPE = exports.TOKEN_TYPE = {
  2193. STRING: 0,
  2194. ATTRIBUTE: 1,
  2195. URL: 2,
  2196. COUNTER: 3,
  2197. COUNTERS: 4,
  2198. OPENQUOTE: 5,
  2199. CLOSEQUOTE: 6
  2200. };
  2201. var parseCounterReset = exports.parseCounterReset = function parseCounterReset(style, data) {
  2202. if (!style || !style.counterReset || style.counterReset === 'none') {
  2203. return [];
  2204. }
  2205. var counterNames = [];
  2206. var counterResets = style.counterReset.split(/\s*,\s*/);
  2207. var lenCounterResets = counterResets.length;
  2208. for (var i = 0; i < lenCounterResets; i++) {
  2209. var _counterResets$i$spli = counterResets[i].split(/\s+/),
  2210. _counterResets$i$spli2 = _slicedToArray(_counterResets$i$spli, 2),
  2211. counterName = _counterResets$i$spli2[0],
  2212. initialValue = _counterResets$i$spli2[1];
  2213. counterNames.push(counterName);
  2214. var counter = data.counters[counterName];
  2215. if (!counter) {
  2216. counter = data.counters[counterName] = [];
  2217. }
  2218. counter.push(parseInt(initialValue || 0, 10));
  2219. }
  2220. return counterNames;
  2221. };
  2222. var popCounters = exports.popCounters = function popCounters(counterNames, data) {
  2223. var lenCounters = counterNames.length;
  2224. for (var i = 0; i < lenCounters; i++) {
  2225. data.counters[counterNames[i]].pop();
  2226. }
  2227. };
  2228. var resolvePseudoContent = exports.resolvePseudoContent = function resolvePseudoContent(node, style, data) {
  2229. if (!style || !style.content || style.content === 'none' || style.content === '-moz-alt-content' || style.display === 'none') {
  2230. return null;
  2231. }
  2232. var tokens = parseContent(style.content);
  2233. var len = tokens.length;
  2234. var contentItems = [];
  2235. var s = '';
  2236. // increment the counter (if there is a "counter-increment" declaration)
  2237. var counterIncrement = style.counterIncrement;
  2238. if (counterIncrement && counterIncrement !== 'none') {
  2239. var _counterIncrement$spl = counterIncrement.split(/\s+/),
  2240. _counterIncrement$spl2 = _slicedToArray(_counterIncrement$spl, 2),
  2241. counterName = _counterIncrement$spl2[0],
  2242. incrementValue = _counterIncrement$spl2[1];
  2243. var counter = data.counters[counterName];
  2244. if (counter) {
  2245. counter[counter.length - 1] += incrementValue === undefined ? 1 : parseInt(incrementValue, 10);
  2246. }
  2247. }
  2248. // build the content string
  2249. for (var i = 0; i < len; i++) {
  2250. var token = tokens[i];
  2251. switch (token.type) {
  2252. case TOKEN_TYPE.STRING:
  2253. s += token.value || '';
  2254. break;
  2255. case TOKEN_TYPE.ATTRIBUTE:
  2256. if (node instanceof HTMLElement && token.value) {
  2257. s += node.getAttribute(token.value) || '';
  2258. }
  2259. break;
  2260. case TOKEN_TYPE.COUNTER:
  2261. var _counter = data.counters[token.name || ''];
  2262. if (_counter) {
  2263. s += formatCounterValue([_counter[_counter.length - 1]], '', token.format);
  2264. }
  2265. break;
  2266. case TOKEN_TYPE.COUNTERS:
  2267. var _counters = data.counters[token.name || ''];
  2268. if (_counters) {
  2269. s += formatCounterValue(_counters, token.glue, token.format);
  2270. }
  2271. break;
  2272. case TOKEN_TYPE.OPENQUOTE:
  2273. s += getQuote(style, true, data.quoteDepth);
  2274. data.quoteDepth++;
  2275. break;
  2276. case TOKEN_TYPE.CLOSEQUOTE:
  2277. data.quoteDepth--;
  2278. s += getQuote(style, false, data.quoteDepth);
  2279. break;
  2280. case TOKEN_TYPE.URL:
  2281. if (s) {
  2282. contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s });
  2283. s = '';
  2284. }
  2285. contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.IMAGE, value: token.value || '' });
  2286. break;
  2287. }
  2288. }
  2289. if (s) {
  2290. contentItems.push({ type: PSEUDO_CONTENT_ITEM_TYPE.TEXT, value: s });
  2291. }
  2292. return contentItems;
  2293. };
  2294. var parseContent = exports.parseContent = function parseContent(content, cache) {
  2295. if (cache && cache[content]) {
  2296. return cache[content];
  2297. }
  2298. var tokens = [];
  2299. var len = content.length;
  2300. var isString = false;
  2301. var isEscaped = false;
  2302. var isFunction = false;
  2303. var str = '';
  2304. var functionName = '';
  2305. var args = [];
  2306. for (var i = 0; i < len; i++) {
  2307. var c = content.charAt(i);
  2308. switch (c) {
  2309. case "'":
  2310. case '"':
  2311. if (isEscaped) {
  2312. str += c;
  2313. } else {
  2314. isString = !isString;
  2315. if (!isFunction && !isString) {
  2316. tokens.push({ type: TOKEN_TYPE.STRING, value: str });
  2317. str = '';
  2318. }
  2319. }
  2320. break;
  2321. case '\\':
  2322. if (isEscaped) {
  2323. str += c;
  2324. isEscaped = false;
  2325. } else {
  2326. isEscaped = true;
  2327. }
  2328. break;
  2329. case '(':
  2330. if (isString) {
  2331. str += c;
  2332. } else {
  2333. isFunction = true;
  2334. functionName = str;
  2335. str = '';
  2336. args = [];
  2337. }
  2338. break;
  2339. case ')':
  2340. if (isString) {
  2341. str += c;
  2342. } else if (isFunction) {
  2343. if (str) {
  2344. args.push(str);
  2345. }
  2346. switch (functionName) {
  2347. case 'attr':
  2348. if (args.length > 0) {
  2349. tokens.push({ type: TOKEN_TYPE.ATTRIBUTE, value: args[0] });
  2350. }
  2351. break;
  2352. case 'counter':
  2353. if (args.length > 0) {
  2354. var counter = {
  2355. type: TOKEN_TYPE.COUNTER,
  2356. name: args[0]
  2357. };
  2358. if (args.length > 1) {
  2359. counter.format = args[1];
  2360. }
  2361. tokens.push(counter);
  2362. }
  2363. break;
  2364. case 'counters':
  2365. if (args.length > 0) {
  2366. var _counters2 = {
  2367. type: TOKEN_TYPE.COUNTERS,
  2368. name: args[0]
  2369. };
  2370. if (args.length > 1) {
  2371. _counters2.glue = args[1];
  2372. }
  2373. if (args.length > 2) {
  2374. _counters2.format = args[2];
  2375. }
  2376. tokens.push(_counters2);
  2377. }
  2378. break;
  2379. case 'url':
  2380. if (args.length > 0) {
  2381. tokens.push({ type: TOKEN_TYPE.URL, value: args[0] });
  2382. }
  2383. break;
  2384. }
  2385. isFunction = false;
  2386. str = '';
  2387. }
  2388. break;
  2389. case ',':
  2390. if (isString) {
  2391. str += c;
  2392. } else if (isFunction) {
  2393. args.push(str);
  2394. str = '';
  2395. }
  2396. break;
  2397. case ' ':
  2398. case '\t':
  2399. if (isString) {
  2400. str += c;
  2401. } else if (str) {
  2402. addOtherToken(tokens, str);
  2403. str = '';
  2404. }
  2405. break;
  2406. default:
  2407. str += c;
  2408. }
  2409. if (c !== '\\') {
  2410. isEscaped = false;
  2411. }
  2412. }
  2413. if (str) {
  2414. addOtherToken(tokens, str);
  2415. }
  2416. if (cache) {
  2417. cache[content] = tokens;
  2418. }
  2419. return tokens;
  2420. };
  2421. var addOtherToken = function addOtherToken(tokens, identifier) {
  2422. switch (identifier) {
  2423. case 'open-quote':
  2424. tokens.push({ type: TOKEN_TYPE.OPENQUOTE });
  2425. break;
  2426. case 'close-quote':
  2427. tokens.push({ type: TOKEN_TYPE.CLOSEQUOTE });
  2428. break;
  2429. }
  2430. };
  2431. var getQuote = function getQuote(style, isOpening, quoteDepth) {
  2432. var quotes = style.quotes ? style.quotes.split(/\s+/) : ["'\"'", "'\"'"];
  2433. var idx = quoteDepth * 2;
  2434. if (idx >= quotes.length) {
  2435. idx = quotes.length - 2;
  2436. }
  2437. if (!isOpening) {
  2438. ++idx;
  2439. }
  2440. return quotes[idx].replace(/^["']|["']$/g, '');
  2441. };
  2442. var formatCounterValue = function formatCounterValue(counter, glue, format) {
  2443. var len = counter.length;
  2444. var result = '';
  2445. for (var i = 0; i < len; i++) {
  2446. if (i > 0) {
  2447. result += glue || '';
  2448. }
  2449. result += (0, _ListItem.createCounterText)(counter[i], (0, _listStyle.parseListStyleType)(format || 'decimal'), false);
  2450. }
  2451. return result;
  2452. };
  2453. /***/ })
  2454. /******/ ]);
  2455. });

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/229324
推荐阅读
相关标签
  

闽ICP备14008679号