!function(t){"use strict";const e=t.params,n=(document.querySelector.bind(document),(t,e)=>e.split(".").reduce((t,e)=>t&&t[e],t)),i=()=>null,s=t=>null===t||t===undefined?"":t,o="wc/store/checkout";function a(t){document.querySelectorAll("wc-order-attribution-inputs").forEach((t,e)=>{e>0&&t.remove()});for(const e of document.querySelectorAll("wc-order-attribution-inputs"))e.values=t}function r(t){window.wp&&window.wp.data&&window.wp.data.dispatch&&window.wc&&window.wc.wcBlocksData&&window.wp.data.dispatch(window.wc.wcBlocksData.CHECKOUT_STORE_KEY).setExtensionData("woocommerce/order-attribution",t,!0)}function c(){return"undefined"!=typeof sbjs}function d(){if(window.wp&&window.wp.data&&"function"==typeof window.wp.data.subscribe){const e=window.wp.data.subscribe(function(){e(),r(t.getAttributionData())},o)}}t.getAttributionData=function(){const s=e.allowTracking&&c()?n:i,o=c()?sbjs.get:{},a=Object.entries(t.fields).map(([t,e])=>[t,s(o,e)]);return Object.fromEntries(a)},t.setOrderTracking=function(n){if(e.allowTracking=n,n){if(!c())return;sbjs.init({lifetime:Number(e.lifetime),session_length:Number(e.session),base64:Boolean(e.base64),timezone_offset:"0"})}else!function(){const t=window.location.hostname;["sbjs_current","sbjs_current_add","sbjs_first","sbjs_first_add","sbjs_session","sbjs_udata","sbjs_migrations","sbjs_promo"].forEach(e=>{document.cookie=`${e}=; path=/; max-age=-999; domain=.${t};`})}();const i=t.getAttributionData();a(i),r(i)},t.setOrderTracking(e.allowTracking),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",d):d(),window.customElements.define("wc-order-attribution-inputs",class extends HTMLElement{constructor(){if(super(),this._fieldNames=Object.keys(t.fields),this.hasOwnProperty("_values")){let t=this.values;delete this.values,this.values=t||{}}}connectedCallback(){this.innerHTML="";const t=new DocumentFragment;for(const n of this._fieldNames){const i=document.createElement("input");i.type="hidden",i.name=`${e.prefix}${n}`,i.value=s(this.values&&this.values[n]||""),t.appendChild(i)}this.appendChild(t)}set values(t){if(this._values=t,this.isConnected)for(const t of this._fieldNames){const n=this.querySelector(`input[name="${e.prefix}${t}"]`);n?n.value=s(this.values[t]):console.warn(`Field "${t}" not found. `+"Most likely, the '<wc-order-attribution-inputs>' element was manipulated.")}}get values(){return this._values}})}(window.wc_order_attribution);
(function(t){function e(e){return u?e.data("events"):t._data(e[0]).events}function n(t,n,r){var i=e(t),a=i[n];if(!u){var s=r?a.splice(a.delegateCount-1,1)[0]:a.pop();return a.splice(r?0:a.delegateCount||0,0,s),void 0}r?i.live.unshift(i.live.pop()):a.unshift(a.pop())}function r(e,r,i){var a=r.split(/\s+/);e.each(function(){for(var e=0;a.length>e;++e){var r=a[e].trim().match(/[^\.]+/i)[0];n(t(this),r,i)}})}function i(e){t.fn[e+"First"]=function(){var n=t.makeArray(arguments),i=n.shift();return i&&(t.fn[e].apply(this,arguments),r(this,i)),this}}var a=t.fn.jquery.split("."),s=parseInt(a[0]),f=parseInt(a[1]),u=1>s||1==s&&7>f;i("bind"),i("one"),t.fn.delegateFirst=function(){var e=t.makeArray(arguments),n=e[1];return n&&(e.splice(0,2),t.fn.delegate.apply(this,arguments),r(this,n,!0)),this},t.fn.liveFirst=function(){var e=t.makeArray(arguments);return e.unshift(this.selector),t.fn.delegateFirst.apply(t(document),e),this},u||(t.fn.onFirst=function(e,n){var i=t(this),a="string"==typeof n;if(t.fn.on.apply(i,arguments),"object"==typeof e)for(type in e)e.hasOwnProperty(type)&&r(i,type,a);else"string"==typeof e&&r(i,e,a);return i})})(jQuery);
!function(e){var n=!1;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var o=window.Cookies,t=window.Cookies=e();t.noConflict=function(){return window.Cookies=o,t}}}(function(){function e(){for(var e=0,n={};e<arguments.length;e++){var o=arguments[e];for(var t in o)n[t]=o[t]}return n}function n(o){function t(n,r,i){var c;if("undefined"!=typeof document){if(arguments.length>1){if(i=e({path:"/"},t.defaults,i),"number"==typeof i.expires){var a=new Date;a.setMilliseconds(a.getMilliseconds()+864e5*i.expires),i.expires=a}try{c=JSON.stringify(r),/^[\{\[]/.test(c)&&(r=c)}catch(e){}return r=o.write?o.write(r,n):encodeURIComponent(String(r)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)),n=n.replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent),n=n.replace(/[\(\)]/g,escape),document.cookie=[n,"=",r,i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}n||(c={});for(var p=document.cookie?document.cookie.split("; "):[],s=/(%[0-9A-Z]{2})+/g,d=0;d<p.length;d++){var f=p[d].split("="),u=f.slice(1).join("=");'"'===u.charAt(0)&&(u=u.slice(1,-1));try{var l=f[0].replace(s,decodeURIComponent);if(u=o.read?o.read(u,l):o(u,l)||u.replace(s,decodeURIComponent),this.json)try{u=JSON.parse(u)}catch(e){}if(n===l){c=u;break}n||(c[l]=u)}catch(e){}}return c}}return t.set=t,t.get=function(e){return t.call(t,e)},t.getJSON=function(){return t.apply({json:!0},[].slice.call(arguments))},t.defaults={},t.remove=function(n,o){t(n,"",e(o,{expires:-1}))},t.withConverter=n,t}return n(function(){})});
(function (){
'use strict';
var ERROR='input is invalid type';
var WINDOW=typeof window==='object';
var root=WINDOW ? window:{};
if(root.JS_SHA256_NO_WINDOW){
WINDOW=false;
}
var WEB_WORKER = !WINDOW&&typeof self==='object';
var NODE_JS = !root.JS_SHA256_NO_NODE_JS&&typeof process==='object'&&process.versions&&process.versions.node;
if(NODE_JS){
root=global;
}else if(WEB_WORKER){
root=self;
}
var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS&&typeof module==='object'&&module.exports;
var AMD=typeof define==='function'&&define.amd;
var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER&&typeof ArrayBuffer!=='undefined';
var HEX_CHARS='0123456789abcdef'.split('');
var EXTRA=[-2147483648, 8388608, 32768, 128];
var SHIFT=[24, 16, 8, 0];
var K=[
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
];
var OUTPUT_TYPES=['hex', 'array', 'digest', 'arrayBuffer'];
var blocks=[];
if(root.JS_SHA256_NO_NODE_JS||!Array.isArray){
Array.isArray=function (obj){
return Object.prototype.toString.call(obj)==='[object Array]';
};}
if(ARRAY_BUFFER&&(root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)){
ArrayBuffer.isView=function (obj){
return typeof obj==='object'&&obj.buffer&&obj.buffer.constructor===ArrayBuffer;
};}
var createOutputMethod=function (outputType, is224){
return function (message){
return new Sha256(is224, true).update(message)[outputType]();
};};
var createMethod=function (is224){
var method=createOutputMethod('hex', is224);
if(NODE_JS){
method=nodeWrap(method, is224);
}
method.create=function (){
return new Sha256(is224);
};
method.update=function (message){
return method.create().update(message);
};
for (var i=0; i < OUTPUT_TYPES.length; ++i){
var type=OUTPUT_TYPES[i];
method[type]=createOutputMethod(type, is224);
}
return method;
};
var nodeWrap=function (method, is224){
var crypto=require('crypto')
var Buffer=require('buffer').Buffer;
var algorithm=is224 ? 'sha224':'sha256';
var bufferFrom;
if(Buffer.from&&!root.JS_SHA256_NO_BUFFER_FROM){
bufferFrom=Buffer.from;
}else{
bufferFrom=function (message){
return new Buffer(message);
};}
var nodeMethod=function (message){
if(typeof message==='string'){
return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');
}else{
if(message===null||message===undefined){
throw new Error(ERROR);
}else if(message.constructor===ArrayBuffer){
message=new Uint8Array(message);
}}
if(Array.isArray(message)||ArrayBuffer.isView(message) ||
message.constructor===Buffer){
return crypto.createHash(algorithm).update(bufferFrom(message)).digest('hex');
}else{
return method(message);
}};
return nodeMethod;
};
var createHmacOutputMethod=function (outputType, is224){
return function (key, message){
return new HmacSha256(key, is224, true).update(message)[outputType]();
};};
var createHmacMethod=function (is224){
var method=createHmacOutputMethod('hex', is224);
method.create=function (key){
return new HmacSha256(key, is224);
};
method.update=function (key, message){
return method.create(key).update(message);
};
for (var i=0; i < OUTPUT_TYPES.length; ++i){
var type=OUTPUT_TYPES[i];
method[type]=createHmacOutputMethod(type, is224);
}
return method;
};
function Sha256(is224, sharedMemory){
if(sharedMemory){
blocks[0]=blocks[16]=blocks[1]=blocks[2]=blocks[3] =
blocks[4]=blocks[5]=blocks[6]=blocks[7] =
blocks[8]=blocks[9]=blocks[10]=blocks[11] =
blocks[12]=blocks[13]=blocks[14]=blocks[15]=0;
this.blocks=blocks;
}else{
this.blocks=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
}
if(is224){
this.h0=0xc1059ed8;
this.h1=0x367cd507;
this.h2=0x3070dd17;
this.h3=0xf70e5939;
this.h4=0xffc00b31;
this.h5=0x68581511;
this.h6=0x64f98fa7;
this.h7=0xbefa4fa4;
}else{
this.h0=0x6a09e667;
this.h1=0xbb67ae85;
this.h2=0x3c6ef372;
this.h3=0xa54ff53a;
this.h4=0x510e527f;
this.h5=0x9b05688c;
this.h6=0x1f83d9ab;
this.h7=0x5be0cd19;
}
this.block=this.start=this.bytes=this.hBytes=0;
this.finalized=this.hashed=false;
this.first=true;
this.is224=is224;
}
Sha256.prototype.update=function (message){
if(this.finalized){
return;
}
var notString, type=typeof message;
if(type!=='string'){
if(type==='object'){
if(message===null){
throw new Error(ERROR);
}else if(ARRAY_BUFFER&&message.constructor===ArrayBuffer){
message=new Uint8Array(message);
}else if(!Array.isArray(message)){
if(!ARRAY_BUFFER||!ArrayBuffer.isView(message)){
throw new Error(ERROR);
}}
}else{
throw new Error(ERROR);
}
notString=true;
}
var code, index=0, i, length=message.length, blocks=this.blocks;
while (index < length){
if(this.hashed){
this.hashed=false;
blocks[0]=this.block;
this.block=blocks[16]=blocks[1]=blocks[2]=blocks[3] =
blocks[4]=blocks[5]=blocks[6]=blocks[7] =
blocks[8]=blocks[9]=blocks[10]=blocks[11] =
blocks[12]=blocks[13]=blocks[14]=blocks[15]=0;
}
if(notString){
for (i=this.start; index < length&&i < 64; ++index){
blocks[i >>> 2] |=message[index] << SHIFT[i++ & 3];
}}else{
for (i=this.start; index < length&&i < 64; ++index){
code=message.charCodeAt(index);
if(code < 0x80){
blocks[i >>> 2] |=code << SHIFT[i++ & 3];
}else if(code < 0x800){
blocks[i >>> 2] |=(0xc0 | (code >>> 6)) << SHIFT[i++ & 3];
blocks[i >>> 2] |=(0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
}else if(code < 0xd800||code >=0xe000){
blocks[i >>> 2] |=(0xe0 | (code >>> 12)) << SHIFT[i++ & 3];
blocks[i >>> 2] |=(0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];
blocks[i >>> 2] |=(0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
}else{
code=0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
blocks[i >>> 2] |=(0xf0 | (code >>> 18)) << SHIFT[i++ & 3];
blocks[i >>> 2] |=(0x80 | ((code >>> 12) & 0x3f)) << SHIFT[i++ & 3];
blocks[i >>> 2] |=(0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];
blocks[i >>> 2] |=(0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
}}
}
this.lastByteIndex=i;
this.bytes +=i - this.start;
if(i >=64){
this.block=blocks[16];
this.start=i - 64;
this.hash();
this.hashed=true;
}else{
this.start=i;
}}
if(this.bytes > 4294967295){
this.hBytes +=this.bytes / 4294967296 << 0;
this.bytes=this.bytes % 4294967296;
}
return this;
};
Sha256.prototype.finalize=function (){
if(this.finalized){
return;
}
this.finalized=true;
var blocks=this.blocks, i=this.lastByteIndex;
blocks[16]=this.block;
blocks[i >>> 2] |=EXTRA[i & 3];
this.block=blocks[16];
if(i >=56){
if(!this.hashed){
this.hash();
}
blocks[0]=this.block;
blocks[16]=blocks[1]=blocks[2]=blocks[3] =
blocks[4]=blocks[5]=blocks[6]=blocks[7] =
blocks[8]=blocks[9]=blocks[10]=blocks[11] =
blocks[12]=blocks[13]=blocks[14]=blocks[15]=0;
}
blocks[14]=this.hBytes << 3 | this.bytes >>> 29;
blocks[15]=this.bytes << 3;
this.hash();
};
Sha256.prototype.hash=function (){
var a=this.h0, b=this.h1, c=this.h2, d=this.h3, e=this.h4, f=this.h5, g=this.h6,
h=this.h7, blocks=this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;
for (j=16; j < 64; ++j){
t1=blocks[j - 15];
s0=((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);
t1=blocks[j - 2];
s1=((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);
blocks[j]=blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;
}
bc=b & c;
for (j=0; j < 64; j +=4){
if(this.first){
if(this.is224){
ab=300032;
t1=blocks[0] - 1413257819;
h=t1 - 150054599 << 0;
d=t1 + 24177077 << 0;
}else{
ab=704751109;
t1=blocks[0] - 210244248;
h=t1 - 1521486534 << 0;
d=t1 + 143694565 << 0;
}
this.first=false;
}else{
s0=((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));
s1=((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));
ab=a & b;
maj=ab ^ (a & c) ^ bc;
ch=(e & f) ^ (~e & g);
t1=h + s1 + ch + K[j] + blocks[j];
t2=s0 + maj;
h=d + t1 << 0;
d=t1 + t2 << 0;
}
s0=((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));
s1=((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));
da=d & a;
maj=da ^ (d & b) ^ ab;
ch=(h & e) ^ (~h & f);
t1=g + s1 + ch + K[j + 1] + blocks[j + 1];
t2=s0 + maj;
g=c + t1 << 0;
c=t1 + t2 << 0;
s0=((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));
s1=((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));
cd=c & d;
maj=cd ^ (c & a) ^ da;
ch=(g & h) ^ (~g & e);
t1=f + s1 + ch + K[j + 2] + blocks[j + 2];
t2=s0 + maj;
f=b + t1 << 0;
b=t1 + t2 << 0;
s0=((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));
s1=((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));
bc=b & c;
maj=bc ^ (b & d) ^ cd;
ch=(f & g) ^ (~f & h);
t1=e + s1 + ch + K[j + 3] + blocks[j + 3];
t2=s0 + maj;
e=a + t1 << 0;
a=t1 + t2 << 0;
this.chromeBugWorkAround=true;
}
this.h0=this.h0 + a << 0;
this.h1=this.h1 + b << 0;
this.h2=this.h2 + c << 0;
this.h3=this.h3 + d << 0;
this.h4=this.h4 + e << 0;
this.h5=this.h5 + f << 0;
this.h6=this.h6 + g << 0;
this.h7=this.h7 + h << 0;
};
Sha256.prototype.hex=function (){
this.finalize();
var h0=this.h0, h1=this.h1, h2=this.h2, h3=this.h3, h4=this.h4, h5=this.h5,
h6=this.h6, h7=this.h7;
var hex=HEX_CHARS[(h0 >>> 28) & 0x0F] + HEX_CHARS[(h0 >>> 24) & 0x0F] +
HEX_CHARS[(h0 >>> 20) & 0x0F] + HEX_CHARS[(h0 >>> 16) & 0x0F] +
HEX_CHARS[(h0 >>> 12) & 0x0F] + HEX_CHARS[(h0 >>> 8) & 0x0F] +
HEX_CHARS[(h0 >>> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +
HEX_CHARS[(h1 >>> 28) & 0x0F] + HEX_CHARS[(h1 >>> 24) & 0x0F] +
HEX_CHARS[(h1 >>> 20) & 0x0F] + HEX_CHARS[(h1 >>> 16) & 0x0F] +
HEX_CHARS[(h1 >>> 12) & 0x0F] + HEX_CHARS[(h1 >>> 8) & 0x0F] +
HEX_CHARS[(h1 >>> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +
HEX_CHARS[(h2 >>> 28) & 0x0F] + HEX_CHARS[(h2 >>> 24) & 0x0F] +
HEX_CHARS[(h2 >>> 20) & 0x0F] + HEX_CHARS[(h2 >>> 16) & 0x0F] +
HEX_CHARS[(h2 >>> 12) & 0x0F] + HEX_CHARS[(h2 >>> 8) & 0x0F] +
HEX_CHARS[(h2 >>> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +
HEX_CHARS[(h3 >>> 28) & 0x0F] + HEX_CHARS[(h3 >>> 24) & 0x0F] +
HEX_CHARS[(h3 >>> 20) & 0x0F] + HEX_CHARS[(h3 >>> 16) & 0x0F] +
HEX_CHARS[(h3 >>> 12) & 0x0F] + HEX_CHARS[(h3 >>> 8) & 0x0F] +
HEX_CHARS[(h3 >>> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +
HEX_CHARS[(h4 >>> 28) & 0x0F] + HEX_CHARS[(h4 >>> 24) & 0x0F] +
HEX_CHARS[(h4 >>> 20) & 0x0F] + HEX_CHARS[(h4 >>> 16) & 0x0F] +
HEX_CHARS[(h4 >>> 12) & 0x0F] + HEX_CHARS[(h4 >>> 8) & 0x0F] +
HEX_CHARS[(h4 >>> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +
HEX_CHARS[(h5 >>> 28) & 0x0F] + HEX_CHARS[(h5 >>> 24) & 0x0F] +
HEX_CHARS[(h5 >>> 20) & 0x0F] + HEX_CHARS[(h5 >>> 16) & 0x0F] +
HEX_CHARS[(h5 >>> 12) & 0x0F] + HEX_CHARS[(h5 >>> 8) & 0x0F] +
HEX_CHARS[(h5 >>> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +
HEX_CHARS[(h6 >>> 28) & 0x0F] + HEX_CHARS[(h6 >>> 24) & 0x0F] +
HEX_CHARS[(h6 >>> 20) & 0x0F] + HEX_CHARS[(h6 >>> 16) & 0x0F] +
HEX_CHARS[(h6 >>> 12) & 0x0F] + HEX_CHARS[(h6 >>> 8) & 0x0F] +
HEX_CHARS[(h6 >>> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];
if(!this.is224){
hex +=HEX_CHARS[(h7 >>> 28) & 0x0F] + HEX_CHARS[(h7 >>> 24) & 0x0F] +
HEX_CHARS[(h7 >>> 20) & 0x0F] + HEX_CHARS[(h7 >>> 16) & 0x0F] +
HEX_CHARS[(h7 >>> 12) & 0x0F] + HEX_CHARS[(h7 >>> 8) & 0x0F] +
HEX_CHARS[(h7 >>> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];
}
return hex;
};
Sha256.prototype.toString=Sha256.prototype.hex;
Sha256.prototype.digest=function (){
this.finalize();
var h0=this.h0, h1=this.h1, h2=this.h2, h3=this.h3, h4=this.h4, h5=this.h5,
h6=this.h6, h7=this.h7;
var arr=[
(h0 >>> 24) & 0xFF, (h0 >>> 16) & 0xFF, (h0 >>> 8) & 0xFF, h0 & 0xFF,
(h1 >>> 24) & 0xFF, (h1 >>> 16) & 0xFF, (h1 >>> 8) & 0xFF, h1 & 0xFF,
(h2 >>> 24) & 0xFF, (h2 >>> 16) & 0xFF, (h2 >>> 8) & 0xFF, h2 & 0xFF,
(h3 >>> 24) & 0xFF, (h3 >>> 16) & 0xFF, (h3 >>> 8) & 0xFF, h3 & 0xFF,
(h4 >>> 24) & 0xFF, (h4 >>> 16) & 0xFF, (h4 >>> 8) & 0xFF, h4 & 0xFF,
(h5 >>> 24) & 0xFF, (h5 >>> 16) & 0xFF, (h5 >>> 8) & 0xFF, h5 & 0xFF,
(h6 >>> 24) & 0xFF, (h6 >>> 16) & 0xFF, (h6 >>> 8) & 0xFF, h6 & 0xFF
];
if(!this.is224){
arr.push((h7 >>> 24) & 0xFF, (h7 >>> 16) & 0xFF, (h7 >>> 8) & 0xFF, h7 & 0xFF);
}
return arr;
};
Sha256.prototype.array=Sha256.prototype.digest;
Sha256.prototype.arrayBuffer=function (){
this.finalize();
var buffer=new ArrayBuffer(this.is224 ? 28:32);
var dataView=new DataView(buffer);
dataView.setUint32(0, this.h0);
dataView.setUint32(4, this.h1);
dataView.setUint32(8, this.h2);
dataView.setUint32(12, this.h3);
dataView.setUint32(16, this.h4);
dataView.setUint32(20, this.h5);
dataView.setUint32(24, this.h6);
if(!this.is224){
dataView.setUint32(28, this.h7);
}
return buffer;
};
function HmacSha256(key, is224, sharedMemory){
var i, type=typeof key;
if(type==='string'){
var bytes=[], length=key.length, index=0, code;
for (i=0; i < length; ++i){
code=key.charCodeAt(i);
if(code < 0x80){
bytes[index++]=code;
}else if(code < 0x800){
bytes[index++]=(0xc0 | (code >>> 6));
bytes[index++]=(0x80 | (code & 0x3f));
}else if(code < 0xd800||code >=0xe000){
bytes[index++]=(0xe0 | (code >>> 12));
bytes[index++]=(0x80 | ((code >>> 6) & 0x3f));
bytes[index++]=(0x80 | (code & 0x3f));
}else{
code=0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));
bytes[index++]=(0xf0 | (code >>> 18));
bytes[index++]=(0x80 | ((code >>> 12) & 0x3f));
bytes[index++]=(0x80 | ((code >>> 6) & 0x3f));
bytes[index++]=(0x80 | (code & 0x3f));
}}
key=bytes;
}else{
if(type==='object'){
if(key===null){
throw new Error(ERROR);
}else if(ARRAY_BUFFER&&key.constructor===ArrayBuffer){
key=new Uint8Array(key);
}else if(!Array.isArray(key)){
if(!ARRAY_BUFFER||!ArrayBuffer.isView(key)){
throw new Error(ERROR);
}}
}else{
throw new Error(ERROR);
}}
if(key.length > 64){
key=(new Sha256(is224, true)).update(key).array();
}
var oKeyPad=[], iKeyPad=[];
for (i=0; i < 64; ++i){
var b=key[i]||0;
oKeyPad[i]=0x5c ^ b;
iKeyPad[i]=0x36 ^ b;
}
Sha256.call(this, is224, sharedMemory);
this.update(iKeyPad);
this.oKeyPad=oKeyPad;
this.inner=true;
this.sharedMemory=sharedMemory;
}
HmacSha256.prototype=new Sha256();
HmacSha256.prototype.finalize=function (){
Sha256.prototype.finalize.call(this);
if(this.inner){
this.inner=false;
var innerHash=this.array();
Sha256.call(this, this.is224, this.sharedMemory);
this.update(this.oKeyPad);
this.update(innerHash);
Sha256.prototype.finalize.call(this);
}};
var exports=createMethod();
exports.sha256=exports;
exports.sha224=createMethod(true);
exports.sha256.hmac=createHmacMethod();
exports.sha224.hmac=createHmacMethod(true);
if(COMMON_JS){
module.exports=exports;
}else{
root.sha256=exports.sha256;
root.sha224=exports.sha224;
if(AMD){
define(function (){
return exports;
});
}}
})();