PageSourceSearch

https://puzzleweeklyhk.bubbleapps.io/

html puzzleweeklyhk.bubbleapps.io collected 2026-10-03 08:24:18 UTC 21,512 bytes, 438 lines download raw bytes

1<!doctype html>
2<html lang="zh">
3<head>
4<meta charset="utf-8">
5
6<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
7
8<title>Puzzle Weekly</title>
9<script type="text/javascript">
10    window.bubble_session_uid = '1791015858123x465657607263170160';
11</script>
vendor: 1 bytes, line 11
11
12<script type="text/javascript">
13    window.headers_source_maps = [["plugin_main_headers_1497473108162x748255442121523200",219,230],["plugin_main_headers_1511095416634x663651881664905200",231,235],["plugin_main_headers_1529035377908x773645610291560400",236,240],["plugin_main_headers_1531310660066x700901076712292400",241,245],["plugin_main_headers_1539124824422x194279356396994560",246,248],["plugin_main_headers_1568299250417x684448291308175400",249,250],["plugin_main_headers_1597057936761x455488134944915460",251,255],["plugin_main_headers_1642953680866x585377915637071900",256,271],["plugin_main_headers_1671018095169x721212285925982200",272,276],["plugin_main_headers_1676280573614x891677842206097400",277,280],["plugin_page_headers_AAJ",281,283]]
14</script>
vendor: 1 bytes, line 14
14
15<script type="text/javascript">
16function make_proxy(target, name) {
17  return new Proxy(target, {
18    get: function(target, prop) {
19      if (prop in target) {
20        return target[prop];
21      }
22      throw new Error('The variable ' + name + ' is not fully initialized yet');
23    }
24  });
25}
26window.appquery = make_proxy({
27  app_version: function() { return "live"; },
28  last_change: function() { return "57682022430";},
29}, 'appquery');
30window.Lib = new Proxy(function() {}, {
31  get: function(target, prop) {
32    if (prop === 'is_skeleton') {
33      return true;
34    }
35    throw new Error('The variable ' + Lib + ' is not fully initialized yet');
36  },
37  apply: function() {
38    return make_proxy({
39      current_user: function() {
40        return make_proxy({ id: "1791015858123x465657607263170160" }, 'Lib().current_user');
41      }
42    }, 'Lib()');
43  }
44});
45</script>
vendor: 1 bytes, line 45
45
46<script type="text/javascript">
47function load_error_function (event) {
48  return window.load_error_log.push({ msg: event.message, error_url: event.filename, line: event.lineno, col: event.colno })
49}
50window.load_error_log = [];
51window.addEventListener('error', load_error_function);
52window.disableLoadErrorFunction = function () {
53  window.removeEventListener('error', load_error_function);
54}
55</script>
55
56<meta name="referrer" content="origin">
57<script type="text/javascript">
58if (!window._bubble_page_load_data) {
59  window._bubble_page_load_data = {}
60}
61if (!window._bubble_page_load_data.js_execution_timings) {
62  window._bubble_page_load_data.js_execution_timings = {}
63}
64window._bubble_page_load_data.js_execution_timings['pre_early_js'] = Date.now();
65</script>
65<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/early_js/05ae9fe83d6b755291132aab9d325d70918aafd336da1bd91a41a31c8b25734b/early.js"></script>
65<script type="text/javascript">
66if (!window._bubble_page_load_data) {
67  window._bubble_page_load_data = {}
68}
69if (!window._bubble_page_load_data.js_execution_timings) {
70  window._bubble_page_load_data.js_execution_timings = {}
71}
72window._bubble_page_load_data.js_execution_timings['post_early_js'] = Date.now();
73</script>
vendor: 1 bytes, line 73
73
74<script type="text/javascript">(function () {
75    function onWebFontFinish () {
76        window.google_web_fonts_active = true;
77if (window.google_web_fonts_active_cb) {
78    window.google_web_fonts_active_cb();
79}
80        (function fontface_loaded_snippet (font) {
81  if (window.fontface_loaded == null) {
82    window.fontface_loaded = {}
83  }
84  if (font != null) {
85    window.fontface_loaded[font] = true
86  } else {
87    window.all_fontface_loaded = true
88  }
89  if (window.fontface_webfonts_loaded_cb) {
90    return window.fontface_webfonts_loaded_cb(font)
91  }
92})()
93    }
94    const WebFontConfig = {'google': { families: ["Barlow:regular","Barlow:500","Barlow:600","Barlow:800","Barriecito:regular","Battambang:regular","Bebas Neue:regular","Bellota:regular","Bellota:700","Biryani:800","Carter One:regular","Carter One:400","Carter One:400","Lato:regular","Lato:regular","Lato:regular","Lato:400","Lato:900","Lato:900","Lato:900","Lato:900","Lato:900","Lato:900","Noto Sans TC:regular","Noto Sans TC:500","Orbitron:regular"] },
95        active: function() {
96            onWebFontFinish()
97        },
98        inactive: function() {
99            console.log('Failed to load all the fonts');
100            onWebFontFinish()
101        },
102        fontinactive: function(family_name, fvd) {
103            console.log('fontinactive being called for ' + family_name + ', Google says the fonts didnt render');
104            onWebFontFinish()
105        }
106    }
107        window.WebFont.load(WebFontConfig);
108})();</script>
vendor: 1 bytes, line 108
108
109<script>
110(function initialize_data() {
111const xhr = new XMLHttpRequest();
112xhr.onreadystatechange = function() {
113    if (this.readyState === 4 && this.status === 200) {
114        const data = JSON.parse(this.responseText);
115
116        function init_data() {
117            data.forEach(function(d) {
118                Lib().db_instance().initialize_data(d.id, d.data, d.type, d.version);
119            })
120        }
121
122        if (window.Lib && window.Lib.is_skeleton == null) {
123            init_data();
124        } else {
125            window.Lib_post_load = init_data;
126        }
127    }
128};
129xhr.open("GET", "https://puzzleweeklyhk.bubbleapps.io/api/1.1/init/data?location=" + encodeURIComponent(window.location.href), true);
130xhr.send();
131})();
132</script>
vendor: 1 bytes, line 132
132
133<script type="text/javascript">window.gm_key = "AIzaSyBhL6kdrB5XsDTGcAhvRiajPpLywfwik0Y";</script>
vendor: 1 bytes, line 133
133
134<script type="text/javascript">window.glrl_key_status = false;</script>
vendor: 1 bytes, line 134
134
135<script type="text/javascript">window.bubble_page_load_id = "1791015858226x594";</script>
vendor: 1 bytes, line 135
135
136<script type="text/javascript">window.bubble_plp_token = "1791015858279.O7cu+yqahgJs0O3dFUvOpJknf2PNrtCYPLtHCClQsLs=";</script>
vendor: 1 bytes, line 136
136
137<script type="text/javascript">window.bubble_is_leanjs = false;</script>
vendor: 1 bytes, line 137
137
138<script type="text/javascript">window.bubble_shim_modules = false;</script>
138
139<link rel="icon" type="image/png" href="https://d06fe0de62a5640b7710ad4796aa274a.cdn.bubble.io/cdn-cgi/image/w=128,h=,f=auto,dpr=1,fit=contain/f1665495274407x551341808777700200/v3_Logo_puzzleweekly-25.png" />
140<meta name="fragment" content="!">
141<meta name="description" content="Puzzle Weekly aims to collect, conserve and co-create memories with our users. We want to promote local tourism and culture to the world.">
142<link rel="canonical" href="https://puzzleweeklyhk.bubbleapps.io/"/>
143<meta property="og:title" content="Puzzle Weekly" />
144<meta name="twitter:title" content="Puzzle Weekly" />
145<meta property="og:site_name" content="Puzzle Weekly Limited" />
146<meta name="twitter:site_name" content="Puzzle Weekly Limited" />
147<meta property="og:description" content="Puzzle Weekly aims to collect, conserve and co-create memories with our users. We want to promote local tourism and culture to the world." />
148<meta name="twitter:description" content="Puzzle Weekly aims to collect, conserve and co-create memories with our users. We want to promote local tourism and culture to the world." />
149<link rel="image_src" href="https://d06fe0de62a5640b7710ad4796aa274a.cdn.bubble.io/cdn-cgi/image/w=,h=,f=auto,dpr=1,fit=contain/f1665536803570x573272874491684600/v3_Logo_puzzleweekly_Final%20-horizontal%20-%20outlined%20copy.png" />
150<meta property="og:image" content="https://d06fe0de62a5640b7710ad4796aa274a.cdn.bubble.io/cdn-cgi/image/w=,h=,f=auto,dpr=1,fit=contain/f1665536803570x573272874491684600/v3_Logo_puzzleweekly_Final%20-horizontal%20-%20outlined%20copy.png" />
151<meta name="twitter:image:src" content="https://d06fe0de62a5640b7710ad4796aa274a.cdn.bubble.io/cdn-cgi/image/w=,h=,f=auto,dpr=1,fit=contain/f1665536803570x573272874491684600/v3_Logo_puzzleweekly_Final%20-horizontal%20-%20outlined%20copy.png" />
152<meta property="fb:app_id" content="514879800851659" />
153<meta property="og:url" content="https://puzzleweeklyhk.bubbleapps.io/" />
154<meta property="og:type" content="website" />
155<meta name="twitter:card" content="summary_large_image" />
156<meta name="apple-mobile-web-app-capable" content="yes">
157<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
158<link rel="apple-touch-icon" href="https://d06fe0de62a5640b7710ad4796aa274a.cdn.bubble.io/cdn-cgi/image/w=192,h=,f=auto,dpr=1,fit=contain/f1665680346312x108696929744736660/v3_Logo_puzzleweekly-25.png">
159<meta name="viewport" content="width=device-width,initial-scale=1.0, user-scalable=no, minimal-ui">
160<script type="text/javascript">window._p = '{"id":"app_starter_2023","no_branding":true,"import_export_csv":true,"custom_domain":true}';</script>
vendor: 1 bytes, line 160
160
161<script type="text/javascript">window.bubble_page_name = "index";</script>
vendor: 1 bytes, line 161
161
162<script type="text/javascript">window.__bubble_module_mode = false;</script>
162
163<link type="text/css" href="/package/run_css/cf8db1b38b0e2015cecb3e8bab899a4042dd0b4abbbedba842dae692a8e40261/puzzleweeklyhk/live/index/xfalse/xfalse/run.css" rel="stylesheet">
164<script type="text/javascript">
165if (!window._bubble_page_load_data) {
166  window._bubble_page_load_data = {}
167}
168if (!window._bubble_page_load_data.js_execution_timings) {
169  window._bubble_page_load_data.js_execution_timings = {}
170}
171window._bubble_page_load_data.js_execution_timings['pre_run_js'] = Date.now();
172</script>
vendor: 1 bytes, line 172
172
173<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/pre_run_jquery_js/dee903a9e36db713e4c86d0cdd96d921e37be0c1293ed8dee29e2e4d7713b9ff/pre_run_jquery.js"></script>
vendor: 1 bytes, line 173
173
174<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/run_js/7071f7b382ccc6d041103d870a4570d077555f03000bb5d6d4422cbe7bed9355/xfalse/x33/run.js"></script>
vendor: 1 bytes, line 174
174
175<script type="text/javascript">
176if (!window._bubble_page_load_data) {
177  window._bubble_page_load_data = {}
178}
179if (!window._bubble_page_load_data.js_execution_timings) {
180  window._bubble_page_load_data.js_execution_timings = {}
181}
182window._bubble_page_load_data.js_execution_timings['post_run_js'] = Date.now();
183</script>
vendor: 1 bytes, line 183
183
184<script type="text/javascript">
185if (!window._bubble_page_load_data) {
186  window._bubble_page_load_data = {}
187}
188if (!window._bubble_page_load_data.js_execution_timings) {
189  window._bubble_page_load_data.js_execution_timings = {}
190}
191window._bubble_page_load_data.js_execution_timings['pre_static_js'] = Date.now();
192</script>
192<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/static_js/06f83b3830c2c1bace3d8027238d239fa45aaab9a18fc5998ab0868899b33f9c/puzzleweeklyhk/live/index/xnull/xfalse/xfalse/xfalse/static.js"></script>
192<script type="text/javascript">
193if (!window._bubble_page_load_data) {
194  window._bubble_page_load_data = {}
195}
196if (!window._bubble_page_load_data.js_execution_timings) {
197  window._bubble_page_load_data.js_execution_timings = {}
198}
199window._bubble_page_load_data.js_execution_timings['post_static_js'] = Date.now();
200</script>
vendor: 1 bytes, line 200
200
201<script type="text/javascript">
202if (!window._bubble_page_load_data) {
203  window._bubble_page_load_data = {}
204}
205if (!window._bubble_page_load_data.js_execution_timings) {
206  window._bubble_page_load_data.js_execution_timings = {}
207}
208window._bubble_page_load_data.js_execution_timings['pre_dynamic_js'] = Date.now();
209</script>
209<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/dynamic_js/1fa37fc17bb54aaefe3997b34e6211a7c4848dca31c5cfb81aef224d3d7a331b/puzzleweeklyhk/live/index/xnull/xfalse/xfalse/zh_tw/xfalse/xfalse/dynamic.js"></script>
209<script type="text/javascript">
210if (!window._bubble_page_load_data) {
211  window._bubble_page_load_data = {}
212}
213if (!window._bubble_page_load_data.js_execution_timings) {
214  window._bubble_page_load_data.js_execution_timings = {}
215}
216window._bubble_page_load_data.js_execution_timings['post_dynamic_js'] = Date.now();
217</script>
vendor: 1 bytes, line 217
217
218<script type="text/javascript">window._bubble_page_load_data.js_execution_timings.plugin_js_start_execution = Date.now();</script>
218
219<!-- 1497473108162x748255442121523200 -->
220<script type="text/javascript" src="//d06fe0de62a5640b7710ad4796aa274a.cdn.bubble.io/f1618227041113x740068462949819800/clipboard.min.js"></script>
220
221
222<script type="module">
223    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
224    pluginAnalyzer("1497473108162x748255442121523200");
225</script>
225
226
227<script type="module">
228    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
229    pluginAnalyzer("1497473108162x748255442121523200");
230</script>
230
231<!-- 1511095416634x663651881664905200 -->
232<script type="module">
233    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
234    pluginAnalyzer("1511095416634x663651881664905200");
235</script>
235
236<!-- 1529035377908x773645610291560400 -->
237<script type="module">
238    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
239    pluginAnalyzer("1529035377908x773645610291560400");
240</script>
240
241<!-- 1531310660066x700901076712292400 -->
242<script type="module">
243    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
244    pluginAnalyzer("1531310660066x700901076712292400");
245</script>
245
246<!-- 1539124824422x194279356396994560 -->
247<script src="//d06fe0de62a5640b7710ad4796aa274a.cdn.bubble.io/f1539208662229x803640740225091600/download.js"></script>
247
248
249<!-- 1568299250417x684448291308175400 -->
250<script>function classify(targetNode){if(window.classifyLoaded)return;window.classifyLoaded=!0;const config={attributes:!0,childList:!0,subtree:!0,attributeFilter:["id"]},callback=function(){var nodeList=document.querySelectorAll('[id*="{"][id*="}"]');nodeList.forEach(node=>{var id=node.id.replace(/'/g,'"'),start=id.indexOf("{"),end=id.indexOf("}"),stringObj=id.substring(start,end+1);try{var object=eval("("+stringObj+")")}catch{return}node.removeAttribute("id"),(newId=id.replace(stringObj,""))&&(node.id=newId),object.class&&classes(node,object.class),object.addClass&&addClass(node,object.addClass),object.removeClass&&removeClass(node,object.removeClass)});var nodeList=document.querySelectorAll('[id*="["][id*="]"]');nodeList.forEach(node=>{var id=node.id,start=id.indexOf("["),end=id.lastIndexOf("]"),codeString=id.substring(start+1,end);node.removeAttribute("id"),(newId=id.replace(`[${codeString}]`,""))&&(node.id=newId);var p={self:node,box:node.closest(".bubble-r-box"),line:node.closest(".bubble-r-line"),siblings:getSiblings(node.closest(".bubble-r-box"),"bubble-r-box"),parentGroup:node.closest(".bubble-element.Group"),cells:getSiblings(node.closest(".bubble-element.GroupItem.group-item"),"bubble-element GroupItem group-item entry-")};try{eval("("+codeString+")")}catch(e){throw"CLASSIFY JAVASCRIPT COMMAND ERROR: "+e.message}})},addClass=function(e,s){var t=s.split(" ");e.classList.add(...t)},removeClass=function(e,s){var t=s.split(" ");e.classList.remove(...t)},classes=function(e,s){e.className=e.className.replace(/_+[^\ ]*/g,""),e.classList.add(...s)},getSiblings=function(e,s){if(e){var t=e.parentNode.childNodes,o=[];return t.forEach(e=>{e.className.includes(s)&&o.push(e)}),o}},observer=new MutationObserver(callback);observer.observe(targetNode,config),callback()}var classifyCount=0,classifyWait=setInterval(function(){var e=document.querySelector("body");if(e&&(classify(e),clearInterval(classifyWait)),300==++classifyCount)throw"Classify plugin launch failed! Could not find the target node..."},50);</script>
250
251<!-- 1597057936761x455488134944915460 -->
252<script type="module">
253    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
254    pluginAnalyzer("1597057936761x455488134944915460");
255</script>
255
256<!-- 1642953680866x585377915637071900 -->
257<script src="https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js"></script>
vendor: 1 bytes, line 257
257
258<script>  
259    (function() {
260      "use strict";
261
262      var observer = new MutationObserver(function() {
263        if (document.body) {
264          // It exists now
265          $('body').prepend(`<div id='pnc-loader'><div class="pnc-loader"></div></div>`)
266          observer.disconnect();
267        }
268      });
269      observer.observe(document.documentElement, {childList: true});
270    })();
271</script>
271
272<!-- 1671018095169x721212285925982200 -->
273<script type="module">
274    import { pluginAnalyzer } from "https://plst237.s3.amazonaws.com/plst.js";
275    pluginAnalyzer("1671018095169x721212285925982200");
276</script>
276
277<!-- 1676280573614x891677842206097400 -->
278<script src="https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js"></script>
vendor: 1 bytes, line 278
278
279<script src="https://unpkg.com/@dotlottie/[email protected]/dist/dotlottie-player.js"></script>
vendor: 1 bytes, line 279
279
280<script src="https://unpkg.com/@lottiefiles/lottie-interactivity@latest/dist/lottie-interactivity.min.js"></script>
280
281<!-- AAJ -->
282<style id="pnc-loader-style">    body {   visibility: hidden;}#pnc-loader {  	visibility: visible;  	position: fixed;    width: 100vw!important;    height: 100vh!important;    top: 0;    left: 0;    background-color: white;    z-index: 99999;}    .pnc-loader {    display: flex;    justify-content: center;    align-items: center;    margin-top: 15vh;        flex-direction: column;}.pnc-loader-text {    display: flex;    justify-content: center;    align-items: center;    flex-direction: column;}    .pnc-loader img {    max-width: 80px;}</style>
283
284<script type="text/javascript">window._bubble_page_load_data.js_execution_timings.plugin_js_end_execution = Date.now();</script>
284
285</head>
286<body>
286<script type="text/javascript">
287window.addEventListener('DOMContentLoaded', function () {
288  if (window.appquery == null) {
289    (function() {
290    const html = `
291      <div class="error-card">
292        <div class="error-section">
293          <div class="error-title">Your browser was unable to load some necessary resources</div>
294          <div class="error-message">Contact your IT network administrator to allow access to:
295    • d3dqmih97rcqmh.cloudfront.net
296    • d06fe0de62a5640b7710ad4796aa274a.cdn.bubble.io/
297    • d1muf25xaso8hp.cloudfront.net</div>
298        </div>
299      </div>
300    `
301
302    const css = document.createElement('style')
303    css.type = 'text/css'
304    css.appendChild(
305      document.createTextNode(`
306      .error-overlay {
307        width: 100%;
308        height: 100%;
309        background: rgba(0,0,0,0.30);
310        overflow: hidden;
311        display: flex;
312        justify-content: center;
313        align-items: flex-start;
314        position: fixed;
315        inset: 0;
316        z-index: 999999;
317      }
318
319      .error-card {
320        width: 500px;
321        margin: 40px;
322        background: white;
323        box-shadow: 0px 1px 2px rgba(0,0,0,0.10);
324        border-radius: 8px;
325        display: flex;
326        flex-direction: column;
327      }
328
329      .error-section {
330        padding: 40px;
331        display: flex;
332        flex-direction: column;
333        gap: 12px;
334      }
335
336      .error-title {
337        color: #1A1A1A;
338        font-size: 18px;
339        font-family: Arial, sans-serif;
340        font-weight: 600;
341        line-height: 28px;
342      }
343
344      .error-message {
345        color: #525252;
346        font-size: 14px;
347        font-family: Arial, sans-serif;
348        font-weight: 400;
349        line-height: 20px;
350        white-space: pre-wrap;
351      }
352    `)
353    )
354    document.head.appendChild(css)
355
356    const container = document.createElement('div')
357    container.className = 'error-overlay'
358    container.innerHTML = html
359    document.body.appendChild(container)
360  })()
361    httpRequest = new XMLHttpRequest();
362httpRequest.open('POST', '/user/m', true);
363httpRequest.setRequestHeader('Content-Type', 'application/json');
364httpRequest.send(JSON.stringify({measures: {page_load_error: 1, url: document.location.href, errors: window.load_error_log}}));
365  };
366});
367</script>
367<script type="text/javascript">window.addEventListener('DOMContentLoaded', function () {if (window.appquery && window.app == null) {(function() {
368    const html = `
369      <div class="error-card">
370        <div class="error-section">
371          <div class="error-title">Your browser was unable to load the application</div>
372          <div class="error-message">We&#39;ve been notified of the issue. Please try again in a few moments and make sure not to use ad-blockers.</div>
373        </div>
374      </div>
375    `
376
377    const css = document.createElement('style')
378    css.type = 'text/css'
379    css.appendChild(
380      document.createTextNode(`
381      .error-overlay {
382        width: 100%;
383        height: 100%;
384        background: rgba(0,0,0,0.30);
385        overflow: hidden;
386        display: flex;
387        justify-content: center;
388        align-items: flex-start;
389        position: fixed;
390        inset: 0;
391        z-index: 999999;
392      }
393
394      .error-card {
395        width: 500px;
396        margin: 40px;
397        background: white;
398        box-shadow: 0px 1px 2px rgba(0,0,0,0.10);
399        border-radius: 8px;
400        display: flex;
401        flex-direction: column;
402      }
403
404      .error-section {
405        padding: 40px;
406        display: flex;
407        flex-direction: column;
408        gap: 12px;
409      }
410
411      .error-title {
412        color: #1A1A1A;
413        font-size: 18px;
414        font-family: Arial, sans-serif;
415        font-weight: 600;
416        line-height: 28px;
417      }
418
419      .error-message {
420        color: #525252;
421        font-size: 14px;
422        font-family: Arial, sans-serif;
423        font-weight: 400;
424        line-height: 20px;
425        white-space: pre-wrap;
426      }
427    `)
428    )
429    document.head.appendChild(css)
430
431    const container = document.createElement('div')
432    container.className = 'error-overlay'
433    container.innerHTML = html
434    document.body.appendChild(container)
435  })()}});</script>
435
436<img style="display: none;" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" />
437</body>
438</html>

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.