Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 6x 8x 8x 8x 8x 8x 8x 8x 8x | import CoreFormsEnum, { getFormName } from '@orchesty/nodejs-sdk/dist/lib/Application/Base/CoreFormsEnum';
import { ApplicationInstall } from '@orchesty/nodejs-sdk/dist/lib/Application/Database/ApplicationInstall';
import Field from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/Field';
import FieldType from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FieldType';
import Form from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/Form';
import FormStack from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FormStack';
import { ABasicApplication } from '@orchesty/nodejs-sdk/dist/lib/Authorization/Type/Basic/ABasicApplication';
import RequestDto from '@orchesty/nodejs-sdk/dist/lib/Transport/Curl/RequestDto';
import { HttpMethods } from '@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods';
import AProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/AProcessDto';
import { CommonHeaders, JSON_TYPE } from '@orchesty/nodejs-sdk/dist/lib/Utils/Headers';
import crypto from 'crypto';
export const NAME = 'james-and-james';
export const BASE_URL = 'baseUrl';
export const API_KEY = 'api_key';
/* eslint-disable @typescript-eslint/naming-convention */
export default class JamesAndJamesApplication extends ABasicApplication {
public getName(): string {
return NAME;
}
public getPublicName(): string {
return 'James And James';
}
public getDescription(): string {
return 'Welcome to James and James, a fulfilment partner with industry-leading customer service and dedicated client support';
}
public getLogo(): string {
return 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjUsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iMjQwcHgiIGhlaWdodD0iNDhweCIgdmlld0JveD0iMCAwIDI0MCA0OCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQwIDQ4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMjAuMDcsNDEuOWMwLjMxOCwwLDAuNjEzLDAuMDU4LDAuODg0LDAuMTY2czAuNTA1LDAuMjcsMC43MDUsMC40NzljMC4xOTgsMC4yMTEsMC4zNTQsMC40NzEsMC40NjYsMC43NzUNCgkJCWMwLjExMSwwLjMwOSwwLjE2NywwLjY2LDAuMTY3LDEuMDU5YzAsMC4wODQtMC4wMTIsMC4xNDEtMC4wMzgsMC4xN2MtMC4wMjQsMC4wMzEtMC4wNjMsMC4wNDctMC4xMTYsMC4wNDdoLTQuMDgydjAuMTA3DQoJCQljMCwwLjQyNSwwLjA0OSwwLjc5OSwwLjE0OCwxLjExOWMwLjA5OCwwLjMyMiwwLjIzOSwwLjU5MywwLjQyLDAuODExYzAuMTgyLDAuMjIxLDAuNDAyLDAuMzgxLDAuNjYsMC40OTINCgkJCWMwLjI1NywwLjEwOSwwLjU0NSwwLjE2NCwwLjg2NCwwLjE2NGMwLjI4NCwwLDAuNTMtMC4wMzEsMC43MzktMC4wOTRjMC4yMDgtMC4wNjIsMC4zODMtMC4xMzMsMC41MjUtMC4yMTENCgkJCWMwLjE0Mi0wLjA3NywwLjI1NS0wLjE0NiwwLjMzOC0wLjIwOWMwLjA4My0wLjA2MywwLjE0NC0wLjA5NCwwLjE4Mi0wLjA5NGMwLjA0OSwwLDAuMDg3LDAuMDE4LDAuMTE0LDAuMDU3bDAuMTQ4LDAuMTgyDQoJCQljLTAuMDkxLDAuMTEzLTAuMjEyLDAuMjIxLTAuMzYxLDAuMzE4Yy0wLjE1LDAuMS0wLjMxNiwwLjE4Mi0wLjUsMC4yNTNjLTAuMTg0LDAuMDY5LTAuMzgsMC4xMjYtMC41OTEsMC4xNjgNCgkJCWMtMC4yMSwwLjA0My0wLjQyMiwwLjA2Mi0wLjYzNCwwLjA2MmMtMC4zODYsMC0wLjczOS0wLjA2Ni0xLjA1Ny0wLjIwMWMtMC4zMTktMC4xMzYtMC41OTItMC4zMy0wLjgyLTAuNTg4DQoJCQljLTAuMjI4LTAuMjU5LTAuNDA0LTAuNTc0LTAuNTI4LTAuOTQ3Yy0wLjEyNS0wLjM3My0wLjE4Ny0wLjgwMS0wLjE4Ny0xLjI4MWMwLTAuNDA2LDAuMDU4LTAuNzc5LDAuMTczLTEuMTIzDQoJCQljMC4xMTYtMC4zNDQsMC4yODItMC42MzksMC41LTAuODg3YzAuMjE4LTAuMjQ4LDAuNDg1LTAuNDQyLDAuODAyLTAuNTgyQzE5LjMwOSw0MS45NzMsMTkuNjY4LDQxLjksMjAuMDcsNDEuOXogTTIwLjA3OCw0Mi4zMDcNCgkJCWMtMC4yOTEsMC0wLjU1MiwwLjA0NS0wLjc4MywwLjEzNWMtMC4yMzEsMC4wOTItMC40MywwLjIyMy0wLjU5OSwwLjM5NmMtMC4xNjgsMC4xNjktMC4zMDUsMC4zNzMtMC40MDksMC42MTENCgkJCWMtMC4xMDQsMC4yMzktMC4xNzMsMC41MDctMC4yMDcsMC44MDJoMy43MjNjMC0wLjMwMy0wLjA0Mi0wLjU3NC0wLjEyNS0wLjgxNGMtMC4wODMtMC4yNDItMC4yMDEtMC40NDQtMC4zNTItMC42MTINCgkJCWMtMC4xNTEtMC4xNjYtMC4zMzMtMC4yOTMtMC41NDUtMC4zODRDMjAuNTcsNDIuMzUsMjAuMzM1LDQyLjMwNywyMC4wNzgsNDIuMzA3eiIvPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMzMuMDEzLDQ2LjI5NmMwLjAzOCwwLDAuMDcsMC4wMTMsMC4wOTcsMC4wMzlsMC4yMjcsMC4yNDVjLTAuMTY3LDAuMTc4LTAuMzQ5LDAuMzM5LTAuNTQ1LDAuNDc5DQoJCQljLTAuMTk3LDAuMTQ0LTAuNDEyLDAuMjY1LTAuNjQ2LDAuMzY0Yy0wLjIzMywwLjEwMS0wLjQ4OSwwLjE3OS0wLjc2OCwwLjIzM2MtMC4yNzgsMC4wNTUtMC41ODQsMC4wODItMC45MTcsMC4wODINCgkJCWMtMC41NTcsMC0xLjA2OC0wLjA5OC0xLjUzMi0wLjI5M2MtMC40NjUtMC4xOTQtMC44NjMtMC40NzEtMS4xOTQtMC44M2MtMC4zMzItMC4zNTctMC41OS0wLjc5MS0wLjc3Ni0xLjI5OQ0KCQkJcy0wLjI3OS0xLjA3Mi0wLjI3OS0xLjY5M2MwLTAuNjA5LDAuMDk2LTEuMTY3LDAuMjg3LTEuNjcyYzAuMTkxLTAuNTA0LDAuNDYtMC45MzYsMC44MDctMS4yOTkNCgkJCWMwLjM0Ny0wLjM2MSwwLjc2Mi0wLjY0MywxLjI0Ni0wLjg0YzAuNDgzLTAuMjAxLDEuMDE2LTAuMjk5LDEuNi0wLjI5OWMwLjI5MiwwLDAuNTU5LDAuMDIxLDAuODAyLDAuMDY0DQoJCQljMC4yNDIsMC4wNDMsMC40NjksMC4xMDUsMC42NzksMC4xODhzMC40MDgsMC4xODQsMC41OTQsMC4zMDVzMC4zNjcsMC4yNjIsMC41NDUsMC40MjFsLTAuMTc2LDAuMjU2DQoJCQljLTAuMDMsMC4wNDUtMC4wNzgsMC4wNjctMC4xNDMsMC4wNjdjLTAuMDM0LDAtMC4wNzctMC4wMjEtMC4xMy0wLjA2Yy0wLjA1My0wLjA0LTAuMTIxLTAuMDktMC4yMDItMC4xNDcNCgkJCWMtMC4wODItMC4wNi0wLjE4LTAuMTIzLTAuMjk1LTAuMTkzYy0wLjExNS0wLjA3LTAuMjUzLTAuMTM1LTAuNDEzLTAuMTkxYy0wLjE1OS0wLjA2MS0wLjM0My0wLjEwOC0wLjU1MS0wLjE0OQ0KCQkJYy0wLjIwOC0wLjAzOS0wLjQ0NS0wLjA2LTAuNzExLTAuMDZjLTAuNDg5LDAtMC45MzgsMC4wODQtMS4zNDcsMC4yNTZjLTAuNDA5LDAuMTY4LTAuNzYyLDAuNDA2LTEuMDU4LDAuNzINCgkJCWMtMC4yOTUsMC4zMTItMC41MjUsMC42OTItMC42OTEsMS4xMzdjLTAuMTY1LDAuNDQ0LTAuMjQ3LDAuOTQ0LTAuMjQ3LDEuNDk4YzAsMC41NjcsMC4wODEsMS4wNzYsMC4yNDQsMS41MjINCgkJCWMwLjE2MywwLjQ0NywwLjM4OSwwLjgyNCwwLjY3NywxLjEzNGMwLjI4OCwwLjMxLDAuNjI4LDAuNTQ3LDEuMDIsMC43MTFjMC4zOTIsMC4xNjUsMC44MTcsMC4yNDgsMS4yNzYsMC4yNDgNCgkJCWMwLjI4OCwwLDAuNTQ1LTAuMDIxLDAuNzcxLTAuMDU4czAuNDMzLTAuMDk2LDAuNjIyLTAuMTcxYzAuMTg5LTAuMDc1LDAuMzY2LTAuMTY5LDAuNTI5LTAuMjc4czAuMzI0LTAuMjM3LDAuNDgzLTAuMzg3DQoJCQljMC4wMi0wLjAxNiwwLjAzNy0wLjAyNywwLjA1NC0wLjAzN1MzMi45OSw0Ni4yOTYsMzMuMDEzLDQ2LjI5NnoiLz4NCgkJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTQ1LjQ4OSw0My42MjRjMCwwLjYyMS0wLjA5MywxLjE4NS0wLjI3OSwxLjY5cy0wLjQ0NywwLjkzOC0wLjc4NCwxLjI5Nw0KCQkJYy0wLjMzNywwLjM1Ni0wLjc0MSwwLjYzNC0xLjIxMSwwLjgyOGMtMC40NjksMC4xOTUtMC45OSwwLjI5My0xLjU2MiwwLjI5M2MtMC41NjUsMC0xLjA4Mi0wLjA5OC0xLjU1Mi0wLjI5Mw0KCQkJYy0wLjQ3LTAuMTk0LTAuODc0LTAuNDcyLTEuMjExLTAuODI4Yy0wLjMzNy0wLjM1OC0wLjYtMC43OTEtMC43ODctMS4yOTdjLTAuMTg4LTAuNTA2LTAuMjgxLTEuMDY5LTAuMjgxLTEuNjkNCgkJCWMwLTAuNjE3LDAuMDk0LTEuMTgxLDAuMjgxLTEuNjg3czAuNDUtMC45MzgsMC43ODctMS4yOTVjMC4zMzctMC4zNTgsMC43NDEtMC42MzcsMS4yMTEtMC44MzQNCgkJCWMwLjQ3LTAuMTk3LDAuOTg2LTAuMjk1LDEuNTUyLTAuMjk1YzAuNTcyLDAsMS4wOTMsMC4wOTgsMS41NjIsMC4yOTNjMC40NywwLjE5NiwwLjg3NCwwLjQ3MywxLjIxMSwwLjgzMg0KCQkJYzAuMzM3LDAuMzYsMC41OTksMC43OTMsMC43ODQsMS4yOTlTNDUuNDg5LDQzLjAwNyw0NS40ODksNDMuNjI0eiBNNDQuODg3LDQzLjYyNGMwLTAuNTYyLTAuMDc4LTEuMDYzLTAuMjMzLTEuNTEzDQoJCQljLTAuMTU1LTAuNDQ3LTAuMzc0LTAuODI0LTAuNjU2LTEuMTM3Yy0wLjI4Mi0wLjMxMS0wLjYyMy0wLjU0OS0xLjAyMS0wLjcxNHMtMC44MzktMC4yNDctMS4zMjQtMC4yNDcNCgkJCWMtMC40NzgsMC0wLjkxNCwwLjA4Mi0xLjMxMSwwLjI0N2MtMC4zOTYsMC4xNjUtMC43MzcsMC40MDMtMS4wMjMsMC43MTRjLTAuMjg2LDAuMzEyLTAuNTA4LDAuNjg5LTAuNjY1LDEuMTM3DQoJCQljLTAuMTU3LDAuNDQ5LTAuMjM2LDAuOTUxLTAuMjM2LDEuNTEzYzAsMC41NjMsMC4wNzksMS4wNjksMC4yMzYsMS41MTVjMC4xNTcsMC40NDUsMC4zNzksMC44MjMsMC42NjUsMS4xMzUNCgkJCWMwLjI4NiwwLjMxMiwwLjYyNywwLjU0OSwxLjAyMywwLjcxMXMwLjgzMywwLjI0NCwxLjMxMSwwLjI0NGMwLjQ4NSwwLDAuOTI2LTAuMDgyLDEuMzI0LTAuMjQ0czAuNzM4LTAuMzk5LDEuMDIxLTAuNzExDQoJCQljMC4yODItMC4zMTIsMC41MDEtMC42ODgsMC42NTYtMS4xMzVDNDQuODA5LDQ0LjY5Myw0NC44ODcsNDQuMTg4LDQ0Ljg4Nyw0My42MjR6Ii8+DQoJCTxwYXRoIGZpbGw9IiMxRDFEMUIiIGQ9Ik01NC41NDQsNDUuNjQ2YzAuMDIyLTAuMDYsMC4wNDYtMC4xMTksMC4wNzEtMC4xOGMwLjAyNC0wLjA1OSwwLjA1Mi0wLjExMywwLjA4My0wLjE2N2wzLjE2LTUuNTg4DQoJCQljMC4wMzEtMC4wNDksMC4wNjEtMC4wNzksMC4wOTEtMC4wOTFjMC4wMy0wLjAxMiwwLjA3Mi0wLjAxOCwwLjEyNS0wLjAxOGgwLjQwNHY4LjA0NWgtMC41MTF2LTYuODU2DQoJCQljMC0wLjA5OSwwLjAwNS0wLjIwMiwwLjAxNi0wLjMxMmwtMy4xNjYsNS42MjFjLTAuMDUyLDAuMDk4LTAuMTI4LDAuMTQ4LTAuMjI3LDAuMTQ4aC0wLjA5MWMtMC4wOTUsMC0wLjE3LTAuMDUyLTAuMjI3LTAuMTQ4DQoJCQlsLTMuMjUxLTUuNjI5YzAuMDExLDAuMTEsMC4wMTcsMC4yMTksMC4wMTcsMC4zMTh2Ni44NTVoLTAuNTA2di04LjA0M2gwLjM5OGMwLjA1MywwLDAuMDk1LDAuMDA2LDAuMTI4LDAuMDE3DQoJCQljMC4wMzIsMC4wMTIsMC4wNjMsMC4wNDIsMC4wOTMsMC4wOTFsMy4yNDYsNS41OTRDNTQuNDUzLDQ1LjQxMyw1NC41MDIsNDUuNTI1LDU0LjU0NCw0NS42NDZ6Ii8+DQoJCTxwYXRoIGZpbGw9IiMxRDFEMUIiIGQ9Ik02OC4wMjYsNDUuNjQ2YzAuMDIyLTAuMDYsMC4wNDYtMC4xMTksMC4wNzEtMC4xOGMwLjAyNC0wLjA1OSwwLjA1Mi0wLjExMywwLjA4Mi0wLjE2N2wzLjE2LTUuNTg4DQoJCQljMC4wMzEtMC4wNDksMC4wNjEtMC4wNzksMC4wOTEtMC4wOTFjMC4wMy0wLjAxMiwwLjA3Mi0wLjAxOCwwLjEyNS0wLjAxOGgwLjQwNHY4LjA0NWgtMC41MTJ2LTYuODU2DQoJCQljMC0wLjA5OSwwLjAwNi0wLjIwMiwwLjAxNy0wLjMxMmwtMy4xNjYsNS42MjFjLTAuMDUzLDAuMDk4LTAuMTI5LDAuMTQ4LTAuMjI4LDAuMTQ4aC0wLjA5MWMtMC4wOTUsMC0wLjE3LTAuMDUyLTAuMjI4LTAuMTQ4DQoJCQlMNjQuNSw0MC40NzNjMC4wMTIsMC4xMSwwLjAxOCwwLjIxOSwwLjAxOCwwLjMxOHY2Ljg1NWgtMC41MDZ2LTguMDQzaDAuMzk3YzAuMDUzLDAsMC4wOTYsMC4wMDYsMC4xMjgsMC4wMTcNCgkJCWMwLjAzMiwwLjAxMiwwLjA2MywwLjA0MiwwLjA5NCwwLjA5MWwzLjI0NSw1LjU5NEM2Ny45MzYsNDUuNDEzLDY3Ljk4NCw0NS41MjUsNjguMDI2LDQ1LjY0NnoiLz4NCgkJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTgyLjMxNiwzOS42MDV2MC40ODJoLTQuMjM0djMuMjUxaDMuNTI0djAuNDcyaC0zLjUyNHYzLjM1NGg0LjIzNHYwLjQ4M2gtNC44MnYtOC4wNDNIODIuMzE2eiIvPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNODguMTE0LDQ0LjAxMXYzLjY0aC0wLjU4di04LjA0NWgyLjA1MmMwLjkyOSwwLDEuNjIyLDAuMTgsMi4wODEsMC41MzcNCgkJCWMwLjQ1OCwwLjM1NywwLjY4OCwwLjg4NSwwLjY4OCwxLjU3N2MwLDAuMzA4LTAuMDUzLDAuNTg5LTAuMTU5LDAuODQzcy0wLjI1OSwwLjQ3Ny0wLjQ1OCwwLjY2OA0KCQkJYy0wLjE5OSwwLjE5LTAuNDM4LDAuMzQ4LTAuNzE5LDAuNDcxYy0wLjI4LDAuMTI0LTAuNTk4LDAuMjA1LTAuOTQ5LDAuMjQyYzAuMDkxLDAuMDU3LDAuMTcyLDAuMTMzLDAuMjQ0LDAuMjI5bDIuNzY5LDMuNDc5DQoJCQloLTAuNTA2Yy0wLjA2MSwwLTAuMTEzLTAuMDEyLTAuMTU3LTAuMDM0Yy0wLjA0My0wLjAyMy0wLjA4Ni0wLjA2Mi0wLjEyOC0wLjExM2wtMi41NzUtMy4yNjQNCgkJCWMtMC4wNjQtMC4wODMtMC4xMzQtMC4xNDItMC4yMDgtMC4xNzdjLTAuMDc0LTAuMDMzLTAuMTg4LTAuMDUxLTAuMzQ0LTAuMDUxTDg4LjExNCw0NC4wMTFMODguMTE0LDQ0LjAxMXogTTg4LjExNCw0My41NzloMS4zOTgNCgkJCWMwLjM1NiwwLDAuNjc1LTAuMDQzLDAuOTU4LTAuMTI5YzAuMjgzLTAuMDg2LDAuNTIxLTAuMjA3LDAuNzE2LTAuMzY2czAuMzQ0LTAuMzUyLDAuNDQ2LTAuNTc0czAuMTUzLTAuNDc2LDAuMTUzLTAuNzU1DQoJCQljMC0wLjU3My0wLjE4OC0wLjk5Ny0wLjU2Mi0xLjI3MmMtMC4zNzUtMC4yNzctMC45MjEtMC40MTYtMS42MzctMC40MTZoLTEuNDcyTDg4LjExNCw0My41NzlMODguMTE0LDQzLjU3OXoiLz4NCgkJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTEwMy4yODUsNDYuMjk2YzAuMDM4LDAsMC4wNywwLjAxMywwLjA5NiwwLjAzOWwwLjIyOCwwLjI0NWMtMC4xNjcsMC4xNzgtMC4zNDksMC4zMzktMC41NDYsMC40NzkNCgkJCWMtMC4xOTcsMC4xNDQtMC40MTIsMC4yNjUtMC42NDUsMC4zNjRjLTAuMjMzLDAuMTAxLTAuNDg5LDAuMTc5LTAuNzY4LDAuMjMzYy0wLjI3OCwwLjA1NS0wLjU4NCwwLjA4Mi0wLjkxOCwwLjA4Mg0KCQkJYy0wLjU1NiwwLTEuMDY3LTAuMDk4LTEuNTMxLTAuMjkzYy0wLjQ2NC0wLjE5NC0wLjg2Mi0wLjQ3MS0xLjE5NC0wLjgzYy0wLjMzMi0wLjM1Ny0wLjU5LTAuNzkxLTAuNzc1LTEuMjk5DQoJCQljLTAuMTg3LTAuNTA4LTAuMjc5LTEuMDcyLTAuMjc5LTEuNjkzYzAtMC42MDksMC4wOTUtMS4xNjcsMC4yODctMS42NzJjMC4xOTEtMC41MDQsMC40Ni0wLjkzNiwwLjgwNy0xLjI5OQ0KCQkJYzAuMzQ3LTAuMzYxLDAuNzYyLTAuNjQzLDEuMjQ1LTAuODRjMC40ODMtMC4yMDEsMS4wMTctMC4yOTksMS42LTAuMjk5YzAuMjkyLDAsMC41NTksMC4wMjEsMC44MDIsMC4wNjQNCgkJCWMwLjI0MiwwLjA0MywwLjQ2OSwwLjEwNSwwLjY3OSwwLjE4OHMwLjQwOCwwLjE4NCwwLjU5NCwwLjMwNWMwLjE4NiwwLjEyMSwwLjM2OCwwLjI2MiwwLjU0NiwwLjQyMWwtMC4xNzYsMC4yNTYNCgkJCWMtMC4wMywwLjA0NS0wLjA3OCwwLjA2Ny0wLjE0MiwwLjA2N2MtMC4wMzQsMC0wLjA3OC0wLjAyMS0wLjEzMS0wLjA2Yy0wLjA1My0wLjA0LTAuMTItMC4wOS0wLjIwMi0wLjE0Nw0KCQkJYy0wLjA4Mi0wLjA1OS0wLjE4LTAuMTIzLTAuMjk2LTAuMTkzYy0wLjExNS0wLjA3LTAuMjUzLTAuMTM1LTAuNDEyLTAuMTkxYy0wLjE2LTAuMDYxLTAuMzQzLTAuMTA4LTAuNTUxLTAuMTQ5DQoJCQljLTAuMjA5LTAuMDM5LTAuNDQ1LTAuMDYtMC43MTEtMC4wNmMtMC40ODksMC0wLjkzOCwwLjA4NC0xLjM0NywwLjI1NmMtMC40MSwwLjE2OC0wLjc2MiwwLjQwNi0xLjA1OCwwLjcyDQoJCQljLTAuMjk1LDAuMzEyLTAuNTI1LDAuNjkyLTAuNjksMS4xMzdzLTAuMjQ3LDAuOTQ0LTAuMjQ3LDEuNDk4YzAsMC41NjcsMC4wODEsMS4wNzYsMC4yNDQsMS41MjINCgkJCWMwLjE2MywwLjQ0NywwLjM4OCwwLjgyNCwwLjY3NiwxLjEzNGMwLjI4OCwwLjMxLDAuNjI4LDAuNTQ3LDEuMDIxLDAuNzExYzAuMzkyLDAuMTY1LDAuODE3LDAuMjQ4LDEuMjc2LDAuMjQ4DQoJCQljMC4yODgsMCwwLjU0NS0wLjAyMSwwLjc3MS0wLjA1OGMwLjIyNS0wLjAzNywwLjQzMy0wLjA5NiwwLjYyMi0wLjE3MXMwLjM2Ni0wLjE2OSwwLjUyOS0wLjI3OHMwLjMyNC0wLjIzNywwLjQ4My0wLjM4Nw0KCQkJYzAuMDE5LTAuMDE2LDAuMDM3LTAuMDI3LDAuMDU0LTAuMDM3UzEwMy4yNjIsNDYuMjk2LDEwMy4yODUsNDYuMjk2eiIvPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMTEzLjQwOCwzOS42MDV2MC40ODJoLTQuMjM1djMuMjUxaDMuNTI0djAuNDcyaC0zLjUyNHYzLjM1NGg0LjIzNXYwLjQ4M2gtNC44MnYtOC4wNDNIMTEzLjQwOHoiLz4NCgkJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTEyOC42MTksMzkuNjA1djAuNDgyaC00LjIzNXYzLjM4MWgzLjY2N3YwLjQ4NGgtMy42Njd2My42OTVoLTAuNTg2di04LjA0NWg0LjgyMVYzOS42MDV6Ii8+DQoJCTxwYXRoIGZpbGw9IiMxRDFEMUIiIGQ9Ik0xMzYuNDIzLDQ3LjIzMmMwLjM4OCwwLDAuNzMxLTAuMDY1LDEuMDM3LTAuMjAxYzAuMzA2LTAuMTM1LDAuNTYzLTAuMzIxLDAuNzc2LTAuNTYxDQoJCQljMC4yMTItMC4yMzgsMC4zNzMtMC41MiwwLjQ4Ni0wLjg0NGMwLjExLTAuMzI0LDAuMTY2LTAuNjc0LDAuMTY2LTEuMDQ5di00Ljk3NWgwLjU4djQuOTc1YzAsMC40NDMtMC4wNywwLjg1Ny0wLjIxLDEuMjQyDQoJCQljLTAuMTQxLDAuMzg1LTAuMzQzLDAuNzIxLTAuNjA0LDEuMDA2Yy0wLjI2NCwwLjI4NS0wLjU4NCwwLjUxMi0wLjk2MSwwLjY3NHMtMC44MDEsMC4yNDQtMS4yNzEsMC4yNDQNCgkJCWMtMC40NywwLTAuODk1LTAuMDgyLTEuMjcxLTAuMjQ0cy0wLjY5Ni0wLjM4OS0wLjk2MS0wLjY3NGMtMC4yNjItMC4yODUtMC40NjUtMC42MjEtMC42MDQtMS4wMDZzLTAuMjEtMC43OTktMC4yMS0xLjI0MnYtNC45NzUNCgkJCWgwLjU4NXY0Ljk2OWMwLDAuMzc1LDAuMDU4LDAuNzI1LDAuMTY4LDEuMDQ5YzAuMTEyLDAuMzI0LDAuMjcyLDAuNjA1LDAuNDgzLDAuODQ0YzAuMjA5LDAuMjM5LDAuNDY4LDAuNDI4LDAuNzcyLDAuNTYyDQoJCQlDMTM1LjY4OSw0Ny4xNjUsMTM2LjAzNiw0Ny4yMzIsMTM2LjQyMyw0Ny4yMzJ6Ii8+DQoJCTxwYXRoIGZpbGw9IiMxRDFEMUIiIGQ9Ik0xNDUuNTE4LDQ3LjE1NGgzLjgxM3YwLjQ5NGgtNC4zOTR2LTguMDQzaDAuNThWNDcuMTU0TDE0NS41MTgsNDcuMTU0eiIvPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMTU4LjcyMSwzOS42MDV2MC40ODJoLTQuMjM0djMuMzgxaDMuNjY2djAuNDg0aC0zLjY2NnYzLjY5NWgtMC41ODR2LTguMDQ1aDQuODE4VjM5LjYwNXoiLz4NCgkJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTE2NC4zNSw0Ny42NDhoLTAuNTg2di04LjA0M2gwLjU4NlY0Ny42NDh6Ii8+DQoJCTxwYXRoIGZpbGw9IiMxRDFEMUIiIGQ9Ik0xNzAuNjgyLDQ3LjE1NGgzLjgxMnYwLjQ5NEgxNzAuMXYtOC4wNDNoMC41OHY3LjU0OUgxNzAuNjgyeiIvPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMTgzLjA3OCw0NS42NDZjMC4wMjEtMC4wNiwwLjA0Ni0wLjExOSwwLjA3LTAuMThjMC4wMjMtMC4wNTksMC4wNTMtMC4xMTMsMC4wODItMC4xNjdsMy4xNi01LjU4OA0KCQkJYzAuMDMtMC4wNDksMC4wNjItMC4wNzksMC4wOTItMC4wOTFjMC4wMjktMC4wMTIsMC4wNzItMC4wMTgsMC4xMjUtMC4wMThoMC40MDJ2OC4wNDVoLTAuNTF2LTYuODU2DQoJCQljMC0wLjA5OSwwLjAwNS0wLjIwMiwwLjAxOC0wLjMxMmwtMy4xNjYsNS42MjFjLTAuMDU1LDAuMDk4LTAuMTI5LDAuMTQ4LTAuMjI5LDAuMTQ4aC0wLjA5MWMtMC4wOTUsMC0wLjE3MS0wLjA1Mi0wLjIyOC0wLjE0OA0KCQkJbC0zLjI1My01LjYyOWMwLjAxMywwLjExLDAuMDE5LDAuMjE5LDAuMDE5LDAuMzE4djYuODU1aC0wLjUwNnYtOC4wNDNoMC4zOTZjMC4wNTUsMCwwLjA5OCwwLjAwNiwwLjEyOCwwLjAxNw0KCQkJYzAuMDMzLDAuMDEyLDAuMDYzLDAuMDQyLDAuMDk1LDAuMDkxbDMuMjQ2LDUuNTk0QzE4Mi45ODYsNDUuNDEzLDE4My4wMzUsNDUuNTI1LDE4My4wNzgsNDUuNjQ2eiIvPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMTk3LjM2NywzOS42MDV2MC40ODJoLTQuMjM0djMuMjUxaDMuNTI0djAuNDcyaC0zLjUyNHYzLjM1NGg0LjIzNHYwLjQ4M2gtNC44MnYtOC4wNDNIMTk3LjM2N3oiLz4NCgkJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTIwMi44MjQsMzkuNjI1YzAuMDI5LDAuMDE2LDAuMDYyLDAuMDQzLDAuMDk2LDAuMDg4bDUuMjA3LDYuOTcxYy0wLjAxMi0wLjExMy0wLjAxOC0wLjIyNi0wLjAxOC0wLjMzDQoJCQl2LTYuNzQ4aDAuNTEydjguMDQ1aC0wLjI3N2MtMC4wODgsMC0wLjE1OC0wLjAzOS0wLjIxMS0wLjExNGwtNS4yMjktNi45ODFjMC4wMTIsMC4xMTQsMC4wMTcsMC4yMjMsMC4wMTcsMC4zMjR2Ni43NzFoLTAuNTA2DQoJCQl2LTguMDQ1aDAuMjg1QzIwMi43NTIsMzkuNjA1LDIwMi43OTMsMzkuNjExLDIwMi44MjQsMzkuNjI1eiIvPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMjE5LjQxLDM5LjYwNVY0MC4xaC0yLjgyNHY3LjU0OWgtMC41OFY0MC4xaC0yLjg0MnYtMC40OTRIMjE5LjQxeiIvPg0KCTwvZz4NCgk8Zz4NCgkJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTE0LjIyNiwyNi41OTN2LTAuODY0YzAuNjctMC4wMDksMS4wODgtMC4wMzUsMS4yNTMtMC4wODJjMC4xNjYtMC4wNDcsMC4zMTgtMC4xMzcsMC40NTgtMC4yNjgNCgkJCXMwLjM0MS0wLjQ3NCwwLjYwNC0xLjAyNGMwLjE1Mi0wLjMxMywwLjcwNC0xLjUwNSwxLjY1NC0zLjU3NWwzLjE4LTcuMTc1YzAuMzQ4LTAuNzg4LDEuMDktMi41NDMsMi4yMjYtNS4yNjZoMC44MjdsNS40MzIsMTIuNzU4DQoJCQljMC44ODIsMi4wNjksMS40NjcsMy4zNjcsMS43NTUsMy44OTFjMC4xNjEsMC4yOTgsMC4zMzcsMC40OTQsMC41MjgsMC41ODZjMC4xOTEsMC4wOTQsMC42MjEsMC4xNDUsMS4yOTIsMC4xNTJ2MC44NjQNCgkJCWMtMS4zMjMtMC4wODQtMi4yNDgtMC4xMjctMi43NzMtMC4xMjdsLTQuMDk2LDAuMTI3di0wLjg2NGMwLjk1LTAuMDE3LDEuNTI3LTAuMDQ3LDEuNzMtMC4wODgNCgkJCWMwLjIwNC0wLjA0MywwLjM0Mi0wLjEwNCwwLjQxNC0wLjE4NmMwLjA3Mi0wLjA4LDAuMTA3LTAuMTgsMC4xMDctMC4yOTljMC0wLjE4OC0wLjA1OS0wLjQyOC0wLjE3Ny0wLjcyNGwtMS41NjQtMy44OTNIMTkuNzENCgkJCWwtMS4zODcsMy4yN2MtMC4yNDYsMC41ODUtMC4zNjksMS4wMTMtMC4zNjksMS4yODRjMCwwLjEyLDAuMDM0LDAuMjE2LDAuMTAyLDAuMjkzYzAuMDkzLDAuMTEsMC4yMzcsMC4xODcsMC40MzMsMC4yMjgNCgkJCWMwLjMxMywwLjA3LDAuODY1LDAuMTA3LDEuNjU0LDAuMTE1djAuODY1Yy0xLjQzNC0wLjA3Ni0yLjUwNi0wLjExMy0zLjIxOC0wLjExM0MxNi4xLDI2LjQ3OSwxNS4yMDEsMjYuNTE4LDE0LjIyNiwyNi41OTN6DQoJCQkgTTIwLjE0MSwxOS40NTdoNi40MjRsLTMuMTgtNy42N0wyMC4xNDEsMTkuNDU3eiIvPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMzQuNzg5LDkuMzMxVjguNTE3YzAuODkxLDAuMDM0LDEuNzQzLDAuMDUxLDIuNTU3LDAuMDUxYzAuODIzLDAsMS42MTEtMC4wMTcsMi4zNjYtMC4wNTENCgkJCWMwLjc0NiwxLjY5NiwxLjQyOSwzLjE4NywyLjA0OCw0LjQ2Nmw0LjgyMSw5LjkyMmw0LjM1MS05LjA5NmMxLjE4OC0yLjQ3NSwxLjk4LTQuMjM4LDIuMzc5LTUuMjkyDQoJCQljMC44OTksMC4wMzQsMS42NTgsMC4wNTEsMi4yNzcsMC4wNTFjMC41NjgsMCwxLjQ4OC0wLjAxNywyLjc2LTAuMDUxdjAuODE0Yy0xLjAwOSwwLjAxOC0xLjYyMiwwLjA2Mi0xLjgzOCwwLjEzNA0KCQkJYy0wLjIxNiwwLjA3MS0wLjM2NywwLjE3MS0wLjQ1MSwwLjI5OGMtMC4xMSwwLjE3LTAuMTc0LDAuNTgyLTAuMTkxLDEuMjM0Yy0wLjAwOCwwLjE2OS0wLjAzLDEuMzc0LTAuMDYzLDMuNjEzdjUuODkNCgkJCWMwLDEuMTU0LDAuMDE3LDIuMjc3LDAuMDUxLDMuMzcxYzAuMDI1LDAuODA2LDAuMDg3LDEuMjg0LDAuMTg1LDEuNDM4YzAuMDk3LDAuMTUyLDAuMjU0LDAuMjY1LDAuNDcsMC4zMzYNCgkJCWMwLjIxNywwLjA3MiwwLjgyOSwwLjExNiwxLjgzOCwwLjEzNXYwLjgxMmMtMS43MTMtMC4wNzYtMi45MjEtMC4xMTMtMy42MjUtMC4xMTNjLTAuNTY4LDAtMS44MjMsMC4wMzctMy43NjYsMC4xMTN2LTAuODEyDQoJCQljMS4wMS0wLjAxOSwxLjYyNC0wLjA2MiwxLjg0NS0wLjEzNWMwLjIyMS0wLjA3MiwwLjM2OS0wLjE3MiwwLjQ0NS0wLjI5OWMwLjExLTAuMTY5LDAuMTc0LTAuNTgsMC4xOTEtMS4yMzMNCgkJCWMwLjAwOC0wLjE3OCwwLjAzLTEuMzgyLDAuMDYzLTMuNjEzdi05LjMzN2wtNC4zODksOS4xODNjLTAuNjg3LDEuNDM0LTEuMjI2LDIuNTg4LTEuNjE2LDMuNDYyDQoJCQljLTAuMjgsMC42MzUtMC43MDQsMS42NDQtMS4yNzIsMy4wMjhoLTAuNDk2Yy0wLjExLTAuMzIyLTAuMjEyLTAuNTgxLTAuMzA1LTAuNzc3bC0wLjg2NS0xLjg0NWwtNi4wODEtMTIuNjMxVjIwLjUNCgkJCWMwLDEuMTU0LDAuMDE3LDIuMjc3LDAuMDUxLDMuMzcxYzAuMDI2LDAuODA2LDAuMDg3LDEuMjg0LDAuMTg0LDEuNDM4YzAuMDk4LDAuMTUyLDAuMjU1LDAuMjY1LDAuNDcxLDAuMzM2DQoJCQljMC4yMTYsMC4wNzIsMC44MjksMC4xMTYsMS44MzgsMC4xMzV2MC44MTJsLTMuMDY2LTAuMTAybC0zLjE2NywwLjEwMnYtMC44MTJjMS0wLjAxOSwxLjYxMS0wLjA2MiwxLjgzMi0wLjEzNQ0KCQkJYzAuMjItMC4wNzIsMC4zNzMtMC4xNzIsMC40NTgtMC4yOTljMC4xMDItMC4xNjksMC4xNjYtMC41OCwwLjE5MS0xLjIzM2MwLjAwOC0wLjE3OCwwLjAyNS0xLjM4MiwwLjA1MS0zLjYxM3YtNS44OQ0KCQkJYzAtMS4xNTMtMC4wMTMtMi4yODEtMC4wMzgtMy4zODRjLTAuMDI1LTAuODA2LTAuMDg3LTEuMjgzLTAuMTg1LTEuNDMxQzM3LDkuNjQ3LDM2Ljg0NCw5LjUzNiwzNi42MjcsOS40NjUNCgkJCUMzNi40MTEsOS4zOTQsMzUuNzk4LDkuMzQ5LDM0Ljc4OSw5LjMzMXoiLz4NCgkJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTYwLjExLDI2LjU5M3YtMC44MDFjMC44OS0wLjAwOSwxLjQ3Ni0wLjA3NiwxLjc1NS0wLjIwNGMwLjExOS0wLjA0OSwwLjIwNC0wLjEzMSwwLjI1NC0wLjI0Mg0KCQkJYzAuMDg1LTAuMTY5LDAuMTQ0LTAuNjEzLDAuMTc4LTEuMzM1YzAuMDUxLTEuMTE5LDAuMDc2LTIuMDg2LDAuMDc2LTIuOXYtNi41YzAtMS4xNTMtMC4wMTMtMi4yODEtMC4wMzgtMy4zODQNCgkJCWMtMC4wMjUtMC44MDYtMC4wODctMS4yODMtMC4xODUtMS40MzFzLTAuMjU0LTAuMjYtMC40NzEtMC4zMzFjLTAuMjE2LTAuMDcxLTAuODI5LTAuMTE2LTEuODM4LTAuMTM0VjguNTE3bDMuNjI1LDAuMDc2DQoJCQlMNjcuMzEsOC41M2MxLjg0LTAuMDI2LDMuMTc2LTAuMDM5LDQuMDA3LTAuMDM5YzAuODQsMCwxLjYzMiwwLjA0NywyLjM3OSwwLjE0MWMtMC4xMzYsMC40ODItMC4yMjksMC45MDMtMC4yOCwxLjI1OQ0KCQkJYy0wLjAxNywwLjA3Ni0wLjA5MywwLjk1OC0wLjIyOSwyLjY0NmgtMC44MDFjMC4wMDgtMC44NjUtMC4wNDctMS42NTItMC4xNjYtMi4zNjVjLTAuNDY2LTAuMTk1LTAuOTc5LTAuMzI4LTEuNTM5LTAuMzk1DQoJCQljLTAuOTUtMC4xMi0xLjktMC4xNzktMi44NS0wLjE3OWMtMC4yMDQsMC0wLjY1NywwLjAxOC0xLjM2MSwwLjA1MmMtMC43MDQsMC4wMzMtMS4yMDgsMC4wNjMtMS41MTQsMC4wODkNCgkJCWMtMC4wMzUsMC45NC0wLjA2LDEuODIzLTAuMDc3LDIuNjQ2bC0wLjA1MSw0LjMwMmMwLjk5MiwwLjA0OSwxLjkwNCwwLjA3NCwyLjczNSwwLjA3NGMxLjAwOSwwLDEuODctMC4wNDUsMi41ODItMC4xNA0KCQkJYzAuMjcxLTAuMDMyLDAuNDQ1LTAuMTAyLDAuNTIxLTAuMjA0YzAuMDc3LTAuMTAyLDAuMTQ1LTAuNDQ5LDAuMjA0LTEuMDQybDAuMDc2LTAuODkxaDAuNzYzdjAuMjQxbC0wLjA2NCwyLjY0NmwwLjA2NCwyLjk2NQ0KCQkJaC0wLjg5MWwtMC4wMzgtMC44NjdjLTAuMDE3LTAuNjI3LTAuMDc0LTEuMDE3LTAuMTcxLTEuMTY5Yy0wLjA5OC0wLjE1My0wLjI4Mi0wLjI1OS0wLjU1NC0wLjMxOA0KCQkJYy0wLjQ4My0wLjEwMi0xLjQyMS0wLjE1My0yLjgxMi0wLjE1M2MtMC41NjgsMC0xLjM3NCwwLjAyMS0yLjQxNywwLjA2NGMtMC4wNDIsMC44NDgtMC4wNjMsMi4xMDgtMC4wNjMsMy43NzkNCgkJCWMwLDEuNTY4LDAuMDIxLDIuNzYsMC4wNjMsMy41NzRjMS4yMjIsMC4wOTQsMi41OTEsMC4xMzksNC4xMDksMC4xMzljMS4wNzcsMCwxLjg0NS0wLjAzMywyLjMwMy0wLjEwMw0KCQkJYzAuNDU4LTAuMDY2LDAuODgyLTAuMTgxLDEuMjcyLTAuMzQxYzAuMTAyLTAuMjY1LDAuMjA0LTAuNjIxLDAuMzA2LTEuMDdjMC4xODctMC43NTUsMC4zMDktMS4zMjMsMC4zNjktMS43MDRoMC44MzkNCgkJCWMtMC4yMjEsMS43MTMtMC4zMzEsMy4xMzMtMC4zMzEsNC4yNjNjLTAuNzI5LDAuMTA4LTEuNjE2LDAuMTYzLTIuNjU5LDAuMTYzbC03LjU5NS0wLjEwMg0KCQkJQzYzLjMzMywyNi40OTEsNjIuMjIyLDI2LjUyNSw2MC4xMSwyNi41OTN6Ii8+DQoJCTxwYXRoIGZpbGw9IiMxRDFEMUIiIGQ9Ik03Ni4yMDgsMjUuOTdjMC4xMzYtMC44MTMsMC4yMTYtMi4xMzMsMC4yNDItMy45NTZoMC44NjVjMC4wNDIsMS4yMzgsMC4xMTIsMS45NywwLjIwOSwyLjE5NA0KCQkJYzAuMDk4LDAuMjI1LDAuMzMzLDAuNDY1LDAuNzA3LDAuNzE5YzAuMzczLDAuMjU1LDAuODc0LDAuNDgxLDEuNTAxLDAuNjgxYzAuNjI3LDAuMjAxLDEuMjM0LDAuMjk5LDEuODE5LDAuMjk5DQoJCQljMC44NTYsMCwxLjY0Ni0wLjE5NiwyLjM2Ni0wLjU5MmMwLjcyMS0wLjM5NCwxLjI0Ny0wLjkxMSwxLjU3Ny0xLjU1YzAuMzMxLTAuNjQxLDAuNDk2LTEuMzI2LDAuNDk2LTIuMDU0DQoJCQljMC0wLjU2LTAuMDgzLTEuMDQ0LTAuMjQ4LTEuNDVjLTAuMTY1LTAuNDA4LTAuNDE3LTAuNzM2LTAuNzU3LTAuOTg2Yy0wLjMzOS0wLjI1LTAuNzU5LTAuNDI2LTEuMjU5LTAuNTI5DQoJCQljLTAuMzE0LTAuMDUtMC45NDEtMC4xMzUtMS44ODMtMC4yNTVjLTAuOTQxLTAuMTE4LTEuNzQzLTAuMjUtMi40MDQtMC4zOTJjLTAuODgyLTAuMjcyLTEuNTMxLTAuNTg5LTEuOTQ3LTAuOTU1DQoJCQljLTAuNDE2LTAuMzY1LTAuNzUyLTAuODQzLTEuMDExLTEuNDM4Yy0wLjI1OS0wLjU5NC0wLjM4OC0xLjIzNC0wLjM4OC0xLjkyMWMwLTEuMDAxLDAuMjYxLTEuOTQ0LDAuNzgyLTIuODMxDQoJCQljMC41MjEtMC44ODYsMS4yOTMtMS41NzQsMi4zMTUtMi4wNjZjMS4wMjItMC40OTIsMi4xMzEtMC43MzgsMy4zMjctMC43MzhjMC43MjEsMCwxLjUwNywwLjA5OCwyLjM2LDAuMjkNCgkJCWMwLjg1MiwwLjE5NCwxLjY0NywwLjQ3NSwyLjM4NSwwLjg0MmMtMC4xMTksMC41MzUtMC4yMDQsMS4wMzQtMC4yNTQsMS40OTZjLTAuMDUxLDAuNDYyLTAuMDg5LDEuMTQyLTAuMTE1LDIuMDQyaC0wLjg2NQ0KCQkJYy0wLjAyNi0xLjMwOC0wLjA2NC0yLjAyLTAuMTE1LTIuMTM5Yy0wLjIxMi0wLjMwNC0wLjUtMC41OC0wLjg2NS0wLjgyNWMtMC44NzQtMC40OTMtMS43ODYtMC43NC0yLjczNS0wLjc0DQoJCQljLTEuMjI5LDAtMi4yMTEsMC4zNzUtMi45NDUsMS4xMjVjLTAuNzMzLDAuNzUtMS4xMDEsMS43MjMtMS4xMDEsMi45MTdjMCwwLjcyMiwwLjEzMSwxLjI3OCwwLjM5NSwxLjY3Mw0KCQkJYzAuMjYzLDAuMzk1LDAuNzMzLDAuNzA5LDEuNDEyLDAuOTQ2YzAuNDY2LDAuMTYyLDEuMjI5LDAuMzEyLDIuMjksMC40NTFjMS4wNiwwLjE0MSwyLjAxNCwwLjI5MSwyLjg2MiwwLjQ1Mg0KCQkJYzAuNzk3LDAuMjM3LDEuMzg3LDAuNTE3LDEuNzY4LDAuODQ2YzAuMzgyLDAuMzI2LDAuNjk2LDAuNzUzLDAuOTQxLDEuMjgzYzAuMjQ2LDAuNTI5LDAuMzY5LDEuMTUsMC4zNjksMS44NjMNCgkJCWMwLDEuNjg2LTAuNywzLjE1Ni0yLjA5OSw0LjQxcy0zLjIxLDEuODgxLTUuNDMyLDEuODgxQzc5LjA5NiwyNi45NjIsNzcuNTczLDI2LjYzMiw3Ni4yMDgsMjUuOTd6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMC4xNDEsMzQuMDkybDAuMDU2LTEuMjk0di0wLjI2MmMwLTAuMjg4LTAuMDE5LTAuNzMxLTAuMDU2LTEuMzNsMC4zNTYtMC4yNDQNCgkJCWMwLjM2MiwwLjI2MywwLjY5NiwwLjQ0NiwxLjAwMywwLjU1NGMwLjMwNiwwLjEwNCwwLjY0NiwwLjE1OSwxLjAyMSwwLjE1OWMwLjY3NSwwLDEuMTkzLTAuMTM2LDEuNTU2LTAuNDAzDQoJCQljMC4zNjItMC4yNjgsMC42MjUtMC42ODgsMC43ODgtMS4yNTZjMC4xNjItMC41NjgsMC4yNDMtMi4wNjYsMC4yNDMtNC40OVY5LjIzNWMwLTEuNy0wLjAyNS0zLjM2Mi0wLjA3NS00Ljk4Ng0KCQkJQzUuMDA4LDMuMDYyLDQuOTI0LDIuMzU4LDQuNzgsMi4xNEM0LjYzNywxLjkyMSw0LjQwMiwxLjc1OSw0LjA3NywxLjY1NEMzLjc1MiwxLjU0NiwyLjg1MywxLjQ4MSwxLjM3OCwxLjQ1NXYtMS4yDQoJCQljMS45NzUsMC4wNzYsMy44MjQsMC4xMTMsNS41NDksMC4xMTNjMS44MjQsMCwzLjY4LTAuMDM3LDUuNTY3LTAuMTEzdjEuMkMxMS4wMiwxLjQ4MSwxMC4xMiwxLjU0Niw5Ljc5NSwxLjY1NA0KCQkJQzkuNDcsMS43NTksOS4yNTEsMS45MDUsOS4xMzksMi4wOTNjLTAuMTYzLDAuMjUtMC4yNjIsMC44NTUtMC4zLDEuODE4YzAsMC4yNS0wLjAyNSwyLjAyNi0wLjA3NSw1LjMyNHYxMy40NTkNCgkJCWMwLDIuMDUtMC4xNzUsMy42NjctMC41MjQsNC44NTVjLTAuMzUxLDEuMTg4LTAuOTQxLDIuMzE0LTEuNzcyLDMuMzg1Yy0wLjgzMSwxLjA2OS0xLjczNCwxLjg3Ny0yLjcwOCwyLjQyNg0KCQkJYy0wLjk3NSwwLjU1Mi0xLjkxOSwwLjgyNi0yLjgzMSwwLjgyNkMwLjY3OCwzNC4xODYsMC40MTYsMzQuMTU0LDAuMTQxLDM0LjA5MnoiLz4NCgk8L2c+DQoJPGc+DQoJCTxwYXRoIGZpbGw9IiMxRDFEMUIiIGQ9Ik0xNTIuMjc3LDM0LjA5MmwwLjA1Ny0xLjI5NHYtMC4yNjJjMC0wLjI4OC0wLjAyLTAuNzMxLTAuMDU3LTEuMzNsMC4zNTYtMC4yNDQNCgkJCWMwLjM2MSwwLjI2MywwLjY5NiwwLjQ0NiwxLjAwMywwLjU1NGMwLjMwNywwLjEwNCwwLjY0NiwwLjE1OSwxLjAyMSwwLjE1OWMwLjY3NSwwLDEuMTkxLTAuMTM2LDEuNTU2LTAuNDAzDQoJCQljMC4zNjItMC4yNjgsMC42MjUtMC42ODgsMC43ODctMS4yNTZjMC4xNjItMC41NjgsMC4yNDQtMi4wNjYsMC4yNDQtNC40OVY5LjIzNWMwLTEuNy0wLjAyNC0zLjM2Mi0wLjA3NS00Ljk4Ng0KCQkJYy0wLjAyNS0xLjE4OC0wLjEwOS0xLjg5MS0wLjI1My0yLjEwOWMtMC4xNDYtMC4yMTktMC4zNzktMC4zODEtMC43MDMtMC40ODZjLTAuMzI1LTAuMTA3LTEuMjI2LTAuMTcyLTIuNjk4LTAuMTk5di0xLjINCgkJCWMxLjk3NSwwLjA3NiwzLjgyMywwLjExMyw1LjU0OSwwLjExM2MxLjgyNCwwLDMuNjgtMC4wMzcsNS41NjYtMC4xMTN2MS4yYy0xLjQ3NywwLjAyNi0yLjM3NSwwLjA5MS0yLjY5OSwwLjE5OQ0KCQkJYy0wLjMyNCwwLjEwNS0wLjU0MywwLjI1MS0wLjY1NiwwLjQzOWMtMC4xNjIsMC4yNS0wLjI2MiwwLjg1NS0wLjI5OSwxLjgxOGMwLDAuMjUtMC4wMjUsMi4wMjYtMC4wNzYsNS4zMjR2MTMuNDU5DQoJCQljMCwyLjA1LTAuMTc0LDMuNjY3LTAuNTIzLDQuODU1Yy0wLjM1MiwxLjE4OC0wLjk0MSwyLjMxNC0xLjc3MSwzLjM4NWMtMC44MzIsMS4wNjktMS43MzMsMS44NzctMi43MDksMi40MjYNCgkJCWMtMC45NzYsMC41NTItMS45MTgsMC44MjYtMi44MywwLjgyNkMxNTIuODE0LDM0LjE4NiwxNTIuNTUzLDM0LjE1NCwxNTIuMjc3LDM0LjA5MnoiLz4NCgk8L2c+DQoJPGc+DQoJCTxwYXRoIGZpbGw9IiMxRDFEMUIiIGQ9Ik0xNjUuNzI1LDI2LjU5M3YtMC44NjRjMC42Ny0wLjAwOSwxLjA4OC0wLjAzNSwxLjI1NC0wLjA4MnMwLjMxNy0wLjEzNywwLjQ1Ny0wLjI2OA0KCQkJYzAuMTQyLTAuMTMxLDAuMzQyLTAuNDc0LDAuNjA0LTEuMDI0YzAuMTUzLTAuMzEzLDAuNzA0LTEuNTA1LDEuNjUzLTMuNTc1bDMuMTgyLTcuMTc1YzAuMzQ4LTAuNzg4LDEuMDg5LTIuNTQzLDIuMjI3LTUuMjY2DQoJCQloMC44MjZsNS40MzIsMTIuNzU4YzAuODgzLDIuMDY5LDEuNDY4LDMuMzY3LDEuNzU3LDMuODkxYzAuMTU5LDAuMjk4LDAuMzM2LDAuNDk0LDAuNTI2LDAuNTg2DQoJCQljMC4xOTEsMC4wOTQsMC42MjEsMC4xNDUsMS4yOTEsMC4xNTJ2MC44NjRjLTEuMzIyLTAuMDg0LTIuMjQ2LTAuMTI3LTIuNzcyLTAuMTI3bC00LjA5NywwLjEyN3YtMC44NjQNCgkJCWMwLjk0OS0wLjAxNywxLjUyNi0wLjA0NywxLjczLTAuMDg4YzAuMjAzLTAuMDQzLDAuMzQyLTAuMTA0LDAuNDEzLTAuMTg2YzAuMDcxLTAuMDgsMC4xMDgtMC4xOCwwLjEwOC0wLjI5OQ0KCQkJYzAtMC4xODgtMC4wNjEtMC40MjgtMC4xNzgtMC43MjRsLTEuNTY1LTMuODkzaC03LjM2NmwtMS4zODcsMy4yN2MtMC4yNDUsMC41ODUtMC4zNjgsMS4wMTMtMC4zNjgsMS4yODQNCgkJCWMwLDAuMTIsMC4wMzQsMC4yMTYsMC4xMDMsMC4yOTNjMC4wOTQsMC4xMSwwLjIzNiwwLjE4NywwLjQzMiwwLjIyOGMwLjMxNCwwLjA3LDAuODY1LDAuMTA3LDEuNjU0LDAuMTE1djAuODY1DQoJCQljLTEuNDM0LTAuMDc2LTIuNTA2LTAuMTEzLTMuMjE5LTAuMTEzQzE2Ny42LDI2LjQ3OSwxNjYuNywyNi41MTgsMTY1LjcyNSwyNi41OTN6IE0xNzEuNjQxLDE5LjQ1N2g2LjQyNGwtMy4xOC03LjY3DQoJCQlMMTcxLjY0MSwxOS40NTd6Ii8+DQoJCTxwYXRoIGZpbGw9IiMxRDFEMUIiIGQ9Ik0xODYuMjg4LDkuMzMxVjguNTE3YzAuODkyLDAuMDM0LDEuNzQzLDAuMDUxLDIuNTU4LDAuMDUxYzAuODIyLDAsMS42MTEtMC4wMTcsMi4zNjUtMC4wNTENCgkJCWMwLjc0NiwxLjY5NiwxLjQzLDMuMTg3LDIuMDQ5LDQuNDY2bDQuODIxLDkuOTIybDQuMzUxLTkuMDk2YzEuMTg4LTIuNDc1LDEuOTgtNC4yMzgsMi4zNzktNS4yOTINCgkJCWMwLjg5OCwwLjAzNCwxLjY1NywwLjA1MSwyLjI3NiwwLjA1MWMwLjU2NywwLDEuNDg4LTAuMDE3LDIuNzYxLTAuMDUxdjAuODE0Yy0xLjAxLDAuMDE4LTEuNjIxLDAuMDYyLTEuODM4LDAuMTM0DQoJCQljLTAuMjE3LDAuMDcxLTAuMzY3LDAuMTcxLTAuNDUxLDAuMjk4Yy0wLjExLDAuMTctMC4xNzUsMC41ODItMC4xOSwxLjIzNGMtMC4wMTEsMC4xNjktMC4wMywxLjM3NC0wLjA2MywzLjYxM3Y1Ljg5DQoJCQljMCwxLjE1NCwwLjAxOCwyLjI3NywwLjA1MSwzLjM3MWMwLjAyNSwwLjgwNiwwLjA4OCwxLjI4NCwwLjE4NiwxLjQzOGMwLjA5OCwwLjE1MiwwLjI1NCwwLjI2NSwwLjQ3MSwwLjMzNg0KCQkJYzAuMjE3LDAuMDcyLDAuODI4LDAuMTE2LDEuODM4LDAuMTM1djAuODEyYy0xLjcxMy0wLjA3Ni0yLjkyMi0wLjExMy0zLjYyNS0wLjExM2MtMC41NjcsMC0xLjgyNCwwLjAzNy0zLjc2NiwwLjExM3YtMC44MTINCgkJCWMxLjAwOS0wLjAxOSwxLjYyMy0wLjA2MiwxLjg0NC0wLjEzNXMwLjM2OS0wLjE3MiwwLjQ0NS0wLjI5OWMwLjEwOS0wLjE2OSwwLjE3NC0wLjU4LDAuMTkxLTEuMjMzDQoJCQljMC4wMDgtMC4xNzgsMC4wMjgtMS4zODIsMC4wNjItMy42MTN2LTkuMzM3bC00LjM4OSw5LjE4M2MtMC42ODgsMS40MzQtMS4yMjcsMi41ODgtMS42MTYsMy40NjINCgkJCWMtMC4yNzksMC42MzUtMC43MDMsMS42NDQtMS4yNzEsMy4wMjhoLTAuNDk2Yy0wLjExLTAuMzIyLTAuMjEzLTAuNTgxLTAuMzA3LTAuNzc3bC0wLjg2My0xLjg0NWwtNi4wODItMTIuNjMxVjIwLjUNCgkJCWMwLDEuMTU0LDAuMDE4LDIuMjc3LDAuMDUxLDMuMzcxYzAuMDI1LDAuODA2LDAuMDg4LDEuMjg0LDAuMTg2LDEuNDM4YzAuMDk4LDAuMTUyLDAuMjU0LDAuMjY1LDAuNDcxLDAuMzM2DQoJCQljMC4yMTcsMC4wNzIsMC44MjgsMC4xMTYsMS44MzgsMC4xMzV2MC44MTJsLTMuMDY0LTAuMTAybC0zLjE2OCwwLjEwMnYtMC44MTJjMS4wMDEtMC4wMTksMS42MTEtMC4wNjIsMS44MzItMC4xMzUNCgkJCXMwLjM3My0wLjE3MiwwLjQ1OC0wLjI5OWMwLjEwMy0wLjE2OSwwLjE2Ni0wLjU4LDAuMTktMS4yMzNjMC4wMDgtMC4xNzgsMC4wMjUtMS4zODIsMC4wNTEtMy42MTN2LTUuODkNCgkJCWMwLTEuMTUzLTAuMDE0LTIuMjgxLTAuMDM4LTMuMzg0Yy0wLjAyNS0wLjgwNi0wLjA4Ny0xLjI4My0wLjE4NS0xLjQzMXMtMC4yNTUtMC4yNi0wLjQ3MS0wLjMzMQ0KCQkJQzE4Ny45MSw5LjM5NCwxODcuMjk3LDkuMzQ5LDE4Ni4yODgsOS4zMzF6Ii8+DQoJCTxwYXRoIGZpbGw9IiMxRDFEMUIiIGQ9Ik0yMTEuNjA5LDI2LjU5M3YtMC44MDFjMC44OTEtMC4wMDksMS40NzYtMC4wNzYsMS43NTYtMC4yMDRjMC4xMTctMC4wNDksMC4yMDMtMC4xMzEsMC4yNTQtMC4yNDINCgkJCWMwLjA4NS0wLjE2OSwwLjE0NS0wLjYxMywwLjE3OC0xLjMzNWMwLjA1MS0xLjExOSwwLjA3Ni0yLjA4NiwwLjA3Ni0yLjl2LTYuNWMwLTEuMTUzLTAuMDEyLTIuMjgxLTAuMDM3LTMuMzg0DQoJCQljLTAuMDI1LTAuODA2LTAuMDg4LTEuMjgzLTAuMTg2LTEuNDMxYy0wLjA5OS0wLjE0OC0wLjI1NC0wLjI2LTAuNDcxLTAuMzMxYy0wLjIxNy0wLjA3MS0wLjgyOC0wLjExNi0xLjgzOS0wLjEzNFY4LjUxNw0KCQkJbDMuNjI2LDAuMDc2bDMuODQyLTAuMDYyYzEuODQtMC4wMjYsMy4xNzYtMC4wMzksNC4wMDgtMC4wMzljMC44NCwwLDEuNjMzLDAuMDQ3LDIuMzc5LDAuMTQxDQoJCQljLTAuMTM3LDAuNDgyLTAuMjI5LDAuOTAzLTAuMjc5LDEuMjU5Yy0wLjAxOCwwLjA3Ni0wLjA5NCwwLjk1OC0wLjIyOSwyLjY0NmgtMC44MDNjMC4wMS0wLjg2NS0wLjA0Ny0xLjY1Mi0wLjE2NS0yLjM2NQ0KCQkJYy0wLjQ2Ny0wLjE5NS0wLjk3OS0wLjMyOC0xLjU0LTAuMzk1Yy0wLjk0OS0wLjEyLTEuODk3LTAuMTc5LTIuODQ5LTAuMTc5Yy0wLjIwNCwwLTAuNjU3LDAuMDE4LTEuMzYsMC4wNTINCgkJCWMtMC43MDUsMC4wMzMtMS4yMDksMC4wNjMtMS41MTUsMC4wODljLTAuMDM0LDAuOTQtMC4wNiwxLjgyMy0wLjA3NiwyLjY0NmwtMC4wNTIsNC4zMDJjMC45OTIsMC4wNDksMS45MDQsMC4wNzQsMi43MzYsMC4wNzQNCgkJCWMxLjAwOCwwLDEuODY5LTAuMDQ1LDIuNTgyLTAuMTRjMC4yNzEtMC4wMzIsMC40NDQtMC4xMDIsMC41MjEtMC4yMDRzMC4xNDQtMC40NDksMC4yMDMtMS4wNDJsMC4wNzUtMC44OTFoMC43NjV2MC4yNDENCgkJCWwtMC4wNjMsMi42NDZsMC4wNjMsMi45NjVoLTAuODkybC0wLjAzNy0wLjg2N2MtMC4wMTgtMC42MjctMC4wNzQtMS4wMTctMC4xNzItMS4xNjljLTAuMDk5LTAuMTUzLTAuMjgyLTAuMjU5LTAuNTU1LTAuMzE4DQoJCQljLTAuNDgxLTAuMTAyLTEuNDItMC4xNTMtMi44MTEtMC4xNTNjLTAuNTY4LDAtMS4zNzQsMC4wMjEtMi40MTgsMC4wNjRjLTAuMDQyLDAuODQ4LTAuMDYyLDIuMTA4LTAuMDYyLDMuNzc5DQoJCQljMCwxLjU2OCwwLjAyMSwyLjc2LDAuMDYyLDMuNTc0YzEuMjIyLDAuMDk0LDIuNTkyLDAuMTM5LDQuMTA5LDAuMTM5YzEuMDc2LDAsMS44NDQtMC4wMzMsMi4zMDMtMC4xMDMNCgkJCWMwLjQ1Ny0wLjA2NiwwLjg4Mi0wLjE4MSwxLjI3MS0wLjM0MWMwLjEwMy0wLjI2NSwwLjIwNC0wLjYyMSwwLjMwNi0xLjA3YzAuMTg4LTAuNzU1LDAuMzExLTEuMzIzLDAuMzY5LTEuNzA0aDAuODQNCgkJCWMtMC4yMjEsMS43MTMtMC4zMywzLjEzMy0wLjMzLDQuMjYzYy0wLjcyOSwwLjEwOC0xLjYxNSwwLjE2My0yLjY1OCwwLjE2M2wtNy41OTYtMC4xMDINCgkJCUMyMTQuODMyLDI2LjQ5MSwyMTMuNzIxLDI2LjUyNSwyMTEuNjA5LDI2LjU5M3oiLz4NCgkJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTIyNy43MDcsMjUuOTdjMC4xMzYtMC44MTMsMC4yMTctMi4xMzMsMC4yNDItMy45NTZoMC44NjVjMC4wNDEsMS4yMzgsMC4xMSwxLjk3LDAuMjA5LDIuMTk0DQoJCQljMC4wOTgsMC4yMjQsMC4zMzIsMC40NjUsMC43MDcsMC43MTljMC4zNzMsMC4yNTUsMC44NzMsMC40ODEsMS41LDAuNjgxYzAuNjI3LDAuMjAxLDEuMjMzLDAuMjk5LDEuODE5LDAuMjk5DQoJCQljMC44NTUsMCwxLjY0Ni0wLjE5NiwyLjM2NS0wLjU5MmMwLjcyMi0wLjM5NCwxLjI0Ny0wLjkxMSwxLjU3OC0xLjU1YzAuMzMtMC42NDEsMC40OTYtMS4zMjYsMC40OTYtMi4wNTQNCgkJCWMwLTAuNTYtMC4wODQtMS4wNDQtMC4yNDgtMS40NWMtMC4xNjYtMC40MDgtMC40MTgtMC43MzYtMC43NTktMC45ODZjLTAuMzM4LTAuMjUtMC43NTgtMC40MjYtMS4yNi0wLjUyOQ0KCQkJYy0wLjMxMi0wLjA1LTAuOTM5LTAuMTM1LTEuODgyLTAuMjU1Yy0wLjk0LTAuMTE4LTEuNzQzLTAuMjUtMi40MDMtMC4zOTJjLTAuODgzLTAuMjcyLTEuNTMtMC41ODktMS45NDYtMC45NTUNCgkJCWMtMC40MTYtMC4zNjUtMC43NTMtMC44NDMtMS4wMTMtMS40MzhjLTAuMjU4LTAuNTk0LTAuMzg4LTEuMjM0LTAuMzg4LTEuOTIxYzAtMS4wMDEsMC4yNjEtMS45NDQsMC43ODItMi44MzENCgkJCWMwLjUyMS0wLjg4NiwxLjI5My0xLjU3NCwyLjMxNC0yLjA2NmMxLjAyMS0wLjQ5MiwyLjEzMS0wLjczOCwzLjMyNi0wLjczOGMwLjcyMSwwLDEuNTA4LDAuMDk4LDIuMzYsMC4yOQ0KCQkJYzAuODUzLDAuMTk0LDEuNjQ2LDAuNDc1LDIuMzg1LDAuODQyYy0wLjExOCwwLjUzNS0wLjIwMiwxLjAzNC0wLjI1NCwxLjQ5NmMtMC4wNTEsMC40NjItMC4wOSwxLjE0Mi0wLjExNCwyLjA0MmgtMC44NjUNCgkJCWMtMC4wMjUtMS4zMDgtMC4wNjItMi4wMi0wLjExMy0yLjEzOWMtMC4yMTMtMC4zMDQtMC41MDEtMC41OC0wLjg2NS0wLjgyNWMtMC44NzQtMC40OTMtMS43ODUtMC43NC0yLjczNC0wLjc0DQoJCQljLTEuMjI5LDAtMi4yMTMsMC4zNzUtMi45NDUsMS4xMjVjLTAuNzMzLDAuNzUtMS4xMDIsMS43MjMtMS4xMDIsMi45MTdjMCwwLjcyMiwwLjEzMywxLjI3OCwwLjM5NiwxLjY3Mw0KCQkJYzAuMjY0LDAuMzk1LDAuNzMzLDAuNzA5LDEuNDEyLDAuOTQ2YzAuNDY3LDAuMTYyLDEuMjI5LDAuMzEyLDIuMjksMC40NTFjMS4wNiwwLjE0MSwyLjAxNCwwLjI5MSwyLjg2MSwwLjQ1Mg0KCQkJYzAuNzk3LDAuMjM3LDEuMzg3LDAuNTE3LDEuNzY5LDAuODQ2YzAuMzgzLDAuMzI2LDAuNjk0LDAuNzUzLDAuOTQsMS4yODNjMC4yNDYsMC41MjksMC4zNjksMS4xNSwwLjM2OSwxLjg2Mw0KCQkJYzAsMS42ODYtMC42OTksMy4xNTYtMi4wOTksNC40MXMtMy4yMSwxLjg4MS01LjQzMywxLjg4MUMyMzAuNTk2LDI2Ljk2MiwyMjkuMDcyLDI2LjYzMiwyMjcuNzA3LDI1Ljk3eiIvPg0KCTwvZz4NCgk8Zz4NCgkJPHBhdGggZmlsbD0iIzFEMUQxQiIgZD0iTTk4Ljk0OSwyNi41Mjd2LTAuNjIyYzAuNDgxLTAuMDA3LDAuNzgyLTAuMDI1LDAuOTAxLTAuMDYxYzAuMTE5LTAuMDMyLDAuMjI5LTAuMDk3LDAuMzMtMC4xOTINCgkJCWMwLjEwMS0wLjA5NCwwLjI0NS0wLjMzOCwwLjQzNS0wLjczNmMwLjEwOS0wLjIyNSwwLjUwNi0xLjA4MSwxLjE4OS0yLjU3MWwyLjI4Ny01LjE1N2MwLjI1LTAuNTY2LDAuNzg0LTEuODMxLDEuNjAxLTMuNzg3aDAuNTk1DQoJCQlsMy45MDUsOS4xNzRjMC42MzUsMS40ODcsMS4wNTUsMi40MjEsMS4yNjMsMi43OTljMC4xMTYsMC4yMTQsMC4yNDMsMC4zNTQsMC4zOCwwLjQyMWMwLjEzNywwLjA2NiwwLjQ0NywwLjEwNCwwLjkyOCwwLjEwOXYwLjYyMQ0KCQkJYy0wLjk1MS0wLjA2MS0xLjYxNi0wLjA5LTEuOTk0LTAuMDlsLTIuOTQ1LDAuMDl2LTAuNjIxYzAuNjgzLTAuMDEyLDEuMDk4LTAuMDMzLDEuMjQ0LTAuMDYyDQoJCQljMC4xNDctMC4wMzEsMC4yNDYtMC4wNzYsMC4yOTctMC4xMzRjMC4wNTEtMC4wNTgsMC4wNzgtMC4xMywwLjA3OC0wLjIxNWMwLTAuMTM0LTAuMDQyLTAuMzA4LTAuMTI3LTAuNTIxbC0xLjEyNS0yLjhoLTUuMjk3DQoJCQlsLTAuOTk3LDIuMzUxYy0wLjE3NywwLjQyLTAuMjY1LDAuNzI5LTAuMjY1LDAuOTI0YzAsMC4wODQsMC4wMjQsMC4xNTYsMC4wNzMsMC4yMWMwLjA2NywwLjA3OSwwLjE3LDAuMTM1LDAuMzExLDAuMTY1DQoJCQljMC4yMjYsMC4wNDksMC42MjIsMC4wNzYsMS4xODksMC4wODJ2MC42MjFjLTEuMDMxLTAuMDU1LTEuODAyLTAuMDgtMi4zMTQtMC4wOEMxMDAuMjk3LDI2LjQ0NSw5OS42NSwyNi40NzMsOTguOTQ5LDI2LjUyN3oNCgkJCSBNMTAzLjIwMywyMS4zOTZoNC42MTlsLTIuMjg3LTUuNTE2TDEwMy4yMDMsMjEuMzk2eiIvPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMTEzLjcyMiwyNi41Mjd2LTAuNTc2YzAuNjQxLTAuMDA2LDEuMDYxLTAuMDU3LDEuMjYzLTAuMTQ2YzAuMDg1LTAuMDM1LDAuMTQ2LTAuMDk1LDAuMTgzLTAuMTczDQoJCQljMC4wNjEtMC4xMjMsMC4xMDQtMC40NDIsMC4xMjgtMC45NmMwLjAzNi0wLjgwNywwLjA1NS0xLjUsMC4wNTUtMi4wODZWMTUuMTNjMC0wLjIwMi0wLjAxMy0wLjMzMy0wLjAzNy0wLjM5Mg0KCQkJYy0wLjA0OS0wLjExMi0wLjE1OS0wLjI0My0wLjMyOS0wLjM5NmMtMC4xMS0wLjA5Ny0wLjIzNy0wLjE2LTAuMzgtMC4xODhjLTAuMTQzLTAuMDI3LTAuNDYyLTAuMDQ0LTAuOTU2LTAuMDV2LTAuNTc2DQoJCQljMS4wMTgsMC4wMjQsMS42NTgsMC4wMzcsMS45MjEsMC4wMzdjMC40NDUsMCwwLjg4Ny0wLjAxMywxLjMyNi0wLjAzN2MwLjUxOCwwLjY3OCwwLjg5OSwxLjE3OCwxLjE0NCwxLjVsMS44OTQsMi4zMzMNCgkJCWwyLjc2MSwzLjMzMWMwLjg4NiwxLjA2LDEuNTk3LDEuODk1LDIuMTMzLDIuNTA1YzAuMzQyLDAuNDAyLDAuNjI4LDAuNzE5LDAuODU5LDAuOTUxdi02LjY4N2MwLTAuNTk4LTAuMDIxLTEuMjk4LTAuMDYzLTIuMTA0DQoJCQljLTAuMDI0LTAuNTA1LTAuMDYzLTAuODItMC4xMTktMC45NDJjLTAuMDQzLTAuMDc5LTAuMTA2LTAuMTM3LTAuMTktMC4xNzRjLTAuMjAxLTAuMDg1LTAuNjE5LTAuMTMxLTEuMjU0LTAuMTM3di0wLjU3Ng0KCQkJYzAuNzE5LDAuMDI0LDEuNDQ4LDAuMDM3LDIuMTg3LDAuMDM3YzAuNjk0LDAsMS4zMjctMC4wMTMsMS44OTQtMC4wMzd2MC41NzZjLTAuNjM1LDAuMDA2LTEuMDUyLDAuMDUyLTEuMjU0LDAuMTM3DQoJCQljLTAuMDg1LDAuMDM3LTAuMTQ2LDAuMDk4LTAuMTgyLDAuMTg0Yy0wLjA2MiwwLjExNy0wLjEwNCwwLjQzNy0wLjEyOSwwLjk2Yy0wLjAzNywwLjgwNi0wLjA1NSwxLjQ5OC0wLjA1NSwyLjA3N3Y0LjQNCgkJCWMwLDAuODkxLDAuMDE2LDIuNTUzLDAuMDQ1LDQuOTg2bC0wLjk0MS0wLjI3NGwtMC4yMTktMC4wNDZjLTAuMDM3LTAuMDE0LTAuMDctMC4wMy0wLjEwMi0wLjA1NQ0KCQkJYy0wLjA0NC0wLjAzMS0wLjE1OC0wLjE1Mi0wLjM0OS0wLjM2N2MtMC41MDYtMC41NzMtMC44NzgtMS4wMDYtMS4xMTUtMS4yOTdsLTEuMTgxLTEuNDkybC02LjQ4NS03Ljc0N3Y3LjAxNQ0KCQkJYzAsMC41OTgsMC4wMjEsMS4zMDIsMC4wNjQsMi4xMTNjMC4wMjQsMC41MDYsMC4wNjQsMC44MTUsMC4xMTksMC45MzRjMC4wNDIsMC4wODUsMC4xMDYsMC4xNDYsMC4xOTIsMC4xODMNCgkJCWMwLjIwMSwwLjA4NiwwLjYxOSwwLjEzMywxLjI1MywwLjEzOHYwLjU3NWMtMC41MzctMC4wNDEtMS4xMjgtMC4wNjItMS43NzUtMC4wNjJDMTE1LjMyLDI2LjQ2NCwxMTQuNTUyLDI2LjQ4NCwxMTMuNzIyLDI2LjUyN3oiDQoJCQkvPg0KCQk8cGF0aCBmaWxsPSIjMUQxRDFCIiBkPSJNMTI5LjU5NCwyNi41Mjd2LTAuNDM4YzAuMzU0LTAuMjAyLDAuNjQ4LTAuMzg1LDAuODg3LTAuNTQ5YzAuMDM3LTAuNDE0LDAuMDY2LTAuOTkxLDAuMDkyLTEuNzI5DQoJCQljMC4wNDQtMS4yNTcsMC4wNjMtMi4xMjgsMC4wNjMtMi42MTZ2LTMuNzMyYzAtMC41OTgtMC4wMTktMS4yOTgtMC4wNTUtMi4xMDRjLTAuMDI0LTAuNTA1LTAuMDY3LTAuODItMC4xMjgtMC45NDINCgkJCWMtMC4wNDMtMC4wNzktMC4xMDctMC4xMzctMC4xOTItMC4xNzRjLTAuMi0wLjA4NS0wLjYxOC0wLjEzMS0xLjI1My0wLjEzN1YxMy41M2MwLjg5MSwwLjAzNywxLjY3OCwwLjA1NSwyLjM1OSwwLjA1NQ0KCQkJYzAuNTI1LDAsMS4yNC0wLjAxMiwyLjE0Ni0wLjAzNmMwLjkwNC0wLjAyMywxLjYwNy0wLjAzNywyLjEwNy0wLjAzN2MxLjQ5NCwwLDIuNjk1LDAuMTkyLDMuNjA0LDAuNTcyDQoJCQljMC45MDgsMC4zODEsMS42OCwxLjAyLDIuMzEzLDEuOTE2YzAuNjM1LDAuODk3LDAuOTUyLDEuOTksMC45NTIsMy4yODNjMCwwLjkyOS0wLjE0OSwxLjc5Ny0wLjQ0OCwyLjYwOHMtMC43MDUsMS41Mi0xLjIxNywyLjEyNw0KCQkJYy0wLjUxMywwLjYwNi0xLjA2MiwxLjA4Ny0xLjY0NiwxLjQ0Yy0wLjU4NywwLjM1NC0xLjE5OSwwLjYyLTEuODQ1LDAuODAyYy0wLjY0NCwwLjE4LTEuNTI0LDAuMjctMi42NDcsMC4yNw0KCQkJYy0wLjM3MSwwLTAuODc1LTAuMDE0LTEuNTEtMC4wMzZjLTAuODI4LTAuMDI0LTEuMzcxLTAuMDM3LTEuNjI4LTAuMDM3QzEzMS4xOCwyNi40NTQsMTMwLjUyNSwyNi40NzksMTI5LjU5NCwyNi41Mjd6DQoJCQkgTTEzMi40MywyNS41M2MwLjY3LDAuMTE2LDEuMzc3LDAuMTc0LDIuMTIxLDAuMTc0YzAuNzcsMCwxLjQ0Ny0wLjA2NywyLjAzNS0wLjIwMWMwLjU4OS0wLjEzMywxLjA5Mi0wLjMyMywxLjUxLTAuNTY1DQoJCQljMC40MTgtMC4yNDQsMC44MjItMC42MDUsMS4yMTMtMS4wODFjMC4zOS0wLjQ3NiwwLjY4OS0xLjA4NCwwLjktMS44MjZjMC4yMS0wLjc0MSwwLjMxNC0xLjUwNiwwLjMxNC0yLjI5OQ0KCQkJYzAtMS4xMzUtMC4yMDMtMi4xMDktMC42MDctMi45MjRjLTAuNDA2LTAuODEzLTEuMDE4LTEuNDM4LTEuODM0LTEuODcxcy0xLjkzOS0wLjY0OS0zLjM2Ni0wLjY0OQ0KCQkJYy0wLjc1MSwwLTEuNTEzLDAuMDU4LTIuMjg2LDAuMTc0Yy0wLjAyLDAuMjk4LTAuMDMzLDAuODMtMC4wNDcsMS41OTFsLTAuMDM1LDEuMzI2djMuNjVsMC4wMjYsMi44MzQNCgkJCUMxMzIuMzgsMjQuMjk4LDEzMi4zOTgsMjQuODU0LDEzMi40MywyNS41M3oiLz4NCgk8L2c+DQoJPHJlY3QgeD0iMTMuODU5IiB5PSIzMS42OTgiIGZpbGw9IiM4NEJEMDAiIHdpZHRoPSIxMjkiIGhlaWdodD0iMSIvPg0KCTxyZWN0IHg9IjE2NS44NTkiIHk9IjMxLjY5OCIgZmlsbD0iIzg0QkQwMCIgd2lkdGg9Ijc0IiBoZWlnaHQ9IjEiLz4NCjwvZz4NCjwvc3ZnPg0K';
}
public getFormStack(): FormStack {
const form = new Form(CoreFormsEnum.AUTHORIZATION_FORM, getFormName(CoreFormsEnum.AUTHORIZATION_FORM))
.addField(new Field(FieldType.URL, BASE_URL, 'URL', undefined, true))
.addField(new Field(FieldType.TEXT, API_KEY, 'Api key', undefined, true));
return new FormStack().addForm(form);
}
public isAuthorized(applicationInstall: ApplicationInstall): boolean {
const authorizationForm = applicationInstall.getSettings()[CoreFormsEnum.AUTHORIZATION_FORM];
return super.isAuthorized(applicationInstall)
&& !!authorizationForm?.[BASE_URL]
&& !!authorizationForm?.[API_KEY];
}
public getRequestDto(
dto: AProcessDto,
applicationInstall: ApplicationInstall,
method: HttpMethods,
url?: string,
data?: unknown,
): RequestDto {
const request = new RequestDto(`${this.getBaseUrl(applicationInstall)}/${url ?? ''}`, method, dto);
const token = Buffer.from(JSON.stringify(this.getBearerToken(applicationInstall))).toString('base64');
request.setHeaders({
[CommonHeaders.CONTENT_TYPE]: JSON_TYPE,
[CommonHeaders.ACCEPT]: JSON_TYPE,
[CommonHeaders.AUTHORIZATION]: `Bearer ${token}`,
});
if (data) {
request.setJsonBody(data);
}
return request;
}
public getRequestDtoV1(
dto: AProcessDto,
applicationInstall: ApplicationInstall,
method: HttpMethods,
url?: string,
data?: unknown,
): RequestDto {
const token = this.getBearerToken(applicationInstall);
let fullUrl = `${this.getBaseUrl(applicationInstall)}/${url ?? ''}`.replace('/v2', '/1');
fullUrl += fullUrl.includes('?') ? '&' : '?';
fullUrl += `half_api_key=${token.half_api_key}&message_timestamp=${token.message_timestamp}&security_hash=${token.security_hash}`;
const request = new RequestDto(fullUrl, method, dto);
request.setHeaders({
[CommonHeaders.CONTENT_TYPE]: JSON_TYPE,
[CommonHeaders.ACCEPT]: JSON_TYPE,
});
if (data) {
request.setJsonBody(data);
}
return request;
}
protected getBaseUrl(applicationInstall: ApplicationInstall): string {
return applicationInstall.getSettings()[CoreFormsEnum.AUTHORIZATION_FORM][BASE_URL];
}
protected getApiKey(applicationInstall: ApplicationInstall): string {
return applicationInstall.getSettings()[CoreFormsEnum.AUTHORIZATION_FORM][API_KEY];
}
private getBearerToken(applicationInstall: ApplicationInstall): {
half_api_key: string,
message_timestamp: number,
security_hash: string,
} {
const apiKey = this.getApiKey(applicationInstall);
const halfApiKey = apiKey.substring(0, 16);
const timestamp = Math.floor(Date.now() / 1000);
const securityHash = crypto.createHash('md5').update(`${timestamp}${apiKey}`).digest('hex');
return {
half_api_key: halfApiKey,
message_timestamp: timestamp,
security_hash: securityHash,
};
}
}
/* eslint-enable @typescript-eslint/naming-convention */
|