bitsnap-react 1.18.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/AGENTS.md +106 -0
  2. package/README.md +98 -0
  3. package/dist/BitsnapCart-E72W5RRZ.mjs +2 -0
  4. package/dist/BitsnapCart-LHJ6KOTV.css +2 -0
  5. package/dist/BitsnapCart-LHJ6KOTV.css.map +1 -0
  6. package/dist/BitsnapCart-Q2HER6GU.js +2 -0
  7. package/dist/BitsnapCart-Q2HER6GU.js.map +1 -0
  8. package/dist/CartProvider-677CE2FI.js +2 -0
  9. package/dist/CartProvider-677CE2FI.js.map +1 -0
  10. package/dist/CartProvider-YPDOFSYC.mjs +2 -0
  11. package/dist/{PanelModelFiles-JZFSF7BF.mjs → PanelModelFiles-4B2HYGIE.mjs} +2 -2
  12. package/dist/{PanelModelFiles-7HPXWONN.js → PanelModelFiles-EKQRLF46.js} +2 -2
  13. package/dist/PanelModelFiles-EKQRLF46.js.map +1 -0
  14. package/dist/analytics.js +1 -1
  15. package/dist/analytics.js.map +1 -1
  16. package/dist/analytics.mjs +1 -1
  17. package/dist/catalog.js +1 -1
  18. package/dist/catalog.js.map +1 -1
  19. package/dist/catalog.mjs +1 -1
  20. package/dist/chat.css +2 -0
  21. package/dist/chat.css.map +1 -0
  22. package/dist/chat.d.mts +172 -0
  23. package/dist/chat.d.ts +172 -0
  24. package/dist/chat.js +2 -0
  25. package/dist/chat.js.map +1 -0
  26. package/dist/chat.mjs +2 -0
  27. package/dist/chat.mjs.map +1 -0
  28. package/dist/chunk-2FD2QP4Y.js +2 -0
  29. package/dist/chunk-2FD2QP4Y.js.map +1 -0
  30. package/dist/chunk-5JRUPLXY.mjs +2 -0
  31. package/dist/chunk-5JRUPLXY.mjs.map +1 -0
  32. package/dist/chunk-5M6M7FAR.mjs +2 -0
  33. package/dist/chunk-5M6M7FAR.mjs.map +1 -0
  34. package/dist/chunk-6Q3VGPSF.js.map +1 -1
  35. package/dist/chunk-AAC576BC.mjs +5 -0
  36. package/dist/chunk-AAC576BC.mjs.map +1 -0
  37. package/dist/{chunk-4OVOKGGS.mjs → chunk-AB37DWOK.mjs} +2 -2
  38. package/dist/{chunk-ZATPBYOA.js → chunk-BUYTK7KM.js} +2 -2
  39. package/dist/chunk-BUYTK7KM.js.map +1 -0
  40. package/dist/{chunk-DP2NOHCI.js → chunk-D2ASWUXM.js} +2 -2
  41. package/dist/chunk-D2ASWUXM.js.map +1 -0
  42. package/dist/chunk-DDIEFKNP.mjs +2 -0
  43. package/dist/{chunk-ZHTMK5TA.mjs.map → chunk-DDIEFKNP.mjs.map} +1 -1
  44. package/dist/{chunk-4HGZZJEL.js → chunk-DOJICJCQ.js} +2 -2
  45. package/dist/chunk-DOJICJCQ.js.map +1 -0
  46. package/dist/chunk-EMR4YXNY.mjs +2 -0
  47. package/dist/chunk-EMR4YXNY.mjs.map +1 -0
  48. package/dist/{chunk-JA62KNAQ.js → chunk-GJOGATP6.js} +2 -2
  49. package/dist/chunk-GJOGATP6.js.map +1 -0
  50. package/dist/chunk-GQ5OKU74.js +2 -0
  51. package/dist/chunk-GQ5OKU74.js.map +1 -0
  52. package/dist/chunk-JSDGZ4NY.js.map +1 -1
  53. package/dist/chunk-KHQEDQYF.js +5 -0
  54. package/dist/chunk-KHQEDQYF.js.map +1 -0
  55. package/dist/chunk-KOYBZORL.js.map +1 -1
  56. package/dist/chunk-LGPNJ5XE.js +2 -0
  57. package/dist/chunk-LGPNJ5XE.js.map +1 -0
  58. package/dist/chunk-MDAFPGPA.js +2 -0
  59. package/dist/chunk-MDAFPGPA.js.map +1 -0
  60. package/dist/{chunk-JHJ3ZZF4.mjs → chunk-MMLBQHBM.mjs} +2 -2
  61. package/dist/chunk-MWWEPEU2.js +2 -0
  62. package/dist/chunk-MWWEPEU2.js.map +1 -0
  63. package/dist/{chunk-GEBRXFT3.mjs → chunk-N523LFAM.mjs} +2 -2
  64. package/dist/chunk-NWXZ45TV.js +2 -0
  65. package/dist/chunk-NWXZ45TV.js.map +1 -0
  66. package/dist/chunk-OFPRIENJ.mjs +2 -0
  67. package/dist/chunk-OFPRIENJ.mjs.map +1 -0
  68. package/dist/chunk-OR566YJI.mjs +2 -0
  69. package/dist/chunk-OR566YJI.mjs.map +1 -0
  70. package/dist/chunk-Q337IQNA.js +2 -0
  71. package/dist/chunk-Q337IQNA.js.map +1 -0
  72. package/dist/chunk-SCEWYZUZ.mjs +2 -0
  73. package/dist/chunk-SCEWYZUZ.mjs.map +1 -0
  74. package/dist/{chunk-CF45RDMD.mjs → chunk-SSSF64M7.mjs} +2 -2
  75. package/dist/{chunk-CF45RDMD.mjs.map → chunk-SSSF64M7.mjs.map} +1 -1
  76. package/dist/chunk-W3RGQYPD.js.map +1 -1
  77. package/dist/chunk-WG54EHST.mjs +2 -0
  78. package/dist/chunk-WG54EHST.mjs.map +1 -0
  79. package/dist/chunk-XEXPQFKN.mjs +2 -0
  80. package/dist/chunk-XEXPQFKN.mjs.map +1 -0
  81. package/dist/chunk-YV2C276H.js +2 -0
  82. package/dist/chunk-YV2C276H.js.map +1 -0
  83. package/dist/consent.js.map +1 -1
  84. package/dist/course.d.mts +2 -14
  85. package/dist/course.d.ts +2 -14
  86. package/dist/course.js +1 -1
  87. package/dist/course.js.map +1 -1
  88. package/dist/course.mjs +1 -1
  89. package/dist/course.mjs.map +1 -1
  90. package/dist/embed/analytics.js +1 -1
  91. package/dist/errors.js.map +1 -1
  92. package/dist/index.css +1 -1
  93. package/dist/index.css.map +1 -1
  94. package/dist/index.d.mts +288 -4
  95. package/dist/index.d.ts +288 -4
  96. package/dist/index.js +1 -1
  97. package/dist/index.js.map +1 -1
  98. package/dist/index.mjs +1 -1
  99. package/dist/index.mjs.map +1 -1
  100. package/dist/internal.js.map +1 -1
  101. package/dist/methods-64D5DD6K.js +2 -0
  102. package/dist/methods-64D5DD6K.js.map +1 -0
  103. package/dist/methods-NQA3DFLE.mjs +2 -0
  104. package/dist/methods-NQA3DFLE.mjs.map +1 -0
  105. package/dist/model-files-client-P4PORZJ6.js.map +1 -1
  106. package/dist/models.js.map +1 -1
  107. package/dist/returns.js +1 -1
  108. package/dist/returns.js.map +1 -1
  109. package/dist/returns.mjs +1 -1
  110. package/dist/texts-9kfgClsA.d.mts +14 -0
  111. package/dist/texts-9kfgClsA.d.ts +14 -0
  112. package/dist/{types-D6LsoycW.d.mts → types-B-sjyZQs.d.mts} +7 -1
  113. package/dist/{types-ClFCVzk_.d.ts → types-iRe6ix2y.d.ts} +7 -1
  114. package/dist/viewer3d.js.map +1 -1
  115. package/dist/viewer3d.mjs +1 -1
  116. package/dist/viewer3d.mjs.map +1 -1
  117. package/dist/widgets-BT2LN2Nq.d.mts +547 -0
  118. package/dist/widgets-BVOSj9fU.d.ts +547 -0
  119. package/package.json +18 -3
  120. package/dist/CartProvider-OEI526IN.js +0 -2
  121. package/dist/CartProvider-OEI526IN.js.map +0 -1
  122. package/dist/CartProvider-RYAA3JDA.mjs +0 -2
  123. package/dist/PanelModelFiles-7HPXWONN.js.map +0 -1
  124. package/dist/chunk-4HGZZJEL.js.map +0 -1
  125. package/dist/chunk-5X7TP3TQ.mjs +0 -2
  126. package/dist/chunk-5X7TP3TQ.mjs.map +0 -1
  127. package/dist/chunk-7RXW6XFY.js +0 -2
  128. package/dist/chunk-7RXW6XFY.js.map +0 -1
  129. package/dist/chunk-DP2NOHCI.js.map +0 -1
  130. package/dist/chunk-EVIDNS22.mjs +0 -2
  131. package/dist/chunk-EVIDNS22.mjs.map +0 -1
  132. package/dist/chunk-G4V2KWTV.js +0 -2
  133. package/dist/chunk-G4V2KWTV.js.map +0 -1
  134. package/dist/chunk-GWF3MRUP.js +0 -2
  135. package/dist/chunk-GWF3MRUP.js.map +0 -1
  136. package/dist/chunk-JA62KNAQ.js.map +0 -1
  137. package/dist/chunk-UPAOIY4R.mjs +0 -2
  138. package/dist/chunk-UPAOIY4R.mjs.map +0 -1
  139. package/dist/chunk-V5ECGBFW.js +0 -5
  140. package/dist/chunk-V5ECGBFW.js.map +0 -1
  141. package/dist/chunk-VNV5BD4X.js +0 -2
  142. package/dist/chunk-VNV5BD4X.js.map +0 -1
  143. package/dist/chunk-VNYHJT6V.mjs +0 -2
  144. package/dist/chunk-VNYHJT6V.mjs.map +0 -1
  145. package/dist/chunk-WJO5GSY3.mjs +0 -5
  146. package/dist/chunk-WJO5GSY3.mjs.map +0 -1
  147. package/dist/chunk-ZATPBYOA.js.map +0 -1
  148. package/dist/chunk-ZHTMK5TA.mjs +0 -2
  149. package/dist/methods-AULQDKVS.mjs +0 -2
  150. package/dist/methods-PMH5VQ25.js +0 -2
  151. package/dist/methods-PMH5VQ25.js.map +0 -1
  152. /package/dist/{CartProvider-RYAA3JDA.mjs.map → BitsnapCart-E72W5RRZ.mjs.map} +0 -0
  153. /package/dist/{methods-AULQDKVS.mjs.map → CartProvider-YPDOFSYC.mjs.map} +0 -0
  154. /package/dist/{PanelModelFiles-JZFSF7BF.mjs.map → PanelModelFiles-4B2HYGIE.mjs.map} +0 -0
  155. /package/dist/{chunk-4OVOKGGS.mjs.map → chunk-AB37DWOK.mjs.map} +0 -0
  156. /package/dist/{chunk-JHJ3ZZF4.mjs.map → chunk-MMLBQHBM.mjs.map} +0 -0
  157. /package/dist/{chunk-GEBRXFT3.mjs.map → chunk-N523LFAM.mjs.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{C as y,D as I,E as T,F as N,G as f,H as g,I as C,J as O,K as _,c as R,o as c,r as p,s as l,t as E,u as S}from"./chunk-4OVOKGGS.mjs";import{a as d}from"./chunk-5R6AGO3Z.mjs";var M=["orders","order","confirmation","result","myReturns","myReturn"];function k(e){return M.includes(e)}function L(e){return e?{name:"orders"}:{name:"email"}}function U(e,s){switch(s.type){case"SESSION_EXPIRED":return k(e.name)?{name:"email"}:e;case"CODE_SENT":return e.name==="email"?{name:"code"}:e;case"AUTHENTICATED":return e.name==="email"||e.name==="code"?{name:"orders"}:e;case"SELECT_ORDER":return e.name==="orders"?{name:"order",orderId:s.orderId}:e;case"REVIEW":return e.name==="order"?{name:"confirmation",orderId:e.orderId,items:s.items,note:s.note}:e;case"SUBMITTED":return e.name==="confirmation"?{name:"result",returnId:s.returnId}:e;case"OPEN_MY_RETURNS":return e.name==="orders"||e.name==="result"?{name:"myReturns"}:e;case"SELECT_RETURN":return e.name==="myReturns"?{name:"myReturn",returnId:s.returnId}:e;case"CONTINUE":return e.name==="result"?{name:"orders"}:e;case"BACK":switch(e.name){case"code":return{name:"email"};case"order":case"myReturns":return{name:"orders"};case"confirmation":return{name:"order",orderId:e.orderId,items:e.items,note:e.note};case"myReturn":return{name:"myReturns"};default:return e}}}var K={email:1,code:2,orders:3,order:4,confirmation:5,result:6},B=6;function D(e){return K[e]}import{useEffect as P,useReducer as w,useRef as H}from"react";import{jsx as n,jsxs as Y}from"react/jsx-runtime";function V({current:e}){let s=p(),o=c("stepIndicator");return n("p",{"data-bitsnap-returns-slot":"stepIndicator",className:d("text-xs",o.className),style:o.style,children:s("stepIndicator",{current:e,total:B})})}function W({panelToken:e,logo:s}){let{status:o,challenge:a,projectID:x}=E("BitsnapReturns"),A=l(),[r,t]=w(U,L(!1));P(()=>{o==="authenticated"?t({type:"AUTHENTICATED"}):o==="anonymous"&&t({type:"SESSION_EXPIRED"})},[o]);let i=H(!1);if(P(()=>{i.current||o==="hydrating"||(i.current=!0,o==="anonymous"&&a!=null&&t({type:"CODE_SENT"}))},[o,a]),o==="exchanging"||o==="hydrating"&&e)return n(y,{});let m=D(r.name),b=r.name==="email"||r.name==="code";return Y("div",{className:"flex flex-col gap-4",children:[b&&n(R,{projectId:x,locale:A,...s}),m!=null&&n(V,{current:m}),r.name==="email"&&n(I,{showLogo:!1,onSubmitted:()=>t({type:"CODE_SENT"})}),r.name==="code"&&n(T,{showLogo:!1,onVerified:()=>t({type:"AUTHENTICATED"}),onBack:()=>t({type:"BACK"})}),r.name==="orders"&&n(N,{showLogout:!e,onSelectOrder:u=>t({type:"SELECT_ORDER",orderId:u}),onOpenMyReturns:()=>t({type:"OPEN_MY_RETURNS"})}),r.name==="order"&&n(f,{orderId:r.orderId,initialItems:r.items,initialNote:r.note,onBack:()=>t({type:"BACK"}),onContinue:({items:u,note:h})=>t({type:"REVIEW",items:u,note:h})}),r.name==="confirmation"&&n(g,{orderId:r.orderId,items:r.items,note:r.note,onBack:()=>t({type:"BACK"}),onSubmitted:u=>t({type:"SUBMITTED",returnId:u})}),r.name==="result"&&n(C,{returnId:r.returnId,onContinue:()=>t({type:"CONTINUE"}),onOpenMyReturns:()=>t({type:"OPEN_MY_RETURNS"})}),r.name==="myReturns"&&n(O,{onSelectReturn:u=>t({type:"SELECT_RETURN",returnId:u}),onBack:()=>t({type:"BACK"})}),r.name==="myReturn"&&n(_,{returnId:r.returnId,onBack:()=>t({type:"BACK"})})]})}function re({showLogo:e,logoUrl:s,logoDarkUrl:o,...a}){return n(S,{...a,children:n(W,{panelToken:a.panelAccessToken!=null&&a.panelAccessToken!=="",logo:{showLogo:e,logoUrl:s,logoDarkUrl:o}})})}export{re as a};
2
- //# sourceMappingURL=chunk-JHJ3ZZF4.mjs.map
1
+ import{C as y,D as I,E as T,F as N,G as f,H as g,I as C,J as O,K as _,c as R,o as c,r as p,s as l,t as E,u as S}from"./chunk-AB37DWOK.mjs";import{a as d}from"./chunk-5R6AGO3Z.mjs";var M=["orders","order","confirmation","result","myReturns","myReturn"];function k(e){return M.includes(e)}function L(e){return e?{name:"orders"}:{name:"email"}}function U(e,s){switch(s.type){case"SESSION_EXPIRED":return k(e.name)?{name:"email"}:e;case"CODE_SENT":return e.name==="email"?{name:"code"}:e;case"AUTHENTICATED":return e.name==="email"||e.name==="code"?{name:"orders"}:e;case"SELECT_ORDER":return e.name==="orders"?{name:"order",orderId:s.orderId}:e;case"REVIEW":return e.name==="order"?{name:"confirmation",orderId:e.orderId,items:s.items,note:s.note}:e;case"SUBMITTED":return e.name==="confirmation"?{name:"result",returnId:s.returnId}:e;case"OPEN_MY_RETURNS":return e.name==="orders"||e.name==="result"?{name:"myReturns"}:e;case"SELECT_RETURN":return e.name==="myReturns"?{name:"myReturn",returnId:s.returnId}:e;case"CONTINUE":return e.name==="result"?{name:"orders"}:e;case"BACK":switch(e.name){case"code":return{name:"email"};case"order":case"myReturns":return{name:"orders"};case"confirmation":return{name:"order",orderId:e.orderId,items:e.items,note:e.note};case"myReturn":return{name:"myReturns"};default:return e}}}var K={email:1,code:2,orders:3,order:4,confirmation:5,result:6},B=6;function D(e){return K[e]}import{useEffect as P,useReducer as w,useRef as H}from"react";import{jsx as n,jsxs as Y}from"react/jsx-runtime";function V({current:e}){let s=p(),o=c("stepIndicator");return n("p",{"data-bitsnap-returns-slot":"stepIndicator",className:d("text-xs",o.className),style:o.style,children:s("stepIndicator",{current:e,total:B})})}function W({panelToken:e,logo:s}){let{status:o,challenge:a,projectID:x}=E("BitsnapReturns"),A=l(),[r,t]=w(U,L(!1));P(()=>{o==="authenticated"?t({type:"AUTHENTICATED"}):o==="anonymous"&&t({type:"SESSION_EXPIRED"})},[o]);let i=H(!1);if(P(()=>{i.current||o==="hydrating"||(i.current=!0,o==="anonymous"&&a!=null&&t({type:"CODE_SENT"}))},[o,a]),o==="exchanging"||o==="hydrating"&&e)return n(y,{});let m=D(r.name),b=r.name==="email"||r.name==="code";return Y("div",{className:"flex flex-col gap-4",children:[b&&n(R,{projectId:x,locale:A,...s}),m!=null&&n(V,{current:m}),r.name==="email"&&n(I,{showLogo:!1,onSubmitted:()=>t({type:"CODE_SENT"})}),r.name==="code"&&n(T,{showLogo:!1,onVerified:()=>t({type:"AUTHENTICATED"}),onBack:()=>t({type:"BACK"})}),r.name==="orders"&&n(N,{showLogout:!e,onSelectOrder:u=>t({type:"SELECT_ORDER",orderId:u}),onOpenMyReturns:()=>t({type:"OPEN_MY_RETURNS"})}),r.name==="order"&&n(f,{orderId:r.orderId,initialItems:r.items,initialNote:r.note,onBack:()=>t({type:"BACK"}),onContinue:({items:u,note:h})=>t({type:"REVIEW",items:u,note:h})}),r.name==="confirmation"&&n(g,{orderId:r.orderId,items:r.items,note:r.note,onBack:()=>t({type:"BACK"}),onSubmitted:u=>t({type:"SUBMITTED",returnId:u})}),r.name==="result"&&n(C,{returnId:r.returnId,onContinue:()=>t({type:"CONTINUE"}),onOpenMyReturns:()=>t({type:"OPEN_MY_RETURNS"})}),r.name==="myReturns"&&n(O,{onSelectReturn:u=>t({type:"SELECT_RETURN",returnId:u}),onBack:()=>t({type:"BACK"})}),r.name==="myReturn"&&n(_,{returnId:r.returnId,onBack:()=>t({type:"BACK"})})]})}function re({showLogo:e,logoUrl:s,logoDarkUrl:o,...a}){return n(S,{...a,children:n(W,{panelToken:a.panelAccessToken!=null&&a.panelAccessToken!=="",logo:{showLogo:e,logoUrl:s,logoDarkUrl:o}})})}export{re as a};
2
+ //# sourceMappingURL=chunk-MMLBQHBM.mjs.map
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkDOJICJCQjs = require('./chunk-DOJICJCQ.js');var _chunkD2ASWUXMjs = require('./chunk-D2ASWUXM.js');var f=24,h=48,i=class extends Error{constructor(r,o){super(r),this.name="ProductListError",this.status=o}};function D(t){return t==null||!Number.isFinite(t)?f:Math.min(h,Math.max(1,Math.floor(t)))}function j(t,r){return Math.max(1,Math.ceil(t/r))}function s(t){return t.replace(/\/+$/,"")}function P(t){let r=new URLSearchParams;r.set("limit",String(t.limit)),r.set("offset",String(t.offset)),t.locale&&r.set("locale",t.locale);let o=_optionalChain([t, 'access', _ => _.search, 'optionalAccess', _2 => _2.trim, 'call', _3 => _3()]);return o&&r.set("search",o),`${s(t.host)}/api/integrations/${encodeURIComponent(t.projectID)}/public-commerce/product-list?${r.toString()}`}function I(t){return typeof t=="object"&&t!=null&&Array.isArray(t.items)&&typeof t.totalCount=="number"}async function x(t,r){let o=await fetch(_chunkDOJICJCQjs.c.call(void 0, P(t)),{method:"GET",credentials:"omit",headers:{Accept:"application/json"},signal:r});if(!o.ok)throw new i(`Could not load products (${o.status})`,o.status);let e=await o.json();if(!I(e))throw new i("Unexpected product list response");return e}function m(t,r){if(t.projectID!=null&&t.projectID!==r.projectID)return{ok:!1,reason:`the page cart already belongs to project "${t.projectID}"`};let o=null,e=r.host?s(r.host):"",a=s(t.host);if(e&&e!==a){if(a!==s(t.defaultHost))return{ok:!1,reason:`the page cart already uses the host "${t.host}"`};o=e}return{ok:!0,setProjectID:t.projectID==null?r.projectID:null,setHost:o}}function g(t,r){let o=r.cartItemId!=null&&r.cartItemId!==r.id?r.cartItemId:null;t.track("add_to_cart",{qty:1,value_minor:r.price,currency:r.currency},{product_id:r.id,variant_id:o})}async function E(t,r){let[{Bitsnap:o},{getProjectID:e,setProjectID:a}]=await Promise.all([Promise.resolve().then(() => _interopRequireWildcard(require("./methods-64D5DD6K.js"))),Promise.resolve().then(() => _interopRequireWildcard(require("./CartProvider-677CE2FI.js")))]),n=m({projectID:e(),host:_chunkDOJICJCQjs.e,defaultHost:_chunkDOJICJCQjs.d},r);if(!n.ok)return y(n.reason);if(n.setProjectID!=null&&a(n.setProjectID),n.setHost!=null&&_chunkDOJICJCQjs.f.call(void 0, n.setHost),await o.addProductToCart(_nullishCoalesce(t.cartItemId, () => (t.id)),1,void 0,{url:r.url,name:t.name,price:t.price,currency:t.currency,analytics:_chunkD2ASWUXMjs.k})!=null)throw new Error("Could not add the product to the cart");r.analytics!=null&&g(r.analytics,t),r.showCart&&o.showCart()}function y(t){throw console.warn(`bitsnap-react: ProductList did not add to the cart because ${t}. Pass onAddToCart to use another cart.`),new Error("The page cart belongs to another project or host")}exports.a = D; exports.b = j; exports.c = x; exports.d = g; exports.e = E;
2
+ //# sourceMappingURL=chunk-MWWEPEU2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/emems-chat-v1/dist/chunk-MWWEPEU2.js","../src/components/products/fetch.ts"],"names":["DEFAULT_PAGE_SIZE","MAX_PAGE_SIZE","ProductListError","message","status","clampPageSize","pageSize","pageCountFor","totalCount","normalizeHost","host","buildProductListURL","query","params","search"],"mappings":"AAAA,y/BAAuD,sDAAwC,ICMlFA,CAAAA,CAAoB,EAAA,CACpBC,CAAAA,CAAgB,EAAA,CAYhBC,CAAAA,CAAN,MAAA,QAA+B,KAAM,CACjC,WAET,CAAYC,CAAAA,CAAiBC,CAAAA,CAAiB,CAC5C,KAAA,CAAMD,CAAO,CAAA,CACb,IAAA,CAAK,IAAA,CAAO,kBAAA,CACZ,IAAA,CAAK,MAAA,CAASC,CAChB,CACF,CAAA,CAGO,SAASC,CAAAA,CAAcC,CAAAA,CAA2B,CACvD,OAAIA,CAAAA,EAAY,IAAA,EAAQ,CAAC,MAAA,CAAO,QAAA,CAASA,CAAQ,CAAA,CACxCN,CAAAA,CAEF,IAAA,CAAK,GAAA,CAAIC,CAAAA,CAAe,IAAA,CAAK,GAAA,CAAI,CAAA,CAAG,IAAA,CAAK,KAAA,CAAMK,CAAQ,CAAC,CAAC,CAClE,CAEO,SAASC,CAAAA,CAAaC,CAAAA,CAAoBF,CAAAA,CAA0B,CACzE,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,CAAG,IAAA,CAAK,IAAA,CAAKE,CAAAA,CAAaF,CAAQ,CAAC,CACrD,CAGO,SAASG,CAAAA,CAAcC,CAAAA,CAAsB,CAClD,OAAOA,CAAAA,CAAK,OAAA,CAAQ,MAAA,CAAQ,EAAE,CAChC,CAEO,SAASC,CAAAA,CAAoBC,CAAAA,CAAiC,CACnE,IAAMC,CAAAA,CAAS,IAAI,eAAA,CACnBA,CAAAA,CAAO,GAAA,CAAI,OAAA,CAAS,MAAA,CAAOD,CAAAA,CAAM,KAAK,CAAC,CAAA,CACvCC,CAAAA,CAAO,GAAA,CAAI,QAAA,CAAU,MAAA,CAAOD,CAAAA,CAAM,MAAM,CAAC,CAAA,CACrCA,CAAAA,CAAM,MAAA,EACRC,CAAAA,CAAO,GAAA,CAAI,QAAA,CAAUD,CAAAA,CAAM,MAAM,CAAA,CAEnC,IAAME,CAAAA,iBAASF,CAAAA,mBAAM,MAAA,6BAAQ,IAAA,mBAAK,GAAA,CAClC,OAAIE,CAAAA,EACFD,CAAAA,CAAO,GAAA,CAAI,QAAA,CAAUC,CAAM,CAAA,CAItB,CAAA,EAAA","file":"/home/emems/.t3/worktrees/bitsnap-react/emems-chat-v1/dist/chunk-MWWEPEU2.js","sourcesContent":[null,"import { withClientParam } from \"@/src/lib/client-header\";\nimport type { BitsnapModels } from \"@/src/models\";\n\nexport type PublicListProduct = BitsnapModels.PublicListProduct;\nexport type ProductListData = BitsnapModels.ProductListResponse;\n\nexport const DEFAULT_PAGE_SIZE = 24;\nexport const MAX_PAGE_SIZE = 48;\n\nexport type ProductListQuery = {\n projectID: string;\n /** Origin of the Bitsnap backend (or of a custom domain), without a path. */\n host: string;\n locale?: string;\n search?: string;\n limit: number;\n offset: number;\n};\n\nexport class ProductListError extends Error {\n readonly status: number | undefined;\n\n constructor(message: string, status?: number) {\n super(message);\n this.name = \"ProductListError\";\n this.status = status;\n }\n}\n\n/** Page size within what the backend accepts (1 to 48, default 24). */\nexport function clampPageSize(pageSize?: number): number {\n if (pageSize == null || !Number.isFinite(pageSize)) {\n return DEFAULT_PAGE_SIZE;\n }\n return Math.min(MAX_PAGE_SIZE, Math.max(1, Math.floor(pageSize)));\n}\n\nexport function pageCountFor(totalCount: number, pageSize: number): number {\n return Math.max(1, Math.ceil(totalCount / pageSize));\n}\n\n/** Origin without trailing slashes, so equal hosts compare equal as strings. */\nexport function normalizeHost(host: string): string {\n return host.replace(/\\/+$/, \"\");\n}\n\nexport function buildProductListURL(query: ProductListQuery): string {\n const params = new URLSearchParams();\n params.set(\"limit\", String(query.limit));\n params.set(\"offset\", String(query.offset));\n if (query.locale) {\n params.set(\"locale\", query.locale);\n }\n const search = query.search?.trim();\n if (search) {\n params.set(\"search\", search);\n }\n\n const host = normalizeHost(query.host);\n return `${host}/api/integrations/${encodeURIComponent(\n query.projectID,\n )}/public-commerce/product-list?${params.toString()}`;\n}\n\nfunction isProductListData(value: unknown): value is ProductListData {\n return (\n typeof value === \"object\" &&\n value != null &&\n Array.isArray((value as ProductListData).items) &&\n typeof (value as ProductListData).totalCount === \"number\"\n );\n}\n\n/**\n * Loads one page of the catalog with a plain, credential-less `fetch`. It does\n * not touch the global project ID or host.\n */\nexport async function fetchProductList(\n query: ProductListQuery,\n signal?: AbortSignal,\n): Promise<ProductListData> {\n const response = await fetch(withClientParam(buildProductListURL(query)), {\n method: \"GET\",\n credentials: \"omit\",\n headers: { Accept: \"application/json\" },\n signal,\n });\n\n if (!response.ok) {\n throw new ProductListError(\n `Could not load products (${response.status})`,\n response.status,\n );\n }\n\n const payload: unknown = await response.json();\n if (!isProductListData(payload)) {\n throw new ProductListError(\"Unexpected product list response\");\n }\n\n return payload;\n}\n"]}
@@ -1,2 +1,2 @@
1
- import{a as s}from"./chunk-CF45RDMD.mjs";var r="X-Bitsnap-Client",o=`bitsnap-react@${s}`,i="bs_client",l={[r]:o},m=t=>e=>(e.header.set(r,o),t(e));function _(t){let e=t.indexOf("#"),n=e===-1?t:t.slice(0,e),c=e===-1?"":t.slice(e),p=n.includes("?")?/[?&]$/.test(n)?"":"&":"?";return`${n}${p}${i}=${encodeURIComponent(o)}${c}`}var a="https://bitsnap.pl",E=a;function H(t){console.log("setCustomHost",t),E=t}export{l as a,m as b,_ as c,a as d,E as e,H as f};
2
- //# sourceMappingURL=chunk-GEBRXFT3.mjs.map
1
+ import{a as s}from"./chunk-SSSF64M7.mjs";var r="X-Bitsnap-Client",o=`bitsnap-react@${s}`,i="bs_client",l={[r]:o},m=t=>e=>(e.header.set(r,o),t(e));function _(t){let e=t.indexOf("#"),n=e===-1?t:t.slice(0,e),c=e===-1?"":t.slice(e),p=n.includes("?")?/[?&]$/.test(n)?"":"&":"?";return`${n}${p}${i}=${encodeURIComponent(o)}${c}`}var a="https://bitsnap.pl",E=a;function H(t){console.log("setCustomHost",t),E=t}export{l as a,m as b,_ as c,a as d,E as e,H as f};
2
+ //# sourceMappingURL=chunk-N523LFAM.mjs.map
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2FD2QP4Yjs = require('./chunk-2FD2QP4Y.js');var _chunkMDAFPGPAjs = require('./chunk-MDAFPGPA.js');var _chunkD2ASWUXMjs = require('./chunk-D2ASWUXM.js');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var a=_react.createContext.call(void 0, _chunkMDAFPGPAjs.b.call(void 0, )),u= exports.a =({children:c,analytics:s})=>{let n=_chunkMDAFPGPAjs.b.call(void 0, ),l=_chunkD2ASWUXMjs.n.call(void 0, n.projectID,s,"panel");return _jsxruntime.jsx.call(void 0, _chunk2FD2QP4Yjs.j,{children:_jsxruntime.jsx.call(void 0, a.Provider,{value:{...n},children:_jsxruntime.jsx.call(void 0, _chunkD2ASWUXMjs.l,{value:l,children:_jsxruntime.jsx.call(void 0, "div",{className:"bitsnap-react",children:c})})})})},C= exports.b =()=>_react.useContext.call(void 0, a);exports.a = u; exports.b = C;
2
+ //# sourceMappingURL=chunk-NWXZ45TV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/emems-chat-v1/dist/chunk-NWXZ45TV.js","../src/panel/PanelProvider.tsx"],"names":["PanelContext","createContext","getPanelConfig","PanelProvider","children","analytics","config","instrument","useInstrument","jsx","RpcProvider","InstrumentProvider","usePanelConfig","useContext"],"mappings":"AAAA,+HAAuC,sDAAwC,sDAA+C,8BCApF,+CA2BhC,IAlBJA,CAAAA,CAAeC,kCAAAA,gCAA2BC,CAAgB,CAAA,CAEnDC,CAAAA,aASR,CAAC,CAAE,QAAA,CAAAC,CAAAA,CAAU,SAAA,CAAAC,CAAU,CAAA,CAAA,EAAM,CAChC,IAAMC,CAAAA,CAASJ,gCAAAA,CAAe,CACxBK,CAAAA,CAAaC,gCAAAA,CAAcF,CAAO,SAAA,CAAWD,CAAAA,CAAW,OAAO,CAAA,CACrE,OACEI,6BAAAA,kBAACC,CAAA,CACC,QAAA,CAAAD,6BAAAA,CAACT,CAAa,QAAA,CAAb,CAAsB,KAAA,CAAO,CAAE,GAAGM,CAAO,CAAA,CACxC,QAAA,CAAAG,6BAAAA,kBAACE,CAAA,CAAmB,KAAA,CAAOJ,CAAAA,CACzB,QAAA,CAAAE,6BAAAA,KAAC,CAAA,CAAI,SAAA,CAAU,eAAA,CAAiB,QAAA,CAAAL,CAAAA,CAAS,CAAA,CAC3C,CAAA,CACF,CAAA,CACF,CAEJ,CAAA,CAEaQ,CAAAA,aAAiB,CAAA,CAAA,EAAMC,+BAAAA,CAAuB,CAAA,CAAA,6BAAA","file":"/home/emems/.t3/worktrees/bitsnap-react/emems-chat-v1/dist/chunk-NWXZ45TV.js","sourcesContent":[null,"import { createContext, useContext } from \"react\";\nimport {\n InstrumentProvider,\n useInstrument,\n type AnalyticsOption,\n} from \"../analytics/instrument\";\nimport { RpcProvider } from \"../rpc-provider\";\nimport { getPanelConfig, type PanelConfig } from \"./config\";\n\nconst PanelContext = createContext<PanelConfig>(getPanelConfig());\n\nexport const PanelProvider: React.FC<{\n children: React.ReactNode;\n /**\n * Usage statistics for your Bitsnap dashboard (panel logins, orders viewed,\n * downloads, course progress). On by default; `false` turns it off. An\n * object lets you forward every event: `{ onEvent }`. Nothing is stored on\n * the visitor's device.\n */\n analytics?: AnalyticsOption;\n}> = ({ children, analytics }) => {\n const config = getPanelConfig();\n const instrument = useInstrument(config.projectID, analytics, \"panel\");\n return (\n <RpcProvider>\n <PanelContext.Provider value={{ ...config }}>\n <InstrumentProvider value={instrument}>\n <div className=\"bitsnap-react\">{children}</div>\n </InstrumentProvider>\n </PanelContext.Provider>\n </RpcProvider>\n );\n};\n\nexport const usePanelConfig = () => useContext(PanelContext);\n"]}
@@ -0,0 +1,2 @@
1
+ function l(t,e){return e.toLowerCase().startsWith("en")?t.en:t.pl}function d(t,e){let n={...t};if(e!=null)for(let[c,i]of Object.entries(e))i!=null&&(n[c]=i);return n}function s(t,e,n){return d(l(t,e),n)}function p(t,e){return t[e]??e}var u={en:{cart:"Cart",emptyCart:"Your cart is empty.",total:"Total:",delivery:"+ delivery",chooseCountry:"Choose a country",nextStep:"Next step",unavailableProducts:"Not all products are available.",checkoutFailed:"Something went wrong. Please try again later.",noPaymentGateway:"This shop doesn't accept online payments yet. Try again later or contact the seller.",gatewayNotConfigured:"Payments in this shop are not set up correctly. Try again later or contact the seller.",shippingNotConfigured:"Delivery in this shop is not configured yet. Try again later or contact the seller.",mixedRecurring:"Subscriptions and one-time products cannot be paid for together. Pay for them in separate orders.",currencyUnsupported:"The shop doesn't accept payments in this currency. Contact the seller.",priceChanged:"The product price has changed. Refresh the page to see the current price.",close:"Close cart",remove:"Remove",quantity:"Quantity",increaseQuantity:"Increase quantity",decreaseQuantity:"Decrease quantity",openCart:"Open cart",cartItemsCount:"Items in cart",lowestPrice30Days:"Lowest price in the last 30 days:",noPriceHistory:"No price data for the last 30 days",redirectFailed:"Could not redirect to the payment. Please try again later.",subscriptionUnsupported:"Subscriptions cannot be added to the cart yet.",searchCountry:"Find a country",noCountriesFound:"No countries found",countryRequired:"Choose a country to continue.",paymentForCart:"Cart payment",coupon:"Coupon",extrasCalculatedNext:"Discounts, shipping and taxes are calculated at the next step",loadFailed:"Could not load your cart.",retry:"Try again",paymentMethodLegend:"How would you like to pay?",paymentMethodOnline:"Pay online",paymentMethodOnlineDescription:"Card, BLIK code or instant bank payment. You pay right away.",paymentMethodManualTransfer:"Bank transfer",paymentMethodManualBlik:"BLIK \u2013 transfer to a phone number",paymentMethodManualBoth:"Bank transfer or BLIK to a phone number",paymentMethodManualDescription:"You pay in your bank's app. We show the payment details after you place the order, and the order waits for your payment.",paymentMethodManualBlikNote:"This is not a BLIK code payment \u2013 you do not enter a 6\u2011digit code.",paymentMethodCod:"Cash on delivery",paymentMethodCodDescription:"You pay the courier in cash or by card when you receive the parcel.",paymentMethodCodUnavailable:"Cash on delivery is not available for this order. Choose another way to pay.",expressPending:"Confirming your payment\u2026",expressConfirmed:"Payment confirmed. Thank you!",expressFailed:"The payment failed. Your cart is unchanged.",expressCancelled:"Payment cancelled. Your cart is unchanged.",expressPendingLong:"We are still confirming your payment. We will check again when you come back to this page.",expressLoadFailed:"Could not load this payment button. Try again later or use the regular checkout.",expressCartUnavailable:"This cart cannot be paid with this method right now. Try again later.",expressCartConflict:"Your cart changed in another tab or in the provider's app. Review the quantities and try again.",expressPriceChanged:"Your cart total changed. Check the new total and try again.",expressProductUnavailable:"This product cannot be paid for right now. Try again later."},pl:{cart:"Koszyk",emptyCart:"Brak produkt\xF3w w koszyku.",total:"Suma:",delivery:"+ dostawa",chooseCountry:"Wybierz kraj",nextStep:"Nast\u0119pny krok",unavailableProducts:"Nie wszystkie produkty s\u0105 dost\u0119pne w magazynie.",checkoutFailed:"Co\u015B posz\u0142o nie tak. Spr\xF3buj ponownie p\xF3\u017Aniej.",noPaymentGateway:"Ten sklep nie przyjmuje jeszcze p\u0142atno\u015Bci online. Spr\xF3buj ponownie p\xF3\u017Aniej lub skontaktuj si\u0119 ze sprzedawc\u0105.",gatewayNotConfigured:"P\u0142atno\u015Bci w tym sklepie nie s\u0105 poprawnie skonfigurowane. Spr\xF3buj ponownie p\xF3\u017Aniej lub skontaktuj si\u0119 ze sprzedawc\u0105.",shippingNotConfigured:"Dostawa w tym sklepie nie jest jeszcze skonfigurowana. Spr\xF3buj ponownie p\xF3\u017Aniej lub skontaktuj si\u0119 ze sprzedawc\u0105.",mixedRecurring:"Subskrypcji i produkt\xF3w jednorazowych nie mo\u017Cna op\u0142aci\u0107 razem. Op\u0142a\u0107 je w osobnych zam\xF3wieniach.",currencyUnsupported:"Sklep nie przyjmuje p\u0142atno\u015Bci w tej walucie. Skontaktuj si\u0119 ze sprzedawc\u0105.",priceChanged:"Cena produktu si\u0119 zmieni\u0142a. Od\u015Bwie\u017C stron\u0119, aby zobaczy\u0107 aktualn\u0105 cen\u0119.",close:"Zamknij koszyk",remove:"Usu\u0144",quantity:"Ilo\u015B\u0107",increaseQuantity:"Zwi\u0119ksz ilo\u015B\u0107",decreaseQuantity:"Zmniejsz ilo\u015B\u0107",openCart:"Otw\xF3rz koszyk",cartItemsCount:"Produkt\xF3w w koszyku",lowestPrice30Days:"Najni\u017Csza cena z 30 dni:",noPriceHistory:"Brak danych o cenie z ostatnich 30 dni",redirectFailed:"Nie uda\u0142o si\u0119 przekierowa\u0107 do p\u0142atno\u015Bci. Spr\xF3buj ponownie p\xF3\u017Aniej.",subscriptionUnsupported:"Subskrypcji nie mo\u017Cna jeszcze doda\u0107 do koszyka.",searchCountry:"Znajd\u017A kraj",noCountriesFound:"Nie znaleziono kraj\xF3w",countryRequired:"Wybierz kraj, aby przej\u015B\u0107 dalej.",paymentForCart:"P\u0142atno\u015B\u0107 za koszyk",coupon:"Kupon",extrasCalculatedNext:"Rabaty, dostawa i podatki w nast\u0119pnym kroku",loadFailed:"Nie uda\u0142o si\u0119 wczyta\u0107 koszyka.",retry:"Spr\xF3buj ponownie",paymentMethodLegend:"Jak chcesz zap\u0142aci\u0107?",paymentMethodOnline:"Zap\u0142a\u0107 online",paymentMethodOnlineDescription:"Karta, kod BLIK lub szybki przelew. P\u0142acisz od razu.",paymentMethodManualTransfer:"Przelew bankowy",paymentMethodManualBlik:"BLIK \u2013 przelew na telefon",paymentMethodManualBoth:"Przelew lub BLIK na telefon",paymentMethodManualDescription:"Zap\u0142acisz w aplikacji swojego banku. Dane do p\u0142atno\u015Bci poka\u017Cemy po z\u0142o\u017Ceniu zam\xF3wienia, a zam\xF3wienie poczeka na Twoj\u0105 wp\u0142at\u0119.",paymentMethodManualBlikNote:"To nie jest p\u0142atno\u015B\u0107 kodem BLIK \u2013 nie wpisujesz 6\u2011cyfrowego kodu.",paymentMethodCod:"P\u0142atno\u015B\u0107 przy odbiorze",paymentMethodCodDescription:"Zap\u0142acisz kurierowi got\xF3wk\u0105 lub kart\u0105, gdy odbierzesz przesy\u0142k\u0119.",paymentMethodCodUnavailable:"P\u0142atno\u015B\u0107 przy odbiorze nie jest dost\u0119pna dla tego zam\xF3wienia. Wybierz inn\u0105 form\u0119 p\u0142atno\u015Bci.",expressPending:"Potwierdzamy p\u0142atno\u015B\u0107\u2026",expressConfirmed:"P\u0142atno\u015B\u0107 potwierdzona. Dzi\u0119kujemy!",expressFailed:"P\u0142atno\u015B\u0107 si\u0119 nie uda\u0142a. Koszyk pozosta\u0142 bez zmian.",expressCancelled:"P\u0142atno\u015B\u0107 zosta\u0142a anulowana. Koszyk pozosta\u0142 bez zmian.",expressPendingLong:"Nadal potwierdzamy Twoj\u0105 p\u0142atno\u015B\u0107. Sprawdzimy ponownie, gdy wr\xF3cisz na t\u0119 stron\u0119.",expressLoadFailed:"Nie uda\u0142o si\u0119 wczyta\u0107 przycisku p\u0142atno\u015Bci. Spr\xF3buj ponownie p\xF3\u017Aniej lub skorzystaj ze zwyk\u0142ego koszyka.",expressCartUnavailable:"Tego koszyka nie mo\u017Cna teraz op\u0142aci\u0107 t\u0105 metod\u0105. Spr\xF3buj ponownie p\xF3\u017Aniej.",expressCartConflict:"Koszyk zmieni\u0142 si\u0119 w innej karcie lub w aplikacji przewo\u017Anika. Sprawd\u017A ilo\u015Bci i spr\xF3buj ponownie.",expressPriceChanged:"Suma koszyka si\u0119 zmieni\u0142a. Sprawd\u017A now\u0105 sum\u0119 i spr\xF3buj ponownie.",expressProductUnavailable:"Nie mo\u017Cna teraz zap\u0142aci\u0107 za ten produkt. Spr\xF3buj ponownie p\xF3\u017Aniej."}};function y(t,e){return s(u,t,e)}function m(t,e,n){return p(y(e,n),t)}var o="pl-PL",r="bitsnap-locale",a;function w(t){let e=t?.trim();a=e?e.toLowerCase()==="en"?"en-US":e.toLowerCase()==="pl"?o:e:void 0,typeof localStorage<"u"&&(a==null?localStorage.removeItem(r):localStorage.setItem(r,a))}function z(){return a??(typeof localStorage<"u"?localStorage.getItem(r)??o:o)}export{l as a,s as b,m as c,o as d,w as e,z as f};
2
+ //# sourceMappingURL=chunk-OFPRIENJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/texts.ts","../src/components/checkout/texts.ts","../src/components/checkout/locale.ts"],"sourcesContent":["/**\n * Shared text machinery: typed string tables per locale, the locale fallback\n * and a merge with caller overrides. Each module (checkout, later returns)\n * supplies its own key type and default tables.\n */\n\n/** Strings of one locale, keyed by text key. */\nexport type TextTable<Key extends string> = Record<Key, string>;\n\n/** Default tables for the supported locales. */\nexport type LocaleTables<Key extends string> = {\n en: TextTable<Key>;\n pl: TextTable<Key>;\n};\n\n/**\n * Picks the table for a locale. Any locale starting with `en` (case\n * insensitive, so `en`, `en-US`, `EN-gb`) gets English; everything else,\n * including unknown locales, gets the Polish default.\n */\nexport function pickLocaleTable<Key extends string>(\n tables: LocaleTables<Key>,\n locale: string,\n): TextTable<Key> {\n return locale.toLowerCase().startsWith(\"en\") ? tables.en : tables.pl;\n}\n\n/**\n * Merges caller overrides over a table. Overrides apply regardless of the\n * locale; `undefined`/`null` entries are ignored so the default stays.\n */\nexport function mergeTexts<Key extends string>(\n table: TextTable<Key>,\n overrides?: Partial<TextTable<Key>>,\n): TextTable<Key> {\n const result: Record<string, string> = { ...table };\n\n if (overrides != null) {\n for (const [key, value] of Object.entries<string | undefined>(overrides)) {\n if (value != null) {\n result[key] = value;\n }\n }\n }\n\n return result as TextTable<Key>;\n}\n\n/** Locale table merged with the caller overrides. */\nexport function resolveTexts<Key extends string>(\n tables: LocaleTables<Key>,\n locale: string,\n overrides?: Partial<TextTable<Key>>,\n): TextTable<Key> {\n return mergeTexts(pickLocaleTable(tables, locale), overrides);\n}\n\n/** Looks up a single text. Unknown keys return the key itself. */\nexport function lookupText<Key extends string>(\n texts: TextTable<Key>,\n key: Key,\n): string {\n return (texts as Record<string, string | undefined>)[key] ?? key;\n}\n","import {\n lookupText,\n resolveTexts,\n type LocaleTables,\n} from \"@/src/lib/texts\";\n\n/**\n * Every string the checkout renders. Pass a partial object through the\n * `texts` prop of `BitsnapCheckout` to override any of them, whatever the\n * locale.\n */\nexport type CheckoutTexts = {\n /** Drawer title. */\n cart: string;\n /** Shown when the cart has no products. */\n emptyCart: string;\n /** Label next to the total price. */\n total: string;\n /** Delivery note next to the total price. */\n delivery: string;\n /** Country selector placeholder. */\n chooseCountry: string;\n /** Checkout button label. */\n nextStep: string;\n /** Error shown when some products are out of stock. */\n unavailableProducts: string;\n /** Error shown when the checkout fails and the server gave no reason. */\n checkoutFailed: string;\n /** Error shown when the shop has no payment gateway connected. */\n noPaymentGateway: string;\n /** Error shown when the payment gateway of the shop is not set up. */\n gatewayNotConfigured: string;\n /** Error shown when delivery of the shop is not set up. */\n shippingNotConfigured: string;\n /** Error shown when the cart mixes subscriptions with one-time products. */\n mixedRecurring: string;\n /** Error shown when the cart currency cannot be paid in. */\n currencyUnsupported: string;\n /** Error shown when a price changed after the product was added. */\n priceChanged: string;\n /** Accessible name of the close button of the drawer. */\n close: string;\n /** Remove button of a cart line (also read together with the product name). */\n remove: string;\n /** Accessible name of the quantity control and its input. */\n quantity: string;\n /** Accessible name of the \"+\" quantity button. */\n increaseQuantity: string;\n /** Accessible name of the \"-\" quantity button. */\n decreaseQuantity: string;\n /** Accessible name of the cart button when it only shows an icon. */\n openCart: string;\n /** Hidden label of the number of products badge; the number is appended after a colon. */\n cartItemsCount: string;\n /** Label before the lowest price of the last 30 days; the price is appended. */\n lowestPrice30Days: string;\n /** Shown instead of the lowest price when the price has no history. */\n noPriceHistory: string;\n /** Error shown when redirecting to the payment failed. */\n redirectFailed: string;\n /** Error shown when a subscription is added to the cart. */\n subscriptionUnsupported: string;\n /** Country search placeholder. */\n searchCountry: string;\n /** Shown when the country search has no match. */\n noCountriesFound: string;\n /** Hint under the checkout button when no country is chosen. */\n countryRequired: string;\n /** Title of the Apple Pay and Google Pay sheet total. */\n paymentForCart: string;\n /** Coupon label in the Google Pay sheet; the code is appended. */\n coupon: string;\n /** Note under the cart total. */\n extrasCalculatedNext: string;\n /** Error shown when the products of the cart could not be loaded. */\n loadFailed: string;\n /** Button that loads the cart again. */\n retry: string;\n /** Heading of the payment method choice (shown only when the shop offers paying by hand). */\n paymentMethodLegend: string;\n /** Option that pays through the shop's online gateway. */\n paymentMethodOnline: string;\n /** Hint under the online option. */\n paymentMethodOnlineDescription: string;\n /** Manual option when the seller takes bank transfers only. */\n paymentMethodManualTransfer: string;\n /** Manual option when the seller takes BLIK transfers to a phone number only. */\n paymentMethodManualBlik: string;\n /** Manual option when the seller takes both. */\n paymentMethodManualBoth: string;\n /** What paying by hand means: the details come after the order is placed. */\n paymentMethodManualDescription: string;\n /** Shown with a selected manual option that includes BLIK to a phone number. */\n paymentMethodManualBlikNote: string;\n /** Cash on delivery option. */\n paymentMethodCod: string;\n /** Hint under the cash on delivery option. */\n paymentMethodCodDescription: string;\n /** Error shown when the shop refused cash on delivery for the order. */\n paymentMethodCodUnavailable: string;\n /** Status while the provider confirms a payment started from an express button. */\n expressPending: string;\n /** Status after the provider confirmed the payment. */\n expressConfirmed: string;\n /** Status when the provider reports a failed payment. */\n expressFailed: string;\n /** Status when the buyer cancelled the provider's payment flow. */\n expressCancelled: string;\n /** Shown while the payment is still unconfirmed after a page return. */\n expressPendingLong: string;\n /** Error shown when the provider's button could not be loaded. */\n expressLoadFailed: string;\n /** Error shown when the cart cannot be paid with this provider right now. */\n expressCartUnavailable: string;\n /** Error shown when another tab/provider changed the same cart line. */\n expressCartConflict: string;\n /** Shown when the server total changed between mounting and paying. */\n expressPriceChanged: string;\n /** Error shown when a product could not be added before the InPost binding. */\n expressProductUnavailable: string;\n};\n\nexport type CheckoutTextKey = keyof CheckoutTexts;\n\nexport const CHECKOUT_TEXT_TABLES: LocaleTables<CheckoutTextKey> = {\n en: {\n cart: \"Cart\",\n emptyCart: \"Your cart is empty.\",\n total: \"Total:\",\n delivery: \"+ delivery\",\n chooseCountry: \"Choose a country\",\n nextStep: \"Next step\",\n unavailableProducts: \"Not all products are available.\",\n checkoutFailed: \"Something went wrong. Please try again later.\",\n noPaymentGateway:\n \"This shop doesn't accept online payments yet. Try again later or contact the seller.\",\n gatewayNotConfigured:\n \"Payments in this shop are not set up correctly. Try again later or contact the seller.\",\n shippingNotConfigured:\n \"Delivery in this shop is not configured yet. Try again later or contact the seller.\",\n mixedRecurring:\n \"Subscriptions and one-time products cannot be paid for together. Pay for them in separate orders.\",\n currencyUnsupported:\n \"The shop doesn't accept payments in this currency. Contact the seller.\",\n priceChanged: \"The product price has changed. Refresh the page to see the current price.\",\n close: \"Close cart\",\n remove: \"Remove\",\n quantity: \"Quantity\",\n increaseQuantity: \"Increase quantity\",\n decreaseQuantity: \"Decrease quantity\",\n openCart: \"Open cart\",\n cartItemsCount: \"Items in cart\",\n lowestPrice30Days: \"Lowest price in the last 30 days:\",\n noPriceHistory: \"No price data for the last 30 days\",\n redirectFailed: \"Could not redirect to the payment. Please try again later.\",\n subscriptionUnsupported: \"Subscriptions cannot be added to the cart yet.\",\n searchCountry: \"Find a country\",\n noCountriesFound: \"No countries found\",\n countryRequired: \"Choose a country to continue.\",\n paymentForCart: \"Cart payment\",\n coupon: \"Coupon\",\n extrasCalculatedNext:\n \"Discounts, shipping and taxes are calculated at the next step\",\n loadFailed: \"Could not load your cart.\",\n retry: \"Try again\",\n paymentMethodLegend: \"How would you like to pay?\",\n paymentMethodOnline: \"Pay online\",\n paymentMethodOnlineDescription:\n \"Card, BLIK code or instant bank payment. You pay right away.\",\n paymentMethodManualTransfer: \"Bank transfer\",\n paymentMethodManualBlik: \"BLIK – transfer to a phone number\",\n paymentMethodManualBoth: \"Bank transfer or BLIK to a phone number\",\n paymentMethodManualDescription:\n \"You pay in your bank's app. We show the payment details after you place the order, and the order waits for your payment.\",\n paymentMethodManualBlikNote:\n \"This is not a BLIK code payment – you do not enter a 6‑digit code.\",\n paymentMethodCod: \"Cash on delivery\",\n paymentMethodCodDescription:\n \"You pay the courier in cash or by card when you receive the parcel.\",\n paymentMethodCodUnavailable:\n \"Cash on delivery is not available for this order. Choose another way to pay.\",\n expressPending: \"Confirming your payment…\",\n expressConfirmed: \"Payment confirmed. Thank you!\",\n expressFailed: \"The payment failed. Your cart is unchanged.\",\n expressCancelled: \"Payment cancelled. Your cart is unchanged.\",\n expressPendingLong:\n \"We are still confirming your payment. We will check again when you come back to this page.\",\n expressLoadFailed:\n \"Could not load this payment button. Try again later or use the regular checkout.\",\n expressCartUnavailable:\n \"This cart cannot be paid with this method right now. Try again later.\",\n expressCartConflict:\n \"Your cart changed in another tab or in the provider's app. Review the quantities and try again.\",\n expressPriceChanged:\n \"Your cart total changed. Check the new total and try again.\",\n expressProductUnavailable:\n \"This product cannot be paid for right now. Try again later.\",\n },\n pl: {\n cart: \"Koszyk\",\n emptyCart: \"Brak produktów w koszyku.\",\n total: \"Suma:\",\n delivery: \"+ dostawa\",\n chooseCountry: \"Wybierz kraj\",\n nextStep: \"Następny krok\",\n unavailableProducts: \"Nie wszystkie produkty są dostępne w magazynie.\",\n checkoutFailed: \"Coś poszło nie tak. Spróbuj ponownie później.\",\n noPaymentGateway:\n \"Ten sklep nie przyjmuje jeszcze płatności online. Spróbuj ponownie później lub skontaktuj się ze sprzedawcą.\",\n gatewayNotConfigured:\n \"Płatności w tym sklepie nie są poprawnie skonfigurowane. Spróbuj ponownie później lub skontaktuj się ze sprzedawcą.\",\n shippingNotConfigured:\n \"Dostawa w tym sklepie nie jest jeszcze skonfigurowana. Spróbuj ponownie później lub skontaktuj się ze sprzedawcą.\",\n mixedRecurring:\n \"Subskrypcji i produktów jednorazowych nie można opłacić razem. Opłać je w osobnych zamówieniach.\",\n currencyUnsupported:\n \"Sklep nie przyjmuje płatności w tej walucie. Skontaktuj się ze sprzedawcą.\",\n priceChanged: \"Cena produktu się zmieniła. Odśwież stronę, aby zobaczyć aktualną cenę.\",\n close: \"Zamknij koszyk\",\n remove: \"Usuń\",\n quantity: \"Ilość\",\n increaseQuantity: \"Zwiększ ilość\",\n decreaseQuantity: \"Zmniejsz ilość\",\n openCart: \"Otwórz koszyk\",\n cartItemsCount: \"Produktów w koszyku\",\n lowestPrice30Days: \"Najniższa cena z 30 dni:\",\n noPriceHistory: \"Brak danych o cenie z ostatnich 30 dni\",\n redirectFailed:\n \"Nie udało się przekierować do płatności. Spróbuj ponownie później.\",\n subscriptionUnsupported: \"Subskrypcji nie można jeszcze dodać do koszyka.\",\n searchCountry: \"Znajdź kraj\",\n noCountriesFound: \"Nie znaleziono krajów\",\n countryRequired: \"Wybierz kraj, aby przejść dalej.\",\n paymentForCart: \"Płatność za koszyk\",\n coupon: \"Kupon\",\n extrasCalculatedNext: \"Rabaty, dostawa i podatki w następnym kroku\",\n loadFailed: \"Nie udało się wczytać koszyka.\",\n retry: \"Spróbuj ponownie\",\n paymentMethodLegend: \"Jak chcesz zapłacić?\",\n paymentMethodOnline: \"Zapłać online\",\n paymentMethodOnlineDescription:\n \"Karta, kod BLIK lub szybki przelew. Płacisz od razu.\",\n paymentMethodManualTransfer: \"Przelew bankowy\",\n paymentMethodManualBlik: \"BLIK – przelew na telefon\",\n paymentMethodManualBoth: \"Przelew lub BLIK na telefon\",\n paymentMethodManualDescription:\n \"Zapłacisz w aplikacji swojego banku. Dane do płatności pokażemy po złożeniu zamówienia, a zamówienie poczeka na Twoją wpłatę.\",\n paymentMethodManualBlikNote:\n \"To nie jest płatność kodem BLIK – nie wpisujesz 6‑cyfrowego kodu.\",\n paymentMethodCod: \"Płatność przy odbiorze\",\n paymentMethodCodDescription:\n \"Zapłacisz kurierowi gotówką lub kartą, gdy odbierzesz przesyłkę.\",\n paymentMethodCodUnavailable:\n \"Płatność przy odbiorze nie jest dostępna dla tego zamówienia. Wybierz inną formę płatności.\",\n expressPending: \"Potwierdzamy płatność…\",\n expressConfirmed: \"Płatność potwierdzona. Dziękujemy!\",\n expressFailed: \"Płatność się nie udała. Koszyk pozostał bez zmian.\",\n expressCancelled: \"Płatność została anulowana. Koszyk pozostał bez zmian.\",\n expressPendingLong:\n \"Nadal potwierdzamy Twoją płatność. Sprawdzimy ponownie, gdy wrócisz na tę stronę.\",\n expressLoadFailed:\n \"Nie udało się wczytać przycisku płatności. Spróbuj ponownie później lub skorzystaj ze zwykłego koszyka.\",\n expressCartUnavailable:\n \"Tego koszyka nie można teraz opłacić tą metodą. Spróbuj ponownie później.\",\n expressCartConflict:\n \"Koszyk zmienił się w innej karcie lub w aplikacji przewoźnika. Sprawdź ilości i spróbuj ponownie.\",\n expressPriceChanged:\n \"Suma koszyka się zmieniła. Sprawdź nową sumę i spróbuj ponownie.\",\n expressProductUnavailable:\n \"Nie można teraz zapłacić za ten produkt. Spróbuj ponownie później.\",\n },\n};\n\n/** Default texts for a locale merged with the caller overrides. */\nexport function resolveCheckoutTexts(\n locale: string,\n overrides?: Partial<CheckoutTexts>,\n): CheckoutTexts {\n return resolveTexts(CHECKOUT_TEXT_TABLES, locale, overrides);\n}\n\nexport function getCheckoutText(\n key: CheckoutTextKey,\n locale: string,\n overrides?: Partial<CheckoutTexts>,\n): string {\n return lookupText(resolveCheckoutTexts(locale, overrides), key);\n}\n","import { pickLocaleTable } from \"@/src/lib/texts\";\nimport { CHECKOUT_TEXT_TABLES } from \"./texts\";\n\nexport const DEFAULT_LOCALE = \"pl-PL\" as const;\nconst localeStorageKey = \"bitsnap-locale\";\n\nlet activeLocale: string | undefined;\n\nexport function setLocale(locale?: string): void {\n const value = locale?.trim();\n activeLocale = value\n ? value.toLowerCase() === \"en\"\n ? \"en-US\"\n : value.toLowerCase() === \"pl\"\n ? DEFAULT_LOCALE\n : value\n : undefined;\n if (typeof localStorage !== \"undefined\") {\n if (activeLocale == null) {\n localStorage.removeItem(localeStorageKey);\n } else {\n localStorage.setItem(localeStorageKey, activeLocale);\n }\n }\n}\n\nexport function getLocale(): string {\n if (activeLocale != null) {\n return activeLocale;\n }\n if (typeof localStorage !== \"undefined\") {\n return localStorage.getItem(localeStorageKey) ?? DEFAULT_LOCALE;\n }\n return DEFAULT_LOCALE;\n}\n\nexport function translate(key: string, locale: string = getLocale()): string {\n return (\n (pickLocaleTable(CHECKOUT_TEXT_TABLES, locale) as Record<string, string>)[\n key\n ] ?? key\n );\n}\n"],"mappings":"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","names":["pickLocaleTable","tables","locale","mergeTexts","table","overrides","result","key","value","resolveTexts","lookupText","texts","CHECKOUT_TEXT_TABLES","resolveCheckoutTexts","locale","overrides","resolveTexts","getCheckoutText","key","lookupText","DEFAULT_LOCALE","localeStorageKey","activeLocale","setLocale","locale","value","getLocale"]}
@@ -0,0 +1,2 @@
1
+ import{c,d as l,e as p,f as d}from"./chunk-N523LFAM.mjs";import{k as u}from"./chunk-SSSF64M7.mjs";var f=24,h=48,i=class extends Error{status;constructor(r,o){super(r),this.name="ProductListError",this.status=o}};function D(t){return t==null||!Number.isFinite(t)?f:Math.min(h,Math.max(1,Math.floor(t)))}function j(t,r){return Math.max(1,Math.ceil(t/r))}function s(t){return t.replace(/\/+$/,"")}function P(t){let r=new URLSearchParams;r.set("limit",String(t.limit)),r.set("offset",String(t.offset)),t.locale&&r.set("locale",t.locale);let o=t.search?.trim();return o&&r.set("search",o),`${s(t.host)}/api/integrations/${encodeURIComponent(t.projectID)}/public-commerce/product-list?${r.toString()}`}function I(t){return typeof t=="object"&&t!=null&&Array.isArray(t.items)&&typeof t.totalCount=="number"}async function x(t,r){let o=await fetch(c(P(t)),{method:"GET",credentials:"omit",headers:{Accept:"application/json"},signal:r});if(!o.ok)throw new i(`Could not load products (${o.status})`,o.status);let e=await o.json();if(!I(e))throw new i("Unexpected product list response");return e}function m(t,r){if(t.projectID!=null&&t.projectID!==r.projectID)return{ok:!1,reason:`the page cart already belongs to project "${t.projectID}"`};let o=null,e=r.host?s(r.host):"",a=s(t.host);if(e&&e!==a){if(a!==s(t.defaultHost))return{ok:!1,reason:`the page cart already uses the host "${t.host}"`};o=e}return{ok:!0,setProjectID:t.projectID==null?r.projectID:null,setHost:o}}function g(t,r){let o=r.cartItemId!=null&&r.cartItemId!==r.id?r.cartItemId:null;t.track("add_to_cart",{qty:1,value_minor:r.price,currency:r.currency},{product_id:r.id,variant_id:o})}async function E(t,r){let[{Bitsnap:o},{getProjectID:e,setProjectID:a}]=await Promise.all([import("./methods-NQA3DFLE.mjs"),import("./CartProvider-YPDOFSYC.mjs")]),n=m({projectID:e(),host:p,defaultHost:l},r);if(!n.ok)return y(n.reason);if(n.setProjectID!=null&&a(n.setProjectID),n.setHost!=null&&d(n.setHost),await o.addProductToCart(t.cartItemId??t.id,1,void 0,{url:r.url,name:t.name,price:t.price,currency:t.currency,analytics:u})!=null)throw new Error("Could not add the product to the cart");r.analytics!=null&&g(r.analytics,t),r.showCart&&o.showCart()}function y(t){throw console.warn(`bitsnap-react: ProductList did not add to the cart because ${t}. Pass onAddToCart to use another cart.`),new Error("The page cart belongs to another project or host")}export{D as a,j as b,x as c,g as d,E as e};
2
+ //# sourceMappingURL=chunk-OR566YJI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/products/fetch.ts","../src/components/products/cart-target.ts","../src/components/products/add-to-cart.ts"],"sourcesContent":["import { withClientParam } from \"@/src/lib/client-header\";\nimport type { BitsnapModels } from \"@/src/models\";\n\nexport type PublicListProduct = BitsnapModels.PublicListProduct;\nexport type ProductListData = BitsnapModels.ProductListResponse;\n\nexport const DEFAULT_PAGE_SIZE = 24;\nexport const MAX_PAGE_SIZE = 48;\n\nexport type ProductListQuery = {\n projectID: string;\n /** Origin of the Bitsnap backend (or of a custom domain), without a path. */\n host: string;\n locale?: string;\n search?: string;\n limit: number;\n offset: number;\n};\n\nexport class ProductListError extends Error {\n readonly status: number | undefined;\n\n constructor(message: string, status?: number) {\n super(message);\n this.name = \"ProductListError\";\n this.status = status;\n }\n}\n\n/** Page size within what the backend accepts (1 to 48, default 24). */\nexport function clampPageSize(pageSize?: number): number {\n if (pageSize == null || !Number.isFinite(pageSize)) {\n return DEFAULT_PAGE_SIZE;\n }\n return Math.min(MAX_PAGE_SIZE, Math.max(1, Math.floor(pageSize)));\n}\n\nexport function pageCountFor(totalCount: number, pageSize: number): number {\n return Math.max(1, Math.ceil(totalCount / pageSize));\n}\n\n/** Origin without trailing slashes, so equal hosts compare equal as strings. */\nexport function normalizeHost(host: string): string {\n return host.replace(/\\/+$/, \"\");\n}\n\nexport function buildProductListURL(query: ProductListQuery): string {\n const params = new URLSearchParams();\n params.set(\"limit\", String(query.limit));\n params.set(\"offset\", String(query.offset));\n if (query.locale) {\n params.set(\"locale\", query.locale);\n }\n const search = query.search?.trim();\n if (search) {\n params.set(\"search\", search);\n }\n\n const host = normalizeHost(query.host);\n return `${host}/api/integrations/${encodeURIComponent(\n query.projectID,\n )}/public-commerce/product-list?${params.toString()}`;\n}\n\nfunction isProductListData(value: unknown): value is ProductListData {\n return (\n typeof value === \"object\" &&\n value != null &&\n Array.isArray((value as ProductListData).items) &&\n typeof (value as ProductListData).totalCount === \"number\"\n );\n}\n\n/**\n * Loads one page of the catalog with a plain, credential-less `fetch`. It does\n * not touch the global project ID or host.\n */\nexport async function fetchProductList(\n query: ProductListQuery,\n signal?: AbortSignal,\n): Promise<ProductListData> {\n const response = await fetch(withClientParam(buildProductListURL(query)), {\n method: \"GET\",\n credentials: \"omit\",\n headers: { Accept: \"application/json\" },\n signal,\n });\n\n if (!response.ok) {\n throw new ProductListError(\n `Could not load products (${response.status})`,\n response.status,\n );\n }\n\n const payload: unknown = await response.json();\n if (!isProductListData(payload)) {\n throw new ProductListError(\"Unexpected product list response\");\n }\n\n return payload;\n}\n","import { normalizeHost } from \"./fetch\";\n\nexport type CartState = {\n /** Project the page cart is set up for, `null` or `undefined` when none yet. */\n projectID: string | null | undefined;\n /** Backend origin the page cart currently talks to. */\n host: string;\n /** Backend origin used when the page did not choose another one. */\n defaultHost: string;\n};\n\nexport type CartTarget = {\n projectID: string;\n /** Omitted or empty keeps the current host. */\n host?: string;\n};\n\nexport type CartPlan =\n | { ok: true; setProjectID: string | null; setHost: string | null }\n | { ok: false; reason: string };\n\n/**\n * Decides, without changing anything, whether the page cart can serve the\n * target and what has to be filled in first. Both the project and the host are\n * checked before the caller changes either of them, so a refused click leaves\n * the page cart untouched.\n */\nexport function planCartTarget(state: CartState, target: CartTarget): CartPlan {\n if (state.projectID != null && state.projectID !== target.projectID) {\n return {\n ok: false,\n reason: `the page cart already belongs to project \"${state.projectID}\"`,\n };\n }\n\n let setHost: string | null = null;\n const targetHost = target.host ? normalizeHost(target.host) : \"\";\n const currentHost = normalizeHost(state.host);\n if (targetHost && targetHost !== currentHost) {\n if (currentHost !== normalizeHost(state.defaultHost)) {\n return {\n ok: false,\n reason: `the page cart already uses the host \"${state.host}\"`,\n };\n }\n setHost = targetHost;\n }\n\n return {\n ok: true,\n setProjectID: state.projectID == null ? target.projectID : null,\n setHost,\n };\n}\n","import { noopInstrument, type Instrument } from \"@/src/analytics/instrument\";\nimport { DEFAULT_HOST, HOST, setCustomHost } from \"../checkout/constants\";\nimport { planCartTarget } from \"./cart-target\";\nimport type { PublicListProduct } from \"./fetch\";\n\n/** What adding needs; a `PublicListProduct` fits, so does the 3D viewer's product. */\nexport type CartableProduct = Pick<\n PublicListProduct,\n \"id\" | \"cartItemId\" | \"name\" | \"price\" | \"currency\"\n>;\n\nexport type AddToCartTarget = {\n projectID: string;\n /** Backend origin the cart talks to. Omitted or empty keeps the current one. */\n host?: string;\n /** Open the cart drawer afterwards. */\n showCart: boolean;\n /** Product page the cart item links to. */\n url?: string;\n /** Where `add_to_cart` is reported. Omitted: nothing is reported. */\n analytics?: Instrument;\n};\n\n/** `add_to_cart` for a product of the list (quantity 1, price in minor units). */\nexport function trackProductAdded(\n instrument: Instrument,\n product: CartableProduct,\n) {\n const variant =\n product.cartItemId != null && product.cartItemId !== product.id\n ? product.cartItemId\n : null;\n instrument.track(\n \"add_to_cart\",\n { qty: 1, value_minor: product.price, currency: product.currency },\n { product_id: product.id, variant_id: variant },\n );\n}\n\n/**\n * Default \"add to cart\" action of `ProductList`: `Bitsnap.addProductToCart`\n * with quantity 1, then the cart drawer.\n *\n * The checkout is a heavy module (RPC client, cart state, payment buttons), so\n * it is loaded on the first click and never ends up in the first paint of a\n * catalog page. The cart only knows one project and one host at a time, and\n * they are page-wide (the cart is kept in localStorage, `setProjectID` also\n * changes the panel configuration). So the list only fills them in when the\n * page has not set them yet; when the page already works for another project\n * or host, nothing is changed and the call fails (pass `onAddToCart` to the\n * list in that case).\n */\nexport async function addProductToCart(\n product: CartableProduct,\n target: AddToCartTarget,\n): Promise<void> {\n const [{ Bitsnap }, { getProjectID, setProjectID }] = await Promise.all([\n import(\"../checkout/methods\"),\n import(\"../checkout/CartProvider\"),\n ]);\n\n const plan = planCartTarget(\n { projectID: getProjectID(), host: HOST, defaultHost: DEFAULT_HOST },\n target,\n );\n if (!plan.ok) {\n return failConflict(plan.reason);\n }\n if (plan.setProjectID != null) {\n setProjectID(plan.setProjectID);\n }\n if (plan.setHost != null) {\n setCustomHost(plan.setHost);\n }\n\n // Single-variant products are added by their variant, not the product ID.\n const error = await Bitsnap.addProductToCart(\n product.cartItemId ?? product.id,\n 1,\n undefined,\n {\n url: target.url,\n name: product.name,\n price: product.price,\n currency: product.currency,\n // Reported below from the list's own data.\n analytics: noopInstrument,\n },\n );\n if (error != null) {\n throw new Error(\"Could not add the product to the cart\");\n }\n if (target.analytics != null) {\n trackProductAdded(target.analytics, product);\n }\n\n if (target.showCart) {\n Bitsnap.showCart();\n }\n}\n\nfunction failConflict(reason: string): never {\n console.warn(\n `bitsnap-react: ProductList did not add to the cart because ${reason}. ` +\n \"Pass onAddToCart to use another cart.\",\n );\n throw new Error(\"The page cart belongs to another project or host\");\n}\n"],"mappings":"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","names":["DEFAULT_PAGE_SIZE","MAX_PAGE_SIZE","ProductListError","message","status","clampPageSize","pageSize","pageCountFor","totalCount","normalizeHost","host","buildProductListURL","query","params","search","isProductListData","value","fetchProductList","signal","response","withClientParam","payload","planCartTarget","state","target","setHost","targetHost","normalizeHost","currentHost","trackProductAdded","instrument","product","variant","addProductToCart","target","Bitsnap","getProjectID","setProjectID","plan","planCartTarget","HOST","DEFAULT_HOST","failConflict","setCustomHost","noopInstrument","reason"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }function l(t,e){return e.toLowerCase().startsWith("en")?t.en:t.pl}function d(t,e){let n={...t};if(e!=null)for(let[c,i]of Object.entries(e))i!=null&&(n[c]=i);return n}function s(t,e,n){return d(l(t,e),n)}function p(t,e){return _nullishCoalesce(t[e], () => (e))}var u={en:{cart:"Cart",emptyCart:"Your cart is empty.",total:"Total:",delivery:"+ delivery",chooseCountry:"Choose a country",nextStep:"Next step",unavailableProducts:"Not all products are available.",checkoutFailed:"Something went wrong. Please try again later.",noPaymentGateway:"This shop doesn't accept online payments yet. Try again later or contact the seller.",gatewayNotConfigured:"Payments in this shop are not set up correctly. Try again later or contact the seller.",shippingNotConfigured:"Delivery in this shop is not configured yet. Try again later or contact the seller.",mixedRecurring:"Subscriptions and one-time products cannot be paid for together. Pay for them in separate orders.",currencyUnsupported:"The shop doesn't accept payments in this currency. Contact the seller.",priceChanged:"The product price has changed. Refresh the page to see the current price.",close:"Close cart",remove:"Remove",quantity:"Quantity",increaseQuantity:"Increase quantity",decreaseQuantity:"Decrease quantity",openCart:"Open cart",cartItemsCount:"Items in cart",lowestPrice30Days:"Lowest price in the last 30 days:",noPriceHistory:"No price data for the last 30 days",redirectFailed:"Could not redirect to the payment. Please try again later.",subscriptionUnsupported:"Subscriptions cannot be added to the cart yet.",searchCountry:"Find a country",noCountriesFound:"No countries found",countryRequired:"Choose a country to continue.",paymentForCart:"Cart payment",coupon:"Coupon",extrasCalculatedNext:"Discounts, shipping and taxes are calculated at the next step",loadFailed:"Could not load your cart.",retry:"Try again",paymentMethodLegend:"How would you like to pay?",paymentMethodOnline:"Pay online",paymentMethodOnlineDescription:"Card, BLIK code or instant bank payment. You pay right away.",paymentMethodManualTransfer:"Bank transfer",paymentMethodManualBlik:"BLIK \u2013 transfer to a phone number",paymentMethodManualBoth:"Bank transfer or BLIK to a phone number",paymentMethodManualDescription:"You pay in your bank's app. We show the payment details after you place the order, and the order waits for your payment.",paymentMethodManualBlikNote:"This is not a BLIK code payment \u2013 you do not enter a 6\u2011digit code.",paymentMethodCod:"Cash on delivery",paymentMethodCodDescription:"You pay the courier in cash or by card when you receive the parcel.",paymentMethodCodUnavailable:"Cash on delivery is not available for this order. Choose another way to pay.",expressPending:"Confirming your payment\u2026",expressConfirmed:"Payment confirmed. Thank you!",expressFailed:"The payment failed. Your cart is unchanged.",expressCancelled:"Payment cancelled. Your cart is unchanged.",expressPendingLong:"We are still confirming your payment. We will check again when you come back to this page.",expressLoadFailed:"Could not load this payment button. Try again later or use the regular checkout.",expressCartUnavailable:"This cart cannot be paid with this method right now. Try again later.",expressCartConflict:"Your cart changed in another tab or in the provider's app. Review the quantities and try again.",expressPriceChanged:"Your cart total changed. Check the new total and try again.",expressProductUnavailable:"This product cannot be paid for right now. Try again later."},pl:{cart:"Koszyk",emptyCart:"Brak produkt\xF3w w koszyku.",total:"Suma:",delivery:"+ dostawa",chooseCountry:"Wybierz kraj",nextStep:"Nast\u0119pny krok",unavailableProducts:"Nie wszystkie produkty s\u0105 dost\u0119pne w magazynie.",checkoutFailed:"Co\u015B posz\u0142o nie tak. Spr\xF3buj ponownie p\xF3\u017Aniej.",noPaymentGateway:"Ten sklep nie przyjmuje jeszcze p\u0142atno\u015Bci online. Spr\xF3buj ponownie p\xF3\u017Aniej lub skontaktuj si\u0119 ze sprzedawc\u0105.",gatewayNotConfigured:"P\u0142atno\u015Bci w tym sklepie nie s\u0105 poprawnie skonfigurowane. Spr\xF3buj ponownie p\xF3\u017Aniej lub skontaktuj si\u0119 ze sprzedawc\u0105.",shippingNotConfigured:"Dostawa w tym sklepie nie jest jeszcze skonfigurowana. Spr\xF3buj ponownie p\xF3\u017Aniej lub skontaktuj si\u0119 ze sprzedawc\u0105.",mixedRecurring:"Subskrypcji i produkt\xF3w jednorazowych nie mo\u017Cna op\u0142aci\u0107 razem. Op\u0142a\u0107 je w osobnych zam\xF3wieniach.",currencyUnsupported:"Sklep nie przyjmuje p\u0142atno\u015Bci w tej walucie. Skontaktuj si\u0119 ze sprzedawc\u0105.",priceChanged:"Cena produktu si\u0119 zmieni\u0142a. Od\u015Bwie\u017C stron\u0119, aby zobaczy\u0107 aktualn\u0105 cen\u0119.",close:"Zamknij koszyk",remove:"Usu\u0144",quantity:"Ilo\u015B\u0107",increaseQuantity:"Zwi\u0119ksz ilo\u015B\u0107",decreaseQuantity:"Zmniejsz ilo\u015B\u0107",openCart:"Otw\xF3rz koszyk",cartItemsCount:"Produkt\xF3w w koszyku",lowestPrice30Days:"Najni\u017Csza cena z 30 dni:",noPriceHistory:"Brak danych o cenie z ostatnich 30 dni",redirectFailed:"Nie uda\u0142o si\u0119 przekierowa\u0107 do p\u0142atno\u015Bci. Spr\xF3buj ponownie p\xF3\u017Aniej.",subscriptionUnsupported:"Subskrypcji nie mo\u017Cna jeszcze doda\u0107 do koszyka.",searchCountry:"Znajd\u017A kraj",noCountriesFound:"Nie znaleziono kraj\xF3w",countryRequired:"Wybierz kraj, aby przej\u015B\u0107 dalej.",paymentForCart:"P\u0142atno\u015B\u0107 za koszyk",coupon:"Kupon",extrasCalculatedNext:"Rabaty, dostawa i podatki w nast\u0119pnym kroku",loadFailed:"Nie uda\u0142o si\u0119 wczyta\u0107 koszyka.",retry:"Spr\xF3buj ponownie",paymentMethodLegend:"Jak chcesz zap\u0142aci\u0107?",paymentMethodOnline:"Zap\u0142a\u0107 online",paymentMethodOnlineDescription:"Karta, kod BLIK lub szybki przelew. P\u0142acisz od razu.",paymentMethodManualTransfer:"Przelew bankowy",paymentMethodManualBlik:"BLIK \u2013 przelew na telefon",paymentMethodManualBoth:"Przelew lub BLIK na telefon",paymentMethodManualDescription:"Zap\u0142acisz w aplikacji swojego banku. Dane do p\u0142atno\u015Bci poka\u017Cemy po z\u0142o\u017Ceniu zam\xF3wienia, a zam\xF3wienie poczeka na Twoj\u0105 wp\u0142at\u0119.",paymentMethodManualBlikNote:"To nie jest p\u0142atno\u015B\u0107 kodem BLIK \u2013 nie wpisujesz 6\u2011cyfrowego kodu.",paymentMethodCod:"P\u0142atno\u015B\u0107 przy odbiorze",paymentMethodCodDescription:"Zap\u0142acisz kurierowi got\xF3wk\u0105 lub kart\u0105, gdy odbierzesz przesy\u0142k\u0119.",paymentMethodCodUnavailable:"P\u0142atno\u015B\u0107 przy odbiorze nie jest dost\u0119pna dla tego zam\xF3wienia. Wybierz inn\u0105 form\u0119 p\u0142atno\u015Bci.",expressPending:"Potwierdzamy p\u0142atno\u015B\u0107\u2026",expressConfirmed:"P\u0142atno\u015B\u0107 potwierdzona. Dzi\u0119kujemy!",expressFailed:"P\u0142atno\u015B\u0107 si\u0119 nie uda\u0142a. Koszyk pozosta\u0142 bez zmian.",expressCancelled:"P\u0142atno\u015B\u0107 zosta\u0142a anulowana. Koszyk pozosta\u0142 bez zmian.",expressPendingLong:"Nadal potwierdzamy Twoj\u0105 p\u0142atno\u015B\u0107. Sprawdzimy ponownie, gdy wr\xF3cisz na t\u0119 stron\u0119.",expressLoadFailed:"Nie uda\u0142o si\u0119 wczyta\u0107 przycisku p\u0142atno\u015Bci. Spr\xF3buj ponownie p\xF3\u017Aniej lub skorzystaj ze zwyk\u0142ego koszyka.",expressCartUnavailable:"Tego koszyka nie mo\u017Cna teraz op\u0142aci\u0107 t\u0105 metod\u0105. Spr\xF3buj ponownie p\xF3\u017Aniej.",expressCartConflict:"Koszyk zmieni\u0142 si\u0119 w innej karcie lub w aplikacji przewo\u017Anika. Sprawd\u017A ilo\u015Bci i spr\xF3buj ponownie.",expressPriceChanged:"Suma koszyka si\u0119 zmieni\u0142a. Sprawd\u017A now\u0105 sum\u0119 i spr\xF3buj ponownie.",expressProductUnavailable:"Nie mo\u017Cna teraz zap\u0142aci\u0107 za ten produkt. Spr\xF3buj ponownie p\xF3\u017Aniej."}};function y(t,e){return s(u,t,e)}function m(t,e,n){return p(y(e,n),t)}var o="pl-PL",r="bitsnap-locale",a;function w(t){let e=_optionalChain([t, 'optionalAccess', _ => _.trim, 'call', _2 => _2()]);a=e?e.toLowerCase()==="en"?"en-US":e.toLowerCase()==="pl"?o:e:void 0,typeof localStorage<"u"&&(a==null?localStorage.removeItem(r):localStorage.setItem(r,a))}function z(){return _nullishCoalesce(a, () => ((typeof localStorage<"u"?_nullishCoalesce(localStorage.getItem(r), () => (o)):o)))}exports.a = l; exports.b = s; exports.c = m; exports.d = o; exports.e = w; exports.f = z;
2
+ //# sourceMappingURL=chunk-Q337IQNA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/texts.ts","../src/components/checkout/texts.ts","../src/components/checkout/locale.ts"],"names":["pickLocaleTable","tables","locale","mergeTexts","table","overrides","result","key","value","resolveTexts","lookupText","texts","CHECKOUT_TEXT_TABLES","resolveCheckoutTexts","getCheckoutText","DEFAULT_LOCALE","localeStorageKey","activeLocale","setLocale","getLocale"],"mappings":"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","file":"/home/emems/.t3/worktrees/bitsnap-react/emems-chat-v1/dist/chunk-Q337IQNA.js","sourcesContent":["/**\n * Shared text machinery: typed string tables per locale, the locale fallback\n * and a merge with caller overrides. Each module (checkout, later returns)\n * supplies its own key type and default tables.\n */\n\n/** Strings of one locale, keyed by text key. */\nexport type TextTable<Key extends string> = Record<Key, string>;\n\n/** Default tables for the supported locales. */\nexport type LocaleTables<Key extends string> = {\n en: TextTable<Key>;\n pl: TextTable<Key>;\n};\n\n/**\n * Picks the table for a locale. Any locale starting with `en` (case\n * insensitive, so `en`, `en-US`, `EN-gb`) gets English; everything else,\n * including unknown locales, gets the Polish default.\n */\nexport function pickLocaleTable<Key extends string>(\n tables: LocaleTables<Key>,\n locale: string,\n): TextTable<Key> {\n return locale.toLowerCase().startsWith(\"en\") ? tables.en : tables.pl;\n}\n\n/**\n * Merges caller overrides over a table. Overrides apply regardless of the\n * locale; `undefined`/`null` entries are ignored so the default stays.\n */\nexport function mergeTexts<Key extends string>(\n table: TextTable<Key>,\n overrides?: Partial<TextTable<Key>>,\n): TextTable<Key> {\n const result: Record<string, string> = { ...table };\n\n if (overrides != null) {\n for (const [key, value] of Object.entries<string | undefined>(overrides)) {\n if (value != null) {\n result[key] = value;\n }\n }\n }\n\n return result as TextTable<Key>;\n}\n\n/** Locale table merged with the caller overrides. */\nexport function resolveTexts<Key extends string>(\n tables: LocaleTables<Key>,\n locale: string,\n overrides?: Partial<TextTable<Key>>,\n): TextTable<Key> {\n return mergeTexts(pickLocaleTable(tables, locale), overrides);\n}\n\n/** Looks up a single text. Unknown keys return the key itself. */\nexport function lookupText<Key extends string>(\n texts: TextTable<Key>,\n key: Key,\n): string {\n return (texts as Record<string, string | undefined>)[key] ?? key;\n}\n","import {\n lookupText,\n resolveTexts,\n type LocaleTables,\n} from \"@/src/lib/texts\";\n\n/**\n * Every string the checkout renders. Pass a partial object through the\n * `texts` prop of `BitsnapCheckout` to override any of them, whatever the\n * locale.\n */\nexport type CheckoutTexts = {\n /** Drawer title. */\n cart: string;\n /** Shown when the cart has no products. */\n emptyCart: string;\n /** Label next to the total price. */\n total: string;\n /** Delivery note next to the total price. */\n delivery: string;\n /** Country selector placeholder. */\n chooseCountry: string;\n /** Checkout button label. */\n nextStep: string;\n /** Error shown when some products are out of stock. */\n unavailableProducts: string;\n /** Error shown when the checkout fails and the server gave no reason. */\n checkoutFailed: string;\n /** Error shown when the shop has no payment gateway connected. */\n noPaymentGateway: string;\n /** Error shown when the payment gateway of the shop is not set up. */\n gatewayNotConfigured: string;\n /** Error shown when delivery of the shop is not set up. */\n shippingNotConfigured: string;\n /** Error shown when the cart mixes subscriptions with one-time products. */\n mixedRecurring: string;\n /** Error shown when the cart currency cannot be paid in. */\n currencyUnsupported: string;\n /** Error shown when a price changed after the product was added. */\n priceChanged: string;\n /** Accessible name of the close button of the drawer. */\n close: string;\n /** Remove button of a cart line (also read together with the product name). */\n remove: string;\n /** Accessible name of the quantity control and its input. */\n quantity: string;\n /** Accessible name of the \"+\" quantity button. */\n increaseQuantity: string;\n /** Accessible name of the \"-\" quantity button. */\n decreaseQuantity: string;\n /** Accessible name of the cart button when it only shows an icon. */\n openCart: string;\n /** Hidden label of the number of products badge; the number is appended after a colon. */\n cartItemsCount: string;\n /** Label before the lowest price of the last 30 days; the price is appended. */\n lowestPrice30Days: string;\n /** Shown instead of the lowest price when the price has no history. */\n noPriceHistory: string;\n /** Error shown when redirecting to the payment failed. */\n redirectFailed: string;\n /** Error shown when a subscription is added to the cart. */\n subscriptionUnsupported: string;\n /** Country search placeholder. */\n searchCountry: string;\n /** Shown when the country search has no match. */\n noCountriesFound: string;\n /** Hint under the checkout button when no country is chosen. */\n countryRequired: string;\n /** Title of the Apple Pay and Google Pay sheet total. */\n paymentForCart: string;\n /** Coupon label in the Google Pay sheet; the code is appended. */\n coupon: string;\n /** Note under the cart total. */\n extrasCalculatedNext: string;\n /** Error shown when the products of the cart could not be loaded. */\n loadFailed: string;\n /** Button that loads the cart again. */\n retry: string;\n /** Heading of the payment method choice (shown only when the shop offers paying by hand). */\n paymentMethodLegend: string;\n /** Option that pays through the shop's online gateway. */\n paymentMethodOnline: string;\n /** Hint under the online option. */\n paymentMethodOnlineDescription: string;\n /** Manual option when the seller takes bank transfers only. */\n paymentMethodManualTransfer: string;\n /** Manual option when the seller takes BLIK transfers to a phone number only. */\n paymentMethodManualBlik: string;\n /** Manual option when the seller takes both. */\n paymentMethodManualBoth: string;\n /** What paying by hand means: the details come after the order is placed. */\n paymentMethodManualDescription: string;\n /** Shown with a selected manual option that includes BLIK to a phone number. */\n paymentMethodManualBlikNote: string;\n /** Cash on delivery option. */\n paymentMethodCod: string;\n /** Hint under the cash on delivery option. */\n paymentMethodCodDescription: string;\n /** Error shown when the shop refused cash on delivery for the order. */\n paymentMethodCodUnavailable: string;\n /** Status while the provider confirms a payment started from an express button. */\n expressPending: string;\n /** Status after the provider confirmed the payment. */\n expressConfirmed: string;\n /** Status when the provider reports a failed payment. */\n expressFailed: string;\n /** Status when the buyer cancelled the provider's payment flow. */\n expressCancelled: string;\n /** Shown while the payment is still unconfirmed after a page return. */\n expressPendingLong: string;\n /** Error shown when the provider's button could not be loaded. */\n expressLoadFailed: string;\n /** Error shown when the cart cannot be paid with this provider right now. */\n expressCartUnavailable: string;\n /** Error shown when another tab/provider changed the same cart line. */\n expressCartConflict: string;\n /** Shown when the server total changed between mounting and paying. */\n expressPriceChanged: string;\n /** Error shown when a product could not be added before the InPost binding. */\n expressProductUnavailable: string;\n};\n\nexport type CheckoutTextKey = keyof CheckoutTexts;\n\nexport const CHECKOUT_TEXT_TABLES: LocaleTables<CheckoutTextKey> = {\n en: {\n cart: \"Cart\",\n emptyCart: \"Your cart is empty.\",\n total: \"Total:\",\n delivery: \"+ delivery\",\n chooseCountry: \"Choose a country\",\n nextStep: \"Next step\",\n unavailableProducts: \"Not all products are available.\",\n checkoutFailed: \"Something went wrong. Please try again later.\",\n noPaymentGateway:\n \"This shop doesn't accept online payments yet. Try again later or contact the seller.\",\n gatewayNotConfigured:\n \"Payments in this shop are not set up correctly. Try again later or contact the seller.\",\n shippingNotConfigured:\n \"Delivery in this shop is not configured yet. Try again later or contact the seller.\",\n mixedRecurring:\n \"Subscriptions and one-time products cannot be paid for together. Pay for them in separate orders.\",\n currencyUnsupported:\n \"The shop doesn't accept payments in this currency. Contact the seller.\",\n priceChanged: \"The product price has changed. Refresh the page to see the current price.\",\n close: \"Close cart\",\n remove: \"Remove\",\n quantity: \"Quantity\",\n increaseQuantity: \"Increase quantity\",\n decreaseQuantity: \"Decrease quantity\",\n openCart: \"Open cart\",\n cartItemsCount: \"Items in cart\",\n lowestPrice30Days: \"Lowest price in the last 30 days:\",\n noPriceHistory: \"No price data for the last 30 days\",\n redirectFailed: \"Could not redirect to the payment. Please try again later.\",\n subscriptionUnsupported: \"Subscriptions cannot be added to the cart yet.\",\n searchCountry: \"Find a country\",\n noCountriesFound: \"No countries found\",\n countryRequired: \"Choose a country to continue.\",\n paymentForCart: \"Cart payment\",\n coupon: \"Coupon\",\n extrasCalculatedNext:\n \"Discounts, shipping and taxes are calculated at the next step\",\n loadFailed: \"Could not load your cart.\",\n retry: \"Try again\",\n paymentMethodLegend: \"How would you like to pay?\",\n paymentMethodOnline: \"Pay online\",\n paymentMethodOnlineDescription:\n \"Card, BLIK code or instant bank payment. You pay right away.\",\n paymentMethodManualTransfer: \"Bank transfer\",\n paymentMethodManualBlik: \"BLIK – transfer to a phone number\",\n paymentMethodManualBoth: \"Bank transfer or BLIK to a phone number\",\n paymentMethodManualDescription:\n \"You pay in your bank's app. We show the payment details after you place the order, and the order waits for your payment.\",\n paymentMethodManualBlikNote:\n \"This is not a BLIK code payment – you do not enter a 6‑digit code.\",\n paymentMethodCod: \"Cash on delivery\",\n paymentMethodCodDescription:\n \"You pay the courier in cash or by card when you receive the parcel.\",\n paymentMethodCodUnavailable:\n \"Cash on delivery is not available for this order. Choose another way to pay.\",\n expressPending: \"Confirming your payment…\",\n expressConfirmed: \"Payment confirmed. Thank you!\",\n expressFailed: \"The payment failed. Your cart is unchanged.\",\n expressCancelled: \"Payment cancelled. Your cart is unchanged.\",\n expressPendingLong:\n \"We are still confirming your payment. We will check again when you come back to this page.\",\n expressLoadFailed:\n \"Could not load this payment button. Try again later or use the regular checkout.\",\n expressCartUnavailable:\n \"This cart cannot be paid with this method right now. Try again later.\",\n expressCartConflict:\n \"Your cart changed in another tab or in the provider's app. Review the quantities and try again.\",\n expressPriceChanged:\n \"Your cart total changed. Check the new total and try again.\",\n expressProductUnavailable:\n \"This product cannot be paid for right now. Try again later.\",\n },\n pl: {\n cart: \"Koszyk\",\n emptyCart: \"Brak produktów w koszyku.\",\n total: \"Suma:\",\n delivery: \"+ dostawa\",\n chooseCountry: \"Wybierz kraj\",\n nextStep: \"Następny krok\",\n unavailableProducts: \"Nie wszystkie produkty są dostępne w magazynie.\",\n checkoutFailed: \"Coś poszło nie tak. Spróbuj ponownie później.\",\n noPaymentGateway:\n \"Ten sklep nie przyjmuje jeszcze płatności online. Spróbuj ponownie później lub skontaktuj się ze sprzedawcą.\",\n gatewayNotConfigured:\n \"Płatności w tym sklepie nie są poprawnie skonfigurowane. Spróbuj ponownie później lub skontaktuj się ze sprzedawcą.\",\n shippingNotConfigured:\n \"Dostawa w tym sklepie nie jest jeszcze skonfigurowana. Spróbuj ponownie później lub skontaktuj się ze sprzedawcą.\",\n mixedRecurring:\n \"Subskrypcji i produktów jednorazowych nie można opłacić razem. Opłać je w osobnych zamówieniach.\",\n currencyUnsupported:\n \"Sklep nie przyjmuje płatności w tej walucie. Skontaktuj się ze sprzedawcą.\",\n priceChanged: \"Cena produktu się zmieniła. Odśwież stronę, aby zobaczyć aktualną cenę.\",\n close: \"Zamknij koszyk\",\n remove: \"Usuń\",\n quantity: \"Ilość\",\n increaseQuantity: \"Zwiększ ilość\",\n decreaseQuantity: \"Zmniejsz ilość\",\n openCart: \"Otwórz koszyk\",\n cartItemsCount: \"Produktów w koszyku\",\n lowestPrice30Days: \"Najniższa cena z 30 dni:\",\n noPriceHistory: \"Brak danych o cenie z ostatnich 30 dni\",\n redirectFailed:\n \"Nie udało się przekierować do płatności. Spróbuj ponownie później.\",\n subscriptionUnsupported: \"Subskrypcji nie można jeszcze dodać do koszyka.\",\n searchCountry: \"Znajdź kraj\",\n noCountriesFound: \"Nie znaleziono krajów\",\n countryRequired: \"Wybierz kraj, aby przejść dalej.\",\n paymentForCart: \"Płatność za koszyk\",\n coupon: \"Kupon\",\n extrasCalculatedNext: \"Rabaty, dostawa i podatki w następnym kroku\",\n loadFailed: \"Nie udało się wczytać koszyka.\",\n retry: \"Spróbuj ponownie\",\n paymentMethodLegend: \"Jak chcesz zapłacić?\",\n paymentMethodOnline: \"Zapłać online\",\n paymentMethodOnlineDescription:\n \"Karta, kod BLIK lub szybki przelew. Płacisz od razu.\",\n paymentMethodManualTransfer: \"Przelew bankowy\",\n paymentMethodManualBlik: \"BLIK – przelew na telefon\",\n paymentMethodManualBoth: \"Przelew lub BLIK na telefon\",\n paymentMethodManualDescription:\n \"Zapłacisz w aplikacji swojego banku. Dane do płatności pokażemy po złożeniu zamówienia, a zamówienie poczeka na Twoją wpłatę.\",\n paymentMethodManualBlikNote:\n \"To nie jest płatność kodem BLIK – nie wpisujesz 6‑cyfrowego kodu.\",\n paymentMethodCod: \"Płatność przy odbiorze\",\n paymentMethodCodDescription:\n \"Zapłacisz kurierowi gotówką lub kartą, gdy odbierzesz przesyłkę.\",\n paymentMethodCodUnavailable:\n \"Płatność przy odbiorze nie jest dostępna dla tego zamówienia. Wybierz inną formę płatności.\",\n expressPending: \"Potwierdzamy płatność…\",\n expressConfirmed: \"Płatność potwierdzona. Dziękujemy!\",\n expressFailed: \"Płatność się nie udała. Koszyk pozostał bez zmian.\",\n expressCancelled: \"Płatność została anulowana. Koszyk pozostał bez zmian.\",\n expressPendingLong:\n \"Nadal potwierdzamy Twoją płatność. Sprawdzimy ponownie, gdy wrócisz na tę stronę.\",\n expressLoadFailed:\n \"Nie udało się wczytać przycisku płatności. Spróbuj ponownie później lub skorzystaj ze zwykłego koszyka.\",\n expressCartUnavailable:\n \"Tego koszyka nie można teraz opłacić tą metodą. Spróbuj ponownie później.\",\n expressCartConflict:\n \"Koszyk zmienił się w innej karcie lub w aplikacji przewoźnika. Sprawdź ilości i spróbuj ponownie.\",\n expressPriceChanged:\n \"Suma koszyka się zmieniła. Sprawdź nową sumę i spróbuj ponownie.\",\n expressProductUnavailable:\n \"Nie można teraz zapłacić za ten produkt. Spróbuj ponownie później.\",\n },\n};\n\n/** Default texts for a locale merged with the caller overrides. */\nexport function resolveCheckoutTexts(\n locale: string,\n overrides?: Partial<CheckoutTexts>,\n): CheckoutTexts {\n return resolveTexts(CHECKOUT_TEXT_TABLES, locale, overrides);\n}\n\nexport function getCheckoutText(\n key: CheckoutTextKey,\n locale: string,\n overrides?: Partial<CheckoutTexts>,\n): string {\n return lookupText(resolveCheckoutTexts(locale, overrides), key);\n}\n","import { pickLocaleTable } from \"@/src/lib/texts\";\nimport { CHECKOUT_TEXT_TABLES } from \"./texts\";\n\nexport const DEFAULT_LOCALE = \"pl-PL\" as const;\nconst localeStorageKey = \"bitsnap-locale\";\n\nlet activeLocale: string | undefined;\n\nexport function setLocale(locale?: string): void {\n const value = locale?.trim();\n activeLocale = value\n ? value.toLowerCase() === \"en\"\n ? \"en-US\"\n : value.toLowerCase() === \"pl\"\n ? DEFAULT_LOCALE\n : value\n : undefined;\n if (typeof localStorage !== \"undefined\") {\n if (activeLocale == null) {\n localStorage.removeItem(localeStorageKey);\n } else {\n localStorage.setItem(localeStorageKey, activeLocale);\n }\n }\n}\n\nexport function getLocale(): string {\n if (activeLocale != null) {\n return activeLocale;\n }\n if (typeof localStorage !== \"undefined\") {\n return localStorage.getItem(localeStorageKey) ?? DEFAULT_LOCALE;\n }\n return DEFAULT_LOCALE;\n}\n\nexport function translate(key: string, locale: string = getLocale()): string {\n return (\n (pickLocaleTable(CHECKOUT_TEXT_TABLES, locale) as Record<string, string>)[\n key\n ] ?? key\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import{c as A,g as t}from"./chunk-WG54EHST.mjs";import{a as d}from"./chunk-5R6AGO3Z.mjs";import{b as G,e as V}from"./chunk-N523LFAM.mjs";import{b as l}from"./chunk-U6FLIRIV.mjs";import{enumDesc as Lt,fileDesc as F}from"@bufbuild/protobuf/codegenv2";var Z=F("Chtjb21tb24vdjEvZW52aXJvbm1lbnQucHJvdG8SCWNvbW1vbi52MSonCgtFbnZpcm9ubWVudBIOCgpQUk9EVUNUSU9OEAASCAoEVEVTVBABQk5aTGdpdGh1Yi5jb20vZW1tZW1zL3N1cGVyLWNhcnQvYXBwcy9zcnYtd29ya2VyL3V0aWxzL21vZGVscy9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw"),U=(n=>(n[n.PRODUCTION=0]="PRODUCTION",n[n.TEST=1]="TEST",n))(U||{});import{fileDesc as y,messageDesc as Ot,serviceDesc as B}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_timestamp as J}from"@bufbuild/protobuf/wkt";var I=y("ChdwdWJsaWMvdjEvcmV0dXJucy5wcm90bxIJcHVibGljLnYxIosBChlTdGFydFJldHVyblNlc3Npb25SZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDQoFZW1haWwYAiABKAkSKwoLZW52aXJvbm1lbnQYAyABKA4yFi5jb21tb24udjEuRW52aXJvbm1lbnQSEwoGbG9jYWxlGAQgASgJSACIAQFCCQoHX2xvY2FsZSJhChpTdGFydFJldHVyblNlc3Npb25SZXNwb25zZRIUCgxjaGFsbGVuZ2VfaWQYASABKAkSHAoUcmVzZW5kX2FmdGVyX3NlY29uZHMYAiABKAUSDwoHbWVzc2FnZRgDIAEoCSKBAQoaVmVyaWZ5UmV0dXJuU2Vzc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFsbGVuZ2VfaWQYAiABKAkSDAoEY29kZRgDIAEoCRIrCgtlbnZpcm9ubWVudBgEIAEoDjIWLmNvbW1vbi52MS5FbnZpcm9ubWVudCJkChtWZXJpZnlSZXR1cm5TZXNzaW9uUmVzcG9uc2USFQoNc2Vzc2lvbl90b2tlbhgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJ0ChtFeGNoYW5nZVBhbmVsU2Vzc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSKwoLZW52aXJvbm1lbnQYAyABKA4yFi5jb21tb24udjEuRW52aXJvbm1lbnQiZQocRXhjaGFuZ2VQYW5lbFNlc3Npb25SZXNwb25zZRIVCg1zZXNzaW9uX3Rva2VuGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjMKClJldHVyblBhZ2USEQoJcGFnZV9zaXplGAEgASgFEhIKCnBhZ2VfdG9rZW4YAiABKAki1AEKElJldHVybk9yZGVyU3VtbWFyeRIaChJjYW5vbmljYWxfb3JkZXJfaWQYASABKAkSGQoRZGlzcGxheV9yZWZlcmVuY2UYAiABKAkSDwoHZ2F0ZXdheRgDIAEoCRIwCgxwdXJjaGFzZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC3RvdGFsX21pbm9yGAUgASgDEhAKCGN1cnJlbmN5GAYgASgJEh0KFXJldHVybmFibGVfbGluZV9jb3VudBgHIAEoBSJrChdMaXN0UmV0dXJuT3JkZXJzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhUKDXNlc3Npb25fdG9rZW4YAiABKAkSEQoJcGFnZV9zaXplGAMgASgFEhIKCnBhZ2VfdG9rZW4YBCABKAkicQoYTGlzdFJldHVybk9yZGVyc1Jlc3BvbnNlEi0KBm9yZGVycxgBIAMoCzIdLnB1YmxpYy52MS5SZXR1cm5PcmRlclN1bW1hcnkSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJEg0KBXRvdGFsGAMgASgFIsQDCg9SZXR1cm5PcmRlckxpbmUSDwoHbGluZV9pZBgBIAEoCRISCgpwcm9kdWN0X2lkGAIgASgJEhIKCnZhcmlhbnRfaWQYAyABKAkSDAoEbmFtZRgEIAEoCRIYChBmdWxmaWxsbWVudF90eXBlGAUgASgJEhoKEnB1cmNoYXNlZF9xdWFudGl0eRgGIAEoBRIZChFyZXNlcnZlZF9xdWFudGl0eRgHIAEoBRIZChFyZXR1cm5lZF9xdWFudGl0eRgIIAEoBRIaChJhdmFpbGFibGVfcXVhbnRpdHkYCSABKAUSGgoScmVndWxhcl91bml0X21pbm9yGAogASgDEhcKD3BhaWRfdW5pdF9taW5vchgLIAEoAxIQCghjdXJyZW5jeRgMIAEoCRIQCghlbGlnaWJsZRgNIAEoCBIYChBleGNsdXNpb25fcmVhc29uGA4gASgJEh0KFXBhaWRfbGluZV90b3RhbF9taW5vchgPIAEoAxIfChdjb3Vwb25fYWxsb2NhdGlvbl9taW5vchgQIAEoAxIVCg1hY2Nlc3Nfc291cmNlGBEgASgJEhgKEGFjY2Vzc19yZWZlcmVuY2UYEiABKAki3wEKEVJldHVybk9yZGVyRGV0YWlsEhoKEmNhbm9uaWNhbF9vcmRlcl9pZBgBIAEoCRIZChFkaXNwbGF5X3JlZmVyZW5jZRgCIAEoCRIPCgdnYXRld2F5GAMgASgJEjAKDHB1cmNoYXNlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLdG90YWxfbWlub3IYBSABKAMSEAoIY3VycmVuY3kYBiABKAkSKQoFbGluZXMYByADKAsyGi5wdWJsaWMudjEuUmV0dXJuT3JkZXJMaW5lIjsKFlJldHVyblJlcXVlc3RMaW5lSW5wdXQSDwoHbGluZV9pZBgBIAEoCRIQCghxdWFudGl0eRgCIAEoBSJzChJSZXR1cm5IaXN0b3J5RW50cnkSCgoCaWQYASABKAkSEQoJcmVmZXJlbmNlGAIgASgJEg4KBnN0YXR1cxgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK5AQoVUmV0dXJuUmVxdWVzdExpbmVWaWV3Eg8KB2xpbmVfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYChBmdWxmaWxsbWVudF90eXBlGAMgASgJEhoKEnJlcXVlc3RlZF9xdWFudGl0eRgEIAEoBRIZChFhcHByb3ZlZF9xdWFudGl0eRgFIAEoBRIZChFyZWNlaXZlZF9xdWFudGl0eRgGIAEoBRIVCg1hY2Nlc3Nfc3RhdHVzGAcgASgJIvoCChFSZXR1cm5SZXF1ZXN0VmlldxIKCgJpZBgBIAEoCRIRCglyZWZlcmVuY2UYAiABKAkSGgoSY2Fub25pY2FsX29yZGVyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIVCg1yZWZ1bmRfc3RhdHVzGAUgASgJEhsKE3JlZnVuZF9hbW91bnRfbWlub3IYBiABKAMSEAoIY3VycmVuY3kYByABKAkSFQoNY3VzdG9tZXJfbm90ZRgIIAEoCRIPCgd2ZXJzaW9uGAkgASgDEi4KCmNyZWF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KBWxpbmVzGAsgAygLMiAucHVibGljLnYxLlJldHVyblJlcXVlc3RMaW5lVmlldxIuCgdoaXN0b3J5GAwgAygLMh0ucHVibGljLnYxLlJldHVybkhpc3RvcnlFbnRyeRIbChNyZXR1cm5faW5zdHJ1Y3Rpb25zGA0gASgJImIKGUdldFJldHVybmFibGVPcmRlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhoKEmNhbm9uaWNhbF9vcmRlcl9pZBgDIAEoCSKAAQoaR2V0UmV0dXJuYWJsZU9yZGVyUmVzcG9uc2USKwoFb3JkZXIYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuT3JkZXJEZXRhaWwSNQoOcmV0dXJuX2hpc3RvcnkYAiADKAsyHS5wdWJsaWMudjEuUmV0dXJuSGlzdG9yeUVudHJ5IrwBChpDcmVhdGVSZXR1cm5SZXF1ZXN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhUKDXNlc3Npb25fdG9rZW4YAiABKAkSGgoSY2Fub25pY2FsX29yZGVyX2lkGAMgASgJEjAKBWl0ZW1zGAQgAygLMiEucHVibGljLnYxLlJldHVyblJlcXVlc3RMaW5lSW5wdXQSDAoEbm90ZRgFIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYBiABKAkiTAobQ3JlYXRlUmV0dXJuUmVxdWVzdFJlc3BvbnNlEi0KB3JlcXVlc3QYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuUmVxdWVzdFZpZXciaAoUTGlzdE15UmV0dXJuc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhEKCXBhZ2Vfc2l6ZRgDIAEoBRISCgpwYWdlX3Rva2VuGAQgASgJIm4KFUxpc3RNeVJldHVybnNSZXNwb25zZRItCgdyZXR1cm5zGAEgAygLMhwucHVibGljLnYxLlJldHVyblJlcXVlc3RWaWV3EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRINCgV0b3RhbBgDIAEoBSJSChJHZXRNeVJldHVyblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhEKCXJldHVybl9pZBgDIAEoCSJEChNHZXRNeVJldHVyblJlc3BvbnNlEi0KB3JlcXVlc3QYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuUmVxdWVzdFZpZXcyigYKDlJldHVybnNTZXJ2aWNlEmEKElN0YXJ0UmV0dXJuU2Vzc2lvbhIkLnB1YmxpYy52MS5TdGFydFJldHVyblNlc3Npb25SZXF1ZXN0GiUucHVibGljLnYxLlN0YXJ0UmV0dXJuU2Vzc2lvblJlc3BvbnNlEmQKE1ZlcmlmeVJldHVyblNlc3Npb24SJS5wdWJsaWMudjEuVmVyaWZ5UmV0dXJuU2Vzc2lvblJlcXVlc3QaJi5wdWJsaWMudjEuVmVyaWZ5UmV0dXJuU2Vzc2lvblJlc3BvbnNlEmcKFEV4Y2hhbmdlUGFuZWxTZXNzaW9uEiYucHVibGljLnYxLkV4Y2hhbmdlUGFuZWxTZXNzaW9uUmVxdWVzdBonLnB1YmxpYy52MS5FeGNoYW5nZVBhbmVsU2Vzc2lvblJlc3BvbnNlElsKEExpc3RSZXR1cm5PcmRlcnMSIi5wdWJsaWMudjEuTGlzdFJldHVybk9yZGVyc1JlcXVlc3QaIy5wdWJsaWMudjEuTGlzdFJldHVybk9yZGVyc1Jlc3BvbnNlEmEKEkdldFJldHVybmFibGVPcmRlchIkLnB1YmxpYy52MS5HZXRSZXR1cm5hYmxlT3JkZXJSZXF1ZXN0GiUucHVibGljLnYxLkdldFJldHVybmFibGVPcmRlclJlc3BvbnNlEmQKE0NyZWF0ZVJldHVyblJlcXVlc3QSJS5wdWJsaWMudjEuQ3JlYXRlUmV0dXJuUmVxdWVzdFJlcXVlc3QaJi5wdWJsaWMudjEuQ3JlYXRlUmV0dXJuUmVxdWVzdFJlc3BvbnNlElIKDUxpc3RNeVJldHVybnMSHy5wdWJsaWMudjEuTGlzdE15UmV0dXJuc1JlcXVlc3QaIC5wdWJsaWMudjEuTGlzdE15UmV0dXJuc1Jlc3BvbnNlEkwKC0dldE15UmV0dXJuEh0ucHVibGljLnYxLkdldE15UmV0dXJuUmVxdWVzdBoeLnB1YmxpYy52MS5HZXRNeVJldHVyblJlc3BvbnNlYgZwcm90bzM",[Z,J]);var i=B(I,0);import{TransportProvider as ft,useMutation as Yt,useQuery as Xt}from"@connectrpc/connect-query";import{createConnectTransport as Et}from"@connectrpc/connect-web";import{QueryClient as Ft,QueryClientProvider as Ut}from"@tanstack/react-query";import{useState as yt}from"react";var R={};l(R,{cancelNotificationMessage:()=>le,createNotificationGroup:()=>q,createNotificationGroupUser:()=>se,createNotificationMessage:()=>ie,createNotificationMessageJob:()=>me,createNotificationSetting:()=>P,createNotificationUser:()=>_,deleteNotificationGroup:()=>D,deleteNotificationGroupUser:()=>ae,deleteNotificationMessage:()=>re,deleteNotificationMessageJob:()=>Ae,deleteNotificationSetting:()=>L,deleteNotificationUser:()=>te,duplicateNotificationMessage:()=>pe,getNotificationMessageReport:()=>ge,getNotificationStats:()=>fe,getNotificationUserSettings:()=>Ze,getProjectedRecipientCount:()=>We,getSentNotificationMessages:()=>de,getUserGroups:()=>Ne,previewNotificationMessageEmail:()=>Ye,readNotificationGroupUsers:()=>oe,readNotificationGroups:()=>w,readNotificationMessageJobs:()=>be,readNotificationMessages:()=>ce,readNotificationProducts:()=>Ve,readNotificationSetting:()=>H,readNotificationUsers:()=>$,retryFailedNotificationMessageJobs:()=>Re,updateNotificationGroup:()=>O,updateNotificationGroupUser:()=>ne,updateNotificationMessage:()=>ue,updateNotificationMessageJob:()=>Ge,updateNotificationSetting:()=>j,updateNotificationUser:()=>ee,updateUserGroups:()=>Se,verifyUserEmail:()=>he});import{enumDesc as cs,fileDesc as x,messageDesc as ds,serviceDesc as k}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_empty as Q,file_google_protobuf_timestamp as K}from"@bufbuild/protobuf/wkt";import{enumDesc as ts,fileDesc as v,messageDesc as ss,serviceDesc as os}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_empty as C,file_google_protobuf_timestamp as M}from"@bufbuild/protobuf/wkt";var h=v("ChpkYXNoYm9hcmQvdjEvcHJvZHVjdC5wcm90bxIUZGFzaGJvYXJkLnByb2R1Y3QudjEiNAoeR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkibAobU2V0R3Vlc3RDYXRhbG9nRW50cnlSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFAoMcHJvZHVjdF90eXBlGAIgASgJEg8KB2VuYWJsZWQYAyABKAgSEgoKc29ydF9vcmRlchgEIAEoBSL3AQofR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXNwb25zZRISCgpjYW5fbWFuYWdlGAEgASgIEh0KFWd1ZXN0X2NhdGFsb2dfZW5hYmxlZBgCIAEoCBI4CgdlbnRyaWVzGAMgAygLMicuZGFzaGJvYXJkLnByb2R1Y3QudjEuR3Vlc3RDYXRhbG9nRW50cnkSHQoVYXZhaWxhYmxlX3Byb2R1Y3RfaWRzGAQgAygJEkgKD3Byb2R1Y3Rfb3B0aW9ucxgFIAMoCzIvLmRhc2hib2FyZC5wcm9kdWN0LnYxLkd1ZXN0Q2F0YWxvZ1Byb2R1Y3RPcHRpb24iRQoZR3Vlc3RDYXRhbG9nUHJvZHVjdE9wdGlvbhISCgpwcm9kdWN0X2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCSJ+ChFHdWVzdENhdGFsb2dFbnRyeRISCgpwcm9kdWN0X2lkGAEgASgJEhQKDHByb2R1Y3RfdHlwZRgCIAEoCRIPCgdlbmFibGVkGAMgASgIEhIKCnNvcnRfb3JkZXIYBCABKAUSGgoSZWxpZ2liaWxpdHlfcmVhc29uGAUgASgJIisKFUFyY2hpdmVQcm9kdWN0UmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJIi0KF0R1cGxpY2F0ZVByb2R1Y3RSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiOQoYRHVwbGljYXRlUHJvZHVjdFJlc3BvbnNlEh0KFWR1cGxpY2F0ZWRfcHJvZHVjdF9pZBgBIAEoCSI3CiBFeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVxdWVzdBITCgtwcm9kdWN0X2lkcxgBIAMoCSK6AQohRXhjaGFuZ2VQcm9kdWN0SURzVG9OYW1lc1Jlc3BvbnNlEmAKDXByb2R1Y3RfbmFtZXMYASADKAsySS5kYXNoYm9hcmQucHJvZHVjdC52MS5FeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVzcG9uc2UuUHJvZHVjdE5hbWVzRW50cnkaMwoRUHJvZHVjdE5hbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJ5ChtHZXRGaWxlQWNjZXNzTWVtYmVyc1JlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRITCgZzZWFyY2gYAiABKAlIAIgBARIXCgp2YXJpYW50X2lkGAMgASgJSAGIAQFCCQoHX3NlYXJjaEINCgtfdmFyaWFudF9pZCLRAQocR2V0RmlsZUFjY2Vzc01lbWJlcnNSZXNwb25zZRJJCgdtZW1iZXJzGAEgAygLMjguZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0RmlsZUFjY2Vzc01lbWJlcnNSZXNwb25zZS5WYWx1ZRpmCgVWYWx1ZRIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIzCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19jcmVhdGVkX2F0ImQKF0dpdmVBY2Nlc3NUb0ZpbGVSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFwoKdmFyaWFudF9pZBgCIAEoCUgAiAEBEg0KBWVtYWlsGAMgASgJQg0KC192YXJpYW50X2lkIisKGEdpdmVBY2Nlc3NUb0ZpbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIicKGVJlbW92ZUFjY2Vzc1RvRmlsZVJlcXVlc3QSCgoCaWQYASABKAkiLQoaUmVtb3ZlQWNjZXNzVG9GaWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJkCh9TZW5kVGVzdEVtYWlsV2l0aE1lc3NhZ2VSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhQKDGh0bWxfbWVzc2FnZRgCIAEoCRISCgV0aXRsZRgDIAEoCUgAiAEBQggKBl90aXRsZSIvChlHZXRQcm9kdWN0VmFyaWFudHNSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkimQEKGkdldFByb2R1Y3RWYXJpYW50c1Jlc3BvbnNlElAKCHZhcmlhbnRzGAEgAygLMj4uZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFZhcmlhbnRzUmVzcG9uc2UuU2luZ2xlVmFyaWFudBopCg1TaW5nbGVWYXJpYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkigwEKKFVwZGF0ZVByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhQKDGh0bWxfbWVzc2FnZRgDIAEoCRISCgV0aXRsZRgEIAEoCUgAiAEBQggKBl90aXRsZSI7CiVHZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiuwIKJkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlc3BvbnNlElcKB3N1Y2Nlc3MYASABKAsyRC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXNwb25zZS5TdWNjZXNzSAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAadQoHU3VjY2VzcxIUCgdtZXNzYWdlGAEgASgJSACIAQESGQoMaHRtbF9tZXNzYWdlGAIgASgJSAGIAQESEgoFdGl0bGUYAyABKAlIAogBAUIKCghfbWVzc2FnZUIPCg1faHRtbF9tZXNzYWdlQggKBl90aXRsZUIICgZyZXN1bHQiMwodUHVibGlzaFByb2R1Y3RJZk5lZWRlZFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSJlCitVcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSIgoac2VuZF90aWNrZXRfYWZ0ZXJfcHVyY2hhc2UYAiABKAgiVgoqVXBkYXRlUHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFAoMYXVkaW9ib29rX2lkGAIgASgJIj4KKEdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSL5AQopR2V0UHJvZHVjdFNlbmRUaWNrZXRBZnRlclB1cmNoYXNlUmVzcG9uc2USWgoHc3VjY2VzcxgBIAEoCzJHLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlc3BvbnNlLlN1Y2Nlc3NIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABotCgdTdWNjZXNzEiIKGnNlbmRfdGlja2V0X2FmdGVyX3B1cmNoYXNlGAEgASgIQggKBnJlc3VsdCI9CidHZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSKfAgooR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXNwb25zZRJZCgdzdWNjZXNzGAEgASgLMkYuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXNwb25zZS5TdWNjZXNzSAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaVQoHU3VjY2VzcxIUCgxhdWRpb2Jvb2tfaWQYASABKAkSFwoPYXVkaW9ib29rX3RpdGxlGAIgASgJEhsKE2F1ZGlvYm9va19pbWFnZV91cmwYAyABKAlCCAoGcmVzdWx0IjcKFVNlYXJjaFByb2R1Y3RzUmVxdWVzdBITCgZzZWFyY2gYASABKAlIAIgBAUIJCgdfc2VhcmNoIswCChZTZWFyY2hQcm9kdWN0c1Jlc3BvbnNlEkYKB3N1Y2Nlc3MYASABKAsyMy5kYXNoYm9hcmQucHJvZHVjdC52MS5TZWFyY2hQcm9kdWN0c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGk8KDVNpbmdsZVByb2R1Y3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIWCglpbWFnZV91cmwYAyABKAlIAIgBAUIMCgpfaW1hZ2VfdXJsGlYKBlJlc3VsdBJMCghwcm9kdWN0cxgBIAMoCzI6LmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVzcG9uc2UuU2luZ2xlUHJvZHVjdEIICgZyZXN1bHQiNQofR2V0UHJvZHVjdEJvdWdodEFydGljbGVzUmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJImAKIEdldFByb2R1Y3RCb3VnaHRBcnRpY2xlc1Jlc3BvbnNlEjwKCGFydGljbGVzGAEgAygLMiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUiiAEKFFByb2R1Y3RCb3VnaHRBcnRpY2xlEgoKAmlkGAEgASgJEhIKCnByb2R1Y3RfaWQYAiABKAkSFAoHY29udGVudBgDIAEoCUgAiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9jb250ZW50ImAKIVVwZGF0ZVByb2R1Y3RCb3VnaHRBcnRpY2xlUmVxdWVzdBI7CgdhcnRpY2xlGAEgASgLMiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUiJwoRR2V0UHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSKBAgoSR2V0UHJvZHVjdFJlc3BvbnNlEjIKB3Byb2R1Y3QYASABKAsyHy5kYXNoYm9hcmQucHJvZHVjdC52MS5Qcm9kdWN0VjJIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABJGCgpzZWxsX3N0YXRzGAMgAygLMjIuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFJlc3BvbnNlLlNlbGxTdGF0cxosCglTZWxsU3RhdHMSEQoJcHJvZHVjdElEGAEgASgJEgwKBHNvbGQYAiABKAVCCAoGcmVzdWx0InIKHENyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlcXVlc3QSMAoHcHJvZHVjdBgBIAEoCzIfLmRhc2hib2FyZC5wcm9kdWN0LnYxLlByb2R1Y3RWMhIgChhpc19kZXNjcmlwdGlvbl9kaWZmZXJlbnQYAiABKAgiTQoeVXBkYXRlUHJvZHVjdFVuaXF1ZVNsdWdSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFwoPbmV3X3VuaXF1ZV9zbHVnGAIgASgJIqULCglQcm9kdWN0VjISDwoCaWQYASABKAlIAIgBARITCgt1bmlxdWVfc2x1ZxgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEjYKBnN0YXR1cxgEIAEoDjImLmRhc2hib2FyZC5wcm9kdWN0LnYxLlByb2R1Y3RWMi5TdGF0dXMSGQoMaXNfcmVjdXJyaW5nGAUgASgISAGIAQESNwoJcmVjdXJyaW5nGAYgASgLMh8uZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVjdXJyaW5nSAKIAQESDAoEbmFtZRgHIAEoCRIYCgtkZXNjcmlwdGlvbhgIIAEoCUgDiAEBEh0KEGh0bWxfZGVzY3JpcHRpb24YCSABKAlIBIgBARIeChFzaG9ydF9kZXNjcmlwdGlvbhgKIAEoCUgFiAEBEhkKDHByaWNlX2Ftb3VudBgLIAEoBUgGiAEBEhsKDnByaWNlX2N1cnJlbmN5GAwgASgJSAeIAQESEAoDdGF4GA0gASgCSAiIAQESHwoSYXZhaWxhYmxlX3F1YW50aXR5GA4gASgFSAmIAQESPwoIZmVhdHVyZXMYDyADKAsyLS5kYXNoYm9hcmQucHJvZHVjdC52MS5Qcm9kdWN0VjIuRmVhdHVyZXNFbnRyeRIOCgZpbWFnZXMYECADKAkSHAoPdGh1bWJuYWlsX2ltYWdlGBEgASgJSAqIAQESFwoKbWFpbl9pbWFnZRgSIAEoCUgLiAEBEi8KCHZhcmlhbnRzGBMgAygLMh0uZGFzaGJvYXJkLnByb2R1Y3QudjEuVmFyaWFudBInChpzZW5kX3RpY2tldF9hZnRlcl9wdXJjaGFzZRgUIAEoCEgMiAEBEicKGmlzX3Byb2R1Y3RfdmlzaWJsZV9vbl9saXN0GBUgASgISA2IAQESGwoOaXNfZGVsaXZlcmFibGUYGCABKAhIDogBARIhChRmb3JjZV9tYW51YWxfcGF5bWVudBgdIAEoCEgPiAEBEhkKDHdlaWdodF9ncmFtcxgeIAEoBUgQiAEBEh4KEXdpZHRoX21pbGxpbWV0ZXJzGB8gASgFSBGIAQESHwoSaGVpZ2h0X21pbGxpbWV0ZXJzGCAgASgFSBKIAQESEgoKY3JlYXRlZF9hdBgZIAEoAxISCgp1cGRhdGVkX2F0GBogASgDEhcKCmRlbGV0ZWRfYXQYGyABKANIE4gBARIVCghhcmNoaXZlZBgcIAEoCEgUiAEBEhAKCHJldmlzaW9uGCEgASgFGi8KDUZlYXR1cmVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIzCgZTdGF0dXMSCQoFRFJBRlQQABIPCgtVTlBVQkxJU0hFRBABEg0KCVBVQkxJU0hFRBACQgUKA19pZEIPCg1faXNfcmVjdXJyaW5nQgwKCl9yZWN1cnJpbmdCDgoMX2Rlc2NyaXB0aW9uQhMKEV9odG1sX2Rlc2NyaXB0aW9uQhQKEl9zaG9ydF9kZXNjcmlwdGlvbkIPCg1fcHJpY2VfYW1vdW50QhEKD19wcmljZV9jdXJyZW5jeUIGCgRfdGF4QhUKE19hdmFpbGFibGVfcXVhbnRpdHlCEgoQX3RodW1ibmFpbF9pbWFnZUINCgtfbWFpbl9pbWFnZUIdChtfc2VuZF90aWNrZXRfYWZ0ZXJfcHVyY2hhc2VCHQobX2lzX3Byb2R1Y3RfdmlzaWJsZV9vbl9saXN0QhEKD19pc19kZWxpdmVyYWJsZUIXChVfZm9yY2VfbWFudWFsX3BheW1lbnRCDwoNX3dlaWdodF9ncmFtc0IUChJfd2lkdGhfbWlsbGltZXRlcnNCFQoTX2hlaWdodF9taWxsaW1ldGVyc0INCgtfZGVsZXRlZF9hdEILCglfYXJjaGl2ZWQiuwMKCVJlY3VycmluZxI6Cg1iaWxsaW5nUGVyaW9kGAEgASgOMiMuZGFzaGJvYXJkLnByb2R1Y3QudjEuQmlsbGluZ1BlcmlvZBIXCgp0cmlhbF9kYXlzGAIgASgFSACIAQESHwoSbnVtYmVyX29mX3BheW1lbnRzGAMgASgFSAGIAQESMQokY2hhbmdlX2Ftb3VudF9mb3JfY3VycmVudFN1YnNjcmliZXJzGAQgASgISAKIAQESNAoncmVtb3ZlX2FjY2Vzc19mb3JfY2FuY2VsbGVkX3N1YnNjcmliZXJzGAUgASgISAOIAQESLgohc2hvdWxkX3NlbmRfdHJpYWxfcGVyaW9kX3JlbWluZGVyGAYgASgISASIAQFCDQoLX3RyaWFsX2RheXNCFQoTX251bWJlcl9vZl9wYXltZW50c0InCiVfY2hhbmdlX2Ftb3VudF9mb3JfY3VycmVudFN1YnNjcmliZXJzQioKKF9yZW1vdmVfYWNjZXNzX2Zvcl9jYW5jZWxsZWRfc3Vic2NyaWJlcnNCJAoiX3Nob3VsZF9zZW5kX3RyaWFsX3BlcmlvZF9yZW1pbmRlciKrAgoPVmFyaWFudERpc2NvdW50EjgKBHR5cGUYASABKA4yKi5kYXNoYm9hcmQucHJvZHVjdC52MS5WYXJpYW50RGlzY291bnQuVHlwZRIOCgZhbW91bnQYAiABKAUSMQoIZW5kX2RhdGUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESDwoCaWQYBCABKAlIAYgBARIPCgdlbmFibGVkGAUgASgIEjMKCnN0YXJ0X2RhdGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQEiIQoEVHlwZRIJCgVGSVhFRBAAEg4KClBFUkNFTlRBR0UQAUILCglfZW5kX2RhdGVCBQoDX2lkQg0KC19zdGFydF9kYXRlIt0GCgdWYXJpYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIWCglpbWFnZV91cmwYBCABKAlIAYgBARIUCgxwcmljZV9hbW91bnQYBSABKAUSFgoOcHJpY2VfY3VycmVuY3kYBiABKAkSEAoDdGF4GAcgASgFSAKIAQESHwoSYXZhaWxhYmxlX3F1YW50aXR5GAggASgFSAOIAQESNwoJcmVjdXJyaW5nGAkgASgLMh8uZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVjdXJyaW5nSASIAQESGwoOaXNfZGVsaXZlcmFibGUYCiABKAhIBYgBARIhChRsb3dlc3RfcHJpY2VfMzBfZGF5cxgLIAEoBUgGiAEBEjwKCGRpc2NvdW50GAwgASgLMiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuVmFyaWFudERpc2NvdW50SAeIAQESPgoVZXN0aW1hdGVkX2RlbGl2ZXJ5X2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBEhwKFHJlZ3VsYXJfcHJpY2VfYW1vdW50GA4gASgFEh4KFmVmZmVjdGl2ZV9wcmljZV9hbW91bnQYDyABKAUSIwoWcmVmZXJlbmNlX3ByaWNlX2Ftb3VudBgQIAEoBUgJiAEBEiMKG3JlZmVyZW5jZV9oaXN0b3J5X2F2YWlsYWJsZRgRIAEoCBIVCg1wcmljZV92ZXJzaW9uGBIgASgDEj0KFG5leHRfcHJpY2VfY2hhbmdlX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfaW1hZ2VfdXJsQgYKBF90YXhCFQoTX2F2YWlsYWJsZV9xdWFudGl0eUIMCgpfcmVjdXJyaW5nQhEKD19pc19kZWxpdmVyYWJsZUIXChVfbG93ZXN0X3ByaWNlXzMwX2RheXNCCwoJX2Rpc2NvdW50QhgKFl9lc3RpbWF0ZWRfZGVsaXZlcnlfYXRCGQoXX3JlZmVyZW5jZV9wcmljZV9hbW91bnRCFwoVX25leHRfcHJpY2VfY2hhbmdlX2F0IngKHUNyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlc3BvbnNlEhQKCnByb2R1Y3RfaWQYASABKAlIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIAEIICgZyZXN1bHQifAoMQm9vbFJlc3BvbnNlEikKB3N1Y2Nlc3MYASABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIAEIICgZyZXN1bHQiIgoPT3BlcmF0aW9uUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgiUAoSR2V0UHJvZHVjdHNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEhEKBHR5cGUYAiABKAlIAYgBAUIJCgdfc2VhcmNoQgcKBV90eXBlIrwBChNHZXRQcm9kdWN0c1Jlc3BvbnNlEkMKB3N1Y2Nlc3MYASABKAsyMC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGh0KBlJlc3VsdBITCgtwcm9kdWN0X2lkcxgBIAMoCUIICgZyZXN1bHQilgEKF0dldFByb2R1Y3RzQnlJZHNSZXF1ZXN0EgsKA2lkcxgBIAMoCRIVCghjdXJyZW5jeRgCIAEoCUgAiAEBEhEKBGxhbmcYAyABKAlIAYgBARIbCg5ncm91cF92YXJpYW50cxgEIAEoCEgCiAEBQgsKCV9jdXJyZW5jeUIHCgVfbGFuZ0IRCg9fZ3JvdXBfdmFyaWFudHMiwQIKGEdldFByb2R1Y3RzQnlJZHNSZXNwb25zZRJICgdzdWNjZXNzGAEgASgLMjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdHNCeUlkc1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGkQKB1Byb2R1Y3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRINCgVwcmljZRgDIAEoBRIQCghjdXJyZW5jeRgEIAEoCRpSCgZSZXN1bHQSSAoIcHJvZHVjdHMYASADKAsyNi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0c0J5SWRzUmVzcG9uc2UuUHJvZHVjdEIICgZyZXN1bHQi3QEKFUdldFByb2R1Y3RHcmlkUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKBnNlYXJjaBgCIAEoCUgAiAEBEhUKCGN1cnJlbmN5GAMgASgJSAGIAQESGwoOZ3JvdXBfdmFyaWFudHMYBCABKAhIAogBARITCgZvZmZzZXQYBSABKAVIA4gBARISCgVsaW1pdBgGIAEoBUgEiAEBQgkKB19zZWFyY2hCCwoJX2N1cnJlbmN5QhEKD19ncm91cF92YXJpYW50c0IJCgdfb2Zmc2V0QggKBl9saW1pdCLCAQoWR2V0UHJvZHVjdEdyaWRSZXNwb25zZRJGCgdzdWNjZXNzGAEgASgLMjMuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXNwb25zZS5SZXN1bHRIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABodCgZSZXN1bHQSEwoLcHJvZHVjdF9pZHMYASADKAlCCAoGcmVzdWx0ItYBChpHZXRNYWluUGFnZVByb2R1Y3RzUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQESEwoGc2VhcmNoGAIgASgJSAGIAQESEgoFbGltaXQYAyABKAVIAogBARITCgZvZmZzZXQYBCABKAVIA4gBARIdChBpbmNsdWRlX2FyY2hpdmVkGAUgASgISASIAQFCDQoLX3Byb2plY3RfaWRCCQoHX3NlYXJjaEIICgZfbGltaXRCCQoHX29mZnNldEITChFfaW5jbHVkZV9hcmNoaXZlZCL2AQobR2V0TWFpblBhZ2VQcm9kdWN0c1Jlc3BvbnNlEksKB3N1Y2Nlc3MYASABKAsyOC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRNYWluUGFnZVByb2R1Y3RzUmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaRwoGUmVzdWx0EhMKC3Byb2R1Y3RfaWRzGAEgAygJEhgKC3RvdGFsX2NvdW50GAIgASgFSACIAQFCDgoMX3RvdGFsX2NvdW50QggKBnJlc3VsdCI6CiNHZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVxdWVzdBITCgt1bmlxdWVfc2x1ZxgBIAEoCSKXBAokR2V0UHVibGljUHJvZHVjdEJ5VW5pcXVlU2x1Z1Jlc3BvbnNlElQKB3N1Y2Nlc3MYASABKAsyQS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAa1QIKBlJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhQKB21lc3NhZ2UYAiABKAlIAIgBARISCgpwcm9qZWN0X2lkGAMgASgJEgoKAmlkGAQgASgJEgwKBG5hbWUYBSABKAkSHgoRc2hvcnRfZGVzY3JpcHRpb24YBiABKAlIAYgBARIZCgxwcmljZV9hbW91bnQYByABKAVIAogBARIbCg5wcmljZV9jdXJyZW5jeRgIIAEoCUgDiAEBEhcKCm1haW5faW1hZ2UYCSABKAlIBIgBARIcCg90aHVtYm5haWxfaW1hZ2UYCiABKAlIBYgBAUIKCghfbWVzc2FnZUIUChJfc2hvcnRfZGVzY3JpcHRpb25CDwoNX3ByaWNlX2Ftb3VudEIRCg9fcHJpY2VfY3VycmVuY3lCDQoLX21haW5faW1hZ2VCEgoQX3RodW1ibmFpbF9pbWFnZUIICgZyZXN1bHQiYQoaR2V0UHVibGljQWdyZWVtZW50c1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtwcm9kdWN0X2lkcxgCIAMoCRIaChJjb250YWluc19yZWN1cnJpbmcYAyABKAgi5QIKG0dldFB1YmxpY0FncmVlbWVudHNSZXNwb25zZRJLCgdzdWNjZXNzGAEgASgLMjguZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGisKCUFncmVlbWVudBIMCgRuYW1lGAEgASgJEhAKCHJlcXVpcmVkGAIgASgIGogBCgZSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIUCgdtZXNzYWdlGAIgASgJSACIAQESSwoGcmVzdWx0GAMgAygLMjsuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1Jlc3BvbnNlLkFncmVlbWVudEIKCghfbWVzc2FnZUIICgZyZXN1bHQiPAomR2V0RVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSLlAQonR2V0RVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlc3BvbnNlElcKB3N1Y2Nlc3MYASABKAsyRC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRFUHJvZHVjdHNBZGRlZEZvclRoaXNQcm9kdWN0UmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaHgoGUmVzdWx0EhQKDGVwcm9kdWN0X2lkcxgBIAMoCUIICgZyZXN1bHQiVQopVXBkYXRlRVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRIUCgxlcHJvZHVjdF9pZHMYAiADKAkiOgokR2V0TGlzdE9mQWRkaXRpb25hbEFncmVlbWVudHNSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiUAoPQWdyZWVtZW50T3B0aW9uEgwKBG5hbWUYASABKAkSEwoLaXNfcmVxdWlyZWQYAiABKAgSEQoEbGluaxgDIAEoCUgAiAEBQgcKBV9saW5rIrUCCiVHZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50c1Jlc3BvbnNlElUKB3N1Y2Nlc3MYASABKAsyQi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGnIKBlJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhQKB21lc3NhZ2UYAiABKAlIAIgBARI1CgZyZXN1bHQYAyADKAsyJS5kYXNoYm9hcmQucHJvZHVjdC52MS5BZ3JlZW1lbnRPcHRpb25CCgoIX21lc3NhZ2VCCAoGcmVzdWx0IngKJ1VwZGF0ZUxpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJEjkKCmFncmVlbWVudHMYAiADKAsyJS5kYXNoYm9hcmQucHJvZHVjdC52MS5BZ3JlZW1lbnRPcHRpb24iJAoUQ3JlYXRlUHJvZHVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIqChREZWxldGVQcm9kdWN0UmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJIjcKFUdldFByb2R1Y3RCeUlkUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEgoKAmlkGAIgASgJKr0BCg1CaWxsaW5nUGVyaW9kEhgKFEJJTExJTkdfUEVSSU9EX0RBSUxZEAASGQoVQklMTElOR19QRVJJT0RfV0VFS0xZEAESGgoWQklMTElOR19QRVJJT0RfTU9OVEhMWRACEhwKGEJJTExJTkdfUEVSSU9EX1FVQVJURVJMWRADEiAKHEJJTExJTkdfUEVSSU9EX1NFTUlfQU5OVUFMTFkQBBIbChdCSUxMSU5HX1BFUklPRF9BTk5VQUxMWRAFKpUCCg5GYWlsdXJlTWVzc2FnZRIbChdGQUlMVVJFX01FU1NBR0VfVU5LTk9XThAAEiUKIUZBSUxVUkVfTUVTU0FHRV9QUk9KRUNUX05PVF9GT1VORBABEiUKIUZBSUxVUkVfTUVTU0FHRV9QUk9EVUNUX05PVF9GT1VORBACEiYKIkZBSUxVUkVfTUVTU0FHRV9JTlZBTElEX1BST0RVQ1RfSUQQAxImCiJGQUlMVVJFX01FU1NBR0VfU0xVR19BTFJFQURZX1RBS0VOEAQSKQolRkFJTFVSRV9NRVNTQUdFX0NBTk5PVF9DUkVBVEVfUFJPRFVDVBAFEh0KGUZBSUxVUkVfTUVTU0FHRV9OT19BQ0NFU1MQBjLXJQoNUHJvZHVjdFJvdXRlchKAAQoVQ3JlYXRlT3JVcGRhdGVQcm9kdWN0EjIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQ3JlYXRlT3JVcGRhdGVQcm9kdWN0UmVxdWVzdBozLmRhc2hib2FyZC5wcm9kdWN0LnYxLkNyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlc3BvbnNlEnEKEER1cGxpY2F0ZVByb2R1Y3QSLS5kYXNoYm9hcmQucHJvZHVjdC52MS5EdXBsaWNhdGVQcm9kdWN0UmVxdWVzdBouLmRhc2hib2FyZC5wcm9kdWN0LnYxLkR1cGxpY2F0ZVByb2R1Y3RSZXNwb25zZRJzChdVcGRhdGVQcm9kdWN0VW5pcXVlU2x1ZxI0LmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZVByb2R1Y3RVbmlxdWVTbHVnUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJfCgpHZXRQcm9kdWN0EicuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFJlcXVlc3QaKC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0UmVzcG9uc2USpAEKIUdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZRI+LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlcXVlc3QaPy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXNwb25zZRKhAQogR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2USPS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlcXVlc3QaPi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlc3BvbnNlEo0BCiRVcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2USQS5kYXNoYm9hcmQucHJvZHVjdC52MS5VcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXF1ZXN0GiIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQm9vbFJlc3BvbnNlEosBCiNVcGRhdGVQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZRJALmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZVByb2R1Y3RBdWRpb2Jvb2tBZnRlclB1cmNoYXNlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJxChZQdWJsaXNoUHJvZHVjdElmTmVlZGVkEjMuZGFzaGJvYXJkLnByb2R1Y3QudjEuUHVibGlzaFByb2R1Y3RJZk5lZWRlZFJlcXVlc3QaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USmwEKHkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZRI7LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlcXVlc3QaPC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXNwb25zZRKHAQohVXBkYXRlUHJvZHVjdEFmdGVyUHVyY2hhc2VNZXNzYWdlEj4uZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlUHJvZHVjdEFmdGVyUHVyY2hhc2VNZXNzYWdlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJ3ChJHZXRQcm9kdWN0VmFyaWFudHMSLy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0VmFyaWFudHNSZXF1ZXN0GjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFZhcmlhbnRzUmVzcG9uc2USdQoYU2VuZFRlc3RFbWFpbFdpdGhNZXNzYWdlEjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuU2VuZFRlc3RFbWFpbFdpdGhNZXNzYWdlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJrCg5TZWFyY2hQcm9kdWN0cxIrLmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVxdWVzdBosLmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVzcG9uc2USjAEKGUV4Y2hhbmdlUHJvZHVjdElEc1RvTmFtZXMSNi5kYXNoYm9hcmQucHJvZHVjdC52MS5FeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVxdWVzdBo3LmRhc2hib2FyZC5wcm9kdWN0LnYxLkV4Y2hhbmdlUHJvZHVjdElEc1RvTmFtZXNSZXNwb25zZRKJAQoYR2V0UHJvZHVjdEJvdWdodEFydGljbGVzEjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEJvdWdodEFydGljbGVzUmVxdWVzdBo2LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RCb3VnaHRBcnRpY2xlc1Jlc3BvbnNlEnkKGlVwZGF0ZVByb2R1Y3RCb3VnaHRBcnRpY2xlEjcuZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlUHJvZHVjdEJvdWdodEFydGljbGVSZXF1ZXN0GiIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQm9vbFJlc3BvbnNlEmkKF0FkZFByb2R1Y3RCb3VnaHRBcnRpY2xlEiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USfQoUR2V0RmlsZUFjY2Vzc01lbWJlcnMSMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRGaWxlQWNjZXNzTWVtYmVyc1JlcXVlc3QaMi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRGaWxlQWNjZXNzTWVtYmVyc1Jlc3BvbnNlEnEKEEdpdmVBY2Nlc3NUb0ZpbGUSLS5kYXNoYm9hcmQucHJvZHVjdC52MS5HaXZlQWNjZXNzVG9GaWxlUmVxdWVzdBouLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdpdmVBY2Nlc3NUb0ZpbGVSZXNwb25zZRJ3ChJSZW1vdmVBY2Nlc3NUb0ZpbGUSLy5kYXNoYm9hcmQucHJvZHVjdC52MS5SZW1vdmVBY2Nlc3NUb0ZpbGVSZXF1ZXN0GjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVtb3ZlQWNjZXNzVG9GaWxlUmVzcG9uc2USYQoOQXJjaGl2ZVByb2R1Y3QSKy5kYXNoYm9hcmQucHJvZHVjdC52MS5BcmNoaXZlUHJvZHVjdFJlcXVlc3QaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USYwoQVW5hcmNoaXZlUHJvZHVjdBIrLmRhc2hib2FyZC5wcm9kdWN0LnYxLkFyY2hpdmVQcm9kdWN0UmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJiCgtHZXRQcm9kdWN0cxIoLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzUmVxdWVzdBopLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzUmVzcG9uc2UScQoQR2V0UHJvZHVjdHNCeUlkcxItLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzQnlJZHNSZXF1ZXN0Gi4uZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdHNCeUlkc1Jlc3BvbnNlEmsKDkdldFByb2R1Y3RHcmlkEisuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXF1ZXN0GiwuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXNwb25zZRJ6ChNHZXRNYWluUGFnZVByb2R1Y3RzEjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0TWFpblBhZ2VQcm9kdWN0c1JlcXVlc3QaMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRNYWluUGFnZVByb2R1Y3RzUmVzcG9uc2USlQEKHEdldFB1YmxpY1Byb2R1Y3RCeVVuaXF1ZVNsdWcSOS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVxdWVzdBo6LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFB1YmxpY1Byb2R1Y3RCeVVuaXF1ZVNsdWdSZXNwb25zZRJ6ChNHZXRQdWJsaWNBZ3JlZW1lbnRzEjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1JlcXVlc3QaMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNBZ3JlZW1lbnRzUmVzcG9uc2USngEKH0dldEVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3QSPC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRFUHJvZHVjdHNBZGRlZEZvclRoaXNQcm9kdWN0UmVxdWVzdBo9LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldEVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3RSZXNwb25zZRKMAQoiVXBkYXRlRVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdBI/LmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZUVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3RSZXF1ZXN0GiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuT3BlcmF0aW9uUmVzdWx0EpgBCh1HZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50cxI6LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldExpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVxdWVzdBo7LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldExpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVzcG9uc2USiAEKIFVwZGF0ZUxpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzEj0uZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlTGlzdE9mQWRkaXRpb25hbEFncmVlbWVudHNSZXF1ZXN0GiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuT3BlcmF0aW9uUmVzdWx0EmIKDUNyZWF0ZVByb2R1Y3QSKi5kYXNoYm9hcmQucHJvZHVjdC52MS5DcmVhdGVQcm9kdWN0UmVxdWVzdBolLmRhc2hib2FyZC5wcm9kdWN0LnYxLk9wZXJhdGlvblJlc3VsdBJiCg1EZWxldGVQcm9kdWN0EiouZGFzaGJvYXJkLnByb2R1Y3QudjEuRGVsZXRlUHJvZHVjdFJlcXVlc3QaJS5kYXNoYm9hcmQucHJvZHVjdC52MS5PcGVyYXRpb25SZXN1bHQSZwoOR2V0UHJvZHVjdEJ5SWQSKy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QnlJZFJlcXVlc3QaKC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0UmVzcG9uc2UShgEKF0dldEd1ZXN0Q2F0YWxvZ1NldHRpbmdzEjQuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXF1ZXN0GjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXNwb25zZRKAAQoUU2V0R3Vlc3RDYXRhbG9nRW50cnkSMS5kYXNoYm9hcmQucHJvZHVjdC52MS5TZXRHdWVzdENhdGFsb2dFbnRyeVJlcXVlc3QaNS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRHdWVzdENhdGFsb2dTZXR0aW5nc1Jlc3BvbnNlYgZwcm90bzM",[C,M]);var z=x("CiBkYXNoYm9hcmQvdjEvbm90aWZpY2F0aW9ucy5wcm90bxIaZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEiYAoWVmVyaWZ5VXNlckVtYWlsUmVxdWVzdBISCgVlbWFpbBgBIAEoCUgAiAEBEhEKBGNvZGUYAiABKAlIAYgBARIMCgRzbHVnGAMgASgJQggKBl9lbWFpbEIHCgVfY29kZSK/AQoXVmVyaWZ5VXNlckVtYWlsUmVzcG9uc2USDwoCb2sYASABKAhIAIgBARIZCgxhY2Nlc3NfdG9rZW4YAiABKAlIAYgBARIUCgd1c2VyX2lkGAMgASgJSAKIAQESFQoIcmV0cnlfaW4YBCABKAVIA4gBARIRCgRzZW50GAUgASgISASIAQFCBQoDX29rQg8KDV9hY2Nlc3NfdG9rZW5CCgoIX3VzZXJfaWRCCwoJX3JldHJ5X2luQgcKBV9zZW50IlAKFEdldFVzZXJHcm91cHNSZXF1ZXN0EgwKBHNsdWcYASABKAkSGQoMYWNjZXNzX3Rva2VuGAIgASgJSACIAQFCDwoNX2FjY2Vzc190b2tlbiKJAgoVR2V0VXNlckdyb3Vwc1Jlc3BvbnNlEkcKBmdyb3VwcxgBIAMoCzI3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFVzZXJHcm91cHNSZXNwb25zZS5Hcm91cBqmAQoFR3JvdXASCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBWlzX29uGAQgASgIEjwKCWhvd19vZnRlbhgFIAEoDjIkLmNvbW1vbi52MS5Ob3RpZmljYXRpb25Hcm91cEhvd09mdGVuSAGIAQFCDgoMX2Rlc2NyaXB0aW9uQgwKCl9ob3dfb2Z0ZW4idwoXVXBkYXRlVXNlckdyb3Vwc1JlcXVlc3QSDAoEc2x1ZxgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEhEKCWdyb3VwX2lkcxgDIAMoCRIZCgxhY2Nlc3NfdG9rZW4YBCABKAlIAIgBAUIPCg1fYWNjZXNzX3Rva2VuIm8KIkdldE5vdGlmaWNhdGlvblVzZXJTZXR0aW5nc1JlcXVlc3QSDAoEc2x1ZxgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEhkKDGFjY2Vzc190b2tlbhgDIAEoCUgAiAEBQg8KDV9hY2Nlc3NfdG9rZW4ijAQKI0dldE5vdGlmaWNhdGlvblVzZXJTZXR0aW5nc1Jlc3BvbnNlElkKB3N1Y2Nlc3MYASABKAsyRi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25Vc2VyU2V0dGluZ3NSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABrAAgoGUmVzdWx0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJEhkKEXN1YnNjcmlwdGlvbl9zbHVnGAIgASgJEiMKG21vYmlsZV9ub3RpZmljYXRpb25fZW5hYmxlZBgDIAEoCBIiChplbWFpbF9ub3RpZmljYXRpb25fZW5hYmxlZBgEIAEoCBIgChhzbXNfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSJAocZW1haWxfbm90aWZpY2F0aW9uX2F2YWlsYWJsZRgGIAEoCBIiChpzbXNfbm90aWZpY2F0aW9uX2F2YWlsYWJsZRgHIAEoCBIlCh1tb2JpbGVfbm90aWZpY2F0aW9uX2F2YWlsYWJsZRgIIAEoCBIeChZoYXNfdXNlcl9pbnN0YWxsZWRfYXBwGAkgASgIQggKBnJlc3VsdCIiCiBDcmVhdGVOb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdCIgCh5SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1JlcXVlc3QigwIKIFVwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJEhkKEXN1YnNjcmlwdGlvbl9zbHVnGAIgASgJEiMKG21vYmlsZV9ub3RpZmljYXRpb25fZW5hYmxlZBgDIAEoCBIiChplbWFpbF9ub3RpZmljYXRpb25fZW5hYmxlZBgEIAEoCBIgChhzbXNfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSIAoTZW1haWxfb3Blbl90cmFja2luZxgGIAEoCEgAiAEBQhYKFF9lbWFpbF9vcGVuX3RyYWNraW5nIkMKIERlbGV0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJIpADCh9SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlElUKB3N1Y2Nlc3MYASABKAsyQi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGswBCgZSZXN1bHQSHwoXbm90aWZpY2F0aW9uX3NldHRpbmdfaWQYASABKAkSGQoRc3Vic2NyaXB0aW9uX3NsdWcYAiABKAkSIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAMgASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAQgASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgFIAEoCBIbChNlbWFpbF9vcGVuX3RyYWNraW5nGAYgASgIQggKBnJlc3VsdCLkAQobTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlElEKB3N1Y2Nlc3MYASABKAsyPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25TZXR0aW5nUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAaKQoGUmVzdWx0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJQggKBnJlc3VsdCLKAQoeQ3JlYXRlTm90aWZpY2F0aW9uR3JvdXBSZXF1ZXN0EgwKBG5hbWUYASABKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARI8Cglob3dfb2Z0ZW4YAyABKA4yJC5jb21tb24udjEuTm90aWZpY2F0aW9uR3JvdXBIb3dPZnRlbkgBiAEBEhYKCWlzX3B1YmxpYxgEIAEoCEgCiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfaG93X29mdGVuQgwKCl9pc19wdWJsaWMiWgodUmVhZE5vdGlmaWNhdGlvbkdyb3Vwc1JlcXVlc3QSEQoJZ3JvdXBfaWRzGAEgAygJEhcKCmdyb3VwX25hbWUYAiABKAlIAIgBAUINCgtfZ3JvdXBfbmFtZSLpAQoeVXBkYXRlTm90aWZpY2F0aW9uR3JvdXBSZXF1ZXN0Eh0KFW5vdGlmaWNhdGlvbl9ncm91cF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESPAoJaG93X29mdGVuGAQgASgOMiQuY29tbW9uLnYxLk5vdGlmaWNhdGlvbkdyb3VwSG93T2Z0ZW5IAYgBARIWCglpc19wdWJsaWMYBSABKAhIAogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX2hvd19vZnRlbkIMCgpfaXNfcHVibGljIj8KHkRlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYASABKAki6gMKHlJlYWROb3RpZmljYXRpb25Hcm91cHNSZXNwb25zZRJUCgdzdWNjZXNzGAEgASgLMkEuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbkdyb3Vwc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGswBCgVHcm91cBIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKCWhvd19vZnRlbhgEIAEoDjIkLmNvbW1vbi52MS5Ob3RpZmljYXRpb25Hcm91cEhvd09mdGVuSAGIAQESDQoFdXNlcnMYBSABKAUSEQoJaXNfcHVibGljGAYgASgIQg4KDF9kZXNjcmlwdGlvbkIMCgpfaG93X29mdGVuGloKBlJlc3VsdBJQCgZncm91cHMYASADKAsyQC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBzUmVzcG9uc2UuR3JvdXBCCAoGcmVzdWx0It4BChlOb3RpZmljYXRpb25Hcm91cFJlc3BvbnNlEk8KB3N1Y2Nlc3MYASABKAsyPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGicKBlJlc3VsdBIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYASABKAlCCAoGcmVzdWx0IqMCCh1DcmVhdGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBIMCgRzbHVnGAEgASgJEg0KBWVtYWlsGAIgASgJEg4KBmdyb3VwcxgDIAMoCRISCgVwaG9uZRgEIAEoCUgAiAEBEhcKCmZpcnN0X25hbWUYBSABKAlIAYgBARIWCglsYXN0X25hbWUYBiABKAlIAogBARIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYByABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYCCABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAkgASgIQggKBl9waG9uZUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lIlgKHFJlYWROb3RpZmljYXRpb25Vc2Vyc1JlcXVlc3QSEAoIdXNlcl9pZHMYASADKAkSFwoKdXNlcl9lbWFpbBgCIAEoCUgAiAEBQg0KC191c2VyX2VtYWlsIrACCh1VcGRhdGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBIMCgRzbHVnGAEgASgJEhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAIgASgJEhcKCmZpcnN0X25hbWUYAyABKAlIAIgBARIWCglsYXN0X25hbWUYBCABKAlIAYgBARIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYBiABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAcgASgIEhkKDGFjY2Vzc190b2tlbhgIIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDwoNX2FjY2Vzc190b2tlbiJqCh1EZWxldGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJEgwKBHNsdWcYAiABKAkSGQoMYWNjZXNzX3Rva2VuGAMgASgJSACIAQFCDwoNX2FjY2Vzc190b2tlbiL4AQodUmVhZE5vdGlmaWNhdGlvblVzZXJzUmVzcG9uc2USUwoHc3VjY2VzcxgBIAEoCzJALmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Vc2Vyc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGjkKBlJlc3VsdBIvCgV1c2VycxgBIAMoCzIgLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVzZXJCCAoGcmVzdWx0IqkCChhOb3RpZmljYXRpb25Vc2VyUmVzcG9uc2USTgoHc3VjY2VzcxgBIAEoCzI7LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblVzZXJSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABIZCgxhY2Nlc3NfdG9rZW4YAyABKAlIAYgBARIUCgd1c2VyX2lkGAQgASgJSAKIAQEaJgoGUmVzdWx0EhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAEgASgJQggKBnJlc3VsdEIPCg1fYWNjZXNzX3Rva2VuQgoKCF91c2VyX2lkImEKIkNyZWF0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlclJlcXVlc3QSHQoVbm90aWZpY2F0aW9uX2dyb3VwX2lkGAEgASgJEhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAIgASgJIjcKIlJlYWROb3RpZmljYXRpb25Hcm91cFVzZXJzUmVxdWVzdHMSEQoJZ3JvdXBfaWRzGAEgAygJIoUBCiJVcGRhdGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0EiIKGm5vdGlmaWNhdGlvbl9ncm91cF91c2VyX2lkGAEgASgJEh0KFW5vdGlmaWNhdGlvbl9ncm91cF9pZBgCIAEoCRIcChRub3RpZmljYXRpb25fdXNlcl9pZBgDIAEoCSJICiJEZWxldGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0EiIKGm5vdGlmaWNhdGlvbl9ncm91cF91c2VyX2lkGAEgASgJIoICCiJSZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1Jlc3BvbnNlElgKB3N1Y2Nlc3MYASABKAsyRS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGjkKBlJlc3VsdBIvCgV1c2VycxgBIAMoCzIgLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVzZXJCCAoGcmVzdWx0IusBCh1Ob3RpZmljYXRpb25Hcm91cFVzZXJSZXNwb25zZRJTCgdzdWNjZXNzGAEgASgLMkAuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAaLAoGUmVzdWx0EiIKGm5vdGlmaWNhdGlvbl9ncm91cF91c2VyX2lkGAEgASgJQggKBnJlc3VsdCJjCgxDaGFubmVsU3RhdHMSEgoKcmVjaXBpZW50cxgBIAEoBRIMCgRzZW50GAIgASgFEhEKCWRlbGl2ZXJlZBgDIAEoBRIOCgZvcGVuZWQYBCABKAUSDgoGZmFpbGVkGAUgASgFIsABChRNZXNzYWdlRGVsaXZlcnlTdGF0cxI3CgVlbWFpbBgBIAEoCzIoLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNoYW5uZWxTdGF0cxI4CgZtb2JpbGUYAiABKAsyKC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DaGFubmVsU3RhdHMSNQoDc21zGAMgASgLMiguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuQ2hhbm5lbFN0YXRzIt0FChNOb3RpZmljYXRpb25NZXNzYWdlEh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJEkUKBnN0YXR1cxgCIAEoDjI1LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0dXMSKwoHc2VuZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFdGl0bGUYBCABKAkSFQoIc3VidGl0bGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFgoJaW1hZ2VfdXJsGAcgASgJSAKIAQESFQoIb3Blbl91cmwYDyABKAlIA4gBARIOCgZncm91cHMYCCADKAkSEAoIcHJvZHVjdHMYCSADKAkSDQoFdXNlcnMYCiADKAkSIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAsgASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAwgASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgNIAEoCBIaCg1lcnJvcl9tZXNzYWdlGA4gASgJSASIAQESNQoMY2FuY2VsbGVkX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEkQKBXN0YXRzGBEgASgLMjAuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTWVzc2FnZURlbGl2ZXJ5U3RhdHNIBogBARIcCg9lbWFpbF9ib2R5X2h0bWwYEiABKAlIB4gBAUILCglfc3VidGl0bGVCCgoIX21lc3NhZ2VCDAoKX2ltYWdlX3VybEILCglfb3Blbl91cmxCEAoOX2Vycm9yX21lc3NhZ2VCDwoNX2NhbmNlbGxlZF9hdEIICgZfc3RhdHNCEgoQX2VtYWlsX2JvZHlfaHRtbCKDBAogQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZVJlcXVlc3QSRQoGc3RhdHVzGAEgASgOMjUuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVN0YXR1cxIrCgdzZW5kX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV0aXRsZRgDIAEoCRIVCghzdWJ0aXRsZRgEIAEoCUgAiAEBEhQKB21lc3NhZ2UYBSABKAlIAYgBARIWCglpbWFnZV91cmwYBiABKAlIAogBARIVCghvcGVuX3VybBgNIAEoCUgDiAEBEg4KBmdyb3VwcxgHIAMoCRIQCghwcm9kdWN0cxgIIAMoCRINCgV1c2VycxgJIAMoCRIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYCiABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYCyABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAwgASgIEhwKD2VtYWlsX2JvZHlfaHRtbBgOIAEoCUgEiAEBQgsKCV9zdWJ0aXRsZUIKCghfbWVzc2FnZUIMCgpfaW1hZ2VfdXJsQgsKCV9vcGVuX3VybEISChBfZW1haWxfYm9keV9odG1sIqQCCiJHZXRTZW50Tm90aWZpY2F0aW9uTWVzc2FnZXNSZXF1ZXN0EiQKF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJSACIAQESMwoKc3RhcnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIxCghlbmRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIgChNpbmNsdWRlX2V4cG9ydF9kYXRhGAQgASgISAOIAQFCGgoYX25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkQg0KC19zdGFydF90aW1lQgsKCV9lbmRfdGltZUIWChRfaW5jbHVkZV9leHBvcnRfZGF0YSLhAwojR2V0U2VudE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USWQoHc3VjY2VzcxgBIAEoCzJGLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFNlbnROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGigKGE5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0cxIMCgRzZW50GAEgASgFGusBCgZSZXN1bHQSTgoVbm90aWZpY2F0aW9uX21lc3NhZ2VzGAEgAygLMi8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZRJnCgVzdGF0cxgCIAEoCzJYLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFNlbnROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlLk5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0cxIYCgtleHBvcnRfZGF0YRgDIAEoDEgAiAEBQg4KDF9leHBvcnRfZGF0YUIICgZyZXN1bHQi+gEKH1JlYWROb3RpZmljYXRpb25NZXNzYWdlc1JlcXVlc3QSJAoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYASABKAlIAIgBARIWCglwYWdlX3NpemUYAiABKAVIAYgBARIXCgpwYWdlX3Rva2VuGAMgASgJSAKIAQESRwoIc3RhdHVzZXMYBCADKA4yNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlU3RhdHVzQhoKGF9ub3RpZmljYXRpb25fbWVzc2FnZV9pZEIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuItIECiBVcGRhdGVOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCRJFCgZzdGF0dXMYAiABKA4yNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlU3RhdHVzEisKB3NlbmRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXRpdGxlGAQgASgJEhUKCHN1YnRpdGxlGAUgASgJSACIAQESFAoHbWVzc2FnZRgGIAEoCUgBiAEBEhYKCWltYWdlX3VybBgHIAEoCUgCiAEBEg4KBmdyb3VwcxgIIAMoCRIQCghwcm9kdWN0cxgJIAMoCRINCgV1c2VycxgKIAMoCRIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYCyABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYDCABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGA0gASgIEhoKDWVycm9yX21lc3NhZ2UYDiABKAlIA4gBARIVCghvcGVuX3VybBgPIAEoCUgEiAEBEhwKD2VtYWlsX2JvZHlfaHRtbBgQIAEoCUgFiAEBQgsKCV9zdWJ0aXRsZUIKCghfbWVzc2FnZUIMCgpfaW1hZ2VfdXJsQhAKDl9lcnJvcl9tZXNzYWdlQgsKCV9vcGVuX3VybEISChBfZW1haWxfYm9keV9odG1sIkMKIENhbmNlbE5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJIkYKI0R1cGxpY2F0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJIkwKKVJldHJ5RmFpbGVkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJIoYCCipSZXRyeUZhaWxlZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVzcG9uc2USYAoHc3VjY2VzcxgBIAEoCzJNLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJldHJ5RmFpbGVkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABotCgZSZXN1bHQSEAoIcmVxdWV1ZWQYASABKAUSEQoJZXhoYXVzdGVkGAIgASgFQggKBnJlc3VsdCJGCiNHZXROb3RpZmljYXRpb25NZXNzYWdlUmVwb3J0UmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCSL6AgokR2V0Tm90aWZpY2F0aW9uTWVzc2FnZVJlcG9ydFJlc3BvbnNlEloKB3N1Y2Nlc3MYASABKAsyRy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25NZXNzYWdlUmVwb3J0UmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAarAEKBlJlc3VsdBJNChRub3RpZmljYXRpb25fbWVzc2FnZRgBIAEoCzIvLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2USPwoFc3RhdHMYAiABKAsyMC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5NZXNzYWdlRGVsaXZlcnlTdGF0cxISCgpyZWNpcGllbnRzGAMgASgFQggKBnJlc3VsdCJDCiBEZWxldGVOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCSK2AgogUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USVgoHc3VjY2VzcxgBIAEoCzJDLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGnEKBlJlc3VsdBJOChVub3RpZmljYXRpb25fbWVzc2FnZXMYASADKAsyLy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCUIICgZyZXN1bHQi5AEKG05vdGlmaWNhdGlvbk1lc3NhZ2VSZXNwb25zZRJRCgdzdWNjZXNzGAEgASgLMj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGikKBlJlc3VsdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCUIICgZyZXN1bHQikgIKI0NyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0EkgKBnN0YXR1cxgBIAEoDjI4LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JTdGF0dXMSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLY3VzdG9tZXJfaWQYAyABKAkSHwoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYBCABKAkSEAoIcHJpb3JpdHkYBSADKAkSGgoNZXJyb3JfbWVzc2FnZRgGIAEoCUgAiAEBQhAKDl9lcnJvcl9tZXNzYWdlIuUEChROb3RpZmljYXRpb25EZWxpdmVyeRIgChhub3RpZmljYXRpb25fZGVsaXZlcnlfaWQYASABKAkSHwoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYAiABKAkSEwoLY3VzdG9tZXJfaWQYAyABKAkSGwoOcmVjaXBpZW50X25hbWUYBCABKAlIAIgBARIXCg9yZWNpcGllbnRfZW1haWwYBSABKAkSSAoHY2hhbm5lbBgGIAEoDjI3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkRlbGl2ZXJ5Q2hhbm5lbBJGCgZzdGF0dXMYByABKA4yNi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25EZWxpdmVyeVN0YXR1cxIwCgdzZW50X2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjUKDGRlbGl2ZXJlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIyCglvcGVuZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAOIAQESGgoNZXJyb3JfbWVzc2FnZRgLIAEoCUgEiAEBEhIKCm9wZW5fY291bnQYDCABKAUSEAoIYXR0ZW1wdHMYDSABKAVCEQoPX3JlY2lwaWVudF9uYW1lQgoKCF9zZW50X2F0Qg8KDV9kZWxpdmVyZWRfYXRCDAoKX29wZW5lZF9hdEIQCg5fZXJyb3JfbWVzc2FnZSLIAwoiUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVxdWVzdBIoChtub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWQYASABKAlIAIgBARIkChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgCIAEoCUgBiAEBEk0KB2NoYW5uZWwYAyABKA4yNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25EZWxpdmVyeUNoYW5uZWxIAogBARJNCgdvdXRjb21lGAQgASgOMjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uRGVsaXZlcnlPdXRjb21lSAOIAQESEwoGc2VhcmNoGAUgASgJSASIAQESEQoEcGFnZRgGIAEoBUgFiAEBEhYKCXBhZ2Vfc2l6ZRgHIAEoBUgGiAEBQh4KHF9ub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWRCGgoYX25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkQgoKCF9jaGFubmVsQgoKCF9vdXRjb21lQgkKB19zZWFyY2hCBwoFX3BhZ2VCDAoKX3BhZ2Vfc2l6ZSLvAQojVXBkYXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlcXVlc3QSIwobbm90aWZpY2F0aW9uX21lc3NhZ2Vfam9iX2lkGAEgASgJEkgKBnN0YXR1cxgCIAEoDjI4LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JTdGF0dXMSKwoHc2VudF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoNZXJyb3JfbWVzc2FnZRgEIAEoCUgAiAEBQhAKDl9lcnJvcl9tZXNzYWdlIkoKI0RlbGV0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0EiMKG25vdGlmaWNhdGlvbl9tZXNzYWdlX2pvYl9pZBgBIAEoCSLRBQojUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVzcG9uc2USWQoHc3VjY2VzcxgBIAEoCzJGLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25NZXNzYWdlSm9ic1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGqoCChZOb3RpZmljYXRpb25NZXNzYWdlSm9iEiMKG25vdGlmaWNhdGlvbl9tZXNzYWdlX2pvYl9pZBgBIAEoCRJICgZzdGF0dXMYAiABKA4yOC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlSm9iU3RhdHVzEisKB3NlbnRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2N1c3RvbWVyX2lkGAQgASgJEh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAUgASgJEhAKCHByaW9yaXR5GAYgAygJEhoKDWVycm9yX21lc3NhZ2UYByABKAlIAIgBAUIQCg5fZXJyb3JfbWVzc2FnZRrYAQoGUmVzdWx0EnkKGW5vdGlmaWNhdGlvbl9tZXNzYWdlX2pvYnMYASADKAsyVi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXNwb25zZS5Ob3RpZmljYXRpb25NZXNzYWdlSm9iEkQKCmRlbGl2ZXJpZXMYAiADKAsyMC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25EZWxpdmVyeRINCgV0b3RhbBgDIAEoBUIICgZyZXN1bHQi7gEKHk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXNwb25zZRJUCgdzdWNjZXNzGAEgASgLMkEuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGi0KBlJlc3VsdBIjChtub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWQYASABKAlCCAoGcmVzdWx0ItACCgRVc2VyEhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJEhcKCmZpcnN0X25hbWUYAyABKAlIAIgBARIWCglsYXN0X25hbWUYBCABKAlIAYgBARIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYBiABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAcgASgIEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEh0KEGlzX2FwcF9pbnN0YWxsZWQYCSABKAhIAogBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQhMKEV9pc19hcHBfaW5zdGFsbGVkIjYKH1JlYWROb3RpZmljYXRpb25Qcm9kdWN0c1JlcXVlc3QSEwoLcHJvZHVjdF9pZHMYASADKAkisQEKJlByZXZpZXdOb3RpZmljYXRpb25NZXNzYWdlRW1haWxSZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhQKB21lc3NhZ2UYAiABKAlIAIgBARIcCg9lbWFpbF9ib2R5X2h0bWwYAyABKAlIAYgBARIWCglpbWFnZV91cmwYBCABKAlIAogBAUIKCghfbWVzc2FnZUISChBfZW1haWxfYm9keV9odG1sQgwKCl9pbWFnZV91cmwimwIKJ1ByZXZpZXdOb3RpZmljYXRpb25NZXNzYWdlRW1haWxSZXNwb25zZRJdCgdzdWNjZXNzGAEgASgLMkouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUHJldmlld05vdGlmaWNhdGlvbk1lc3NhZ2VFbWFpbFJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGkgKBlJlc3VsdBIPCgdzdWJqZWN0GAEgASgJEhEKCXByZWhlYWRlchgCIAEoCRIMCgRodG1sGAMgASgJEgwKBHRleHQYBCABKAlCCAoGcmVzdWx0IlQKIUdldFByb2plY3RlZFJlY2lwaWVudENvdW50UmVxdWVzdBIOCgZncm91cHMYASADKAkSEAoIcHJvZHVjdHMYAiADKAkSDQoFdXNlcnMYAyADKAkicQoiR2V0UHJvamVjdGVkUmVjaXBpZW50Q291bnRSZXNwb25zZRINCgV0b3RhbBgBIAEoBRITCgtlbWFpbF9jb3VudBgCIAEoBRIRCglzbXNfY291bnQYAyABKAUSFAoMbW9iaWxlX2NvdW50GAQgASgFIqEBChtHZXROb3RpZmljYXRpb25TdGF0c1JlcXVlc3QSMwoKc3RhcnRfdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIxCghlbmRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUINCgtfc3RhcnRfdGltZUILCglfZW5kX3RpbWUi7AUKHEdldE5vdGlmaWNhdGlvblN0YXRzUmVzcG9uc2USUgoHc3VjY2VzcxgBIAEoCzI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblN0YXRzUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAadwoPU3RhdHVzQnJlYWtkb3duEg4KBmRyYWZ0cxgBIAEoBRIPCgdwbGFubmVkGAIgASgFEhMKC2luX3Byb2dyZXNzGAMgASgFEgwKBHNlbnQYBCABKAUSDQoFZXJyb3IYBSABKAUSEQoJY2FuY2VsbGVkGAYgASgFGj4KEENoYW5uZWxCcmVha2Rvd24SDgoGbW9iaWxlGAEgASgFEg0KBWVtYWlsGAIgASgFEgsKA3NtcxgDIAEoBRosCg1UaW1lbGluZVBvaW50EgwKBGRhdGUYASABKAkSDQoFY291bnQYAiABKAUaxwIKBlJlc3VsdBJiChBzdGF0dXNfYnJlYWtkb3duGAEgASgLMkguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uU3RhdHNSZXNwb25zZS5TdGF0dXNCcmVha2Rvd24SZAoRY2hhbm5lbF9icmVha2Rvd24YAiABKAsySS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25TdGF0c1Jlc3BvbnNlLkNoYW5uZWxCcmVha2Rvd24SWAoIdGltZWxpbmUYAyADKAsyRi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25TdGF0c1Jlc3BvbnNlLlRpbWVsaW5lUG9pbnQSGQoRdG90YWxfc3Vic2NyaWJlcnMYBCABKAVCCAoGcmVzdWx0KmgKGU5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0dXMSCQoFRFJBRlQQABILCgdQTEFOTkVEEAESDwoLSU5fUFJPR1JFU1MQAhIICgRTRU5UEAMSCQoFRVJST1IQBBINCglDQU5DRUxMRUQQBSrOAQocTm90aWZpY2F0aW9uTWVzc2FnZUpvYlN0YXR1cxIoCiROT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfU1RBVFVTX1RPRE8QABIvCitOT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfU1RBVFVTX0lOX1BST0dSRVNTEAESKAokTk9USUZJQ0FUSU9OX01FU1NBR0VfSk9CX1NUQVRVU19TRU5UEAISKQolTk9USUZJQ0FUSU9OX01FU1NBR0VfSk9CX1NUQVRVU19FUlJPUhADKsYBChtOb3RpZmljYXRpb25EZWxpdmVyeUNoYW5uZWwSLQopTk9USUZJQ0FUSU9OX0RFTElWRVJZX0NIQU5ORUxfVU5TUEVDSUZJRUQQABInCiNOT1RJRklDQVRJT05fREVMSVZFUllfQ0hBTk5FTF9FTUFJTBABEigKJE5PVElGSUNBVElPTl9ERUxJVkVSWV9DSEFOTkVMX01PQklMRRACEiUKIU5PVElGSUNBVElPTl9ERUxJVkVSWV9DSEFOTkVMX1NNUxADKu4BChpOb3RpZmljYXRpb25EZWxpdmVyeVN0YXR1cxIsCihOT1RJRklDQVRJT05fREVMSVZFUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASKAokTk9USUZJQ0FUSU9OX0RFTElWRVJZX1NUQVRVU19QRU5ESU5HEAESJQohTk9USUZJQ0FUSU9OX0RFTElWRVJZX1NUQVRVU19TRU5UEAISJwojTk9USUZJQ0FUSU9OX0RFTElWRVJZX1NUQVRVU19GQUlMRUQQAxIoCiROT1RJRklDQVRJT05fREVMSVZFUllfU1RBVFVTX1NLSVBQRUQQBCrAAQobTm90aWZpY2F0aW9uRGVsaXZlcnlPdXRjb21lEiUKIU5PVElGSUNBVElPTl9ERUxJVkVSWV9PVVRDT01FX0FOWRAAEiYKIk5PVElGSUNBVElPTl9ERUxJVkVSWV9PVVRDT01FX1NFTlQQARIoCiROT1RJRklDQVRJT05fREVMSVZFUllfT1VUQ09NRV9GQUlMRUQQAhIoCiROT1RJRklDQVRJT05fREVMSVZFUllfT1VUQ09NRV9PUEVORUQQAyrPEQoORmFpbHVyZU1lc3NhZ2USGwoXRkFJTFVSRV9NRVNTQUdFX1VOS05PV04QABIlCiFGQUlMVVJFX01FU1NBR0VfUFJPSkVDVF9OT1RfRk9VTkQQARIyCi5GQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1NFVFRJTkdfTk9UX0ZPVU5EEAISNgoyRkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fU0VUVElOR19GQUlMRUQQAxI2CjJGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9TRVRUSU5HX0ZBSUxFRBAEEjYKMkZBSUxVUkVfTUVTU0FHRV9ERUxFVEVfTk9USUZJQ0FUSU9OX1NFVFRJTkdfRkFJTEVEEAUSMAosRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9HUk9VUF9OT1RfRk9VTkQQBhIxCi1GQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX0dST1VQU19OT1RfRk9VTkQQBxI0CjBGQUlMVVJFX01FU1NBR0VfQ1JFQVRFX05PVElGSUNBVElPTl9HUk9VUF9GQUlMRUQQCBI0CjBGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9HUk9VUF9GQUlMRUQQCRI0CjBGQUlMVVJFX01FU1NBR0VfREVMRVRFX05PVElGSUNBVElPTl9HUk9VUF9GQUlMRUQQChIvCitGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1VTRVJfTk9UX0ZPVU5EEAsSMAosRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9VU0VSU19OT1RfRk9VTkQQDBIzCi9GQUlMVVJFX01FU1NBR0VfQ1JFQVRFX05PVElGSUNBVElPTl9VU0VSX0ZBSUxFRBANEjMKL0ZBSUxVUkVfTUVTU0FHRV9VUERBVEVfTk9USUZJQ0FUSU9OX1VTRVJfRkFJTEVEEA4SMwovRkFJTFVSRV9NRVNTQUdFX0RFTEVURV9OT1RJRklDQVRJT05fVVNFUl9GQUlMRUQQDxI1CjFGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX0dST1VQX1VTRVJfTk9UX0ZPVU5EEBASOQo1RkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fR1JPVVBfVVNFUl9GQUlMRUQQERI5CjVGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9HUk9VUF9VU0VSX0ZBSUxFRBASEjkKNUZBSUxVUkVfTUVTU0FHRV9ERUxFVEVfTk9USUZJQ0FUSU9OX0dST1VQX1VTRVJfRkFJTEVEEBMSMgouRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9NRVNTQUdFX05PVF9GT1VORBAUEjMKL0ZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRVNfTk9UX0ZPVU5EEBUSNgoyRkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fTUVTU0FHRV9GQUlMRUQQFhI2CjJGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0ZBSUxFRBAXEjYKMkZBSUxVUkVfTUVTU0FHRV9ERUxFVEVfTk9USUZJQ0FUSU9OX01FU1NBR0VfRkFJTEVEEBgSNgoyRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9OT1RfRk9VTkQQGRI3CjNGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX01FU1NBR0VfSk9CU19OT1RfRk9VTkQQGhI6CjZGQUlMVVJFX01FU1NBR0VfQ1JFQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9GQUlMRUQQGxI6CjZGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9GQUlMRUQQHBI6CjZGQUlMVVJFX01FU1NBR0VfREVMRVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9GQUlMRUQQHRI2CjJGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1NFVFRJTkdfQUxSRUFEWV9FWElTVBAeEjsKN0ZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fU0VUVElOR19TTFVHX0FMUkVBRFlfVEFLRU4QHxIzCi9GQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1VTRVJfQUxSRUFEWV9FWElTVBAgEjQKMEZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fR1JPVVBfQUxSRUFEWV9FWElTVBAhEjgKNEZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRV9OT1RfQ0FOQ0VMTEFCTEUQIhI2CjJGQUlMVVJFX01FU1NBR0VfQ0FOQ0VMX05PVElGSUNBVElPTl9NRVNTQUdFX0ZBSUxFRBAjEjUKMUZBSUxVUkVfTUVTU0FHRV9SRVRSWV9OT1RJRklDQVRJT05fTUVTU0FHRV9GQUlMRUQQJBI5CjVGQUlMVVJFX01FU1NBR0VfRFVQTElDQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0ZBSUxFRBAlEjUKMUZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRV9OT1RfRURJVEFCTEUQJhIoCiRGQUlMVVJFX01FU1NBR0VfRU1BSUxfUVVPVEFfRVhDRUVERUQQJxIoCiRGQUlMVVJFX01FU1NBR0VfRU1BSUxfUFJFVklFV19GQUlMRUQQKBInCiNGQUlMVVJFX01FU1NBR0VfRU1BSUxfQk9EWV9UT09fTE9ORxApMpwrChROb3RpZmljYXRpb25zU2VydmljZRKSAQoZQ3JlYXRlTm90aWZpY2F0aW9uU2V0dGluZxI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlEpIBChdSZWFkTm90aWZpY2F0aW9uU2V0dGluZxI6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdBo7LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25TZXR0aW5nUmVzcG9uc2USkgEKGVVwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmcSPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdBo3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblNldHRpbmdSZXNwb25zZRKSAQoZRGVsZXRlTm90aWZpY2F0aW9uU2V0dGluZxI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlEowBChdDcmVhdGVOb3RpZmljYXRpb25Hcm91cBI6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBo1LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwUmVzcG9uc2USjwEKFlJlYWROb3RpZmljYXRpb25Hcm91cHMSOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBzUmVxdWVzdBo6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Hcm91cHNSZXNwb25zZRKMAQoXVXBkYXRlTm90aWZpY2F0aW9uR3JvdXASOi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25Hcm91cFJlcXVlc3QaNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFJlc3BvbnNlEowBChdEZWxldGVOb3RpZmljYXRpb25Hcm91cBI6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBo1LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwUmVzcG9uc2USiQEKFkNyZWF0ZU5vdGlmaWNhdGlvblVzZXISOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DcmVhdGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBo0LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblVzZXJSZXNwb25zZRKMAQoVUmVhZE5vdGlmaWNhdGlvblVzZXJzEjguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvblVzZXJzUmVxdWVzdBo5LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Vc2Vyc1Jlc3BvbnNlEokBChZVcGRhdGVOb3RpZmljYXRpb25Vc2VyEjkuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uVXNlclJlcXVlc3QaNC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Vc2VyUmVzcG9uc2USiQEKFkRlbGV0ZU5vdGlmaWNhdGlvblVzZXISOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBo0LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblVzZXJSZXNwb25zZRKYAQobQ3JlYXRlTm90aWZpY2F0aW9uR3JvdXBVc2VyEj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuQ3JlYXRlTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVxdWVzdBo5LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwVXNlclJlc3BvbnNlEpwBChpSZWFkTm90aWZpY2F0aW9uR3JvdXBVc2VycxI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Hcm91cFVzZXJzUmVxdWVzdHMaPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1Jlc3BvbnNlEpgBChtVcGRhdGVOb3RpZmljYXRpb25Hcm91cFVzZXISPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0GjkuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVzcG9uc2USmAEKG0RlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlchI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlclJlcXVlc3QaOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFVzZXJSZXNwb25zZRKSAQoZQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZRI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlEpUBChhSZWFkTm90aWZpY2F0aW9uTWVzc2FnZXMSOy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uTWVzc2FnZXNSZXF1ZXN0GjwuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USngEKG0dldFNlbnROb3RpZmljYXRpb25NZXNzYWdlcxI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFNlbnROb3RpZmljYXRpb25NZXNzYWdlc1JlcXVlc3QaPy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXRTZW50Tm90aWZpY2F0aW9uTWVzc2FnZXNSZXNwb25zZRKSAQoZVXBkYXRlTm90aWZpY2F0aW9uTWVzc2FnZRI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlEpIBChlEZWxldGVOb3RpZmljYXRpb25NZXNzYWdlEjwuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZVJlcXVlc3QaNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlUmVzcG9uc2USkgEKGUNhbmNlbE5vdGlmaWNhdGlvbk1lc3NhZ2USPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DYW5jZWxOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBo3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VSZXNwb25zZRKzAQoiUmV0cnlGYWlsZWROb3RpZmljYXRpb25NZXNzYWdlSm9icxJFLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJldHJ5RmFpbGVkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXF1ZXN0GkYuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmV0cnlGYWlsZWROb3RpZmljYXRpb25NZXNzYWdlSm9ic1Jlc3BvbnNlEpgBChxEdXBsaWNhdGVOb3RpZmljYXRpb25NZXNzYWdlEj8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRHVwbGljYXRlTm90aWZpY2F0aW9uTWVzc2FnZVJlcXVlc3QaNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlUmVzcG9uc2USoQEKHEdldE5vdGlmaWNhdGlvbk1lc3NhZ2VSZXBvcnQSPy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25NZXNzYWdlUmVwb3J0UmVxdWVzdBpALmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvbk1lc3NhZ2VSZXBvcnRSZXNwb25zZRKbAQocQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYhI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0GjouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlc3BvbnNlEp4BChtSZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnMSPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXF1ZXN0Gj8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVzcG9uc2USmwEKHFVwZGF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2ISPy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25NZXNzYWdlSm9iUmVxdWVzdBo6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXNwb25zZRKbAQocRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYhI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0GjouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlc3BvbnNlEoUBChhSZWFkTm90aWZpY2F0aW9uUHJvZHVjdHMSOy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uUHJvZHVjdHNSZXF1ZXN0GiwuZGFzaGJvYXJkLnByb2R1Y3QudjEuU2VhcmNoUHJvZHVjdHNSZXNwb25zZRKeAQobR2V0Tm90aWZpY2F0aW9uVXNlclNldHRpbmdzEj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uVXNlclNldHRpbmdzUmVxdWVzdBo/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblVzZXJTZXR0aW5nc1Jlc3BvbnNlEnoKD1ZlcmlmeVVzZXJFbWFpbBIyLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlZlcmlmeVVzZXJFbWFpbFJlcXVlc3QaMy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5WZXJpZnlVc2VyRW1haWxSZXNwb25zZRJ0Cg1HZXRVc2VyR3JvdXBzEjAuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0VXNlckdyb3Vwc1JlcXVlc3QaMS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXRVc2VyR3JvdXBzUmVzcG9uc2USXwoQVXBkYXRlVXNlckdyb3VwcxIzLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZVVzZXJHcm91cHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EpsBChpHZXRQcm9qZWN0ZWRSZWNpcGllbnRDb3VudBI9LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFByb2plY3RlZFJlY2lwaWVudENvdW50UmVxdWVzdBo+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFByb2plY3RlZFJlY2lwaWVudENvdW50UmVzcG9uc2USiQEKFEdldE5vdGlmaWNhdGlvblN0YXRzEjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uU3RhdHNSZXF1ZXN0GjguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uU3RhdHNSZXNwb25zZRKqAQofUHJldmlld05vdGlmaWNhdGlvbk1lc3NhZ2VFbWFpbBJCLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlByZXZpZXdOb3RpZmljYXRpb25NZXNzYWdlRW1haWxSZXF1ZXN0GkMuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUHJldmlld05vdGlmaWNhdGlvbk1lc3NhZ2VFbWFpbFJlc3BvbnNlYgZwcm90bzM",[K,Q,h,A]);var T=(e=>(e[e.UNKNOWN=0]="UNKNOWN",e[e.PROJECT_NOT_FOUND=1]="PROJECT_NOT_FOUND",e[e.NOTIFICATION_SETTING_NOT_FOUND=2]="NOTIFICATION_SETTING_NOT_FOUND",e[e.CREATE_NOTIFICATION_SETTING_FAILED=3]="CREATE_NOTIFICATION_SETTING_FAILED",e[e.UPDATE_NOTIFICATION_SETTING_FAILED=4]="UPDATE_NOTIFICATION_SETTING_FAILED",e[e.DELETE_NOTIFICATION_SETTING_FAILED=5]="DELETE_NOTIFICATION_SETTING_FAILED",e[e.NOTIFICATION_GROUP_NOT_FOUND=6]="NOTIFICATION_GROUP_NOT_FOUND",e[e.NOTIFICATION_GROUPS_NOT_FOUND=7]="NOTIFICATION_GROUPS_NOT_FOUND",e[e.CREATE_NOTIFICATION_GROUP_FAILED=8]="CREATE_NOTIFICATION_GROUP_FAILED",e[e.UPDATE_NOTIFICATION_GROUP_FAILED=9]="UPDATE_NOTIFICATION_GROUP_FAILED",e[e.DELETE_NOTIFICATION_GROUP_FAILED=10]="DELETE_NOTIFICATION_GROUP_FAILED",e[e.NOTIFICATION_USER_NOT_FOUND=11]="NOTIFICATION_USER_NOT_FOUND",e[e.NOTIFICATION_USERS_NOT_FOUND=12]="NOTIFICATION_USERS_NOT_FOUND",e[e.CREATE_NOTIFICATION_USER_FAILED=13]="CREATE_NOTIFICATION_USER_FAILED",e[e.UPDATE_NOTIFICATION_USER_FAILED=14]="UPDATE_NOTIFICATION_USER_FAILED",e[e.DELETE_NOTIFICATION_USER_FAILED=15]="DELETE_NOTIFICATION_USER_FAILED",e[e.NOTIFICATION_GROUP_USER_NOT_FOUND=16]="NOTIFICATION_GROUP_USER_NOT_FOUND",e[e.CREATE_NOTIFICATION_GROUP_USER_FAILED=17]="CREATE_NOTIFICATION_GROUP_USER_FAILED",e[e.UPDATE_NOTIFICATION_GROUP_USER_FAILED=18]="UPDATE_NOTIFICATION_GROUP_USER_FAILED",e[e.DELETE_NOTIFICATION_GROUP_USER_FAILED=19]="DELETE_NOTIFICATION_GROUP_USER_FAILED",e[e.NOTIFICATION_MESSAGE_NOT_FOUND=20]="NOTIFICATION_MESSAGE_NOT_FOUND",e[e.NOTIFICATION_MESSAGES_NOT_FOUND=21]="NOTIFICATION_MESSAGES_NOT_FOUND",e[e.CREATE_NOTIFICATION_MESSAGE_FAILED=22]="CREATE_NOTIFICATION_MESSAGE_FAILED",e[e.UPDATE_NOTIFICATION_MESSAGE_FAILED=23]="UPDATE_NOTIFICATION_MESSAGE_FAILED",e[e.DELETE_NOTIFICATION_MESSAGE_FAILED=24]="DELETE_NOTIFICATION_MESSAGE_FAILED",e[e.NOTIFICATION_MESSAGE_JOB_NOT_FOUND=25]="NOTIFICATION_MESSAGE_JOB_NOT_FOUND",e[e.NOTIFICATION_MESSAGE_JOBS_NOT_FOUND=26]="NOTIFICATION_MESSAGE_JOBS_NOT_FOUND",e[e.CREATE_NOTIFICATION_MESSAGE_JOB_FAILED=27]="CREATE_NOTIFICATION_MESSAGE_JOB_FAILED",e[e.UPDATE_NOTIFICATION_MESSAGE_JOB_FAILED=28]="UPDATE_NOTIFICATION_MESSAGE_JOB_FAILED",e[e.DELETE_NOTIFICATION_MESSAGE_JOB_FAILED=29]="DELETE_NOTIFICATION_MESSAGE_JOB_FAILED",e[e.NOTIFICATION_SETTING_ALREADY_EXIST=30]="NOTIFICATION_SETTING_ALREADY_EXIST",e[e.NOTIFICATION_SETTING_SLUG_ALREADY_TAKEN=31]="NOTIFICATION_SETTING_SLUG_ALREADY_TAKEN",e[e.NOTIFICATION_USER_ALREADY_EXIST=32]="NOTIFICATION_USER_ALREADY_EXIST",e[e.NOTIFICATION_GROUP_ALREADY_EXIST=33]="NOTIFICATION_GROUP_ALREADY_EXIST",e[e.NOTIFICATION_MESSAGE_NOT_CANCELLABLE=34]="NOTIFICATION_MESSAGE_NOT_CANCELLABLE",e[e.CANCEL_NOTIFICATION_MESSAGE_FAILED=35]="CANCEL_NOTIFICATION_MESSAGE_FAILED",e[e.RETRY_NOTIFICATION_MESSAGE_FAILED=36]="RETRY_NOTIFICATION_MESSAGE_FAILED",e[e.DUPLICATE_NOTIFICATION_MESSAGE_FAILED=37]="DUPLICATE_NOTIFICATION_MESSAGE_FAILED",e[e.NOTIFICATION_MESSAGE_NOT_EDITABLE=38]="NOTIFICATION_MESSAGE_NOT_EDITABLE",e[e.EMAIL_QUOTA_EXCEEDED=39]="EMAIL_QUOTA_EXCEEDED",e[e.EMAIL_PREVIEW_FAILED=40]="EMAIL_PREVIEW_FAILED",e[e.EMAIL_BODY_TOO_LONG=41]="EMAIL_BODY_TOO_LONG",e))(T||{});var s=k(z,0);var P=s.method.createNotificationSetting,H=s.method.readNotificationSetting,j=s.method.updateNotificationSetting,L=s.method.deleteNotificationSetting,q=s.method.createNotificationGroup,w=s.method.readNotificationGroups,O=s.method.updateNotificationGroup,D=s.method.deleteNotificationGroup,_=s.method.createNotificationUser,$=s.method.readNotificationUsers,ee=s.method.updateNotificationUser,te=s.method.deleteNotificationUser,se=s.method.createNotificationGroupUser,oe=s.method.readNotificationGroupUsers,ne=s.method.updateNotificationGroupUser,ae=s.method.deleteNotificationGroupUser,ie=s.method.createNotificationMessage,ce=s.method.readNotificationMessages,de=s.method.getSentNotificationMessages,ue=s.method.updateNotificationMessage,re=s.method.deleteNotificationMessage,le=s.method.cancelNotificationMessage,Re=s.method.retryFailedNotificationMessageJobs,pe=s.method.duplicateNotificationMessage,ge=s.method.getNotificationMessageReport,me=s.method.createNotificationMessageJob,be=s.method.readNotificationMessageJobs,Ge=s.method.updateNotificationMessageJob,Ae=s.method.deleteNotificationMessageJob,Ve=s.method.readNotificationProducts,Ze=s.method.getNotificationUserSettings,he=s.method.verifyUserEmail,Ne=s.method.getUserGroups,Se=s.method.updateUserGroups,We=s.method.getProjectedRecipientCount,fe=s.method.getNotificationStats,Ye=s.method.previewNotificationMessageEmail;var p={};l(p,{addPublicOrderComment:()=>pt,applePayValidateMerchant:()=>ut,authorizeOneClickPayment:()=>rt,clearAppStoreAccountToken:()=>De,didBuyProduct:()=>je,getAppStoreAccountToken:()=>Le,getAppStoreEntitlements:()=>we,getAvailableCountForProduct:()=>nt,getGuestCatalog:()=>Te,getLoginBranding:()=>it,getNotificationHistory:()=>ot,getNotificationSettings:()=>$e,getNotificationSettingsDetails:()=>et,getOrder:()=>Xe,getOrderForTestimonial:()=>gt,getOrderRetryUrl:()=>Fe,getOrders:()=>Ee,getPreOrderDetails:()=>dt,getPublicOrderDetails:()=>Rt,getShopProducts:()=>He,getStoreKitCatalog:()=>_e,getTestimonialUploadUrl:()=>bt,getThankYouPage:()=>at,isOneClickPaymentAvailable:()=>ct,notifyUserAboutProductAvailability:()=>lt,pushEvent:()=>Qe,pushSendDeviceToken:()=>ke,restoreAppStorePurchases:()=>Oe,shouldShopProducts:()=>Ke,shouldShowGuestCatalog:()=>ze,submitTestimonial:()=>mt,updateGlobalNotificationSettings:()=>tt,updateNotificationSettings:()=>st,userPanelDeleteAccount:()=>Je,userPanelGetAudiobookDetails:()=>ve,userPanelGetAudiobookDetailsDownloadURLs:()=>Ce,userPanelGetFileDetails:()=>Me,userPanelGetProducts:()=>Ie,userPanelGetTicketDetails:()=>xe,userPanelLogin:()=>Ue,userPanelLoginWithCode:()=>ye,userPanelLogout:()=>Be,userPanelResolveProductAccess:()=>Pe,verifyAppStorePurchase:()=>qe});var Xe=t.method.getOrder,Ee=t.method.getOrders,Fe=t.method.getOrderRetryUrl,Ue=t.method.userPanelLogin,ye=t.method.userPanelLoginWithCode,Be=t.method.userPanelLogout,Je=t.method.userPanelDeleteAccount,Ie=t.method.userPanelGetProducts,ve=t.method.userPanelGetAudiobookDetails,Ce=t.method.userPanelGetAudiobookDetailsDownloadURLs,Me=t.method.userPanelGetFileDetails,xe=t.method.userPanelGetTicketDetails,ke=t.method.pushSendDeviceToken,Qe=t.method.pushEvent,Ke=t.method.shouldShopProducts,ze=t.method.shouldShowGuestCatalog,Te=t.method.getGuestCatalog,Pe=t.method.userPanelResolveProductAccess,He=t.method.getShopProducts,je=t.method.didBuyProduct,Le=t.method.getAppStoreAccountToken,qe=t.method.verifyAppStorePurchase,we=t.method.getAppStoreEntitlements,Oe=t.method.restoreAppStorePurchases,De=t.method.clearAppStoreAccountToken,_e=t.method.getStoreKitCatalog,$e=t.method.getNotificationSettings,et=t.method.getNotificationSettingsDetails,tt=t.method.updateGlobalNotificationSettings,st=t.method.updateNotificationSettings,ot=t.method.getNotificationHistory,nt=t.method.getAvailableCountForProduct,at=t.method.getThankYouPage,it=t.method.getLoginBranding,ct=t.method.isOneClickPaymentAvailable,dt=t.method.getPreOrderDetails,ut=t.method.applePayValidateMerchant,rt=t.method.authorizeOneClickPayment,lt=t.method.notifyUserAboutProductAvailability,Rt=t.method.getPublicOrderDetails,pt=t.method.addPublicOrderComment,gt=t.method.getOrderForTestimonial,mt=t.method.submitTestimonial,bt=t.method.getTestimonialUploadUrl;var g={};l(g,{createReturnRequest:()=>Nt,exchangePanelSession:()=>Vt,getMyReturn:()=>Wt,getReturnableOrder:()=>ht,listMyReturns:()=>St,listReturnOrders:()=>Zt,startReturnSession:()=>Gt,verifyReturnSession:()=>At});var Gt=i.method.startReturnSession,At=i.method.verifyReturnSession,Vt=i.method.exchangePanelSession,Zt=i.method.listReturnOrders,ht=i.method.getReturnableOrder,Nt=i.method.createReturnRequest,St=i.method.listMyReturns,Wt=i.method.getMyReturn;import{jsx as W}from"react/jsx-runtime";var N,m;BigInt.prototype.toJSON=function(){return this.toString()};var Ws={publicApi:p,notifications:R,returns:g},fs=Xt,Ys=Yt,Bt;function Jt(){return Bt??V}function f(a){return Et({baseUrl:a+"/api/rpc",useBinaryFormat:!0,interceptors:[G],fetch:async(o,n)=>fetch(o,{...n,keepalive:!1,credentials:"include"})})}var S=new Map;function Xs(a){let o=S.get(a);return o==null&&(o=f(a),S.set(a,o)),o}var Es=({children:a})=>{let o=Jt();(m==null||N!==o)&&(N=o,m=f(o));let[n]=yt(()=>new Ft({defaultOptions:{queries:{staleTime:5e3}}}));return W(ft,{transport:m,children:W(Ut,{client:n,children:a})})};import{cva as It}from"class-variance-authority";import{Slot as vt}from"radix-ui";import{jsx as Mt}from"react/jsx-runtime";var Ct=It("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function Is({className:a,variant:o="default",size:n="default",asChild:c=!1,...u}){let r=c?vt.Root:"button";return Mt(r,{"data-slot":"button","data-variant":o,"data-size":n,className:d(Ct({variant:o,size:n,className:a})),...u})}import{jsx as xt}from"react/jsx-runtime";function xs({className:a,type:o,...n}){return xt("input",{type:o,"data-slot":"input",className:d("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...n})}function kt(a){let o=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(a);if(o==null)return;let n=o[1];return n.length<=4&&(n=n.split("").map(c=>c+c).join("")),[parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)]}function Qt(a){let o=/^rgba?\(\s*(\d{1,3})[\s,]+(\d{1,3})[\s,]+(\d{1,3})(?:[\s,/]+[\d.%]+)?\s*\)$/i.exec(a);if(o==null)return;let n=[o[1],o[2],o[3]].map(Number);return n.every(c=>c<=255)?n:void 0}function Kt(a){let o=a/255;return o<=.03928?o/12.92:((o+.055)/1.055)**2.4}function zt(a){let o=a.trim(),n=kt(o)??Qt(o);if(n==null)return;let[c,u,r]=n.map(Kt),b=.2126*c+.7152*u+.0722*r,X=1.05/(b+.05),E=(b+.05)/.05;return X>=E?"#ffffff":"#18181b"}function Ks(a){let o=zt(a);return{buttonBackground:a,focusRing:a,...o!=null?{buttonForeground:o}:{}}}import*as Y from"react";import{jsx as Pt}from"react/jsx-runtime";var Tt=Y.forwardRef(({className:a,...o},n)=>Pt("textarea",{className:d("flex min-h-[60px] w-full rounded-md border border-neutral-200 bg-white px-3 py-2 text-sm ring-offset-white placeholder:text-neutral-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-neutral-800 dark:bg-neutral-950 dark:ring-offset-neutral-950 dark:placeholder:text-neutral-400 dark:focus-visible:ring-neutral-300",a),ref:n,...o}));Tt.displayName="Textarea";import{jsx as Ht}from"react/jsx-runtime";function Ls({className:a,...o}){return Ht("div",{"data-slot":"skeleton",className:d("bg-accent animate-pulse rounded-md",a),...o})}export{T as a,it as b,U as c,i as d,Ws as e,fs as f,Ys as g,Jt as h,Xs as i,Es as j,Is as k,xs as l,zt as m,Ks as n,Ls as o,Tt as p};
2
+ //# sourceMappingURL=chunk-SCEWYZUZ.mjs.map