PageSourceSearch

https://foodloops.net/collections/compostable-products

html foodloops.net collected 2026-10-08 05:01:04 UTC 148,300 bytes, 3,015 lines download raw bytes

1<!doctype html>
2<html class="no-js" lang="en">
3<head>
4
5  <!-- Basic page needs ================================================== -->
6  <meta charset="utf-8">
7  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
8
9  
10    <link rel="shortcut icon" href="//foodloops.net/cdn/shop/files/Color_Submark_1_32x32.svg?v=1681399667" type="image/png" />
11  
12
13  <!-- Title and description ================================================== -->
14  
15<!-- Added by AVADA SEO Suite -->
16
17
18
19
20
21
22<meta name="twitter:image" content="http://foodloops.net/cdn/shop/collections/IMG_9276.jpg?v=1607697700">
23
24
25
26
27<!-- /Added by AVADA SEO Suite -->
28<title>
29  Compostable Products &ndash; Food Loops
30  </title>
31
32  
33
34  <!-- Helpers ================================================== -->
35  <!-- /snippets/social-meta-tags.liquid -->
36
37
38
39
40<meta property="og:site_name" content="Food Loops">
41<meta property="og:url" content="https://foodloops.net/collections/compostable-products">
42<meta property="og:title" content="Compostable Products">
43<meta property="og:type" content="product.group">
44<meta property="og:description" content="FoodLoops is closing the food loop by recycling food waste. We offer food waste recycling, selling compostable supplies, and zero-waste events in NWA. We reduce the amount of food that enters the landfill and produce an eco-friendly, sustainable compost fertilizer for local growers and residents.">
45
46<meta property="og:image" content="http://foodloops.net/cdn/shop/collections/IMG_9276_1200x1200.jpg?v=1607697700">
47<meta property="og:image:secure_url" content="https://foodloops.net/cdn/shop/collections/IMG_9276_1200x1200.jpg?v=1607697700">
48
49
50<meta name="twitter:card" content="summary_large_image">
51<meta name="twitter:title" content="Compostable Products">
52<meta name="twitter:description" content="FoodLoops is closing the food loop by recycling food waste. We offer food waste recycling, selling compostable supplies, and zero-waste events in NWA. We reduce the amount of food that enters the landfill and produce an eco-friendly, sustainable compost fertilizer for local growers and residents.">
53
54  <link rel="canonical" href="https://foodloops.net/collections/compostable-products">
55  <meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
56  <meta name="theme-color" content="#fd9000">
57
58  <!-- CSS ================================================== -->
59  <link href="//foodloops.net/cdn/shop/t/23/assets/timber.scss.css?v=94658132072751693391759343713" rel="stylesheet" type="text/css" media="all" />
60  <link href="//foodloops.net/cdn/shop/t/23/assets/theme.scss.css?v=110540671003843786211759343712" rel="stylesheet" type="text/css" media="all" />
61
62  <!-- Sections ================================================== -->
63  
63<script>
64    window.theme = window.theme || {};
65    theme.strings = {
66      zoomClose: "Close (Esc)",
67      zoomPrev: "Previous (Left arrow key)",
68      zoomNext: "Next (Right arrow key)",
69      moneyFormat: "${{amount}}",
70      addressError: "Error looking up that address",
71      addressNoResults: "No results for that address",
72      addressQueryLimit: "You have exceeded the Google API usage limit. Consider upgrading to a \u003ca href=\"https:\/\/developers.google.com\/maps\/premium\/usage-limits\"\u003ePremium Plan\u003c\/a\u003e.",
73      authError: "There was a problem authenticating your Google Maps account.",
74      cartEmpty: "Your cart is currently empty.",
75      cartCookie: "Enable cookies to use the shopping cart",
76      cartSavings: "You're saving [savings]"
77    };
78    theme.settings = {
79      cartType: "drawer",
80      gridType: "collage"
81    };
82  </script>
82
83
84  
84<script src="//foodloops.net/cdn/shop/t/23/assets/jquery-2.2.3.min.js?v=58211863146907186831746559339" type="text/javascript"></script>
84
85
86  
86<script src="//foodloops.net/cdn/shop/t/23/assets/lazysizes.min.js?v=37531750901115495291746559339" async="async"></script>
86
87
88  
88<script src="//foodloops.net/cdn/shop/t/23/assets/theme.js?v=30177182500043533121746564147" defer="defer"></script>
88
89
90  <!-- Header hook for plugins ================================================== -->
91  
91<script type='text/javascript' src='https://foodloops.net/apps/wlm/js/wlm-1.1.js'></script>
91
92
93
94 
95 
96
97
98
99
100
101
102
103
104
105<style type="text/css">.wlm-message-pnf{text-align:center;}#wlm-pwd-form {padding: 30px 0;text-align: center}#wlm-wrapper,.wlm-form-holder {display: inline-block}#wlm-pwd-error {display: none;color: #fb8077;text-align: left}#wlm-pwd-error.wlm-error {border: 1px solid #fb8077}#wlm-pwd-form-button {display: inline-block!important;height: auto!important;padding: 8px 15px!important;background: #777;border-radius: 3px!important;color: #fff!important;text-decoration: none!important;vertical-align: top}.wlm-instantclick-fix,.wlm-item-selector {position: absolute;z-index: -999;display: none;height: 0;width: 0;font-size: 0;line-height: 0}</style>
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137<script type='text/javascript'>
138wlm.arrHideLinks.push('a[href$="/products/12oz-downtown-springdale-pla-cold-cup"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup/"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup?"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup#"],a[href$="/products/162oz-downtown-springdale-pla-cold-cup"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup/"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup?"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup#"]');
139</script>
139<style type='text/css' class='wlm-auto-hl-styles'>a[href$="/products/12oz-downtown-springdale-pla-cold-cup"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup/"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup?"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup#"],a[href$="/products/162oz-downtown-springdale-pla-cold-cup"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup/"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup?"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup#"]{ display: none !important; }</style>
140
141
142
143
144
145
146
147
148<script type='text/javascript'>
149wlm.arrHideLinks.push('a[href$="/products/12oz-fayetteville-ora-cold-cup-pla"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla/"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla?"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla#"],a[href$="/products/16oz-fayetteville-ora-cold-cup-pla"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla/"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla?"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla#"]');
150</script>
150<style type='text/css' class='wlm-auto-hl-styles'>a[href$="/products/12oz-fayetteville-ora-cold-cup-pla"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla/"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla?"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla#"],a[href$="/products/16oz-fayetteville-ora-cold-cup-pla"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla/"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla?"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla#"]{ display: none !important; }</style>
151
152
153
154
155
156
157
158
159<script type='text/javascript'>
160wlm.arrHideLinks.push('a[href$="/products/wholesale-test"],a[href*="/products/wholesale-test/"],a[href*="/products/wholesale-test?"],a[href*="/products/wholesale-test#"]');
161</script>
161<style type='text/css' class='wlm-auto-hl-styles'>a[href$="/products/wholesale-test"],a[href*="/products/wholesale-test/"],a[href*="/products/wholesale-test?"],a[href*="/products/wholesale-test#"]{ display: none !important; }</style>
162
163
164
165
166
167
168
169
170<script type='text/javascript'>
171wlm.arrHideLinks.push('a[href$="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim/"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim?"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim#"]');
172</script>
172<style type='text/css' class='wlm-auto-hl-styles'>a[href$="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim/"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim?"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim#"]{ display: none !important; }</style>
173
174
175
176
177
178        
179      
179<script type='text/javascript'>
180      
181        wlm.navigateByLocation();
182      
183      wlm.jq(document).ready(function(){
184        wlm.removeLinks();
185      });
186    </script>
186
187    
188    
189<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
189<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/1949335627/digital_wallets/dialog">
190<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" type="application/atom+xml" title="Feed" href="/collections/compostable-products.atom" />
191<link rel="alternate" type="application/json+oembed" href="https://foodloops.net/collections/compostable-products.oembed">
192<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
192
193<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
194<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=1949335627" crossorigin="anonymous"></script>
vendor: 1 bytes, line 194
194
195<script id="shopify-features" type="application/json">{"accessToken":"4323a01a7b320b82d137dc02972f829c","betas":["rich-media-storefront-analytics"],"domain":"foodloops.net","predictiveSearch":true,"shopId":1949335627,"locale":"en"}</script>
vendor: 1 bytes, line 195
195
196<script>var Shopify = Shopify || {};
197Shopify.shop = "food-loops.myshopify.com";
198Shopify.locale = "en";
199Shopify.currency = {"active":"USD","rate":"1.0"};
200Shopify.country = "US";
201Shopify.theme = {"name":"Brooklyn -- WPD|BOLD|May.06.2025","id":176843063593,"schema_name":"Brooklyn","schema_version":"12.0.2","theme_store_id":730,"role":"main"};
202Shopify.theme.handle = "null";
203Shopify.theme.style = {"id":null,"handle":null};
204Shopify.cdnHost = "foodloops.net/cdn";
205Shopify.routes = Shopify.routes || {};
206Shopify.routes.root = "/";
207Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
208Shopify.SignInWithShop = Shopify.SignInWithShop || {};
209Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
210Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 210
210
211<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 211
211
212<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 212
212
213<script>
214  window.ShopifyPay = window.ShopifyPay || {};
215  window.ShopifyPay.apiHost = "shop.app\/pay";
216  window.ShopifyPay.redirectState = null;
217</script>
vendor: 1 bytes, line 217
217
218<script>
219  window.Shopify = window.Shopify || {};
220  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
221  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
222  window.Shopify.SignInWithShop.eligible = true;
223</script>
vendor: 1 bytes, line 223
223
224<script id="shop-js-analytics" type="application/json">{"pageType":"collection"}</script>
vendor: 1 bytes, line 224
224
225<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 225
225
226<script type="module">
227  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
228
229  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
230
231</script>
vendor: 1 bytes, line 231
231
232<script>
233  window.Shopify = window.Shopify || {};
234  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
235  window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]};
236</script>
vendor: 1 bytes, line 236
236
237<script>(function() {
238  var isLoaded = false;
239  function asyncLoad() {
240    if (isLoaded) return;
241    isLoaded = true;
242    var urls = ["https:\/\/seo.apps.avada.io\/avada-seo-installed.js?shop=food-loops.myshopify.com","https:\/\/cdn.shopify.com\/s\/files\/1\/0019\/4933\/5627\/t\/15\/assets\/globo.formbuilder.init.js?v=1629484787\u0026shop=food-loops.myshopify.com"];
243    for (var i = 0; i < urls.length; i++) {
244      var s = document.createElement('script');
245      s.type = 'text/javascript';
246      s.async = true;
247      s.src = urls[i];
248      var x = document.getElementsByTagName('script')[0];
249      x.parentNode.insertBefore(s, x);
250    }
251  };
252  if(window.attachEvent) {
253    window.attachEvent('onload', asyncLoad);
254  } else {
255    window.addEventListener('load', asyncLoad, false);
256  }
257})();</script>
vendor: 1 bytes, line 257
257
258<script id="__st">var __st={"a":1949335627,"offset":-18000,"reqid":"d1b8873e-f732-4679-87ea-c02cb723ec1b-1791435664","pageurl":"foodloops.net\/collections\/compostable-products","u":"b95fc3cbda5a","p":"collection","rtyp":"collection","rid":79214575691};</script>
vendor: 1 bytes, line 258
258
259<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 259
259
260<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 260
260
261<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//foodloops.net/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 261
261
262<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//foodloops.net/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
262<script crossorigin="anonymous" defer="defer" src="//foodloops.net/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
vendor: 1 bytes, line 262
262
263<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 263
263
264<script>
265  window.Shopify = window.Shopify || {};
266  window.Shopify.MCP = window.Shopify.MCP || {};
267  window.Shopify.MCP.enabled = true;
268  window.Shopify.MCP.shop = "food-loops.myshopify.com";
269  window.Shopify.MCP.mcpEndpoint = "https:\/\/foodloops.net\/api\/mcp";
270  window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n  - What is your return policy?\n  - What is your shipping policy?\n  - What is your phone number?\n  - What are your hours of operation?\"\nSet policy_types to also get the store's written policies (full text and URL).\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question — e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}];
271</script>
vendor: 1 bytes, line 271
271
272<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/foodloops.net\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
273</script>
vendor: 1 bytes, line 273
273
274<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://foodloops.net/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
275</script>
vendor: 1 bytes, line 275
275
276<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
277  function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
278</script>
vendor: 1 bytes, line 278
278
279<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
280</script>
280
281<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://foodloops.net/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
282<style id="shopify-accelerated-checkout-cart">
283        #shopify-buyer-consent {
284  margin-top: 1em;
285  display: inline-block;
286  width: 100%;
287}
288
289#shopify-buyer-consent.hidden {
290  display: none;
291}
292
293#shopify-subscription-policy-button {
294  background: none;
295  border: none;
296  padding: 0;
297  text-decoration: underline;
298  font-size: inherit;
299  cursor: pointer;
300}
301
302#shopify-subscription-policy-button::before {
303  box-shadow: none;
304}
305
306      </style>
307
308<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
vendor: 1 bytes, line 308
308
309<script src="//foodloops.net/cdn/shop/t/23/assets/ndnapps-customloginredirect-script.js?v=41659385624941387421746559339" type="text/javascript"></script>
309
310
311
312  
312<script src="//foodloops.net/cdn/shop/t/23/assets/modernizr.min.js?v=21391054748206432451746559339" type="text/javascript"></script>
312
313
314  
315  
316  
317
318
319
320<script src='https://appdevelopergroup.co/apps/findastore/js/stores.js?shop=food-loops.myshopify.com' type='text/javascript'></script>
320
321
322<script>
323	var Globo = Globo || {};
324    var globoFormbuilderRecaptchaInit = function(){};
325    Globo.FormBuilder = Globo.FormBuilder || {};
326    Globo.FormBuilder.url = "https://form.globosoftware.net";
327    Globo.FormBuilder.shop = {
328        settings : {
329            reCaptcha : {
330                siteKey : ''
331            },
332            hideWaterMark : false,
333            encryptionFormId : false,
334            copyright: `Powered by G: <a href="https://apps.shopify.com/form-builder-contact-form" target="_blank">Form Builder</a>`,
335            scrollTop: true
336        },
337        pricing:{
338            features:{
339                fileUpload : 2,
340                removeCopyright : false,
341                bulkOrderForm: false,
342                cartForm: false,
343            }
344        },
345        configuration: {
346            money_format:  "${{amount}}"
347        },
348        encryption_form_id : false
349    };
350    Globo.FormBuilder.forms = [];
351
352    
353    Globo.FormBuilder.page = {
354        title : document.title,
355        href : window.location.href,
356        type: "collection"
357    };
358    
359    Globo.FormBuilder.assetFormUrls = [];
360            Globo.FormBuilder.assetFormUrls[56649] = "//foodloops.net/cdn/shop/t/23/assets/globo.formbuilder.data.56649.js?v=132778484552822898961746559339";
361            
362</script>
362
363
364<link rel="preload" href="//foodloops.net/cdn/shop/t/23/assets/globo.formbuilder.css?v=46488724916597153071746559339" as="style" onload="this.onload=null;this.rel='stylesheet'">
365<noscript><link rel="stylesheet" href="//foodloops.net/cdn/shop/t/23/assets/globo.formbuilder.css?v=46488724916597153071746559339"></noscript>
366<link rel="stylesheet" href="//foodloops.net/cdn/shop/t/23/assets/globo.formbuilder.css?v=46488724916597153071746559339">
367
368
369<script>
370    Globo.FormBuilder.__webpack_public_path__ = "//foodloops.net/cdn/shop/t/23/assets/"
371</script>
vendor: 1 bytes, line 371
371
372<script src="//foodloops.net/cdn/shop/t/23/assets/globo.formbuilder.index.js?v=99021968859982486151746559339" defer></script>
372
373
374<!-- GS-Inventory Start. Do not change -->
375
376<script class="gsinvdata">
377
378
379  gsCollectionProducts = {};
380                              
381  </script>
381
382
383<script async type="text/javascript" src="https://gravity-apps.com/showinventory/js/shopify/gsinventory5428.js?v=5dbd39f00821bad33ef8b3f0cf4f8923"></script>
383
384<!-- GS-Inventory End. Do not change  --><!-- BEGIN app block: shopify://apps/boostpop-popups-banners/blocks/app-embed/8b4a8c56-21b5-437e-95f9-cd5dc65ceb49 -->
385
386
387<script>
388    // Create app element in main document for widget to render to
389    function createAppElement() {
390        var appDiv = document.createElement('div');
391        appDiv.id = 'boost-pop-container';
392        // ADP-370: a theme rule on body > div (transform, filter, contain, will-change, perspective,
393        // backdrop-filter) would make the host a containing block and break the widget's position:fixed;
394        // pin them off on the host.
395        appDiv.style = 'display: block !important; transform: none !important; filter: none !important; contain: none !important; will-change: auto !important; perspective: none !important; backdrop-filter: none !important';
396
397        document.body.appendChild(appDiv);
398    }
399
400    // Load widget script and move to Shadow DOM after load
401    function loadWidgetScript() {
402        var script = document.createElement('script');
403
404        script.src = 'https://cdn.shopify.com/extensions/01a10e16-324a-7195-9cb5-db0d097564ef/boost-pop-up-70/assets/ap.min.js';
405        script.async = true;
406
407        document.head.appendChild(script);
408    }
409
410    function initializeApp() {
411        createAppElement();
412        loadWidgetScript();
413    }
414
415    // Execute immediately if DOM is already loaded, otherwise wait for DOMContentLoaded
416    if (document.readyState === 'loading') {
417        document.addEventListener('DOMContentLoaded', initializeApp);
418    } else {
419        initializeApp();
420    }
421</script>
421
422
423<script src="https://cdn.shopify.com/extensions/01a10e16-324a-7195-9cb5-db0d097564ef/boost-pop-up-70/assets/polyfill.min.js" async></script>
vendor: 1 bytes, line 423
423
424<script src="https://cdn.shopify.com/extensions/01a10e16-324a-7195-9cb5-db0d097564ef/boost-pop-up-70/assets/maska.js" async></script>
424
425
426<script>
427    // Function to make IE9+ support forEach:
428    if (window.NodeList && !NodeList.prototype.forEach) {
429        NodeList.prototype.forEach = Array.prototype.forEach;
430    }
431</script>
431
432
433
434<script src="https://cdn.shopify.com/extensions/01a10e16-324a-7195-9cb5-db0d097564ef/boost-pop-up-70/assets/ab.min.js" defer="defer"></script>
434
435
436
437<!-- END app block --><!-- BEGIN app block: shopify://apps/bold-subscriptions/blocks/bsub-embed/9ceb49f0-5fe5-4b5e-943d-f8af8985167d -->
438<script id="bold-subscriptions-app-embed-script" type="text/javascript" defer>
439    
440        
441            if (window.location.href.includes('pages/manage-subscriptions')) {
442                const queryParams = new URLSearchParams(window.location.search);
443                if(queryParams.has('deep_link') && queryParams.get('deep_link') === 'upsell' &&
444                    queryParams.has('type') && queryParams.get('type') === 'upcoming-order-email'
445                ) {
446                    window.location.href=`https://foodloops.net/customer_authentication/redirect?locale=en&region_country=US?${queryParams.toString()}&from_msp=true`;
447                }
448            } else if (window.location.href.includes('https://foodloops.net/customer_authentication/redirect?locale=en&region_country=US')) {
449                document.addEventListener('DOMContentLoaded', function() {
450                    const queryParams = new URLSearchParams(window.location.search);
451                    if(queryParams.has('from_msp')) {
452                        queryParams.delete('from_msp');
453
454                        let form = document.querySelector("#customer_login");
455
456                        if(form) {
457                            let input = document.createElement('input');
458                            input.type = 'hidden';
459                            input.name = 'return_to';
460                            input.value = `https://foodloops.net/pages/manage-subscriptions?${queryParams.toString()}`;
461
462                            form.appendChild(input);
463                        }
464                    }
465                });
466            }
467        
468    
469
470    window.BOLD = window.BOLD || {};
471    window.BOLD.subscriptions = window.BOLD.subscriptions || {};
472    window.BOLD.subscriptions.config = window.BOLD.subscriptions.config || {};
473    window.BOLD.subscriptions.config.isAppEmbedEnabled = true;
474    window.BOLD.subscriptions.classes = window.BOLD.subscriptions.classes || {};
475    window.BOLD.subscriptions.patches = window.BOLD.subscriptions.patches || {};
476    window.BOLD.subscriptions.patches.maxCheckoutRetries = window.BOLD.subscriptions.patches.maxCheckoutRetries || 200;
477    window.BOLD.subscriptions.patches.currentCheckoutRetries = window.BOLD.subscriptions.patches.currentCheckoutRetries || 0;
478    window.BOLD.subscriptions.patches.maxCashierPatchAttempts = window.BOLD.subscriptions.patches.maxCashierPatchAttempts || 200;
479    window.BOLD.subscriptions.patches.currentCashierPatchAttempts = window.BOLD.subscriptions.patches.currentCashierPatchAttempts || 0;
480    window.BOLD.subscriptions.config.platform = 'shopify';
481    window.BOLD.subscriptions.config.shopDomain = 'food-loops.myshopify.com';
482    window.BOLD.subscriptions.config.customDomain = 'foodloops.net';
483    window.BOLD.subscriptions.config.shopIdentifier = '1949335627';
484    window.BOLD.subscriptions.config.cashierUrl = 'https://cashier.boldcommerce.com';
485    window.BOLD.subscriptions.config.boldAPIBase = 'https://app-api.boldapps.net/';
486    window.BOLD.subscriptions.config.cashierApplicationUUID = '2e6a2bbc-b12b-4255-abdf-a02af85c0d4e';
487    window.BOLD.subscriptions.config.appUrl = 'https://sub.boldapps.net';
488    window.BOLD.subscriptions.config.currencyCode = 'USD';
489    window.BOLD.subscriptions.config.checkoutType = 'shopify';
490    window.BOLD.subscriptions.config.currencyFormat = "$\u0026#123;\u0026#123;amount}}";
491    window.BOLD.subscriptions.config.shopCurrencies = [];
492    window.BOLD.subscriptions.config.shopSettings = {"allow_msp_cancellation":true,"allow_msp_prepaid_renewal":true,"customer_can_pause_subscription":true,"customer_can_change_next_order_date":true,"customer_can_change_order_frequency":true,"customer_can_create_an_additional_order":false,"customer_can_use_passwordless_login":false,"customer_passwordless_login_redirect":false,"customer_can_add_products_to_existing_subscriptions":true,"customer_can_reactivate_subscription":true,"customer_can_reactivate_subscription_with_deleted_products":false,"show_currency_code":true,"stored_payment_method_policy":"required","customer_portal_path":"pages\/manage-subscriptions","display_only_subscription_products":false};
493    window.BOLD.subscriptions.config.customerLoginPath = null;
494    window.BOLD.subscriptions.config.isPrepaidEnabled = window.BOLD.subscriptions.config.isPrepaidEnabled || true;
495    window.BOLD.subscriptions.config.loadSubscriptionGroupFrom = 'default';
496    window.BOLD.subscriptions.config.loadSubscriptionGroupFromTypes = "default";
497    window.BOLD.subscriptions.config.cashierPluginOnlyMode = window.BOLD.subscriptions.config.cashierPluginOnlyMode || false;
498    if (window.BOLD.subscriptions.config.waitForCheckoutLoader === undefined) {
499        window.BOLD.subscriptions.config.waitForCheckoutLoader = true;
500    }
501
502    window.BOLD.subscriptions.config.addToCartFormSelectors = window.BOLD.subscriptions.config.addToCartFormSelectors || [];
503    window.BOLD.subscriptions.config.addToCartButtonSelectors = window.BOLD.subscriptions.config.addToCartButtonSelectors || [];
504    window.BOLD.subscriptions.config.widgetInsertBeforeSelectors = window.BOLD.subscriptions.config.widgetInsertBeforeSelectors || [];
505    window.BOLD.subscriptions.config.quickAddToCartButtonSelectors = window.BOLD.subscriptions.config.quickAddToCartButtonSelectors || [];
506    window.BOLD.subscriptions.config.cartElementSelectors = window.BOLD.subscriptions.config.cartElementSelectors || [];
507    window.BOLD.subscriptions.config.cartTotalElementSelectors = window.BOLD.subscriptions.config.cartTotalElementSelectors || [];
508    window.BOLD.subscriptions.config.lineItemSelectors = window.BOLD.subscriptions.config.lineItemSelectors || [];
509    window.BOLD.subscriptions.config.lineItemNameSelectors = window.BOLD.subscriptions.config.lineItemNameSelectors || [];
510    window.BOLD.subscriptions.config.checkoutButtonSelectors = window.BOLD.subscriptions.config.checkoutButtonSelectors || [];
511
512    window.BOLD.subscriptions.config.featureFlags = window.BOLD.subscriptions.config.featureFlagOverrides || ["BE-2298-Support-Variant-Selections-In-Sub-Groups","BE-6925-remove-bold-error-code-from-error-message","BE-8664-default-address-source-bold","BE-9502-add-logs-to-investigate-infinite-loop","BE-6695-improve-subs-onboarding","BE-10096-list-deleted-variants","BE-10183-customer-portal-paginates-products","BE-10178-suppress-dup-inventory-failure-emails","BE-9073-reactivate-subscription-setting"];
513    window.BOLD.subscriptions.config.subscriptionProcessingFrequency = '60';
514    window.BOLD.subscriptions.config.requireMSPInitialLoadingMessage = true;
515    window.BOLD.subscriptions.data = window.BOLD.subscriptions.data || {};
516
517    // Interval text markup template
518    window.BOLD.subscriptions.config.lineItemPropertyListSelectors = window.BOLD.subscriptions.config.lineItemPropertyListSelectors || [];
519    window.BOLD.subscriptions.config.lineItemPropertyListSelectors.push('dl.definitionList');
520    window.BOLD.subscriptions.config.lineItemPropertyListTemplate = window.BOLD.subscriptions.config.lineItemPropertyListTemplate || '<dl class="definitionList"></dl>';
521    window.BOLD.subscriptions.config.lineItemPropertyTemplate = window.BOLD.subscriptions.config.lineItemPropertyTemplate || '<dt class="definitionList-key">{{key}}:</dt><dd class="definitionList-value">{{value}}</dd>';
522
523    // Discount text markup template
524    window.BOLD.subscriptions.config.discountItemTemplate = window.BOLD.subscriptions.config.discountItemTemplate || '<div class="bold-subscriptions-discount"><div class="bold-subscriptions-discount__details">{{details}}</div><div class="bold-subscriptions-discount__total">{{total}}</div></div>';
525
526
527    // Constants in XMLHttpRequest are not reliable, so we will create our own
528    // reference: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState
529    window.BOLD.subscriptions.config.XMLHttpRequest = {
530        UNSENT:0,            // Client has been created. open() not called yet.
531        OPENED: 1,           // open() has been called.
532        HEADERS_RECEIVED: 2, // send() has been called, and headers and status are available.
533        LOADING: 3,          // Downloading; responseText holds partial data.
534        DONE: 4              // The operation is complete.
535    };
536
537    window.BOLD.subscriptions.config.assetBaseUrl = 'https://sub.boldapps.net';
538    if (window.localStorage && window.localStorage.getItem('boldSubscriptionsAssetBaseUrl')) {
539        window.BOLD.subscriptions.config.assetBaseUrl = window.localStorage.getItem('boldSubscriptionsAssetBaseUrl')
540    }
541
542    window.BOLD.subscriptions.data.subscriptionGroups = [];
543    if (localStorage && localStorage.getItem('boldSubscriptionsSubscriptionGroups')) {
544        window.BOLD.subscriptions.data.subscriptionGroups = JSON.parse(localStorage.getItem('boldSubscriptionsSubscriptionGroups'));
545    } else {
546        window.BOLD.subscriptions.data.subscriptionGroups = [{"id":44980,"billing_rules":[{"id":111379,"subscription_group_id":44980,"interval_name":"Monthly","billing_rule":"FREQ=MONTHLY","custom_billing_rule":""}],"is_subscription_only":false,"allow_prepaid":false,"allow_dynamic_discount":false,"is_prepaid_only":false,"should_continue_prepaid":true,"continue_prepaid_type":"as_prepaid","prepaid_durations":[{"id":44455,"subscription_group_id":44980,"total_duration":1,"discount_type":"percentage","discount_value":0}],"dynamic_discounts":[],"selection_options":[{"platform_entity_id":null},{"platform_entity_id":null},{"platform_entity_id":null},{"platform_entity_id":null},{"platform_entity_id":"4285056548939"}],"discount_type":"no_discount","percent_discount":0,"fixed_discount":0,"can_add_to_cart":true}];
547    }
548
549    window.BOLD.subscriptions.isFeatureFlagEnabled = function (featureFlag) {
550        for (var i = 0; i < window.BOLD.subscriptions.config.featureFlags.length; i++) {
551            if (window.BOLD.subscriptions.config.featureFlags[i] === featureFlag){
552                return true;
553            }
554        }
555        return false;
556    }
557
558    window.BOLD.subscriptions.logger = {
559        tag: "bold_subscriptions",
560        // the bold subscriptions log level
561        // 0 - errors (default)
562        // 1 - warnings + errors
563        // 2 - info + warnings + errors
564        // use window.localStorage.setItem('boldSubscriptionsLogLevel', x) to set the log level
565        levels: {
566            ERROR: 0,
567            WARN: 1,
568            INFO: 2,
569        },
570        level: parseInt((window.localStorage && window.localStorage.getItem('boldSubscriptionsLogLevel')) || "0", 10),
571        _log: function(callArgs, level) {
572            if (!window.console) {
573                return null;
574            }
575
576            if (window.BOLD.subscriptions.logger.level < level) {
577                return;
578            }
579
580            var params = Array.prototype.slice.call(callArgs);
581            params.unshift(window.BOLD.subscriptions.logger.tag);
582
583            switch (level) {
584                case window.BOLD.subscriptions.logger.levels.INFO:
585                    console.info.apply(null, params);
586                    return;
587                case window.BOLD.subscriptions.logger.levels.WARN:
588                    console.warn.apply(null, params);
589                    return;
590                case window.BOLD.subscriptions.logger.levels.ERROR:
591                    console.error.apply(null, params);
592                    return;
593                default:
594                    console.log.apply(null, params);
595                    return;
596            }
597        },
598        info: function() {
599            window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.INFO);
600        },
601        warn: function() {
602            window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.WARN);
603        },
604        error: function() {
605            window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.ERROR);
606        }
607    }
608
609    window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI = function() {
610        return window.BOLD.subscriptions.config.loadSubscriptionGroupFrom === window.BOLD.subscriptions.config.loadSubscriptionGroupFromTypes['BSUB_API'];
611    }
612
613    window.BOLD.subscriptions.getSubscriptionGroupFromProductId = function (productId) {
614        var data = window.BOLD.subscriptions.data;
615        var foundGroup = null;
616        for (var i = 0; i < data.subscriptionGroups.length; i += 1) {
617            var subscriptionGroup = data.subscriptionGroups[i];
618            for (var j = 0; j < subscriptionGroup.selection_options.length; j += 1) {
619                var selectionOption = subscriptionGroup.selection_options[j];
620                if (selectionOption.platform_entity_id === productId.toString()) {
621                    foundGroup = subscriptionGroup;
622                    break;
623                }
624            }
625            if (foundGroup) {
626                break;
627            }
628        }
629        return foundGroup;
630    };
631
632    window.BOLD.subscriptions.getSubscriptionGroupById = function(subGroupId) {
633        var subscriptionGroups = window.BOLD.subscriptions.data.subscriptionGroups;
634
635        for (var i = 0; i < subscriptionGroups.length; i += 1) {
636            var subGroup = subscriptionGroups[i];
637            if (subGroup.id === subGroupId) {
638                return subGroup;
639            }
640        }
641
642        return null;
643    };
644
645    window.BOLD.subscriptions.addSubscriptionGroup = function (subscriptionGroup) {
646        if(!window.BOLD.subscriptions.getSubscriptionGroupById(subscriptionGroup.id))
647        {
648            window.BOLD.subscriptions.data.subscriptionGroups.push(subscriptionGroup);
649        }
650    }
651
652    window.BOLD.subscriptions.getSubscriptionGroupPrepaidDurationById = function(subscriptionGroupId, prepaidDurationId) {
653        var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupById(subscriptionGroupId);
654
655        if (
656            !subscriptionGroup
657            || !subscriptionGroup.prepaid_durations
658            || !subscriptionGroup.prepaid_durations.length
659        ) {
660            return null;
661        }
662
663        for (var i = 0; i < subscriptionGroup.prepaid_durations.length; i++) {
664            var prepaidDuration = subscriptionGroup.prepaid_durations[i];
665            if (prepaidDuration.id === prepaidDurationId) {
666                return prepaidDuration;
667            }
668        }
669
670        return null;
671    }
672
673    window.BOLD.subscriptions.getSubscriptionGroupBillingRuleById = function(subGroup, billingRuleId) {
674        for (var i = 0; i < subGroup.billing_rules.length; i += 1) {
675            var billingRule = subGroup.billing_rules[i];
676            if (billingRule.id === billingRuleId) {
677                return billingRule;
678            }
679        }
680
681        return null;
682    };
683
684    window.BOLD.subscriptions.toggleDisabledAddToCartButtons = function(d) {
685        var addToCartForms = document.querySelectorAll(window.BOLD.subscriptions.config.addToCartFormSelectors.join(','));
686        var disable = !!d;
687        for (var i = 0; i < addToCartForms.length; i++) {
688            var addToCartForm = addToCartForms[i];
689            var productId = window.BOLD.subscriptions.getProductIdFromAddToCartForm(
689addToCartForm);
690            var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupFromProductId(productId);
691
692            if(window.BOLD.subscriptions.isFeatureFlagEnabled('BS2-4659_improve_large_group_selection') ) {
693                if (subscriptionGroup || window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI()) {
694                    var addToCartButtons = addToCartForm.querySelectorAll(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(','));
695                    for (var j = 0; j < addToCartButtons.length; j++) {
696                        var addToCartButton = addToCartButtons[j];
697                        var toggleAction = disable ?  addToCartButton.setAttribute : addToCartButton.removeAttribute;
698
699                        addToCartButton.disabled = disable;
700                        toggleAction.call(addToCartButton, 'data-disabled-by-subscriptions', disable);
701                    }
702                }
703            } else {
704                if (subscriptionGroup) {
705                    var addToCartButtons = addToCartForm.querySelectorAll(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(','));
706                    for (var j = 0; j < addToCartButtons.length; j++) {
707                        var addToCartButton = addToCartButtons[j];
708                        var toggleAction = disable ?  addToCartButton.setAttribute : addToCartButton.removeAttribute;
709
710                        addToCartButton.disabled = disable;
711                        toggleAction.call(addToCartButton, 'data-disabled-by-subscriptions', disable);
712                    }
713                }
714            }
715
716        }
717    };
718
719    window.BOLD.subscriptions.disableAddToCartButtons = function () {
720        // only disable the add to cart buttons if the app isn't loaded yet
721        if (!window.BOLD.subscriptions.app) {
722            window.BOLD.subscriptions.toggleDisabledAddToCartButtons(true);
723        } else {
724            window.BOLD.subscriptions.enableAddToCartButtons();
725        }
726    };
727
728    window.BOLD.subscriptions.enableAddToCartButtons = function () {
729        document.removeEventListener('click', window.BOLD.subscriptions.preventSubscriptionAddToCart);
730        window.BOLD.subscriptions.toggleDisabledAddToCartButtons(false);
731    };
732
733    window.BOLD.subscriptions.toggleDisabledCheckoutButtons = function(d) {
734        var checkoutButtons = document.querySelectorAll(window.BOLD.subscriptions.config.checkoutButtonSelectors.join(','));
735        var disable = !!d;
736        for (var i = 0; i < checkoutButtons.length; i++) {
737            var checkoutButton = checkoutButtons[i];
738            var toggleAction = disable ? checkoutButton.setAttribute : checkoutButton.removeAttribute;
739
740            checkoutButton.disabled = disable;
741            toggleAction.call(checkoutButton, 'data-disabled-by-subscriptions', disable);
742        }
743    }
744
745    window.BOLD.subscriptions.disableCheckoutButtons = function() {
746        // only disable the checkout buttons if the app isn't loaded yet
747        if (!window.BOLD.subscriptions.app) {
748            window.BOLD.subscriptions.toggleDisabledCheckoutButtons(true);
749        } else {
750            window.BOLD.subscriptions.enableCheckoutButtons();
751        }
752    }
753
754    window.BOLD.subscriptions.enableCheckoutButtons = function() {
755        document.removeEventListener('click', window.BOLD.subscriptions.preventCheckout);
756        window.BOLD.subscriptions.toggleDisabledCheckoutButtons(false);
757    }
758
759    window.BOLD.subscriptions.hasSuccessfulAddToCarts = function() {
760        if (typeof(Storage) !== "undefined") {
761            var successfulAddToCarts = JSON.parse(
762                window.localStorage.getItem('boldSubscriptionsSuccessfulAddToCarts') || '[]'
763            );
764            if (successfulAddToCarts.length > 0) {
765                return true;
766            }
767        }
768
769        return false;
770    }
771
772    window.BOLD.subscriptions.hasPendingAddToCarts = function() {
773        if (typeof(Storage) !== "undefined") {
774            var pendingAddToCarts = JSON.parse(
775                window.localStorage.getItem('boldSubscriptionsPendingAddToCarts') || '[]'
776            );
777            if (pendingAddToCarts.length > 0) {
778                return true;
779            }
780        }
781
782        return false;
783    }
784
785    window.BOLD.subscriptions.addJSAsset = function(src, deferred) {
786        var scriptTag = document.getElementById('bold-subscriptions-app-embed-script');
787        var jsElement = document.createElement('script');
788        jsElement.type = 'text/javascript';
789        jsElement.src = src;
790        if (deferred) {
791           jsElement.defer = true;
792        }
793        scriptTag.parentNode.insertBefore(jsElement, scriptTag);
794    };
795
796    window.BOLD.subscriptions.addCSSAsset = function(href) {
797        var scriptTag = document.getElementById('bold-subscriptions-app-embed-script');
798        var cssElement = document.createElement('link');
799        cssElement.href = href;
800        cssElement.rel = 'stylesheet';
801        scriptTag.parentNode.insertBefore(cssElement, scriptTag);
802    };
803
804    window.BOLD.subscriptions.loadStorefrontAssets = function loadStorefrontAssets() {
805        var assets = window.BOLD.subscriptions.config.assets;
806        window.BOLD.subscriptions.addCSSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['storefront.css']);
807        window.BOLD.subscriptions.addJSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['storefront.js'], false);
808    };
809
810    window.BOLD.subscriptions.loadCustomerPortalAssets = function loadCustomerPortalAssets() {
811      if (document.getElementById('customer-portal-root') || document.getElementsByClassName('bsub-express-add-ons-widget')) {
812        var assets = window.BOLD.subscriptions.config.assets;
813        window.BOLD.subscriptions.addCSSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['customer_portal.css']);
814        window.BOLD.subscriptions.addJSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['customer_portal.js'], true);
815      }
816    };
817
818    window.BOLD.subscriptions.processManifest = function() {
819        if (!window.BOLD.subscriptions.processedManifest) {
820            window.BOLD.subscriptions.processedManifest = true;
821            window.BOLD.subscriptions.config.assets = JSON.parse(this.responseText);
822
823            
824            window.BOLD.subscriptions.loadCustomerPortalAssets();
825        }
826    };
827
828    window.BOLD.subscriptions.addInitialLoadingMessage = function() {
829        var customerPortalNode = document.getElementById('customer-portal-root');
830        if (customerPortalNode && window.BOLD.subscriptions.config.requireMSPInitialLoadingMessage) {
831            customerPortalNode.innerHTML = '<div class="bold-subscriptions-loader-container"><div class="bold-subscriptions-loader"></div></div>';
832        }
833    }
834
835    window.BOLD.subscriptions.contentLoaded = function() {
836        window.BOLD.subscriptions.data.contentLoadedEventTriggered = true;
837        window.BOLD.subscriptions.addInitialLoadingMessage();
838        
839    };
840
841    window.BOLD.subscriptions.preventSubscriptionAddToCart = function(e) {
842        if (e.target.matches(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(',')) && e.target.form) {
843            var productId = window.BOLD.subscriptions.getProductIdFromAddToCartForm(e.target.form);
844            var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupFromProductId(productId);
845            if(window.BOLD.subscriptions.isFeatureFlagEnabled('BS2-4659_improve_large_group_selection'))
846            {
847                if (subscriptionGroup || window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI()) {
848                    // This code prevents products in subscription groups from being added to the cart before the
849                    // Subscriptions app fully loads. Once the subscriptions app loads it will re-enable the
850                    // buttons. Use window.BOLD.subscriptions.enableAddToCartButtons enable them manually.
851                    e.preventDefault();
852                    return false;
853                }
854            } else {
855                if (subscriptionGroup) {
856                    // This code prevents products in subscription groups from being added to the cart before the
857                    // Subscriptions app fully loads. Once the subscriptions app loads it will re-enable the
858                    // buttons. Use window.BOLD.subscriptions.enableAddToCartButtons enable them manually.
859                    e.preventDefault();
860                    return false;
861                }
862            }
863
864        }
865    };
866
867    window.BOLD.subscriptions.preventCheckout = function(e) {
868        if (
869            e.target.matches(window.BOLD.subscriptions.config.checkoutButtonSelectors.join(','))
870            && (window.BOLD.subscriptions.hasSuccessfulAddToCarts() || window.BOLD.subscriptions.hasPendingAddToCarts())
871        ) {
872            // This code prevents checkouts on the shop until the Subscriptions app fully loads.
873            // When the Subscriptions app is ready it will enable the checkout buttons itself.
874            // Use window.BOLD.subscriptions.enableCheckoutButtons to enable them manually.
875            e.preventDefault();
876            return false;
877        }
878    }
879
880    if (!window.BOLD.subscriptions.config.legacyAssetsLoaded) {
881        
882        document.addEventListener('DOMContentLoaded', window.BOLD.subscriptions.contentLoaded);
883    }
884
885    if (!Element.prototype.matches) {
886        Element.prototype.matches =
887            Element.prototype.matchesSelector ||
888            Element.prototype.mozMatchesSelector ||
889            Element.prototype.msMatchesSelector ||
890            Element.prototype.oMatchesSelector ||
891            Element.prototype.webkitMatchesSelector ||
892            function(s) {
893                var matches = (this.document || this.ownerDocument).querySelectorAll(s),
894                    i = matches.length;
895                while (--i >= 0 && matches.item(i) !== this) {}
896                return i > -1;
897            };
898    }
899
900    if (!Element.prototype.closest) {
901        Element.prototype.closest = function(s) {
902            var el = this;
903
904            do {
905                if (Element.prototype.matches.call(el, s)) return el;
906                el = el.parentElement || el.parentNode;
907            } while (el !== null && el.nodeType === 1);
908            return null;
909        };
910    }
911
912    window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons = function (isVisible) {
913        if (window.BOLD.subscriptions.config.additionalCheckoutSelectors === undefined) {
914            return;
915        }
916
917        var selectors = window.BOLD.subscriptions.config.additionalCheckoutSelectors;
918
919        for (var i = 0; i < selectors.length; i++) {
920            var elements = document.querySelectorAll(selectors[i]);
921
922            for (var j = 0; j < elements.length; j++) {
923                elements[j].style.display = isVisible ? 'block' : 'none';
924            }
925        }
926    }
927
928    window.BOLD.subscriptions.hideAdditionalCheckoutButtons = function() {
929        window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons(false);
930    };
931
932    window.BOLD.subscriptions.showAdditionalCheckoutButtons = function() {
933        window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons(true);
934    };
935
936    window.BOLD.subscriptions.enhanceMspUrls = function(data) {
937        var mspUrl = 'https://sub.boldapps.net/shop/20011/customer_portal';
938        var elements = document.querySelectorAll("a[href='"+mspUrl+"']");
939
940        if(!elements.length || !data.success) {
941            return;
942        }
943
944        for (var i = 0; i < elements.length; i++) {
945            elements[i].href = elements[i].href + "?jwt="+data.value.jwt+"&customerId="+data.value.customerId;
946        }
947    };
948
949    if (!window.BOLD.subscriptions.config.legacyAssetsLoaded) {
950        window.addEventListener('load', function () {
951          if (document.getElementById('customer-portal-root')) {
952            window.BOLD.subscriptions.getJWT(window.BOLD.subscriptions.enhanceMspUrls);
953          }
954        });
955
956        // This will be called immediately
957        // Use this anonymous function to avoid polluting the global namespace
958        (function() {
959            var xhr = new XMLHttpRequest();
960            xhr.addEventListener('load', window.BOLD.subscriptions.processManifest);
961            xhr.open('GET', window.BOLD.subscriptions.config.assetBaseUrl + '/static/manifest.json?t=' + (new Date()).getTime());
962            xhr.send();
963        })()
964    }
965
966    window.BOLD.subscriptions.patches.patchCashier = function() {
967        if (window.BOLD && window.BOLD.checkout) {
968            window.BOLD.checkout.disable();
969            window.BOLD.checkout.listenerFn = window.BOLD.subscriptions.patches.cashierListenerFn;
970            window.BOLD.checkout.enable();
971        } else if (window.BOLD.subscriptions.patches.currentCashierPatchAttempts < window.BOLD.subscriptions.patches.maxCashierPatchAttempts) {
972            window.BOLD.subscriptions.patches.currentCashierPatchAttempts++;
973            setTimeout(window.BOLD.subscriptions.patches.patchCashier, 100);
974        }
975    };
976
977    window.BOLD.subscriptions.patches.finishCheckout = function(event, form, cart) {
978        window.BOLD.subscriptions.patches.currentCheckoutRetries++;
979
980        if (!window.BOLD.subscriptions.app
981            && window.BOLD.subscriptions.patches.currentCheckoutRetries < window.BOLD.subscriptions.patches.maxCheckoutRetries
982        ) {
983            setTimeout(function () { window.BOLD.subscriptions.patches.finishCheckout(event, form, cart); }, 100);
984            return;
985        } else if (window.BOLD.subscriptions.app) {
986            window.BOLD.subscriptions.patches.currentCheckoutRetries = 0;
987            window.BOLD.subscriptions.app.addCartParams(form, cart);
988        }
989
990        var noSubscriptions = false;
991        if ((window.BOLD.subscriptions.app && window.BOLD.subscriptions.app.successfulAddToCarts.length === 0)
992            || !window.BOLD.subscriptions.app
993        ) {
994            noSubscriptions = true;
995            event.target.dataset.cashierConfirmedNoPlugins = true;
996
997            if (window.BOLD.subscriptions.setCashierFeatureToken) {
998                window.BOLD.subscriptions.setCashierFeatureToken(false);
999            }
1000        }
1001
1002        if ((noSubscriptions && window.BOLD.subscriptions.config.cashierPluginOnlyMode)
1003            || (typeof BOLD.checkout.isFeatureRequired === 'function' && !BOLD.checkout.isFeatureRequired())
1004        ) {
1005            // send them to the original checkout when in plugin only mode
1006            // and either BSUB is there but there are no subscription products
1007            // or BSUB isn't there at all
1008            if (form.dataset.old_form_action) {
1009                form.action = form.dataset.old_form_action;
1010            }
1011            event.target.click();
1012        } else {
1013            // sends them to Cashier since BSUB got a chance to add it's stuff
1014            // and plugin only mode is not enabled
1015            form.submit();
1016        }
1017    };
1018</script>
vendor: 1 bytes, line 1018
1018
1019<script id="bold-subscriptions-app-embed-platform-script" type="text/javascript" defer>
1020    window.BOLD.subscriptions.config.shopPlatformId = '1949335627';
1021    window.BOLD.subscriptions.config.appSlug = 'subscriptions';
1022
1023    window.BOLD = window.BOLD || {};
1024    window.BOLD.subscriptions = window.BOLD.subscriptions || {};
1025    window.BOLD.subscriptions.data = window.BOLD.subscriptions.data || {};
1026    window.BOLD.subscriptions.data.platform = window.BOLD.subscriptions.data.platform || {};
1027    window.BOLD.subscriptions.data.platform.customer = { id: '' };
1028    window.BOLD.subscriptions.data.platform.product = null;
1029    window.BOLD.subscriptions.data.platform.products = [];
1030    window.BOLD.subscriptions.data.platform.variantProductMap = {};
1031
1032    window.BOLD.subscriptions.getProductByVariantId = function(variantId) {
1033        if (window.BOLD.subscriptions.data.platform.product && 
1034            window.BOLD.subscriptions.data.platform.product.variants) {
1035            for (var i = 0; i < window.BOLD.subscriptions.data.platform.product.variants.length; i++) {
1036                if (window.BOLD.subscriptions.data.platform.product.variants[i].id === variantId) {
1037                    return window.BOLD.subscriptions.data.platform.product;
1038                }
1039            }
1040        }
1041
1042        if (window.BOLD.subscriptions.data.platform.variantProductMap[variantId]) {
1043            return window.BOLD.subscriptions.data.platform.variantProductMap[variantId];
1044        }
1045
1046        var productElements = document.querySelectorAll('[data-product-id]');
1047        for (var i = 0; i < productElements.length; i++) {
1048            var productJsonElement = productElements[i].querySelector('[data-product-json]');
1049            
1050            if (productJsonElement) {
1051                try {
1052                    var productData = JSON.parse(productJsonElement.textContent);
1053                    if (productData && productData.variants) {
1054                        for (var j = 0; j < productData.variants.length; j++) {
1055                            if (productData.variants[j].id === variantId) {
1056                                return productData;
1057                            }
1058                        }
1059                    }
1060                } catch (e) {
1061                    // Continue if parsing fails
1062                }
1063            }
1064        }
1065
1066        return null;
1067    }
1068
1069    window.BOLD.subscriptions.config.addToCartFormSelectors.push(
1070        '.product-form.product-form-product-template:not(.bold-subscriptions-no-widget)'
1071        ,'.product-form.product-form--payment-button:not(.bold-subscriptions-no-widget)'
1072    );
1073    window.BOLD.subscriptions.config.addToCartButtonSelectors.push('[type="submit"]');
1074    window.BOLD.subscriptions.config.quickAddToCartButtonSelectors.push('a[data-event-type="product-click"]');
1075    window.BOLD.subscriptions.config.widgetInsertBeforeSelectors.push('[type="submit"]');
1076    window.BOLD.subscriptions.config.cartElementSelectors.push('form[action="/cart"]');
1077    window.BOLD.subscriptions.config.cartTotalElementSelectors.push('[data-cart-subtotal]', '.text-right .ajaxcart__subtotal');
1078    window.BOLD.subscriptions.config.checkoutButtonSelectors.push(
1079        '[name="checkout"]',
1080        '[href*="checkout"]:not([href*="tools/checkout"])',
1081        '[onclick*="checkout"]:not([onclick*="tools/checkout"])',
1082    );
1083
1084    // Discount text markup template
1085    
1086    window.BOLD.subscriptions.config.discountItemTemplate = '<div class="bold-subscriptions-discount"><div class="bold-subscriptions-discount__details">{{details}}</div><div class="bold-subscriptions-discount__total">{{total}}</div></div>';
1087    
1088
1089    window.BOLD.subscriptions.getProductIdFromAddToCartForm = function(addToCartForm) {
1090        var idInput = addToCartForm.querySelector('[name="id"]');
1091        if (idInput === null) {
1092            window.BOLD.subscriptions.logger.error('could not get variant id input from add to cart form — make sure your form has an input with [name="id"]')
1093            return null;
1094        }
1095
1096        var variantId = parseInt(idInput.value, 10);
1097        if (isNaN(variantId)) {
1098            window.BOLD.subscriptions.logger.error('could not parse variant id from [name="id"] input')
1099            return null;
1100        }
1101
1102        var product = window.BOLD.subscriptions.getProductByVariantId(variantId);
1103
1104        if (product === undefined || product === null) {
1105            window.BOLD.subscriptions.logger.error('could not find product data for variant id ' + variantId + ' — product data may not be available on this page')
1106            return null;
1107        }
1108
1109        return product.id;
1110    };
1111
1112    window.BOLD.subscriptions.getAddToCartForms = function() {
1113        var forms = [];
1114        var idInputs = document.querySelectorAll('[name="id"]');
1115
1116        for (var i = 0; i < idInputs.length; i++) {
1117            var idInput = idInputs[i];
1118            var form = idInput.closest('form:not(.bold-subscriptions-no-widget)');
1119            if (form) {
1120                forms.push(form);
1121            }
1122        }
1123
1124        return forms;
1125    };
1126
1127    window.BOLD.subscriptions.getJWT = function (callback) {
1128        if(window.BOLD.subscriptions.data.platform.customer.id !== '') {
1129            var shopPlatformId = '1949335627';
1130            var appSlug = 'subscriptions';
1131            var customerPlatformId = window.BOLD.subscriptions.data.platform.customer.id;
1132            var proxyPath = '/apps/app-proxy/customers/v1/shops/'+shopPlatformId+'/apps/'+appSlug+'/customers/pid/'+customerPlatformId+'/jwt';
1133
1134            var xmlhttp = new XMLHttpRequest();
1135
1136            xmlhttp.onreadystatechange = function() {
1137                if (xmlhttp.readyState === window.BOLD.subscriptions.config.XMLHttpRequest.DONE) {
1138                    if (xmlhttp.status === 200) {
1139                        var data = JSON.parse(xmlhttp.responseText);
1140                        callback({
1141                            success: true,
1142                            value: {
1143                                jwt: data.bold_platform_jwt,
1144                                customerId: window.BOLD.subscriptions.data.platform.customer.id,
1145                            },
1146                        });
1147                    } else if (xmlhttp.status === 404) {
1148                        callback({
1149                            success: false,
1150                            error: 'not_logged_in',
1151                        });
1152                    } else {
1153                        callback({
1154                            success: false,
1155                            error: 'unknown',
1156                        });
1157                    }
1158                }
1159            };
1160
1161            xmlhttp.open("GET", proxyPath, true);
1162            xmlhttp.setRequestHeader('Accept', 'application/liquid');
1163            xmlhttp.send();
1164        } else {
1165            callback({
1166                success: false,
1167                error: 'not_logged_in',
1168            });
1169        }
1170    };
1171
1172    window.BOLD.subscriptions.setCashierFeatureToken = function(value) {
1173        if (window.BOLD.checkout_features_defaults && window.BOLD.subscriptions.config.cashierApplicationUUID) {
1174            window.BOLD.checkout_features_defaults.forEach(function(item) {
1175                if (item.id === window.BOLD.subscriptions.config.cashierApplicationUUID) {
1176                    item.require = value;
1177                }
1178            });
1179        }
1180    };
1181
1182    // Cashier patches
1183    window.BOLD.subscriptions.patches.cashierListenerFn = function(event) {
1184        if (window.BOLD.checkout.isCheckoutButton(event.target) && window.BOLD.checkout.isEnabled()) {
1185            window.BOLD.subscriptions.patches.pushToCashier(event);
1186        } else if(window.BOLD.checkout.isCheckoutButton(event.target) && typeof window.cashier_installed_on_site === 'undefined') {
1187            var request = new XMLHttpRequest();
1188            request.open('HEAD', '/apps/checkout/isInstalled', false);
1189            request.send(null);
1190
1191            if(request.status >= 200 && request.status < 400) {
1192                window.BOLD.subscriptions.patches.pushToCashier(event);
1193            } else {
1194                window.cashier_installed_on_site = false;
1195            }
1196        }
1197    };
1198
1199    window.BOLD.subscriptions.localTime = function() {
1200        var localDate = new Date();
1201        return localDate.getTime();
1202    };
1203
1204
1205    window.BOLD.subscriptions.patches.pushToCashier = function(event) {
1206        event.preventDefault();
1207        var form = window.BOLD.checkout.getForm(event.target);
1208        var formData = new FormData(form);
1209        var request = new XMLHttpRequest();
1210        request.open('POST', '/cart/update.js?tmp=' + Date.now(), true);
1211        request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
1212
1213        request.onload = function() {
1214            if (request.status >= 200 && request.status < 400) {
1215                // Success!
1216                var cart = JSON.parse(request.responseText);
1217
1218                // If items are empty redirect back to the cart
1219                if (cart.items.length === 0) {
1220                    return window.location.href = '/cart';
1221                }
1222
1223                cart.items.forEach(function(element) {
1224                    delete element.product_description;
1225                });
1226
1227                if (document.getElementById('CartSpecialInstructions')) {
1228                    // If the cart note exists, grab its value
1229                    cart.note = document.getElementById('CartSpecialInstructions').value;
1230                }
1231
1232                var cartObj = JSON.stringify(cart);
1233
1234                var form = window.BOLD.checkout.getForm(event.target);
1235                form.dataset.old_form_action = form.action;
1236                form.action = '/apps/checkout/begin-checkout' + googleAnalyticsGetParamString({});
1237                var cartCookie = window.BOLD.checkout.getCookie('cart');
1238                var element = document.createElement('INPUT');
1239                element.type = 'HIDDEN';
1240                element.name = 'cart_id';
1241                element.value = cartCookie;
1242                form.appendChild(element);
1243
1244                var dateElement = document.createElement('INPUT');
1245                dateElement.type = 'HIDDEN';
1246                dateElement.name = 'checkout_local_time';
1247                dateElement.value = window.BOLD.subscriptions.localTime();
1248                form.appendChild(dateElement);
1249
1250                var cartElement = document.createElement('INPUT');
1251                cartElement.type = 'HIDDEN';
1252                cartElement.name = 'cart';
1253                cartElement.value = cartObj;
1254                form.appendChild(cartElement);
1255                form.method = 'POST';
1256
1257                if(window.BOLD && window.BOLD.checkout && typeof window.BOLD.checkout.languageIsoCode === 'string') {
1258                    var langInput = document.createElement('INPUT');
1259                    langInput.type = 'HIDDEN';
1260                    langInput.name = 'language_iso';
1261                    langInput.value = window.BOLD.checkout.languageIsoCode;
1262                    form.appendChild(langInput);
1263                }
1264
1265                if (window.BOLD && window.BOLD.common && typeof window.BOLD.common.eventEmitter === 'object' && typeof window.BOLDCURRENCY !== 'undefined') {
1266                    window.BOLD.common.eventEmitter.emit('BOLD_CASHIER_checkout', {target: form});
1267                }
1268
1269                window.BOLD.subscriptions.patches.finishCheckout(event, form, cart);
1270            }
1271        };
1272
1273        request.send(formData);
1274    };
1275
1276    
1277</script>
1277
1278
1279
1280<!-- END app block --><link href="https://cdn.shopify.com/extensions/01a10e16-324a-7195-9cb5-db0d097564ef/boost-pop-up-70/assets/ab.min.css" rel="stylesheet" type="text/css" media="all">
1281<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1282<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 1949335627,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "collection"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1282
1282
1283<script>
1284  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
1285</script>
vendor: 1 bytes, line 1285
1285
1286<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
1286).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 1949335627,storefrontBaseUrl: "https://foodloops.net",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://foodloops.net/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b"],webPixelsConfigList: [{"id":"144605481","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS"],"name":"Google Analytics tag (migrated)"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Food Loops","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"food-loops.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/foodloops.net"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://foodloops.net/cdn","7ec887c8w14f9f074p854094e1m1370c602",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"176843063593","themeStoreId":"730","themePublished":"true","eventMetadataId":"bdeb6518-3b26-4f5e-86c1-9279c5d16ff8","pageType":"collection","resourceId":"79214575691","shopId":"1949335627","storefrontBaseUrl":"https:\/\/foodloops.net","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"7ec887c8w14f9f074p854094e1m1370c602","publish":"custom","events":"[[\"page_viewed\",{}],[\"collection_viewed\",{\"collection\":{\"id\":\"79214575691\",\"title\":\"Compostable Products\",\"productVariants\":[]}}]]"});})();</script>
1286<script>
1287  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
1288  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
1289  window.ShopifyAnalytics.meta.currency = 'USD';
1290  var meta = {"products":[],"page":{"pageType":"collection","resourceType":"collection","resourceId":79214575691,"requestId":"d1b8873e-f732-4679-87ea-c02cb723ec1b-1791435664"}};
1291  for (var attr in meta) {
1292    window.ShopifyAnalytics.meta[attr] = meta[attr];
1293  }
1294</script>
vendor: 1 bytes, line 1294
1294
1295<script class="analytics">
1296  (function () {
1297    var customDocumentWrite = function(content) {
1298      var jquery = null;
1299
1300      if (window.jQuery) {
1301        jquery = window.jQuery;
1302      } else if (window.Checkout && window.Checkout.$) {
1303        jquery = window.Checkout.$;
1304      }
1305
1306      if (jquery) {
1307        jquery('body').append(content);
1308      }
1309    };
1310
1311    var hasLoggedConversion = function(token) {
1312      if (token) {
1313        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
1314      }
1315      return false;
1316    }
1317
1318    var setCookieIfConversion = function(token) {
1319      if (token) {
1320        var twoMonthsFromNow = new Date(Date.now());
1321        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
1322
1323        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
1324      }
1325    }
1326
1327    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
1328    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
1329    if (trekkie.integrations) {
1330      return;
1331    }
1332    trekkie.methods = [
1333      'identify',
1334      'page',
1335      'ready',
1336      'track',
1337      'trackForm',
1338      'trackLink'
1339    ];
1340    trekkie.factory = function(method) {
1341      return function() {
1342        var args = Array.prototype.slice.call(arguments);
1343        args.unshift(method);
1344        trekkie.push(args);
1345        if (method == 'track' || method == 'page') {
1346          var pageUrl;
1347          try {
1348            pageUrl = window.location.href;
1349          } catch (e) {}
1350          var pageReferrer;
1351          try {
1352            pageReferrer = document.referrer;
1353          } catch (e) {}
1354          try {
1355            if (window.__TREKKIE_SHIM_QUEUE == null) {
1356              window.__TREKKIE_SHIM_QUEUE = [];
1357            }
1358            window.__TREKKIE_SHIM_QUEUE.push({
1359              from: 'trekkie-stub',
1360              method: method,
1361              args: args.slice(1),
1362              pageContext: {
1363                url: pageUrl,
1364                referrer: pageReferrer
1365              }
1366            });
1367          } catch (e) {
1368            // no-op
1369          }
1370        }
1371        return trekkie;
1372      };
1373    };
1374    for (var i = 0; i < trekkie.methods.length; i++) {
1375      var key = trekkie.methods[i];
1376      trekkie[key] = trekkie.factory(key);
1377    }
1378    trekkie.load = function(config) {
1379      trekkie.config = config || {};
1380      trekkie.config.initialDocumentCookie = document.cookie;
1381      var first = document.getElementsByTagName('script')[0];
1382var script = document.createElement('script');
1383script.type = 'text/javascript';
1384script.onerror = function(e) {
1385  var scriptFallback = document.createElement('script');
1386  scriptFallback.type = 'text/javascript';
1387  scriptFallback.onerror = function(error) {
1388          var Monorail = {
1389      produce: function produce(monorailDomain, schemaId, payload) {
1390        var currentMs = new Date().getTime();
1391        var event = {
1392          schema_id: schemaId,
1393          payload: payload,
1394          metadata: {
1395            event_created_at_ms: currentMs,
1396            event_sent_at_ms: currentMs
1397          }
1398        };
1399        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
1400      },
1401      sendRequest: function sendRequest(endpointUrl, payload) {
1402        // Try the sendBeacon API
1403        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
1404          var blobData = new window.Blob([payload], {
1405            type: 'text/plain'
1406          });
1407
1408          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
1409            return true;
1410          } // sendBeacon was not successful
1411
1412        } // XHR beacon
1413
1414        var xhr = new XMLHttpRequest();
1415
1416        try {
1417          xhr.open('POST', endpointUrl);
1418          xhr.setRequestHeader('Content-Type', 'text/plain');
1419          xhr.send(payload);
1420        } catch (e) {
1421          console.log(e);
1422        }
1423
1424        return false;
1425      },
1426      isIos12: function isIos12() {
1427        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
1428      }
1429    };
1430    Monorail.produce('monorail-edge.shopifysvc.com',
1431      'trekkie_storefront_load_errors/1.1',
1432      {shop_id: 1949335627,
1433      theme_id: 176843063593,
1434      app_name: "storefront",
1435      context_url: window.location.href,
1436      source_url: "//foodloops.net/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"});
1437
1438  };
1439  scriptFallback.async = true;
1440  scriptFallback.src = '//foodloops.net/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js';
1441  first.parentNode.insertBefore(scriptFallback, first);
1442};
1443script.async = true;
1444script.src = '//foodloops.net/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js';
1445first.parentNode.insertBefore(script, first);
1446
1447    };
1448    trekkie.load(
1449      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":1949335627,"isMerchantRequest":null,"themeId":176843063593,"themeCityHash":"11232583978381918056","contentLanguage":"en","currency":"USD","eventMetadataId":"bdeb6518-3b26-4f5e-86c1-9279c5d16ff8"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
1450    );
1451
1452    var loaded = false;
1453    trekkie.ready(function() {
1454      if (loaded) return;
1455      loaded = true;
1456
1457      window.ShopifyAnalytics.lib = window.trekkie;
1458
1459      var originalDocumentWrite = document.write;
1460      document.write = customDocumentWrite;
1461      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
1462      document.write = originalDocumentWrite;
1463
1464      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
1465      var token = match? match[1]: undefined;
1466      if (!hasLoggedConversion(token)) {
1467        setCookieIfConversion(token);
1468        window.ShopifyAnalytics.lib.track("Viewed Product Category",{"currency":"USD","category":"Collection: compostable-products","collectionName":"compostable-products","collectionId":79214575691,"nonInteraction":true},undefined,undefined,{"shopifyEmitted":true});
1469      }
1470    });
1471
1472    window.ShopifyAnalytics.lib.page(null,{"pageType":"collection","resourceType":"collection","resourceId":79214575691,"requestId":"d1b8873e-f732-4679-87ea-c02cb723ec1b-1791435664","shopifyEmitted":true});
1473
1474    var eventsListenerScript = document.createElement('script');
1475    eventsListenerScript.async = true;
1476    eventsListenerScript.src = "//foodloops.net/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
1477    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
1478})();</script>
1478
1479  
1479<script>
1480  if (!window.ga || (window.ga && typeof window.ga !== 'function')) {
1481    window.ga = function ga() {
1482      (window.ga.q = window.ga.q || []).push(arguments);
1483      if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
1484        window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"});
1485      }
1486      console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information.");
1487    };
1488    if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') {
1489      window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"});
1490    }
1491  }
1492</script>
vendor: 1 bytes, line 1492
1492
1493<script
1494  defer
1495  src="https://foodloops.net/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.10.0.min.js"
1496  data-application="storefront-renderer"
1497  data-shop-id="1949335627"
1498  data-render-region="gcp-us-central1"
1499  data-page-type="collection"
1500  data-theme-instance-id="176843063593"
1501  data-theme-name="Brooklyn"
1502  data-theme-version="12.0.2"
1503  data-monorail-region="shop_domain"
1504  data-resource-timing-sampling-rate="10"
1505  data-shs="true"
1506  data-shs-beacon="true"
1507  data-shs-export-with-fetch="true"
1508  data-shs-logs-sample-rate="1"
1509  data-shs-beacon-endpoint="https://foodloops.net/api/collect"
1510></script>
1510
1511<meta name="shopify-y" content="4979b1f9-433f-438f-9a38-cb7b395f8617" data-expiration="1822993264000"><meta name="shopify-s" content="a5859221-924a-4781-bc9e-b380063543ff" data-expiration="1791437464000"><meta name="new-cookie-storage-activated" content="t">
1512</head>
1513
1514
1515<body id="compostable-products" class="template-collection">
1516  
1517  
1518
1519
1520
1521
1522<style>
1523.modal-custom{display:none;position:fixed;z-index:10000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}.modal-content-custom{background-color:#fefefe;margin:15% auto;padding:20px;border:1px solid #888;width:80%}.close-custom{color:#aaa;float:right;font-size:28px;font-weight:700;margin-right:-10px;margin-top:-45px}.close-custom:focus,.close-custom:hover{color:#000;text-decoration:none;cursor:pointer}#loader{display:none;position:absolute;left:50%;top:50%;z-index:10000;width:150px;height:150px;margin:-75px 0 0 -75px;border:16px solid #f3f3f3;border-radius:50%;border-top:16px solid #3498db;width:120px;height:120px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.animate-bottom{position:relative;-webkit-animation-name:animatebottom;-webkit-animation-duration:1s;animation-name:animatebottom;animation-duration:1s}@-webkit-keyframes animatebottom{from{bottom:-100px;opacity:0}to{bottom:0;opacity:1}}@keyframes animatebottom{from{bottom:-100px;opacity:0}to{bottom:0;opacity:1}}
1524</style>
1525<div id="loader"></div>
1526<div id="myModal" class="modal-custom"> <div class="modal-content-custom"> <div id="purchase_limit_messages"></div><span class="close-custom">&times;</span> </div></div>
1527
1528<script type="text/javascript">  
1529  
1530var template = "collection";
1531
1532var customer_id = "";
1533  
1534function myJQueryCode() {
1535  	
1536	  var modal = document.getElementById("myModal"),
1537    span = document.getElementsByClassName("close-custom")[0];
1538  
1539    function checkLimit(e,click = false) {
1540       
1541      e.customer_id = customer_id;
1542       
1543       $.ajax({
1544          type: "POST",
1545          url: "/a/cart-update",
1546          dataType: "json",
1547          data: e,
1548          success: function(e) {
1549              if (1 == e.error) {
1550                  var t = "<ul>";
1551                  $.each(e.messages, function(e, n) {
1552                      t += "<li>" + n + "</li>"
1553                  }), t += "</ul>", $("#purchase_limit_messages").html(t), document.getElementById("myModal").style.display = "block"
1554              } else if(click) {
1555                window.location.replace('/checkout');
1556              }
1557              document.getElementById("loader").style.display = "none"
1558          }
1559      	});
1560      }
1561  
1562  if(template == 'cart'){
1563  
1564      jQuery.getJSON("/cart.js", function(e) {
1565          checkLimit(e)
1566      }), span.onclick = function() {
1567          modal.style.display = "none"
1568      }, window.onclick = function(e) {
1569          e.target == modal && (modal.style.display = "none")
1570      };
1571  }
1572  
1573      jQuery(document).on("click","button[name='checkout']",function(e){
1574        document.getElementById("loader").style.display = "block";
1575        e.preventDefault();
1576        e.stopImmediatePropagation();
1577        jQuery.getJSON("/cart.js", function(cartItems) {
1578          	checkLimit(cartItems,true);
1579      	});
1580      });
1581  	
1582  	  jQuery(document).on("click","input[name='checkout']",function(e){
1583        document.getElementById("loader").style.display = "block";
1584        e.preventDefault();
1585        e.stopImmediatePropagation();
1586        jQuery.getJSON("/cart.js", function(cartItems) {
1587          	checkLimit(cartItems,true);
1588      	});
1589      });
1590      
1591      jQuery(document).on("click",span,function(e){
1592         modal.style.display = "none";
1593      });
1594      
1595      jQuery(document).on("click","a[href='/checkout']",function(e){
1596          document.getElementById("loader").style.display = "block";
1597          e.preventDefault();
1598          e.stopImmediatePropagation();
1599          jQuery.getJSON("/cart.js", function(cartItems) {
1600            	checkLimit(cartItems,true);
1601        	});
1602      });
1603}
1604if(typeof jQuery=='undefined') {
1605    var headTag = document.getElementsByTagName("head")[0];
1606    var jqTag = document.createElement('script');
1607    jqTag.type = 'text/javascript';
1608    jqTag.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js';
1609    jqTag.onload = myJQueryCode;
1610    headTag.appendChild(jqTag);
1611} else {
1612     myJQueryCode();
1613}
1614</script>
1614
1615
1616  
1617  <div id="shopify-section-announcement-bar" class="shopify-section">
1618
1619<style>
1620  
1621</style>
1622
1623</div>
1624  <div id="shopify-section-header" class="shopify-section"><style>
1625  .site-header__logo img {
1626    max-width: 260px;
1627  }
1628
1629  @media screen and (max-width: 768px) {
1630    .site-header__logo img {
1631      max-width: 100%;
1632    }
1633  }
1634</style>
1635
1636<div data-section-id="header" data-section-type="header-section" data-template="collection">
1637  <div id="NavDrawer" class="drawer drawer--left">
1638      <div class="drawer__inner drawer-left__inner">
1639
1640    
1641
1642    <ul class="mobile-nav">
1643      
1644        
1645          <li class="mobile-nav__item">
1646            <div class="mobile-nav__has-sublist">
1647              <a
1648                href="/"
1649                class="mobile-nav__link"
1650                id="Label-1"
1651                >Services</a>
1652              <div class="mobile-nav__toggle">
1653                <button type="button" class="mobile-nav__toggle-btn icon-fallback-text" aria-controls="Linklist-1" aria-expanded="false">
1654                  <span class="icon-fallback-text mobile-nav__toggle-open">
1655                    <span class="icon icon-plus" aria-hidden="true"></span>
1656                    <span class="fallback-text">Expand submenu Services</span>
1657                  </span>
1658                  <span class="icon-fallback-text mobile-nav__toggle-close">
1659                    <span class="icon icon-minus" aria-hidden="true"></span>
1660                    <span class="fallback-text">Collapse submenu Services</span>
1661                  </span>
1662                </button>
1663              </div>
1664            </div>
1665            <ul class="mobile-nav__sublist" id="Linklist-1" aria-labelledby="Label-1" role="navigation">
1666              
1667              
1668                
1669                <li class="mobile-nav__item">
1670                  <div class="mobile-nav__has-sublist">
1671                    <a
1672                      href="/collections/residential-food-waste-and-glass"
1673                      class="mobile-nav__link"
1674                      id="Label-1-1"
1675                      >
1676                        Residential Food Waste & Glass Program
1677                    </a>
1678                    <div class="mobile-nav__toggle">
1679                      <button type="button" class="mobile-nav__toggle-btn icon-fallback-text" aria-controls="Linklist-1-1" aria-expanded="false">
1680                        <span class="icon-fallback-text mobile-nav__toggle-open">
1681                          <span class="icon icon-plus" aria-hidden="true"></span>
1682                          <span class="fallback-text">Expand submenu Services</span>
1683                        </span>
1684                        <span class="icon-fallback-text mobile-nav__toggle-close">
1685                          <span class="icon icon-minus" aria-hidden="true"></span>
1686                          <span class="fallback-text">Collapse submenu Services</span>
1687                        </span>
1688                      </button>
1689                    </div>
1690                  </div>
1691                  <ul class="mobile-nav__sublist mobile-nav__subsublist" id="Linklist-1-1" aria-labelledby="Label-1-1" role="navigation">
1692                    
1693                      <li class="mobile-nav__item">
1694                        <a
1695                          href="/pages/what-goes-in-the-bucket"
1696                          class="mobile-nav__link"
1697                          >
1698                            What Goes in the Bucket?
1699                        </a>
1700                      </li>
1701                    
1702                  </ul>
1703                </li>
1704                
1705              
1706                
1707                <li class="mobile-nav__item">
1708                  <a
1709                    href="/pages/food-waste-pickup"
1710                    class="mobile-nav__link"
1711                    >
1712                      Commercial Pickup
1713                  </a>
1714                </li>
1715                
1716              
1717                
1718                <li class="mobile-nav__item">
1719                  <a
1720                    href="/collections/zero-waste-events"
1721                    class="mobile-nav__link"
1722                    >
1723                      Zero-Waste Events
1724                  </a>
1725                </li>
1726                
1727              
1728            </ul>
1729          </li>
1730
1731          
1732      
1733        
1734          <li class="mobile-nav__item">
1735            <div class="mobile-nav__has-sublist">
1736              <a
1737                href="https://food-loops.myshopify.com/pages/compostable-products-landing"
1738                class="mobile-nav__link"
1739                id="Label-2"
1740                >Compostables</a>
1741              <div class="mobile-nav__toggle">
1742                <button type="button" class="mobile-nav__toggle-btn icon-fallback-text" aria-controls="Linklist-2" aria-expanded="false">
1743                  <span class="icon-fallback-text mobile-nav__toggle-open">
1744                    <span class="icon icon-plus" aria-hidden="true"></span>
1745                    <span class="fallback-text">Expand submenu Compostables</span>
1746                  </span>
1747                  <span class="icon-fallback-text mobile-nav__toggle-close">
1748                    <span class="icon icon-minus" aria-hidden="true"></span>
1749                    <span class="fallback-text">Collapse submenu Compostables</span>
1750                  </span>
1751                </button>
1752              </div>
1753            </div>
1754            <ul class="mobile-nav__sublist" id="Linklist-2" aria-labelledby="Label-2" role="navigation">
1755              
1756              
1757                
1758                <li class="mobile-nav__item">
1759                  <a
1760                    href="/collections/beverage-accessories"
1761                    class="mobile-nav__link"
1762                    >
1763                      Beverage Accessories
1764                  </a>
1765                </li>
1766                
1767              
1768                
1769                <li class="mobile-nav__item">
1770                  <a
1771                    href="/collections/clear-food-containers-pla"
1772                    class="mobile-nav__link"
1773                    >
1774                      Clear Food Containers - PLA
1775                  </a>
1776                </li>
1777                
1778              
1779                
1780                <li class="mobile-nav__item">
1781                  <a
1782                    href="/collections/cold-cups-1"
1783                    class="mobile-nav__link"
1784                    >
1785                      Cold Cups
1786                  </a>
1787                </li>
1788                
1789              
1790                
1791                <li class="mobile-nav__item">
1792                  <a
1793                    href="/collections/catering-kids-other"
1794                    class="mobile-nav__link"
1795                    >
1796                      Catering
1797                  </a>
1798                </li>
1799                
1800              
1801                
1802                <li class="mobile-nav__item">
1803                  <a
1804                    href="/collections/cutlery"
1805                    class="mobile-nav__link"
1806                    >
1807                      Cutlery
1808                  </a>
1809                </li>
1810                
1811              
1812                
1813                <li class="mobile-nav__item">
1814                  <a
1815                    href="/collections/food-trays-and-boats"
1816                    class="mobile-nav__link"
1817                    >
1818                      Food Trays and Boats
1819                  </a>
1820                </li>
1821                
1822              
1823                
1824                <li class="mobile-nav__item">
1825                  <a
1826                    href="/collections/hot-cups"
1827                    class="mobile-nav__link"
1828                    >
1829                      Hot Cups
1830                  </a>
1831                </li>
1832                
1833              
1834                
1835                <li class="mobile-nav__item">
1836                  <a
1837                    href="/collections/insulated-hot-cups"
1838                    class="mobile-nav__link"
1839                    >
1840                      Insulated Hot Cups
1841                  </a>
1842                </li>
1843                
1844              
1845                
1846                <li class="mobile-nav__item">
1847                  <a
1848                    href="/collections/kraft-innoboxes"
1849                    class="mobile-nav__link"
1850                    >
1851                      Kraft Innoboxes
1852                  </a>
1853                </li>
1854                
1855              
1856                
1857                <li class="mobile-nav__item">
1858                  <a
1859                    href="/collections/liners-bags"
1860                    class="mobile-nav__link"
1861                    >
1862                      Liners &amp; Bags
1863                  </a>
1864                </li>
1865                
1866              
1867                
1868                <li class="mobile-nav__item">
1869                  <a
1870                    href="/collections/napkins"
1871                    class="mobile-nav__link"
1872                    >
1873                      Napkins
1874                  </a>
1875                </li>
1876                
1877              
1878                
1879                <li class="mobile-nav__item">
1880                  <a
1881                    href="/collections/dinnerware"
1882                    class="mobile-nav__link"
1883                    >
1884                      Plates and Bowls
1885                  </a>
1886                </li>
1887                
1888              
1889                
1890                <li class="mobile-nav__item">
1891                  <a
1892                    href="/collections/portion-cups-sugarcane-pla"
1893                    class="mobile-nav__link"
1894                    >
1895                      Portion Cups - Sugarcane &amp; PLA
1896                  </a>
1897                </li>
1898                
1899              
1900                
1901                <li class="mobile-nav__item">
1902                  <a
1903                    href="/collections/salad-bowls"
1904                    class="mobile-nav__link"
1905                    >
1906                      Salad Bowls
1907                  </a>
1908                </li>
1909                
1910              
1911                
1912                <li class="mobile-nav__item">
1913                  <a
1914                    href="/collections/soup-cups"
1915                    class="mobile-nav__link"
1916                    >
1917                      Soup Cups
1918                  </a>
1919                </li>
1920                
1921              
1922                
1923                <li class="mobile-nav__item">
1924                  <a
1925                    href="/collections/containers"
1926                    class="mobile-nav__link"
1927                    >
1928                      Sugarcane Take Out Containers
1929                  </a>
1930                </li>
1931                
1932              
1933            </ul>
1934          </li>
1935
1936          
1937      
1938        
1939
1940          <li class="mobile-nav__item">
1941            <a
1942              href="/collections/event-collection"
1943              class="mobile-nav__link"
1944              >
1945                Event Collection
1946            </a>
1947          </li>
1948
1949        
1950      
1951        
1952
1953          <li class="mobile-nav__item">
1954            <a
1955              href="/collections/nutrient-rich-compost"
1956              class="mobile-nav__link"
1957              >
1958                Compost
1959            </a>
1960          </li>
1961
1962        
1963      
1964        
1965
1966          <li class="mobile-nav__item">
1967            <a
1968              href="/collections/digester"
1969              class="mobile-nav__link"
1970              >
1971                Home Digesters
1972            </a>
1973          </li>
1974
1975        
1976      
1977        
1978
1979          <li class="mobile-nav__item">
1980            <a
1981              href="https://food-loops.myshopify.com/pages/contact-foodloops"
1982              class="mobile-nav__link"
1983              >
1984                Contact
1985            </a>
1986          </li>
1987
1988        
1989      
1990        
1991
1992          <li class="mobile-nav__item">
1993            <a
1994              href="/pages/manage-subscriptions"
1995              class="mobile-nav__link"
1996              >
1997                Manage Subscriptions
1998            </a>
1999          </li>
2000
2001        
2002      
2003      
2004      <li class="mobile-nav__spacer"></li>
2005
2006      
2007      
2008        
2009          <li class="mobile-nav__item mobile-nav__item--secondary">
2010            <a href="https://foodloops.net/customer_authentication/redirect?locale=en&amp;region_country=US" id="customer_login_link">Log In</a>
2011          </li>
2012          <li class="mobile-nav__item mobile-nav__item--secondary">
2013            <a href="https://shopify.com/1949335627/account?locale=en&region_country=US&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJmb29kLWxvb3BzLm15c2hvcGlmeS5jb20iLCJmbGFncyI6W10sImV4cCI6MTc5MjA0MDQ2NCwibmJmIjoxNzkxNDM1NjY0fQ.TwVLN-bH1PkFTUUX3_
20136U2aQze5-plS6az0mYTyCmhZA" id="customer_register_link">Create Account</a>
2014          </li>
2015        
2016      
2017      
2018        <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/search">Search</a></li>
2019      
2020        <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/pages/contact-foodloops">Contact Us</a></li>
2021      
2022        <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/blogs/news">Our Blog</a></li>
2023      
2024        <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/policies/privacy-policy">Privacy Policy</a></li>
2025      
2026        <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/policies/refund-policy">Refund Policy</a></li>
2027      
2028        <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/policies/shipping-policy">Shipping Policy</a></li>
2029      
2030        <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/policies/terms-of-service">Terms of Service</a></li>
2031      
2032        <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/pages/billing-address">Billing Address</a></li>
2033      
2034    </ul>
2035    <!-- //mobile-nav -->
2036  </div>
2037
2038
2039  </div>
2040  <div class="header-container drawer__header-container">
2041    <div class="header-wrapper hero__header">
2042      
2043
2044      <header class="site-header" role="banner">
2045        <div class="wrapper">
2046          <div class="grid--full grid--table">
2047            <div class="grid__item large--hide large--one-sixth one-quarter">
2048              <div class="site-nav--open site-nav--mobile">
2049                <button type="button" class="icon-fallback-text site-nav__link site-nav__link--burger js-drawer-open-button-left" aria-controls="NavDrawer">
2050                  <span class="burger-icon burger-icon--top"></span>
2051                  <span class="burger-icon burger-icon--mid"></span>
2052                  <span class="burger-icon burger-icon--bottom"></span>
2053                  <span class="fallback-text">Site navigation</span>
2054                </button>
2055              </div>
2056            </div>
2057            <div class="grid__item large--one-third medium-down--one-half">
2058              
2059              
2060                <div class="h1 site-header__logo large--left" itemscope itemtype="http://schema.org/Organization">
2061              
2062                
2063
2064                
2065                  <a href="/" itemprop="url" class="site-header__logo-link">
2066                     <img src="//foodloops.net/cdn/shop/files/Color_Full_Logo-min_260x.png?v=1613702488"
2067                     srcset="//foodloops.net/cdn/shop/files/Color_Full_Logo-min_260x.png?v=1613702488 1x, //foodloops.net/cdn/shop/files/[email protected]?v=1613702488 2x"
2068                     alt="Food Loops Logo"
2069                     itemprop="logo">
2070                  </a>
2071                
2072              
2073                </div>
2074              
2075            </div>
2076            <nav class="grid__item large--two-thirds large--text-right medium-down--hide" role="navigation">
2077              
2078              <!-- begin site-nav -->
2079              <ul class="site-nav" id="AccessibleNav">
2080                
2081                  
2082                  
2083                    <li
2084                      class="site-nav__item site-nav--has-dropdown "
2085                      aria-haspopup="true"
2086                      data-meganav-type="parent">
2087                      <a
2088                        href="/"
2089                        class="site-nav__link"
2090                        data-meganav-type="parent"
2091                        aria-controls="MenuParent-1"
2092                        aria-expanded="false"
2093                        >
2094                          Services
2095                          <span class="icon icon-arrow-down" aria-hidden="true"></span>
2096                      </a>
2097                      <ul
2098                        id="MenuParent-1"
2099                        class="site-nav__dropdown site-nav--has-grandchildren"
2100                        data-meganav-dropdown>
2101                        
2102                          
2103                          
2104                            <li
2105                              class="site-nav__item site-nav--has-dropdown site-nav--has-dropdown-grandchild "
2106                              aria-haspopup="true">
2107                              <a
2108                                href="/collections/residential-food-waste-and-glass"
2109                                class="site-nav__dropdown-link"
2110                                aria-controls="MenuChildren-1-1"
2111                                data-meganav-type="parent"
2112                                
2113                                tabindex="-1">
2114                                  Residential Food Waste &amp; Glass Program
2115                                  <span class="icon icon-arrow-down" aria-hidden="true"></span>
2116                              </a>
2117                              <div class="site-nav__dropdown-grandchild">
2118                                <ul
2119                                  id="MenuChildren-1-1"
2120                                  data-meganav-dropdown>
2121                                  
2122                                    <li>
2123                                      <a
2124                                        href="/pages/what-goes-in-the-bucket"
2125                                        class="site-nav__dropdown-link"
2126                                        data-meganav-type="child"
2127                                        
2128                                        tabindex="-1">
2129                                          What Goes in the Bucket?
2130                                        </a>
2131                                    </li>
2132                                  
2133                                </ul>
2134                              </div>
2135                            </li>
2136                          
2137                        
2138                          
2139                            <li>
2140                              <a
2141                                href="/pages/food-waste-pickup"
2142                                class="site-nav__dropdown-link"
2143                                data-meganav-type="child"
2144                                
2145                                tabindex="-1">
2146                                  Commercial Pickup
2147                              </a>
2148                            </li>
2149                          
2150                        
2151                          
2152                            <li>
2153                              <a
2154                                href="/collections/zero-waste-events"
2155                                class="site-nav__dropdown-link"
2156                                data-meganav-type="child"
2157                                
2158                                tabindex="-1">
2159                                  Zero-Waste Events
2160                              </a>
2161                            </li>
2162                          
2163                        
2164                      </ul>
2165                    </li>
2166                  
2167                
2168                  
2169                  
2170                    <li
2171                      class="site-nav__item site-nav--has-dropdown "
2172                      aria-haspopup="true"
2173                      data-meganav-type="parent">
2174                      <a
2175                        href="https://food-loops.myshopify.com/pages/compostable-products-landing"
2176                        class="site-nav__link"
2177                        data-meganav-type="parent"
2178                        aria-controls="MenuParent-2"
2179                        aria-expanded="false"
2180                        >
2181                          Compostables
2182                          <span class="icon icon-arrow-down" aria-hidden="true"></span>
2183                      </a>
2184                      <ul
2185                        id="MenuParent-2"
2186                        class="site-nav__dropdown "
2187                        data-meganav-dropdown>
2188                        
2189                          
2190                            <li>
2191                              <a
2192                                href="/collections/beverage-accessories"
2193                                class="site-nav__dropdown-link"
2194                                data-meganav-type="child"
2195                                
2196                                tabindex="-1">
2197                                  Beverage Accessories
2198                              </a>
2199                            </li>
2200                          
2201                        
2202                          
2203                            <li>
2204                              <a
2205                                href="/collections/clear-food-containers-pla"
2206                                class="site-nav__dropdown-link"
2207                                data-meganav-type="child"
2208                                
2209                                tabindex="-1">
2210                                  Clear Food Containers - PLA
2211                              </a>
2212                            </li>
2213                          
2214                        
2215                          
2216                            <li>
2217                              <a
2218                                href="/collections/cold-cups-1"
2219                                class="site-nav__dropdown-link"
2220                                data-meganav-type="child"
2221                                
2222                                tabindex="-1">
2223                                  Cold Cups
2224                              </a>
2225                            </li>
2226                          
2227                        
2228                          
2229                            <li>
2230                              <a
2231                                href="/collections/catering-kids-other"
2232                                class="site-nav__dropdown-link"
2233                                data-meganav-type="child"
2234                                
2235                                tabindex="-1">
2236                                  Catering
2237                              </a>
2238                            </li>
2239                          
2240                        
2241                          
2242                            <li>
2243                              <a
2244                                href="/collections/cutlery"
2245                                class="site-nav__dropdown-link"
2246                                data-meganav-type="child"
2247                                
2248                                tabindex="-1">
2249                                  Cutlery
2250                              </a>
2251                            </li>
2252                          
2253                        
2254                          
2255                            <li>
2256                              <a
2257                                href="/collections/food-trays-and-boats"
2258                                class="site-nav__dropdown-link"
2259                                data-meganav-type="child"
2260                                
2261                                tabindex="-1">
2262                                  Food Trays and Boats
2263                              </a>
2264                            </li>
2265                          
2266                        
2267                          
2268                            <li>
2269                              <a
2270                                href="/collections/hot-cups"
2271                                class="site-nav__dropdown-link"
2272                                data-meganav-type="child"
2273                                
2274                                tabindex="-1">
2275                                  Hot Cups
2276                              </a>
2277                            </li>
2278                          
2279                        
2280                          
2281                            <li>
2282                              <a
2283                                href="/collections/insulated-hot-cups"
2284                                class="site-nav__dropdown-link"
2285                                data-meganav-type="child"
2286                                
2287                                tabindex="-1">
2288                                  Insulated Hot Cups
2289                              </a>
2290                            </li>
2291                          
2292                        
2293                          
2294                            <li>
2295                              <a
2296                                href="/collections/kraft-innoboxes"
2297                                class="site-nav__dropdown-link"
2298                                data-meganav-type="child"
2299                                
2300                                tabindex="-1">
2301                                  Kraft Innoboxes
2302                              </a>
2303                            </li>
2304                          
2305                        
2306                          
2307                            <li>
2308                              <a
2309                                href="/collections/liners-bags"
2310                                class="site-nav__dropdown-link"
2311                                data-meganav-type="child"
2312                                
2313                                tabindex="-1">
2314                                  Liners &amp; Bags
2315                              </a>
2316                            </li>
2317                          
2318                        
2319                          
2320                            <li>
2321                              <a
2322                                href="/collections/napkins"
2323                                class="site-nav__dropdown-link"
2324                                data-meganav-type="child"
2325                                
2326                                tabindex="-1">
2327                                  Napkins
2328                              </a>
2329                            </li>
2330                          
2331                        
2332                          
2333                            <li>
2334                              <a
2335                                href="/collections/dinnerware"
2336                                class="site-nav__dropdown-link"
2337                                data-meganav-type="child"
2338                                
2339                                tabindex="-1">
2340                                  Plates and Bowls
2341                              </a>
2342                            </li>
2343                          
2344                        
2345                          
2346                            <li>
2347                              <a
2348                                href="/collections/portion-cups-sugarcane-pla"
2349                                class="site-nav__dropdown-link"
2350                                data-meganav-type="child"
2351                                
2352                                tabindex="-1">
2353                                  Portion Cups - Sugarcane &amp; PLA
2354                              </a>
2355                            </li>
2356                          
2357                        
2358                          
2359                            <li>
2360                              <a
2361                                href="/collections/salad-bowls"
2362                                class="site-nav__dropdown-link"
2363                                data-meganav-type="child"
2364                                
2365                                tabindex="-1">
2366                                  Salad Bowls
2367                              </a>
2368                            </li>
2369                          
2370                        
2371                          
2372                            <li>
2373                              <a
2374                                href="/collections/soup-cups"
2375                                class="site-nav__dropdown-link"
2376                                data-meganav-type="child"
2377                                
2378                                tabindex="-1">
2379                                  Soup Cups
2380                              </a>
2381                            </li>
2382                          
2383                        
2384                          
2385                            <li>
2386                              <a
2387                                href="/collections/containers"
2388                                class="site-nav__dropdown-link"
2389                                data-meganav-type="child"
2390                                
2391                                tabindex="-1">
2392                                  Sugarcane Take Out Containers
2393                              </a>
2394                            </li>
2395                          
2396                        
2397                      </ul>
2398                    </li>
2399                  
2400                
2401                  
2402                    <li class="site-nav__item">
2403                      <a
2404                        href="/collections/event-collection"
2405                        class="site-nav__link"
2406                        data-meganav-type="child"
2407                        >
2408                          Event Collection
2409                      </a>
2410                    </li>
2411                  
2412                
2413                  
2414                    <li class="site-nav__item">
2415                      <a
2416                        href="/collections/nutrient-rich-compost"
2417                        class="site-nav__link"
2418                        data-meganav-type="child"
2419                        >
2420                          Compost
2421                      </a>
2422                    </li>
2423                  
2424                
2425                  
2426                    <li class="site-nav__item">
2427                      <a
2428                        href="/collections/digester"
2429                        class="site-nav__link"
2430                        data-meganav-type="child"
2431                        >
2432                          Home Digesters
2433                      </a>
2434                    </li>
2435                  
2436                
2437                  
2438                    <li class="site-nav__item">
2439                      <a
2440                        href="https://food-loops.myshopify.com/pages/contact-foodloops"
2441                        class="site-nav__link"
2442                        data-meganav-type="child"
2443                        >
2444                          Contact
2445                      </a>
2446                    </li>
2447                  
2448                
2449                  
2450                    <li class="site-nav__item">
2451                      <a
2452                        href="/pages/manage-subscriptions"
2453                        class="site-nav__link"
2454                        data-meganav-type="child"
2455                        >
2456                          Manage Subscriptions
2457                      </a>
2458                    </li>
2459                  
2460                
2461
2462                
2463                
2464                  <li class="site-nav__item site-nav__expanded-item site-nav__item--compressed">
2465                    <a class="site-nav__link site-nav__link--icon" href="/account">
2466                      <span class="icon-fallback-text">
2467                        <span class="icon icon-customer" aria-hidden="true"></span>
2468                        <span class="fallback-text">
2469                          
2470                            Log In
2471                          
2472                        </span>
2473                      </span>
2474                    </a>
2475                  </li>
2476                
2477
2478                
2479                  
2480                  
2481                  <li class="site-nav__item site-nav__item--compressed">
2482                    <a href="/search" class="site-nav__link site-nav__link--icon js-toggle-search-modal" data-mfp-src="#SearchModal">
2483                      <span class="icon-fallback-text">
2484                        <span class="icon icon-search" aria-hidden="true"></span>
2485                        <span class="fallback-text">Search</span>
2486                      </span>
2487                    </a>
2488                  </li>
2489                
2490
2491                <li class="site-nav__item site-nav__item--compressed">
2492                  <a href="/cart" class="site-nav__link site-nav__link--icon cart-link js-drawer-open-button-right" aria-controls="CartDrawer">
2493                    <span class="icon-fallback-text">
2494                      <span class="icon icon-cart" aria-hidden="true"></span>
2495                      <span class="fallback-text">Cart</span>
2496                    </span>
2497                    <span class="cart-link__bubble"></span>
2498                  </a>
2499                </li>
2500
2501              </ul>
2502              <!-- //site-nav -->
2503            </nav>
2504            <div class="grid__item large--hide one-quarter">
2505              <div class="site-nav--mobile text-right">
2506                <a href="/cart" class="site-nav__link cart-link js-drawer-open-button-right" aria-controls="CartDrawer">
2507                  <span class="icon-fallback-text">
2508                    <span class="icon icon-cart" aria-hidden="true"></span>
2509                    <span class="fallback-text">Cart</span>
2510                  </span>
2511                  <span class="cart-link__bubble"></span>
2512                </a>
2513              </div>
2514            </div>
2515          </div>
2516
2517        </div>
2518      </header>
2519    </div>
2520  </div>
2521</div>
2522
2523
2524
2525
2526</div>
2527
2528  <div id="CartDrawer" class="drawer drawer--right drawer--has-fixed-footer">
2529    <div class="drawer__fixed-header">
2530      <div class="drawer__header">
2531        <div class="drawer__title">Your cart</div>
2532        <div class="drawer__close">
2533          <button type="button" class="icon-fallback-text drawer__close-button js-drawer-close">
2534            <span class="icon icon-x" aria-hidden="true"></span>
2535            <span class="fallback-text">Close Cart</span>
2536          </button>
2537        </div>
2538      </div>
2539    </div>
2540    <div class="drawer__inner">
2541      <div id="CartContainer" class="drawer__cart"></div>
2542    </div>
2543  </div>
2544
2545  <div id="PageContainer" class="page-container">
2546
2547    
2548
2549    <main class="main-content" role="main">
2550      
2551        <div class="wrapper">
2552      
2553        
2554	  
2555		<wlm class="wlm-content">
2556		  <!-- /templates/collection.liquid -->
2557
2558
2559<div id="shopify-section-collection-template" class="shopify-section"><!-- /templates/collection.liquid -->
2560<div id="CollectionSection" data-section-id="collection-template" data-section-type="collection-template" data-grid-type="grid">
2561  
2562
2563
2564
2565<header class="section-header text-center">
2566  <h1>Compostable Products</h1>
2567  <hr class="hr--small">
2568  
2569
2570    <div class="grid--full collection-sorting">
2571      
2572    </div>
2573
2574  
2575
2576  
2577</header>
2578
2579
2580  <div class="grid-uniform">
2581    
2582    
2583      
2584        
2585        <div class="grid__item text-center">
2586          <p>Sorry, there are no products in this collection.</p>
2587        </div>
2588      
2589    
2590  </div>
2591
2592
2593
2594
2595
2596
2597</div>
2598
2599
2600
2601
2602</div>
2603
2604		</wlm>
2605		<div id="wlmpnf" style="display:none;">
2606		<div class="page-width">
2607		<div class="grid">
2608		  <div class="grid__item medium-up--five-sixths medium-up--push-one-twelfth">
2609			<div class="section-header text-center">
2610			  <h1><span class="wlm-title-pnf"></span></h1>
2611			</div>
2612
2613			<div class="rte">
2614			  <div class="wlm-message-pnf"></div>
2615			</div>
2616		  </div>
2617		</div>
2618	  </div>
2619	  </div>
2620        <div id="wlm-pwd-form" style="display: none;">
2621		<div id="wlm-wrapper">
2622		  
2623		  <div class="wlm-form-holder">
2624			<div id="wlm-pwd-error">Invalid Password</div>
2625			<input type="password" placeholder="Enter passcode" id="wlm-pwd"
2626				   onkeypress='if( event.keyCode == 13 && typeof wlm == "object" && typeof wlm.unlockByAuth == "function" ) { event.preventDefault(); wlm.unlockByAuth(this); }' />
2627			<a href="javascript:void(0);" id="wlm-pwd-form-button"
2628			   onclick='if( typeof wlm == "object" && typeof wlm.unlockByAuth == "function" ) wlm.unlockByAuth(this);'>
2629			  Enter
2630			</a>
2631		  </div>
2632		</div>
2633	  </div>
2634        
2634<script type="text/javascript" id="wlm-helper">
2635        if( typeof wlm == "object" ) wlm.toggleContent(true);
2636      </script>
2636
2637      
2638      
2639        </div>
2640      
2641    </main>
2642
2643    <hr class="hr--large">
2644
2645    <div id="shopify-section-footer" class="shopify-section"><footer class="site-footer small--text-center" role="contentinfo">
2646  <div class="wrapper">
2647
2648    <div class="grid-uniform">
2649
2650      
2651      
2652
2653      
2654      
2655
2656      
2657      
2658      
2659
2660      
2661      
2662
2663      
2664
2665      
2666        <div class="grid__item large--one-quarter medium--one-half">
2667          <ul class="no-bullets site-footer__linklist">
2668            
2669
2670      
2671      
2672
2673              <li><a href="/search">Search</a></li>
2674
2675            
2676
2677      
2678      
2679
2680              <li><a href="/pages/contact-foodloops">Contact Us</a></li>
2681
2682            
2683
2684      
2685      
2686
2687              <li><a href="/blogs/news">Our Blog</a></li>
2688
2689            
2690
2691      
2692      
2693
2694              <li><a href="/policies/privacy-policy">Privacy Policy</a></li>
2695
2696            
2697
2698      
2699      
2700          </ul>
2701        </div>
2702        <div class="grid__item large--one-quarter medium--one-half">
2703          <ul class="no-bullets site-footer__linklist">
2704      
2705
2706              <li><a href="/policies/refund-policy">Refund Policy</a></li>
2707
2708            
2709
2710      
2711      
2712
2713              <li><a href="/policies/shipping-policy">Shipping Policy</a></li>
2714
2715            
2716
2717      
2718      
2719
2720              <li><a href="/policies/terms-of-service">Terms of Service</a></li>
2721
2722            
2723
2724      
2725      
2726
2727              <li><a href="/pages/billing-address">Billing Address</a></li>
2728
2729            
2730          </ul>
2731        </div>
2732      
2733
2734      
2735        <div class="grid__item large--one-quarter medium--one-half">
2736            <ul class="no-bullets social-icons">
2737              
2738                <li>
2739                  <a href="https://www.facebook.com/FoodLoopsNWA" title="Food Loops on Facebook">
2740                    <span class="icon icon-facebook" aria-hidden="true"></span>
2741                    Facebook
2742                  </a>
2743                </li>
2744              
2745              
2746              
2747              
2748                <li>
2749                  <a href="https://www.instagram.com/foodloopsnwa" title="Food Loops on Instagram">
2750                    <span class="icon icon-instagram" aria-hidden="true"></span>
2751                    Instagram
2752                  </a>
2753                </li>
2754              
2755              
2756              
2757              
2758              
2759              
2760              
2761            </ul>
2762        </div>
2763      
2764
2765      <div class="grid__item large--one-quarter medium--one-half large--text-right">
2766        <p>&copy; 2026, <a href="/" title="">Food Loops</a><br><a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&amp;utm_medium=shopify&amp;utm_source=onlinestore">Powered by Shopify</a></p></div>
2767    </div>
2768
2769  </div>
2770</footer>
2771
2772
2773
2774
2775</div>
2776
2777  </div>
2778
2779  
2780  
2780<script>
2781    
2782  </script>
2782
2783
2784  
2785  
2786    <!-- /snippets/ajax-cart-template.liquid -->
2787
2788  
2788<script id="CartTemplate" type="text/template">
2789  
2790    <form action="/cart" method="post" novalidate class="cart ajaxcart">
2791      <div class="ajaxcart__inner ajaxcart__inner--has-fixed-footer">
2792        {{#items}}
2793        <div class="ajaxcart__product">
2794          <div class="ajaxcart__row" data-line="{{line}}">
2795            <div class="grid">
2796              <div class="grid__item one-quarter">
2797                <a href="{{url}}" class="ajaxcart__product-image"><img src="{{img}}" alt="{{name}}"></a>
2798              </div>
2799              <div class="grid__item three-quarters">
2800                <div class="ajaxcart__product-name--wrapper">
2801                
2802                  <a href="{{url}}" class="ajaxcart__product-name">{{{name}}}</a>
2803                  {{#if variation}}
2804                    <span class="ajaxcart__product-meta">{{variation}}</span>
2805                  {{/if}}
2806                  
2807                  {{selling_plan_allocation_data}}
2808
2809                  {{#properties}}
2810                    {{#each this}}
2811                      {{#if this}}
2812                        <span class="ajaxcart__product-meta">{{@key}}: {{this}}</span>
2813                      {{/if}}
2814                    {{/each}}
2815                  {{/properties}}
2816
2817                </div>
2818
2819                <div class="grid--full display-table">
2820                  <div class="grid__item display-table-cell one-half">
2821                    <div class="ajaxcart__qty">
2822                      <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus icon-fallback-text" data-id="{{key}}" data-qty="{{itemMinus}}" data-line="{{line}}" aria-label="Reduce item quantity by one">
2823                        <span class="icon icon-minus" aria-hidden="true"></span>
2824                        <span class="fallback-text" aria-hidden="true">&minus;</span>
2825                      </button>
2826                      <input type="text" name="updates[]" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" data-line="{{line}}" aria-label="quantity" pattern="[0-9]*">
2827                      <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus icon-fallback-text" data-id="{{key}}" data-line="{{line}}" data-qty="{{itemAdd}}" aria-label="Increase item quantity by one">
2828                        <span class="icon icon-plus" aria-hidden="true"></span>
2829                        <span class="fallback-text" aria-hidden="true">+</span>
2830                      </button>
2831                    </div>
2832                  </div>
2833                  <div class="grid__item display-table-cell one-half text-right">
2834                    {{#if discountsApplied}}
2835                      <small class="ajaxcart__price--strikethrough">{{{price}}}</small>
2836                      <span class="ajaxcart__price">
2837                        {{{discountedPrice}}}
2838                      </span>
2839                    {{else}}
2840                      <span class="ajaxcart__price">
2841                        {{{price}}}
2842                      </span>
2843                    {{/if}}
2844                  </div>
2845                </div>
2846                {{#if discountsApplied}}
2847                  <div class="grid--full display-table">
2848                    <div class="grid__item text-right">
2849                      {{#each discounts}}
2850                        <small class="ajaxcart__discount">{{this.title}}</small>
2851                      {{/each}}
2852                    </div>
2853                  </div>
2854                {{/if}}
2855              </div>
2856            </div>
2857          </div>
2858        </div>
2859        {{/items}}
2860
2861        
2862          <div>
2863            <label for="CartSpecialInstructions" class="ajaxcart__note">Special instructions for seller</label>
2864            <textarea name="note" class="input-full" id="CartSpecialInstructions">{{note}}</textarea>
2865          </div>
2866        
2867      </div>
2868      <div class="ajaxcart__footer ajaxcart__footer--fixed">
2869        <div class="grid--full">
2870          <div class="grid__item two-thirds">
2871            <p class="ajaxcart__subtotal">Subtotal</p>
2872          </div>
2873          <div class="grid__item one-third text-right">
2874            <p class="ajaxcart__subtotal">{{{totalPrice}}}</p>
2875          </div>
2876        </div>
2877        {{#if totalCartDiscount}}
2878          <p class="ajaxcart__savings text-center">{{{totalCartDiscount}}}</p>
2879        {{/if}}
2880
2881        <p class="ajaxcart__policies">
2882Taxes and <a href="/policies/shipping-policy">shipping</a> calculated at checkout
2883
2884        </p>
2885        <button type="submit" class="btn--secondary btn--full cart__checkout" name="checkout">
2886          Check Out <span class="icon icon-arrow-right" aria-hidden="true"></span>
2887        </button>
2888      </div>
2889    </form>
2890  
2891  </script>
2891
2892  
2892<script id="AjaxQty" type="text/template">
2893  
2894    <div class="ajaxcart__qty">
2895      <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus icon-fallback-text" data-id="{{key}}" data-qty="{{itemMinus}}" aria-label="Reduce item quantity by one">
2896        <span class="icon icon-minus" aria-hidden="true"></span>
2897        <span class="fallback-text" aria-hidden="true">&minus;</span>
2898      </button>
2899      <input type="text" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*">
2900      <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus icon-fallback-text" data-id="{{key}}" data-qty="{{itemAdd}}" aria-label="Increase item quantity by one">
2901        <span class="icon icon-plus" aria-hidden="true"></span>
2902        <span class="fallback-text" aria-hidden="true">+</span>
2903      </button>
2904    </div>
2905  
2906  </script>
2906
2907  
2907<script id="JsQty" type="text/template">
2908  
2909    <div class="js-qty">
2910      <button type="button" class="js-qty__adjust js-qty__adjust--minus icon-fallback-text" data-id="{{key}}" data-qty="{{itemMinus}}" aria-label="Reduce item quantity by one">
2911        <span class="icon icon-minus" aria-hidden="true"></span>
2912        <span class="fallback-text" aria-hidden="true">&minus;</span>
2913      </button>
2914      <input type="text" class="js-qty__num" value="{{itemQty}}" min="1" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*" name="{{inputName}}" id="{{inputId}}">
2915      <button type="button" class="js-qty__adjust js-qty__adjust--plus icon-fallback-text" data-id="{{key}}" data-qty="{{itemAdd}}" aria-label="Increase item quantity by one">
2916        <span class="icon icon-plus" aria-hidden="true"></span>
2917        <span class="fallback-text" aria-hidden="true">+</span>
2918      </button>
2919    </div>
2920  
2921  </script>
2921
2922
2923  
2924
2925  
2926
2927  <div id="SearchModal" class="mfp-hide">
2928    <!-- /snippets/search-bar.liquid -->
2929
2930
2931
2932
2933
2934<form action="/search" method="get" class="input-group search-bar search-bar--modal" role="search">
2935  
2936  <input type="search" name="q" value="" placeholder="Search our store" class="input-group-field" aria-label="Search our store">
2937  <span class="input-group-btn">
2938    <button type="submit" class="btn icon-fallback-text">
2939      <span class="icon icon-search" aria-hidden="true"></span>
2940      <span class="fallback-text">Search</span>
2941    </button>
2942  </span>
2943</form>
2944
2945  </div>
2946  <ul hidden>
2947    <li id="a11y-refresh-page-message">choosing a selection results in a full page refresh</li>
2948  </ul>
2949  
2950
2951
2952
2953
2954
2955
2956
2957<!-- spurit_sri-added -->
2958<script>
2959    if(typeof(Spurit) === 'undefined'){
2960        var Spurit = {};
2961    }
2962    if(!Spurit.recurringInvoices){
2963        Spurit.recurringInvoices = {};
2964    }
2965    if(!Spurit.recurringInvoices.snippet){
2966        Spurit.recurringInvoices.snippet = {};
2967    }
2968    Spurit.recurringInvoices.snippet.appId = '46';
2969    Spurit.recurringInvoices.snippet.shopHash = 'f226f2137f0eda9242140ae8d98bae97';
2970    Spurit.recurringInvoices.snippet.shopDomain = 'food-loops.myshopify.com';
2971    Spurit.recurringInvoices.snippet.folderStore = 'https://s3.amazonaws.com/shopify-apps/recurring-invoices/store/';
2972    Spurit.recurringInvoices.snippet.folderCss = 'https://s3.amazonaws.com/shopify-apps/recurring-invoices/css/';
2973    Spurit.recurringInvoices.snippet.moneyFormat = '${{amount}}';
2974
2975    if (typeof(Spurit.altCurrencies) === 'undefined') {
2976        Spurit.altCurrencies = {
2977            shop_currency: 'USD',
2978            cart: {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}
2979        };
2980    }
2981</script>
vendor: 1 bytes, line 2981
2981
2982<script src="https://s3.amazonaws.com/shopify-apps/recurring-invoices/js/common.js"></script>
2982
2983<!-- /spurit_sri-added -->
2984
2985
2986  
2987<meta id="th_shop_url" content="foodloops.net">
2988<link href="//fonts.googleapis.com/css?family=Poppins:300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet" type="text/css" media="all" />
2989<link href="//thimatic-apps.com/product_review/theme_files/wc-review.css?v=1.21" rel="stylesheet" type="text/css" media="all" />
2990<script src="//thimatic-apps.com/product_review/theme_files/wc-product-review.js?v=1.21" type="text/javascript"></script>
2990<!-- WPD Start -->
2991                
2992         
2993
2994               
2995               <!-- WPD End -->
2996  
2996<script>
2997  window.MAKEBECOOL_BUNDLES = window.MAKEBECOOL_BUNDLES || {}
2998  MAKEBECOOL_BUNDLES.moneyFormat = "${{amount}}"
2999  MAKEBECOOL_BUNDLES.cart = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}
3000  MAKEBECOOL_BUNDLES.template = "collection"
3001  MAKEBECOOL_BUNDLES.product = null
3002  MAKEBECOOL_BUNDLES.assetUrl = '//foodloops.net/cdn/shop/t/23/assets/filename.png?v=4139'
3003
3004  
3005</script>
vendor: 1 bytes, line 3005
3005
3006<script src="https://apps-bundles.makebecool.com/js/mbcBundlesApp.js?shop=food-loops.myshopify.com" async></script>
3006
3007
3008  
3008<script src="//foodloops.net/cdn/shop/t/23/assets/bsub.js?v=65887071011359220661746563006" type="text/javascript"></script>
3008
3009  <link href="//foodloops.net/cdn/shop/t/23/assets/bsub.css?v=80729355970590538871746563001" rel="stylesheet" type="text/css" media="all" />
3010<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
3010
3011</body>
3012
3013</html>
3014
3015

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.