diff --git a/build/payment_requests_settings.js b/build/payment_requests_settings.js
new file mode 100644
index 0000000..9052e27
--- /dev/null
+++ b/build/payment_requests_settings.js
@@ -0,0 +1,5 @@
+!function(t){var e={};function n(M){if(e[M])return e[M].exports;var r=e[M]={i:M,l:!1,exports:{}};return t[M].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=t,n.c=e,n.d=function(t,e,M){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:M})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var M=Object.create(null);if(n.r(M),Object.defineProperty(M,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(M,r,function(e){return t[e]}.bind(null,r));return M},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=330)}([function(t,e){t.exports=window.wp.element},function(t,e){t.exports=window.React},function(t,e){t.exports=window.wp.i18n},function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n(132))},function(t,e){t.exports=window.wp.data},function(t,e,n){"use strict";n.d(e,"a",(function(){return M})),n.d(e,"b",(function(){return r}));const M="/wc/v3/wc_stripe",r="wc/stripe"},function(t,e,n){"use strict";function M(){return(M=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var M in n)Object.prototype.hasOwnProperty.call(n,M)&&(t[M]=n[M])}return t}).apply(this,arguments)}var r=n(1),u=function(t){var e=Object.create(null);return function(n){return void 0===e[n]&&(e[n]=t(n)),e[n]}},i=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,o=u((function(t){return i.test(t)||111===t.charCodeAt(0)&&110===t.charCodeAt(1)&&t.charCodeAt(2)<91})),c=function(){function t(t){var e=this;this._insertTag=function(t){var n;n=0===e.tags.length?e.insertionPoint?e.insertionPoint.nextSibling:e.prepend?e.container.firstChild:e.before:e.tags[e.tags.length-1].nextSibling,e.container.insertBefore(t,n),e.tags.push(t)},this.isSpeedy=void 0===t.speedy||t.speedy,this.tags=[],this.ctr=0,this.nonce=t.nonce,this.key=t.key,this.container=t.container,this.prepend=t.prepend,this.insertionPoint=t.insertionPoint,this.before=null}var e=t.prototype;return e.hydrate=function(t){t.forEach(this._insertTag)},e.insert=function(t){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(t){var e=document.createElement("style");return e.setAttribute("data-emotion",t.key),void 0!==t.nonce&&e.setAttribute("nonce",t.nonce),e.appendChild(document.createTextNode("")),e.setAttribute("data-s",""),e}(this));var e=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(t){if(t.sheet)return t.sheet;for(var e=0;e<document.styleSheets.length;e++)if(document.styleSheets[e].ownerNode===t)return document.styleSheets[e]}(e);try{n.insertRule(t,n.cssRules.length)}catch(t){}}else e.appendChild(document.createTextNode(t));this.ctr++},e.flush=function(){this.tags.forEach((function(t){return t.parentNode&&t.parentNode.removeChild(t)})),this.tags=[],this.ctr=0},t}(),a="-ms-",j="-moz-",s="-webkit-",L="comm",N="rule",y="decl",g="@keyframes",l=Math.abs,D=String.fromCharCode,A=Object.assign;function S(t){return t.trim()}function I(t,e,n){return t.replace(e,n)}function T(t,e){return t.indexOf(e)}function w(t,e){return 0|t.charCodeAt(e)}function p(t,e,n){return t.slice(e,n)}function z(t){return t.length}function d(t){return t.length}function f(t,e){return e.push(t),t}var x=1,E=1,O=0,m=0,b=0,C="";function h(t,e,n,M,r,u,i){return{value:t,root:e,parent:n,type:M,props:r,children:u,line:x,column:E,length:i,return:""}}function Y(t,e){return A(h("",null,null,"",null,null,0),t,{length:-t.length},e)}function v(){return b=m>0?w(C,--m):0,E--,10===b&&(E=1,x--),b}function k(){return b=m<O?w(C,m++):0,E++,10===b&&(E=1,x++),b}function U(){return w(C,m)}function Q(){return m}function _(t,e){return p(C,t,e)}function G(t){switch(t){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function P(t){return x=E=1,O=z(C=t),m=0,[]}function R(t){return C="",t}function Z(t){return S(_(m-1,function t(e){for(;k();)switch(b){case e:return m;case 34:case 39:34!==e&&39!==e&&t(b);break;case 40:41===e&&t(e);break;case 92:k()}return m}(91===t?t+2:40===t?t+1:t)))}function W(t){for(;(b=U())&&b<33;)k();return G(t)>2||G(b)>3?"":" "}function B(t,e){for(;--e&&k()&&!(b<48||b>102||b>57&&b<65||b>70&&b<97););return _(t,Q()+(e<6&&32==U()&&32==k()))}function V(t,e){for(;k()&&t+b!==57&&(t+b!==84||47!==U()););return"/*"+_(e,m-1)+"*"+D(47===t?t:k())}function F(t){for(;!G(U());)k();return _(t,m)}function J(t,e,n,M,r,u,i,o,c,a,j){for(var s=r-1,L=0===r?u:[""],y=d(L),g=0,D=0,A=0;g<M;++g)for(var T=0,w=p(t,s+1,s=l(D=i[g])),z=t;T<y;++T)(z=S(D>0?L[T]+" "+w:I(w,/&\f/g,L[T])))&&(c[A++]=z);return h(t,e,n,0===r?N:o,c,a,j)}function H(t,e,n){return h(t,e,n,L,D(b),p(t,2,-2),0)}function X(t,e,n,M){return h(t,e,n,y,p(t,0,M),p(t,M+1,-1),M)}function $(t,e){for(var n="",M=d(t),r=0;r<M;r++)n+=e(t[r],r,t,e)||"";return n}function K(t,e,n,M){switch(t.type){case"@import":case y:return t.return=t.return||t.value;case L:return"";case g:return t.return=t.value+"{"+$(t.children,M)+"}";case N:t.value=t.props.join(",")}return z(n=$(t.children,M))?t.return=t.value+"{"+n+"}":""}function q(t){return function(e){e.root||(e=e.return)&&t(e)}}var tt=function(t,e,n){for(var M=0,r=0;M=r,r=U(),38===M&&12===r&&(e[n]=1),!G(r);)k();return _(t,m)},et=new WeakMap,nt=function(t){if("rule"===t.type&&t.parent&&!(t.length<1)){for(var e=t.value,n=t.parent,M=t.column===n.column&&t.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==t.props.length||58===e.charCodeAt(0)||et.get(n))&&!M){et.set(t,!0);for(var r=[],u=function(t,e){return R(function(t,e){var n=-1,M=44;do{switch(G(M)){case 0:38===M&&12===U()&&(e[n]=1),t[n]+=tt(m-1,e,n);break;case 2:t[n]+=Z(M);break;case 4:if(44===M){t[++n]=58===U()?"&\f":"",e[n]=t[n].length;break}default:t[n]+=D(M)}}while(M=k());return t}(P(t),e))}(e,r),i=n.props,o=0,c=0;o<u.length;o++)for(var a=0;a<i.length;a++,c++)t.props[c]=r[o]?u[o].replace(/&\f/g,i[a]):i[a]+" "+u[o]}}},Mt=function(t){if("decl"===t.type){var e=t.value;108===e.charCodeAt(0)&&98===e.charCodeAt(2)&&(t.return="",t.value="")}},rt=[function(t,e,n,M){if(t.length>-1&&!t.return)switch(t.type){case y:t.return=function t(e,n){switch(function(t,e){return(((e<<2^w(t,0))<<2^w(t,1))<<2^w(t,2))<<2^w(t,3)}(e,n)){case 5103:return s+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return s+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return s+e+j+e+a+e+e;case 6828:case 4268:return s+e+a+e+e;case 6165:return s+e+a+"flex-"+e+e;case 5187:return s+e+I(e,/(\w+).+(:[^]+)/,s+"box-$1$2"+a+"flex-$1$2")+e;case 5443:return s+e+a+"flex-item-"+I(e,/flex-|-self/,"")+e;case 4675:return s+e+a+"flex-line-pack"+I(e,/align-content|flex-|-self/,"")+e;case 5548:return s+e+a+I(e,"shrink","negative")+e;case 5292:return s+e+a+I(e,"basis","preferred-size")+e;case 6060:return s+"box-"+I(e,"-grow","")+s+e+a+I(e,"grow","positive")+e;case 4554:return s+I(e,/([^-])(transform)/g,"$1"+s+"$2")+e;case 6187:return I(I(I(e,/(zoom-|grab)/,s+"$1"),/(image-set)/,s+"$1"),e,"")+e;case 5495:case 3959:return I(e,/(image-set\([^]*)/,s+"$1$`$1");case 4968:return I(I(e,/(.+:)(flex-)?(.*)/,s+"box-pack:$3"+a+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+s+e+e;case 4095:case 3583:case 4068:case 2532:return I(e,/(.+)-inline(.+)/,s+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(z(e)-1-n>6)switch(w(e,n+1)){case 109:if(45!==w(e,n+4))break;case 102:return I(e,/(.+:)(.+)-([^]+)/,"$1"+s+"$2-$3$1"+j+(108==w(e,n+3)?"$3":"$2-$3"))+e;case 115:return~T(e,"stretch")?t(I(e,"stretch","fill-available"),n)+e:e}break;case 4949:if(115!==w(e,n+1))break;case 6444:switch(w(e,z(e)-3-(~T(e,"!important")&&10))){case 107:return I(e,":",":"+s)+e;case 101:return I(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+s+(45===w(e,14)?"inline-":"")+"box$3$1"+s+"$2$3$1"+a+"$2box$3")+e}break;case 5936:switch(w(e,n+11)){case 114:return s+e+a+I(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return s+e+a+I(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return s+e+a+I(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return s+e+a+e+e}return e}(t.value,t.length);break;case g:return $([Y(t,{value:I(t.value,"@","@"+s)})],M);case N:if(t.length)return function(t,e){return t.map(e).join("")}(t.props,(function(e){switch(function(t,e){return(t=/(::plac\w+|:read-\w+)/.exec(t))?t[0]:t}(e)){case":read-only":case":read-write":return $([Y(t,{props:[I(e,/:(read-\w+)/,":-moz-$1")]})],M);case"::placeholder":return $([Y(t,{props:[I(e,/:(plac\w+)/,":"+s+"input-$1")]}),Y(t,{props:[I(e,/:(plac\w+)/,":-moz-$1")]}),Y(t,{props:[I(e,/:(plac\w+)/,a+"input-$1")]})],M)}return""}))}}],ut=function(t){var e=t.key;if("css"===e){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(t){-1!==t.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(t),t.setAttribute("data-s",""))}))}var M,r,u=t.stylisPlugins||rt,i={},o=[];M=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+e+' "]'),(function(t){for(var e=t.getAttribute("data-emotion").split(" "),n=1;n<e.length;n++)i[e[n]]=!0;o.push(t)}));var a,j=[nt,Mt],s=[K,q((function(t){a.insert(t)}))],L=function(t){var e=d(t);return function(n,M,r,u){for(var i="",o=0;o<e;o++)i+=t[o](n,M,r,u)||"";return i}}(j.concat(u,s));r=function(t,e,n,M){a=n,$(function(t){return R(function t(e,n,M,r,u,i,o,c,a){for(var j=0,s=0,L=o,N=0,y=0,g=0,l=1,A=1,S=1,w=0,p="",d=u,x=i,E=r,O=p;A;)switch(g=w,w=k()){case 40:if(108!=g&&58==O.charCodeAt(L-1)){-1!=T(O+=I(Z(w),"&","&\f"),"&\f")&&(S=-1);break}case 34:case 39:case 91:O+=Z(w);break;case 9:case 10:case 13:case 32:O+=W(g);break;case 92:O+=B(Q()-1,7);continue;case 47:switch(U()){case 42:case 47:f(H(V(k(),Q()),n,M),a);break;default:O+="/"}break;case 123*l:c[j++]=z(O)*S;case 125*l:case 59:case 0:switch(w){case 0:case 125:A=0;case 59+s:y>0&&z(O)-L&&f(y>32?X(O+";",r,M,L-1):X(I(O," ","")+";",r,M,L-2),a);break;case 59:O+=";";default:if(f(E=J(O,n,M,j,s,u,c,p,d=[],x=[],L),i),123===w)if(0===s)t(O,n,E,E,d,i,L,c,x);else switch(N){case 100:case 109:case 115:t(e,E,E,r&&f(J(e,E,E,0,0,u,c,p,u,d=[],L),x),u,x,L,c,r?d:x);break;default:t(O,E,E,E,[""],x,0,c,x)}}j=s=y=0,l=S=1,p=O="",L=o;break;case 58:L=1+z(O),y=g;default:if(l<1)if(123==w)--l;else if(125==w&&0==l++&&125==v())continue;switch(O+=D(w),w*l){case 38:S=s>0?1:(O+="\f",-1);break;case 44:c[j++]=(z(O)-1)*S,S=1;break;case 64:45===U()&&(O+=Z(k())),N=U(),s=L=z(p=O+=F(Q())),w++;break;case 45:45===g&&2==z(O)&&(l=0)}}return i}("",null,null,null,[""],t=P(t),0,[0],t))}(t?t+"{"+e.styles+"}":e.styles),L),M&&(N.inserted[e.name]=!0)};var N={key:e,sheet:new c({key:e,container:M,nonce:t.nonce,speedy:t.speedy,prepend:t.prepend,insertionPoint:t.insertionPoint}),nonce:t.nonce,inserted:i,registered:{},insert:r};return N.sheet.hydrate(o),N};function it(t,e,n){var M="";return n.split(" ").forEach((function(n){void 0!==t[n]?e.push(t[n]+";"):M+=n+" "})),M}n(196);var ot=function(t,e,n){var M=t.key+"-"+e.name;if(!1===n&&void 0===t.registered[M]&&(t.registered[M]=e.styles),void 0===t.inserted[e.name]){var r=e;do{t.insert(e===r?"."+M:"",r,t.sheet,!0),r=r.next}while(void 0!==r)}},ct=function(t){for(var e,n=0,M=0,r=t.length;r>=4;++M,r-=4)e=1540483477*(65535&(e=255&t.charCodeAt(M)|(255&t.charCodeAt(++M))<<8|(255&t.charCodeAt(++M))<<16|(255&t.charCodeAt(++M))<<24))+(59797*(e>>>16)<<16),n=1540483477*(65535&(e^=e>>>24))+(59797*(e>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(r){case 3:n^=(255&t.charCodeAt(M+2))<<16;case 2:n^=(255&t.charCodeAt(M+1))<<8;case 1:n=1540483477*(65535&(n^=255&t.charCodeAt(M)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)},at={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},jt=/[A-Z]|^ms/g,st=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Lt=function(t){return 45===t.charCodeAt(1)},Nt=function(t){return null!=t&&"boolean"!=typeof t},yt=u((function(t){return Lt(t)?t:t.replace(jt,"-$&").toLowerCase()})),gt=function(t,e){switch(t){case"animation":case"animationName":if("string"==typeof e)return e.replace(st,(function(t,e,n){return Dt={name:e,styles:n,next:Dt},e}))}return 1===at[t]||Lt(t)||"number"!=typeof e||0===e?e:e+"px"};function lt(t,e,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return Dt={name:n.name,styles:n.styles,next:Dt},n.name;if(void 0!==n.styles){var M=n.next;if(void 0!==M)for(;void 0!==M;)Dt={name:M.name,styles:M.styles,next:Dt},M=M.next;return n.styles+";"}return function(t,e,n){var M="";if(Array.isArray(n))for(var r=0;r<n.length;r++)M+=lt(t,e,n[r])+";";else for(var u in n){var i=n[u];if("object"!=typeof i)null!=e&&void 0!==e[i]?M+=u+"{"+e[i]+"}":Nt(i)&&(M+=yt(u)+":"+gt(u,i)+";");else if(!Array.isArray(i)||"string"!=typeof i[0]||null!=e&&void 0!==e[i[0]]){var o=lt(t,e,i);switch(u){case"animation":case"animationName":M+=yt(u)+":"+o+";";break;default:M+=u+"{"+o+"}"}}else for(var c=0;c<i.length;c++)Nt(i[c])&&(M+=yt(u)+":"+gt(u,i[c])+";")}return M}(t,e,n);case"function":if(void 0!==t){var r=Dt,u=n(t);return Dt=r,lt(t,e,u)}}if(null==e)return n;var i=e[n];return void 0!==i?i:n}var Dt,At=/label:\s*([^\s;\n{]+)\s*(;|$)/g,St=function(t,e,n){if(1===t.length&&"object"==typeof t[0]&&null!==t[0]&&void 0!==t[0].styles)return t[0];var M=!0,r="";Dt=void 0;var u=t[0];null==u||void 0===u.raw?(M=!1,r+=lt(n,e,u)):r+=u[0];for(var i=1;i<t.length;i++)r+=lt(n,e,t[i]),M&&(r+=u[i]);At.lastIndex=0;for(var o,c="";null!==(o=At.exec(r));)c+="-"+o[1];return{name:ct(r)+c,styles:r,next:Dt}},It=Object(r.createContext)("undefined"!=typeof HTMLElement?ut({key:"css"}):null);It.Provider;var Tt=function(t){return Object(r.forwardRef)((function(e,n){var M=Object(r.useContext)(It);return t(e,M,n)}))},wt=Object(r.createContext)({}),pt=o,zt=function(t){return"theme"!==t},dt=function(t){return"string"==typeof t&&t.charCodeAt(0)>96?pt:zt},ft=function(t,e,n){var M;if(e){var r=e.shouldForwardProp;M=t.__emotion_forwardProp&&r?function(e){return t.__emotion_forwardProp(e)&&r(e)}:r}return"function"!=typeof M&&n&&(M=t.__emotion_forwardProp),M},xt=function(){return null};e.a=function t(e,n){var u,i,o=e.__emotion_real===e,c=o&&e.__emotion_base||e;void 0!==n&&(u=n.label,i=n.target);var a=ft(e,n,o),j=a||dt(c),s=!j("as");return function(){var L=arguments,N=o&&void 0!==e.__emotion_styles?e.__emotion_styles.slice(0):[];if(void 0!==u&&N.push("label:"+u+";"),null==L[0]||void 0===L[0].raw)N.push.apply(N,L);else{N.push(L[0][0]);for(var y=L.length,g=1;g<y;g++)N.push(L[g],L[0][g])}var l=Tt((function(t,e,n){var M=s&&t.as||c,u="",o=[],L=t;if(null==t.theme){for(var y in L={},t)L[y]=t[y];L.theme=Object(r.useContext)(wt)}"string"==typeof t.className?u=it(e.registered,o,t.className):null!=t.className&&(u=t.className+" ");var g=St(N.concat(o),e.registered,L);ot(e,g,"string"==typeof M),u+=e.key+"-"+g.name,void 0!==i&&(u+=" "+i);var l=s&&void 0===a?dt(M):j,D={};for(var A in t)s&&"as"===A||l(A)&&(D[A]=t[A]);D.className=u,D.ref=n;var S=Object(r.createElement)(M,D),I=Object(r.createElement)(xt,null);return Object(r.createElement)(r.Fragment,null,I,S)}));return l.displayName=void 0!==u?u:"Styled("+("string"==typeof c?c:c.displayName||c.name||"Component")+")",l.defaultProps=e.defaultProps,l.__emotion_real=l,l.__emotion_base=c,l.__emotion_styles=N,l.__emotion_forwardProp=a,Object.defineProperty(l,"toString",{value:function(){return"."+i}}),l.withComponent=function(e,r){return t(e,M({},n,r,{shouldForwardProp:ft(l,r,!0)})).apply(void 0,N)},l}}},function(t,e){t.exports=window.wp.components},function(t,e){var n=Function.prototype,M=n.bind,r=n.call,u=M&&M.bind(r,r);t.exports=M?function(t){return t&&u(t)}:function(t){return t&&function(){return r.apply(t,arguments)}}},function(t,e){t.exports=function(t){return"function"==typeof t}},function(t,e){function n(){return t.exports=n=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var M in n)Object.prototype.hasOwnProperty.call(n,M)&&(t[M]=n[M])}return t},t.exports.__esModule=!0,t.exports.default=t.exports,n.apply(this,arguments)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,n){var M=n(3),r=n(93),u=n(17),i=n(94),o=n(92),c=n(91),a=r("wks"),j=M.Symbol,s=j&&j.for,L=c?j:j&&j.withoutSetter||i;t.exports=function(t){if(!u(a,t)||!o&&"string"!=typeof a[t]){var e="Symbol."+t;o&&u(j,t)?a[t]=j[t]:a[t]=c&&s?s(e):L(e)}return a[t]}},,function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){"use strict";var M=n(3),r=n(83),u=n(8),i=n(9),o=n(70).f,c=n(110),a=n(26),j=n(43),s=n(27),L=n(17),N=function(t){var e=function(n,M,u){if(this instanceof e){switch(arguments.length){case 0:return new t;case 1:return new t(n);case 2:return new t(n,M)}return new t(n,M,u)}return r(t,this,arguments)};return e.prototype=t.prototype,e};t.exports=function(t,e){var n,r,y,g,l,D,A,S,I=t.target,T=t.global,w=t.stat,p=t.proto,z=T?M:w?M[I]:(M[I]||{}).prototype,d=T?a:a[I]||s(a,I,{})[I],f=d.prototype;for(y in e)n=!c(T?y:I+(w?".":"#")+y,t.forced)&&z&&L(z,y),l=d[y],n&&(D=t.noTargetGet?(S=o(z,y))&&S.value:z[y]),g=n&&D?D:e[y],n&&typeof l==typeof g||(A=t.bind&&n?j(g,M):t.wrap&&n?N(g):p&&i(g)?u(g):g,(t.sham||g&&g.sham||l&&l.sham)&&s(A,"sham",!0),s(d,y,A),p&&(L(a,r=I+"Prototype")||s(a,r,{}),s(a[r],y,g),t.real&&f&&!f[y]&&s(f,y,g)))}},function(t,e,n){"use strict";n.d(e,"s",(function(){return v})),n.d(e,"d",(function(){return k})),n.d(e,"o",(function(){return U})),n.d(e,"l",(function(){return Q})),n.d(e,"n",(function(){return _})),n.d(e,"m",(function(){return G})),n.d(e,"p",(function(){return P})),n.d(e,"h",(function(){return R})),n.d(e,"v",(function(){return Z})),n.d(e,"w",(function(){return W})),n.d(e,"c",(function(){return B})),n.d(e,"u",(function(){return V})),n.d(e,"q",(function(){return F})),n.d(e,"j",(function(){return J})),n.d(e,"r",(function(){return H})),n.d(e,"a",(function(){return X})),n.d(e,"g",(function(){return $})),n.d(e,"t",(function(){return K})),n.d(e,"b",(function(){return q})),n.d(e,"i",(function(){return tt})),n.d(e,"e",(function(){return et})),n.d(e,"f",(function(){return nt})),n.d(e,"k",(function(){return It.b}));var M={};n.r(M),n.d(M,"getSettings",(function(){return w})),n.d(M,"isSavingSettings",(function(){return p})),n.d(M,"getSavingError",(function(){return z}));var r={};n.r(r),n.d(r,"updateSettingsValues",(function(){return f})),n.d(r,"updateSettings",(function(){return x})),n.d(r,"updateIsSavingSettings",(function(){return E})),n.d(r,"saveSettings",(function(){return O}));var u={};n.r(u),n.d(u,"getSettings",(function(){return m}));var i={};n.r(i),n.d(i,"reducer",(function(){return S})),n.d(i,"selectors",(function(){return M})),n.d(i,"actions",(function(){return r})),n.d(i,"resolvers",(function(){return u})),n.d(i,"useSettings",(function(){return v})),n.d(i,"useEnabledPaymentMethodIds",(function(){return k})),n.d(i,"usePaymentRequestEnabledSettings",(function(){return U})),n.d(i,"usePaymentRequestButtonSize",(function(){return Q})),n.d(i,"usePaymentRequestButtonType",(function(){return _})),n.d(i,"usePaymentRequestButtonTheme",(function(){return G})),n.d(i,"usePaymentRequestLocations",(function(){return P})),n.d(i,"useIsStripeEnabled",(function(){return R})),n.d(i,"useTitle",(function(){return Z})),n.d(i,"useUpeTitle",(function(){return W})),n.d(i,"useDescription",(function(){return B})),n.d(i,"useTestMode",(function(){return V})),n.d(i,"useSavedCards",(function(){return F})),n.d(i,"useManualCapture",(function(){return J})),n.d(i,"useSeparateCardForm",(function(){return H})),n.d(i,"useAccountStatementDescriptor",(function(){return X})),n.d(i,"useIsShortAccountStatementEnabled",(function(){return $})),n.d(i,"useShortAccountStatementDescriptor",(function(){return K})),n.d(i,"useDebugLog",(function(){return q})),n.d(i,"useIsUpeEnabled",(function(){return tt})),n.d(i,"useGetAvailablePaymentMethodIds",(function(){return et})),n.d(i,"useGetSavingError",(function(){return nt}));var o={};n.r(o),n.d(o,"getPaymentGateway",(function(){return at})),n.d(o,"isSavingPaymentGateway",(function(){return jt})),n.d(o,"getPaymentGatewaySavingError",(function(){return st}));var c={};n.r(c),n.d(c,"updatePaymentGatewayValues",(function(){return Nt})),n.d(c,"updatePaymentGateway",(function(){return yt})),n.d(c,"updateIsSavingPaymentGateway",(function(){return gt})),n.d(c,"savePaymentGateway",(function(){return lt}));var a={};n.r(a),n.d(a,"getPaymentGateway",(function(){return At}));var j={};n.r(j),n.d(j,"reducer",(function(){return it})),n.d(j,"selectors",(function(){return o})),n.d(j,"actions",(function(){return c})),n.d(j,"resolvers",(function(){return a})),n.d(j,"usePaymentGateway",(function(){return It.b})),n.d(j,"useEnabledPaymentGateway",(function(){return It.a})),n.d(j,"usePaymentGatewayName",(function(){return It.e})),n.d(j,"usePaymentGatewayDescription",(function(){return It.c})),n.d(j,"usePaymentGatewayExpiration",(function(){return It.d}));var s=n(5),L=n(120),N=n.n(L),y=n(64),g=n.n(y),l=n(4),D=n(22);const A={isSaving:!1,savingError:null,data:{}};var S=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:A,{type:e,...n}=arguments.length>1?arguments[1]:void 0;switch(e){case"SET_SETTINGS":return{...t,data:n.data};case"SET_SETTINGS_VALUES":return{...t,savingError:null,data:{...t.data,...n.payload}};case"SET_IS_SAVING_SETTINGS":return{...t,isSaving:n.isSaving,savingError:n.error}}return t};const I={},T=t=>t&&t.settings||I,w=t=>T(t).data||I,p=t=>T(t).isSaving||!1,z=t=>T(t).savingError;var d=n(2);function f(t){return{type:"SET_SETTINGS_VALUES",payload:t}}function x(t){return{type:"SET_SETTINGS",data:t}}function E(t,e){return{type:"SET_IS_SAVING_SETTINGS",isSaving:t,error:e}}function*O(){let t=null;try{const e=Object(l.select)(s.b).getSettings();yield E(!0,null),yield Object(D.apiFetch)({path:s.a+"/settings",method:"post",data:e}),yield Object(l.dispatch)(s.b).invalidateResolutionForStoreSelector("getAccountData"),yield Object(l.dispatch)("core/notices").createSuccessNotice(Object(d.__)("Settings saved.","woocommerce-gateway-stripe"))}catch(e){t=e,yield Object(l.dispatch)("core/notices").createErrorNotice(Object(d.__)("Error saving settings.","woocommerce-gateway-stripe"))}finally{yield E(!1,t)}return null===t}function*m(){const t=s.a+"/settings";try{const e=yield Object(D.apiFetch)({path:t});yield x(e)}catch(t){yield Object(l.dispatch)("core/notices").createErrorNotice(Object(d.__)("Error retrieving settings.","woocommerce-gateway-stripe"))}}var b=n(1);const C=[],h=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return()=>Object(l.useSelect)(n=>{const{getSettings:M}=n(s.b);return M()[t]||e},[t,e])},Y=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return()=>{const{updateSettingsValues:n}=Object(l.useDispatch)(s.b);return[h(t,e)(),Object(b.useCallback)(e=>n({[t]:e}),[n])]}},v=()=>{const{saveSettings:t}=Object(l.useDispatch)(s.b);return{settings:Object(l.useSelect)(t=>{const{getSettings:e}=t(s.b);return e()},[]),isLoading:Object(l.useSelect)(t=>{const{hasFinishedResolution:e,isResolving:n}=t(s.b);return n("getSettings")||!e("getSettings")},[]),isSaving:Object(l.useSelect)(t=>{const{isSavingSettings:e}=t(s.b);return e()},[]),saveSettings:t}},k=Y("enabled_payment_method_ids",C),U=Y("is_payment_request_enabled"),Q=Y("payment_request_button_size",""),_=Y("payment_request_button_type",""),G=Y("payment_request_button_theme",""),P=Y("payment_request_button_locations",C),R=Y("is_stripe_enabled"),Z=Y("title",""),W=Y("title_upe",""),B=Y("description",""),V=Y("is_test_mode_enabled"),F=Y("is_saved_cards_enabled"),J=Y("is_manual_capture_enabled"),H=Y("is_separate_card_form_enabled"),X=Y("statement_descriptor",""),$=Y("is_short_statement_descriptor_enabled"),K=Y("short_statement_descriptor",""),q=Y("is_debug_log_enabled"),tt=Y("is_upe_enabled"),et=h("available_payment_method_ids",C),nt=()=>Object(l.useSelect)(t=>{const{getSavingError:e}=t(s.b);return e()},[]);var Mt=n(36),rt=n(46);const ut={isSaving:!1,savingError:null,data:{}};var it=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ut,{type:e,...n}=arguments.length>1?arguments[1]:void 0;switch(e){case"SET_PAYMENT_GATEWAY":return{...t,data:n.data};case"SET_PAYMENT_GATEWAY_VALUES":return{...t,savingError:null,data:{...t.data,...n.payload}};case"SET_IS_SAVING_PAYMENT_GATEWAY":return{...t,isSaving:n.isSaving,savingError:n.error}}return t};const ot={},ct=t=>t&&t.paymentGateway||ot,at=t=>ct(t).data||ot,jt=t=>ct(t).isSaving||!1,st=t=>ct(t).savingError;var Lt=n(41);function Nt(t){return{type:"SET_PAYMENT_GATEWAY_VALUES",payload:t}}function yt(t){return{type:"SET_PAYMENT_GATEWAY",data:t}}function gt(t,e){return{type:"SET_IS_SAVING_PAYMENT_GATEWAY",isSaving:t,error:e}}function*lt(){let t=null;const{section:e}=Object(Lt.getQuery)();try{const n=Object(l.select)(s.b).getPaymentGateway();yield gt(!0,null),yield Object(D.apiFetch)({path:`${s.a}/payment-gateway/${e}`,method:"post",data:n}),yield Object(l.dispatch)("core/notices").createSuccessNotice(Object(d.__)("Settings saved.","woocommerce-gateway-stripe"))}catch(e){t=e,yield Object(l.dispatch)("core/notices").createErrorNotice(Object(d.__)("Error saving settings.","woocommerce-gateway-stripe"))}finally{yield gt(!1,t)}return null===t}const{section:Dt}=Object(Lt.getQuery)();function*At(){const t=`${s.a}/payment-gateway/${Dt}`;try{const e=yield Object(D.apiFetch)({path:t});yield yt(e)}catch(t){yield Object(l.dispatch)("core/notices").createErrorNotice(Object(d.__)("Error retrieving payment gateway settings.","woocommerce-gateway-stripe"))}}var St,It=n(77);const Tt={},wt={},pt={};N()(St=[i,Mt,rt,j]).call(St,t=>{g()(Tt,{...t.actions}),g()(wt,{...t.selectors}),g()(pt,{...t.resolvers})}),Object(l.registerStore)(s.b,{reducer:Object(l.combineReducers)({settings:S,account:Mt.reducer,accountKeys:rt.reducer,paymentGateway:it}),controls:D.controls,actions:Tt,selectors:wt,resolvers:pt}),s.b},function(t,e,n){var M=n(13);t.exports=!M((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,e,n){var M=n(8),r=n(32),u=M({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return u(r(t),e)}},function(t,e,n){t.exports=n(149)},function(t,e,n){var M=n(9);t.exports=function(t){return"object"==typeof t?null!==t:M(t)}},function(t,e){var n=Function.prototype.call;t.exports=n.bind?n.bind(n):function(){return n.apply(n,arguments)}},function(t,e,n){var M=n(8);t.exports=M({}.isPrototypeOf)},function(t,e){t.exports=window.wp.dataControls},function(t,e,n){var M=n(3),r=n(19),u=M.String,i=M.TypeError;t.exports=function(t){if(r(t))return t;throw i(u(t)+" is not an object")}},,function(t,e,n){var M=n(26),r=n(3),u=n(9),i=function(t){return u(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(M[t])||i(r[t]):M[t]&&M[t][e]||r[t]&&r[t][e]}},function(t,e){t.exports={}},function(t,e,n){var M=n(16),r=n(33),u=n(37);t.exports=M?function(t,e,n){return r.f(t,e,u(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var M=n(26);t.exports=function(t){return M[t+"Prototype"]}},function(t,e,n){var M=n(49),r=n(42);t.exports=function(t){return M(r(t))}},function(t,e){t.exports=!0},function(t,e,n){var M=n(3),r=n(58),u=n(9),i=n(38),o=n(11)("toStringTag"),c=M.Object,a="Arguments"==i(function(){return arguments}());t.exports=r?i:function(t){var e,n,M;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=c(t),o))?n:a?i(e):"Object"==(M=i(e))&&u(e.callee)?"Arguments":M}},function(t,e,n){var M=n(3),r=n(42),u=M.Object;t.exports=function(t){return u(r(t))}},function(t,e,n){var M=n(3),r=n(16),u=n(95),i=n(96),o=n(23),c=n(66),a=M.TypeError,j=Object.defineProperty,s=Object.getOwnPropertyDescriptor;e.f=r?i?function(t,e,n){if(o(t),e=c(e),o(n),"function"==typeof t&&"prototype"===e&&"value"in n&&"writable"in n&&!n.writable){var M=s(t,e);M&&M.writable&&(t[e]=n.value,n={configurable:"configurable"in n?n.configurable:M.configurable,enumerable:"enumerable"in n?n.enumerable:M.enumerable,writable:!1})}return j(t,e,n)}:j:function(t,e,n){if(o(t),e=c(e),o(n),u)try{return j(t,e,n)}catch(t){}if("get"in n||"set"in n)throw a("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var M=n(3),r=n(9),u=n(68),i=M.TypeError;t.exports=function(t){if(r(t))return t;throw i(u(t)+" is not a function")}},function(t,e){t.exports={}},function(t,e,n){"use strict";n.r(e),n.d(e,"reducer",(function(){return o})),n.d(e,"selectors",(function(){return M})),n.d(e,"actions",(function(){return A})),n.d(e,"resolvers",(function(){return r})),n.d(e,"useAccount",(function(){return z.a})),n.d(e,"useGetCapabilities",(function(){return z.b}));var M={};n.r(M),n.d(M,"getAccountData",(function(){return y})),n.d(M,"getAccountCapabilities",(function(){return g})),n.d(M,"getAccountCapabilitiesByStatus",(function(){return l})),n.d(M,"isRefreshingAccount",(function(){return D}));var r={};n.r(r),n.d(r,"getAccountData",(function(){return p}));var u=n(82);const i={isRefreshing:!1,data:{}};var o=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,{type:e,...n}=arguments.length>1?arguments[1]:void 0;switch(e){case u.a.SET_ACCOUNT:return{...t,data:n.payload};case u.a.SET_IS_REFRESHING:return{...t,isRefreshing:n.isRefreshing}}return t},c=n(79),a=n.n(c),j=n(102),s=n.n(j);const L={},N=t=>t&&t.account||L,y=t=>N(t).data||L,g=t=>{var e,n;return null!==(e=null===(n=y(t).account)||void 0===n?void 0:n.capabilities)&&void 0!==e?e:L},l=(t,e)=>{var n;const M=g(t);return a()(n=s()(M)).call(n,(t,n)=>{let[M,r]=n;return r===e&&t.push(M),t},[])},D=t=>N(t).isRefreshing||!1;var A=n(78),S=n(4),I=n(2),T=n(22),w=n(5);function*p(){const t=w.a+"/account";try{const e=yield Object(T.apiFetch)({path:t});yield Object(A.updateAccount)(e)}catch(t){yield Object(S.dispatch)("core/notices").createErrorNotice(Object(I.__)("Error retrieving account data.","woocommerce-gateway-stripe"))}}var z=n(119)},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var M=n(8),r=M({}.toString),u=M("".slice);t.exports=function(t){return u(r(t),8,-1)}},function(t,e,n){!function(t,e){"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function M(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,M=new Array(e);n<e;n++)M[n]=t[n];return M}function r(){}function u(){}e=e&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e,u.resetWarningCache=r;var i=function(t,e){return function(t){t.exports=function(){function t(t,e,n,M,r,u){if("SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"!==u){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:u,resetWarningCache:r};return n.PropTypes=n,n}()}(e={exports:{}}),e.exports}(),o=function(t){return null!==t&&"object"===n(t)},c=function t(e,n){if(!o(e)||!o(n))return e===n;var M=Array.isArray(e);if(M!==Array.isArray(n))return!1;var r="[object Object]"===Object.prototype.toString.call(e);if(r!==("[object Object]"===Object.prototype.toString.call(n)))return!1;if(!r&&!M)return!1;var u=Object.keys(e),i=Object.keys(n);if(u.length!==i.length)return!1;for(var c={},a=0;a<u.length;a+=1)c[u[a]]=!0;for(var j=0;j<i.length;j+=1)c[i[j]]=!0;var s=Object.keys(c);if(s.length!==u.length)return!1;var L=e,N=n;return s.every((function(e){return t(L[e],N[e])}))},a=function(t){var n=e.useRef(t);return e.useEffect((function(){n.current=t}),[t]),n.current},j=function(t){if(null===t||o(e=t)&&"function"==typeof e.elements&&"function"==typeof e.createToken&&"function"==typeof e.createPaymentMethod&&"function"==typeof e.confirmCardPayment)return t;var e;throw new Error("Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.")},s=e.createContext(null);s.displayName="ElementsContext";var L=function(t){var n,r,u=t.stripe,i=t.options,L=t.children,N=e.useRef(!1),y=e.useRef(!0),g=e.useMemo((function(){return function(t){if(function(t){return o(t)&&"function"==typeof t.then}(t))return{tag:"async",stripePromise:Promise.resolve(t).then(j)};var e=j(t);return null===e?{tag:"empty"}:{tag:"sync",stripe:e}}(u)}),[u]),l=(n=e.useState((function(){return{stripe:null,elements:null}})),r=2,function(t){if(Array.isArray(t))return t}(n)||function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],_n=!0,M=!1,r=void 0;try{for(var u,i=t[Symbol.iterator]();!(_n=(u=i.next()).done)&&(n.push(u.value),!e||n.length!==e);_n=!0);}catch(t){M=!0,r=t}finally{try{_n||null==i.return||i.return()}finally{if(M)throw r}}return n}}(n,r)||function(t,e){if(t){if("string"==typeof t)return M(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?M(t,e):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),D=l[0],A=l[1],S=a(u),I=a(i);return null!==S&&(S!==u&&console.warn("Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it."),c(i,I)||console.warn("Unsupported prop change on Elements: You cannot change the `options` prop after setting the `stripe` prop.")),N.current||("sync"===g.tag&&(N.current=!0,A({stripe:g.stripe,elements:g.stripe.elements(i)})),"async"===g.tag&&(N.current=!0,g.stripePromise.then((function(t){t&&y.current&&A({stripe:t,elements:t.elements(i)})})))),e.useEffect((function(){return function(){y.current=!1}}),[]),e.useEffect((function(){var t=D.stripe;t&&t._registerWrapper&&t.registerAppInfo&&(t._registerWrapper({name:"react-stripe-js",version:"1.4.1"}),t.registerAppInfo({name:"react-stripe-js",version:"1.4.1",url:"https://stripe.com/docs/stripe-js/react"}))}),[D.stripe]),e.createElement(s.Provider,{value:D},L)};L.propTypes={stripe:i.any,options:i.object};var N=function(t){return function(t,e){if(!t)throw new Error("Could not find Elements context; You need to wrap the part of your app that ".concat(e," in an <Elements> provider."));return t}(e.useContext(s),t)},y=function(t){return(0,t.children)(N("mounts <ElementsConsumer>"))};y.propTypes={children:i.func.isRequired};var g=function(t){var n=e.useRef(t);return e.useEffect((function(){n.current=t}),[t]),function(){n.current&&n.current.apply(n,arguments)}},l=function(t){return o(t)?(t.paymentRequest,function(t,e){if(null==t)return{};var n,M,r=function(t,e){if(null==t)return{};var n,M,r={},u=Object.keys(t);for(M=0;M<u.length;M++)n=u[M],e.indexOf(n)>=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(M=0;M<u.length;M++)n=u[M],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}(t,["paymentRequest"])):{}},D=function(){},A=function(t,n){var M,r="".concat((M=t).charAt(0).toUpperCase()+M.slice(1),"Element"),u=n?function(t){N("mounts <".concat(r,">"));var n=t.id,M=t.className;return e.createElement("div",{id:n,className:M})}:function(n){var M=n.id,u=n.className,i=n.options,o=void 0===i?{}:i,a=n.onBlur,j=void 0===a?D:a,s=n.onFocus,L=void 0===s?D:s,y=n.onReady,A=void 0===y?D:y,S=n.onChange,I=void 0===S?D:S,T=n.onEscape,w=void 0===T?D:T,p=n.onClick,z=void 0===p?D:p,d=N("mounts <".concat(r,">")).elements,f=e.useRef(null),x=e.useRef(null),E=g(A),O=g(j),m=g(L),b=g(z),C=g(I),h=g(w);e.useLayoutEffect((function(){if(null==f.current&&d&&null!=x.current){var e=d.create(t,o);f.current=e,e.mount(x.current),e.on("ready",(function(){return E(e)})),e.on("change",C),e.on("blur",O),e.on("focus",m),e.on("escape",h),e.on("click",b)}}));var Y=e.useRef(o);return e.useEffect((function(){Y.current&&Y.current.paymentRequest!==o.paymentRequest&&console.warn("Unsupported prop change: options.paymentRequest is not a customizable property.");var t=l(o);0===Object.keys(t).length||c(t,l(Y.current))||f.current&&(f.current.update(t),Y.current=o)}),[o]),e.useLayoutEffect((function(){return function(){f.current&&f.current.destroy()}}),[]),e.createElement("div",{id:M,className:u,ref:x})};return u.propTypes={id:i.string,className:i.string,onChange:i.func,onBlur:i.func,onFocus:i.func,onReady:i.func,onClick:i.func,options:i.object},u.displayName=r,u.__elementType=t,u},S="undefined"==typeof window,I=A("auBankAccount",S),T=A("card",S),w=A("cardNumber",S),p=A("cardExpiry",S),z=A("cardCvc",S),d=A("fpxBank",S),f=A("iban",S),x=A("idealBank",S),E=A("p24Bank",S),O=A("epsBank",S),m=A("payment",S),b=A("paymentRequestButton",S),C=A("afterpayClearpayMessage",S);t.AfterpayClearpayMessageElement=C,t.AuBankAccountElement=I,t.CardCvcElement=z,t.CardElement=T,t.CardExpiryElement=p,t.CardNumberElement=w,t.Elements=L,t.ElementsConsumer=y,t.EpsBankElement=O,t.FpxBankElement=d,t.IbanElement=f,t.IdealBankElement=x,t.P24BankElement=E,t.PaymentElement=m,t.PaymentRequestButtonElement=b,t.useElements=function(){return N("calls useElements()").elements},t.useStripe=function(){return N("calls useStripe()").stripe},Object.defineProperty(t,"__esModule",{value:!0})}(e,n(1))},function(t,e,n){var M=n(3),r=n(31),u=M.String;t.exports=function(t){if("Symbol"===r(t))throw TypeError("Cannot convert a Symbol value to a string");return u(t)}},function(t,e){t.exports=window.wc.navigation},function(t,e,n){var M=n(3).TypeError;t.exports=function(t){if(null==t)throw M("Can't call method on "+t);return t}},function(t,e,n){var M=n(8),r=n(34),u=M(M.bind);t.exports=function(t,e){return r(t),void 0===e?t:u?u(t,e):function(){return t.apply(e,arguments)}}},function(t,e,n){var M=n(112);t.exports=function(t){return M(t.length)}},function(t,e,n){var M=n(27);t.exports=function(t,e,n,r){r&&r.enumerable?t[e]=n:M(t,e,n)}},function(t,e,n){"use strict";n.r(e),n.d(e,"reducer",(function(){return o})),n.d(e,"selectors",(function(){return M})),n.d(e,"actions",(function(){return r})),n.d(e,"resolvers",(function(){return u})),n.d(e,"useAccountKeys",(function(){return x.a})),n.d(e,"useGetSavingError",(function(){return x.h})),n.d(e,"useAccountKeysPublishableKey",(function(){return x.b})),n.d(e,"useAccountKeysSecretKey",(function(){return x.c})),n.d(e,"useAccountKeysWebhookSecret",(function(){return x.g})),n.d(e,"useAccountKeysTestPublishableKey",(function(){return x.d})),n.d(e,"useAccountKeysTestSecretKey",(function(){return x.e})),n.d(e,"useAccountKeysTestWebhookSecret",(function(){return x.f}));var M={};n.r(M),n.d(M,"getAccountKeys",(function(){return j})),n.d(M,"isSavingAccountKeys",(function(){return s})),n.d(M,"getAccountKeysSavingError",(function(){return L})),n.d(M,"getIsTestingAccountKeys",(function(){return N})),n.d(M,"getIsValidAccountKeys",(function(){return y}));var r={};n.r(r),n.d(r,"updateAccountKeysValues",(function(){return I})),n.d(r,"updateAccountKeys",(function(){return T})),n.d(r,"updateIsSavingAccountKeys",(function(){return w})),n.d(r,"updateIsTestingAccountKeys",(function(){return p})),n.d(r,"updateIsValidAccountKeys",(function(){return z})),n.d(r,"saveAccountKeys",(function(){return d}));var u={};n.r(u),n.d(u,"getAccountKeys",(function(){return f}));const i={isTesting:!1,isValid:null,isSaving:!1,savingError:null,data:{}};var o=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,{type:e,...n}=arguments.length>1?arguments[1]:void 0;switch(e){case"SET_ACCOUNT_KEYS":return{...t,data:n.payload};case"SET_ACCOUNT_KEYS_VALUES":return{...t,savingError:null,data:{...t.data,...n.payload}};case"SET_IS_SAVING_ACCOUNT_KEYS":return{...t,isSaving:n.isSaving,savingError:n.error};case"SET_IS_TESTING_ACCOUNT_KEYS":return{...t,isTesting:n.isTesting};case"SET_IS_VALID_KEYS":return{...t,isValid:n.isValid}}return t};const c={},a=t=>t&&t.accountKeys||c,j=t=>a(t).data||c,s=t=>a(t).isSaving||!1,L=t=>a(t).savingError,N=t=>a(t).isTesting||!1,y=t=>a(t).isValid;var g=n(4),l=n(2),D=n(22),A=n(5),S=n(78);function I(t){return{type:"SET_ACCOUNT_KEYS_VALUES",payload:t}}function T(t){return{type:"SET_ACCOUNT_KEYS",payload:t}}function w(t,e){return{type:"SET_IS_SAVING_ACCOUNT_KEYS",isSaving:t,error:e}}function p(t){return{type:"SET_IS_TESTING_ACCOUNT_KEYS",isTesting:t}}function z(t){return{type:"SET_IS_VALID_KEYS",isValid:t}}function*d(t){const e=!t.publishable_key&&!t.test_publishable_key;let n=null;try{yield w(!0,null);const M=yield Object(D.apiFetch)({path:A.a+"/account_keys",method:"POST",data:t});if(null==M||!M.id)throw"Account not Found";yield Object(S.refreshAccount)(),yield I(t),yield Object(g.dispatch)("core/notices").createSuccessNotice(e?Object(l.__)("Account disconnected.","woocommerce-gateway-stripe"):Object(l.__)("Account keys saved.","woocommerce-gateway-stripe"))}catch(t){n=t,yield Object(g.dispatch)("core/notices").createErrorNotice(e?Object(l.__)("Error disconnecting account.","woocommerce-gateway-stripe"):Object(l.__)("Error saving account keys.","woocommerce-gateway-stripe"))}finally{yield w(!1,n)}return null===n}function*f(){const t=A.a+"/account_keys";try{const e=yield Object(D.apiFetch)({path:t});yield T(e)}catch(t){yield Object(g.dispatch)("core/notices").createErrorNotice(Object(l.__)("Error retrieving account keys.","woocommerce-gateway-stripe"))}}var x=n(101)},,function(t,e,n){t.exports=n(166)},function(t,e,n){var M=n(3),r=n(8),u=n(13),i=n(38),o=M.Object,c=r("".split);t.exports=u((function(){return!o("z").propertyIsEnumerable(0)}))?function(t){return"String"==i(t)?c(t,""):o(t)}:o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=o(n(1)),u=o(n(268)),i=o(n(271));function o(t){return t&&t.__esModule?t:{default:t}}var c=void 0;e.default=function(t){var e=t.mixedString,n=t.components,o=t.throwErrors;if(c=e,!n)return e;if("object"!==(void 0===n?"undefined":M(n))){if(o)throw new Error("Interpolation Error: unable to process `"+e+"` because components is not an object");return e}var a=(0,i.default)(e);try{return function t(e,n){var i,o,a,j,s,L,N,y,g=[],l={};for(L=0;L<e.length;L++)if("string"!==(s=e[L]).type){if(!n.hasOwnProperty(s.value)||void 0===n[s.value])throw new Error("Invalid interpolation, missing component node: `"+s.value+"`");if("object"!==M(n[s.value]))throw new Error("Invalid interpolation, component node must be a ReactElement or null: `"+s.value+"`","\n> "+c);if("componentClose"===s.type)throw new Error("Missing opening component token: `"+s.value+"`");if("componentOpen"===s.type){i=n[s.value],a=L;break}g.push(n[s.value])}else g.push(s.value);return i&&(j=function(t,e){var n,M,r=e[t],u=0;for(M=t+1;M<e.length;M++)if((n=e[M]).value===r.value){if("componentOpen"===n.type){u++;continue}if("componentClose"===n.type){if(0===u)return M;u--}}throw new Error("Missing closing component token `"+r.value+"`")}(a,e),N=t(e.slice(a+1,j),n),o=r.default.cloneElement(i,{},N),g.push(o),j<e.length-1&&(y=t(e.slice(j+1),n),g=g.concat(y))),1===g.length?g[0]:(g.forEach((function(t,e){t&&(l["interpolation-child-"+e]=t)})),(0,u.default)(l))}(a,n)}catch(t){if(o)throw new Error("Interpolation Error: unable to process `"+e+"` because of error `"+t.message+"`");return e}}},function(t,e,n){var M,r,u=n(3),i=n(67),o=u.process,c=u.Deno,a=o&&o.versions||c&&c.version,j=a&&a.v8;j&&(r=(M=j.split("."))[0]>0&&M[0]<4?1:+(M[0]+M[1])),!r&&i&&(!(M=i.match(/Edge\/(\d+)/))||M[1]>=74)&&(M=i.match(/Chrome\/(\d+)/))&&(r=+M[1]),t.exports=r},function(t,e,n){var M=n(111),r=n(73);t.exports=Object.keys||function(t){return M(t,r)}},function(t,e,n){var M=n(58),r=n(33).f,u=n(27),i=n(17),o=n(140),c=n(11)("toStringTag");t.exports=function(t,e,n,a){if(t){var j=n?t:t.prototype;i(j,c)||r(j,c,{configurable:!0,value:e}),a&&!M&&u(j,"toString",o)}}},,function(t,e,n){var M=n(3),r=n(135),u=M["__core-js_shared__"]||r("__core-js_shared__",{});t.exports=u},function(t,e,n){var M=n(93),r=n(94),u=M("keys");t.exports=function(t){return u[t]||(u[t]=r(t))}},function(t,e){t.exports={}},function(t,e,n){var M={};M[n(11)("toStringTag")]="z",t.exports="[object z]"===String(M)},function(t,e,n){"use strict";var M=n(2),r=n(10),u=n.n(r),i=n(0),o=(n(1),n(81)),c=n(6);const a={small:{name:"1r962iv",styles:"padding:4px"},medium:{name:"14si2be",styles:"padding:7px"}},j=Object(c.a)(o.a,{target:"erwkboy0"})("background:white;border-color:#ddd;border-radius:5px;overflow:hidden;",t=>{let{size:e}=t;return a[e]||""},";");var s=t=>{let{size:e="small",...n}=t;return Object(i.createElement)(j,u()({},n,{size:e}))};const L=Object(c.a)(s,{target:"eiah4a80"})({name:"46wb8n",styles:"background:#ef809f"});const N=Object(c.a)(s,{target:"eh46vsm0"})({name:"1f1f6j2",styles:"background:#10298e"});const y=Object(c.a)(s,{target:"e5z54380"})({name:"1fde9eo",styles:"padding-top:0;padding-bottom:0"});const g=Object(c.a)(s,{target:"es0e2230"})({name:"1kr8da6",styles:"padding-top:4px;padding-bottom:4px"});const l=Object(c.a)(s,{target:"eu8ju410"})({name:"1kr8da6",styles:"padding-top:4px;padding-bottom:4px"});e.a={card:{id:"card",label:Object(M.__)("Credit card / debit card","woocommerce-gateway-stripe"),description:Object(M.__)("Let your customers pay with major credit and debit cards without leaving your store.","woocommerce-gateway-stripe"),Icon:t=>Object(i.createElement)(o.a,u()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNjYgNDIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM2IDNhMiAyIDAgMCAxIDItMmgyNC42NmEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJIMzhhMiAyIDAgMCAxLTItMlYzeiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzggMGgyNC42NmEzIDMgMCAwIDEgMyAzdjE0YTMgMyAwIDAgMS0zIDNIMzhhMyAzIDAgMCAxLTMtM1YzYTMgMyAwIDAgMSAzLTN6bTAgMWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMjQuNjZhMiAyIDAgMCAwIDItMlYzYTIgMiAwIDAgMC0yLTJIMzh6IiBmaWxsPSIjREREIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02MC4wNTUgMTMuMDQ4di0uMjExaC0uMDU0bC0uMDY0LjE0NS0uMDYzLS4xNDVoLS4wNTV2LjIxaC4wMzl2LS4xNThsLjA1OS4xMzdoLjA0bC4wNi0uMTM4di4xNmguMDM5em0tLjM0OCAwdi0uMTc1aC4wN3YtLjAzNmgtLjE4di4wMzZoLjA3MnYuMTc1aC4wMzh6bS4zNi0zLjEzN2MwIDMuMjY1LTIuNjQgNS45MTItNS44OTcgNS45MTItMy4yNTYgMC01Ljg5Ni0yLjY0Ny01Ljg5Ni01LjkxMkM0OC4yNzQgNi42NDcgNTAuOTE0IDQgNTQuMTcgNGMzLjI1NyAwIDUuODk3IDIuNjQ3IDUuODk3IDUuOTExeiIgZmlsbD0iI0Y3OUYxQSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNTIuNzkzIDkuOTExYzAgMy4yNjUtMi42NCA1LjkxMi01Ljg5NyA1LjkxMkM0My42NCAxNS44MjMgNDEgMTMuMTc2IDQxIDkuOTEgNDEgNi42NDcgNDMuNjQgNCA0Ni44OTcgNGMzLjI1NiAwIDUuODk2IDIuNjQ3IDUuODk2IDUuOTExeiIgZmlsbD0iI0VBMDAxQiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNTAuNTMzIDUuMjU4YTUuOTA1IDUuOTA1IDAgMCAwLTIuMjU4IDQuNjUzYzAgMS44ODkuODgzIDMuNTcyIDIuMjU4IDQuNjU0YTUuOTA3IDUuOTA3IDAgMCAwIDIuMjYtNC42NTQgNS45MDUgNS45MDUgMCAwIDAtMi4yNi00LjY1M3oiIGZpbGw9IiNGRjVGMDEiLz48cGF0aCBkPSJNMSAzLjA2YTIgMiAwIDAgMSAyLTJoMjQuNjZhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMnYtMTR6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zIC4wNmgyNC42NmEzIDMgMCAwIDEgMyAzdjE0YTMgMyAwIDAgMS0zIDNIM2EzIDMgMCAwIDEtMy0zdi0xNGEzIDMgMCAwIDEgMy0zem0wIDFhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDI0LjY2YTIgMiAwIDAgMCAyLTJ2LTE0YTIgMiAwIDAgMC0yLTJIM3oiIGZpbGw9IiNEREQiLz48cGF0aCBkPSJNMTMuODIgMTMuMzIzaC0xLjczN2wxLjA4Ny02LjNoMS43MzdsLTEuMDg2IDYuM3ptNi4zLTYuMTQ3YTQuNTM0IDQuNTM0IDAgMCAwLTEuNTU5LS4yNjhjLTEuNzE2IDAtMi45MjQuODU4LTIuOTMyIDIuMDg1LS4wMTQuOTA0Ljg2NiAxLjQwNyAxLjUyMyAxLjcwOS42NzMuMzA4LjkwMS41MS45MDEuNzg0LS4wMDcuNDIyLS41NDMuNjE3LTEuMDQzLjYxNy0uNjk0IDAtMS4wNjYtLjEtMS42My0uMzM1bC0uMjMtLjEwMS0uMjQzIDEuNDE0Yy40MDguMTc0IDEuMTU5LjMyOSAxLjkzOC4zMzYgMS44MjQgMCAzLjAxLS44NDUgMy4wMjUtMi4xNTIuMDA2LS43MTctLjQ1OC0xLjI2Ny0xLjQ1OS0xLjcxNi0uNjA4LS4yODgtLjk4LS40ODItLjk4LS43NzcuMDA3LS4yNjkuMzE1LS41NDMgMS0uNTQzYTMuMTIgMy4xMiAwIDAgMSAxLjI5NS4yNDFsLjE1Ny4wNjcuMjM3LTEuMzZ6IiBmaWxsPSIjMUExRjcxIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMy4yMyA3LjAyMmgxLjM0NWwxLjQwMiA2LjNoLTEuNjFzLS4xNTctLjcyMy0uMjA3LS45NDRoLTIuMjNsLS4zNjYuOTQ1aC0xLjgyM2wyLjU4MS01Ljc3OGMuMTgtLjQwOS40OTQtLjUyMy45MDktLjUyM3ptLS4xMDcgMi4zMDYtLjY5MyAxLjc2M2gxLjQ0NGMtLjA3Mi0uMzE1LS40LTEuODIzLS40LTEuODIzbC0uMTIyLS41NDNjLS4wNTEuMTQtLjEyNS4zMzItLjE3NS40NjFsLS4wNTQuMTQyek00LjU1NCA3LjAyMkg3LjM1Yy4zNzkuMDE0LjY4Ni4xMjguNzg2LjUzbC42MDggMi44OTUuMTg2Ljg3MiAxLjcwMi00LjI5N2gxLjgzN2wtMi43MzEgNi4yOTRINy45TDYuMzUyIDcuODQyYTcuMzU5IDcuMzU5IDAgMCAwLTEuODI3LS42OTJsLjAyOS0uMTI4eiIgZmlsbD0iIzFBMUY3MSIvPjxwYXRoIGQ9Ik0zNiAyNWEyIDIgMCAwIDEgMi0yaDI0LjY2YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkgzOGEyIDIgMCAwIDEtMi0yVjI1eiIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzggMjJoMjQuNjZhMyAzIDAgMCAxIDMgM3YxNGEzIDMgMCAwIDEtMyAzSDM4YTMgMyAwIDAgMS0zLTNWMjVhMyAzIDAgMCAxIDMtM3ptMCAxYTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgyNC42NmEyIDIgMCAwIDAgMi0yVjI1YTIgMiAwIDAgMC0yLTJIMzh6IiBmaWxsPSIjREREIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00NS43MyAzMS44NjNoNC43OTVjLS4wNDMtMS4wMzctLjI4NC0yLjEwNS0xLjAxNy0yLjc5Mi0uODczLS44MTgtMi40MDEtMS4xMjEtMy43NjctMS4xMjEtMS40MjEgMC0yLjk5My4zMzMtMy44NyAxLjIxLS43NTcuNzU2LS45MiAxLjk3Mi0uOTIgMy4wNjUgMCAxLjE0NC4zMiAyLjQ3NiAxLjE0IDMuMjQyLjg3My44MTYgMi4yODYgMS4wMzMgMy42NSAxLjAzMyAxLjMyNSAwIDIuNzYtLjI0NSAzLjYyNy0xLjAyLjg2Ni0uNzczIDEuMTY1LTIuMDc2IDEuMTY1LTMuMjU1di0uMDA2aC00LjgwNHYtLjM1NnptNS4xMTcuMzU2djQuMDloNi42NzJ2LS4wMDZjLjk3Ni0uMDUzIDEuNzUzLS45MzMgMS43NTMtMi4wMTQgMC0xLjA4MS0uNzc3LTIuMDE4LTEuNzUzLTIuMDcxdi4wMDFoLTYuNjcyem02LjU5Ni00LjA5OGMuOTUxIDAgMS43MDYuODI2IDEuNzA2IDEuODY3IDAgLjk4Ny0uNjkzIDEuNzkyLTEuNTc1IDEuODc1aC02LjcyN3YtMy43NDhoNi4zODVhLjcuNyAwIDAgMSAuMTMuMDAyYy4wMjguMDAyLjA1NS4wMDQuMDguMDA0eiIgZmlsbD0iI0ZFRkVGRSIvPjxwYXRoIGQ9Ik0xIDI1YTIgMiAwIDAgMSAyLTJoMjQuNjZhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlYyNXoiIGZpbGw9IiMyNTU3RDYiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTMgMjJoMjQuNjZhMyAzIDAgMCAxIDMgM3YxNGEzIDMgMCAwIDEtMyAzSDNhMyAzIDAgMCAxLTMtM1YyNWEzIDMgMCAwIDEgMy0zem0wIDFhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDI0LjY2YTIgMiAwIDAgMCAyLTJWMjVhMiAyIDAgMCAwLTItMkgzeiIgZmlsbD0iI0RERCIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMSAzMS40NTNoMS4zNzdsLjMxLS43NDVoLjY5NWwuMzEuNzQ1SDYuNHYtLjU3bC4yNDEuNTcySDguMDVsLjI0Mi0uNTh2LjU3OGg2LjczMWwtLjAwMy0xLjIyNGguMTNjLjA5Mi4wMDMuMTE4LjAxMi4xMTguMTYydjEuMDYyaDMuNDgydi0uMjg1Yy4yOC4xNS43MTguMjg1IDEuMjkyLjI4NWgxLjQ2NWwuMzE0LS43NDVoLjY5NWwuMzA2Ljc0NWgyLjgyM3YtLjcwOGwuNDI3LjcwOGgyLjI2M3YtNC42ODJoLTIuMjR2LjU1M2wtLjMxMy0uNTUzaC0yLjI5N3YuNTUzbC0uMjg3LS41NTNoLTMuMTA0Yy0uNTE5IDAtLjk3NS4wNzItMS4zNDQuMjczdi0uMjczaC0yLjE0MXYuMjczYy0uMjM1LS4yMDctLjU1NS0uMjczLS45MS0uMjczSDcuODc2bC0uNTI2IDEuMjEtLjUzOC0xLjIxSDQuMzQ4di41NTNsLS4yNy0uNTUzSDEuOTc1TDEgMjguOTk3djIuNDU2em04LjY5LS42NzVoLS44MjZsLS4wMDMtMi42My0xLjE2OCAyLjYzaC0uNzA4bC0xLjE3LTIuNjMydjIuNjMxaC0xLjY0bC0uMzEtLjc0OEgyLjE4OGwtLjMxMy43NDlIMWwxLjQ0My0zLjM1N0gzLjY0bDEuMzcgMy4xNzh2LTMuMTc4aDEuMzE1bDEuMDU1IDIuMjc3Ljk2OS0yLjI3N0g5LjY5djMuMzU3em0tNi4xLTEuNDQ1LS41NTEtMS4zMzgtLjU0OSAxLjMzN2gxLjF6bTkuMzg4IDEuNDQ1aC0yLjY5MlYyNy40MmgyLjY5MnYuN2gtMS44ODZ2LjYwNGgxLjg0di42ODhoLTEuODR2LjY3aDEuODg2di42OTV6bTMuNzkzLTIuNDUzYS45NDYuOTQ2IDAgMCAxLS41NjguODk1LjkyOS45MjkgMCAwIDEgLjM5OS4yODNjLjExNC4xNjcuMTMzLjMxNi4xMzMuNjE1di42NmgtLjgxM2wtLjAwMy0uNDIzYzAtLjIwMi4wMi0uNDkzLS4xMjctLjY1NC0uMTE4LS4xMTgtLjI5Ny0uMTQ0LS41ODctLjE0NGgtLjg2NXYxLjIyaC0uODA2di0zLjM1NmgxLjg1NGMuNDExIDAgLjcxNS4wMTEuOTc1LjE2LjI1NS4xNTEuNDA4LjM3LjQwOC43NDR6bS0xLjAxOS40OTljLS4xMS4wNjctLjI0MS4wNjktLjM5OC4wNjloLS45Nzl2LS43NDZoLjk5MmMuMTQgMCAuMjg3LjAwNy4zODIuMDYuMTA1LjA1LjE3LjE1NC4xNy4yOTggMCAuMTQ2LS4wNjIuMjY0LS4xNjcuMzE5em0yLjMxMSAxLjk1NGgtLjgyMlYyNy40MmguODIydjMuMzU3em05LjU0NSAwaC0xLjE0MmwtMS41MjctMi41MnYyLjUyaC0xLjY0MmwtLjMxMy0uNzQ5SDIxLjMxbC0uMzA0Ljc1aC0uOTQzYy0uMzkyIDAtLjg4OC0uMDg3LTEuMTY4LS4zNzItLjI4NC0uMjg1LS40MzEtLjY3MS0uNDMxLTEuMjgyIDAtLjQ5OC4wODgtLjk1My40MzQtMS4zMTIuMjYxLS4yNjguNjY5LS4zOTIgMS4yMjQtLjM5MmguNzh2LjcyaC0uNzYzYy0uMjk0IDAtLjQ2LjA0My0uNjIuMTk4LS4xMzguMTQyLS4yMzIuNDEtLjIzMi43NiAwIC4zNi4wNzIuNjIuMjIyLjc5LjEyNC4xMzIuMzQ5LjE3Mi41NjEuMTcyaC4zNjJsMS4xMzYtMi42NGgxLjIwN2wxLjM2NCAzLjE3NXYtMy4xNzVoMS4yMjdsMS40MTYgMi4zMzh2LTIuMzM4aC44MjZ2My4zNTd6bS00Ljg5OC0xLjQ0NS0uNTU4LTEuMzM4LS41NTQgMS4zMzdoMS4xMTJ6bTYuOTUgNi44MDVjLS4xOTUuMjg1LS41NzYuNDMtMS4wOTMuNDNoLTEuNTU2di0uNzJoMS41NWMuMTU0IDAgLjI2MS0uMDIxLjMyNi0uMDg0YS4yOTYuMjk2IDAgMCAwIC4wOTYtLjIxOS4yNzYuMjc2IDAgMCAwLS4wOTktLjIyMmMtLjA1OC0uMDUxLS4xNDQtLjA3NS0uMjg0LS4wNzUtLjc1Ny0uMDI1LTEuNy4wMjQtMS43LTEuMDQgMC0uNDg2LjMxLS45OTggMS4xNTYtLjk5OGgxLjYwNXYtLjY2OGgtMS40OTJjLS40NSAwLS43NzcuMTA3LTEuMDA4LjI3NHYtLjI3NGgtMi4yMDZjLS4zNTIgMC0uNzY2LjA4Ny0uOTYyLjI3NHYtLjI3NGgtMy45Mzl2LjI3NGMtLjMxMy0uMjI2LS44NDMtLjI3NC0xLjA4Ni0uMjc0aC0yLjU5OXYuMjc0Yy0uMjQ4LS4yNC0uOC0uMjc0LTEuMTM1LS4yNzRoLTIuOTA4bC0uNjY1LjcxNi0uNjIzLS43MTZINi42OTR2NC42ODVoNC4yNjJsLjY4NS0uNzI5LjY0Ni43MjkgMi42MjcuMDAydi0xLjEwMmguMjU4Yy4zNDkuMDA1Ljc2LS4wMDkgMS4xMjMtLjE2NXYxLjI2NGgyLjE2NnYtMS4yMmguMTA1Yy4xMzQgMCAuMTQ3LjAwNS4xNDcuMTM3djEuMDgzaDYuNTgxYy40MTggMCAuODU1LS4xMDcgMS4wOTctLjN2LjNoMi4wODhjLjQzNCAwIC44NTktLjA2MSAxLjE4MS0uMjE2di0uODczem0tMTMuMDUtMS44MDNjMCAuOTMzLS43IDEuMTI2LTEuNDAzIDEuMTI2SDE0LjJ2MS4xMjZoLTEuNTY2bC0uOTkyLTEuMTEyLTEuMDMxIDEuMTEySDcuNDJWMzMuMjNoMy4yNGwuOTkyIDEuMTAxIDEuMDI1LTEuMWgyLjU3NWMuNjQgMCAxLjM1OC4xNzYgMS4zNTggMS4xMDV6bS02LjQwNiAxLjU0Nkg4LjIyM3YtLjY2OGgxLjc2OXYtLjY4NWgtMS43N3YtLjYxaDIuMDJsLjg4Mi45NzgtLjkyLjk4NXptMy4xOTEuMzg0LTEuMjM2LTEuMzY4IDEuMjM2LTEuMzI0djIuNjkyem0xLjgzLTEuNDkzaC0xLjA0MXYtLjg1NWgxLjA1Yy4yOTEgMCAuNDkzLjExOC40OTMuNDEyIDAgLjI5LS4xOTIuNDQzLS41MDIuNDQzem01LjQ1NS0xLjU0MmgyLjY5di42OTRoLTEuODg3di42MWgxLjg0di42ODVoLTEuODR2LjY2OGwxLjg4Ny4wMDR2LjY5NmgtMi42OVYzMy4yM3ptLTEuMDMzIDEuNzk3YS44NzcuODc3IDAgMCAxIC4zOTQuMjgxYy4xMTQuMTY1LjEzLjMxOC4xMzQuNjEzdi42NjZoLS44MXYtLjQyYzAtLjIwMi4wMi0uNS0uMTMtLjY1Ny0uMTE3LS4xMi0uMjk2LS4xNS0uNTktLjE1aC0uODYydjEuMjI3aC0uODFWMzMuMjNoMS44NmMuNDA5IDAgLjcwNi4wMTguOTcuMTU5LjI1NS4xNTMuNDE1LjM2My40MTUuNzQ1IDAgLjUzNi0uMzYuODEtLjU3MS44OTR6bS0uNDU2LS40MjVjLS4xMDguMDY0LS4yNC4wNy0uMzk4LjA3aC0uOTc5di0uNzU1aC45OTNjLjE0MyAwIC4yODYuMDAzLjM4NC4wNi4xMDQuMDU1LjE2Ny4xNi4xNjcuMzAzYS4zNi4zNiAwIDAgMS0uMTY3LjMyMnptNy4yNzQuMjE0Yy4xNTcuMTYyLjI0MS4zNjYuMjQxLjcxMSAwIC43MjMtLjQ1MyAxLjA2LTEuMjY2IDEuMDZoLTEuNTd2LS43MmgxLjU2NGMuMTUzIDAgLjI2MS0uMDIuMzMtLjA4M2EuMjk5LjI5OSAwIDAgMC0uMDA0LS40NDFjLS4wNjEtLjA1MS0uMTQ3LS4wNzUtLjI4Ny0uMDc1LS43NTMtLjAyNS0xLjY5Ny4wMjMtMS42OTctMS4wNCAwLS40ODYuMzA3LS45OTggMS4xNTItLjk5OGgxLjYxNXYuNzE0aC0xLjQ3OGMtLjE0NiAwLS4yNDIuMDA1LS4zMjMuMDYtLjA4OC4wNTUtLjEyLjEzNi0uMTIuMjQyYS4yNTcuMjU3IDAgMCAwIC4xNzUuMjUuOTMuOTMgMCAwIDAgLjMxNC4wMzlsLjQzNC4wMTFjLjQzNy4wMS43MzguMDg2LjkyLjI3em0zLjE5Ny0uODk5aC0xLjQ2OGMtLjE0NyAwLS4yNDQuMDA2LS4zMjYuMDYtLjA4NS4wNTUtLjExOC4xMzYtLjExOC4yNDNhLjI1My4yNTMgMCAwIDAgLjE3Ni4yNS45MzEuOTMxIDAgMCAwIC4zMS4wMzhsLjQzNy4wMTFjLjQ0MS4wMTEuNzM1LjA4Ny45MTUuMjcuMDMyLjAyNi4wNTIuMDU1LjA3NC4wODR2LS45NTZ6IiBmaWxsPSIjZmZmIi8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNDIuMjA3IiB5MT0iMTguNjA1IiB4Mj0iMzYuMDYzIiB5Mj0iMzkuNDE4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzIyMkU3MiIvPjxzdG9wIG9mZnNldD0iLjU5MiIgc3RvcC1jb2xvcj0iIzQwQ0JGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNDQjc5MiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPgo="})),currencies:[],capability:"card_payments",allows_manual_capture:!0},giropay:{id:"giropay",label:Object(M.__)("giropay","woocommerce-gateway-stripe"),description:Object(M.__)("Expand your business with giropay — Germany’s second most popular payment system.","woocommerce-gateway-stripe"),Icon:t=>Object(i.createElement)(s,u()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjYgMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTS45NjUgMi42YTIuNCAyLjQgMCAwMTIuNC0yLjRoMTkuNzE0YTIuNCAyLjQgMCAwMTIuNCAyLjR2MTAuOGEyLjQgMi40IDAgMDEtMi40IDIuNEgzLjM2NWEyLjQgMi40IDAgMDEtMi40LTIuNFYyLjZ6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMy4wOCAxLjRIMy4zNjRhMS4yIDEuMiAwIDAwLTEuMiAxLjJ2MTAuOGExLjIgMS4yIDAgMDAxLjIgMS4yaDE5LjcxNGExLjIgMS4yIDAgMDAxLjItMS4yVjIuNmExLjIgMS4yIDAgMDAtMS4yLTEuMnpNMy4zNjQuMmEyLjQgMi40IDAgMDAtMi40IDIuNHYxMC44YTIuNCAyLjQgMCAwMDIuNCAyLjRoMTkuNzE0YTIuNCAyLjQgMCAwMDIuNC0yLjRWMi42YTIuNCAyLjQgMCAwMC0yLjQtMi40SDMuMzY1eiIgZmlsbD0iIzBGMzM2NSIvPjxwYXRoIGQ9Ik0xMy4yMjMuMmg4LjI1N2E0IDQgMCAwMTQgNHY3LjZhNCA0IDAgMDEtNCA0aC04LjI1N1YuMnoiIGZpbGw9IiMwRjMzNjUiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE0Ljg5NSAxMi44NjNoMi41NTN2LTMuNTVoLjAyOGMuNDgzLjc3OCAxLjQ0NyAxLjA2NiAyLjM0MSAxLjA2NiAyLjE5OSAwIDMuMzc2LTEuNjA1IDMuMzc2LTMuNTM3IDAtMS41OC0xLjEyLTMuMy0zLjE2My0zLjMtMS4xNjMgMC0yLjI0Mi40MTUtMi43NTIgMS4zM2gtLjAyOVYzLjY5NGgtMi4zNTR2OS4xN3ptNS42NjItNS45N2MwIDEuMDQtLjU4MiAxLjc1NS0xLjU0NiAxLjc1NS0uODUyIDAtMS41NjItLjcxNC0xLjU2Mi0xLjY2OCAwLS45NzguNjI1LTEuNzA2IDEuNTYyLTEuNzA2Ljk5MiAwIDEuNTQ2Ljc1MiAxLjU0NiAxLjYxOHoiIGZpbGw9IiNGRkZGRkUiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjU0NSAzLjY5M0g5LjIzMnYxLjE4aC0uMDI4YTIuOTYgMi45NiAwIDAwLTIuNTExLTEuMzNjLTIuMjk4IDAtMy4zMzQgMS40NTUtMy4zMzQgMy40IDAgMS45MzIgMS4yNjMgMy4yODYgMy4yOTIgMy4yODYgMS4wMjEgMCAxLjg3Mi0uMzUgMi40ODItMS4xMTdoLjAyOHYuMzUyYzAgMS4yOC0uNzk0IDEuODk0LTIuMjcgMS44OTQtMS4wNjMgMC0xLjcxNi0uMi0yLjQ5Ni0uNTM5TDQuMjY3IDEyLjZhOS42NSA5LjY1IDAgMDAyLjgyMy40MTRjMi45OCAwIDQuNDU1LS44NjYgNC40NTUtMy41NXYtNS43N3pNNS45OTYgNi45MDRjMC0uODkuNDk3LTEuNjMgMS40NDctMS42MyAxLjE0OSAwIDEuNjMxLjgxNSAxLjYzMSAxLjU0MyAwIDEuMDA0LS43MjMgMS42OC0xLjYzIDEuNjgtLjc2NyAwLTEuNDQ4LS41NzctMS40NDgtMS41OTN6IiBmaWxsPSIjRDgyMzJBIi8+PC9zdmc+Cg=="})),currencies:["EUR"],capability:"giropay_payments"},sepa_debit:{id:"sepa_debit",label:Object(M.__)("Direct debit payment","woocommerce-gateway-stripe"),description:Object(M.__)("Reach 500 million customers and over 20 million businesses across the European Union.","woocommerce-gateway-stripe"),Icon:t=>Object(i.createElement)(N,u()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjcgOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTMuMjk1IDIuMzk3di0uMDEzbC40MDEtLjg1QTMuNTg0IDMuNTg0IDAgMDAxMS4wOC40MDJhMy42IDMuNiAwIDAwLTMuMzMgMi4yMzZINi45OWwtLjU0MiAxLjA3aDEuMDQ1YTMuOTU0IDMuOTU0IDAgMDAtLjAxNS4yOTRjMCAuMTA3LjAwNy4yMTIuMDE2LjMxN0g2Ljk5bC0uNDc0IDEuMDU3aDEuMjM1QTMuNTk5IDMuNTk5IDAgMDAxMS4wOCA3LjZjLjgzNiAwIDEuNjA1LS4yODkgMi4yMTYtLjc2OHYtMS4zNmEyLjUzNyAyLjUzNyAwIDAxLTQuMTI4LS4wOTdoMi42NzdsLjUwMS0xLjA1N0g4Ljc1OGEyLjQ3NSAyLjQ3NSAwIDAxLS4wNC0uMzgzYzAtLjA1LjAwNy0uMDk5LjAxNC0uMTQ3bC4wMS0uMDhoMy44NzRsLjU0My0xLjA3MUg5LjA4NWEyLjU0IDIuNTQgMCAwMTIuMTg1LTEuMjU0IDIuNTQgMi41NCAwIDAxMi4wMjUgMS4wMTR6IiBmaWxsPSIjRkZCRTAwIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNC4yMSA2LjMyNGwuMzYgMS4yNDJoMS45OTJMMjQuMzY2LjRoLTIuOTQyTDE5LjI3IDcuNTY2aDEuOTc5bC4zNjItMS4yNDJoMi42em0tLjQxNS0xLjQzNkgyMi4wM2wuODg2LTMuMDM3Ljg3OSAzLjAzN3pNMTUuODk2IDUuNjg4aDEuNDM3czEuMTY2LjEwNyAxLjc2Mi0uMTljLjU5Ni0uMjk5Ljc3Mi0uODAxLjg1My0xLjEuMDc4LS4yOC4xMTgtMS4yMTUuMTIyLTEuMzE0di0uMDA5Yy4wMTctLjMzNy4wMDktMS4xMi0uMzUyLTEuODItLjM3Ni0uNzMyLTEuNTgtLjg0LTIuMDYtLjg1M2gtLjAyOGMtLjExLS4wMDMtLjE3NiAwLS4xNzYgMGgtMy40N3Y3LjE2NGgxLjkxMlY1LjY4OHptMS4zODMtMy43N2gtMS4zODN2Mi4xNDNoMS4yNzJjLjE3OC0uMDAyLjc4NS0uMDMxLjg0My0uMzY2LjA2My0uMzY4LjA2LS43NzcuMDU5LS44M2E0LjE3MyA0LjE3MyAwIDAwLS4wNzMtLjU1M2MtLjA4MS0uMzkzLS43MTgtLjM5My0uNzE4LS4zOTN6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTQuNTM0IDcuNTIyczEuMjIyLS4wNiAxLjU2LS45ODFjLjM0LS45MjIuMDk2LTIuMTQ0LjA5Ni0yLjE0NHMtLjEyOC0uODIyLTEuMzEzLTEuMDUybC0uMDAyLS4wMDQtLjAwMS0uMDA0YTQuNTQgNC41NCAwIDAwLS40NDUtLjA1MmgtLjAwMmE2Ni40MSA2Ni40MSAwIDAwLTEuNTMxLS4xMDVsLS4wMi0uMDA4Yy0uMDA2LS4wMDMtLjAxMi0uMDA2LS4wMi0uMDA4LS43MzMuMDEzLS43NDYtLjMxMi0uNzQ2LS4zNTMgMC0uMDA2LS4wMDQtLjAyMi0uMDEtLjA0NC0uMDI4LS4xMi0uMTA2LS40NDcuMDc3LS42ODguMjEtLjI3NCAxLjA0NS0uMjQgMS4xMDQtLjIzNy4xOC4wMDguNDI4LjAyMi41NS4wNDcuMjAzLjA0MS40MjIuMTY4LjM5My43NzNoMS44MDN2LS41NTZzLjA0MS0uOTYyLS42MzctMS4zNDFDNC44NDIuNDU4IDQuMjQ3LjQxNyA0LjAzNy40MTNoLS4wMDJzLTEuMDg1LS4wMjgtMS42IDBhNS4wMDYgNS4wMDYgMCAwMC0xLjA0Ny4xNkMxLjE0OC42MjUuOTEuNzIuNzE1Ljg5MWEuMDk3LjA5NyAwIDAwLS4wMTMuMDE1QS4xMS4xMSAwIDAxLjY5LjkyTC42NzYuOTNDLjY3LjkzMi42NjQuOTM2LjY1OS45NC42NDYuOTUzLjY0Ljk2NS42MzQuOTc3LjYzMS45ODQuNjI3Ljk5Mi42MjIgMWMtLjU4OS42NTMtLjQ4IDEuOTIxLS4yNiAyLjY4LjE3My42MDUuODguODEzIDEuMjE1Ljg3OWwuMDAyLjAwMS4wMDIuMDAyLjEwNS4wMTUuMDE4LjAwMy4wMTQuMDAyLjAxNC4wMDIuMDEzLjAwMi4wMTEuMDAxYy40NTUuMDU1IDEuNTEyLjEzIDEuOTguMTZ2LjAwNWwuMDI2LS4wMDIuMTg3LjAxMi4wMTQuMDAxYy4xNzcuMDMzLjM5Ni4xMzYuMzk3LjQ2NHYuMDM3Yy4wMDIuMzc2LjAwMy40NzMtLjA0LjUzNWEuMTguMTggMCAwMC0uMDY4LjA2NWMtLjA4NC4xNDItLjM4OS4xOC0uNjEuMTloLTEuMThjLS41MDEtLjA2OC0uNDg4LS42MS0uNDg4LS42MXYtLjIxN0guMTg1di4yN1MuMTMgNi42NS43IDcuMDdjLjQ5Mi4zNjMgMS4wMTkuNDU4IDEuNzYyLjQ3OHYuMDFoLjhzLjcuMDMxIDEuMjcyLS4wMzh2LjAwMnoiIGZpbGw9IiNmZmYiLz48L3N2Zz4K"})),currencies:["EUR"],capability:"sepa_debit_payments"},sofort:{id:"sofort",label:Object(M.__)("Sofort","woocommerce-gateway-stripe"),description:Object(M.__)("Accept secure bank transfers from Austria, Belgium, Germany, Italy, Netherlands, and Spain.","woocommerce-gateway-stripe"),Icon:t=>Object(i.createElement)(L,u()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTEgMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTMuOTk5IDExLjA1NWEuNzUuNzUgMCAwMS4wMTEgMS4wNjJsLS4wNTYuMDYxYS43NS43NSAwIDAxLTEuMDYyLjAxMmwtMS42NzYtMS42NkMuNzUyIDEwLjA2Ni42OSA5LjQ5Ni45OCA5LjE5NGwuMDU2LS4wNjFhLjY4NS42ODUgMCAwMS45MS0uMDYyYy4xMy4xLjMyLjA3OC40MjYtLjA1YS4zMDguMzA4IDAgMDAtLjA1LS40MjVBMS4yOTMgMS4yOTMgMCAwMC42IDguNzA4bC0uMDU2LjA2MWMtLjU0Mi41Ni0uNDM2IDEuNTA0LjI0IDIuMThsMS42ODMgMS42NzdjLjU0Mi41MiAxLjM5Ny41MDggMS45MjItLjAyOGwuMDYyLS4wNjJhMS4zNjEgMS4zNjEgMCAwMC0uMDI4LTEuOTExLjI5NS4yOTUgMCAwMC0uNDI1LjAwNS4yOS4yOSAwIDAwMCAuNDI1ek0yLjk5MyAyLjA1MmwuNjg3IDUuNjQ0YS4yOTkuMjk5IDAgMDAuMzM2LjI2My4yOTkuMjk5IDAgMDAuMjYyLS4zMzVsLS42ODctNS42NjctLjAwNi0uMDM0Yy0uMTE3LS40Ny4xNzQtLjk5NS41NjUtMS4wNzhhLjgzNi44MzYgMCAwMS42MzEuMTE3Ljg0Ljg0IDAgMDEuMzU4LjUzbDEuMTk2IDUuMTA5YS4zMDEuMzAxIDAgMTAuNTg3LS4xNEw1LjczMiAxLjM3QTEuNDM2IDEuNDM2IDAgMDA0LjAyNy4yNTJjLS43MzguMTU3LTEuMjE4IDEuMDE3LTEuMDM0IDEuOHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNOS4yOTcgOC42OGwxLjM1OC02Ljc2MkExLjQzIDEuNDMgMCAwMDkuNjYuMjQ3IDEuNDk1IDEuNDk1IDAgMDA3Ljg0IDEuMzA4TDYuMzM1IDYuNDU2YS4zMDEuMzAxIDAgMDAuMjA3LjM3NC4zMDEuMzAxIDAgMDAuMzc0LS4yMDdMOC40MiAxLjQ3QS44OTcuODk3IDAgMDE5LjQ5OC44MjhhLjgzMi44MzIgMCAwMS41NjUuOTY3TDguNzA1IDguNTYzYS4zMDUuMzA1IDAgMDAuMjM1LjM1Ny4zMDcuMzA3IDAgMDAuMzU3LS4yNHptLTMuNDE1IDYuNTE2Yy0yLjE1MSAwLTMuOTQ1LTEuNTc2LTMuOTQ1LTMuODE3YS4zLjMgMCAwMC0uMzAyLS4zMDEuMy4zIDAgMDAtLjMwMi4zMDFjMCAyLjU5NCAyLjA4NSA0LjQyMSA0LjU1IDQuNDIxYS4zLjMgMCAwMC4zMDEtLjMwMi4zLjMgMCAwMC0uMzAyLS4zMDJ6bS0xLjA2MS01LjI3YS43MTguNzE4IDAgMDEtLjI5Ny40MTRsLS4wNjcuMDM5YS43NTYuNzU2IDAgMDEtMS4wNS0uMjAxbC0xLjMyLTEuOTYyYy0uMzU3LS41NDgtLjMxMi0xLjExOC4wMzQtMS4zNThsLjA2Mi0uMDQ1Yy40NDctLjI1Ny44MjEtLjA2MSAxLjIwNy41MDNsMS4xIDEuNjQzYy4wOTYuMTQuMjguMTc0LjQyLjA4NC4xNC0uMDkuMTczLS4yOC4wODQtLjQxOUwzLjg5MyA2Ljk4MWMtLjU0OC0uNzk0LTEuMjE4LTEuMTQ2LTIuMDI5LS42NzZsLS4wODQuMDU2Yy0uNjQ4LjQ0MS0uNzI2IDEuMzkxLS4xOTUgMi4xOWwxLjMxOSAxLjk2OGMuNDI0LjYyIDEuMjYzLjc4MiAxLjg4My4zNjNsLjA2Ny0uMDQ1Yy4yNjMtLjE3OS40NTMtLjQ0Ny41NDItLjc1NGEuMjk5LjI5OSAwIDAwLS4yMTItLjM3LjI5NS4yOTUgMCAwMC0uMzYzLjIxM3oiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNNi44MTUgMTAuOTIxYy0uNjI2LjM1Mi0xLjAxOCAxLjAwNi0xLjA2MiAyLjAwNmEuMy4zIDAgMDAuMjg1LjMxOS4zMDUuMzA1IDAgMDAuMzE4LS4yODVjLjA0NS0uOTA1LjM5Ny0xLjM5Mi45NjItMS42MDQuMzAxLS4xMTIuNjMxLS4xMzQuOTIyLS4xMDZsLjA3Mi4wMWMuMzg2LjA3NC41MDktLjUwMi4xMjMtLjU5MWwtMi4zMTktLjUyYy0xLjA4NC0uMjk2LTEuMjUyLS42OTktMS4wNS0xLjM3LjA4OS0uMjkuMjYyLS40NDEuNTM2LS41MDIuMTc5LS4wNC4zNzQtLjAzNC41NjQgMCAuMDU2LjAxLjA5NS4wMTYuMTEyLjAyMkw5LjggOS4xMmwuMDY3LjAyM2EuNTY4LjU2OCAwIDAxLjE3OS4xMjhjLjIzNS4yNTIuMzY5LjcyNy4zMDIgMS41MS0uMjMgMi43MzgtMS41MDQgNC40MzctNC41MzMgNC40MDlhLjMuMyAwIDAwLS4wMDUuNTk4YzMuMzk4LjAyOCA0Ljg4NC0xLjk0NSA1LjEzNi00Ljk2My4wNzgtLjkzOS0uMDk1LTEuNTgyLS40NTktMS45NjctLjItLjIxMy0uNDEzLS4zMTMtLjU3NS0uMzM2bC0zLjQ4Mi0uODFjLS4wMjItLjAwNi0uMDc4LS4wMjItLjE1Ny0uMDMzYTIuMTY2IDIuMTY2IDAgMDAtLjgwNC4wMDVjLS40Ny4xMDYtLjgyNy40MDMtLjk3OC45MTctLjI5MS45NjcuMDE2IDEuNzI3IDEuNDggMi4xMjNsLjg0NS4xOTZ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+Cg=="})),currencies:["EUR"],capability:"sofort_payments"},eps:{id:"eps",label:Object(M.__)("EPS","woocommerce-gateway-stripe"),description:Object(M.__)("EPS is an Austria-based payment method that allows customers to complete transactions online using their bank credentials.","woocommerce-gateway-stripe"),Icon:t=>Object(i.createElement)(s,u()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjIgMTUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE5Ljc3IDcuNzU0aC0yLjAwOGEuNDAyLjQwMiAwIDAgMS0uNDA1LS40YzAtLjIyMy4xODItLjQyLjQwNS0uNDJoMy4wNThWNS40MjZoLTMuMDU4Yy0xLjA2NyAwLTEuOTM1Ljg3LTEuOTM1IDEuOTM1IDAgMS4wNjQuODY4IDEuOTM0IDEuOTM1IDEuOTM0aDEuOTgxYy4yMjQgMCAuNDA1LjE3Ny40MDUuNCAwIC4yMjMtLjE4MS4zODctLjQwNS4zODdoLTQuMjQ4Yy0uMzYuNjg4LS43MTEgMS4yNzktMS40MjMgMS41NzRoNS42OThjMS4wNS0uMDE1IDEuOTA4LS45MDMgMS45MDgtMS45NThhMS45NSAxLjk1IDAgMCAwLTEuOTA4LTEuOTQ0WiIgZmlsbD0iIzcxNzA2RiIvPjxwYXRoIGQ9Ik0xMi4wNzIgNS40MjZjLTEuNzAyIDAtMy4wODggMS4zOTUtMy4wODggMy4xMDhWMTVoMS41NHYtMy4zNDRoMS41NDVjMS43MDIgMCAzLjA4My0xLjQxMyAzLjA4My0zLjEyNyAwLTEuNzE0LTEuMzc4LTMuMTAzLTMuMDgtMy4xMDNabTAgNC42NTZoLTEuNTQ3VjguNTI5YzAtLjg2OC42OS0xLjU3NCAxLjU0Ny0xLjU3NHMxLjU1My43MDYgMS41NTMgMS41NzRjMCAuODY4LS42OTYgMS41NTMtMS41NTMgMS41NTNaIiBmaWxsPSIjNzE3MDZGIi8+PHBhdGggZD0iTTQuMTA1IDExLjY1NmMtMS40NTcgMC0yLjY4Mi0xLjAzOS0zLjAxMy0yLjM5NSAwIDAtLjA5Ni0uNDQ4LS4wOTYtLjc0NCAwLS4yOTUuMDktLjc0OC4wOS0uNzQ4YTMuMTA5IDMuMTA5IDAgMCAxIDYuMTI3Ljc0di43NTNIMi42NjhjLjI2OC41MjUuODExLjgyIDEuNDM3LjgyaDQuMDg2bC4wMDYtNC40MzdjMC0uNjYxLS41NDEtMS4yMDItMS4yMDMtMS4yMDJIMS4yMDNDLjU0IDQuNDQzIDAgNC45NjcgMCA1LjYyOXY1Ljc5MWMwIC42NjIuNTQxIDEuMjIgMS4yMDMgMS4yMmg1Ljc5MWMuNTk0IDAgMS4wODktLjQyNyAxLjE4NS0uOTg0SDQuMTA1WiIgZmlsbD0iI0M4MDM2RiIvPjxwYXRoIGQ9Ik00LjA5OCA2Ljg4Yy0uNjIzIDAtMS4xNjYuMzgyLTEuNDM1Ljg3NGgyLjg3Yy0uMjY5LS40OTItLjgxMS0uODc0LTEuNDM1LS44NzRaTTYuNzIxIDIuNTZDNi43MjEgMS4xNDUgNS41NDcgMCA0LjA5OCAwIDIuNjczIDAgMS41MTQgMS4xMDggMS40NzYgMi40OXYuNzg3YzAgLjA5MS4wNzQuMTgyLjE2OS4xODJoLjk2NWMuMDk0IDAgLjE3Ny0uMDkuMTc3LS4xODNWMi41NmMwLS43MDYuNTg4LTEuMjggMS4zMTEtMS4yOC43MjQgMCAxLjMxMi41NzQgMS4zMTIgMS4yOHYuNzE3YzAgLjA5Mi4wNzYuMTgzLjE3LjE4M2guOTY2Yy4wOTQgMCAuMTc1LS4wOS4xNzUtLjE4M1YyLjU2WiIgZmlsbD0iI0M4MDM2RiIvPjwvc3ZnPgo="})),currencies:["EUR"],capability:"eps_payments"},bancontact:{id:"bancontact",label:Object(M.__)("Bancontact","woocommerce-gateway-stripe"),description:Object(M.__)("Bancontact is the most popular online payment method in Belgium, with over 15 million cards in circulation.","woocommerce-gateway-stripe"),Icon:t=>Object(i.createElement)(s,u()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNDIgMjYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM3LjM2NyA0LjU0NkgyNC4zOUwyMy4wNjQgNi4wNGwtNC4yODEgNC44MjgtMS4zMjggMS40OTNINC42NDZsMS4yOTQtMS41MS42MTQtLjcxMyAxLjI5NC0xLjUxaC01Ljg5Qy44NzkgOC42MjggMCA5LjU0MSAwIDEwLjYzNnY0LjI0OGMwIDEuMTExLjg4IDIuMDA3IDEuOTU4IDIuMDA3SDI0LjU1N2MxLjA3OSAwIDIuNTU2LS42OCAzLjI2OS0xLjQ5M2wzLjQxOC0zLjg4MyA2LjEyMy02Ljk2OVoiIGZpbGw9IiMwMDRFOTEiLz48cGF0aCBkPSJNMzkuOTc0LjAxN2MxLjA3OCAwIDEuOTU4LjkxMiAxLjk1OCAyLjAwN3Y0LjI0OGMwIDEuMTEyLS44OCAyLjAwOC0xLjk1OCAyLjAwOGgtNS44OTFsMS4zMTEtMS40OTQuNjQ3LS43NDYgMS4zMTEtMS40OTRIMjQuMzc3bC02LjkyIDcuNzk5SDQuNTY1bDkuMjQyLTEwLjQ1My4zNDgtLjM5OUMxNC44ODYuNjggMTYuMzYzIDAgMTcuNDQyIDBoMjIuNTMzdi4wMTdaIiBmaWxsPSIjRkQwIi8+PHBhdGggZD0iTTQxLjkzIDI1Ljc4NHYtLjYxNGMwLS4wODMtLjA1LS4xMzItLjE2Ni0uMTMyaC0uMzk4Yy0uMTE3IDAtLjItLjAxNy0uMjE2LS4wNjctLjAzMy0uMDUtLjAzMy0uMTQ5LS4wMzMtLjMxNXYtMi4zMjNoLjY0N2EuMTUuMTUgMCAwIDAgLjExNi0uMDUuMTUuMTUgMCAwIDAgLjA1LS4xMTZ2LS42NDdhLjE1LjE1IDAgMCAwLS4wNS0uMTE2LjE1LjE1IDAgMCAwLS4xMTYtLjA1aC0uNjQ3di0uODQ2YzAtLjA1LS4wMTctLjA4My0uMDMzLS4xYS4yMzYuMjM2IDAgMCAwLS4xLS4wMzNoLS4wMTdsLS45NjIuMTY2YS44MDIuODAyIDAgMCAwLS4xMTYuMDVjLS4wMzMuMDMzLS4wNS4wNjYtLjA1LjF2LjY0NmgtLjY0N2EuMTUuMTUgMCAwIDAtLjExNi4wNS4xNS4xNSAwIDAgMC0uMDUuMTE2di41MzFjMCAuMDUuMDE3LjA4My4wNS4xLjAzMy4wMzMuMDY2LjA1LjExNi4wNjZsLjY0Ny4xdjIuMzIzYzAgLjI4Mi4wMzMuNTE0LjA4My42OTcuMDY3LjE4Mi4xNS4zMTUuMjQ5LjQxNS4xMTYuMS4yNDkuMTY2LjQxNS4xOTkuMTY2LjAzMy4zNjUuMDUuNTguMDUuMTE3IDAgLjIxNiAwIC4zMTYtLjAxNy4wODMtLjAxNy4xOTktLjAzMy4zMTUtLjA1LjA4MyAwIC4xMzMtLjA1LjEzMy0uMTMzWm0tMy40NTItLjA4M3YtLjcxM2MwLS4wNS0uMDE2LS4wODMtLjA1LS4xLS4wMzItLjAxNi0uMDY2LS4wMzMtLjA5OS0uMDMzaC0uMDE2Yy0uMTUuMDE3LS4zLjAzMy0uNDMyLjAzMy0uMTMzLjAxNy0uMzE1LjAxNy0uNTQ3LjAxN2EuNjMyLjYzMiAwIDAgMS0uNDY1LS4yYy0uMDY2LS4wNjYtLjEtLjE2NS0uMTMzLS4yODFhMS42NyAxLjY3IDAgMCAxLS4wNS0uNDQ4di0uNjY0YzAtLjE4My4wMTctLjMzMi4wNS0uNDQ4YS44OTMuODkzIDAgMCAxIC4xMzMtLjI4Mi42MzIuNjMyIDAgMCAxIC40NjUtLjJjLjIzMiAwIC40MTQgMCAuNTQ3LjAxNy4xMzMuMDE3LjI4Mi4wMTcuNDMyLjAzNGguMDE2Yy4wNSAwIC4wODMtLjAxNy4xLS4wMzQuMDMzLS4wMTYuMDUtLjA1LjA1LS4xdi0uNzEzYzAtLjA2Ni0uMDE3LS4xLS4wMzQtLjExNi0uMDMzLS4wMTYtLjA2Ni0uMDUtLjEzMi0uMDY2LS4xMTctLjAzMy0uMjUtLjA1LS40MzItLjA4M3MtLjM4Mi0uMDMzLS42My0uMDMzYy0uNTY0IDAtMS4wMTIuMTY2LTEuMzYuNTE0LS4zMzMuMzQ5LS41MTUuODQ2LS41MTUgMS41MXYuNjY0YzAgLjY0Ny4xNjYgMS4xNjEuNTE0IDEuNTEuMzMyLjM0OC43OTcuNTE0IDEuMzYuNTE0LjIzMyAwIC40NDktLjAxNy42MzEtLjAzMy4xODMtLjAzMy4zMzItLjA1LjQzMi0uMDgzYS4yNS4yNSAwIDAgMCAuMTMyLS4wNjdjLjAzMy0uMDE2LjAzMy0uMDY2LjAzMy0uMTE2Wm0tNS4xOTMtLjg0NmMtLjEuMDUtLjIuMDgzLS4zMTUuMTE2LS4xMTYuMDM0LS4yMzMuMDUtLjM0OS4wNS0uMTY2IDAtLjI5OC0uMDE3LS4zODEtLjA2Ni0uMDgzLS4wNS0uMTE3LS4xNS0uMTE3LS4zMzJ2LS4wNjdjMC0uMS4wMTctLjE4Mi4wMzQtLjI0OGEuNDMuNDMgMCAwIDEgLjExNi0uMTgzYy4wNS0uMDUuMTMzLS4wODMuMjE1LS4xMTYuMDg0LS4wMTcuMi0uMDMzLjM0OS0uMDMzaC40NDh2Ljg4Wm0xLjI2MS0xLjk0MWMwLS4yOTktLjA1LS41NDgtLjEzMy0uNzQ3YTEuMzg2IDEuMzg2IDAgMCAwLS4zNjUtLjQ5OCAxLjM2IDEuMzYgMCAwIDAtLjU4LS4yODIgMi44NjQgMi44NjQgMCAwIDAtLjc4LS4xIDUuOTYgNS45NiAwIDAgMC0uNzguMDUgMy40NTQgMy40NTQgMCAwIDAtLjU5OC4xMTdjLS4xLjAzMy0uMTQ5LjA4My0uMTQ5LjE4MnYuNjQ3YzAgLjA1LjAxNy4wODMuMDMzLjExNmEuMjM2LjIzNiAwIDAgMCAuMS4wMzRoLjAzM2MuMDY2IDAgLjE1LS4wMTcuMjMyLS4wMTcuMSAwIC4yLS4wMTcuMzE2LS4wMTcuMTE2IDAgLjI0OC0uMDE2LjM4MS0uMDE2aC4zODJjLjE4MiAwIC4zMzIuMDMzLjQzMS4xLjEuMDY2LjE2Ni4yMTUuMTY2LjQ0N3YuMjgyaC0uNDMxYy0uNjggMC0xLjE5NS4xLTEuNDk0LjMxNi0uMzE1LjIxNi0uNDY0LjU2NC0uNDY0IDEuMDI5di4wNjZjMCAuMjY1LjAzMy40ODEuMTE2LjY0Ny4wODMuMTgzLjE4My4zMTUuMzE1LjQzMS4xMzMuMS4yNjYuMTgzLjQzMi4yMzMuMTY2LjA1LjMzMi4wNjYuNTE0LjA2NmExLjcgMS43IDAgMCAwIC42MTQtLjFjLjE2Ni0uMDY2LjMzMi0uMTQ5LjQ5OC0uMjY1di4xMzNjMCAuMDUuMDE2LjA4My4wNS4xMTZhLjE1LjE1IDAgMCAwIC4xMTYuMDVoLjg5NmEuMTUuMTUgMCAwIDAgLjExNi0uMDUuMTUuMTUgMCAwIDAgLjA1LS4xMTZ2LTIuODU0aC0uMDE3Wm0tNC4yNjQgMi44N3YtLjYxNGMwLS4wODMtLjA1LS4xMzItLjE2Ni0uMTMyaC0uMzgyYy0uMTE2IDAtLjE5OS0uMDE3LS4yMTYtLjA2Ny0uMDMzLS4wNS0uMDMzLS4xNDktLjAzMy0uMzE1di0yLjMyM2guNjQ3YS4xNS4xNSAwIDAgMCAuMTE2LS4wNS4xNS4xNSAwIDAgMCAuMDUtLjExNnYtLjY0N2EuMTUuMTUgMCAwIDAtLjA1LS4xMTYuMTUuMTUgMCAwIDAtLjExNi0uMDVoLS42NDd2LS44NDZjMC0uMDUtLjAxNi0uMDgzLS4wMzMtLjEtLjAzMy0uMDE2LS4wNjYtLjAzMy0uMS0uMDMzaC0uMDE2bC0uOTYyLjE2NmMtLjA1LjAxNy0uMDgzLjAzMy0uMTE3LjA1LS4wMzMuMDMzLS4wNS4wNjYtLjA1LjF2LjY0NmgtLjY0NmEuMTUuMTUgMCAwIDAtLjExNy4wNS4xNS4xNSAwIDAgMC0uMDUuMTE2di41MzFjMCAuMDUuMDE3LjA4My4wNS4xLjAzNC4wMzMuMDY3LjA1LjExNy4wNjZsLjY0Ny4xdjIuMzIzYzAgLjI4Mi4wMzMuNTE0LjA4My42OTcuMDY2LjE4Mi4xNDkuMzE1LjI0OC40MTUuMS4xLjI1LjE2Ni40MTUuMTk5LjE2Ni4wMzMuMzY1LjA1LjU4MS4wNS4xMTYgMCAuMjE2IDAgLjMxNS0uMDE3LjA4My0uMDE3LjItLjAzMy4zMTYtLjA1LjA2NiAwIC4xMTYtLjA1LjExNi0uMTMzWm0tMy40ODUtLjAxNnYtMi42NTVjMC0uMjQ5LS4wMTYtLjQ4MS0uMDY2LS43MTRhMS42MjMgMS42MjMgMCAwIDAtLjIxNi0uNTguOTY2Ljk2NiAwIDAgMC0uNDMxLS4zODJjLS4xODMtLjEtLjQxNS0uMTUtLjcxNC0uMTVhMi4xNyAyLjE3IDAgMCAwLS42OC4xIDIuMzMgMi4zMyAwIDAgMC0uNjMuMzMydi0uMTk5YS4xNS4xNSAwIDAgMC0uMDUtLjExNi4xNS4xNSAwIDAgMC0uMTE3LS4wNWgtLjg5NmEuMTUuMTUgMCAwIDAtLjExNi4wNS4xNS4xNSAwIDAgMC0uMDUuMTE2djQuMjQ4YzAgLjA1LjAxNy4wODMuMDUuMTE2YS4xNS4xNSAwIDAgMCAuMTE2LjA1aC45NjNhLjE1LjE1IDAgMCAwIC4xMTYtLjA1LjE1LjE1IDAgMCAwIC4wNS0uMTE2di0zLjEzNmMuMTMzLS4wNjcuMjY1LS4xMzMuMzk4LS4xODNhLjk0Ni45NDYgMCAwIDEgLjM2NS0uMDY2Yy4xMTYgMCAuMjE2LjAxNi4yOTkuMDMzLjA4My4wMTcuMTMzLjA2Ni4xODIuMTE2LjA1LjA2Ny4wNjcuMTMzLjA4My4yMzMuMDE3LjA5OS4wMTcuMjE1LjAxNy4zNDh2Mi42NTVjMCAuMDUuMDE2LjA4My4wNS4xMTZhLjE1LjE1IDAgMCAwIC4xMTYuMDVoLjk2MmEuMTUuMTUgMCAwIDAgLjExNi0uMDVjLjA2Ny0uMDMzLjA4My0uMDgzLjA4My0uMTE2Wm0tNi4wNC0xLjg0MmMwIC42NDctLjIzMi45NzktLjcxMy45NzktLjIzMiAwLS40MTUtLjA4My0uNTMxLS4yNDktLjExNi0uMTY2LS4xODMtLjQxNS0uMTgzLS43M3YtLjU2NGMwLS4zMzIuMDY3LS41NjQuMTgzLS43My4xMTYtLjE2Ni4yOTktLjI1LjUzMS0uMjUuNDY1IDAgLjcxMy4zMzMuNzEzLjk4di41NjRabTEuMjk1LS41NjRjMC0uMzE1LS4wNS0uNjE0LS4xMzMtLjg2M2ExLjgwOSAxLjgwOSAwIDAgMC0uMzgyLS42NDcgMS42NzMgMS42NzMgMCAwIDAtLjYzLS40MTUgMi4yOSAyLjI5IDAgMCAwLS44NjMtLjE1Yy0uMzMyIDAtLjYxNC4wNS0uODYzLjE1LS4yNDkuMS0uNDY0LjIzMi0uNjMuNDE1YTEuODA3IDEuODA3IDAgMCAwLS4zODIuNjQ3IDIuNzcyIDIuNzcyIDAgMCAwLS4xMzMuODYzdi41NjRjMCAuMzE1LjA1LjYxNC4xMzMuODYzcy4yMTYuNDY0LjM4Mi42NDdjLjE2Ni4xODIuMzgxLjMxNS42My40MTUuMjUuMS41MzEuMTUuODYzLjE1LjMzMiAwIC42MTQtLjA1Ljg2My0uMTUuMjQ5LS4xLjQ2NC0uMjMzLjYzLS40MTUuMTY2LS4xODMuMjk5LS4zOTguMzgyLS42NDcuMDgzLS4yNS4xMzMtLjU0OC4xMzMtLjg2M3YtLjU2NFptLTQuNDQ3IDIuMzR2LS43MTRjMC0uMDUtLjAxNy0uMDgzLS4wNS0uMS0uMDMzLS4wMTYtLjA2Ni0uMDMzLS4xMTYtLjAzM2gtLjAxN2MtLjE0OS4wMTctLjI5OC4wMzMtLjQzMS4wMzNzLS4zMTUuMDE3LS41NDguMDE3YS42MzEuNjMxIDAgMCAxLS40NjUtLjJjLS4wNjYtLjA2Ni0uMDk5LS4xNjUtLjEzMi0uMjgxYTEuNjc0IDEuNjc0IDAgMCAxLS4wNS0uNDQ4di0uNjY0YzAtLjE4My4wMTctLjMzMi4wNS0uNDQ4YS44OTMuODkzIDAgMCAxIC4xMzMtLjI4Mi42MzEuNjMxIDAgMCAxIC40NjQtLjJjLjIzMyAwIC40MTUgMCAuNTQ4LjAxNy4xMzMuMDE3LjI4Mi4wMTcuNDMxLjAzNGguMDE3Yy4wNSAwIC4wODMtLjAxNy4xMTYtLjAzNC4wMzMtLjAxNi4wNS0uMDUuMDUtLjF2LS43MTNjMC0uMDY2LS4wMTctLjEtLjAzMy0uMTE2LS4wMzQtLjAxNi0uMDY3LS4wNS0uMTMzLS4wNjYtLjExNi0uMDMzLS4yNDktLjA1LS40MzEtLjA4My0uMTgzLS4wMzMtLjM4Mi0uMDMzLS42MzEtLjAzMy0uNTY0IDAtMS4wMTIuMTY2LTEuMzYuNTE0LS4zMzIuMzQ5LS41MTUuODQ2LS41MTUgMS41MXYuNjY0YzAgLjY0Ny4xNjYgMS4xNjEuNTE0IDEuNTEuMzMyLjM0OC43OTcuNTE0IDEuMzYxLjUxNC4yMzIgMCAuNDQ4LS4wMTcuNjMtLjAzMy4xODMtLjAzMy4zMTYtLjA1LjQzMi0uMDgzYS4yNS4yNSAwIDAgMCAuMTMzLS4wNjdjLjAzMy0uMDE2LjAzMy0uMDY2LjAzMy0uMTE2Wm0tMy45MTYuMDY2di0yLjY1NWMwLS4yNDktLjAxNy0uNDgxLS4wNjYtLjcxNGExLjYyIDEuNjIgMCAwIDAtLjIxNi0uNTguOTY2Ljk2NiAwIDAgMC0uNDMxLS4zODJjLS4xODMtLjEtLjQxNS0uMTUtLjcxNC0uMTVhMi4xNyAyLjE3IDAgMCAwLS42OC4xIDIuMzMgMi4zMyAwIDAgMC0uNjMuMzMydi0uMTk5YS4xNS4xNSAwIDAgMC0uMDUtLjExNi4xNS4xNSAwIDAgMC0uMTE3LS4wNUg5Ljg5YS4xNS4xNSAwIDAgMC0uMTE2LjA1LjE1LjE1IDAgMCAwLS4wNS4xMTZ2NC4yNDhjMCAuMDUuMDE3LjA4My4wNS4xMTZhLjE1LjE1IDAgMCAwIC4xMTYuMDVoLjk2M2EuMTUuMTUgMCAwIDAgLjExNi0uMDUuMTUuMTUgMCAwIDAgLjA1LS4xMTZ2LTMuMTM2Yy4xMzItLjA2Ny4yNjUtLjEzMy4zOTgtLjE4M2EuOTQ1Ljk0NSAwIDAgMSAuMzY1LS4wNjZjLjExNiAwIC4yMTUuMDE2LjI5OC4wMzMuMDgzLjAxNy4xMzMuMDY2LjE4My4xMTYuMDUuMDY3LjA2Ni4xMzMuMDgzLjIzMy4wMTcuMDk5LjAxNy4yMTUuMDE3LjM0OHYyLjY1NWMwIC4wNS4wMTYuMDgzLjA1LjExNmEuMTUuMTUgMCAwIDAgLjExNS4wNWguOTYzYS4xNS4xNSAwIDAgMCAuMTE2LS4wNWMuMDUtLjAzMy4wODMtLjA4My4wODMtLjExNlptLTYuMTczLS45MTNjLS4xLjA1LS4xOTkuMDgzLS4zMTUuMTE2LS4xMTYuMDM0LS4yMzIuMDUtLjM0OC4wNS0uMTY2IDAtLjI5OS0uMDE3LS4zODItLjA2Ni0uMDgzLS4wNS0uMTE2LS4xNS0uMTE2LS4zMzJ2LS4wNjdjMC0uMS4wMTctLjE4Mi4wMzMtLjI0OGEuNDMuNDMgMCAwIDEgLjExNi0uMTgzYy4wNS0uMDUuMTMzLS4wODMuMjE2LS4xMTYuMDgzLS4wMTcuMi0uMDMzLjM0OS0uMDMzaC40NDd2Ljg4Wm0xLjI3OC0xLjk0MWMwLS4yOTktLjA1LS41NDgtLjEzMy0uNzQ3YTEuMzg2IDEuMzg2IDAgMCAwLS4zNjUtLjQ5OCAxLjM1OSAxLjM1OSAwIDAgMC0uNTgtLjI4MiAyLjg2NCAyLjg2NCAwIDAgMC0uNzgtLjFjLS4yNjYgMC0uNTMxLjAxNy0uNzguMDVhMy40NTYgMy40NTYgMCAwIDAtLjU5Ny4xMTdjLS4xLjAzMy0uMTUuMDgzLS4xNS4xODJ2LjY0N2MwIC4wNS4wMTcuMDgzLjAzMy4xMTYuMDM0LjAxNy4wNjcuMDM0LjEuMDM0aC4wMzNjLjA2NyAwIC4xNS0uMDE3LjIzMi0uMDE3LjEgMCAuMi0uMDE3LjMzMi0uMDE3LjExNiAwIC4yNS0uMDE2LjM4Mi0uMDE2aC4zODJjLjE4MiAwIC4zMzEuMDMzLjQzMS4xLjEuMDY2LjE2Ni4yMTUuMTY2LjQ0N3YuMjgyaC0uNDMxYy0uNjggMC0xLjE5NS4xLTEuNDk0LjMxNi0uMjk5LjIxNi0uNDY0LjU2NC0uNDY0IDEuMDI5di4wNjZjMCAuMjY1LjAzMy40ODEuMTE2LjY0Ny4wODMuMTgzLjE4Mi4zMTUuMzE1LjQzMS4xMzMuMS4yNjUuMTgzLjQzMS4yMzMuMTY2LjA1LjMzMi4wNjYuNTE1LjA2NmExLjcgMS43IDAgMCAwIC42MTQtLjEgMi40MiAyLjQyIDAgMCAwIC40OTctLjI2NXYuMTMzYzAgLjA1LjAxNy4wODMuMDUuMTE2YS4xNS4xNSAwIDAgMCAuMTE2LjA1aC44OTZhLjE1LjE1IDAgMCAwIC4xMTctLjA1LjE1LjE1IDAgMCAwIC4wNS0uMTE2di0yLjg1NGgtLjAzNFptLTUuNzA4IDEuMjZhLjYzMi42MzIgMCAwIDEtLjIzMi41MTVjLS4xNS4xMTYtLjQ0OC4xODMtLjg0Ni4xODNoLS42NjR2LTEuNDk0aC44OTZjLjMxNSAwIC41NDguMDY3LjY2NC4yMTZhLjguOCAwIDAgMSAuMTgyLjQ5OHYuMDgzWm0tLjAzMy0yLjM3MmMwIC4wODMtLjAxNy4xNjYtLjAzMy4yNDlhLjQyMy40MjMgMCAwIDEtLjEzMy4yYy0uMDY2LjA0OS0uMTUuMDk5LS4yNDkuMTMyLS4xLjAzMy0uMjMyLjA1LS4zOTguMDVoLS44OTZ2LTEuMzc4aC42MTRjLjQxNSAwIC42OTcuMDUuODYzLjE1LjE2Ni4xLjI0OS4yNjUuMjQ5LjQ4MXYuMTE2aC0uMDE3Wm0xLjM2IDIuMjljMC0uMjgyLS4wNjYtLjUxNC0uMTk4LS43MTRhMS4yNjEgMS4yNjEgMCAwIDAtLjUxNS0uNDY0Yy4yMTYtLjEuMzgyLS4yNjYuNDk4LS40NjUuMTE2LS4yMTYuMTgyLS40NDguMTgyLS42OTd2LS4xNDljMC0uMzE1LS4wNjYtLjU4LS4xODItLjc5N2ExLjM5IDEuMzkgMCAwIDAtLjUxNC0uNTE0Yy0uMjE2LS4xMzMtLjQ4Mi0uMjE2LS43OTctLjI4MmE2LjQ1NiA2LjQ1NiAwIDAgMC0xLjAyOS0uMDgzSDEuNDZjLS4xMzMgMC0uMjY1LjAxNy0uMzk4LjAxN3MtLjI0OS4wMTYtLjM2NS4wMzNjLS4xMTYuMDE3LS4yLjAxNy0uMjY2LjAzMy0uMTQ5LjAzMy0uMjY1LjA2Ni0uMzMxLjE1LS4wNjcuMDY2LS4xLjE5OC0uMS4zODF2NC44NDVjMCAuMTgzLjAzMy4yOTkuMS4zODIuMDY2LjA2Ni4xODIuMTE2LjMzMS4xNS4wODMuMDE2LjE4My4wMzIuMjgyLjAzMi4xMTcuMDE3LjIzMy4wMTcuMzY2LjAzNC4xMzIgMCAuMjY1LjAxNi4zOTguMDE2aC40MTVjLjM0OCAwIC42OC0uMDMzLjk3OS0uMDgzLjI5OC0uMDUuNTgtLjE1Ljc5Ni0uMjgyLjIzMi0uMTMzLjM5OC0uMzE1LjU0OC0uNTQ4LjEzMi0uMjMyLjE5OS0uNTMuMTk5LS44Nzl2LS4xMTZaIiBmaWxsPSIjMDA0RTkxIi8+PC9zdmc+Cg=="})),currencies:["EUR"],capability:"bancontact_payments"},ideal:{id:"ideal",label:Object(M.__)("iDEAL","woocommerce-gateway-stripe"),description:Object(M.__)("iDEAL is a Netherlands-based payment method that allows customers to complete transactions online using their bank credentials.","woocommerce-gateway-stripe"),Icon:t=>Object(i.createElement)(s,u()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzQgMzAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBkPSJNMCAyLjE3NnYyNC45OThjMCAxLjE5Ny45OCAyLjE3NiAyLjE3NiAyLjE3NmgxNC45MzZjMTEuMjkyIDAgMTYuMTg3LTYuMzIgMTYuMTg3LTE0LjcwOEMzMy4yOTkgNi4zIDI4LjQwNCAwIDE3LjExMiAwSDIuMTc2Qy45NzkgMCAwIC45OCAwIDIuMTc2WiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik05Ljk5NyA2LjEzNXYxOC40NzJoOC4wNGM3LjI5OSAwIDEwLjQ2NS00LjEyMyAxMC40NjUtOS45NTQgMC01LjU4LTMuMTY2LTkuOTEtMTAuNDY2LTkuOTFIMTEuMzljLS43NzMgMC0xLjM5My42My0xLjM5MyAxLjM5MloiIGZpbGw9IiNDMDYiLz48cGF0aCBkPSJNMTcuMTEyIDI3LjM2SDQuMTIzYTIuMDkgMi4wOSAwIDAgMS0yLjA4OS0yLjA5VjQuMDlhMi4wOSAyLjA5IDAgMCAxIDIuMDg5LTIuMDg4aDEyLjk4OWMxMi4zMjUgMCAxNC4xNjQgNy45MyAxNC4xNjQgMTIuNjUxIDAgOC4xOTItNS4wMzcgMTIuNzA2LTE0LjE2NCAxMi43MDZaTTQuMTIzIDIuNjk3Yy0uNzcyIDAtMS4zOTIuNjItMS4zOTIgMS4zOTJ2MjEuMThjMCAuNzczLjYyIDEuMzkzIDEuMzkyIDEuMzkzaDEyLjk4OWM4LjY4IDAgMTMuNDY3LTQuMjY0IDEzLjQ2Ny0xMi4wMSAwLTEwLjQtOC40NDEtMTEuOTU1LTEzLjQ2Ny0xMS45NTVINC4xMjNaIiBmaWxsPSIjMDAwIi8+PHBhdGggZD0iTTEyLjgyNiAxMi4xNjJjLjI4MiAwIC41NDQuMDQ0Ljc5NC4xMy4yNS4wODguNDU3LjIzLjY0Mi40MDMuMTc0LjE4NS4zMTUuNDEzLjQyNC42NzUuMDk4LjI3Mi4xNTIuNTg3LjE1Mi45NTcgMCAuMzI2LS4wNDMuNjItLjEyLjg5MmEyLjA4MSAyLjA4MSAwIDAgMS0uMzcuNzA3Yy0uMTYzLjE5Ni0uMzcuMzQ4LS42Mi40NjgtLjI1LjEwOS0uNTQzLjE3NC0uODguMTc0aC0xLjkwNFYxMi4xNWgxLjg4MnYuMDExWm0tLjA2NiAzLjZjLjE0MiAwIC4yNzItLjAyLjQxNC0uMDY0LjEzLS4wNDQuMjUtLjEyLjM0OC0uMjI5LjA5OC0uMTA5LjE4NS0uMjQuMjUtLjQxMy4wNjUtLjE3NC4wOTgtLjM3LjA5OC0uNjIgMC0uMjE4LS4wMjItLjQyNS0uMDY1LS41OTlhMS4xOTEgMS4xOTEgMCAwIDAtLjIxOC0uNDU3Ljk4Mi45ODIgMCAwIDAtLjM5MS0uMjkzIDEuNjAzIDEuNjAzIDAgMCAwLS41OTktLjA5OGgtLjY5NnYyLjc4NWguODZ2LS4wMTFaTTE4Ljc2NSAxMi4xNjJ2LjgxNmgtMi4zMjh2Ljk0NmgyLjE0M3YuNzUxaC0yLjE0M3YxLjA3N2gyLjM4M3YuODE2aC0zLjM1VjEyLjE1aDMuMjk1di4wMTFaTTIyLjA5NCAxMi4xNjJsMS42NTQgNC40MTdoLTEuMDEybC0uMzM3LS45OGgtMS42NTRsLS4zNDguOThoLS45NzlsMS42NjQtNC40MTdoMS4wMTJabS4wNTQgMi43MDktLjU1NC0xLjYyMWgtLjAxMWwtLjU3NyAxLjYyaDEuMTQyWk0yNS4zMjUgMTIuMTYydjMuNmgyLjE1NHYuODE3aC0zLjEyMnYtNC40MTdoLjk2OFoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNNi4zNjQgMTYuNDA1YTIuMDM0IDIuMDM0IDAgMSAwIDAtNC4wNjkgMi4wMzQgMi4wMzQgMCAwIDAgMCA0LjA2OVpNNy44OTggMjQuNjA3YTMuMDc2IDMuMDc2IDAgMCAxLTMuMDc5LTMuMDc4di0yLjQwNWMwLS44NDguNjg1LTEuNTQ0IDEuNTQ1LTEuNTQ0Ljg0OCAwIDEuNTQ1LjY4NSAxLjU0NSAxLjU0NHY1LjQ4M2gtLjAxMVoiIGZpbGw9IiMwMDAiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDMzLjI5OXYyOS4zNUgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPgo="})),currencies:["EUR"],capability:"ideal_payments"},p24:{id:"p24",label:Object(M.__)("Przelewy24","woocommerce-gateway-stripe"),description:Object(M.__)("Przelewy24 is a Poland-based payment method aggregator that allows customers to complete transactions online using bank transfers and other methods.","woocommerce-gateway-stripe"),Icon:t=>Object(i.createElement)(y,u()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MyIgaGVpZ2h0PSI0MCI+PHBhdGggZD0ibTExLjMwNyAyMS4zNTggNC4zMTctLjAwNS0uMTU3Ljk4OS0zLjYxMSAzLjQ3IDMuMDMtLjAwNi0uMTc2IDEuMDY2LTQuNDYzLjAwMy4xODctMS4xMDMgMy40NjItMy4zMzZoLTIuNzYzbC4xNzQtMS4wNzhNNi41ODQgMTkuNjY3YTEuMDggMS4wOCAwIDAgMC0uMzc5LS4yNCAyLjczNCAyLjczNCAwIDAgMC0uNTAyLS4xMzUgNC4yMjMgNC4yMjMgMCAwIDAtLjU3NC0uMDYxYy0uMTM4LS4wMDYtLjIyNi0uMDA2LS4yMjYtLjAwNkgxLjYwOWwtMS4yNTggNy42NWgxLjE3NmwuNDYzLTIuODMzIDIuMjguMDFzLjg5LjAzNyAxLjUxOS0uM2MuNjI5LS4zMzUuNzk3LTEuMS43OTctMS4xcy4wNy0uMjgzLjEyNy0uNjI3YTQwLjcxOCA0MC43MTggMCAwIDAgLjE4My0xLjI1cy4wMTYtLjA3OC4wMTYtLjJhMS4zNzQgMS4zNzQgMCAwIDAtLjE1NC0uNjcgMS4wOTggMS4wOTggMCAwIDAtLjE3NC0uMjM4em0tLjkwNiAxLjM1YzAgLjAxNC0uMTA1LjYyNy0uMjQzIDEuMzU1LS4wNTIuMjc4LS4yNjUuNDI4LS41MDguNDgtLjQwMy4wODctLjgzNi4wNy0uODM2LjA3bC0xLjkwNS0uMDA1LjQyLTIuNTQyIDEuNzI1LjAwNnMuMTE2LS4wMDMuMjc5IDBjLjE4NS4wMDIuNDMuMDEuNjMyLjAzOC4xNzQuMDIzLjMxMi4wNTkuMzU2LjExNC4wNTguMDczLjA4LjE2Ny4wODguMjUuMDEyLjEyMy0uMDA4LjIyNS0uMDA4LjIzNHpNMjEuNDc5IDE5LjIyNWgxLjEzMmwtMS4yNjcgNy42NS0xLjEzNS0uMDAzIDEuMjctNy42NDdNMjcuNTE5IDIxLjM1OGwxLjA4NC0uMDAyLjM4NCAzLjg4MyAxLjY3LTMuODg5IDEuMzM5LjAwMy4zOTUgMy45IDEuNjY3LTMuODk3aDEuMTI2bC0yLjM5IDUuNTEzaC0xLjMzNmwtLjM4Ny0zLjg2LTEuNjg2IDMuODYtMS4zMTQuMDA2LS41NTItNS41MTdNMTkuMzkgMjEuNDAzYy0uMzE4LS4xMDMtLjg2OC0uMTI1LTEuMzM0LS4xMi0uNDUuMDA2LS42NTcuMDI4LS44MjUuMDY0IDAgMC0uODAxLjExNy0xLjI1Ni42ODQtLjQ1Ni41NjYtLjU5MSAxLjgwNS0uNTkxIDEuODA1cy0uMjcgMS4zNy0uMTkgMS44MjhjLjA4LjQ1NS4yMi44OC43MzQgMS4wNzguNTEzLjIuOTUuMTg5Ljk1LjE4OXMuOTE2LjA3MiAxLjYwNi0uMDkyYy42OS0uMTY0IDEuMDU0LS42NTMgMS4wNTQtLjY1M3MuMTYzLS4yMTEuMjc5LS40NjFjLjExNi0uMjUuMTUyLS40MjUuMTU3LS40NDdsLjA3Mi0uMjk3LTEuMTczLjAwMnMtLjA2NC43OC0uNjk4Ljg1M2MtLjYzMy4wNzItLjk3Mi4wNDUtMS4wOTYuMDM5LS4xMjItLjAwNi0uOC4wMjUtLjc0Ni0uNTQ3IDAtLjAwOSAwLS4wMi4wMDMtLjAzNi4wMy0uNjUuMTAyLS44Mi4xMDItLjgybDMuNjg1LS4wMS4xNTgtLjkxOGMuMTgyLTEuMDM4LjA1Mi0xLjgzLS44OTItMi4xNDF6bS0uMjQ3IDIuMDEtMi41MjUtLjAwMi4xLS40MDNzLjA4Ny0uMzE2LjI2MS0uNDVjLjE3Ny0uMTMzLjQtLjE1OC42MS0uMTc3LjIxLS4wMi43Ny0uMDYyIDEuMjI2LjAzMy4xNTIuMDMuMjk1LjExNy4zMzQuMjQ0LjA4OC4zLS4wMDYuNzU2LS4wMDYuNzU2eiIgZmlsbD0iI0QxMzIzOSIvPjxwYXRoIGQ9Ik0xNi4zNDIgMjUuMzAzYzAgLjAwOC0uMDAzLjAxNi0uMDAzLjAyNS0uMDAzLjA0NC4wMDMtLjAyOC4wMDMtLjAyNXpNMjMuMjkyIDI1LjMwNmwtLjAwMi4wMjVjMCAuMDQ0LjAwMi0uMDI4LjAwMi0uMDI1eiIgZmlsbD0iI0QxMzIzOSIvPjxwYXRoIGQ9Ik0yNi4zNDMgMjEuNDA2Yy0uMzE4LS4xMDMtLjg2Ny0uMTI1LTEuMzM0LS4xMi0uNDUuMDA2LS42NTcuMDI4LS44MjUuMDY0IDAgMC0uOC4xMTctMS4yNTYuNjgzLS40NTUuNTY3LS41OSAxLjgwNi0uNTkgMS44MDZzLS4yNzEgMS4zNy0uMTkxIDEuODI4Yy4wOC40NTUuMjIuODguNzM0IDEuMDc3LjUxNC4yLjk1LjE5Ljk1LjE5cy45MTYuMDcyIDEuNjA2LS4wOTJjLjY5LS4xNjQgMS4wNTUtLjY1MyAxLjA1NS0uNjUzcy4xNjMtLjIxMS4yNzktLjQ2MWMuMTE1LS4yNS4xNTEtLjQyNS4xNTctLjQ0N2wuMDcyLS4yOTgtMS4xNzQuMDAzcy0uMDYzLjc4LS42OTguODUzYy0uNjMyLjA3Mi0uOTcyLjA0NC0xLjA5Ni4wNDItLjEyMS0uMDA2LS44LjAyMi0uNzQ1LS41NDggMC0uMDA4IDAtLjAyLjAwMy0uMDM2LjAzLS42NS4xMDItLjgyLjEwMi0uODJsMy42ODUtLjAxLjE1Ny0uOTE3Yy4xODItMS4wNDIuMDUzLTEuODM2LS44OTEtMi4xNDR6bS0uMjU3IDIuMDA4LTIuNTI2LS4wMDMuMS0uNDAzcy4wODgtLjMxNi4yNjItLjQ1Yy4xNzQtLjEzMy40LS4xNTguNjEtLjE3Ny4yMS0uMDIuNzctLjA2MiAxLjIyNS4wMzMuMTUyLjAzLjI5Ni4xMTcuMzM0LjI0NC4wODkuMjk4LS4wMDUuNzU2LS4wMDUuNzU2ek0zNi40ODcgMjEuMzU4bC43MjYgNC4wMzQgMi4wNTEtNC4wMzYgMS4xNTQuMDEtMi45NTYgNS43NjVzLS41MzYgMS4wNDQtLjg2NyAxLjMwOGMtLjMzMS4yNjQtLjUzNi4zODMtLjgwNi40MTEtLjI3LjAyOC0uMzgxLjA0Ny0uNjQgMGwtLjI3Ny0uMDUuMTcxLTEuMDNzLjQ1OS4wODYuNzMtLjAyM2MuMjczLS4xMDguNDktLjU3NS40OS0uNTc1bC4xMzktLjIzMy0xLjA2OS01LjU4MyAxLjE1NC4wMDJ6IiBmaWxsPSIjRDEzMjM5Ii8+PHBhdGggZD0ibTQwLjgzOCAyMS45MDYgMS4xOS4wMDIuMDcxLS40NjRzLjEyNy0uODM4LjQxMS0xYy4wOTItLjA1Mi4yMzgtLjEuNDA2LS4xM2E1LjI5IDUuMjkgMCAwIDEgMS4wMy0uMDVjLjQ5NC4wMTcuNjgyLjAyMiAxLjE4NC4wOC41MDIuMDU5LjM3NS41NDguMzc1LjU0OGwtLjA5OS43M3MtLjA0NC4zMjgtLjE2LjUzYy0uMTAyLjE4MS0uMzg0LjMwNC0uNTQ3LjM1Ni0uMzkyLjEyOC0xLjczMy40NzMtMS43MzMuNDczbC0xLjA1NS4zMDVzLS42NDguMTg5LTEuMDEuNTkyYTIuNDQgMi40NCAwIDAgMC0uNTU4IDEuMTAzYy0uMDUuMjM4LS4zMjggMS44OTEtLjMyOCAxLjg5MWw1LjY5Mi4wMDMuMTktMS4xNDQtNC41MDIuMDA1LjA4LS40NjdzLjA1My0uNDguMjQ2LS42MzhjLjA2LS4wNS4wOTEtLjExNy40NS0uMjQ1LjIxNS0uMDc4Ljk1LS4yNzUuOTUtLjI3NWwxLjY5Ny0uNDY3cy45MjgtLjIzOCAxLjI5Mi0uNzVjLjM2NC0uNTA4LjUwNS0xLjQ4My41MDUtMS40ODNzLjEtLjk0Ny4wMjItMS4yNDRjLS4wNzQtLjI5OC0uMzUzLS42NTMtLjY5My0uODA2LS4zNC0uMTUzLS42OTItLjI0Mi0xLjcxNy0uMjI4LTEuMDI0LjAxNC0xLjUzMi4wNjEtMi4wNS4yNTYtLjUyLjE5Mi0uODIuNTQyLTEuMDEgMS4wMzYtLjIwOC40Ny0uMzMgMS40OC0uMzMgMS40OHpNNTEuNTU0IDI0LjAzM2wuNzk3LTQuODFoLTEuNDEzbC00LjQgNC43NTUtLjE5OSAxLjIwNWgzLjg0OGwtLjI4MSAxLjY5IDEuMTgxLjAwMi4yNzktMS42OTIgMS4wOS4wMDMuMTk2LTEuMTUzaC0xLjA5OHptLTEuMTc2LjAwMy0yLjQ4OC0uMDAzIDMuMDI5LTMuMjQ3LS41NDEgMy4yNXpNOS4wNzkgMTkuODU2aDMuNjI0cy44MTItLjY2MiAxLjM4OS0xLjA4N2EzOC45NjIgMzguOTYyIDAgMCAxIDEuNjI2LTEuMDk0bC0yLjA0OC0uOTY0cy0xLjczMSAxLjA3OC0yLjQ2NSAxLjU4NmMtLjcxMy40Ny0yLjEyNiAxLjU1OS0yLjEyNiAxLjU1OXpNMTYuODY5IDE2Ljk5NGwtMS42ODEtMS4xMzhzMS41Mi0uODcgMy41NDQtMS42ODFjMi4wMi0uODExIDMuMS0xLjE1IDMuMS0xLjE1bC4zNDIgMS42MTRzLTEuOTQ2LjY1NS0zLjA2IDEuMTg2YTE5LjQ1NyAxOS40NTcgMCAwIDAtMi4yNDUgMS4xN3pNMjMuNDE3IDE0LjI4NmwtLjI5My0xLjY1M3MyLjA3Ni0uNTU1IDMuOTc1LS45MWMxLjkwMi0uMzU2IDQuNDIyLS41MjYgNC40MjItLjUyNmwtLjgzMyAyLjU1M3MtMi4yMTctLjMwNi00LjI5OC0uMDJjLTEuNjIuMTk1LTIuOTczLjU1Ni0yLjk3My41NTZ6TTMyLjAwNyAxMy45NjdsMS40MDItMi44MzZzMy4wNzMtLjA2MiA1LjcyMy4zNTJjMi42NS40MTEgNS4wNzMgMS4wNDUgNS4wMiAxLjA3M2wtNi43MTggMy41MzZzLTEuNTctMS0zLjUyLTEuNjE0Yy0xLjEwNC0uMzI4LTEuOTA3LS41MTEtMS45MDctLjUxMXpNMzguNjM4IDE2Ljg2MWwxLjQ3NiAxLjEyOGgxMi4xMzhzLS4wMjUtLjM5NS0uMzQ4LS45NTZjLS4yMDEtLjM1LS41NjktLjcyMi0uOTUyLTEuMTA4LS4xNDEtLjEzOS0uNjk5LS41NzgtMS4xMTgtLjg1My0xLjA3MS0uNy0xLjY3LS45Ny0yLjc4My0xLjQ3OGwtOC40MTMgMy4yNjd6IiBmaWxsPSIjQjNCMkIxIi8+PHBhdGggZD0iTTkuODY2IDIxLjM1M2MtLjQ1NiAwLS44ODYuMTgtMS4yNTMuMzgzbC4wNjMtLjM4M0g3LjQ3bC0uOTY2IDUuNDkxaDEuMjA5bC41MzUtMy4wNDFjLjExLS42MTcuNTY5LTEuMzggMS40NjMtMS4zOGwuNjI0LS4wMDQuMTg4LTEuMDY2aC0uNjU3eiIgZmlsbD0iI0QxMzIzOSIvPjwvc3ZnPgo="})),currencies:["EUR","PLN"],capability:"p24_payments"},boleto:{id:"boleto",label:Object(M.__)("Boleto","woocommerce-gateway-stripe"),description:Object(M.__)("Boleto is an official payment method in Brazil. Customers receive a voucher that can be paid at authorized agencies or banks, ATMs, or online bank portals.","woocommerce-gateway-stripe"),Icon:t=>Object(i.createElement)(g,u()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDBoMXYyMEgwVjBabTIgMGgzdjIwSDJWMFptNSAwSDZ2MjBoMVYwWm05IDBoMXYyMGgtMVYwWm00IDBoLTF2MjBoMVYwWk04IDBoMXYyMEg4VjBabTE5IDBoLTF2MjBoMVYwWm03IDBoLTF2MjBoMVYwWm0zIDBoMXYyMGgtMVYwWm0zIDBoLTF2MjBoMVYwWm0xIDBoM3YyMGgtM1YwWm02IDBoMXYyMGgtMVYwWm0tMSAwaC0xdjIwaDFWMFpNMjkgMGgzdjIwaC0zVjBabS01IDBoLTN2MjBoM1YwWk0xNCAwaDF2MjBoLTFWMFptLTEgMGgtM3YyMGgzVjBaIiBmaWxsPSIjMDAwIi8+PC9zdmc+"})),currencies:["BRL"],capability:"boleto_payments"},oxxo:{id:"oxxo",label:Object(M.__)("OXXO","woocommerce-gateway-stripe"),description:Object(M.__)("OXXO is a Mexican chain of convenience stores that allows customers to pay bills and online purchases in-store with cash.","woocommerce-gateway-stripe"),Icon:t=>Object(i.createElement)(l,u()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgMi45MjZDMCAxLjM0MyAxLjI3MS4wNTkgMi44NC4wNTloNDEuNjczYzEuNTY4IDAgMi44NCAxLjI4NCAyLjg0IDIuODY3djE4LjEzM2MwIDEuNTgyLTEuMjcyIDIuODY1LTIuODQgMi44NjVIMi44NEMxLjI3MSAyMy45MjQgMCAyMi42NDEgMCAyMS4wNlYyLjkyNloiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJNLjAzMyAyLjYzNkMuMDMzIDEuMTgxIDEuMjAzIDAgMi42NDUgMEg0NC43NWMxLjQ0MiAwIDIuNjExIDEuMTggMi42MTEgMi42MzZ2LjA4NEguMDMzdi0uMDg0Wk00Ny4zNiAyMS4yOTh2LjA2NmMwIDEuNDU1LTEuMTY5IDIuNjM2LTIuNjExIDIuNjM2SDIuNjQ1QzEuMjAzIDI0IC4wMzMgMjIuODIuMDMzIDIxLjM2NHYtLjA2Nkg0Ny4zNloiIGZpbGw9IiNGQkIxMTAiLz48cGF0aCBkPSJNMzIuNzg3IDExLjk3MmMwIDMuNjg1IDIuOTYgNi42NzIgNi42MTIgNi42NzIgMy42NSAwIDYuNjEyLTIuOTg3IDYuNjEyLTYuNjcyIDAtMy42ODYtMi45NjEtNi42NzMtNi42MTItNi42NzMtMy42NTIgMC02LjYxMiAyLjk4Ny02LjYxMiA2LjY3M1ptLTMxLjUyMyAwYzAgMy42ODUgMi45NjEgNi42NzIgNi42MTMgNi42NzIgMy42NTEgMCA2LjYxMi0yLjk4NyA2LjYxMi02LjY3MiAwLTMuNjg2LTIuOTYtNi42NzMtNi42MTItNi42NzNzLTYuNjEzIDIuOTg3LTYuNjEzIDYuNjczWm00Ni4wOTYgOC4wNjNoLTMyLjZjLjU4OC0uNDE2IDEuMTM1LS45ODYgMS43MzItMS43NTRsMy4zMi00LjI3NiAxLjQ1MSAxLjg1IDEuNjE0LTIuMTY3LTEuNDExLTEuODEzIDMuMzgtNC4zNTRjMS4wNzMtMS4zOC0uOTgtMy4wMDQtMi4wNTMtMS42MjNsLTIuOTg3IDMuODQ5LTMuMDM3LTMuOWMtMS4wNzQtMS4zNzctMy4xMjMuMjUtMi4wNDggMS42MjlsMy40MzIgNC40LTMuNzE0IDQuNzgyYy0xLjMyIDEuNy0yLjYzNiAzLjI1Ny01LjI1IDMuMzc3SC4wMzNWMy45ODNIMzIuNDZjLS41NTcuNDExLTEuMDgzLjk2Mi0xLjY1NCAxLjY5OGwtMy4zMiA0LjI3NS0xLjQ1MS0xLjg0OC0xLjYxMyAyLjE2NiAxLjQxMSAxLjgxMi0zLjM4MSA0LjM1M2MtMS4wNzIgMS4zODEuOTggMy4wMDUgMi4wNTIgMS42MjNsMi45ODktMy44NDcgMy4wMzcgMy44OTljMS4wNzQgMS4zNzggMy4xMjMtLjI1IDIuMDQ4LTEuNjI4bC0zLjQzMi00LjQwMiAzLjcxNC00Ljc4YzEuMjEyLTEuNTYzIDIuNDIyLTMuMDA1IDQuNjQtMy4zMmg5Ljg2djE2LjA1MVptLTExLjkyLTguMDYzYzAtMi4yMDcgMS43NzMtMy45OTUgMy45NTktMy45OTVzMy45NTcgMS43ODggMy45NTcgMy45OTVjMCAyLjIwNi0xLjc3MSAzLjk5NC0zLjk1NyAzLjk5NHMtMy45NTgtMS43ODgtMy45NTgtMy45OTRabS0zMS41MiAwYzAtMi4yMDcgMS43NzEtMy45OTUgMy45NTctMy45OTUgMi4xODUgMCAzLjk1OCAxLjc4OCAzLjk1OCAzLjk5NSAwIDIuMjA2LTEuNzczIDMuOTk0LTMuOTU4IDMuOTk0LTIuMTg2IDAtMy45NTgtMS43ODgtMy45NTgtMy45OTRaIiBmaWxsPSIjRTcwMDIwIi8+PC9zdmc+"})),currencies:["MXN"],capability:"oxxo_payments"},alipay:{id:"alipay",label:Object(M.__)("Alipay","woocommerce-gateway-stripe"),description:Object(M.__)("Alipay is a popular wallet in China, operated by Ant Financial Services Group, a financial services provider affiliated with Alibaba.","woocommerce-gateway-stripe"),Icon:()=>null,currencies:["AUD","CAD","CNY","EUR","GBP","HKD","JPY","MYR","NZD","USD"],capability:void 0},multibanco:{id:"multibanco",label:Object(M.__)("Multibanco","woocommerce-gateway-stripe"),description:Object(M.__)("Multibanco is an interbank network that links the ATMs of all major banks in Portugal, allowing customers to pay through either their ATM or online banking environment.","woocommerce-gateway-stripe"),Icon:()=>null,currencies:["EUR"],capability:void 0}}},,function(t,e,n){"use strict";var M={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,u=r&&!M.call({1:2},1);e.f=u?function(t){var e=r(this,t);return!!e&&e.enumerable}:M},function(t,e,n){var M,r=n(23),u=n(122),i=n(73),o=n(57),c=n(113),a=n(71),j=n(56)("IE_PROTO"),s=function(){},L=function(t){return"<script>"+t+"<\/script>"},N=function(t){t.write(L("")),t.close();var e=t.parentWindow.Object;return t=null,e},y=function(){try{M=new ActiveXObject("htmlfile")}catch(t){}var t,e;y="undefined"!=typeof document?document.domain&&M?N(M):((e=a("iframe")).style.display="none",c.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(L("document.F=Object")),t.close(),t.F):N(M);for(var n=i.length;n--;)delete y.prototype[i[n]];return y()};o[j]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[j]=t):n=y(),void 0===e?n:u.f(n,e)}},function(t,e,n){var M,r,u,i=n(139),o=n(3),c=n(8),a=n(19),j=n(27),s=n(17),L=n(55),N=n(56),y=n(57),g=o.TypeError,l=o.WeakMap;if(i||L.state){var D=L.state||(L.state=new l),A=c(D.get),S=c(D.has),I=c(D.set);M=function(t,e){if(S(D,t))throw new g("Object already initialized");return e.facade=t,I(D,t,e),e},r=function(t){return A(D,t)||{}},u=function(t){return S(D,t)}}else{var T=N("state");y[T]=!0,M=function(t,e){if(s(t,T))throw new g("Object already initialized");return e.facade=t,j(t,T,e),e},r=function(t){return s(t,T)?t[T]:{}},u=function(t){return s(t,T)}}t.exports={set:M,get:r,has:u,enforce:function(t){return u(t)?r(t):M(t,{})},getterFor:function(t){return function(e){var n;if(!a(e)||(n=r(e)).type!==t)throw g("Incompatible receiver, "+t+" required");return n}}}},function(t,e,n){t.exports=n(181)},function(t,e,n){"use strict";var M=n(6),r=n(0);n(1);const u=Object(M.a)("div",{target:"et1p4me2"})({name:"q70wzv",styles:"display:flex;flex-flow:column;margin-bottom:24px;&:last-child{margin-bottom:0;}@media ( min-width: 800px ){flex-flow:row;}"}),i=Object(M.a)("div",{target:"et1p4me1"})({name:"1p8kjge",styles:"flex:0 1 auto;margin-bottom:24px;@media ( min-width: 800px ){flex:0 0 25%;margin:0 32px 0 0;}h2{font-size:16px;line-height:24px;}p{font-size:13px;line-height:17.89px;margin:12px 0;}>:last-child{margin-bottom:0;}"}),o=Object(M.a)("div",{target:"et1p4me0"})({name:"mkkf9p",styles:"flex:1 1 auto"});e.a=t=>{let{Description:e=(()=>null),children:n,...M}=t;return Object(r.createElement)(u,M,Object(r.createElement)(i,null,Object(r.createElement)(e,null)),Object(r.createElement)(o,null,n))}},function(t,e,n){var M=n(133),r=n(90);t.exports=function(t){var e=M(t,"string");return r(e)?e:e+""}},function(t,e,n){var M=n(25);t.exports=M("navigator","userAgent")||""},function(t,e,n){var M=n(3).String;t.exports=function(t){try{return M(t)}catch(t){return"Object"}}},function(t,e){var n=Math.ceil,M=Math.floor;t.exports=function(t){var e=+t;return e!=e||0===e?0:(e>0?M:n)(e)}},function(t,e,n){var M=n(16),r=n(20),u=n(61),i=n(37),o=n(29),c=n(66),a=n(17),j=n(95),s=Object.getOwnPropertyDescriptor;e.f=M?s:function(t,e){if(t=o(t),e=c(e),j)try{return s(t,e)}catch(t){}if(a(t,e))return i(!r(u.f,t,e),t[e])}},function(t,e,n){var M=n(3),r=n(19),u=M.document,i=r(u)&&r(u.createElement);t.exports=function(t){return i?u.createElement(t):{}}},function(t,e,n){var M=n(3),r=n(17),u=n(9),i=n(32),o=n(56),c=n(136),a=o("IE_PROTO"),j=M.Object,s=j.prototype;t.exports=c?j.getPrototypeOf:function(t){var e=i(t);if(r(e,a))return e[a];var n=e.constructor;return u(n)&&e instanceof n?n.prototype:e instanceof j?s:null}},function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,n){var M=n(8),r=n(9),u=n(55),i=M(Function.toString);r(u.inspectSource)||(u.inspectSource=function(t){return i(t)}),t.exports=u.inspectSource},function(t,e,n){var M=n(8),r=n(13),u=n(9),i=n(31),o=n(25),c=n(74),a=function(){},j=[],s=o("Reflect","construct"),L=/^\s*(?:class|function)\b/,N=M(L.exec),y=!L.exec(a),g=function(t){if(!u(t))return!1;try{return s(a,j,t),!0}catch(t){return!1}},l=function(t){if(!u(t))return!1;switch(i(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return y||!!N(L,c(t))}catch(t){return!0}};l.sham=!0,t.exports=!s||r((function(){var t;return g(g.call)||!g(Object)||!g((function(){t=!0}))||t}))?l:g},function(t,e,n){var M=n(43),r=n(8),u=n(49),i=n(32),o=n(44),c=n(143),a=r([].push),j=function(t){var e=1==t,n=2==t,r=3==t,j=4==t,s=6==t,L=7==t,N=5==t||s;return function(y,g,l,D){for(var A,S,I=i(y),T=u(I),w=M(g,l),p=o(T),z=0,d=D||c,f=e?d(y,p):n||L?d(y,0):void 0;p>z;z++)if((N||z in T)&&(S=w(A=T[z],z,I),t))if(e)f[z]=S;else if(S)switch(t){case 3:return!0;case 5:return A;case 6:return z;case 2:a(f,A)}else switch(t){case 4:return!1;case 7:a(f,A)}return s?-1:r||j?j:f}};t.exports={forEach:j(0),map:j(1),filter:j(2),some:j(3),every:j(4),find:j(5),findIndex:j(6),filterReject:j(7)}},function(t,e,n){"use strict";n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return s})),n.d(e,"e",(function(){return L})),n.d(e,"c",(function(){return N})),n.d(e,"d",(function(){return y}));var M=n(4),r=n(1),u=n(41),i=n(5);const o=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return()=>Object(M.useSelect)(n=>{const{getPaymentGateway:M}=n(i.b);return M()[t]||e},[t,e])},c=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return()=>{const{updatePaymentGatewayValues:n}=Object(M.useDispatch)(i.b);return[o(t,e)(),Object(r.useCallback)(e=>n({[t]:e}),[n])]}},a=()=>{const{savePaymentGateway:t}=Object(M.useDispatch)(i.b);return{paymentGateway:Object(M.useSelect)(t=>{const{getPaymentGateway:e}=t(i.b);return e()},[]),isLoading:Object(M.useSelect)(t=>{const{hasFinishedResolution:e,isResolving:n}=t(i.b);return n("getPaymentGateway")||!e("getPaymentGateway")},[]),isSaving:Object(M.useSelect)(t=>{const{isSavingPaymentGateway:e}=t(i.b);return e()},[]),savePaymentGateway:t}},j=t=>t.replace("%s",()=>{const{section:t}=Object(u.getQuery)();return t}),s=c(j("is_%s_enabled")),L=c(j("%s_name"),""),N=c(j("%s_description"),""),y=c(j("%s_expiration"),"")},function(t,e,n){"use strict";n.r(e),n.d(e,"updateAccount",(function(){return g})),n.d(e,"updateIsRefreshingAccount",(function(){return l})),n.d(e,"refreshAccount",(function(){return D}));var M=n(48),r=n.n(M),u=n(18),i=n.n(u),o=n(80),c=n.n(o),a=n(4),j=n(2),s=n(22),L=n(5),N=n(59),y=n(82);function g(t){return{type:y.a.SET_ACCOUNT,payload:t}}function l(t){return{type:y.a.SET_IS_REFRESHING,isRefreshing:t}}function*D(){try{yield l(!0);const t=Object(a.select)(L.b).getAccountCapabilitiesByStatus("active"),e=yield Object(s.apiFetch)({method:"POST",path:L.a+"/account/refresh"});yield g(e);const n=Object(a.select)(L.b).getAccountCapabilitiesByStatus("active"),M=r()(n).call(n,e=>!i()(t).call(t,e)&&void 0!==N.a[e.replace("_payments","")]);M.length&&(yield Object(a.dispatch)("core/notices").createSuccessNotice(Object(j.sprintf)(
+/* translators: %s: one or more payment method names separated by commas (e.g.: giropay, EPS, Sofort, etc). */
+Object(j.__)("You can now accept payments with %s.","woocommerce-gateway-stripe"),c()(M).call(M,t=>N.a[t.replace("_payments","")].label).join(", ")),{icon:"🚀"}))}catch(t){yield Object(a.dispatch)("core/notices").createErrorNotice(Object(j.__)("Error updating account data.","woocommerce-gateway-stripe"))}finally{yield l(!1)}}},function(t,e,n){t.exports=n(170)},function(t,e,n){t.exports=n(200)},function(t,e,n){"use strict";var M=n(10),r=n.n(M),u=n(6),i=n(0);n(1);const o={small:{name:"1agzdcq",styles:"height:24px;width:37px"},medium:{name:"aemqcy",styles:"height:40px;width:65px"}},c=Object(u.a)("span",{target:"e575mz50"})(t=>{let{size:e}=t;return o[e]||""}," box-sizing:border-box;display:inline-flex;justify-content:center;border:1px solid transparent;img{max-width:100%;}");e.a=t=>{let{src:e,children:n,alt:M,size:u="small",...o}=t;return Object(i.createElement)(c,r()({},o,{size:u}),e?Object(i.createElement)("img",{src:e,alt:M}):n)}},function(t,e,n){"use strict";e.a={SET_ACCOUNT:"SET_ACCOUNT",SET_IS_REFRESHING:"SET_IS_REFRESHING"}},function(t,e){var n=Function.prototype,M=n.apply,r=n.bind,u=n.call;t.exports="object"==typeof Reflect&&Reflect.apply||(r?u.bind(M):function(){return u.apply(M,arguments)})},function(t,e,n){var M=n(34);t.exports=function(t,e){var n=t[e];return null==n?void 0:M(n)}},function(t,e,n){var M=n(29),r=n(104),u=n(44),i=function(t){return function(e,n,i){var o,c=M(e),a=u(c),j=r(i,a);if(t&&n!=n){for(;a>j;)if((o=c[j++])!=o)return!0}else for(;a>j;j++)if((t||j in c)&&c[j]===n)return t||j||0;return!t&&-1}};t.exports={includes:i(!0),indexOf:i(!1)}},function(t,e,n){var M=n(38),r=n(3);t.exports="process"==M(r.process)},function(t,e,n){"use strict";var M=n(6),r=n(7);e.a=Object(M.a)(r.CardBody,{target:"eezfi080"})({name:"hqx46f",styles:"&.is-size-medium.is-size-medium{padding:24px;}h4{margin-top:0;margin-bottom:1em;}>*{margin-top:0;margin-bottom:1em;&:last-child{margin-bottom:0;>:last-child{margin-bottom:0;}}}input,select{margin:0;}ul>li:last-child{margin-bottom:0;.components-base-control__field{margin-bottom:0;}}.components-radio-control__option{margin-bottom:8px;}.components-base-control__help{margin-top:unset;}"})},function(t,e){t.exports=function(){}},,function(t,e,n){var M=n(3),r=n(25),u=n(9),i=n(21),o=n(91),c=M.Object;t.exports=o?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return u(e)&&i(e.prototype,c(t))}},function(t,e,n){var M=n(92);t.exports=M&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,e,n){var M=n(51),r=n(13);t.exports=!!Object.getOwnPropertySymbols&&!r((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&M&&M<41}))},function(t,e,n){var M=n(30),r=n(55);(t.exports=function(t,e){return r[t]||(r[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.20.2",mode:M?"pure":"global",copyright:"© 2022 Denis Pushkarev (zloirock.ru)"})},function(t,e,n){var M=n(8),r=0,u=Math.random(),i=M(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+i(++r+u,36)}},function(t,e,n){var M=n(16),r=n(13),u=n(71);t.exports=!M&&!r((function(){return 7!=Object.defineProperty(u("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var M=n(16),r=n(13);t.exports=M&&r((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},function(t,e,n){var M=n(8),r=n(23),u=n(137);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=M(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,M){return r(n),u(M),e?t(n,M):n.__proto__=M,n}}():void 0)},function(t,e,n){"use strict";var M,r,u,i=n(13),o=n(9),c=n(62),a=n(72),j=n(45),s=n(11),L=n(30),N=s("iterator"),y=!1;[].keys&&("next"in(u=[].keys())?(r=a(a(u)))!==Object.prototype&&(M=r):y=!0),null==M||i((function(){var t={};return M[N].call(t)!==t}))?M={}:L&&(M=c(M)),o(M[N])||j(M,N,(function(){return this})),t.exports={IteratorPrototype:M,BUGGY_SAFARI_ITERATORS:y}},function(t,e,n){var M=n(13),r=n(11),u=n(51),i=r("species");t.exports=function(t){return u>=51||!M((function(){var e=[];return(e.constructor={})[i]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},function(t,e,n){"use strict";var M=n(13);t.exports=function(t,e){var n=[][t];return!!n&&M((function(){n.call(null,e||function(){throw 1},1)}))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"h",(function(){return o})),n.d(e,"b",(function(){return a})),n.d(e,"c",(function(){return j})),n.d(e,"g",(function(){return s})),n.d(e,"d",(function(){return L})),n.d(e,"e",(function(){return N})),n.d(e,"f",(function(){return y}));var M=n(4),r=n(1),u=n(5);const i=()=>{const{saveAccountKeys:t,updateAccountKeys:e,updateIsTestingAccountKeys:n,updateIsValidAccountKeys:r}=Object(M.useDispatch)(u.b),i=Object(M.useSelect)(t=>{const{getAccountKeys:e}=t(u.b);return e()},[]),o=Object(M.useSelect)(t=>{const{getIsTestingAccountKeys:e}=t(u.b);return e()},[]),c=Object(M.useSelect)(t=>{const{getIsValidAccountKeys:e}=t(u.b);return e()},[]);return{accountKeys:i,isLoading:Object(M.useSelect)(t=>{const{hasFinishedResolution:e,isResolving:n}=t(u.b);return n("getAccountKeys")||!e("getAccountKeys")},[]),isSaving:Object(M.useSelect)(t=>{const{isSavingAccountKeys:e}=t(u.b);return e()},[]),isTesting:o,isValid:c,updateAccountKeys:e,updateIsTestingAccountKeys:n,updateIsValidAccountKeys:r,saveAccountKeys:t}},o=()=>Object(M.useSelect)(t=>{const{getSavingError:e}=t(u.b);return e()},[]),c=t=>()=>{const{updateAccountKeysValues:e}=Object(M.useDispatch)(u.b);return[Object(M.useSelect)(e=>{const{getAccountKeys:n}=e(u.b);return n()[t]||""}),Object(r.useCallback)(n=>e({[t]:n}),[e])]},a=c("publishable_key"),j=c("secret_key"),s=c("webhook_secret"),L=c("test_publishable_key"),N=c("test_secret_key"),y=c("test_webhook_secret")},function(t,e,n){t.exports=n(145)},function(t,e,n){var M;!function(){"use strict";var n={}.hasOwnProperty;function r(){for(var t=[],e=0;e<arguments.length;e++){var M=arguments[e];if(M){var u=typeof M;if("string"===u||"number"===u)t.push(M);else if(Array.isArray(M)){if(M.length){var i=r.apply(null,M);i&&t.push(i)}}else if("object"===u)if(M.toString===Object.prototype.toString)for(var o in M)n.call(M,o)&&M[o]&&t.push(o);else t.push(M.toString())}}return t.join(" ")}t.exports?(r.default=r,t.exports=r):void 0===(M=function(){return r}.apply(e,[]))||(t.exports=M)}()},function(t,e,n){var M=n(69),r=Math.max,u=Math.min;t.exports=function(t,e){var n=M(t);return n<0?r(n+e,0):u(n,e)}},function(t,e,n){"use strict";var M=n(29),r=n(88),u=n(35),i=n(63),o=n(33).f,c=n(109),a=n(30),j=n(16),s=i.set,L=i.getterFor("Array Iterator");t.exports=c(Array,"Array",(function(t,e){s(this,{type:"Array Iterator",target:M(t),index:0,kind:e})}),(function(){var t=L(this),e=t.target,n=t.kind,M=t.index++;return!e||M>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:M,done:!1}:"values"==n?{value:e[M],done:!1}:{value:[M,e[M]],done:!1}}),"values");var N=u.Arguments=u.Array;if(r("keys"),r("values"),r("entries"),!a&&j&&"values"!==N.name)try{o(N,"name",{value:"values"})}catch(t){}},,,,function(t,e,n){"use strict";var M=n(14),r=n(20),u=n(30),i=n(123),o=n(9),c=n(124),a=n(72),j=n(97),s=n(53),L=n(27),N=n(45),y=n(11),g=n(35),l=n(98),D=i.PROPER,A=i.CONFIGURABLE,S=l.IteratorPrototype,I=l.BUGGY_SAFARI_ITERATORS,T=y("iterator"),w=function(){return this};t.exports=function(t,e,n,i,y,l,p){c(n,e,i);var z,d,f,x=function(t){if(t===y&&C)return C;if(!I&&t in m)return m[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},E=e+" Iterator",O=!1,m=t.prototype,b=m[T]||m["@@iterator"]||y&&m[y],C=!I&&b||x(y),h="Array"==e&&m.entries||b;if(h&&(z=a(h.call(new t)))!==Object.prototype&&z.next&&(u||a(z)===S||(j?j(z,S):o(z[T])||N(z,T,w)),s(z,E,!0,!0),u&&(g[E]=w)),D&&"values"==y&&b&&"values"!==b.name&&(!u&&A?L(m,"name","values"):(O=!0,C=function(){return r(b,this)})),y)if(d={values:x("values"),keys:l?C:x("keys"),entries:x("entries")},p)for(f in d)(I||O||!(f in m))&&N(m,f,d[f]);else M({target:e,proto:!0,forced:I||O},d);return u&&!p||m[T]===C||N(m,T,C,{name:y}),g[e]=C,d}},function(t,e,n){var M=n(13),r=n(9),u=/#|\.prototype\./,i=function(t,e){var n=c[o(t)];return n==j||n!=a&&(r(e)?M(e):!!e)},o=i.normalize=function(t){return String(t).replace(u,".").toLowerCase()},c=i.data={},a=i.NATIVE="N",j=i.POLYFILL="P";t.exports=i},function(t,e,n){var M=n(8),r=n(17),u=n(29),i=n(85).indexOf,o=n(57),c=M([].push);t.exports=function(t,e){var n,M=u(t),a=0,j=[];for(n in M)!r(o,n)&&r(M,n)&&c(j,n);for(;e.length>a;)r(M,n=e[a++])&&(~i(j,n)||c(j,n));return j}},function(t,e,n){var M=n(69),r=Math.min;t.exports=function(t){return t>0?r(M(t),9007199254740991):0}},function(t,e,n){var M=n(25);t.exports=M("document","documentElement")},,,function(t,e,n){var M=n(38);t.exports=Array.isArray||function(t){return"Array"==M(t)}},function(t,e,n){var M=n(3),r=n(155),u=M.TypeError;t.exports=function(t){if(r(t))throw u("The method doesn't accept regular expressions");return t}},function(t,e,n){var M=n(11)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[M]=!1,"/./"[t](e)}catch(t){}}return!1}},function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return o}));var M=n(4),r=n(5);const u={},i=()=>{const{refreshAccount:t}=Object(M.useDispatch)(r.b);return{data:Object(M.useSelect)(t=>{const{getAccountData:e}=t(r.b);return e()},[]),isLoading:Object(M.useSelect)(t=>{const{hasFinishedResolution:e,isResolving:n}=t(r.b);return n("getAccountData")||!e("getAccountData")},[]),isRefreshing:Object(M.useSelect)(t=>{const{isRefreshingAccount:e}=t(r.b);return e()},[]),refreshAccount:t}},o=()=>Object(M.useSelect)(t=>{var e,n;const{getAccountData:M}=t(r.b);return null!==(e=null===(n=M().account)||void 0===n?void 0:n.capabilities)&&void 0!==e?e:u},[])},function(t,e,n){t.exports=n(176)},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var M=n(16),r=n(96),u=n(33),i=n(23),o=n(29),c=n(52);e.f=M&&!r?Object.defineProperties:function(t,e){i(t);for(var n,M=o(e),r=c(e),a=r.length,j=0;a>j;)u.f(t,n=r[j++],M[n]);return t}},function(t,e,n){var M=n(16),r=n(17),u=Function.prototype,i=M&&Object.getOwnPropertyDescriptor,o=r(u,"name"),c=o&&"something"===function(){}.name,a=o&&(!M||M&&i(u,"name").configurable);t.exports={EXISTS:o,PROPER:c,CONFIGURABLE:a}},function(t,e,n){"use strict";var M=n(98).IteratorPrototype,r=n(62),u=n(37),i=n(53),o=n(35),c=function(){return this};t.exports=function(t,e,n,a){var j=e+" Iterator";return t.prototype=r(M,{next:u(+!a,n)}),i(t,j,!1,!0),o[j]=c,t}},function(t,e,n){n(105);var M=n(142),r=n(3),u=n(31),i=n(27),o=n(35),c=n(11)("toStringTag");for(var a in M){var j=r[a],s=j&&j.prototype;s&&u(s)!==c&&i(s,c,a),o[a]=o.Array}},,function(t,e,n){"use strict";var M=n(0),r=(n(1),n(15)),u=n(159);e.a=t=>{let{children:e,numLines:n}=t;const{isLoading:i}=Object(r.s)();return Object(M.createElement)(u.a,{isLoading:i,numLines:n},e)}},,function(t,e){t.exports=window.ReactDOM},function(t,e,n){"use strict";var M=n(10),r=n.n(M),u=n(0),i=(n(1),n(7)),o=n(103),c=n.n(o);n(272),e.a=t=>{let{className:e,...n}=t;return Object(u.createElement)(i.Notice,r()({className:c()("wcstripe-inline-notice",e)},n))}},,function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var M=n(3),r=n(20),u=n(19),i=n(90),o=n(84),c=n(134),a=n(11),j=M.TypeError,s=a("toPrimitive");t.exports=function(t,e){if(!u(t)||i(t))return t;var n,M=o(t,s);if(M){if(void 0===e&&(e="default"),n=r(M,t,e),!u(n)||i(n))return n;throw j("Can't convert object to primitive value")}return void 0===e&&(e="number"),c(t,e)}},function(t,e,n){var M=n(3),r=n(20),u=n(9),i=n(19),o=M.TypeError;t.exports=function(t,e){var n,M;if("string"===e&&u(n=t.toString)&&!i(M=r(n,t)))return M;if(u(n=t.valueOf)&&!i(M=r(n,t)))return M;if("string"!==e&&u(n=t.toString)&&!i(M=r(n,t)))return M;throw o("Can't convert object to primitive value")}},function(t,e,n){var M=n(3),r=Object.defineProperty;t.exports=function(t,e){try{r(M,t,{value:e,configurable:!0,writable:!0})}catch(n){M[t]=e}return e}},function(t,e,n){var M=n(13);t.exports=!M((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},function(t,e,n){var M=n(3),r=n(9),u=M.String,i=M.TypeError;t.exports=function(t){if("object"==typeof t||r(t))return t;throw i("Can't set "+u(t)+" as a prototype")}},,function(t,e,n){var M=n(3),r=n(9),u=n(74),i=M.WeakMap;t.exports=r(i)&&/native code/.test(u(i))},function(t,e,n){"use strict";var M=n(58),r=n(31);t.exports=M?{}.toString:function(){return"[object "+r(this)+"]"}},,function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(t,e,n){var M=n(144);t.exports=function(t,e){return new(M(t))(0===e?0:e)}},function(t,e,n){var M=n(3),r=n(116),u=n(75),i=n(19),o=n(11)("species"),c=M.Array;t.exports=function(t){var e;return r(t)&&(e=t.constructor,(u(e)&&(e===c||r(e.prototype))||i(e)&&null===(e=e[o]))&&(e=void 0)),void 0===e?c:e}},function(t,e,n){var M=n(146);t.exports=M},function(t,e,n){n(147);var M=n(26);t.exports=M.Object.entries},function(t,e,n){var M=n(14),r=n(148).entries;M({target:"Object",stat:!0},{entries:function(t){return r(t)}})},function(t,e,n){var M=n(16),r=n(8),u=n(52),i=n(29),o=r(n(61).f),c=r([].push),a=function(t){return function(e){for(var n,r=i(e),a=u(r),j=a.length,s=0,L=[];j>s;)n=a[s++],M&&!o(r,n)||c(L,t?[n,r[n]]:r[n]);return L}};t.exports={entries:a(!0),values:a(!1)}},function(t,e,n){var M=n(150);t.exports=M},function(t,e,n){var M=n(21),r=n(151),u=n(153),i=Array.prototype,o=String.prototype;t.exports=function(t){var e=t.includes;return t===i||M(i,t)&&e===i.includes?r:"string"==typeof t||t===o||M(o,t)&&e===o.includes?u:e}},function(t,e,n){n(152);var M=n(28);t.exports=M("Array").includes},function(t,e,n){"use strict";var M=n(14),r=n(85).includes,u=n(88);M({target:"Array",proto:!0},{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),u("includes")},function(t,e,n){n(154);var M=n(28);t.exports=M("String").includes},function(t,e,n){"use strict";var M=n(14),r=n(8),u=n(117),i=n(42),o=n(40),c=n(118),a=r("".indexOf);M({target:"String",proto:!0,forced:!c("includes")},{includes:function(t){return!!~a(o(i(this)),o(u(t)),arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var M=n(19),r=n(38),u=n(11)("match");t.exports=function(t){var e;return M(t)&&(void 0!==(e=t[u])?!!e:"RegExp"==r(t))}},,function(t,e,n){"use strict";var M=n(16),r=n(8),u=n(20),i=n(13),o=n(52),c=n(121),a=n(61),j=n(32),s=n(49),L=Object.assign,N=Object.defineProperty,y=r([].concat);t.exports=!L||i((function(){if(M&&1!==L({b:1},L(N({},"a",{enumerable:!0,get:function(){N(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol();return t[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(t){e[t]=t})),7!=L({},t)[n]||"abcdefghijklmnopqrst"!=o(L({},e)).join("")}))?function(t,e){for(var n=j(t),r=arguments.length,i=1,L=c.f,N=a.f;r>i;)for(var g,l=s(arguments[i++]),D=L?y(o(l),L(l)):o(l),A=D.length,S=0;A>S;)g=D[S++],M&&!u(N,l,g)||(n[g]=l[g]);return n}:L},function(t,e,n){"use strict";n.d(e,"a",(function(){return j}));var M="https://js.stripe.com/v3",r=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,u="loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used",i=null,o=function(t,e,n){if(null===t)return null;var M=t.apply(void 0,e);return function(t,e){t&&t._registerWrapper&&t._registerWrapper({name:"stripe-js",version:"1.15.1",startTime:e})}(M,n),M},c=Promise.resolve().then((function(){return t=null,null!==i?i:i=new Promise((function(e,n){if("undefined"!=typeof window)if(window.Stripe&&t&&console.warn(u),window.Stripe)e(window.Stripe);else try{var i=function(){for(var t=document.querySelectorAll('script[src^="'.concat(M,'"]')),e=0;e<t.length;e++){var n=t[e];if(r.test(n.src))return n}return null}();i&&t?console.warn(u):i||(i=function(t){var e=t&&!t.advancedFraudSignals?"?advancedFraudSignals=false":"",n=document.createElement("script");n.src="".concat(M).concat(e);var r=document.head||document.body;if(!r)throw new Error("Expected document.body not to be null. Stripe.js requires a <body> element.");return r.appendChild(n),n}(t)),i.addEventListener("load",(function(){window.Stripe?e(window.Stripe):n(new Error("Stripe.js not available"))})),i.addEventListener("error",(function(){n(new Error("Failed to load Stripe.js"))}))}catch(t){return void n(t)}else e(null)}));var t})),a=!1;c.catch((function(t){a||console.warn(t)}));var j=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];a=!0;var M=Date.now();return c.then((function(t){return o(t,e,M)}))}},function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var M=n(10),r=n.n(M),u=n(0);n(273);const i=t=>{let{isLoading:e,display:n,placeholder:M,value:r,children:i}=t;return e?Object(u.createElement)("span",{className:n?"is-loadable-placeholder is-"+n:"is-loadable-placeholder","aria-busy":"true"},void 0===M?i||r:M):i||r||null},o=t=>{let{numLines:e=1,...n}=t;const M=Object(u.createElement)("p",{style:{lineHeight:e}},"Block placeholder");return Object(u.createElement)(i,r()({},n,{placeholder:M,display:"block"}))}},,,,,,,function(t,e,n){var M=n(167);t.exports=M},function(t,e,n){var M=n(21),r=n(168),u=Array.prototype;t.exports=function(t){var e=t.filter;return t===u||M(u,t)&&e===u.filter?r:e}},function(t,e,n){n(169);var M=n(28);t.exports=M("Array").filter},function(t,e,n){"use strict";var M=n(14),r=n(76).filter;M({target:"Array",proto:!0,forced:!n(99)("filter")},{filter:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var M=n(171);t.exports=M},function(t,e,n){var M=n(21),r=n(172),u=Array.prototype;t.exports=function(t){var e=t.reduce;return t===u||M(u,t)&&e===u.reduce?r:e}},function(t,e,n){n(173);var M=n(28);t.exports=M("Array").reduce},function(t,e,n){"use strict";var M=n(14),r=n(174).left,u=n(100),i=n(51),o=n(86);M({target:"Array",proto:!0,forced:!u("reduce")||!o&&i>79&&i<83},{reduce:function(t){var e=arguments.length;return r(this,t,e,e>1?arguments[1]:void 0)}})},function(t,e,n){var M=n(3),r=n(34),u=n(32),i=n(49),o=n(44),c=M.TypeError,a=function(t){return function(e,n,M,a){r(n);var j=u(e),s=i(j),L=o(j),N=t?L-1:0,y=t?-1:1;if(M<2)for(;;){if(N in s){a=s[N],N+=y;break}if(N+=y,t?N<0:L<=N)throw c("Reduce of empty array with no initial value")}for(;t?N>=0:L>N;N+=y)N in s&&(a=n(a,s[N],N,j));return a}};t.exports={left:a(!1),right:a(!0)}},,function(t,e,n){n(125);var M=n(31),r=n(17),u=n(21),i=n(177),o=Array.prototype,c={DOMTokenList:!0,NodeList:!0};t.exports=function(t){var e=t.forEach;return t===o||u(o,t)&&e===o.forEach||r(c,M(t))?i:e}},function(t,e,n){var M=n(178);t.exports=M},function(t,e,n){n(179);var M=n(28);t.exports=M("Array").forEach},function(t,e,n){"use strict";var M=n(14),r=n(180);M({target:"Array",proto:!0,forced:[].forEach!=r},{forEach:r})},function(t,e,n){"use strict";var M=n(76).forEach,r=n(100)("forEach");t.exports=r?[].forEach:function(t){return M(this,t,arguments.length>1?arguments[1]:void 0)}},function(t,e,n){var M=n(182);t.exports=M},function(t,e,n){n(183);var M=n(26);t.exports=M.Object.assign},function(t,e,n){var M=n(14),r=n(157);M({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},,,,,,,,,,,,,function(t,e,n){"use strict";var M=n(241),r={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},u={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},o={};function c(t){return M.isMemo(t)?i:o[t.$$typeof]||r}o[M.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},o[M.Memo]=i;var a=Object.defineProperty,j=Object.getOwnPropertyNames,s=Object.getOwnPropertySymbols,L=Object.getOwnPropertyDescriptor,N=Object.getPrototypeOf,y=Object.prototype;t.exports=function t(e,n,M){if("string"!=typeof n){if(y){var r=N(n);r&&r!==y&&t(e,r,M)}var i=j(n);s&&(i=i.concat(s(n)));for(var o=c(e),g=c(n),l=0;l<i.length;++l){var D=i[l];if(!(u[D]||M&&M[D]||g&&g[D]||o&&o[D])){var A=L(n,D);try{a(e,D,A)}catch(t){}}}}return e}},,,,function(t,e,n){var M=n(201);t.exports=M},function(t,e,n){var M=n(21),r=n(202),u=Array.prototype;t.exports=function(t){var e=t.map;return t===u||M(u,t)&&e===u.map?r:e}},function(t,e,n){n(203);var M=n(28);t.exports=M("Array").map},function(t,e,n){"use strict";var M=n(14),r=n(76).map;M({target:"Array",proto:!0,forced:!n(99)("map")},{map:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})},,function(t,e,n){"use strict";var M=n(6);const r=Object(M.a)("div",{target:"elkpq0t0"})({name:"1wclzz7",styles:"margin:24px auto 0;max-width:1032px;display:flex;flex-flow:column;@media ( min-width: 960px ){padding:0 56px;}"});e.a=r},,,,function(t,e,n){"use strict";var M=n(0),r=(n(1),n(159)),u=n(119),i=n(101);e.a=t=>{let{children:e,numLines:n,keepContent:o=!1}=t;const{isLoading:c}=Object(u.a)(),{isLoading:a}=Object(i.a)();let j=a||c;return o&&(j=!1),Object(M.createElement)(r.a,{isLoading:j,numLines:n},e)}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,n){"use strict";t.exports=n(242)},function(t,e,n){"use strict";var M="function"==typeof Symbol&&Symbol.for,r=M?Symbol.for("react.element"):60103,u=M?Symbol.for("react.portal"):60106,i=M?Symbol.for("react.fragment"):60107,o=M?Symbol.for("react.strict_mode"):60108,c=M?Symbol.for("react.profiler"):60114,a=M?Symbol.for("react.provider"):60109,j=M?Symbol.for("react.context"):60110,s=M?Symbol.for("react.async_mode"):60111,L=M?Symbol.for("react.concurrent_mode"):60111,N=M?Symbol.for("react.forward_ref"):60112,y=M?Symbol.for("react.suspense"):60113,g=M?Symbol.for("react.suspense_list"):60120,l=M?Symbol.for("react.memo"):60115,D=M?Symbol.for("react.lazy"):60116,A=M?Symbol.for("react.block"):60121,S=M?Symbol.for("react.fundamental"):60117,I=M?Symbol.for("react.responder"):60118,T=M?Symbol.for("react.scope"):60119;function w(t){if("object"==typeof t&&null!==t){var e=t.$$typeof;switch(e){case r:switch(t=t.type){case s:case L:case i:case c:case o:case y:return t;default:switch(t=t&&t.$$typeof){case j:case N:case D:case l:case a:return t;default:return e}}case u:return e}}}function p(t){return w(t)===L}e.AsyncMode=s,e.ConcurrentMode=L,e.ContextConsumer=j,e.ContextProvider=a,e.Element=r,e.ForwardRef=N,e.Fragment=i,e.Lazy=D,e.Memo=l,e.Portal=u,e.Profiler=c,e.StrictMode=o,e.Suspense=y,e.isAsyncMode=function(t){return p(t)||w(t)===s},e.isConcurrentMode=p,e.isContextConsumer=function(t){return w(t)===j},e.isContextProvider=function(t){return w(t)===a},e.isElement=function(t){return"object"==typeof t&&null!==t&&t.$$typeof===r},e.isForwardRef=function(t){return w(t)===N},e.isFragment=function(t){return w(t)===i},e.isLazy=function(t){return w(t)===D},e.isMemo=function(t){return w(t)===l},e.isPortal=function(t){return w(t)===u},e.isProfiler=function(t){return w(t)===c},e.isStrictMode=function(t){return w(t)===o},e.isSuspense=function(t){return w(t)===y},e.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===i||t===L||t===c||t===o||t===y||t===g||"object"==typeof t&&null!==t&&(t.$$typeof===D||t.$$typeof===l||t.$$typeof===a||t.$$typeof===j||t.$$typeof===N||t.$$typeof===S||t.$$typeof===I||t.$$typeof===T||t.$$typeof===A)},e.typeOf=w},function(t,e,n){"use strict";function M(t){return function(){return t}}var r=function(){};r.thatReturns=M,r.thatReturnsFalse=M(!1),r.thatReturnsTrue=M(!0),r.thatReturnsNull=M(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(t){return t},t.exports=r},,,,,,,,,,,,function(t,e,n){"use strict";var M=n(6),r=n(0),u=n(2),i=(n(1),n(7)),o=n(65),c=n(15);const a=Object(M.a)(o.a,{target:"e1prus4h0"})({name:"2qga7i",styles:"text-align:right"});e.a=t=>{let{onSettingsSave:e}=t;const{saveSettings:n,isSaving:M,isLoading:o}=Object(c.s)();return Object(r.createElement)(a,null,Object(r.createElement)(i.Button,{isPrimary:!0,isBusy:M,disabled:M||o,onClick:async()=>{await n(),e()}},Object(u.__)("Save changes","woocommerce-gateway-stripe")))}},,,,,,,function(t,e,n){"use strict";var M=n(10),r=n.n(M),u=n(0),i=(n(1),n(81));e.a=t=>Object(u.createElement)(i.a,r()({},t,{src:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA2NCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Zz48Y2xpcFBhdGggaWQ9ImNsaXAiPjxyZWN0IHg9IjEyIiB5PSIxMCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjI0Ij48L3JlY3Q+PC9jbGlwUGF0aD48ZyBjbGlwLXBhdGg9InVybCggI2NsaXAgKSI+PHBhdGggZD0iTTIxLjg2NiwxMi44OUMyMS4yMzMsMTMuNjQ3IDIwLjIyLDE0LjI0NCAxOS4yMDgsMTQuMTU5QzE5LjA4MSwxMy4xMzUgMTkuNTc3LDEyLjA0NyAyMC4xNTcsMTEuMzc2QzIwLjc5LDEwLjU5NyAyMS44OTcsMTAuMDQzIDIyLjc5NCwxMEMyMi44OTksMTEuMDY2IDIyLjQ4OCwxMi4xMTEgMjEuODY2LDEyLjg5Wk0yMi43ODMsMTQuMzYxQzIxLjg5MSwxNC4zMSAyMS4wNzcsMTQuNjMzIDIwLjQyLDE0Ljg5NEMxOS45OTcsMTUuMDYyIDE5LjYzOSwxNS4yMDQgMTkuMzY2LDE1LjIwNEMxOS4wNiwxNS4yMDQgMTguNjg3LDE1LjA1NCAxOC4yNjgsMTQuODg2QzE3LjcyLDE0LjY1IDE3LjA5MiwxNC40MTMgMTYuNDM0LDE0LjQyNUMxNC45MjYsMTQuNDQ3IDEzLjUyMywxNS4zMSAxMi43NTMsMTYuNjg2QzExLjE3MSwxOS40MzcgMTIuMzQyLDIzLjUxMSAxMy44NzEsMjUuNzVDMTQuNjIsMjYuODU5IDE1LjUxNywyOC4wNzUgMTYuNjk4LDI4LjAzMkMxNy4yMTcsMjguMDEyIDE3LjU5MSwyNy44NTIgMTcuOTc4LDI3LjY4NkMxOC40MjQsMjcuNDk1IDE4Ljg4NiwyNy4yOTYgMTkuNjA5LDI3LjI5NkMyMC4zMDYsMjcuMjk2IDIwLjc0OSwyNy40OSAyMS4xNzMsMjcuNjc1QzIxLjU3NywyNy44NTIgMjEuOTY1LDI4LjAyMSAyMi41NDEsMjguMDExQzIzLjc2NCwyNy45ODkgMjQuNTM0LDI2LjkwMiAyNS4yODMsMjUuNzkzQzI2LjA5MSwyNC42MDIgMjYuNDQ2LDIzLjQ0MSAyNi41LDIzLjI2NUwyNi41MDYsMjMuMjQ0QzI2LjUwNSwyMy4yNDMgMjYuNDk1LDIzLjIzOCAyNi40NzgsMjMuMjNMMjYuNDc3LDIzLjIzQzI2LjIwNywyMy4xMDUgMjQuMTQyLDIyLjE0OSAyNC4xMjMsMTkuNTg3QzI0LjEwMywxNy40MzUgMjUuNzYsMTYuMzQ2IDI2LjAyMSwxNi4xNzRDMjYuMDM3LDE2LjE2MyAyNi4wNDgsMTYuMTU3IDI2LjA1MywxNi4xNTNDMjQuOTk4LDE0LjU3NSAyMy4zNTMsMTQuNDA0IDIyLjc4MywxNC4zNjFaTTMxLjI1MiwyNy44OTNMMzEuMjUyLDExLjI2OUwzNy40MjIsMTEuMjY5QzQwLjYwOCwxMS4yNjkgNDIuODMzLDEzLjQ4NyA0Mi44MzMsMTYuNzI5QzQyLjgzMywxOS45NyA0MC41NjUsMjIuMjEgMzcuMzM4LDIyLjIxTDMzLjgwNSwyMi4yMUwzMy44MDUsMjcuODkzTDMxLjI1MiwyNy44OTNaTTMzLjgwNSwxMy40NDRMMzYuNzQ3LDEzLjQ0NEMzOC45NjIsMTMuNDQ0IDQwLjIyOCwxNC42MzkgNDAuMjI4LDE2LjczOUM0MC4yMjgsMTguODQgMzguOTYyLDIwLjA0NSAzNi43MzcsMjAuMDQ1TDMzLjgwNSwyMC4wNDVMMzMuODA1LDEzLjQ0NFpNNTEuMjYsMjUuODk5QzUwLjU4NSwyNy4yIDQ5LjA5OCwyOC4wMjEgNDcuNDk1LDI4LjAyMUM0NS4xMjIsMjguMDIxIDQzLjQ2NiwyNi41OTIgNDMuNDY2LDI0LjQzOEM0My40NjYsMjIuMzA2IDQ1LjA2OSwyMS4wNzkgNDguMDMzLDIwLjg5OEw1MS4yMTgsMjAuNzA2TDUxLjIxOCwxOS43ODlDNTEuMjE4LDE4LjQzNSA1MC4zNDIsMTcuNjk5IDQ4Ljc4MSwxNy42OTlDNDcuNDk1LDE3LjY5OSA0Ni41NTYsMTguMzcxIDQ2LjM2NiwxOS4zOTVMNDQuMDY3LDE5LjM5NUM0NC4xNDEsMTcuMjQxIDQ2LjE0NSwxNS42NzMgNDguODU1LDE1LjY3M0M1MS43NzcsMTUuNjczIDUzLjY3NSwxNy4yMTkgNTMuNjc1LDE5LjYxOUw1My42NzUsMjcuODkzTDUxLjMxMywyNy44OTNMNTEuMzEzLDI1Ljg5OUw1MS4yNiwyNS44OTlaTTQ4LjE4LDI2LjA0OUM0Ni44MiwyNi4wNDkgNDUuOTU1LDI1LjM4NyA0NS45NTUsMjQuMzc0QzQ1Ljk1NSwyMy4zMjkgNDYuNzg4LDIyLjcyMiA0OC4zODEsMjIuNjI2TDUxLjIxOCwyMi40NDRMNTEuMjE4LDIzLjM4M0M1MS4yMTgsMjQuOTQgNDkuOTEsMjYuMDQ5IDQ4LjE4LDI2LjA0OVpNNjEuNTExLDI4LjU0NEM2MC40ODgsMzEuNDU1IDU5LjMxOCwzMi40MTUgNTYuODI5LDMyLjQxNUM1Ni42MzksMzIuNDE1IDU2LjAwNiwzMi4zOTMgNTUuODU4LDMyLjM1MUw1NS44NTgsMzAuMzU3QzU2LjAxNywzMC4zNzggNTYuNDA3LDMwLjM5OSA1Ni42MDcsMzAuMzk5QzU3LjczNiwzMC4zOTkgNTguMzY4LDI5LjkxOSA1OC43NTksMjguNjcyTDU4Ljk5MSwyNy45MzZMNTQuNjY3LDE1LjgzM0w1Ny4zMzUsMTUuODMzTDYwLjM0MSwyNS42NTRMNjAuMzkzLDI1LjY1NEw2My4zOTksMTUuODMzTDY1Ljk5NCwxNS44MzNMNjEuNTExLDI4LjU0NFoiIGZpbGw9IiMwMDAiPjwvcGF0aD48L2c+PC9nPjxwYXRoIGQ9Ik01MS45ODMsMjAuMDhDNTEuOTg0LDE5LjU0MiA1MS45MzcsMTkuMDA1IDUxLjg0MiwxOC40NzRMNDQuMTUzLDE4LjQ3NEw0NC4xNTMsMjEuNTE2TDQ4LjU1NywyMS41MTZDNDguMzc1LDIyLjQ5OCA0Ny43ODcsMjMuMzY2IDQ2LjkyOSwyMy45MTdMNDYuOTI5LDI1Ljg5Mkw0OS41NTcsMjUuODkyQzUxLjA5NiwyNC41MTcgNTEuOTgzLDIyLjQ4NCA1MS45ODMsMjAuMDhaIiBmaWxsPSJyZ2IoIDY2LCAxMzMsIDI0NCApIj48L3BhdGg+PHBhdGggZD0iTTQ0LjE1MywyNy44QzQ2LjM1MywyNy44IDQ4LjIwNiwyNy4xIDQ5LjU1NywyNS44OTNMNDYuOTI5LDIzLjkxOEM0Ni4xOTcsMjQuMzk5IDQ1LjI1NSwyNC42NzMgNDQuMTUzLDI0LjY3M0M0Mi4wMjYsMjQuNjczIDQwLjIyMSwyMy4yODQgMzkuNTc2LDIxLjQxMkwzNi44NjgsMjEuNDEyTDM2Ljg2OCwyMy40NDhDMzguMjUyLDI2LjExNiA0MS4wNzEsMjcuOCA0NC4xNTMsMjcuOFoiIGZpbGw9InJnYiggNTIsIDE2OCwgODMgKSI+PC9wYXRoPjxwYXRoIGQ9Ik0zOS41NzYsMjEuNDEyQzM5LjIzNSwyMC40MzEgMzkuMjM1LDE5LjM2OSAzOS41NzYsMTguMzg4TDM5LjU3NiwxNi4zNTNMMzYuODY4LDE2LjM1M0MzNS43MTEsMTguNTg1IDM1LjcxMSwyMS4yMTYgMzYuODY4LDIzLjQ0OEwzOS41NzYsMjEuNDEyWiIgZmlsbD0icmdiKCAyNTEsIDE4OCwgNCApIj48L3BhdGg+PHBhdGggZD0iTTQ0LjE1MywxNS4xMjhDNDUuMzE2LDE1LjEwOSA0Ni40MzksMTUuNTM1IDQ3LjI4MSwxNi4zMTNMNDkuNjA4LDE0LjA1OEM0OC4xMzIsMTIuNzE1IDQ2LjE3NywxMS45NzggNDQuMTUzLDEyLjAwMUM0MS4wNzEsMTIuMDAxIDM4LjI1MiwxMy42ODUgMzYuODY4LDE2LjM1M0wzOS41NzYsMTguMzg4QzQwLjIyMSwxNi41MTcgNDIuMDI2LDE1LjEyOCA0NC4xNTMsMTUuMTI4WiIgZmlsbD0icmdiKCAyMzQsIDY3LCA1MyApIj48L3BhdGg+PC9zdmc+"}))},,,,,,function(t,e,n){"use strict";var M=n(1),r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,u=n(243),i=n(269),o=n(270),c="function"==typeof Symbol&&Symbol.iterator;function a(t,e){return t&&"object"==typeof t&&null!=t.key?(n=t.key,M={"=":"=0",":":"=2"},"$"+(""+n).replace(/[=:]/g,(function(t){return M[t]}))):e.toString(36);var n,M}var j=/\/+/g;function s(t){return(""+t).replace(j,"$&/")}var L,N,y=g,g=function(t){if(this.instancePool.length){var e=this.instancePool.pop();return this.call(e,t),e}return new this(t)};function l(t,e,n,M){this.result=t,this.keyPrefix=e,this.func=n,this.context=M,this.count=0}function D(t,e,n){var r,i,o=t.result,c=t.keyPrefix,a=t.func,j=t.context,L=a.call(j,e,t.count++);Array.isArray(L)?A(L,o,n,u.thatReturnsArgument):null!=L&&(M.isValidElement(L)&&(r=L,i=c+(!L.key||e&&e.key===L.key?"":s(L.key)+"/")+n,L=M.cloneElement(r,{key:i},void 0!==r.props?r.props.children:void 0)),o.push(L))}function A(t,e,n,M,u){var o="";null!=n&&(o=s(n)+"/");var j=l.getPooled(e,o,M,u);!function(t,e,n){null==t||function t(e,n,M,u){var o,j=typeof e;if("undefined"!==j&&"boolean"!==j||(e=null),null===e||"string"===j||"number"===j||"object"===j&&e.$$typeof===r)return M(u,e,""===n?"."+a(e,0):n),1;var s=0,L=""===n?".":n+":";if(Array.isArray(e))for(var N=0;N<e.length;N++)s+=t(o=e[N],L+a(o,N),M,u);else{var y=function(t){var e=t&&(c&&t[c]||t["@@iterator"]);if("function"==typeof e)return e}(e);if(y)for(var g,l=y.call(e),D=0;!(g=l.next()).done;)s+=t(o=g.value,L+a(o,D++),M,u);else if("object"===j){var A=""+e;i(!1,"Objects are not valid as a React child (found: %s).%s","[object Object]"===A?"object with keys {"+Object.keys(e).join(", ")+"}":A,"")}}return s}(t,"",e,n)}(t,D,j),l.release(j)}l.prototype.destructor=function(){this.result=null,this.keyPrefix=null,this.func=null,this.context=null,this.count=0},L=function(t,e,n,M){if(this.instancePool.length){var r=this.instancePool.pop();return this.call(r,t,e,n,M),r}return new this(t,e,n,M)},(N=l).instancePool=[],N.getPooled=L||y,N.poolSize||(N.poolSize=10),N.release=function(t){i(t instanceof this,"Trying to release an instance into a pool of a different type."),t.destructor(),this.instancePool.length<this.poolSize&&this.instancePool.push(t)},t.exports=function(t){if("object"!=typeof t||!t||Array.isArray(t))return o(!1,"React.addons.createFragment only accepts a single object. Got: %s",t),t;if(M.isValidElement(t))return o(!1,"React.addons.createFragment does not accept a ReactElement without a wrapper object."),t;i(1!==t.nodeType,"React.addons.createFragment(...): Encountered an invalid child; DOM elements are not valid children of React components.");var e=[];for(var n in t)A(t[n],e,n,u.thatReturnsArgument);return e}},function(t,e,n){"use strict";t.exports=function(t,e,n,M,r,u,i,o){if(!t){var c;if(void 0===e)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var a=[n,M,r,u,i,o],j=0;(c=new Error(e.replace(/%s/g,(function(){return a[j++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},function(t,e,n){"use strict";var M=n(243);t.exports=M},function(t,e,n){"use strict";function M(t){return t.match(/^\{\{\//)?{type:"componentClose",value:t.replace(/\W/g,"")}:t.match(/\/\}\}$/)?{type:"componentSelfClosing",value:t.replace(/\W/g,"")}:t.match(/^\{\{/)?{type:"componentOpen",value:t.replace(/\W/g,"")}:{type:"string",value:t}}t.exports=function(t){return t.split(/(\{\{\/?\s*\w+\s*\/?\}\})/g).map(M)}},function(t,e,n){},function(t,e,n){},,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,n){},,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,n){"use strict";n.r(e);var M=n(0),r=n(1),u=n(129),i=n.n(u),o=n(2),c=n(262),a=n(7),j=n(15),s=n(87),L=()=>{const[t,e]=Object(j.o)();return Object(M.createElement)(a.Card,{className:"express-checkout-settings"},Object(M.createElement)(s.a,null,Object(M.createElement)(a.CheckboxControl,{checked:t,onChange:e,label:Object(o.__)("Enable Apple Pay / Google Pay","woocommerce-gateway-stripe"),help:Object(o.__)("When enabled, customers who have configured Apple Pay or Google Pay enabled devices will be able to pay with their respective choice of Wallet.","woocommerce-gateway-stripe")})))},N=n(48),y=n.n(N),g=n(18),l=n.n(g),D=n(50),A=n.n(D),S=n(39),I=n(158),T=n(130);const w=()=>{let t="Google Chrome",e="Google Pay";return(()=>{const t=window.navigator.userAgent.toLowerCase(),e=/chrome/.test(t)&&!/edge|edg|opr|brave\//.test(t)&&"Google Inc."===window.navigator.vendor,n=e&&window.navigator.brave;return e&&!n})()&&(t="Safari",e="Apple Pay"),Object(M.createElement)("p",{className:"payment-method-settings__preview-help-text"},Object(o.sprintf)(
+/* translators: %1: Payment method name %2: Browser name. */
+Object(o.__)("To preview the %1$s button, view this page in the %2$s browser.","woocommerce-gateway-stripe"),e,t))},p={default:40,medium:48,large:56};var z=()=>{const t=Object(S.useStripe)(),[e,n]=Object(r.useState)(),[u,i]=Object(r.useState)(!0),[c]=Object(j.n)(),[a]=Object(j.l)(),[s]=Object(j.m)();return Object(r.useEffect)(()=>{if(!t)return void i(!1);i(!0);const e=t.paymentRequest({country:"US",currency:"usd",total:{label:Object(o.__)("Total","woocommerce-gateway-stripe"),amount:99},requestPayerName:!0,requestPayerEmail:!0});e.canMakePayment().then(t=>{t&&n(e),i(!1)})},[t,n,i]),u?null:e?Object(M.createElement)(M.Fragment,null,Object(M.createElement)("div",{className:"payment-method-settings__preview"},Object(M.createElement)(S.PaymentRequestButtonElement,{key:`${c}-${s}-${a}`,onClick:t=>{t.preventDefault()},options:{paymentRequest:e,style:{paymentRequestButton:{type:c,theme:s,height:(p[a]||p.default)+"px"}}}})),Object(M.createElement)(w,null)):Object(M.createElement)(T.a,{status:"info",isDismissible:!1},Object(o.__)("To preview the buttons, ensure your device is configured to accept Apple Pay or Google Pay, and view this page using the Safari or Chrome browsers.","woocommerce-gateway-stripe"))},d=n(209),f=n(119),x=n(101);const E=t=>A()({mixedString:t,components:{helpText:Object(M.createElement)("span",{className:"payment-method-settings__option-muted-text"})}}),O=[{label:E(Object(o.__)("Default {{helpText}}(40 px){{/helpText}}","woocommerce-gateway-stripe")),value:"default"},{label:E(Object(o.__)("Medium {{helpText}}(48 px){{/helpText}}","woocommerce-gateway-stripe")),value:"medium"},{label:E(Object(o.__)("Large {{helpText}}(56 px){{/helpText}}","woocommerce-gateway-stripe")),value:"large"}],m=[{label:Object(o.__)("Only icon","woocommerce-gateway-stripe"),value:"default"},{label:Object(o.__)("Buy","woocommerce-gateway-stripe"),value:"buy"},{label:Object(o.__)("Donate","woocommerce-gateway-stripe"),value:"donate"},{label:Object(o.__)("Book","woocommerce-gateway-stripe"),value:"book"}],b=t=>A()({mixedString:t,components:{br:Object(M.createElement)("br",null),helpText:Object(M.createElement)("span",{className:"payment-method-settings__option-help-text"})}}),C=[{label:b(Object(o.__)("Dark {{br/}}{{helpText}}Recommended for white or light-colored backgrounds with high contrast.{{/helpText}}","woocommerce-gateway-stripe")),value:"dark"},{label:b(Object(o.__)("Light {{br/}}{{helpText}}Recommended for dark or colored backgrounds with high contrast.{{/helpText}}","woocommerce-gateway-stripe")),value:"light"},{label:b(Object(o.__)("Outline {{br/}}{{helpText}}Recommended for white or light-colored backgrounds with insufficient contrast.{{/helpText}}","woocommerce-gateway-stripe")),value:"light-outline"}];var h=()=>{var t,e;const[n,u]=Object(j.n)(),[i,c]=Object(j.l)(),[L,N]=Object(j.m)(),g=null===(t=Object(f.a)().data)||void 0===t||null===(e=t.account)||void 0===e?void 0:e.id,[D]=Object(x.b)(),[A]=Object(x.d)(),T=Object(r.useMemo)(()=>Object(I.a)(D||A||"pk_test_123",{stripeAccount:g||"0001",locale:"en"}),[A,D,g]),[w]=Object(j.o)(),[p,E]=Object(j.p)(),b=t=>e=>{E(e?[...p,t]:y()(p).call(p,e=>e!==t))};return Object(M.createElement)(a.Card,{className:"express-checkout-settings"},Object(M.createElement)(s.a,null,Object(M.createElement)("h4",null,Object(o.__)("Show express checkouts on","woocommerce-gateway-stripe")),Object(M.createElement)("ul",{className:"payment-request-settings__location"},Object(M.createElement)("li",null,Object(M.createElement)(a.CheckboxControl,{disabled:!w,checked:w&&l()(p).call(p,"checkout"),onChange:b("checkout"),label:Object(o.__)("Checkout","woocommerce-gateway-stripe")})),Object(M.createElement)("li",null,Object(M.createElement)(a.CheckboxControl,{disabled:!w,checked:w&&l()(p).call(p,"product"),onChange:b("product"),label:Object(o.__)("Product page","woocommerce-gateway-stripe")})),Object(M.createElement)("li",null,Object(M.createElement)(a.CheckboxControl,{disabled:!w,checked:w&&l()(p).call(p,"cart"),onChange:b("cart"),label:Object(o.__)("Cart","woocommerce-gateway-stripe")}))),Object(M.createElement)("h4",null,Object(o.__)("Call to action","woocommerce-gateway-stripe")),Object(M.createElement)(a.RadioControl,{className:"payment-method-settings__cta-selection",label:Object(o.__)("Call to action","woocommerce-gateway-stripe"),help:Object(o.__)("Select a button label that fits best with the flow of purchase or payment experience on your store.","woocommerce-gateway-stripe"),selected:n,options:m,onChange:u}),Object(M.createElement)("h4",null,Object(o.__)("Appearance","woocommerce-gateway-stripe")),Object(M.createElement)(a.RadioControl,{help:Object(o.__)("Note that larger buttons are more suitable for mobile use.","woocommerce-gateway-stripe"),label:Object(o.__)("Size","woocommerce-gateway-stripe"),selected:i,options:O,onChange:c}),Object(M.createElement)(a.RadioControl,{label:Object(o.__)("Theme","woocommerce-gateway-stripe"),selected:L,options:C,onChange:N}),Object(M.createElement)("p",null,Object(o.__)("Preview","woocommerce-gateway-stripe")),Object(M.createElement)(d.a,{numLines:7},Object(M.createElement)(S.Elements,{stripe:T},Object(M.createElement)(z,null)))))},Y=n(65),v=n(205),k=n(127),U=n(255);n(302);const Q=()=>Object(M.createElement)(M.Fragment,null,Object(M.createElement)("div",{className:"express-checkout-settings__icon"},Object(M.createElement)(c.a,{size:"medium"})),Object(M.createElement)("p",null,Object(o.__)("Decide how buttons for digital wallets Apple Pay and Google Pay are displayed in your store. Depending on their web browser and their wallet configurations, your customers will see either Apple Pay or Google Pay, but not both.","woocommerce-gateway-stripe"))),_=()=>Object(M.createElement)(M.Fragment,null,Object(M.createElement)("h2",null,Object(o.__)("Settings","woocommerce-gateway-stripe")),Object(M.createElement)("p",null,Object(o.__)("Configure the display of Apple Pay and Google Pay buttons on your store.","woocommerce-gateway-stripe")));const G=document.getElementById("wc-stripe-payment-request-settings-container");G&&i.a.render(Object(M.createElement)(()=>Object(M.createElement)(v.a,null,Object(M.createElement)(Y.a,{Description:Q},Object(M.createElement)(k.a,{numLines:30},Object(M.createElement)(L,null))),Object(M.createElement)(Y.a,{Description:_},Object(M.createElement)(k.a,{numLines:30},Object(M.createElement)(h,null))),Object(M.createElement)(U.a,null)),null),G)}]);
\ No newline at end of file
