From 73d439ab17c3e4d5836b7443c84b83286067da07 Mon Sep 17 00:00:00 2001 From: gruhn Date: Mon, 2 Sep 2024 11:15:49 +0000 Subject: [PATCH] =?UTF-8?q?Deploy=20preview=20for=20PR=20449=20?= =?UTF-8?q?=F0=9F=9B=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pr-preview/pr-449/404.html | 23 + pr-preview/pr-449/api/QrcodeCapture.html | 36 + pr-preview/pr-449/api/QrcodeDropZone.html | 56 + pr-preview/pr-449/api/QrcodeStream.html | 126 + .../assets/api_QrcodeCapture.md.BVomH-fp.js | 10 + .../api_QrcodeCapture.md.BVomH-fp.lean.js | 1 + .../assets/api_QrcodeDropZone.md.CqxuZhVd.js | 30 + .../api_QrcodeDropZone.md.CqxuZhVd.lean.js | 1 + .../assets/api_QrcodeStream.md.CGQgF4oK.js | 100 + .../api_QrcodeStream.md.CGQgF4oK.lean.js | 1 + pr-preview/pr-449/assets/app.DzN9cVpk.js | 7 + .../chunks/@localSearchIndexroot.BQqEPrZR.js | 1 + ...ue_type_script_setup_true_lang.CUHYp3xr.js | 1 + .../chunks/VPLocalSearchBox.BPLfKR6Q.js | 13 + .../pr-449/assets/chunks/camera.BJQyjlnn.js | 3 + .../assets/chunks/framework.BtL3uYYi.js | 2 + .../assets/chunks/safari_32x32.Bkuv9jEj.js | 1 + .../pr-449/assets/chunks/theme.C1T0t5Zq.js | 7 + .../assets/demos_DragDrop.md.12E-B_I3.js | 86 + .../assets/demos_DragDrop.md.12E-B_I3.lean.js | 86 + .../assets/demos_FullDemo.md.EA-azuP_.js | 238 ++ .../assets/demos_FullDemo.md.EA-azuP_.lean.js | 238 ++ .../assets/demos_Fullscreen.md.CMW7y2Ip.js | 130 + .../demos_Fullscreen.md.CMW7y2Ip.lean.js | 130 + .../demos_LoadingIndicator.md.BVZFqNj1.js | 57 + ...demos_LoadingIndicator.md.BVZFqNj1.lean.js | 57 + ..._ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.js | 86 + ...SameQrcodeMoreThanOnce.md.M3YU2Vzr.lean.js | 86 + .../pr-449/assets/demos_Simple.md.CWiqK3J_.js | 79 + .../assets/demos_Simple.md.CWiqK3J_.lean.js | 1 + .../assets/demos_SwitchCamera.md.B-obcuEB.js | 95 + .../demos_SwitchCamera.md.B-obcuEB.lean.js | 95 + .../pr-449/assets/demos_Torch.md.AnpZuZA8.js | 97 + .../assets/demos_Torch.md.AnpZuZA8.lean.js | 97 + .../pr-449/assets/demos_Upload.md.Ds3GTY8o.js | 57 + .../assets/demos_Upload.md.Ds3GTY8o.lean.js | 57 + .../assets/demos_Validate.md.Ba0B0yOc.js | 119 + .../assets/demos_Validate.md.Ba0B0yOc.lean.js | 119 + pr-preview/pr-449/assets/index.md.DnOK2cmZ.js | 1 + .../pr-449/assets/index.md.DnOK2cmZ.lean.js | 1 + .../inter-italic-cyrillic-ext.5XJwZIOp.woff2 | Bin 0 -> 28332 bytes .../inter-italic-cyrillic.D6csxwjC.woff2 | Bin 0 -> 17824 bytes .../inter-italic-greek-ext.CHOfFY1k.woff2 | Bin 0 -> 12188 bytes .../assets/inter-italic-greek.9J96vYpw.woff2 | Bin 0 -> 23264 bytes .../inter-italic-latin-ext.BGcWXLrn.woff2 | Bin 0 -> 63552 bytes .../assets/inter-italic-latin.DbsTr1gm.woff2 | Bin 0 -> 46048 bytes .../inter-italic-vietnamese.DHNAd7Wr.woff2 | Bin 0 -> 8784 bytes .../inter-roman-cyrillic-ext.DxP3Awbn.woff2 | Bin 0 -> 26600 bytes .../inter-roman-cyrillic.CMhn1ESj.woff2 | Bin 0 -> 16780 bytes .../inter-roman-greek-ext.D0mI3NpI.woff2 | Bin 0 -> 11808 bytes .../assets/inter-roman-greek.JvnBZ4YD.woff2 | Bin 0 -> 21776 bytes .../inter-roman-latin-ext.ZlYT4o7i.woff2 | Bin 0 -> 59608 bytes .../assets/inter-roman-latin.Bu8hRsVA.woff2 | Bin 0 -> 42464 bytes .../inter-roman-vietnamese.ClpjcLMQ.woff2 | Bin 0 -> 8492 bytes pr-preview/pr-449/assets/style.DtBLy4Td.css | 1 + pr-preview/pr-449/camera-switch.svg | 1 + pr-preview/pr-449/checkmark.svg | 1 + pr-preview/pr-449/debug-memory-leak.html | 102 + pr-preview/pr-449/demos/DragDrop.html | 112 + pr-preview/pr-449/demos/FullDemo.html | 265 ++ pr-preview/pr-449/demos/Fullscreen.html | 157 + pr-preview/pr-449/demos/LoadingIndicator.html | 84 + .../demos/ScanSameQrcodeMoreThanOnce.html | 113 + pr-preview/pr-449/demos/Simple.html | 104 + pr-preview/pr-449/demos/SwitchCamera.html | 122 + pr-preview/pr-449/demos/Torch.html | 124 + pr-preview/pr-449/demos/Upload.html | 83 + pr-preview/pr-449/demos/Validate.html | 146 + pr-preview/pr-449/flash-off.svg | 1 + pr-preview/pr-449/flash-on.svg | 1 + pr-preview/pr-449/fullscreen-exit.svg | 1 + pr-preview/pr-449/fullscreen.svg | 1 + pr-preview/pr-449/hashmap.json | 1 + pr-preview/pr-449/index.html | 26 + pr-preview/pr-449/logo.png | Bin 0 -> 22337 bytes pr-preview/pr-449/manifest.webmanifest | 1 + pr-preview/pr-449/pwa-192x192.png | Bin 0 -> 26062 bytes pr-preview/pr-449/pwa-512x512.png | Bin 0 -> 39910 bytes pr-preview/pr-449/registerSW.js | 1 + pr-preview/pr-449/select-camera-demo.html | 82 + pr-preview/pr-449/simple-demo.html | 79 + pr-preview/pr-449/sw.js | 330 ++ pr-preview/pr-449/workbox-5199072c.js | 3391 +++++++++++++++++ 83 files changed, 7761 insertions(+) create mode 100644 pr-preview/pr-449/404.html create mode 100644 pr-preview/pr-449/api/QrcodeCapture.html create mode 100644 pr-preview/pr-449/api/QrcodeDropZone.html create mode 100644 pr-preview/pr-449/api/QrcodeStream.html create mode 100644 pr-preview/pr-449/assets/api_QrcodeCapture.md.BVomH-fp.js create mode 100644 pr-preview/pr-449/assets/api_QrcodeCapture.md.BVomH-fp.lean.js create mode 100644 pr-preview/pr-449/assets/api_QrcodeDropZone.md.CqxuZhVd.js create mode 100644 pr-preview/pr-449/assets/api_QrcodeDropZone.md.CqxuZhVd.lean.js create mode 100644 pr-preview/pr-449/assets/api_QrcodeStream.md.CGQgF4oK.js create mode 100644 pr-preview/pr-449/assets/api_QrcodeStream.md.CGQgF4oK.lean.js create mode 100644 pr-preview/pr-449/assets/app.DzN9cVpk.js create mode 100644 pr-preview/pr-449/assets/chunks/@localSearchIndexroot.BQqEPrZR.js create mode 100644 pr-preview/pr-449/assets/chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js create mode 100644 pr-preview/pr-449/assets/chunks/VPLocalSearchBox.BPLfKR6Q.js create mode 100644 pr-preview/pr-449/assets/chunks/camera.BJQyjlnn.js create mode 100644 pr-preview/pr-449/assets/chunks/framework.BtL3uYYi.js create mode 100644 pr-preview/pr-449/assets/chunks/safari_32x32.Bkuv9jEj.js create mode 100644 pr-preview/pr-449/assets/chunks/theme.C1T0t5Zq.js create mode 100644 pr-preview/pr-449/assets/demos_DragDrop.md.12E-B_I3.js create mode 100644 pr-preview/pr-449/assets/demos_DragDrop.md.12E-B_I3.lean.js create mode 100644 pr-preview/pr-449/assets/demos_FullDemo.md.EA-azuP_.js create mode 100644 pr-preview/pr-449/assets/demos_FullDemo.md.EA-azuP_.lean.js create mode 100644 pr-preview/pr-449/assets/demos_Fullscreen.md.CMW7y2Ip.js create mode 100644 pr-preview/pr-449/assets/demos_Fullscreen.md.CMW7y2Ip.lean.js create mode 100644 pr-preview/pr-449/assets/demos_LoadingIndicator.md.BVZFqNj1.js create mode 100644 pr-preview/pr-449/assets/demos_LoadingIndicator.md.BVZFqNj1.lean.js create mode 100644 pr-preview/pr-449/assets/demos_ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.js create mode 100644 pr-preview/pr-449/assets/demos_ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.lean.js create mode 100644 pr-preview/pr-449/assets/demos_Simple.md.CWiqK3J_.js create mode 100644 pr-preview/pr-449/assets/demos_Simple.md.CWiqK3J_.lean.js create mode 100644 pr-preview/pr-449/assets/demos_SwitchCamera.md.B-obcuEB.js create mode 100644 pr-preview/pr-449/assets/demos_SwitchCamera.md.B-obcuEB.lean.js create mode 100644 pr-preview/pr-449/assets/demos_Torch.md.AnpZuZA8.js create mode 100644 pr-preview/pr-449/assets/demos_Torch.md.AnpZuZA8.lean.js create mode 100644 pr-preview/pr-449/assets/demos_Upload.md.Ds3GTY8o.js create mode 100644 pr-preview/pr-449/assets/demos_Upload.md.Ds3GTY8o.lean.js create mode 100644 pr-preview/pr-449/assets/demos_Validate.md.Ba0B0yOc.js create mode 100644 pr-preview/pr-449/assets/demos_Validate.md.Ba0B0yOc.lean.js create mode 100644 pr-preview/pr-449/assets/index.md.DnOK2cmZ.js create mode 100644 pr-preview/pr-449/assets/index.md.DnOK2cmZ.lean.js create mode 100644 pr-preview/pr-449/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 create mode 100644 pr-preview/pr-449/assets/inter-italic-cyrillic.D6csxwjC.woff2 create mode 100644 pr-preview/pr-449/assets/inter-italic-greek-ext.CHOfFY1k.woff2 create mode 100644 pr-preview/pr-449/assets/inter-italic-greek.9J96vYpw.woff2 create mode 100644 pr-preview/pr-449/assets/inter-italic-latin-ext.BGcWXLrn.woff2 create mode 100644 pr-preview/pr-449/assets/inter-italic-latin.DbsTr1gm.woff2 create mode 100644 pr-preview/pr-449/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 create mode 100644 pr-preview/pr-449/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 create mode 100644 pr-preview/pr-449/assets/inter-roman-cyrillic.CMhn1ESj.woff2 create mode 100644 pr-preview/pr-449/assets/inter-roman-greek-ext.D0mI3NpI.woff2 create mode 100644 pr-preview/pr-449/assets/inter-roman-greek.JvnBZ4YD.woff2 create mode 100644 pr-preview/pr-449/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 create mode 100644 pr-preview/pr-449/assets/inter-roman-latin.Bu8hRsVA.woff2 create mode 100644 pr-preview/pr-449/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 create mode 100644 pr-preview/pr-449/assets/style.DtBLy4Td.css create mode 100644 pr-preview/pr-449/camera-switch.svg create mode 100644 pr-preview/pr-449/checkmark.svg create mode 100644 pr-preview/pr-449/debug-memory-leak.html create mode 100644 pr-preview/pr-449/demos/DragDrop.html create mode 100644 pr-preview/pr-449/demos/FullDemo.html create mode 100644 pr-preview/pr-449/demos/Fullscreen.html create mode 100644 pr-preview/pr-449/demos/LoadingIndicator.html create mode 100644 pr-preview/pr-449/demos/ScanSameQrcodeMoreThanOnce.html create mode 100644 pr-preview/pr-449/demos/Simple.html create mode 100644 pr-preview/pr-449/demos/SwitchCamera.html create mode 100644 pr-preview/pr-449/demos/Torch.html create mode 100644 pr-preview/pr-449/demos/Upload.html create mode 100644 pr-preview/pr-449/demos/Validate.html create mode 100644 pr-preview/pr-449/flash-off.svg create mode 100644 pr-preview/pr-449/flash-on.svg create mode 100644 pr-preview/pr-449/fullscreen-exit.svg create mode 100644 pr-preview/pr-449/fullscreen.svg create mode 100644 pr-preview/pr-449/hashmap.json create mode 100644 pr-preview/pr-449/index.html create mode 100644 pr-preview/pr-449/logo.png create mode 100644 pr-preview/pr-449/manifest.webmanifest create mode 100644 pr-preview/pr-449/pwa-192x192.png create mode 100644 pr-preview/pr-449/pwa-512x512.png create mode 100644 pr-preview/pr-449/registerSW.js create mode 100644 pr-preview/pr-449/select-camera-demo.html create mode 100644 pr-preview/pr-449/simple-demo.html create mode 100644 pr-preview/pr-449/sw.js create mode 100644 pr-preview/pr-449/workbox-5199072c.js diff --git a/pr-preview/pr-449/404.html b/pr-preview/pr-449/404.html new file mode 100644 index 00000000..d0bc4d13 --- /dev/null +++ b/pr-preview/pr-449/404.html @@ -0,0 +1,23 @@ + + + + + + 404 | Vue Qrcode Reader + + + + + + + + + + + + +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/api/QrcodeCapture.html b/pr-preview/pr-449/api/QrcodeCapture.html new file mode 100644 index 00000000..3ad979cd --- /dev/null +++ b/pr-preview/pr-449/api/QrcodeCapture.html @@ -0,0 +1,36 @@ + + + + + + QrcodeCapture | Vue Qrcode Reader + + + + + + + + + + + + + + + + +
Skip to content

QrcodeCapture

Browser Support

The newest API this component depend on is the FileReader API. Vue Native is not supported (see #206).

Internet ExplorerEdgeFirefoxChromeSafari
10+YesYesYesYes¹
  1. It doesn't work in web apps added to home screen (PWA mode) on iOS prior to 11.3 (see this StackOverflow question)

Events

detect

  • Payload Type: DetectedBarcode[]

The component renders to a simple file picker input element. Clicking opens a file dialog. On supporting mobile devices the camera is started to take a picture. The selected images are directly scanned and positive results are indicated by the detect event. You can also select multiple images at the same time (still one event per image though). If no QR code can be recognized an empty array is emitted.

The structure of the event payload is the same as for the detect event on QrcodeStream.

decode removed in v5.0.0

Use detect instead. TODO: link old docs.

Props

formats since v5.3.0

  • Payload Type: BarcodeDetectorOptions['formats']
  • Default: ['qr_code']

The formats prop defines which barcode formats are detected. Supported Formats.

html
<qrcode-capture :formats="['qr_code', 'code_128']"></qrcode-capture>

disabled, capture, multiple, ...

Technically, QrcodeCapture does not explicitly define any other props. But checkout the components template:

html
<template>
+  <input
+    @change="onChangeInput"
+    type="file"
+    name="image"
+    accept="image/*"
+    capture="environment"
+    multiple
+  />
+</template>

Because the input element is the root element of the component and because Vue components accept fallthrough attributes you can make use of any valid input attribute:

html
<qrcode-capture disabled />

You can also override attributes. To remove attributes, set them to null:

html
<qrcode-capture :capture="null" />

Slots

no slots

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/api/QrcodeDropZone.html b/pr-preview/pr-449/api/QrcodeDropZone.html new file mode 100644 index 00000000..da7ee9e8 --- /dev/null +++ b/pr-preview/pr-449/api/QrcodeDropZone.html @@ -0,0 +1,56 @@ + + + + + + QrcodeDropZone | Vue Qrcode Reader + + + + + + + + + + + + + + + + +
Skip to content

QrcodeDropZone

Browser Support

The newest API this component depend on is the FileReader API. Vue Native is not supported (see #206).

Internet ExplorerEdgeFirefoxChromeSafari
10+YesYesYesYes

Events

detect

  • Payload Type: DetectedBarcode[]

You can drag-and-drop image files from your desktop or images embedded into other web pages anywhere in the area the component occupies. The images are directly scanned and positive results are indicated by the detect event. You can also drop multiple images at the same time (still one event per image though). If no QR code can be recognized an empty array is emitted.

The structure of the event payload is the same as for the detect event on QrcodeStream.

error new in v5.0.0

Error events are emitted when a dropped url can't be fetched due to CORS or a dropped file has an unsupported file type.

html
<qrcode-drop-zone @detect="onDetect">
+  <!-- ... -->
+</qrcode-drop-zone>
javascript
methods: {
+  onError (error) {
+    if (error.name === 'DropImageFetchError') {
+      // drag-and-dropped URL (probably just an <img> element) from different
+      // domain without CORS header caused same-origin-policy violation
+    } else if (error.name === 'DropImageDecodeError') {
+      // drag-and-dropped file is not of type image and can't be decoded
+    } else {
+      // idk, open an issue ¯\_(ツ)_/¯
+    }
+  }
+}

formats since v5.3.0

  • Payload Type: BarcodeDetectorOptions['formats']
  • Default: ['qr_code']

The formats prop defines which barcode formats are detected. Supported Formats.

html
<qrcode-drop-zone :formats="['qr_code', 'code_128']"></qrcode-drop-zone>

dragover

  • Payload Type: Boolean

When the user is dragging something over the the component you might want to apply some emphasizing styling. Do that by reacting to the dragover event.

html
<qrcode-drop-zone @dragover="onDragOver">
+  <div :class="{ highlight: draggingOver }">
+    <!-- ... -->
+  </div>
+</qrcode-drop-zone>
javascript
data () {
+  return {
+    draggingOver: false
+  }
+},
+
+methods: {
+  onDragOver (draggingOver) {
+    this.draggingOver = draggingOver
+  }
+}

WARNING

This is a custom event not to be confused with native dragover. If you really need to listen for the DOM event instead, use Vues native event modifier.

decode removed in v5.0.0

Use detect instead.

docs for v4.0.0

Props

no props

Slots

default

This component merely renders a wrapper div. Its height is defined by the content inside so it will have zero height if you don't provide any content.

html
<qrcode-drop-zone>
+  <b>put anything here</b>
+</qrcode-drop-zone>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/api/QrcodeStream.html b/pr-preview/pr-449/api/QrcodeStream.html new file mode 100644 index 00000000..59704b44 --- /dev/null +++ b/pr-preview/pr-449/api/QrcodeStream.html @@ -0,0 +1,126 @@ + + + + + + QrcodeStream | Vue Qrcode Reader + + + + + + + + + + + + + + + + +
Skip to content

QrcodeStream

Browser Support

This component fundamentally depends on the Stream API. Vue Native is not supported (see #206).

Internet ExplorerEdgeFirefoxChromeSafari
NoYesYesYes¹Yes²
  1. Chrome requires HTTPS or localhost (see Troubleshooting for help)
  2. Safari also requires HTTPS even on localhost (see #48). Support is limited for:
    • web apps added to home screen (PWA mode): at least iOS 13.4 (see #76)
    • iOS browsers other than Safari (Chrome for iOS, Firefox for iOS, ...): at least iOS 14.3 (see #29)
    • WkWebView component in native iOS apps: at least iOS 14.3 (see #29)

Events

detect

  • Payload Type: DetectedBarcode[]

Once a stream from the users camera is loaded, it's displayed and continuously scanned for QR codes. Results are indicated by the detect event.

html
<qrcode-stream @detect="onDetect"></qrcode-stream>
javascript
methods: {
+  onDetect (detectedCodes) {
+    // ...
+  }
+}

The payload is an array of one or multiple detected codes (only QR codes supported at the moment). The structure of the array items is accroding to the Barcode Detection API spec. Here is an example:

json
[
+  {
+    "boundingBox": {
+      "x": 82,
+      "y": 70,
+      "width": 178,
+      "height": 188,
+      "top": 70,
+      "right": 260,
+      "bottom": 258,
+      "left": 82
+    },
+    "rawValue": "https://wikipedia.org",
+    "format": "qr_code",
+    "cornerPoints": [
+      { "x": 82, "y": 91 },
+      { "x": 244, "y": 70 },
+      { "x": 260, "y": 240 },
+      { "x": 94, "y": 258 }
+    ]
+  },
+  {
+    "boundingBox": {
+      "x": 322,
+      "y": 135,
+      "width": 244,
+      "height": 240,
+      "top": 135,
+      "right": 566,
+      "bottom": 375,
+      "left": 322
+    },
+    "rawValue": "Hello, world!",
+    "format": "qr_code",
+    "cornerPoints": [
+      { "x": 322, "y": 160 },
+      { "x": 542, "y": 135 },
+      { "x": 566, "y": 359 },
+      { "x": 342, "y": 375 }
+    ]
+  }
+]

TIP

If you scan the same QR code multiple times in a row, detect is still only emitted once. When you hold a QR code in the camera, frames are actually decoded multiple times a second but you don't want to be flooded with detect events that often. That's why the last decoded QR code is always cached and only new results are propagated. However changing the value of paused resets this internal cache.

formats since v5.3.0

  • Payload Type: BarcodeDetectorOptions['formats']
  • Default: ['qr_code']

The formats prop defines which barcode formats are detected. Supported Formats.

html
<qrcode-stream :formats="['qr_code', 'code_128']"></qrcode-stream>

camera-on since v5.0.0

  • Payload Type: Promise<MediaTrackCapabilities>

It might take a while before the component is ready and the scanning process starts. The user has to be asked for camera access permission first and the camera stream has to be loaded.

If you want to show a loading indicator, you can listen for the camera-on event. It's emitted as soon as the camera start streaming.

It carries a promise which resolves with the cameras MediaTrackCapabilities when everything is ready.

html
<qrcode-stream @camera-on="onReady"></qrcode-stream>
javascript
methods: {
+  onReady(capabilities) {
+    // hide loading indicator
+  }
+}

WARNING

In Chrome you can't prompt users for permissions a second time. Once denied, users can only manually grant them. Make sure your users understand why you need access to their camera before you mount this component. Otherwise they might panic and deny and then get frustrated because they don't know how to change their decision.

camera-off since v5.0.0

  • Payload Type: void

Emitted whenever the camera is turned off. This happens whenever the camera constraints are modified and the camera has to be restarted or a different camera is started. For example when switching between front and rear camera.

error since v5.0.0

  • Payload Type: Error

Error events are emitted in particular when camera initialization fails. This can happen a couple of reasons.

html
<qrcode-stream @error="onError"></qrcode-stream>
javascript
methods: {
+  onError(error) {
+    if (error.name === 'NotAllowedError') {
+      // user denied camera access permission
+    } else if (error.name === 'NotFoundError') {
+      // no suitable camera device installed
+    } else if (error.name === 'NotSupportedError') {
+      // page is not served over HTTPS (or localhost)
+    } else if (error.name === 'NotReadableError') {
+      // maybe camera is already in use
+    } else if (error.name === 'OverconstrainedError') {
+      // did you request the front camera although there is none?
+    } else if (error.name === 'StreamApiNotSupportedError') {
+      // browser seems to be lacking features
+    }
+  }
+}

decode removed in v5.0.0

Use detect instead.

docs for v4.0.0

init removed in v5.0.0

Use camera-on/error instead.

docs for v4.0.0

camera removed in v5.0.0

Use constraints instead.

docs for v4.0.0

Props

paused since v5.0.0

  • Input Type: Boolean
  • Default: false

Setting this prop to true freezes the camera. Useful if you want to show some microinteraction after successful scans. When you unpause the camera is restarted so the camera-on event is emitted again.

track

  • Input Type: Function
  • Default: undefined

You can visually highlight detected QR codes in real-time. A transparent canvas overlays the camera stream. When a QR code is detected, its location is painted to the canvas.

To enable this feature, pass a function to track that defines how this should look like. This function is called to produce each frame. It receives the location object as the first argument and a CanvasRenderingContext2D instance as the second argument.

For example check out this demo.

Note that this scanning frequency has to be increased. So if you want to go easy on your target device you might not want to enable tracking.

DANGER

Avoid access to reactive properties in this function (like stuff in data, computed or your Vuex store). The function is called several times a second and might cause memory leaks. To be safe don't access this at all.

constraints

  • Input Type: MediaTrackConstraints
  • Default: { facingMode: "environment" }

With this prop you can pass an object with various camera configuration options. For example whether to use front- or rear camera.

The object must be of type MediaTrackConstriants.

The object is passed as-is to getUserMedia, which is the API call for requesting a camera stream:

js
navigator.mediaDevices.getUserMedia({
+  audio: false,
+  video: the_constraint_object_you_provide
+})

Every time the prop is modified, a new camera stream is requested so the camera-on event is emitted again. You can catch errors with the error event. An error can occur for example when you try to use the front camera on a device that doesn't have one.

html
<qrcode-stream
+  :constraints="{ facingMode }"
+  @error="onError"
+></qrcode-stream>
js
data () {
+  return {
+    facingMode: 'environment'
+  }
+},
+
+methods: {
+  startFrontCamera () {
+    this.facingMode = 'user'
+  },
+
+  onError (error) {
+    const cameraMissingError = error.name === 'OverconstrainedError'
+    const triedFrontCamera = this.facingMode === 'user'
+
+    if (triedFrontCamera && cameraMissingError) {
+      // no front camera on this device
+    }
+  }
+}

torch

  • Input Type: Boolean
  • Default: false

With the torch prop you can turn a devices flashlight on/off. This is not consistently supported by all devices and browsers. Support can even vary on the same device with the same browser. For example the rear camera often has a flashlight but the front camera doesn't. We can only tell if flashlight control is supported once the camera is loaded and the camera-on event has been emitted. At the moment, torch silently fails on unsupported devices. But from the camera-on events payload you can access the MediaTrackCapabilities object. This will tell you whether or not torch is supported.

Due to API limitations the camera stream must be reloaded when turning the torch on/off. That means the camera-on event will be emitted again.

html
<qrcode-stream
+  :torch="true"
+  @camera-on="onInit"
+></qrcode-stream>
js
methods: {
+  onInit (capabilities) {
+    const TORCH_IS_SUPPORTED = !!capabilities.torch
+  }
+}

Slots

default

Any distributed content overlays the camera stream, wrapped in a position: absolute container.

html
<qrcode-stream>
+  <b>stuff here overlays the camera stream</b>
+</qrcode-stream>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/assets/api_QrcodeCapture.md.BVomH-fp.js b/pr-preview/pr-449/assets/api_QrcodeCapture.md.BVomH-fp.js new file mode 100644 index 00000000..d5fdde61 --- /dev/null +++ b/pr-preview/pr-449/assets/api_QrcodeCapture.md.BVomH-fp.js @@ -0,0 +1,10 @@ +import{_ as n,a as l,b as o,c as r,d as h}from"./chunks/safari_32x32.Bkuv9jEj.js";import{_ as p,D as d,c,k as e,a as t,I as a,R as i,o as k}from"./chunks/framework.BtL3uYYi.js";const I=JSON.parse('{"title":"QrcodeCapture","description":"","frontmatter":{},"headers":[],"relativePath":"api/QrcodeCapture.md","filePath":"api/QrcodeCapture.md","lastUpdated":1708022193000}'),u={name:"api/QrcodeCapture.md"},g=i('

QrcodeCapture

Browser Support

The newest API this component depend on is the FileReader API. Vue Native is not supported (see #206).

Internet ExplorerEdgeFirefoxChromeSafari
10+YesYesYesYes¹
  1. It doesn't work in web apps added to home screen (PWA mode) on iOS prior to 11.3 (see this StackOverflow question)

Events

detect

The component renders to a simple file picker input element. Clicking opens a file dialog. On supporting mobile devices the camera is started to take a picture. The selected images are directly scanned and positive results are indicated by the detect event. You can also select multiple images at the same time (still one event per image though). If no QR code can be recognized an empty array is emitted.

The structure of the event payload is the same as for the detect event on QrcodeStream.

',10),m={id:"decode",tabindex:"-1"},E=e("code",null,"decode",-1),y=e("a",{class:"header-anchor",href:"#decode","aria-label":'Permalink to "`decode` "'},"​",-1),_=e("p",null,[t("Use "),e("code",null,"detect"),t(" instead. TODO: link old docs.")],-1),b=e("h2",{id:"props",tabindex:"-1"},[t("Props "),e("a",{class:"header-anchor",href:"#props","aria-label":'Permalink to "Props"'},"​")],-1),f={id:"formats",tabindex:"-1"},v=e("code",null,"formats",-1),F=e("a",{class:"header-anchor",href:"#formats","aria-label":'Permalink to "`formats` "'},"​",-1),C=i(`
  • Payload Type: BarcodeDetectorOptions['formats']
  • Default: ['qr_code']

The formats prop defines which barcode formats are detected. Supported Formats.

html
<qrcode-capture :formats="['qr_code', 'code_128']"></qrcode-capture>

disabled, capture, multiple, ...

Technically, QrcodeCapture does not explicitly define any other props. But checkout the components template:

html
<template>
+  <input
+    @change="onChangeInput"
+    type="file"
+    name="image"
+    accept="image/*"
+    capture="environment"
+    multiple
+  />
+</template>

Because the input element is the root element of the component and because Vue components accept fallthrough attributes you can make use of any valid input attribute:

html
<qrcode-capture disabled />

You can also override attributes. To remove attributes, set them to null:

html
<qrcode-capture :capture="null" />

Slots

no slots

`,12);function q(x,B,T,P,S,A){const s=d("Badge");return k(),c("div",null,[g,e("h3",m,[E,t(),a(s,{text:"removed in v5.0.0",type:"danger"}),t(),y]),_,b,e("h3",f,[v,t(),a(s,{text:"since v5.3.0",type:"info"}),t(),F]),C])}const Q=p(u,[["render",q]]);export{I as __pageData,Q as default}; diff --git a/pr-preview/pr-449/assets/api_QrcodeCapture.md.BVomH-fp.lean.js b/pr-preview/pr-449/assets/api_QrcodeCapture.md.BVomH-fp.lean.js new file mode 100644 index 00000000..e476eab1 --- /dev/null +++ b/pr-preview/pr-449/assets/api_QrcodeCapture.md.BVomH-fp.lean.js @@ -0,0 +1 @@ +import{_ as n,a as l,b as o,c as r,d as h}from"./chunks/safari_32x32.Bkuv9jEj.js";import{_ as p,D as d,c,k as e,a as t,I as a,R as i,o as k}from"./chunks/framework.BtL3uYYi.js";const I=JSON.parse('{"title":"QrcodeCapture","description":"","frontmatter":{},"headers":[],"relativePath":"api/QrcodeCapture.md","filePath":"api/QrcodeCapture.md","lastUpdated":1708022193000}'),u={name:"api/QrcodeCapture.md"},g=i("",10),m={id:"decode",tabindex:"-1"},E=e("code",null,"decode",-1),y=e("a",{class:"header-anchor",href:"#decode","aria-label":'Permalink to "`decode` "'},"​",-1),_=e("p",null,[t("Use "),e("code",null,"detect"),t(" instead. TODO: link old docs.")],-1),b=e("h2",{id:"props",tabindex:"-1"},[t("Props "),e("a",{class:"header-anchor",href:"#props","aria-label":'Permalink to "Props"'},"​")],-1),f={id:"formats",tabindex:"-1"},v=e("code",null,"formats",-1),F=e("a",{class:"header-anchor",href:"#formats","aria-label":'Permalink to "`formats` "'},"​",-1),C=i("",12);function q(x,B,T,P,S,A){const s=d("Badge");return k(),c("div",null,[g,e("h3",m,[E,t(),a(s,{text:"removed in v5.0.0",type:"danger"}),t(),y]),_,b,e("h3",f,[v,t(),a(s,{text:"since v5.3.0",type:"info"}),t(),F]),C])}const Q=p(u,[["render",q]]);export{I as __pageData,Q as default}; diff --git a/pr-preview/pr-449/assets/api_QrcodeDropZone.md.CqxuZhVd.js b/pr-preview/pr-449/assets/api_QrcodeDropZone.md.CqxuZhVd.js new file mode 100644 index 00000000..e8ff0bbb --- /dev/null +++ b/pr-preview/pr-449/assets/api_QrcodeDropZone.md.CqxuZhVd.js @@ -0,0 +1,30 @@ +import{_ as n,a as l,b as r,c as h,d as p}from"./chunks/safari_32x32.Bkuv9jEj.js";import{_ as o,D as d,c as k,k as s,a as e,I as t,R as a,o as c}from"./chunks/framework.BtL3uYYi.js";const N=JSON.parse('{"title":"QrcodeDropZone","description":"","frontmatter":{},"headers":[],"relativePath":"api/QrcodeDropZone.md","filePath":"api/QrcodeDropZone.md","lastUpdated":1703524587000}'),g={name:"api/QrcodeDropZone.md"},E=a('

QrcodeDropZone

Browser Support

The newest API this component depend on is the FileReader API. Vue Native is not supported (see #206).

Internet ExplorerEdgeFirefoxChromeSafari
10+YesYesYesYes

Events

detect

  • Payload Type: DetectedBarcode[]

You can drag-and-drop image files from your desktop or images embedded into other web pages anywhere in the area the component occupies. The images are directly scanned and positive results are indicated by the detect event. You can also drop multiple images at the same time (still one event per image though). If no QR code can be recognized an empty array is emitted.

The structure of the event payload is the same as for the detect event on QrcodeStream.

',9),y={id:"error",tabindex:"-1"},u=s("code",null,"error",-1),m=s("a",{class:"header-anchor",href:"#error","aria-label":'Permalink to "`error` "'},"​",-1),_=a(`

Error events are emitted when a dropped url can't be fetched due to CORS or a dropped file has an unsupported file type.

html
<qrcode-drop-zone @detect="onDetect">
+  <!-- ... -->
+</qrcode-drop-zone>
javascript
methods: {
+  onError (error) {
+    if (error.name === 'DropImageFetchError') {
+      // drag-and-dropped URL (probably just an <img> element) from different
+      // domain without CORS header caused same-origin-policy violation
+    } else if (error.name === 'DropImageDecodeError') {
+      // drag-and-dropped file is not of type image and can't be decoded
+    } else {
+      // idk, open an issue ¯\\_(ツ)_/¯
+    }
+  }
+}
`,3),v={id:"formats",tabindex:"-1"},b=s("code",null,"formats",-1),f=s("a",{class:"header-anchor",href:"#formats","aria-label":'Permalink to "`formats` "'},"​",-1),D=a(`
  • Payload Type: BarcodeDetectorOptions['formats']
  • Default: ['qr_code']

The formats prop defines which barcode formats are detected. Supported Formats.

html
<qrcode-drop-zone :formats="['qr_code', 'code_128']"></qrcode-drop-zone>

dragover

  • Payload Type: Boolean

When the user is dragging something over the the component you might want to apply some emphasizing styling. Do that by reacting to the dragover event.

html
<qrcode-drop-zone @dragover="onDragOver">
+  <div :class="{ highlight: draggingOver }">
+    <!-- ... -->
+  </div>
+</qrcode-drop-zone>
javascript
data () {
+  return {
+    draggingOver: false
+  }
+},
+
+methods: {
+  onDragOver (draggingOver) {
+    this.draggingOver = draggingOver
+  }
+}

WARNING

This is a custom event not to be confused with native dragover. If you really need to listen for the DOM event instead, use Vues native event modifier.

`,9),F={id:"decode",tabindex:"-1"},A=s("code",null,"decode",-1),C=s("a",{class:"header-anchor",href:"#decode","aria-label":'Permalink to "`decode` "'},"​",-1),q=a(`

Use detect instead.

docs for v4.0.0

Props

no props

Slots

default

This component merely renders a wrapper div. Its height is defined by the content inside so it will have zero height if you don't provide any content.

html
<qrcode-drop-zone>
+  <b>put anything here</b>
+</qrcode-drop-zone>
`,8);function T(x,B,P,S,I,w){const i=d("Badge");return c(),k("div",null,[E,s("h3",y,[u,e(),t(i,{text:"new in v5.0.0",type:"info"}),e(),m]),_,s("h3",v,[b,e(),t(i,{text:"since v5.3.0",type:"info"}),e(),f]),D,s("h3",F,[A,e(),t(i,{text:"removed in v5.0.0",type:"danger"}),e(),C]),q])}const O=o(g,[["render",T]]);export{N as __pageData,O as default}; diff --git a/pr-preview/pr-449/assets/api_QrcodeDropZone.md.CqxuZhVd.lean.js b/pr-preview/pr-449/assets/api_QrcodeDropZone.md.CqxuZhVd.lean.js new file mode 100644 index 00000000..a712bf83 --- /dev/null +++ b/pr-preview/pr-449/assets/api_QrcodeDropZone.md.CqxuZhVd.lean.js @@ -0,0 +1 @@ +import{_ as n,a as l,b as r,c as h,d as p}from"./chunks/safari_32x32.Bkuv9jEj.js";import{_ as o,D as d,c as k,k as s,a as e,I as t,R as a,o as c}from"./chunks/framework.BtL3uYYi.js";const N=JSON.parse('{"title":"QrcodeDropZone","description":"","frontmatter":{},"headers":[],"relativePath":"api/QrcodeDropZone.md","filePath":"api/QrcodeDropZone.md","lastUpdated":1703524587000}'),g={name:"api/QrcodeDropZone.md"},E=a("",9),y={id:"error",tabindex:"-1"},u=s("code",null,"error",-1),m=s("a",{class:"header-anchor",href:"#error","aria-label":'Permalink to "`error` "'},"​",-1),_=a("",3),v={id:"formats",tabindex:"-1"},b=s("code",null,"formats",-1),f=s("a",{class:"header-anchor",href:"#formats","aria-label":'Permalink to "`formats` "'},"​",-1),D=a("",9),F={id:"decode",tabindex:"-1"},A=s("code",null,"decode",-1),C=s("a",{class:"header-anchor",href:"#decode","aria-label":'Permalink to "`decode` "'},"​",-1),q=a("",8);function T(x,B,P,S,I,w){const i=d("Badge");return c(),k("div",null,[E,s("h3",y,[u,e(),t(i,{text:"new in v5.0.0",type:"info"}),e(),m]),_,s("h3",v,[b,e(),t(i,{text:"since v5.3.0",type:"info"}),e(),f]),D,s("h3",F,[A,e(),t(i,{text:"removed in v5.0.0",type:"danger"}),e(),C]),q])}const O=o(g,[["render",T]]);export{N as __pageData,O as default}; diff --git a/pr-preview/pr-449/assets/api_QrcodeStream.md.CGQgF4oK.js b/pr-preview/pr-449/assets/api_QrcodeStream.md.CGQgF4oK.js new file mode 100644 index 00000000..789e51b2 --- /dev/null +++ b/pr-preview/pr-449/assets/api_QrcodeStream.md.CGQgF4oK.js @@ -0,0 +1,100 @@ +import{_ as n,a as h,b as l,c as p,d as r}from"./chunks/safari_32x32.Bkuv9jEj.js";import{_ as k,D as o,c as d,k as s,a as i,I as e,R as t,o as c}from"./chunks/framework.BtL3uYYi.js";const ps=JSON.parse('{"title":"QrcodeStream","description":"","frontmatter":{},"headers":[],"relativePath":"api/QrcodeStream.md","filePath":"api/QrcodeStream.md","lastUpdated":1707952687000}'),E={name:"api/QrcodeStream.md"},g=t('

QrcodeStream

Browser Support

This component fundamentally depends on the Stream API. Vue Native is not supported (see #206).

Internet ExplorerEdgeFirefoxChromeSafari
NoYesYesYes¹Yes²
  1. Chrome requires HTTPS or localhost (see Troubleshooting for help)
  2. Safari also requires HTTPS even on localhost (see #48). Support is limited for:
    • web apps added to home screen (PWA mode): at least iOS 13.4 (see #76)
    • iOS browsers other than Safari (Chrome for iOS, Firefox for iOS, ...): at least iOS 14.3 (see #29)
    • WkWebView component in native iOS apps: at least iOS 14.3 (see #29)

Events

detect

  • Payload Type: DetectedBarcode[]

Once a stream from the users camera is loaded, it's displayed and continuously scanned for QR codes. Results are indicated by the detect event.

html
<qrcode-stream @detect="onDetect"></qrcode-stream>
javascript
methods: {
+  onDetect (detectedCodes) {
+    // ...
+  }
+}

The payload is an array of one or multiple detected codes (only QR codes supported at the moment). The structure of the array items is accroding to the Barcode Detection API spec. Here is an example:

json
[
+  {
+    "boundingBox": {
+      "x": 82,
+      "y": 70,
+      "width": 178,
+      "height": 188,
+      "top": 70,
+      "right": 260,
+      "bottom": 258,
+      "left": 82
+    },
+    "rawValue": "https://wikipedia.org",
+    "format": "qr_code",
+    "cornerPoints": [
+      { "x": 82, "y": 91 },
+      { "x": 244, "y": 70 },
+      { "x": 260, "y": 240 },
+      { "x": 94, "y": 258 }
+    ]
+  },
+  {
+    "boundingBox": {
+      "x": 322,
+      "y": 135,
+      "width": 244,
+      "height": 240,
+      "top": 135,
+      "right": 566,
+      "bottom": 375,
+      "left": 322
+    },
+    "rawValue": "Hello, world!",
+    "format": "qr_code",
+    "cornerPoints": [
+      { "x": 322, "y": 160 },
+      { "x": 542, "y": 135 },
+      { "x": 566, "y": 359 },
+      { "x": 342, "y": 375 }
+    ]
+  }
+]

TIP

If you scan the same QR code multiple times in a row, detect is still only emitted once. When you hold a QR code in the camera, frames are actually decoded multiple times a second but you don't want to be flooded with detect events that often. That's why the last decoded QR code is always cached and only new results are propagated. However changing the value of paused resets this internal cache.

`,14),y={id:"formats",tabindex:"-1"},u=s("code",null,"formats",-1),m=s("a",{class:"header-anchor",href:"#formats","aria-label":'Permalink to "`formats` "'},"​",-1),F=t('
  • Payload Type: BarcodeDetectorOptions['formats']
  • Default: ['qr_code']

The formats prop defines which barcode formats are detected. Supported Formats.

html
<qrcode-stream :formats="['qr_code', 'code_128']"></qrcode-stream>
',3),C={id:"camera-on",tabindex:"-1"},f=s("code",null,"camera-on",-1),b=s("a",{class:"header-anchor",href:"#camera-on","aria-label":'Permalink to "`camera-on` "'},"​",-1),_=t(`
  • Payload Type: Promise<MediaTrackCapabilities>

It might take a while before the component is ready and the scanning process starts. The user has to be asked for camera access permission first and the camera stream has to be loaded.

If you want to show a loading indicator, you can listen for the camera-on event. It's emitted as soon as the camera start streaming.

It carries a promise which resolves with the cameras MediaTrackCapabilities when everything is ready.

html
<qrcode-stream @camera-on="onReady"></qrcode-stream>
javascript
methods: {
+  onReady(capabilities) {
+    // hide loading indicator
+  }
+}

WARNING

In Chrome you can't prompt users for permissions a second time. Once denied, users can only manually grant them. Make sure your users understand why you need access to their camera before you mount this component. Otherwise they might panic and deny and then get frustrated because they don't know how to change their decision.

`,7),v={id:"camera-off",tabindex:"-1"},q=s("code",null,"camera-off",-1),B=s("a",{class:"header-anchor",href:"#camera-off","aria-label":'Permalink to "`camera-off` "'},"​",-1),A=s("ul",null,[s("li",null,[s("strong",null,"Payload Type:"),i(),s("code",null,"void")])],-1),D=s("p",null,"Emitted whenever the camera is turned off. This happens whenever the camera constraints are modified and the camera has to be restarted or a different camera is started. For example when switching between front and rear camera.",-1),T={id:"error",tabindex:"-1"},x=s("code",null,"error",-1),w=s("a",{class:"header-anchor",href:"#error","aria-label":'Permalink to "`error` "'},"​",-1),S=t(`
  • Payload Type: Error

Error events are emitted in particular when camera initialization fails. This can happen a couple of reasons.

html
<qrcode-stream @error="onError"></qrcode-stream>
javascript
methods: {
+  onError(error) {
+    if (error.name === 'NotAllowedError') {
+      // user denied camera access permission
+    } else if (error.name === 'NotFoundError') {
+      // no suitable camera device installed
+    } else if (error.name === 'NotSupportedError') {
+      // page is not served over HTTPS (or localhost)
+    } else if (error.name === 'NotReadableError') {
+      // maybe camera is already in use
+    } else if (error.name === 'OverconstrainedError') {
+      // did you request the front camera although there is none?
+    } else if (error.name === 'StreamApiNotSupportedError') {
+      // browser seems to be lacking features
+    }
+  }
+}
`,4),P={id:"decode",tabindex:"-1"},I=s("code",null,"decode",-1),R=s("a",{class:"header-anchor",href:"#decode","aria-label":'Permalink to "`decode` "'},"​",-1),N=s("p",null,[i("Use "),s("code",null,"detect"),i(" instead.")],-1),j=s("p",null,[s("a",{href:"https://github.com/gruhn/vue-qrcode-reader/blob/781484fccd186e8e30c6191f85beec3bd174ef59/docs/api/QrcodeStream.md",target:"_blank",rel:"noreferrer"},"docs for v4.0.0")],-1),M={id:"init",tabindex:"-1"},V=s("code",null,"init",-1),Q=s("a",{class:"header-anchor",href:"#init","aria-label":'Permalink to "`init` "'},"​",-1),O=s("p",null,[i("Use "),s("code",null,"camera-on"),i("/"),s("code",null,"error"),i(" instead.")],-1),W=s("p",null,[s("a",{href:"https://github.com/gruhn/vue-qrcode-reader/blob/781484fccd186e8e30c6191f85beec3bd174ef59/docs/api/QrcodeStream.md",target:"_blank",rel:"noreferrer"},"docs for v4.0.0")],-1),U={id:"camera",tabindex:"-1"},H=s("code",null,"camera",-1),Y=s("a",{class:"header-anchor",href:"#camera","aria-label":'Permalink to "`camera` "'},"​",-1),z=s("p",null,[i("Use "),s("code",null,"constraints"),i(" instead.")],-1),$=s("p",null,[s("a",{href:"https://github.com/gruhn/vue-qrcode-reader/blob/781484fccd186e8e30c6191f85beec3bd174ef59/docs/api/QrcodeStream.md",target:"_blank",rel:"noreferrer"},"docs for v4.0.0")],-1),G=s("h2",{id:"props",tabindex:"-1"},[i("Props "),s("a",{class:"header-anchor",href:"#props","aria-label":'Permalink to "Props"'},"​")],-1),J={id:"paused",tabindex:"-1"},K=s("code",null,"paused",-1),L=s("a",{class:"header-anchor",href:"#paused","aria-label":'Permalink to "`paused` "'},"​",-1),X=t(`
  • Input Type: Boolean
  • Default: false

Setting this prop to true freezes the camera. Useful if you want to show some microinteraction after successful scans. When you unpause the camera is restarted so the camera-on event is emitted again.

track

  • Input Type: Function
  • Default: undefined

You can visually highlight detected QR codes in real-time. A transparent canvas overlays the camera stream. When a QR code is detected, its location is painted to the canvas.

To enable this feature, pass a function to track that defines how this should look like. This function is called to produce each frame. It receives the location object as the first argument and a CanvasRenderingContext2D instance as the second argument.

For example check out this demo.

Note that this scanning frequency has to be increased. So if you want to go easy on your target device you might not want to enable tracking.

DANGER

Avoid access to reactive properties in this function (like stuff in data, computed or your Vuex store). The function is called several times a second and might cause memory leaks. To be safe don't access this at all.

constraints

  • Input Type: MediaTrackConstraints
  • Default: { facingMode: "environment" }

With this prop you can pass an object with various camera configuration options. For example whether to use front- or rear camera.

The object must be of type MediaTrackConstriants.

The object is passed as-is to getUserMedia, which is the API call for requesting a camera stream:

js
navigator.mediaDevices.getUserMedia({
+  audio: false,
+  video: the_constraint_object_you_provide
+})

Every time the prop is modified, a new camera stream is requested so the camera-on event is emitted again. You can catch errors with the error event. An error can occur for example when you try to use the front camera on a device that doesn't have one.

html
<qrcode-stream
+  :constraints="{ facingMode }"
+  @error="onError"
+></qrcode-stream>
js
data () {
+  return {
+    facingMode: 'environment'
+  }
+},
+
+methods: {
+  startFrontCamera () {
+    this.facingMode = 'user'
+  },
+
+  onError (error) {
+    const cameraMissingError = error.name === 'OverconstrainedError'
+    const triedFrontCamera = this.facingMode === 'user'
+
+    if (triedFrontCamera && cameraMissingError) {
+      // no front camera on this device
+    }
+  }
+}

torch

  • Input Type: Boolean
  • Default: false

With the torch prop you can turn a devices flashlight on/off. This is not consistently supported by all devices and browsers. Support can even vary on the same device with the same browser. For example the rear camera often has a flashlight but the front camera doesn't. We can only tell if flashlight control is supported once the camera is loaded and the camera-on event has been emitted. At the moment, torch silently fails on unsupported devices. But from the camera-on events payload you can access the MediaTrackCapabilities object. This will tell you whether or not torch is supported.

Due to API limitations the camera stream must be reloaded when turning the torch on/off. That means the camera-on event will be emitted again.

html
<qrcode-stream
+  :torch="true"
+  @camera-on="onInit"
+></qrcode-stream>
js
methods: {
+  onInit (capabilities) {
+    const TORCH_IS_SUPPORTED = !!capabilities.torch
+  }
+}

Slots

default

Any distributed content overlays the camera stream, wrapped in a position: absolute container.

html
<qrcode-stream>
+  <b>stuff here overlays the camera stream</b>
+</qrcode-stream>
`,28);function Z(ss,is,as,es,ts,ns){const a=o("Badge");return c(),d("div",null,[g,s("h3",y,[u,i(),e(a,{text:"since v5.3.0",type:"info"}),i(),m]),F,s("h3",C,[f,i(),e(a,{text:"since v5.0.0",type:"info"}),i(),b]),_,s("h3",v,[q,i(),e(a,{text:"since v5.0.0",type:"info"}),i(),B]),A,D,s("h3",T,[x,i(),e(a,{text:"since v5.0.0",type:"info"}),i(),w]),S,s("h3",P,[I,i(),e(a,{text:"removed in v5.0.0",type:"danger"}),i(),R]),N,j,s("h3",M,[V,i(),e(a,{text:"removed in v5.0.0",type:"danger"}),i(),Q]),O,W,s("h3",U,[H,i(),e(a,{text:"removed in v5.0.0",type:"danger"}),i(),Y]),z,$,G,s("h3",J,[K,i(),e(a,{text:"since v5.0.0",type:"info"}),i(),L]),X])}const rs=k(E,[["render",Z]]);export{ps as __pageData,rs as default}; diff --git a/pr-preview/pr-449/assets/api_QrcodeStream.md.CGQgF4oK.lean.js b/pr-preview/pr-449/assets/api_QrcodeStream.md.CGQgF4oK.lean.js new file mode 100644 index 00000000..d4947648 --- /dev/null +++ b/pr-preview/pr-449/assets/api_QrcodeStream.md.CGQgF4oK.lean.js @@ -0,0 +1 @@ +import{_ as n,a as h,b as l,c as p,d as r}from"./chunks/safari_32x32.Bkuv9jEj.js";import{_ as k,D as o,c as d,k as s,a as i,I as e,R as t,o as c}from"./chunks/framework.BtL3uYYi.js";const ps=JSON.parse('{"title":"QrcodeStream","description":"","frontmatter":{},"headers":[],"relativePath":"api/QrcodeStream.md","filePath":"api/QrcodeStream.md","lastUpdated":1707952687000}'),E={name:"api/QrcodeStream.md"},g=t("",14),y={id:"formats",tabindex:"-1"},u=s("code",null,"formats",-1),m=s("a",{class:"header-anchor",href:"#formats","aria-label":'Permalink to "`formats` "'},"​",-1),F=t("",3),C={id:"camera-on",tabindex:"-1"},f=s("code",null,"camera-on",-1),b=s("a",{class:"header-anchor",href:"#camera-on","aria-label":'Permalink to "`camera-on` "'},"​",-1),_=t("",7),v={id:"camera-off",tabindex:"-1"},q=s("code",null,"camera-off",-1),B=s("a",{class:"header-anchor",href:"#camera-off","aria-label":'Permalink to "`camera-off` "'},"​",-1),A=s("ul",null,[s("li",null,[s("strong",null,"Payload Type:"),i(),s("code",null,"void")])],-1),D=s("p",null,"Emitted whenever the camera is turned off. This happens whenever the camera constraints are modified and the camera has to be restarted or a different camera is started. For example when switching between front and rear camera.",-1),T={id:"error",tabindex:"-1"},x=s("code",null,"error",-1),w=s("a",{class:"header-anchor",href:"#error","aria-label":'Permalink to "`error` "'},"​",-1),S=t("",4),P={id:"decode",tabindex:"-1"},I=s("code",null,"decode",-1),R=s("a",{class:"header-anchor",href:"#decode","aria-label":'Permalink to "`decode` "'},"​",-1),N=s("p",null,[i("Use "),s("code",null,"detect"),i(" instead.")],-1),j=s("p",null,[s("a",{href:"https://github.com/gruhn/vue-qrcode-reader/blob/781484fccd186e8e30c6191f85beec3bd174ef59/docs/api/QrcodeStream.md",target:"_blank",rel:"noreferrer"},"docs for v4.0.0")],-1),M={id:"init",tabindex:"-1"},V=s("code",null,"init",-1),Q=s("a",{class:"header-anchor",href:"#init","aria-label":'Permalink to "`init` "'},"​",-1),O=s("p",null,[i("Use "),s("code",null,"camera-on"),i("/"),s("code",null,"error"),i(" instead.")],-1),W=s("p",null,[s("a",{href:"https://github.com/gruhn/vue-qrcode-reader/blob/781484fccd186e8e30c6191f85beec3bd174ef59/docs/api/QrcodeStream.md",target:"_blank",rel:"noreferrer"},"docs for v4.0.0")],-1),U={id:"camera",tabindex:"-1"},H=s("code",null,"camera",-1),Y=s("a",{class:"header-anchor",href:"#camera","aria-label":'Permalink to "`camera` "'},"​",-1),z=s("p",null,[i("Use "),s("code",null,"constraints"),i(" instead.")],-1),$=s("p",null,[s("a",{href:"https://github.com/gruhn/vue-qrcode-reader/blob/781484fccd186e8e30c6191f85beec3bd174ef59/docs/api/QrcodeStream.md",target:"_blank",rel:"noreferrer"},"docs for v4.0.0")],-1),G=s("h2",{id:"props",tabindex:"-1"},[i("Props "),s("a",{class:"header-anchor",href:"#props","aria-label":'Permalink to "Props"'},"​")],-1),J={id:"paused",tabindex:"-1"},K=s("code",null,"paused",-1),L=s("a",{class:"header-anchor",href:"#paused","aria-label":'Permalink to "`paused` "'},"​",-1),X=t("",28);function Z(ss,is,as,es,ts,ns){const a=o("Badge");return c(),d("div",null,[g,s("h3",y,[u,i(),e(a,{text:"since v5.3.0",type:"info"}),i(),m]),F,s("h3",C,[f,i(),e(a,{text:"since v5.0.0",type:"info"}),i(),b]),_,s("h3",v,[q,i(),e(a,{text:"since v5.0.0",type:"info"}),i(),B]),A,D,s("h3",T,[x,i(),e(a,{text:"since v5.0.0",type:"info"}),i(),w]),S,s("h3",P,[I,i(),e(a,{text:"removed in v5.0.0",type:"danger"}),i(),R]),N,j,s("h3",M,[V,i(),e(a,{text:"removed in v5.0.0",type:"danger"}),i(),Q]),O,W,s("h3",U,[H,i(),e(a,{text:"removed in v5.0.0",type:"danger"}),i(),Y]),z,$,G,s("h3",J,[K,i(),e(a,{text:"since v5.0.0",type:"info"}),i(),L]),X])}const rs=k(E,[["render",Z]]);export{ps as __pageData,rs as default}; diff --git a/pr-preview/pr-449/assets/app.DzN9cVpk.js b/pr-preview/pr-449/assets/app.DzN9cVpk.js new file mode 100644 index 00000000..8c28fb98 --- /dev/null +++ b/pr-preview/pr-449/assets/app.DzN9cVpk.js @@ -0,0 +1,7 @@ +import{v as s,aa as p,ab as u,ac as c,ad as l,ae as f,af as d,ag as m,ah as h,ai as A,aj as g,Y as v,d as P,u as y,j as C,z as w,ak as _,al as b,am as E,an as R}from"./chunks/framework.BtL3uYYi.js";import{t as j}from"./chunks/theme.C1T0t5Zq.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const o=i(j),D=P({name:"VitePressApp",setup(){const{site:e}=y();return C(()=>{w(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),e.value.router.prefetchLinks&&_(),b(),E(),o.setup&&o.setup(),()=>R(o.Layout)}});async function L(){const e=S(),a=O();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),o.enhanceApp&&await o.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function O(){return h(D)}function S(){let e=s,a;return A(t=>{let n=g(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=v(()=>import(n),__vite__mapDeps([]))),s&&(e=!1),r},o.NotFound)}s&&L().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{L as createApp}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} \ No newline at end of file diff --git a/pr-preview/pr-449/assets/chunks/@localSearchIndexroot.BQqEPrZR.js b/pr-preview/pr-449/assets/chunks/@localSearchIndexroot.BQqEPrZR.js new file mode 100644 index 00000000..d47eb155 --- /dev/null +++ b/pr-preview/pr-449/assets/chunks/@localSearchIndexroot.BQqEPrZR.js @@ -0,0 +1 @@ +const e='{"documentCount":58,"nextId":58,"documentIds":{"0":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeCapture.html#qrcodecapture","1":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeCapture.html#browser-support","2":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeCapture.html#events","3":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeCapture.html#detect","4":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeCapture.html#decode","5":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeCapture.html#props","6":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeCapture.html#formats","7":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeCapture.html#disabled-capture-multiple","8":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeCapture.html#slots","9":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#qrcodedropzone","10":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#browser-support","11":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#events","12":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#detect","13":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#error","14":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#formats","15":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#dragover","16":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#decode","17":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#props","18":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#slots","19":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeDropZone.html#default","20":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#qrcodestream","21":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#browser-support","22":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#events","23":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#detect","24":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#formats","25":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#camera-on","26":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#camera-off","27":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#error","28":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#decode","29":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#init","30":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#camera","31":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#props","32":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#paused","33":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#track","34":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#constraints","35":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#torch","36":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#slots","37":"/vue-qrcode-reader/pr-preview/pr-449/api/QrcodeStream.html#default","38":"/vue-qrcode-reader/pr-preview/pr-449/demos/DragDrop.html#decode-by-drag-drop","39":"/vue-qrcode-reader/pr-preview/pr-449/demos/DragDrop.html#source","40":"/vue-qrcode-reader/pr-preview/pr-449/demos/FullDemo.html#full-demo","41":"/vue-qrcode-reader/pr-preview/pr-449/demos/FullDemo.html#source","42":"/vue-qrcode-reader/pr-preview/pr-449/demos/Fullscreen.html#fullscreen","43":"/vue-qrcode-reader/pr-preview/pr-449/demos/Fullscreen.html#source","44":"/vue-qrcode-reader/pr-preview/pr-449/demos/LoadingIndicator.html#show-loading-indicator","45":"/vue-qrcode-reader/pr-preview/pr-449/demos/LoadingIndicator.html#source","46":"/vue-qrcode-reader/pr-preview/pr-449/demos/ScanSameQrcodeMoreThanOnce.html#scan-same-qr-code-more-than-once","47":"/vue-qrcode-reader/pr-preview/pr-449/demos/ScanSameQrcodeMoreThanOnce.html#source","48":"/vue-qrcode-reader/pr-preview/pr-449/demos/Simple.html#simple","49":"/vue-qrcode-reader/pr-preview/pr-449/demos/Simple.html#source","50":"/vue-qrcode-reader/pr-preview/pr-449/demos/SwitchCamera.html#switch-to-front-camera","51":"/vue-qrcode-reader/pr-preview/pr-449/demos/SwitchCamera.html#source","52":"/vue-qrcode-reader/pr-preview/pr-449/demos/Torch.html#torch-flashlight","53":"/vue-qrcode-reader/pr-preview/pr-449/demos/Torch.html#source","54":"/vue-qrcode-reader/pr-preview/pr-449/demos/Upload.html#decode-by-upload","55":"/vue-qrcode-reader/pr-preview/pr-449/demos/Upload.html#source","56":"/vue-qrcode-reader/pr-preview/pr-449/demos/Validate.html#pause-validate","57":"/vue-qrcode-reader/pr-preview/pr-449/demos/Validate.html#source"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,1],"1":[2,1,39],"2":[1,1,1],"3":[1,2,69],"4":[1,2,8],"5":[1,1,1],"6":[1,2,25],"7":[4,2,60],"8":[1,1,3],"9":[1,1,1],"10":[2,1,19],"11":[1,1,1],"12":[1,2,64],"13":[1,2,67],"14":[1,2,26],"15":[1,2,65],"16":[1,2,8],"17":[1,1,3],"18":[1,1,1],"19":[1,2,36],"20":[1,1,1],"21":[2,1,58],"22":[1,1,1],"23":[1,2,141],"24":[1,2,25],"25":[2,2,105],"26":[2,2,32],"27":[1,2,73],"28":[1,2,8],"29":[1,2,10],"30":[1,2,8],"31":[1,1,1],"32":[1,2,33],"33":[1,2,105],"34":[1,2,101],"35":[1,2,98],"36":[1,1,1],"37":[1,2,21],"38":[5,1,27],"39":[1,6,106],"40":[2,1,1],"41":[1,3,325],"42":[1,1,26],"43":[1,2,148],"44":[3,1,30],"45":[1,4,61],"46":[7,1,67],"47":[1,8,99],"48":[1,1,38],"49":[1,2,154],"50":[4,1,16],"51":[1,5,90],"52":[3,1,43],"53":[1,3,118],"54":[3,1,52],"55":[1,4,67],"56":[3,1,29],"57":[1,4,134]},"averageFieldLength":[1.5172413793103448,1.9310344827586208,50.87931034482759],"storedFields":{"0":{"title":"QrcodeCapture","titles":[]},"1":{"title":"Browser Support","titles":["QrcodeCapture"]},"2":{"title":"Events","titles":["QrcodeCapture"]},"3":{"title":"detect","titles":["QrcodeCapture","Events"]},"4":{"title":"decode","titles":["QrcodeCapture","Events"]},"5":{"title":"Props","titles":["QrcodeCapture"]},"6":{"title":"formats","titles":["QrcodeCapture","Props"]},"7":{"title":"disabled, capture, multiple, ...","titles":["QrcodeCapture","Props"]},"8":{"title":"Slots","titles":["QrcodeCapture"]},"9":{"title":"QrcodeDropZone","titles":[]},"10":{"title":"Browser Support","titles":["QrcodeDropZone"]},"11":{"title":"Events","titles":["QrcodeDropZone"]},"12":{"title":"detect","titles":["QrcodeDropZone","Events"]},"13":{"title":"error","titles":["QrcodeDropZone","Events"]},"14":{"title":"formats","titles":["QrcodeDropZone","Events"]},"15":{"title":"dragover","titles":["QrcodeDropZone","Events"]},"16":{"title":"decode","titles":["QrcodeDropZone","Events"]},"17":{"title":"Props","titles":["QrcodeDropZone"]},"18":{"title":"Slots","titles":["QrcodeDropZone"]},"19":{"title":"default","titles":["QrcodeDropZone","Slots"]},"20":{"title":"QrcodeStream","titles":[]},"21":{"title":"Browser Support","titles":["QrcodeStream"]},"22":{"title":"Events","titles":["QrcodeStream"]},"23":{"title":"detect","titles":["QrcodeStream","Events"]},"24":{"title":"formats","titles":["QrcodeStream","Events"]},"25":{"title":"camera-on","titles":["QrcodeStream","Events"]},"26":{"title":"camera-off","titles":["QrcodeStream","Events"]},"27":{"title":"error","titles":["QrcodeStream","Events"]},"28":{"title":"decode","titles":["QrcodeStream","Events"]},"29":{"title":"init","titles":["QrcodeStream","Events"]},"30":{"title":"camera","titles":["QrcodeStream","Events"]},"31":{"title":"Props","titles":["QrcodeStream"]},"32":{"title":"paused","titles":["QrcodeStream","Props"]},"33":{"title":"track","titles":["QrcodeStream","Props"]},"34":{"title":"constraints","titles":["QrcodeStream","Props"]},"35":{"title":"torch","titles":["QrcodeStream","Props"]},"36":{"title":"Slots","titles":["QrcodeStream"]},"37":{"title":"default","titles":["QrcodeStream","Slots"]},"38":{"title":"Decode by Drag&Drop","titles":[]},"39":{"title":"Source","titles":["Decode by Drag&Drop",null]},"40":{"title":"Full Demo","titles":[]},"41":{"title":"Source","titles":["Full Demo",null]},"42":{"title":"Fullscreen","titles":[]},"43":{"title":"Source","titles":["Fullscreen",null]},"44":{"title":"Show Loading Indicator","titles":[]},"45":{"title":"Source","titles":["Show Loading Indicator",null]},"46":{"title":"Scan Same QR Code More Than Once","titles":[]},"47":{"title":"Source","titles":["Scan Same QR Code More Than Once",null]},"48":{"title":"Simple","titles":[]},"49":{"title":"Source","titles":["Simple",null]},"50":{"title":"Switch to Front Camera","titles":[]},"51":{"title":"Source","titles":["Switch to Front Camera",null]},"52":{"title":"Torch (Flashlight)","titles":[]},"53":{"title":"Source","titles":["Torch (Flashlight)",null]},"54":{"title":"Decode by Upload","titles":[]},"55":{"title":"Source","titles":["Decode by Upload",null]},"56":{"title":"Pause & Validate","titles":[]},"57":{"title":"Source","titles":["Pause & Validate",null]}},"dirtCount":0,"index":[["|",{"2":{"53":1}}],["\\t\\t",{"2":{"49":1}}],["\\t",{"2":{"49":2}}],["8",{"2":{"41":1,"47":1,"49":1,"57":1}}],["82",{"2":{"23":3}}],["$nexttick",{"2":{"45":1}}],["$refs",{"2":{"43":1}}],["$",{"2":{"41":3,"49":1}}],["`requestfullscreen`",{"2":{"43":3}}],["`bold",{"2":{"41":1}}],["`",{"2":{"41":3,"49":2}}],["`$",{"2":{"41":1}}],["`camera",{"2":{"41":1}}],["`qrcodestream`",{"2":{"41":1}}],["`enumeratedevices`",{"2":{"41":1}}],["+=",{"2":{"41":8,"49":8}}],["+",{"2":{"39":1,"41":2}}],["keys",{"2":{"41":2}}],["key=",{"2":{"41":3,"53":1,"55":1}}],["kind",{"2":{"39":1,"41":2,"53":2}}],["know",{"2":{"25":1}}],["green",{"2":{"57":1}}],["grained",{"2":{"41":1}}],["grant",{"2":{"25":1,"41":1,"49":1}}],["global",{"2":{"49":1}}],["guarantee",{"2":{"41":1}}],["given",{"2":{"41":1}}],["g",{"2":{"41":1}}],["go",{"2":{"33":1,"42":1}}],["getusermedia",{"2":{"34":2}}],["get",{"2":{"25":1}}],["gt",{"2":{"25":1}}],["5",{"2":{"49":1}}],["5cb984",{"2":{"41":1}}],["50px",{"2":{"51":2,"53":2}}],["500",{"2":{"47":1}}],["50",{"2":{"41":1}}],["542",{"2":{"23":1}}],["566",{"2":{"23":2}}],["93",{"2":{"41":1}}],["94",{"2":{"23":1}}],["91",{"2":{"23":1}}],["70",{"2":{"23":3}}],["76",{"2":{"21":1}}],["x26",{"2":{"34":2,"51":4,"57":2}}],["x",{"2":{"23":10,"41":7,"49":2}}],["x3c",{"2":{"6":2,"7":5,"13":4,"14":2,"15":5,"19":4,"23":2,"24":2,"25":2,"27":2,"34":2,"35":2,"37":4,"39":18,"41":37,"43":13,"45":14,"47":17,"49":31,"51":17,"53":21,"55":18,"57":20}}],["2px",{"2":{"49":1}}],["255",{"2":{"47":3,"57":3}}],["258",{"2":{"23":2}}],["2000",{"2":{"57":1}}],["20px",{"2":{"45":1}}],["206",{"2":{"1":1,"10":1,"21":1}}],["2rem",{"2":{"43":1,"45":1}}],["2",{"2":{"41":3,"49":1}}],["240",{"2":{"23":2}}],["244",{"2":{"23":2}}],["260",{"2":{"23":2}}],["29",{"2":{"21":2}}],["4rem",{"2":{"57":1}}],["4",{"2":{"21":1}}],["48",{"2":{"21":1}}],["lang=",{"2":{"41":1,"49":1,"53":1}}],["label>",{"2":{"41":1}}],["label",{"2":{"41":8,"53":2}}],["lacking",{"2":{"27":1}}],["last",{"2":{"23":1,"39":1,"41":1,"46":1,"47":1,"55":1,"56":1,"57":1}}],["lt",{"2":{"25":1}}],["length",{"2":{"53":1}}],["less",{"2":{"42":1}}],["leaks",{"2":{"33":1}}],["least",{"2":{"21":3}}],["left",{"2":{"23":2,"43":1,"51":1,"53":1}}],["long",{"2":{"57":2}}],["low",{"2":{"52":1}}],["log",{"2":{"39":1,"41":1,"53":1,"55":1}}],["logerrors",{"2":{"39":2,"43":2}}],["looks",{"2":{"56":1}}],["look",{"2":{"33":1}}],["location",{"2":{"33":2}}],["localhost",{"2":{"21":2,"27":1,"41":2,"49":2}}],["load",{"2":{"39":1}}],["loading",{"0":{"44":1},"1":{"45":1},"2":{"25":2,"44":1,"45":7}}],["loaded",{"2":{"23":1,"25":1,"35":1}}],["light",{"2":{"52":1}}],["linear",{"2":{"41":1}}],["linewidth",{"2":{"41":2,"49":1}}],["lineto",{"2":{"41":2}}],["link",{"2":{"4":1}}],["limitations",{"2":{"35":1}}],["limited",{"2":{"21":1}}],["like",{"2":{"33":2,"48":1,"56":1}}],["listen",{"2":{"15":1,"25":1,"44":1}}],["z",{"2":{"43":1}}],["zero",{"2":{"19":1}}],["zone>",{"2":{"13":1,"14":1,"15":1,"19":2,"39":1}}],["zone",{"2":{"13":1,"14":1,"15":1,"39":1}}],["007bff",{"2":{"41":1,"49":1}}],["0",{"2":{"16":2,"28":2,"29":2,"30":2,"43":6,"47":1,"49":1,"53":2,"55":1,"57":1}}],["=>",{"2":{"39":1,"41":5,"47":2,"49":1,"53":3,"55":1,"57":1}}],["==",{"2":{"39":1,"43":1,"53":1}}],["===",{"2":{"13":2,"27":6,"34":2,"39":2,"41":8,"49":7,"51":3,"53":1,"57":3}}],["=",{"2":{"15":1,"34":3,"35":1,"39":5,"41":29,"43":3,"45":4,"47":5,"49":9,"51":7,"53":9,"55":2,"57":5}}],["ツ",{"2":{"13":1}}],["¯",{"2":{"13":2}}],["js",{"2":{"49":2}}],["jsmethods",{"2":{"35":1}}],["jsdata",{"2":{"34":1}}],["jsnavigator",{"2":{"34":1}}],["json",{"2":{"23":1,"39":1,"41":1,"47":1,"49":1,"55":1}}],["javascriptdata",{"2":{"15":1}}],["javascriptmethods",{"2":{"13":1,"23":1,"25":1,"27":1}}],["justify",{"2":{"47":1,"57":1}}],["just",{"2":{"13":1,"56":1}}],["using",{"2":{"52":1}}],["useful",{"2":{"32":1}}],["users",{"2":{"23":1,"25":3,"38":1,"50":1,"57":1}}],["user",{"2":{"15":1,"25":1,"27":1,"34":2,"41":2,"43":2,"51":3,"55":1}}],["use",{"2":{"4":1,"7":1,"15":1,"16":1,"27":1,"28":1,"29":1,"30":1,"34":2,"38":1,"41":3,"43":1,"48":1,"49":3,"52":1}}],["umd",{"2":{"49":1}}],["utf",{"2":{"49":1}}],["utilize",{"2":{"48":1}}],["uploaded",{"2":{"54":2}}],["upload",{"0":{"54":1},"1":{"55":1},"2":{"54":1}}],["upc",{"2":{"41":2}}],["ups",{"2":{"39":1}}],["unpkg",{"2":{"49":2}}],["unpause",{"2":{"32":1}}],["undefined",{"2":{"33":1,"41":1,"57":3}}],["understand",{"2":{"25":1}}],["unsupported",{"2":{"13":1,"35":1}}],["url",{"2":{"13":2,"57":2}}],["v",{"2":{"39":1,"41":6,"45":2,"47":1,"51":2,"53":5,"55":2,"57":3}}],["variety",{"2":{"41":2}}],["various",{"2":{"34":1}}],["vary",{"2":{"35":1}}],["value=",{"2":{"41":2,"53":1,"55":1}}],["value",{"2":{"23":1,"41":19,"49":10,"53":6,"55":4}}],["validationpending",{"2":{"57":2}}],["validationfailure",{"2":{"57":2}}],["validation",{"2":{"57":9}}],["validationsuccess",{"2":{"57":2}}],["validate",{"0":{"56":1},"1":{"57":1}}],["valid",{"2":{"7":1}}],["via",{"2":{"54":1}}],["vite",{"2":{"48":1}}],["vitepress",{"2":{"43":1,"47":1,"51":1,"53":1}}],["visible",{"2":{"44":1}}],["visually",{"2":{"33":1,"41":1}}],["viewport",{"2":{"43":1,"49":1}}],["view",{"2":{"41":1,"46":1}}],["videoinput",{"2":{"41":1,"53":1}}],["videodevices",{"2":{"41":2}}],["video",{"2":{"34":1}}],["violation",{"2":{"13":1}}],["void",{"2":{"26":1}}],["v4",{"2":{"16":1,"28":1,"29":1,"30":1}}],["vueqrcodereader",{"2":{"49":1}}],["vuex",{"2":{"33":1}}],["vues",{"2":{"15":1}}],["vue",{"2":{"1":1,"7":1,"10":1,"21":1,"39":1,"41":2,"43":1,"45":1,"47":1,"49":5,"51":1,"53":2,"55":1,"57":1}}],["rgba",{"2":{"47":1,"57":1}}],["rather",{"2":{"41":1,"43":1,"49":1}}],["rawvalue",{"2":{"23":2,"39":1,"41":4,"47":1,"49":1,"55":1,"57":1}}],["rm",{"2":{"41":1}}],["row",{"2":{"23":1,"46":1,"47":1}}],["root",{"2":{"7":1}}],["right",{"2":{"23":2,"41":1,"43":2,"48":1}}],["reload",{"2":{"45":2}}],["reloaded",{"2":{"35":1}}],["re",{"2":{"44":1,"45":1}}],["ref=",{"2":{"43":1}}],["ref",{"2":{"41":7,"49":3,"53":5}}],["red",{"2":{"39":1,"41":2,"49":1,"51":1,"53":1,"57":1}}],["received",{"2":{"56":1}}],["receives",{"2":{"33":1}}],["recognized",{"2":{"3":1,"12":1}}],["required",{"2":{"41":1,"49":1}}],["requires",{"2":{"21":2}}],["requestfullscreen",{"2":{"43":4}}],["requested",{"2":{"34":1}}],["requesting",{"2":{"34":1,"41":1}}],["request",{"2":{"27":1}}],["resolve",{"2":{"47":2,"57":2}}],["resolves",{"2":{"25":1}}],["resetvalidationstate",{"2":{"57":2}}],["reset",{"2":{"46":1}}],["resets",{"2":{"23":1}}],["result",{"2":{"39":5,"41":5,"47":5,"49":5,"55":5,"57":6}}],["results",{"2":{"3":1,"12":1,"23":2}}],["restarted",{"2":{"26":1,"32":1}}],["read",{"2":{"57":1}}],["reader",{"2":{"49":2}}],["ready",{"2":{"25":2}}],["reactive",{"2":{"33":1}}],["reacting",{"2":{"15":1}}],["real",{"2":{"33":1,"41":1}}],["really",{"2":{"15":1,"57":1}}],["reasons",{"2":{"27":1}}],["rear",{"2":{"26":1,"34":1,"35":1,"41":2,"50":1,"51":1,"55":1}}],["return",{"2":{"15":1,"34":1,"39":1,"41":1,"43":3,"45":1,"47":2,"49":1,"51":1,"53":2,"55":1,"57":5}}],["remove",{"2":{"7":1}}],["renders",{"2":{"3":1,"19":1}}],[">destroy",{"2":{"45":1}}],[">",{"2":{"6":1,"7":3,"13":2,"14":1,"15":3,"23":1,"24":1,"25":1,"27":1,"34":1,"35":1,"39":4,"41":12,"43":4,"45":2,"47":4,"49":9,"51":5,"53":8,"55":5,"57":5}}],["hr",{"2":{"55":1}}],["h1>",{"2":{"49":1}}],["h1>simple",{"2":{"49":1}}],["hits",{"2":{"43":1}}],["hide",{"2":{"25":1}}],["highlighted",{"2":{"41":1}}],["highlight",{"2":{"15":1,"33":1}}],["how",{"2":{"25":1,"33":1}}],["however",{"2":{"23":1,"46":1}}],["hold",{"2":{"23":1}}],["home",{"2":{"1":1,"21":1}}],["http",{"2":{"41":1,"49":1,"57":1}}],["https",{"2":{"21":2,"23":1,"27":1,"41":2,"49":4}}],["html>",{"2":{"49":2}}],["html",{"2":{"6":1,"7":3,"13":1,"14":1,"15":1,"19":1,"23":1,"24":1,"25":1,"27":1,"34":1,"35":1,"37":1,"49":2}}],["handling",{"2":{"41":2}}],["happening",{"2":{"54":1}}],["happened",{"2":{"41":1}}],["happen",{"2":{"27":1}}],["happens",{"2":{"26":1}}],["have",{"2":{"19":1,"34":1,"41":1,"46":1,"51":2,"57":1}}],["has",{"2":{"13":1,"25":2,"26":1,"33":1,"35":2,"41":2}}],["head>",{"2":{"49":2}}],["header",{"2":{"13":1}}],["hello",{"2":{"23":1}}],["help",{"2":{"21":1}}],["here",{"2":{"19":1,"23":1,"37":1,"39":1}}],["height",{"2":{"19":2,"23":2,"39":1,"41":3,"47":1,"49":2,"51":1,"53":1,"57":1}}],["fullscreenelement",{"2":{"43":1}}],["fullscreenicon",{"2":{"43":2}}],["fullscreenchange=",{"2":{"43":1}}],["fullscreen",{"0":{"42":1},"1":{"43":1},"2":{"42":1,"43":16}}],["full",{"0":{"40":1},"1":{"41":1}}],["functons",{"2":{"41":1}}],["function",{"2":{"33":5,"41":6,"49":3,"53":2}}],["fundamentally",{"2":{"21":1}}],["following",{"2":{"41":1,"54":1}}],["fontsize",{"2":{"41":2}}],["font",{"2":{"39":2,"41":2,"45":2,"51":1,"53":1,"57":2}}],["force",{"2":{"44":1,"55":1}}],["for=",{"2":{"41":4,"53":1,"55":1}}],["format",{"2":{"23":2,"41":4}}],["formats=",{"2":{"6":1,"14":1,"24":1,"41":1}}],["formats",{"0":{"6":1,"14":1,"24":1},"2":{"6":4,"14":4,"24":4,"41":2}}],["for",{"2":{"3":1,"12":1,"15":1,"16":1,"21":4,"23":1,"25":3,"26":1,"28":1,"29":1,"30":1,"33":1,"34":3,"35":1,"38":1,"41":5,"43":1,"44":1,"48":1,"49":1,"53":1}}],["fff",{"2":{"39":1}}],["flow",{"2":{"47":1,"57":1}}],["flooded",{"2":{"23":1,"46":1}}],["flex",{"2":{"47":2,"57":2}}],["flash",{"2":{"53":2}}],["flashlight",{"0":{"52":1},"1":{"53":1},"2":{"35":3,"52":2}}],["flavor",{"2":{"41":1}}],["feature",{"2":{"33":1,"38":1,"52":1}}],["features",{"2":{"27":1}}],["fetched",{"2":{"13":1}}],["failure",{"2":{"57":3}}],["fails",{"2":{"27":1,"35":1}}],["facingmode",{"2":{"34":5,"41":3,"51":7}}],["fallback",{"2":{"38":1}}],["fallthrough",{"2":{"7":1}}],["false",{"2":{"15":1,"32":1,"34":1,"35":1,"39":1,"41":20,"43":1,"45":3,"47":4,"51":2,"53":2,"57":3}}],["frequency",{"2":{"33":1}}],["freezes",{"2":{"32":1}}],["frame",{"2":{"33":1,"56":1}}],["frames",{"2":{"23":1}}],["front",{"0":{"50":1},"1":{"51":1},"2":{"26":1,"27":1,"34":3,"35":1,"41":2,"50":1,"51":1,"55":1}}],["from",{"2":{"12":1,"13":1,"23":1,"35":1,"39":1,"41":2,"43":2,"45":1,"47":2,"51":2,"53":3,"55":1,"57":1}}],["frustrated",{"2":{"25":1}}],["finally",{"2":{"54":1}}],["fine",{"2":{"41":1}}],["fixed",{"2":{"43":1}}],["film",{"2":{"41":1}}],["filltext",{"2":{"41":1}}],["fillstyle",{"2":{"41":1}}],["filter",{"2":{"41":2,"53":1}}],["files",{"2":{"12":1}}],["file",{"2":{"3":2,"7":1,"13":3,"48":1,"54":2,"55":1}}],["filereader",{"2":{"1":1,"10":1}}],["firstdetectedcode",{"2":{"57":2}}],["firstpoint",{"2":{"41":5}}],["first",{"2":{"25":1,"33":1}}],["firefox",{"2":{"21":1,"43":2}}],["ms",{"2":{"47":2,"57":2}}],["msexitfullscreen",{"2":{"43":2}}],["msrequestfullscreen",{"2":{"43":2}}],["must",{"2":{"34":1,"35":1}}],["multiple",{"0":{"7":1},"2":{"3":1,"7":1,"12":1,"23":3,"41":1,"46":2}}],["micro",{"2":{"41":1}}],["microinteraction",{"2":{"32":1}}],["might",{"2":{"15":1,"25":2,"33":2,"43":1,"46":1,"52":1}}],["margin",{"2":{"41":1,"43":1,"45":1}}],["matrix",{"2":{"41":2}}],["math",{"2":{"41":1}}],["maxi",{"2":{"41":1}}],["max",{"2":{"41":1}}],["map",{"2":{"39":1,"41":2,"47":1,"49":1,"55":1}}],["maybe",{"2":{"27":1}}],["manually",{"2":{"25":1}}],["make",{"2":{"7":1,"25":1,"52":1}}],["memo=",{"2":{"53":1}}],["memory",{"2":{"33":1}}],["meta",{"2":{"49":2}}],["methods",{"2":{"15":1,"34":1,"39":1,"43":1,"45":1,"47":1,"51":1,"55":1,"57":1}}],["message",{"2":{"39":1,"41":1,"49":1,"57":1}}],["means",{"2":{"35":1}}],["mediadeviceinfo",{"2":{"53":2}}],["mediadevices",{"2":{"34":1,"41":1,"53":1}}],["mediatrackconstriants",{"2":{"34":1}}],["mediatrackconstraints",{"2":{"34":1}}],["mediatrackcapabilities",{"2":{"25":2,"35":1}}],["merely",{"2":{"19":1}}],["mozcancelfullscreen",{"2":{"43":2}}],["mozrequestfullscreen",{"2":{"43":2}}],["move",{"2":{"43":1}}],["moveto",{"2":{"41":1}}],["more",{"0":{"46":1},"1":{"47":1},"2":{"41":3,"42":1,"57":1}}],["mounting",{"2":{"44":1}}],["mount",{"2":{"25":1,"49":1}}],["moment",{"2":{"23":1,"35":1}}],["modified",{"2":{"26":1,"34":1}}],["modifier",{"2":{"15":1}}],["model=",{"2":{"41":3,"53":1,"55":1}}],["modern",{"2":{"41":1}}],["mode",{"2":{"1":1,"21":1}}],["mobile",{"2":{"3":1,"41":1,"43":1,"54":1}}],["y",{"2":{"23":10,"41":7,"49":2}}],["your",{"2":{"12":1,"25":1,"33":2,"43":1,"46":1,"48":1,"51":2,"54":2}}],["you",{"2":{"3":1,"7":2,"12":2,"15":2,"19":1,"23":3,"25":5,"27":1,"32":2,"33":3,"34":4,"35":3,"38":1,"39":1,"41":4,"43":1,"46":3,"48":1,"49":1,"50":1,"51":2,"52":2,"54":3,"56":1}}],["yes²",{"2":{"21":1}}],["yes¹",{"2":{"1":1,"21":1}}],["yes",{"2":{"1":3,"10":4,"21":2}}],["black",{"2":{"49":1,"57":1}}],["block",{"2":{"41":1}}],["build",{"2":{"48":1}}],["bundler",{"2":{"48":1}}],["button>",{"2":{"43":1,"45":1,"51":1,"53":1}}],["button",{"2":{"43":6,"44":1,"45":2,"51":3,"53":3}}],["but",{"2":{"7":1,"23":1,"35":2,"41":2,"43":1,"54":1}}],["break",{"2":{"51":2}}],["br",{"2":{"41":1}}],["browsers",{"2":{"21":1,"35":1,"52":1}}],["browser",{"0":{"1":1,"10":1,"21":1},"2":{"27":1,"35":1,"41":1,"48":1,"49":1,"54":1}}],["back",{"2":{"43":1}}],["background",{"2":{"39":2,"43":1,"47":1,"57":1}}],["barcodeformats",{"2":{"41":5}}],["barcode",{"2":{"6":1,"14":1,"23":1,"24":1,"41":4}}],["barcodedetectoroptions",{"2":{"6":1,"14":1,"24":1}}],["border",{"2":{"49":1}}],["body>",{"2":{"49":2}}],["box",{"2":{"41":1}}],["bounding",{"2":{"41":1}}],["boundingbox",{"2":{"23":2,"41":7,"49":1}}],["bold",{"2":{"39":2,"41":1,"45":1,"51":1,"53":1,"57":1}}],["bottom",{"2":{"23":2,"43":2,"45":1}}],["boolean",{"2":{"15":1,"32":1,"35":1}}],["b>stuff",{"2":{"37":1}}],["b>",{"2":{"19":1,"37":1,"39":2,"41":2,"47":2,"49":2,"55":2,"57":2}}],["b>put",{"2":{"19":1}}],["behavior",{"2":{"54":1}}],["below",{"2":{"44":1}}],["beginpath",{"2":{"41":1}}],["becoming",{"2":{"44":1}}],["becomes",{"2":{"41":1,"43":1}}],["because",{"2":{"7":2,"25":1}}],["best",{"2":{"41":1}}],["been",{"2":{"35":1}}],["between",{"2":{"26":1,"44":1}}],["before",{"2":{"25":2,"41":1}}],["be",{"2":{"3":1,"12":1,"13":2,"15":1,"23":1,"25":2,"26":1,"27":1,"33":2,"34":1,"35":2,"38":1,"39":1,"46":1,"52":1,"54":1}}],["by",{"0":{"38":1,"54":1},"1":{"39":1,"55":1},"2":{"3":1,"12":1,"15":1,"19":1,"23":1,"35":1,"41":4,"43":1,"52":1,"56":1}}],["ok",{"2":{"39":1}}],["occur",{"2":{"34":1}}],["occupies",{"2":{"12":1,"42":1}}],["opera",{"2":{"43":2}}],["open",{"2":{"13":1}}],["opens",{"2":{"3":1}}],["option>",{"2":{"41":2,"53":1,"55":1}}],["option",{"2":{"41":16,"53":1,"55":5}}],["options",{"2":{"34":1,"55":4}}],["outline",{"2":{"41":1}}],["out",{"2":{"33":1}}],["object",{"2":{"33":1,"34":4,"35":1,"41":2}}],["overlays",{"2":{"33":1,"37":2}}],["overconstrainederror",{"2":{"27":1,"34":1,"41":1,"49":1,"51":1}}],["over",{"2":{"15":1,"27":1}}],["override",{"2":{"7":1}}],["org",{"2":{"23":1}}],["origin",{"2":{"13":1,"39":1}}],["or",{"2":{"12":1,"13":1,"21":1,"23":1,"26":1,"27":1,"33":1,"34":1,"35":1,"38":1,"41":3,"49":1,"50":1}}],["otherpoints",{"2":{"41":2}}],["otherwise",{"2":{"25":1}}],["other",{"2":{"7":1,"12":1,"21":1,"41":1,"48":1}}],["old",{"2":{"4":1}}],["off=",{"2":{"47":1}}],["off",{"0":{"26":1},"2":{"26":1,"35":2,"52":1,"53":1}}],["often",{"2":{"23":1,"35":1,"41":1,"46":1}}],["of",{"2":{"3":1,"7":2,"12":1,"13":1,"23":3,"27":1,"34":1,"39":1,"41":7,"46":1,"49":1,"52":1}}],["onmounted",{"2":{"53":2}}],["onfullscreenchange",{"2":{"43":2}}],["on`",{"2":{"41":1}}],["oninit",{"2":{"35":2}}],["onready",{"2":{"25":2}}],["on=",{"2":{"25":1,"35":1,"41":1,"45":1,"47":1,"53":1,"57":1}}],["only",{"2":{"23":3,"25":1,"35":1,"41":2,"46":1,"49":1,"52":1}}],["oncameraoff",{"2":{"47":2}}],["oncameraon",{"2":{"45":2,"47":2,"53":2}}],["oncameraready",{"2":{"41":2}}],["once",{"0":{"46":1},"1":{"47":1},"2":{"23":2,"25":1,"35":1}}],["onchangeinput",{"2":{"7":1}}],["ondragover",{"2":{"15":2,"39":2}}],["ondetect",{"2":{"13":1,"23":2,"39":2,"41":2,"47":2,"49":3,"55":2,"57":2}}],["onerror",{"2":{"13":1,"27":2,"34":2,"41":2,"47":2,"49":3,"51":2,"53":1,"57":2}}],["one",{"2":{"3":1,"12":1,"23":1,"34":1,"41":2,"56":1}}],["on",{"0":{"25":1},"2":{"1":2,"3":2,"10":1,"12":1,"21":2,"25":1,"29":1,"32":1,"33":1,"34":3,"35":7,"41":2,"43":2,"44":1,"48":1,"49":1,"50":1,"51":2,"52":1,"53":1,"54":1}}],["createapp",{"2":{"49":2}}],["create",{"2":{"44":1,"45":1}}],["cross",{"2":{"39":1}}],["ctx",{"2":{"41":21,"49":4}}],["centered",{"2":{"41":1}}],["centery",{"2":{"41":3}}],["centerx",{"2":{"41":3}}],["center",{"2":{"39":1,"41":1,"45":1,"47":1,"57":2}}],["custom",{"2":{"15":1}}],["client",{"2":{"54":1}}],["click=",{"2":{"43":1,"45":1,"51":1,"53":1}}],["clicking",{"2":{"3":1}}],["classic",{"2":{"54":1}}],["class=",{"2":{"15":1,"39":4,"41":3,"43":2,"45":1,"47":2,"51":2,"53":1,"55":1,"57":4}}],["closepath",{"2":{"41":1}}],["ch",{"2":{"52":1}}],["choose",{"2":{"50":1}}],["choice",{"2":{"41":1}}],["charset=",{"2":{"49":1}}],["changes",{"2":{"46":1}}],["change",{"2":{"25":1,"41":1,"46":1}}],["change=",{"2":{"7":1}}],["changing",{"2":{"23":1}}],["checkmark",{"2":{"47":2}}],["checkbox",{"2":{"41":3}}],["check",{"2":{"33":1}}],["checkout",{"2":{"7":1}}],["chrome",{"2":{"21":2,"25":1,"43":2}}],["column",{"2":{"57":1}}],["color",{"2":{"39":4,"41":1,"43":1,"47":1,"49":1,"51":1,"53":1,"57":4}}],["comes",{"2":{"54":1}}],["com",{"2":{"49":2}}],["computed",{"2":{"33":1,"41":2,"43":1,"53":2,"57":1}}],["components",{"2":{"7":2,"39":1,"43":1,"45":1,"47":1,"48":1,"51":1,"55":1,"57":1}}],["component",{"2":{"1":1,"3":1,"7":1,"10":1,"12":1,"15":1,"19":1,"21":2,"25":2,"38":1,"42":1,"44":2,"45":1,"54":1}}],["covered",{"2":{"43":1}}],["covers",{"2":{"42":1}}],["codabar",{"2":{"41":1}}],["codes",{"2":{"23":3,"33":1,"41":4,"46":1}}],["code",{"0":{"46":1},"1":{"47":1},"2":{"3":1,"6":3,"12":1,"14":3,"23":5,"24":3,"33":1,"39":2,"41":9,"46":3,"47":2,"49":2,"55":2,"56":1}}],["couple",{"2":{"27":1}}],["cornerpoints",{"2":{"23":2,"41":1}}],["cors",{"2":{"13":2}}],["conditions",{"2":{"52":1}}],["consider",{"2":{"43":1}}],["consistently",{"2":{"35":1}}],["console",{"2":{"39":1,"41":1,"43":1,"47":1,"51":1,"53":3,"55":1,"57":1}}],["const",{"2":{"34":2,"35":1,"41":21,"43":1,"49":6,"51":3,"53":5,"55":1}}],["constraintoptions",{"2":{"41":3}}],["constraint",{"2":{"34":1}}],["constraints=",{"2":{"34":1,"41":1,"51":1,"53":1}}],["constraints",{"0":{"34":1},"2":{"26":1,"30":1,"41":5}}],["confirmation",{"2":{"47":2}}],["configuration",{"2":{"34":1}}],["confused",{"2":{"15":1}}],["context",{"2":{"41":2,"49":2}}],["content=",{"2":{"49":1}}],["content",{"2":{"19":2,"37":1,"46":1,"47":1,"57":1}}],["container",{"2":{"37":1}}],["control",{"2":{"35":1,"41":1}}],["continuously",{"2":{"23":1}}],["case",{"2":{"51":2}}],["care",{"2":{"41":1}}],["carries",{"2":{"25":1}}],["catch",{"2":{"34":1}}],["calling",{"2":{"43":2}}],["call",{"2":{"34":1}}],["called",{"2":{"33":2}}],["cause",{"2":{"33":1}}],["caused",{"2":{"13":1}}],["capabilities",{"2":{"25":1,"35":2,"53":3}}],["capture=",{"2":{"7":2,"55":1}}],["capture>",{"2":{"6":1}}],["capture",{"0":{"7":1},"2":{"6":1,"7":2,"55":2}}],["cache",{"2":{"23":1,"46":1}}],["cached",{"2":{"23":1,"46":1}}],["canvasrenderingcontext2d",{"2":{"33":1}}],["canvas",{"2":{"33":2,"41":1}}],["can",{"2":{"3":2,"7":2,"12":3,"13":2,"25":3,"27":1,"33":1,"34":3,"35":4,"38":1,"39":2,"41":3,"46":1,"50":1,"52":2,"54":1,"56":1}}],["cameramissingerror",{"2":{"34":2,"51":3}}],["cameras",{"2":{"25":1,"41":2,"49":1,"52":1}}],["camera",{"0":{"25":1,"26":1,"30":1,"50":1},"1":{"51":1},"2":{"3":1,"23":2,"25":6,"26":5,"27":5,"29":1,"32":3,"33":1,"34":7,"35":8,"37":2,"41":10,"43":2,"44":2,"45":1,"46":1,"47":2,"49":4,"50":1,"51":4,"52":1,"53":3,"54":1,"55":2,"57":1}}],["etc",{"2":{"43":1}}],["esc",{"2":{"43":1}}],["err",{"2":{"41":10,"49":10,"53":2}}],["errors",{"2":{"34":1}}],["error=",{"2":{"27":1,"34":1,"39":1,"41":1,"43":1,"47":1,"49":1,"51":1,"53":1,"57":1}}],["error",{"0":{"13":1,"27":1},"2":{"13":4,"27":9,"29":1,"34":4,"39":13,"41":15,"43":1,"47":1,"49":12,"51":7,"53":4,"57":1}}],["edge",{"2":{"41":1,"43":2}}],["e",{"2":{"41":2}}],["ean",{"2":{"41":2}}],["easy",{"2":{"33":1}}],["each",{"2":{"33":1,"56":1}}],["en",{"2":{"49":1}}],["enterfullscreen",{"2":{"43":2}}],["entire",{"2":{"42":2,"43":1}}],["enumeratedevices",{"2":{"41":1,"53":1}}],["enable",{"2":{"33":2}}],["environment",{"2":{"7":1,"34":2,"41":2,"51":4,"55":1}}],["every",{"2":{"34":1}}],["everything",{"2":{"25":1,"54":1}}],["even",{"2":{"21":1,"35":1,"43":1}}],["event",{"2":{"3":4,"12":4,"15":4,"23":1,"25":1,"32":1,"34":2,"35":2,"41":1,"43":1,"44":1,"46":1}}],["events",{"0":{"2":1,"11":1,"22":1},"1":{"3":1,"4":1,"12":1,"13":1,"14":1,"15":1,"16":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1},"2":{"13":1,"23":1,"27":1,"35":1,"46":1}}],["exitfullscreen",{"2":{"43":4}}],["exit",{"2":{"43":2}}],["exploit",{"2":{"46":1}}],["explicitly",{"2":{"7":1}}],["expanded",{"2":{"41":1}}],["expensive",{"2":{"41":1}}],["export",{"2":{"39":1,"43":1,"45":1,"47":1,"51":1,"55":1,"57":1}}],["example",{"2":{"23":1,"26":1,"33":1,"34":2,"35":1,"48":1}}],["elem",{"2":{"43":9}}],["element",{"2":{"3":1,"7":2,"13":1,"42":1}}],["else",{"2":{"13":2,"27":5,"39":2,"41":7,"43":8,"49":7,"53":1}}],["emphasizing",{"2":{"15":1}}],["empty",{"2":{"3":1,"12":1}}],["embedded",{"2":{"12":1}}],["emitted",{"2":{"3":1,"12":1,"13":1,"23":1,"25":1,"26":1,"27":1,"32":1,"34":1,"35":2,"46":1}}],["quot",{"2":{"34":2,"46":2}}],["question",{"2":{"1":1}}],["qrcodedropzone",{"0":{"9":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1},"2":{"38":1,"39":2}}],["qrcode",{"2":{"6":2,"7":2,"13":2,"14":2,"15":2,"19":2,"23":2,"24":2,"25":2,"27":2,"34":2,"35":2,"37":2,"39":2,"41":1,"43":2,"45":2,"47":2,"49":4,"51":2,"53":2,"55":1,"57":2}}],["qrcodestream",{"0":{"20":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1},"2":{"3":1,"12":1,"41":1,"42":1,"43":2,"45":2,"47":2,"51":2,"53":1,"57":2}}],["qrcodecapture",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"2":{"7":1,"54":1,"55":2}}],["qr",{"0":{"46":1},"1":{"47":1},"2":{"3":1,"6":2,"12":1,"14":2,"23":7,"24":2,"33":2,"41":4,"46":4,"56":1}}],["3000",{"2":{"57":1}}],["300px",{"2":{"39":1}}],["39",{"2":{"41":1}}],["35495e",{"2":{"41":1}}],["359",{"2":{"23":1}}],["3c3c43",{"2":{"39":1}}],["342",{"2":{"23":1}}],["375",{"2":{"23":2}}],["322",{"2":{"23":3}}],["3",{"2":{"1":1,"21":2,"41":1,"49":1}}],["1rem",{"2":{"43":1}}],["1",{"2":{"41":1,"57":1}}],["12",{"2":{"41":1}}],["128",{"2":{"6":1,"14":1,"24":1,"41":1,"47":1}}],["100",{"2":{"47":2,"57":2}}],["1000",{"2":{"43":1}}],["10b981",{"2":{"39":1}}],["10px",{"2":{"39":1,"41":1,"51":2,"53":2,"57":1}}],["10+",{"2":{"1":1,"10":1}}],["160",{"2":{"23":1}}],["188",{"2":{"23":1}}],["178",{"2":{"23":1}}],["14",{"2":{"21":2}}],["135",{"2":{"23":3}}],["13",{"2":{"21":1,"41":1}}],["11",{"2":{"1":1}}],["pending",{"2":{"57":2}}],["permitted",{"2":{"41":1,"49":1}}],["permissions",{"2":{"25":1,"41":1}}],["permission",{"2":{"25":1,"27":1,"41":2,"43":2,"49":1}}],["per",{"2":{"3":1,"12":1}}],["physical",{"2":{"43":1}}],["phones",{"2":{"41":1}}],["push",{"2":{"44":1}}],["pushes",{"2":{"43":1}}],["put",{"2":{"42":1}}],["pdf417",{"2":{"41":1}}],["px",{"2":{"41":1}}],["p>last",{"2":{"49":1}}],["p>",{"2":{"39":2,"41":8,"47":1,"49":2,"51":2,"53":3,"55":3,"57":1}}],["p",{"2":{"39":2,"41":2,"47":1,"49":1,"51":2,"53":1,"55":1,"57":1}}],["position",{"2":{"37":1,"43":2,"47":1,"51":1,"53":1,"57":1}}],["positive",{"2":{"3":1,"12":1}}],["policy",{"2":{"13":1}}],["pausing",{"2":{"56":1}}],["pause",{"0":{"56":1},"1":{"57":1}}],["paused=",{"2":{"47":1,"57":1}}],["paused",{"0":{"32":1},"2":{"23":1,"46":1,"47":4,"56":1,"57":5}}],["paintcentertext",{"2":{"41":2}}],["paintboundingbox",{"2":{"41":2,"49":3}}],["paintoutline",{"2":{"41":2}}],["painted",{"2":{"33":1}}],["padding",{"2":{"39":1,"57":1}}],["passed",{"2":{"34":1}}],["pass",{"2":{"33":1,"34":1}}],["page",{"2":{"27":1,"48":1}}],["pages",{"2":{"12":1}}],["particular",{"2":{"27":1}}],["panic",{"2":{"25":1}}],["payload",{"2":{"3":2,"6":1,"12":2,"14":1,"15":1,"23":2,"24":1,"25":1,"26":1,"27":1,"35":1}}],["pretend",{"2":{"57":1}}],["progress",{"2":{"57":1}}],["project",{"2":{"48":1}}],["produce",{"2":{"33":1}}],["prompted",{"2":{"54":1}}],["prompt",{"2":{"25":1,"43":1}}],["promise",{"2":{"25":2,"47":1,"57":1}}],["process",{"2":{"25":1,"56":1}}],["provide",{"2":{"19":1,"34":1}}],["probably",{"2":{"13":1}}],["properties",{"2":{"33":1}}],["propagated",{"2":{"23":1}}],["prop",{"2":{"6":1,"14":1,"24":1,"32":1,"34":2,"35":1,"46":1,"52":1}}],["props",{"0":{"5":1,"17":1,"31":1},"1":{"6":1,"7":1,"32":1,"33":1,"34":1,"35":1},"2":{"7":1,"17":1}}],["prior",{"2":{"1":1}}],["pick",{"2":{"53":1}}],["picked",{"2":{"41":1}}],["picker",{"2":{"3":1}}],["picture",{"2":{"3":1,"54":1}}],["pwa",{"2":{"1":1,"21":1}}],["adjust",{"2":{"54":1}}],["added",{"2":{"1":1,"21":1}}],["aeschbacher",{"2":{"52":1}}],["available",{"2":{"42":1}}],["avoid",{"2":{"33":1}}],["aztec",{"2":{"41":1}}],["await",{"2":{"41":1,"45":1,"47":1,"53":1,"57":2}}],["amp",{"0":{"38":1,"56":1},"1":{"39":1,"57":1}}],["absolute",{"2":{"37":1,"43":1,"47":1,"51":1,"53":1,"57":1}}],["audio",{"2":{"34":1}}],["again",{"2":{"32":1,"34":1,"35":1,"46":1}}],["after",{"2":{"32":1,"52":1}}],["alt=",{"2":{"43":1,"47":1,"51":1,"53":1}}],["although",{"2":{"27":1}}],["align",{"2":{"39":1,"45":1,"57":1}}],["allows",{"2":{"54":1}}],["allow",{"2":{"50":1}}],["all",{"2":{"33":1,"35":1,"48":1}}],["already",{"2":{"27":1,"41":1,"43":1,"49":1,"52":1}}],["always",{"2":{"23":1,"42":1}}],["also",{"2":{"3":1,"7":1,"12":1,"21":1,"38":1,"41":1,"50":1}}],["active",{"2":{"53":1}}],["actually",{"2":{"23":1,"54":1}}],["across",{"2":{"52":1}}],["access",{"2":{"25":2,"27":1,"33":2,"35":1,"41":3,"43":1,"49":2}}],["accept",{"2":{"7":1}}],["accept=",{"2":{"7":1}}],["accroding",{"2":{"23":1}}],["async",{"2":{"41":1,"45":1,"47":1,"53":1,"57":1}}],["asked",{"2":{"25":1,"43":1}}],["as",{"2":{"3":1,"12":1,"25":2,"33":2,"34":1,"38":2,"53":2}}],["argument",{"2":{"33":2}}],["array",{"2":{"3":1,"12":1,"23":2}}],["area",{"2":{"12":1,"39":2}}],["are",{"2":{"3":2,"6":1,"12":2,"13":1,"14":1,"23":3,"24":1,"26":1,"27":1,"41":4,"49":1,"54":2}}],["another",{"2":{"43":1,"54":1}}],["angle",{"2":{"41":1}}],["anything",{"2":{"19":1}}],["anywhere",{"2":{"12":1}}],["any",{"2":{"7":2,"19":1,"37":1}}],["an",{"2":{"3":1,"12":1,"13":3,"23":2,"34":2,"39":1,"46":1,"48":1}}],["and",{"2":{"3":1,"7":1,"12":2,"13":3,"23":2,"25":4,"26":2,"33":2,"35":2,"38":1,"43":2,"44":2,"45":1,"46":1,"48":1,"52":2,"54":1}}],["attribute",{"2":{"7":1}}],["attributes",{"2":{"7":3}}],["at",{"2":{"3":1,"12":1,"21":3,"23":1,"33":1,"35":1,"56":1}}],["a",{"2":{"3":3,"13":2,"15":1,"19":1,"23":4,"25":4,"26":1,"27":1,"33":5,"34":3,"35":2,"37":1,"38":2,"41":4,"42":1,"43":2,"44":1,"46":3,"48":2,"51":2,"54":1,"56":1,"57":2}}],["app",{"2":{"49":5}}],["apply",{"2":{"15":1}}],["apps",{"2":{"1":1,"21":2}}],["api",{"2":{"1":2,"10":2,"21":1,"23":1,"34":1,"35":1,"41":1,"49":1}}],["wrapped",{"2":{"37":1}}],["wrapper",{"2":{"19":1,"42":1,"43":2}}],["weight",{"2":{"39":2,"41":1,"45":1,"51":1,"53":1,"57":1}}],["we",{"2":{"35":1,"41":1,"46":1}}],["webkitexitfullscreen",{"2":{"43":2}}],["webkitrequestfullscreen",{"2":{"43":2}}],["web",{"2":{"1":1,"12":1,"21":1}}],["world",{"2":{"23":1}}],["works",{"2":{"48":1}}],["work",{"2":{"1":1,"46":1}}],["wkwebview",{"2":{"21":1}}],["window",{"2":{"47":1,"57":1}}],["wide",{"2":{"41":1}}],["width=device",{"2":{"49":1}}],["width=",{"2":{"47":1}}],["width",{"2":{"23":2,"41":5,"43":1,"47":1,"49":3,"51":1,"53":1,"57":1}}],["wikipedia",{"2":{"23":1}}],["will",{"2":{"19":1,"35":2}}],["withbase",{"2":{"43":3,"47":3,"51":3,"53":2}}],["with",{"2":{"15":1,"23":1,"25":1,"34":3,"35":2,"38":1,"43":1,"46":1,"54":4}}],["without",{"2":{"13":1,"43":1,"48":1}}],["watch",{"2":{"43":1}}],["warning",{"2":{"15":1,"25":1}}],["want",{"2":{"15":1,"23":1,"25":1,"32":1,"33":2,"46":1,"52":1}}],["what",{"2":{"39":1}}],["whether",{"2":{"34":1,"35":1}}],["whenever",{"2":{"26":2}}],["when",{"2":{"13":1,"15":1,"23":1,"25":1,"26":1,"27":1,"32":1,"33":1,"34":1,"35":1,"43":1,"46":3}}],["white",{"2":{"41":1,"43":1}}],["while",{"2":{"25":1}}],["which",{"2":{"6":1,"14":1,"24":1,"25":1,"34":1,"54":1}}],["why",{"2":{"23":1,"25":1,"46":1}}],["ts",{"2":{"41":1,"53":1}}],["turning",{"2":{"35":1}}],["turn",{"2":{"35":1,"52":1}}],["turned",{"2":{"26":1}}],["taking",{"2":{"57":1}}],["takes",{"2":{"41":1}}],["take",{"2":{"3":1,"25":1,"54":1}}],["target",{"2":{"33":1}}],["triedrearcamera",{"2":{"51":2}}],["triedfrontcamera",{"2":{"34":2,"51":2}}],["try",{"2":{"34":1}}],["transparent",{"2":{"33":1}}],["track=",{"2":{"41":1,"49":1}}],["trackfunctionoptions",{"2":{"41":3}}],["trackfunctionselected",{"2":{"41":3}}],["tracking",{"2":{"33":1}}],["track",{"0":{"33":1},"2":{"33":1,"41":1}}],["true",{"2":{"32":1,"35":1,"41":1,"45":3,"47":2,"51":2,"57":2}}],["troubleshooting",{"2":{"21":1}}],["title>",{"2":{"49":1}}],["title>simple",{"2":{"49":1}}],["tip",{"2":{"23":1}}],["timeout",{"2":{"47":2,"57":3}}],["times",{"2":{"23":2,"33":1,"46":2}}],["time",{"2":{"3":1,"12":1,"25":1,"33":1,"34":1,"41":1,"56":1,"57":1}}],["textalign",{"2":{"41":1}}],["text",{"2":{"39":1,"41":7,"45":1,"55":5,"57":1}}],["tell",{"2":{"35":2}}],["template>",{"2":{"7":2,"39":2,"41":2,"43":2,"45":2,"47":2,"51":2,"53":2,"55":2,"57":2}}],["template",{"2":{"7":1}}],["technically",{"2":{"7":1}}],["type=",{"2":{"7":1,"41":1}}],["type",{"2":{"3":1,"6":1,"12":1,"13":2,"14":1,"15":1,"23":1,"24":1,"25":1,"26":1,"27":1,"32":1,"33":1,"34":2,"35":1}}],["toggle",{"2":{"43":1,"53":1}}],["torchactive",{"2":{"53":6}}],["torchnotsupported",{"2":{"53":4}}],["torch=",{"2":{"35":1,"53":1}}],["torch",{"0":{"35":1,"52":1},"1":{"53":1},"2":{"35":6,"52":1,"53":3}}],["top",{"2":{"23":2,"43":1,"51":1,"53":1}}],["todo",{"2":{"4":1}}],["to",{"0":{"50":1},"1":{"51":1},"2":{"1":2,"3":2,"7":2,"13":1,"15":4,"21":1,"23":2,"25":5,"26":1,"27":1,"32":2,"33":9,"34":3,"35":1,"41":2,"42":1,"43":1,"44":2,"46":2,"48":1,"49":1,"50":1,"51":2,"52":1,"54":1,"57":1}}],["t",{"2":{"1":1,"13":2,"19":1,"23":1,"25":2,"33":1,"34":1,"35":1,"39":2,"41":1,"43":1,"46":2,"51":2}}],["thing",{"2":{"46":1}}],["this",{"2":{"1":2,"10":1,"15":2,"19":1,"21":1,"23":1,"25":1,"26":1,"27":1,"32":1,"33":7,"34":4,"35":2,"39":6,"41":3,"43":7,"45":5,"46":1,"47":6,"48":2,"49":2,"51":7,"54":1,"55":1,"57":14}}],["than",{"0":{"46":1},"1":{"47":1},"2":{"21":1,"41":1,"49":1}}],["that",{"2":{"15":1,"23":2,"33":2,"34":1,"35":1,"38":1,"39":2,"41":1,"42":1,"46":4,"48":1,"52":1}}],["though",{"2":{"3":1,"12":1,"46":1}}],["there",{"2":{"27":1,"44":1}}],["then",{"2":{"25":1}}],["they",{"2":{"25":2}}],["their",{"2":{"25":2,"50":1}}],["them",{"2":{"7":1,"25":1,"48":1}}],["the",{"2":{"1":2,"3":9,"6":1,"7":4,"10":2,"12":9,"14":1,"15":5,"19":1,"21":1,"23":11,"24":1,"25":7,"26":3,"27":1,"32":3,"33":6,"34":8,"35":13,"37":2,"38":1,"41":11,"42":3,"43":5,"44":5,"46":7,"48":1,"49":1,"50":1,"52":4,"54":2,"56":2,"57":1}}],["dx",{"2":{"41":1}}],["databar",{"2":{"41":2}}],["data",{"2":{"33":1,"39":1,"41":1,"43":1,"45":1,"47":1,"51":1,"55":1,"57":1}}],["danger",{"2":{"33":1}}],["due",{"2":{"13":1,"35":1}}],["dropdown",{"2":{"41":1,"54":1}}],["dropimagedecodeerror",{"2":{"13":1,"39":1}}],["dropimagefetcherror",{"2":{"13":1,"39":1}}],["dropped",{"2":{"13":4}}],["drop",{"0":{"38":1},"1":{"39":1},"2":{"12":2,"13":2,"14":2,"15":2,"19":2,"38":1,"39":7}}],["draggingover",{"2":{"15":5}}],["dragging",{"2":{"15":1}}],["dragover=",{"2":{"15":1,"39":1}}],["dragover",{"0":{"15":1},"2":{"15":2,"39":5}}],["drag",{"0":{"38":1},"1":{"39":1},"2":{"12":1,"13":2,"38":1}}],["doctype",{"2":{"49":1}}],["document",{"2":{"43":9}}],["docs",{"2":{"4":1,"16":1,"28":1,"29":1,"30":1}}],["don",{"2":{"19":1,"23":1,"25":1,"33":1,"46":1,"51":2}}],["dom",{"2":{"15":1}}],["domain",{"2":{"13":1}}],["do",{"2":{"15":1}}],["does",{"2":{"7":1}}],["doesn",{"2":{"1":1,"34":1,"35":1,"43":1,"46":1}}],["did",{"2":{"27":1}}],["dist",{"2":{"49":2}}],["distributed",{"2":{"37":1}}],["display",{"2":{"41":1,"47":1,"57":1}}],["displayed",{"2":{"23":1,"56":1}}],["disabled=",{"2":{"53":1}}],["disabled",{"0":{"7":1},"2":{"7":1}}],["div>",{"2":{"15":1,"39":3,"41":4,"43":1,"45":3,"47":3,"49":2,"51":2,"53":2,"55":2,"57":5}}],["div",{"2":{"15":1,"19":1,"39":1,"43":1,"45":1,"47":1,"49":2,"57":3}}],["different",{"2":{"13":1,"26":1,"41":1}}],["directly",{"2":{"3":1,"12":1,"54":1}}],["dialog",{"2":{"3":1,"43":1,"54":1,"55":1}}],["destroyed",{"2":{"45":4}}],["destroy",{"2":{"44":1}}],["desk",{"2":{"41":1}}],["desktop",{"2":{"12":1,"38":1,"43":1}}],["delay",{"2":{"44":1,"57":1}}],["demos",{"2":{"48":1}}],["demo",{"0":{"40":1},"1":{"41":1},"2":{"33":1,"48":1,"49":2}}],["deviceid",{"2":{"41":3,"53":3}}],["device",{"2":{"27":1,"33":1,"34":2,"35":1,"41":3,"49":1,"50":1,"51":2,"53":4}}],["devices",{"2":{"3":1,"35":3,"41":2,"52":1,"53":5}}],["decision",{"2":{"25":1}}],["decoded",{"2":{"13":1,"23":2,"39":1,"46":3}}],["decode",{"0":{"4":1,"16":1,"28":1,"38":1,"54":1},"1":{"39":1,"55":1},"2":{"39":1,"41":1,"47":1,"55":1,"57":1}}],["deny",{"2":{"25":1}}],["denied",{"2":{"25":1,"27":1}}],["defined",{"2":{"19":1}}],["define",{"2":{"7":1}}],["defines",{"2":{"6":1,"14":1,"24":1,"33":1}}],["defaultconstraintoptions",{"2":{"41":3}}],["default",{"0":{"19":1,"37":1},"2":{"6":1,"14":1,"24":1,"32":1,"33":1,"34":1,"35":1,"39":1,"41":3,"43":1,"45":1,"47":1,"51":1,"55":2,"57":1}}],["detection",{"2":{"23":1,"41":1}}],["detect=",{"2":{"13":1,"23":1,"39":1,"41":1,"47":1,"49":1,"55":1,"57":1}}],["detectedcode",{"2":{"41":7,"49":2}}],["detectedcodes",{"2":{"23":1,"39":3,"41":9,"47":2,"49":4,"55":3}}],["detected",{"2":{"6":1,"14":1,"23":1,"24":1,"33":2,"41":2,"52":1}}],["detectedbarcode",{"2":{"3":1,"12":1,"23":1}}],["detect",{"0":{"3":1,"12":1,"23":1},"2":{"3":2,"4":1,"12":2,"16":1,"23":3,"28":1,"46":1}}],["depends",{"2":{"21":1}}],["depend",{"2":{"1":1,"10":1}}],["icon",{"2":{"53":2}}],["ie",{"2":{"43":2}}],["id=",{"2":{"41":1,"49":1}}],["id",{"2":{"41":2}}],["idk",{"2":{"13":1}}],["implementation",{"2":{"43":1}}],["important",{"2":{"43":1}}],["import",{"2":{"39":1,"41":2,"43":2,"45":1,"47":2,"51":2,"53":3,"55":1,"57":1}}],["img",{"2":{"43":2,"47":1,"51":2,"53":2}}],["img>",{"2":{"13":1}}],["image",{"2":{"3":1,"7":2,"12":2,"13":1,"39":1,"54":1}}],["images",{"2":{"3":2,"12":3,"38":1,"39":2}}],["if=",{"2":{"39":1,"45":2,"51":2,"53":2,"57":3}}],["if",{"2":{"3":1,"12":1,"13":2,"15":1,"19":1,"23":1,"25":1,"27":6,"32":1,"33":1,"34":1,"35":1,"39":2,"41":7,"43":10,"49":7,"51":2,"53":2,"54":1}}],["ios",{"2":{"1":1,"21":7,"41":1}}],["inconsistent",{"2":{"52":1}}],["increased",{"2":{"33":1}}],["index",{"2":{"43":1}}],["indicator",{"0":{"44":1},"1":{"45":1},"2":{"25":2,"44":1,"45":2}}],["indicated",{"2":{"3":1,"12":1,"23":1}}],["invasive",{"2":{"43":1}}],["invoke",{"2":{"41":1}}],["inline",{"2":{"41":1}}],["infrared",{"2":{"41":1}}],["initial",{"2":{"49":1}}],["initialization",{"2":{"27":1}}],["init",{"0":{"29":1}}],["internally",{"2":{"41":1}}],["internal",{"2":{"23":1}}],["into",{"2":{"12":1}}],["insecurecontexterror",{"2":{"41":1,"49":1}}],["instance",{"2":{"33":1}}],["installed",{"2":{"27":1,"41":2,"49":1}}],["instead",{"2":{"4":1,"15":1,"16":1,"28":1,"29":1,"30":1}}],["inside",{"2":{"19":1}}],["input",{"2":{"3":1,"7":3,"32":1,"33":1,"34":1,"35":1,"41":1}}],["in",{"2":{"1":1,"12":1,"21":1,"23":2,"25":1,"27":2,"33":3,"37":1,"41":7,"42":1,"43":1,"46":2,"48":2,"49":3,"52":1,"53":1,"55":1,"57":1}}],["itf",{"2":{"41":1}}],["items",{"2":{"23":1}}],["its",{"2":{"19":1,"33":1}}],["it",{"2":{"1":1,"19":1,"23":1,"25":3,"33":1,"38":1,"46":1,"54":1,"56":1,"57":1}}],["isvalid",{"2":{"57":6}}],["isdraggingover",{"2":{"39":2}}],["issue",{"2":{"13":1}}],["is",{"2":{"1":2,"3":3,"7":1,"10":2,"12":2,"13":1,"15":2,"19":1,"21":2,"23":6,"25":2,"26":2,"27":3,"32":2,"33":4,"34":6,"35":5,"39":1,"41":4,"43":2,"44":1,"46":5,"49":3,"52":1,"54":2,"56":2,"57":2}}],["switchcamera",{"2":{"51":2}}],["switch",{"0":{"50":1},"1":{"51":1},"2":{"51":3}}],["switching",{"2":{"26":1}}],["svg",{"2":{"43":2,"47":1,"51":1,"53":2}}],["skipping",{"2":{"43":1}}],["sponsored",{"2":{"52":1}}],["space",{"2":{"41":1,"42":1}}],["span>",{"2":{"41":1}}],["span",{"2":{"41":1}}],["spec",{"2":{"23":1}}],["src=",{"2":{"43":1,"47":1,"49":2,"51":1,"53":1}}],["src",{"2":{"39":1,"41":1,"43":1,"45":1,"47":1,"51":1,"53":1,"55":1,"57":1}}],["side",{"2":{"54":1}}],["single",{"2":{"48":1}}],["size",{"2":{"45":1,"57":1}}],["simply",{"2":{"42":1}}],["simple",{"0":{"48":1},"1":{"49":1},"2":{"3":1}}],["silently",{"2":{"35":1}}],["should",{"2":{"33":1,"38":1,"41":1}}],["showscanconfirmation",{"2":{"47":4}}],["show=",{"2":{"47":1}}],["show",{"0":{"44":1},"1":{"45":1},"2":{"25":1,"32":1,"44":1}}],["success",{"2":{"57":3}}],["successful",{"2":{"32":1}}],["suitable",{"2":{"27":1,"41":1,"49":1}}],["sure",{"2":{"25":1}}],["supports",{"2":{"54":1}}],["supporting",{"2":{"3":1}}],["supported",{"2":{"1":1,"6":1,"10":1,"14":1,"21":1,"23":1,"24":1,"35":4,"41":2,"49":1,"53":1}}],["support",{"0":{"1":1,"10":1,"21":1},"2":{"21":1,"35":1,"52":1}}],["s",{"2":{"23":2,"25":1,"39":1,"46":2,"57":1}}],["sans",{"2":{"41":1}}],["safe",{"2":{"33":1}}],["safari",{"2":{"21":2,"43":2}}],["same",{"0":{"46":1},"1":{"47":1},"2":{"3":2,"12":2,"13":1,"23":1,"35":2,"46":2}}],["solid",{"2":{"49":1}}],["sorry",{"2":{"39":1}}],["source",{"0":{"39":1,"41":1,"43":1,"45":1,"47":1,"49":1,"51":1,"53":1,"55":1,"57":1}}],["soon",{"2":{"25":1}}],["so",{"2":{"19":1,"32":1,"33":1,"34":1,"42":1,"43":2,"54":1,"56":1,"57":1}}],["sometimes",{"2":{"41":1}}],["something",{"2":{"15":1}}],["some",{"2":{"15":1,"32":1,"39":1,"44":1,"57":1}}],["slots",{"0":{"8":1,"18":1,"36":1},"1":{"19":1,"37":1},"2":{"8":1}}],["step",{"2":{"48":1}}],["style=",{"2":{"49":2}}],["style",{"2":{"41":1,"43":1,"45":1,"47":1,"51":1,"53":1,"57":1}}],["style>",{"2":{"39":2,"41":1,"43":1,"45":1,"47":1,"51":1,"53":1,"57":1}}],["styling",{"2":{"15":1}}],["store",{"2":{"33":1}}],["stuff",{"2":{"33":1}}],["stroketext",{"2":{"41":1}}],["strokerect",{"2":{"41":1,"49":1}}],["stroke",{"2":{"41":1}}],["strokestyle",{"2":{"41":3,"49":1}}],["stringify",{"2":{"39":1,"41":1,"47":1,"49":1,"55":1}}],["streamapinotsupportederror",{"2":{"27":1,"41":1,"49":1}}],["streaming",{"2":{"25":1}}],["stream>",{"2":{"23":1,"24":1,"25":1,"27":1,"34":1,"35":1,"37":2,"43":1,"45":1,"47":1,"49":1,"51":1,"53":1,"57":1}}],["stream",{"2":{"21":1,"23":2,"24":1,"25":2,"27":1,"33":1,"34":3,"35":2,"37":2,"41":2,"43":2,"44":1,"45":1,"47":1,"49":2,"51":1,"53":1,"56":1,"57":1}}],["structure",{"2":{"3":1,"12":1,"23":1}}],["still",{"2":{"3":1,"12":1,"23":1,"56":1}}],["standalone",{"2":{"38":1}}],["starting",{"2":{"52":1}}],["startfrontcamera",{"2":{"34":1}}],["start",{"2":{"25":1}}],["startswith",{"2":{"57":1}}],["starts",{"2":{"25":1}}],["started",{"2":{"3":1,"26":1}}],["stackoverflow",{"2":{"1":1}}],["scale=1",{"2":{"49":1}}],["scans",{"2":{"32":1}}],["scanning",{"2":{"25":1,"33":1,"41":1,"46":1,"54":1}}],["scanned",{"2":{"3":1,"12":1,"23":1,"38":1,"56":1}}],["scan",{"0":{"46":1},"1":{"47":1},"2":{"23":1,"46":1,"47":2}}],["scoped>",{"2":{"41":1,"43":1,"45":1,"47":1,"51":1,"53":1,"57":1}}],["script",{"2":{"41":1,"49":2,"53":1}}],["script>",{"2":{"39":2,"41":1,"43":2,"45":2,"47":2,"49":4,"51":2,"53":1,"55":2,"57":2}}],["screen",{"2":{"1":1,"21":1,"42":1}}],["secure",{"2":{"41":2,"49":2}}],["second",{"2":{"23":1,"25":1,"33":2,"46":1}}],["serif`",{"2":{"41":1}}],["served",{"2":{"27":1}}],["several",{"2":{"33":1}}],["settimeout",{"2":{"47":1,"57":1}}],["setting",{"2":{"32":1}}],["setup",{"2":{"41":1,"49":1,"53":1}}],["set",{"2":{"7":1}}],["select>",{"2":{"41":2,"53":1,"55":1}}],["select",{"2":{"3":1,"41":6,"53":1,"55":1}}],["selectedbarcodeformats",{"2":{"41":2}}],["selectedconstraints",{"2":{"41":3}}],["selected",{"2":{"3":1,"53":6,"55":3}}],["seem",{"2":{"51":2}}],["seems",{"2":{"27":1}}],["see",{"2":{"1":2,"10":1,"21":6,"48":1}}],["new",{"2":{"23":1,"34":1,"47":1,"57":1}}],["newest",{"2":{"1":1,"10":1}}],["need",{"2":{"15":1,"25":1,"41":1,"48":1,"49":1}}],["null",{"2":{"7":2,"39":3,"43":1,"53":3,"55":1,"57":1}}],["navigator",{"2":{"41":1,"53":1}}],["name",{"2":{"13":2,"27":6,"34":1,"39":2,"41":8,"49":8,"51":1}}],["name=",{"2":{"7":1,"49":1}}],["native",{"2":{"1":1,"10":1,"15":2,"21":2}}],["norearcamera",{"2":{"51":3}}],["nofrontcamera",{"2":{"51":3}}],["nowrap",{"2":{"41":1,"47":1,"57":1}}],["none",{"2":{"27":1}}],["no",{"2":{"3":1,"8":1,"12":1,"17":1,"21":1,"27":1,"34":1,"41":1,"49":1}}],["noticed",{"2":{"46":1}}],["nothing",{"2":{"41":1,"54":1}}],["note",{"2":{"33":1,"41":1,"43":1,"52":1}}],["notreadableerror",{"2":{"27":1,"41":1,"49":1}}],["notsupportederror",{"2":{"27":1,"41":1,"49":1}}],["notfounderror",{"2":{"27":1,"41":1,"49":1}}],["notallowederror",{"2":{"27":1,"41":1,"49":1}}],["not",{"2":{"1":1,"7":1,"10":1,"13":1,"15":1,"21":1,"27":1,"33":1,"35":2,"39":1,"41":3,"42":2,"49":2,"53":1,"54":1,"57":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/pr-preview/pr-449/assets/chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js b/pr-preview/pr-449/assets/chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js new file mode 100644 index 00000000..3b8aca1c --- /dev/null +++ b/pr-preview/pr-449/assets/chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js @@ -0,0 +1 @@ +import{d as X,h as i,y as u,j as Y,A as Z,g as O,o as ee,c as te,k as g,O as ae,a4 as oe,a7 as ne,r as se}from"./framework.BtL3uYYi.js";import{s as p,b as n,c as ie,d as re,k as ce}from"./camera.BJQyjlnn.js";const ue=X({__name:"QrcodeStream",props:{constraints:{type:Object,default(){return{facingMode:"environment"}}},formats:{type:Array,default:()=>["qr_code"]},paused:{type:Boolean,default:!1},torch:{type:Boolean,default:!1},track:{type:Function}},emits:["detect","camera-on","camera-off","error"],setup(N,{emit:j}){const o=N,h=j,_=i(o.constraints),w=i(o.formats);u(()=>o.constraints,(t,e)=>{JSON.stringify(t)!==JSON.stringify(e)&&(_.value=t)},{deep:!0}),u(()=>o.formats,(t,e)=>{JSON.stringify(t)!==JSON.stringify(e)&&(w.value=t)},{deep:!0});const f=i(),v=i(),l=i(),m=i(!1),y=i(!1);Y(()=>{y.value=!0}),Z(()=>{p()});const M=O(()=>({torch:o.torch,constraints:_.value,shouldStream:y.value&&!o.paused}));u(M,async t=>{const e=l.value;n(e!==void 0,"cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined.");const a=f.value;n(a!==void 0,"cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined.");const d=a.getContext("2d");if(n(d!==null,"if cavnas is defined, canvas 2d context should also be non-null"),t.shouldStream){p(),m.value=!1;try{const r=await ie(e,t);y.value?(m.value=!0,h("camera-on",r)):await p()}catch(r){h("error",r)}}else a.width=e.videoWidth,a.height=e.videoHeight,d.drawImage(e,0,0,e.videoWidth,e.videoHeight),p(),m.value=!1,h("camera-off")},{deep:!0}),u(w,t=>{y.value&&re(t)});const S=O(()=>M.value.shouldStream&&m.value);u(S,t=>{if(t){n(f.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined"),x(f.value),n(v.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined"),x(v.value);const e=()=>o.track===void 0?500:40;n(l.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus video element is defined"),ce(l.value,{detectHandler:a=>h("detect",a),formats:w.value,locateHandler:J,minDelay:e()})}});const x=t=>{const e=t.getContext("2d");n(e!==null,"canvas 2d context should always be non-null"),e.clearRect(0,0,t.width,t.height)},J=t=>{const e=v.value;n(e!==void 0,"onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined.");const a=l.value;if(n(a!==void 0,"onLocate handler should only be called when component is mounted. Thus video element is always defined."),t.length===0||o.track===void 0)x(e);else{const d=a.offsetWidth,r=a.offsetHeight,k=a.videoWidth,R=a.videoHeight,B=Math.max(d/k,r/R),T=k*B,C=R*B,D=T/k,E=C/R,F=(d-T)/2,z=(r-C)/2,H=({x:c,y:s})=>({x:Math.floor(c*D),y:Math.floor(s*E)}),L=({x:c,y:s})=>({x:Math.floor(c+F),y:Math.floor(s+z)}),I=t.map(c=>{const{boundingBox:s,cornerPoints:Q}=c,{x:U,y:V}=L(H({x:s.x,y:s.y})),{x:$,y:G}=H({x:s.width,y:s.height});return{...c,cornerPoints:Q.map(K=>L(H(K))),boundingBox:DOMRectReadOnly.fromRect({x:U,y:V,width:$,height:G})}});e.width=a.offsetWidth,e.height=a.offsetHeight;const P=e.getContext("2d");o.track(I,P)}},q={width:"100%",height:"100%",position:"relative","z-index":"0"},W={width:"100%",height:"100%",position:"absolute",top:"0",left:"0"},b={width:"100%",height:"100%","object-fit":"cover"},A=O(()=>S.value?b:{...b,visibility:"hidden",position:"absolute"});return(t,e)=>(ee(),te("div",{style:q},[g("video",{ref_key:"videoRef",ref:l,style:ae(A.value),autoplay:"",muted:"",playsinline:""},null,4),oe(g("canvas",{id:"qrcode-stream-pause-frame",ref_key:"pauseFrameRef",ref:f,style:b},null,512),[[ne,!S.value]]),g("canvas",{id:"qrcode-stream-tracking-layer",ref_key:"trackingLayerRef",ref:v,style:W},null,512),g("div",{style:W},[se(t.$slots,"default")])]))}});export{ue as _}; diff --git a/pr-preview/pr-449/assets/chunks/VPLocalSearchBox.BPLfKR6Q.js b/pr-preview/pr-449/assets/chunks/VPLocalSearchBox.BPLfKR6Q.js new file mode 100644 index 00000000..33b58787 --- /dev/null +++ b/pr-preview/pr-449/assets/chunks/VPLocalSearchBox.BPLfKR6Q.js @@ -0,0 +1,13 @@ +import{Y as pt,h as oe,y as Ve,ao as kt,ap as Nt,d as It,G as xe,aq as et,g as Fe,ar as Dt,as as Ot,z as _t,at as Rt,j as Oe,P as he,W as Ee,au as Mt,U as Lt,V as zt,av as Pt,Z as Bt,v as Vt,aw as $t,o as ee,b as Wt,k as E,a2 as jt,m as U,a4 as Kt,ax as Jt,ay as Ut,c as re,n as tt,e as Se,E as rt,F as at,a as ve,t as pe,az as Ht,p as Gt,q as qt,a9 as nt,aA as Qt,ad as Yt,aj as Zt,_ as Xt}from"./framework.BtL3uYYi.js";import{u as er,c as tr,L as rr}from"./theme.C1T0t5Zq.js";const ar={root:()=>pt(()=>import("./@localSearchIndexroot.BQqEPrZR.js"),__vite__mapDeps([]))};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Te=mt.join(","),yt=typeof Element>"u",ue=yt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,ke=!yt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ne=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},nr=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},gt=function(e,t,r){if(Ne(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Te));return t&&ue.call(e,Te)&&n.unshift(e),n=n.filter(r),n},bt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ne(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var d=ue.call(i,Te);d&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var h=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ne(h,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(h&&v){var y=o(h===!0?i.children:h.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||nr(e))&&!wt(e)?0:e.tabIndex},ir=function(e,t){var r=se(e);return r<0&&t&&!wt(e)?0:r},or=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},sr=function(e){return xt(e)&&e.type==="hidden"},ur=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},lr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=ke(e);if(u&&!u.shadowRoot&&n(u)===!0)return it(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(hr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return it(e);return!1},pr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},yr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=ir(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(or).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},gr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:$e.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:mr}):r=gt(e,t.includeContainer,$e.bind(null,t)),yr(r)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:Ie.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=gt(e,t.includeContainer,Ie.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Te)===!1?!1:$e(t,e)},wr=mt.concat("iframe").join(","),_e=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,wr)===!1?!1:Ie(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function ot(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),t.push.apply(t,r)}return t}function st(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},Sr=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Ar=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Cr=function(e){return ge(e)&&!e.shiftKey},Tr=function(e){return ge(e)&&e.shiftKey},lt=function(e){return setTimeout(e,0)},ct=function(e,t){var r=-1;return e.every(function(n,a){return t(n)?(r=a,!1):!0}),r},me=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1?p-1:0),I=1;I=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||d("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=gr(c,a.tabbableOptions),p=br(c,a.tabbableOptions),N=f.length>0?f[0]:void 0,I=f.length>0?f[f.length-1]:void 0,M=p.find(function(m){return le(m)}),z=p.slice().reverse().find(function(m){return le(m)}),P=!!f.find(function(m){return se(m)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:P,firstTabbableNode:N,lastTabbableNode:I,firstDomTabbableNode:M,lastDomTabbableNode:z,nextTabbableNode:function(x){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,j=f.indexOf(x);return j<0?$?p.slice(p.indexOf(x)+1).find(function(G){return le(G)}):p.slice(0,p.indexOf(x)).reverse().find(function(G){return le(G)}):f[j+($?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!d("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function w(c){var f=c.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?w(f.shadowRoot):f},b=function w(c){if(c!==!1&&c!==y(document)){if(!c||!c.focus){w(h());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,Sr(c)&&c.select()}},S=function(c){var f=d("setReturnFocus",c);return f||(f===!1?!1:c)},g=function(c){var f=c.target,p=c.event,N=c.isBackward,I=N===void 0?!1:N;f=f||Ae(p),v();var M=null;if(i.tabbableGroups.length>0){var z=l(f,p),P=z>=0?i.containerGroups[z]:void 0;if(z<0)I?M=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:M=i.tabbableGroups[0].firstTabbableNode;else if(I){var m=ct(i.tabbableGroups,function(B){var J=B.firstTabbableNode;return f===J});if(m<0&&(P.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!P.nextTabbableNode(f,!1))&&(m=z),m>=0){var x=m===0?i.tabbableGroups.length-1:m-1,$=i.tabbableGroups[x];M=se(f)>=0?$.lastTabbableNode:$.lastDomTabbableNode}else ge(p)||(M=P.nextTabbableNode(f,!1))}else{var j=ct(i.tabbableGroups,function(B){var J=B.lastTabbableNode;return f===J});if(j<0&&(P.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!P.nextTabbableNode(f))&&(j=z),j>=0){var G=j===i.tabbableGroups.length-1?0:j+1,q=i.tabbableGroups[G];M=se(f)>=0?q.firstTabbableNode:q.firstDomTabbableNode}else ge(p)||(M=P.nextTabbableNode(f))}}else M=d("fallbackFocus");return M},A=function(c){var f=Ae(c);if(!(l(f,c)>=0)){if(me(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}me(a.allowOutsideClick,c)||c.preventDefault()}},T=function(c){var f=Ae(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var N,I=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var M=l(i.mostRecentlyFocusedNode),z=i.containerGroups[M].tabbableNodes;if(z.length>0){var P=z.findIndex(function(m){return m===i.mostRecentlyFocusedNode});P>=0&&(a.isKeyForward(i.recentNavEvent)?P+1=0&&(N=z[P-1],I=!1))}}else i.containerGroups.some(function(m){return m.tabbableNodes.some(function(x){return se(x)>0})})||(I=!1);else I=!1;I&&(N=g({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),b(N||i.mostRecentlyFocusedNode||h())}i.recentNavEvent=void 0},F=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=g({event:c,isBackward:f});p&&(ge(c)&&c.preventDefault(),b(p))},L=function(c){if(Ar(c)&&me(a.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(a.isKeyForward(c)||a.isKeyBackward(c))&&F(c,a.isKeyBackward(c))},R=function(c){var f=Ae(c);l(f,c)>=0||me(a.clickOutsideDeactivates,c)||me(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},V=function(){if(i.active)return ut.activateTrap(n,s),i.delayInitialFocusTimer=a.delayInitialFocus?lt(function(){b(h())}):b(h()),r.addEventListener("focusin",T,!0),r.addEventListener("mousedown",A,{capture:!0,passive:!1}),r.addEventListener("touchstart",A,{capture:!0,passive:!1}),r.addEventListener("click",R,{capture:!0,passive:!1}),r.addEventListener("keydown",L,{capture:!0,passive:!1}),s},k=function(){if(i.active)return r.removeEventListener("focusin",T,!0),r.removeEventListener("mousedown",A,!0),r.removeEventListener("touchstart",A,!0),r.removeEventListener("click",R,!0),r.removeEventListener("keydown",L,!0),s},_=function(c){var f=c.some(function(p){var N=Array.from(p.removedNodes);return N.some(function(I){return I===i.mostRecentlyFocusedNode})});f&&b(h())},C=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(_):void 0,O=function(){C&&(C.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){C.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),N=u(c,"checkCanFocusTrap");N||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f==null||f();var I=function(){N&&v(),V(),O(),p==null||p()};return N?(N(i.containers.concat()).then(I,I),this):(I(),this)},deactivate:function(c){if(!i.active)return this;var f=st({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,k(),i.active=!1,i.paused=!1,O(),ut.deactivateTrap(n,s);var p=u(f,"onDeactivate"),N=u(f,"onPostDeactivate"),I=u(f,"checkCanReturnFocus"),M=u(f,"returnFocus","returnFocusOnDeactivate");p==null||p();var z=function(){lt(function(){M&&b(S(i.nodeFocusedBeforeActivation)),N==null||N()})};return M&&I?(I(S(i.nodeFocusedBeforeActivation)).then(z,z),this):(z(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f==null||f(),k(),O(),p==null||p(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f==null||f(),v(),V(),O(),p==null||p(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),O(),this}},s.updateContainerElements(e),s};function Ir(o,e={}){let t;const{immediate:r,...n}=e,a=oe(!1),i=oe(!1),s=h=>t&&t.activate(h),u=h=>t&&t.deactivate(h),l=()=>{t&&(t.pause(),i.value=!0)},d=()=>{t&&(t.unpause(),i.value=!1)};return Ve(()=>kt(o),h=>{h&&(t=Nr(h,{...n,onActivate(){a.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){a.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),Nt(()=>u()),{hasFocus:a,isPaused:i,activate:s,deactivate:u,pause:l,unpause:d}}class fe{constructor(e,t=!0,r=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=n}static matches(e,t){const r=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let a=!1;return r.every(i=>n.call(e,i)?(a=!0,!1):!0),a}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(r=>{const n=t.filter(a=>a.contains(r)).length>0;t.indexOf(r)===-1&&!n&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let n;try{const a=e.contentWindow;if(n=a.document,!a||!n)throw new Error("iframe inaccessible")}catch{r()}n&&t(n)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let n=!1,a=null;const i=()=>{if(!n){n=!0,clearTimeout(a);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,n=>{r++,this.waitForIframes(n.querySelector("html"),()=>{--r||t()})},n=>{n||t()})}forEachIframe(e,t,r,n=()=>{}){let a=e.querySelectorAll("iframe"),i=a.length,s=0;a=Array.prototype.slice.call(a);const u=()=>{--i<=0&&n(s)};i||u(),a.forEach(l=>{fe.matches(l,this.exclude)?u():this.onIframeReady(l,d=>{t(l)&&(s++,r(d)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new fe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const n=e.compareDocumentPosition(r),a=Node.DOCUMENT_POSITION_PRECEDING;if(n&a)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,n){let a=!1,i=!1;return n.forEach((s,u)=>{s.val===r&&(a=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(a===!1&&!i?n.push({val:r,handled:!0}):a!==!1&&!i&&(n[a].handled=!0),!0):(a===!1&&n.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,n){e.forEach(a=>{a.handled||this.getIframeContents(a.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,n)})})}iterateThroughNodes(e,t,r,n,a){const i=this.createIterator(t,e,n);let s=[],u=[],l,d,h=()=>({prevNode:d,node:l}=this.getIteratorNode(i),l);for(;h();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,d,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,y=>u.push(y),n)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,n),a()}forEachNode(e,t,r,n=()=>{}){const a=this.getContexts();let i=a.length;i||n(),a.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(s,u):u()})}}let Dr=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new fe(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let a in t)if(t.hasOwnProperty(a)){const i=t[a],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(a):this.escapeStr(a),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),n+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,r,n)=>{let a=n.charAt(r+1);return/[(|)\\]/.test(a)||a===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(a=>{r.every(i=>{if(i.indexOf(a)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,n=typeof r=="string"?r:r.value,a=typeof r=="string"?[]:r.limiters,i="";switch(a.forEach(s=>{i+=`|${this.escapeStr(s)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(r=>{this.opt.separateWordSearch?r.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,n)=>n.length-r.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let r=0;return e.sort((n,a)=>n.start-a.start).forEach(n=>{let{start:a,end:i,valid:s}=this.callNoMatchOnInvalidRanges(n,r);s&&(n.start=a,n.length=i-a,t.push(n),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,n,a=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),n=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?a=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:r,end:n,valid:a}}checkWhitespaceRanges(e,t,r){let n,a=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,n=u+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||n-u<0||u>i||n>i?(a=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,n).replace(/\s+/g,"")===""&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:n,valid:a}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{r.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return fe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const n=this.opt.element?this.opt.element:"mark",a=e.splitText(t),i=a.splitText(r-t);let s=document.createElement(n);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=a.textContent,a.parentNode.replaceChild(s,a),i}wrapRangeInMappedTextNode(e,t,r,n,a){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!n(i.node))return!1;const l=t-i.start,d=(r>i.end?i.end:r)-i.start,h=e.value.substr(0,i.start),v=e.value.substr(d+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,d),e.value=h+v,e.nodes.forEach((y,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=d),e.nodes[b].end-=d)}),r-=d,a(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let d=l.index;if(i!==0)for(let h=1;h{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let h=1;hr(u[i],h),(h,v)=>{e.lastIndex=v,n(h)})}a()})}wrapRangeFromIndex(e,t,r,n){this.getTextNodes(a=>{const i=a.value.length;e.forEach((s,u)=>{let{start:l,end:d,valid:h}=this.checkWhitespaceRanges(s,i,a.value);h&&this.wrapRangeInMappedTextNode(a,l,d,v=>t(v,s,a.value.substring(l,d),u),v=>{r(v,s)})}),n()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let r=0,n="wrapMatches";const a=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),a,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,n="wrapMatches";const{keywords:a,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let d=new RegExp(this.createRegExp(l),`gm${s}`),h=0;this.log(`Searching with expression "${d}"`),this[n](d,1,(v,y)=>this.opt.filter(y,l,r,h),v=>{h++,r++,this.opt.each(v)},()=>{h===0&&this.opt.noMatch(l),a[i-1]===l?this.opt.done(r):u(a[a.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(a[0])}markRanges(e,t){this.opt=t;let r=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(a,i,s,u)=>this.opt.filter(a,i,s,u),(a,i)=>{r++,this.opt.each(a,i)},()=>{this.opt.done(r)})):this.opt.done(r)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,r=>{this.unwrapMatches(r)},r=>{const n=fe.matches(r,t),a=this.matchesExclude(r);return!n||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Or(o){const e=new Dr(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var W=function(){return W=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&a[a.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function K(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),n,a=[],i;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return a}var Mr="ENTRIES",Ft="KEYS",Et="VALUES",H="",Re=function(){function o(e,t){var r=e._tree,n=Array.from(r.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:r,keys:n}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=ce(this._path),t=e.node,r=e.keys;if(ce(r)===H)return{done:!1,value:this.result()};var n=t.get(ce(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ce(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return ce(t)}).filter(function(e){return e!==H}).join("")},o.prototype.value=function(){return ce(this._path).node.get(H)},o.prototype.result=function(){switch(this._type){case Et:return this.value();case Ft:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ce=function(o){return o[o.length-1]},Lr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var n=e.length+1,a=n+t,i=new Uint8Array(a*n).fill(t+1),s=0;st)continue e}St(o.get(y),e,t,r,n,S,i,s+y)}}}catch(f){u={error:f}}finally{try{v&&!v.done&&(l=h.return)&&l.call(h)}finally{if(u)throw u.error}}},Me=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var n=K(De(this._tree,e.slice(this._prefix.length)),2),a=n[0],i=n[1];if(a===void 0){var s=K(Je(i),2),u=s[0],l=s[1];try{for(var d=D(u.keys()),h=d.next();!h.done;h=d.next()){var v=h.value;if(v!==H&&v.startsWith(l)){var y=new Map;return y.set(v.slice(l.length),u.get(v)),new o(y,e)}}}catch(b){t={error:b}}finally{try{h&&!h.done&&(r=d.return)&&r.call(d)}finally{if(t)throw t.error}}}return new o(a,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,zr(this._tree,e)},o.prototype.entries=function(){return new Re(this,Mr)},o.prototype.forEach=function(e){var t,r;try{for(var n=D(this),a=n.next();!a.done;a=n.next()){var i=K(a.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return Lr(this._tree,e,t)},o.prototype.get=function(e){var t=We(this._tree,e);return t!==void 0?t.get(H):void 0},o.prototype.has=function(e){var t=We(this._tree,e);return t!==void 0&&t.has(H)},o.prototype.keys=function(){return new Re(this,Ft)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Le(this._tree,e);return r.set(H,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Le(this._tree,e);return r.set(H,t(r.get(H))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Le(this._tree,e),n=r.get(H);return n===void 0&&r.set(H,n=t()),n},o.prototype.values=function(){return new Re(this,Et)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,n=new o;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=K(i.value,2),u=s[0],l=s[1];n.set(u,l)}}catch(d){t={error:d}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),De=function(o,e,t){var r,n;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var a=D(o.keys()),i=a.next();!i.done;i=a.next()){var s=i.value;if(s!==H&&e.startsWith(s))return t.push([o,s]),De(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return t.push([o,e]),De(void 0,"",t)},We=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var n=D(o.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;if(i!==H&&e.startsWith(i))return We(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},Le=function(o,e){var t,r,n=e.length;e:for(var a=0;o&&a0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Me,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(n,a){t.removeFieldLength(r,a,t._documentCount,n)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,n=e.batchSize,a=e.batchWait;this.conditionalVacuum({batchSize:n,batchWait:a},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,n=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=n}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,n=t.extractField,a=n(e,r);this.discard(a),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var n=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=Ke,r.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return _r(this,void 0,void 0,function(){var r,n,a,i,s,u,l,d,h,v,y,b,S,g,A,T,F,L,R,V,k,_,C,O,w;return Rr(this,function(c){switch(c.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];n=e.batchSize||je.batchSize,a=e.batchWait||je.batchWait,i=1,c.label=1;case 1:c.trys.push([1,7,8,9]),s=D(this._index),u=s.next(),c.label=2;case 2:if(u.done)return[3,6];l=K(u.value,2),d=l[0],h=l[1];try{for(v=(_=void 0,D(h)),y=v.next();!y.done;y=v.next()){b=K(y.value,2),S=b[0],g=b[1];try{for(A=(O=void 0,D(g)),T=A.next();!T.done;T=A.next())F=K(T.value,1),L=F[0],!this._documentIds.has(L)&&(g.size<=1?h.delete(S):g.delete(L))}catch(f){O={error:f}}finally{try{T&&!T.done&&(w=A.return)&&w.call(A)}finally{if(O)throw O.error}}}}catch(f){_={error:f}}finally{try{y&&!y.done&&(C=v.return)&&C.call(v)}finally{if(_)throw _.error}}return this._index.get(d).size===0&&this._index.delete(d),i%n!==0?[3,4]:[4,new Promise(function(f){return setTimeout(f,a)})];case 3:c.sent(),c.label=4;case 4:i+=1,c.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return R=c.sent(),V={error:R},[3,9];case 8:try{u&&!u.done&&(k=s.return)&&k.call(s)}finally{if(V)throw V.error}return[7];case 9:this._dirtCount-=r,c.label=10;case 10:return[4,null];case 11:return c.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Be.minDirtCount,r=r||Be.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,n;t===void 0&&(t={});var a=this.executeQuery(e,t),i=[];try{for(var s=D(a),u=s.next();!u.done;u=s.next()){var l=K(u.value,2),d=l[0],h=l[1],v=h.score,y=h.terms,b=h.match,S=y.length||1,g={id:this._documentIds.get(d),score:v*S,terms:Object.keys(b),queryTerms:y,match:b};Object.assign(g,this._storedFields.get(d)),(t.filter==null||t.filter(g))&&i.push(g)}}catch(A){r={error:A}}finally{try{u&&!u.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return e===o.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||i.sort(ht),i},o.prototype.autoSuggest=function(e,t){var r,n,a,i;t===void 0&&(t={}),t=W(W({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=D(this.search(e,t)),l=u.next();!l.done;l=u.next()){var d=l.value,h=d.score,v=d.terms,y=v.join(" "),b=s.get(y);b!=null?(b.score+=h,b.count+=1):s.set(y,{score:h,terms:v,count:1})}}catch(R){r={error:R}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}var S=[];try{for(var g=D(s),A=g.next();!A.done;A=g.next()){var T=K(A.value,2),b=T[0],F=T[1],h=F.score,v=F.terms,L=F.count;S.push({suggestion:b,terms:v,score:h/L})}}catch(R){a={error:R}}finally{try{A&&!A.done&&(i=g.return)&&i.call(g)}finally{if(a)throw a.error}}return S.sort(ht),S},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)},o.getDefault=function(e){if(Pe.hasOwnProperty(e))return ze(Pe,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,n,a,i,s,u,l=e.index,d=e.documentCount,h=e.nextId,v=e.documentIds,y=e.fieldIds,b=e.fieldLength,S=e.averageFieldLength,g=e.storedFields,A=e.dirtCount,T=e.serializationVersion;if(T!==1&&T!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var F=new o(t);F._documentCount=d,F._nextId=h,F._documentIds=Ce(v),F._idToShortId=new Map,F._fieldIds=y,F._fieldLength=Ce(b),F._avgFieldLength=S,F._storedFields=Ce(g),F._dirtCount=A||0,F._index=new Me;try{for(var L=D(F._documentIds),R=L.next();!R.done;R=L.next()){var V=K(R.value,2),k=V[0],_=V[1];F._idToShortId.set(_,k)}}catch(P){r={error:P}}finally{try{R&&!R.done&&(n=L.return)&&n.call(L)}finally{if(r)throw r.error}}try{for(var C=D(l),O=C.next();!O.done;O=C.next()){var w=K(O.value,2),c=w[0],f=w[1],p=new Map;try{for(var N=(s=void 0,D(Object.keys(f))),I=N.next();!I.done;I=N.next()){var M=I.value,z=f[M];T===1&&(z=z.ds),p.set(parseInt(M,10),Ce(z))}}catch(P){s={error:P}}finally{try{I&&!I.done&&(u=N.return)&&u.call(N)}finally{if(s)throw s.error}}F._index.set(c,p)}}catch(P){a={error:P}}finally{try{O&&!O.done&&(i=C.return)&&i.call(C)}finally{if(a)throw a.error}}return F},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),e===o.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){var n=W(W(W({},t),e),{queries:void 0}),a=e.queries.map(function(g){return r.executeQuery(g,n)});return this.combineResults(a,n.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,d=W(W({tokenize:s,processTerm:u},l),t),h=d.tokenize,v=d.processTerm,y=h(e).flatMap(function(g){return v(g)}).filter(function(g){return!!g}),b=y.map(jr(d)),S=b.map(function(g){return r.executeQuerySpec(g,d)});return this.combineResults(S,d.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,n,a,i,s=W(W({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(M,z){var P;return W(W({},M),(P={},P[z]=ze(s.boost,z)||1,P))},{}),l=s.boostDocument,d=s.weights,h=s.maxFuzzy,v=s.bm25,y=W(W({},ft.weights),d),b=y.fuzzy,S=y.prefix,g=this._index.get(e.term),A=this.termResults(e.term,e.term,1,g,u,l,v),T,F;if(e.prefix&&(T=this._index.atPrefix(e.term)),e.fuzzy){var L=e.fuzzy===!0?.2:e.fuzzy,R=L<1?Math.min(h,Math.round(e.term.length*L)):L;R&&(F=this._index.fuzzyGet(e.term,R))}if(T)try{for(var V=D(T),k=V.next();!k.done;k=V.next()){var _=K(k.value,2),C=_[0],O=_[1],w=C.length-e.term.length;if(w){F==null||F.delete(C);var c=S*C.length/(C.length+.3*w);this.termResults(e.term,C,c,O,u,l,v,A)}}}catch(M){r={error:M}}finally{try{k&&!k.done&&(n=V.return)&&n.call(V)}finally{if(r)throw r.error}}if(F)try{for(var f=D(F.keys()),p=f.next();!p.done;p=f.next()){var C=p.value,N=K(F.get(C),2),I=N[0],w=N[1];if(w){var c=b*C.length/(C.length+w);this.termResults(e.term,C,c,I,u,l,v,A)}}}catch(M){a={error:M}}finally{try{p&&!p.done&&(i=f.return)&&i.call(f)}finally{if(a)throw a.error}}return A},o.prototype.executeWildcardQuery=function(e){var t,r,n=new Map,a=W(W({},this._options.searchOptions),e);try{for(var i=D(this._documentIds),s=i.next();!s.done;s=i.next()){var u=K(s.value,2),l=u[0],d=u[1],h=a.boostDocument?a.boostDocument(d,"",this._storedFields.get(l)):1;n.set(l,{score:h,terms:[],match:{}})}}catch(v){t={error:v}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return n},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=Ue),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce(Vr[r])||new Map},o.prototype.toJSON=function(){var e,t,r,n,a=[];try{for(var i=D(this._index),s=i.next();!s.done;s=i.next()){var u=K(s.value,2),l=u[0],d=u[1],h={};try{for(var v=(r=void 0,D(d)),y=v.next();!y.done;y=v.next()){var b=K(y.value,2),S=b[0],g=b[1];h[S]=Object.fromEntries(g)}}catch(A){r={error:A}}finally{try{y&&!y.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}a.push([l,h])}}catch(A){e={error:A}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:a,serializationVersion:2}},o.prototype.termResults=function(e,t,r,n,a,i,s,u){var l,d,h,v,y;if(u===void 0&&(u=new Map),n==null)return u;try{for(var b=D(Object.keys(a)),S=b.next();!S.done;S=b.next()){var g=S.value,A=a[g],T=this._fieldIds[g],F=n.get(T);if(F!=null){var L=F.size,R=this._avgFieldLength[T];try{for(var V=(h=void 0,D(F.keys())),k=V.next();!k.done;k=V.next()){var _=k.value;if(!this._documentIds.has(_)){this.removeTerm(T,_,t),L-=1;continue}var C=i?i(this._documentIds.get(_),t,this._storedFields.get(_)):1;if(C){var O=F.get(_),w=this._fieldLength.get(_)[T],c=Wr(O,L,this._documentCount,w,R,s),f=r*A*C*c,p=u.get(_);if(p){p.score+=f,Jr(p.terms,e);var N=ze(p.match,t);N?N.push(g):p.match[t]=[g]}else u.set(_,{score:f,terms:[e],match:(y={},y[t]=[g],y)})}}}catch(I){h={error:I}}finally{try{k&&!k.done&&(v=V.return)&&v.call(V)}finally{if(h)throw h.error}}}}}catch(I){l={error:I}}finally{try{S&&!S.done&&(d=b.return)&&d.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var n=this._index.fetch(r,vt),a=n.get(e);if(a==null)a=new Map,a.set(t,1),n.set(e,a);else{var i=a.get(t);a.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var n=this._index.fetch(r,vt),a=n.get(e);a==null||a.get(t)==null?this.warnDocumentChanged(t,e,r):a.get(t)<=1?a.size<=1?n.delete(e):a.delete(t):a.set(t,a.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var n,a;try{for(var i=D(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){n={error:l}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t(Gt("data-v-65963c98"),o=o(),qt(),o),Hr=["aria-owns"],Gr={class:"shell"},qr=["title"],Qr=Y(()=>E("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[E("circle",{cx:"11",cy:"11",r:"8"}),E("path",{d:"m21 21l-4.35-4.35"})])],-1)),Yr=[Qr],Zr={class:"search-actions before"},Xr=["title"],ea=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 12H5m7 7l-7-7l7-7"})],-1)),ta=[ea],ra=["placeholder"],aa={class:"search-actions"},na=["title"],ia=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 14h7v7H3zM3 3h7v7H3zm11 1h7m-7 5h7m-7 6h7m-7 5h7"})],-1)),oa=[ia],sa=["disabled","title"],ua=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 5H9l-7 7l7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2Zm-2 4l-6 6m0-6l6 6"})],-1)),la=[ua],ca=["id","role","aria-labelledby"],fa=["aria-selected"],da=["href","aria-label","onMouseenter","onFocusin"],ha={class:"titles"},va=Y(()=>E("span",{class:"title-icon"},"#",-1)),pa=["innerHTML"],ma=Y(()=>E("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m9 18l6-6l-6-6"})],-1)),ya={class:"title main"},ga=["innerHTML"],ba={key:0,class:"excerpt-wrapper"},wa={key:0,class:"excerpt",inert:""},xa=["innerHTML"],Fa=Y(()=>E("div",{class:"excerpt-gradient-bottom"},null,-1)),Ea=Y(()=>E("div",{class:"excerpt-gradient-top"},null,-1)),Sa={key:0,class:"no-results"},Aa={class:"search-keyboard-shortcuts"},Ca=["aria-label"],Ta=Y(()=>E("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 19V5m-7 7l7-7l7 7"})],-1)),ka=[Ta],Na=["aria-label"],Ia=Y(()=>E("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[E("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 5v14m7-7l-7 7l-7-7"})],-1)),Da=[Ia],Oa=["aria-label"],_a=Y(()=>E("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[E("g",{fill:"none",stroke:"currentcolor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[E("path",{d:"m9 10l-5 5l5 5"}),E("path",{d:"M20 4v7a4 4 0 0 1-4 4H4"})])],-1)),Ra=[_a],Ma=["aria-label"],La=It({__name:"VPLocalSearchBox",emits:["close"],setup(o,{emit:e}){var z,P;const t=e,r=xe(),n=xe(),a=xe(ar),i=er(),{activate:s}=Ir(r,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,d=et(async()=>{var m,x,$,j,G,q,B,J,Z;return nt(Br.loadJSON(($=await((x=(m=a.value)[u.value])==null?void 0:x.call(m)))==null?void 0:$.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((j=l.value.search)==null?void 0:j.provider)==="local"&&((q=(G=l.value.search.options)==null?void 0:G.miniSearch)==null?void 0:q.searchOptions)},...((B=l.value.search)==null?void 0:B.provider)==="local"&&((Z=(J=l.value.search.options)==null?void 0:J.miniSearch)==null?void 0:Z.options)}))}),v=Fe(()=>{var m,x;return((m=l.value.search)==null?void 0:m.provider)==="local"&&((x=l.value.search.options)==null?void 0:x.disableQueryPersistence)===!0}).value?oe(""):Dt("vitepress:local-search-filter",""),y=Ot("vitepress:local-search-detailed-list",((z=l.value.search)==null?void 0:z.provider)==="local"&&((P=l.value.search.options)==null?void 0:P.detailedView)===!0),b=Fe(()=>{var m,x,$;return((m=l.value.search)==null?void 0:m.provider)==="local"&&(((x=l.value.search.options)==null?void 0:x.disableDetailedView)===!0||(($=l.value.search.options)==null?void 0:$.detailedView)===!1)}),S=Fe(()=>{var x,$,j,G,q,B,J;const m=((x=l.value.search)==null?void 0:x.options)??l.value.algolia;return((q=(G=(j=($=m==null?void 0:m.locales)==null?void 0:$[u.value])==null?void 0:j.translations)==null?void 0:G.button)==null?void 0:q.buttonText)||((J=(B=m==null?void 0:m.translations)==null?void 0:B.button)==null?void 0:J.buttonText)||"Search"});_t(()=>{b.value&&(y.value=!1)});const g=xe([]),A=oe(!1);Ve(v,()=>{A.value=!1});const T=et(async()=>{if(n.value)return nt(new Or(n.value))},null),F=new rr(16);Rt(()=>[d.value,v.value,y.value],async([m,x,$],j,G)=>{var be,He,Ge,qe;(j==null?void 0:j[0])!==m&&F.clear();let q=!1;if(G(()=>{q=!0}),!m)return;g.value=m.search(x).slice(0,16),A.value=!0;const B=$?await Promise.all(g.value.map(Q=>L(Q.id))):[];if(q)return;for(const{id:Q,mod:ae}of B){const ne=Q.slice(0,Q.indexOf("#"));let te=F.get(ne);if(te)continue;te=new Map,F.set(ne,te);const X=ae.default??ae;if(X!=null&&X.render||X!=null&&X.setup){const ie=Qt(X);ie.config.warnHandler=()=>{},ie.provide(Yt,i),Object.defineProperties(ie.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Qe=document.createElement("div");ie.mount(Qe),Qe.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var Xe;const we=(Xe=de.querySelector("a"))==null?void 0:Xe.getAttribute("href"),Ye=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ye)return;let Ze="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Ze+=de.outerHTML;te.set(Ye,Ze)}),ie.unmount()}if(q)return}const J=new Set;if(g.value=g.value.map(Q=>{const[ae,ne]=Q.id.split("#"),te=F.get(ae),X=(te==null?void 0:te.get(ne))??"";for(const ie in Q.match)J.add(ie);return{...Q,text:X}}),await he(),q)return;await new Promise(Q=>{var ae;(ae=T.value)==null||ae.unmark({done:()=>{var ne;(ne=T.value)==null||ne.markRegExp(M(J),{done:Q})}})});const Z=((be=r.value)==null?void 0:be.querySelectorAll(".result .excerpt"))??[];for(const Q of Z)(He=Q.querySelector('mark[data-markjs="true"]'))==null||He.scrollIntoView({block:"center"});(qe=(Ge=n.value)==null?void 0:Ge.firstElementChild)==null||qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function L(m){const x=Zt(m.slice(0,m.indexOf("#")));try{if(!x)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await pt(()=>import(x),__vite__mapDeps([]))}}catch($){return console.error($),{id:m,mod:{}}}}const R=oe(),V=Fe(()=>{var m;return((m=v.value)==null?void 0:m.length)<=0});function k(m=!0){var x,$;(x=R.value)==null||x.focus(),m&&(($=R.value)==null||$.select())}Oe(()=>{k()});function _(m){m.pointerType==="mouse"&&k()}const C=oe(-1),O=oe(!1);Ve(g,m=>{C.value=m.length?0:-1,w()});function w(){he(()=>{const m=document.querySelector(".result.selected");m&&m.scrollIntoView({block:"nearest"})})}Ee("ArrowUp",m=>{m.preventDefault(),C.value--,C.value<0&&(C.value=g.value.length-1),O.value=!0,w()}),Ee("ArrowDown",m=>{m.preventDefault(),C.value++,C.value>=g.value.length&&(C.value=0),O.value=!0,w()});const c=Mt();Ee("Enter",m=>{if(m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const x=g.value[C.value];if(m.target instanceof HTMLInputElement&&!x){m.preventDefault();return}x&&(c.go(x.id),t("close"))}),Ee("Escape",()=>{t("close")});const f={modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}},p=Lt(tr)(zt(()=>{var m;return(m=l.value.search)==null?void 0:m.options}),f);Oe(()=>{window.history.pushState(null,"",null)}),Pt("popstate",m=>{m.preventDefault(),t("close")});const N=Bt(Vt?document.body:null);Oe(()=>{he(()=>{N.value=!0,he().then(()=>s())})}),$t(()=>{N.value=!1});function I(){v.value="",he().then(()=>k(!1))}function M(m){return new RegExp([...m].sort((x,$)=>$.length-x.length).map(x=>`(${x.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}return(m,x)=>{var $,j,G,q;return ee(),Wt(Ht,{to:"body"},[E("div",{ref_key:"el",ref:r,role:"button","aria-owns":($=g.value)!=null&&$.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[E("div",{class:"backdrop",onClick:x[0]||(x[0]=B=>m.$emit("close"))}),E("div",Gr,[E("form",{class:"search-bar",onPointerup:x[4]||(x[4]=B=>_(B)),onSubmit:x[5]||(x[5]=jt(()=>{},["prevent"]))},[E("label",{title:S.value,id:"localsearch-label",for:"localsearch-input"},Yr,8,qr),E("div",Zr,[E("button",{class:"back-button",title:U(p)("modal.backButtonTitle"),onClick:x[1]||(x[1]=B=>m.$emit("close"))},ta,8,Xr)]),Kt(E("input",{ref_key:"searchInput",ref:R,"onUpdate:modelValue":x[2]||(x[2]=B=>Ut(v)?v.value=B:null),placeholder:S.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,ra),[[Jt,U(v)]]),E("div",aa,[b.value?Se("",!0):(ee(),re("button",{key:0,class:tt(["toggle-layout-button",{"detailed-list":U(y)}]),type:"button",title:U(p)("modal.displayDetails"),onClick:x[3]||(x[3]=B=>C.value>-1&&(y.value=!U(y)))},oa,10,na)),E("button",{class:"clear-button",type:"reset",disabled:V.value,title:U(p)("modal.resetButtonTitle"),onClick:I},la,8,sa)])],32),E("ul",{ref_key:"resultsEl",ref:n,id:(j=g.value)!=null&&j.length?"localsearch-list":void 0,role:(G=g.value)!=null&&G.length?"listbox":void 0,"aria-labelledby":(q=g.value)!=null&&q.length?"localsearch-label":void 0,class:"results",onMousemove:x[7]||(x[7]=B=>O.value=!1)},[(ee(!0),re(at,null,rt(g.value,(B,J)=>(ee(),re("li",{key:B.id,role:"option","aria-selected":C.value===J?"true":"false"},[E("a",{href:B.id,class:tt(["result",{selected:C.value===J}]),"aria-label":[...B.titles,B.title].join(" > "),onMouseenter:Z=>!O.value&&(C.value=J),onFocusin:Z=>C.value=J,onClick:x[6]||(x[6]=Z=>m.$emit("close"))},[E("div",null,[E("div",ha,[va,(ee(!0),re(at,null,rt(B.titles,(Z,be)=>(ee(),re("span",{key:be,class:"title"},[E("span",{class:"text",innerHTML:Z},null,8,pa),ma]))),128)),E("span",ya,[E("span",{class:"text",innerHTML:B.title},null,8,ga)])]),U(y)?(ee(),re("div",ba,[B.text?(ee(),re("div",wa,[E("div",{class:"vp-doc",innerHTML:B.text},null,8,xa)])):Se("",!0),Fa,Ea])):Se("",!0)])],42,da)],8,fa))),128)),U(v)&&!g.value.length&&A.value?(ee(),re("li",Sa,[ve(pe(U(p)("modal.noResultsText"))+' "',1),E("strong",null,pe(U(v)),1),ve('" ')])):Se("",!0)],40,ca),E("div",Aa,[E("span",null,[E("kbd",{"aria-label":U(p)("modal.footer.navigateUpKeyAriaLabel")},ka,8,Ca),E("kbd",{"aria-label":U(p)("modal.footer.navigateDownKeyAriaLabel")},Da,8,Na),ve(" "+pe(U(p)("modal.footer.navigateText")),1)]),E("span",null,[E("kbd",{"aria-label":U(p)("modal.footer.selectKeyAriaLabel")},Ra,8,Oa),ve(" "+pe(U(p)("modal.footer.selectText")),1)]),E("span",null,[E("kbd",{"aria-label":U(p)("modal.footer.closeKeyAriaLabel")},"esc",8,Ma),ve(" "+pe(U(p)("modal.footer.closeText")),1)])])])],8,Hr)])}}}),$a=Xt(La,[["__scopeId","data-v-65963c98"]]);export{$a as default}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} \ No newline at end of file diff --git a/pr-preview/pr-449/assets/chunks/camera.BJQyjlnn.js b/pr-preview/pr-449/assets/chunks/camera.BJQyjlnn.js new file mode 100644 index 00000000..16f26317 --- /dev/null +++ b/pr-preview/pr-449/assets/chunks/camera.BJQyjlnn.js @@ -0,0 +1,3 @@ +import{d as ri,h as ni,j as ai,a9 as ii,o as oi,b as si,J as ui}from"./framework.BtL3uYYi.js";const Co=ri({__name:"DemoWrapper",props:{component:Object},setup(r){const i=r,o=ni();return ai(()=>{i.component&&(o.value=ii(i.component))}),(u,d)=>(oi(),si(ui(o.value)))}});var lr=(r,i,o)=>{if(!i.has(r))throw TypeError("Cannot "+o)},er=(r,i,o)=>(lr(r,i,"read from private field"),o?o.call(r):i.get(r)),ci=(r,i,o)=>{if(i.has(r))throw TypeError("Cannot add the same private member more than once");i instanceof WeakSet?i.add(r):i.set(r,o)},li=(r,i,o,u)=>(lr(r,i,"write to private field"),i.set(r,o),o);const dr=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],di=[...dr,["unknown"]].map(r=>r[0]),Ve=new Map(dr);function fi(r){for(const[i,o]of Ve)if(r===o)return i;return"unknown"}function pi(r){if(fr(r))return{width:r.naturalWidth,height:r.naturalHeight};if(pr(r))return{width:r.width.baseVal.value,height:r.height.baseVal.value};if(hr(r))return{width:r.videoWidth,height:r.videoHeight};if(vr(r))return{width:r.width,height:r.height};if(gr(r))return{width:r.displayWidth,height:r.displayHeight};if(mr(r))return{width:r.width,height:r.height};if(yr(r))return{width:r.width,height:r.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function fr(r){try{return r instanceof HTMLImageElement}catch{return!1}}function pr(r){try{return r instanceof SVGImageElement}catch{return!1}}function hr(r){try{return r instanceof HTMLVideoElement}catch{return!1}}function mr(r){try{return r instanceof HTMLCanvasElement}catch{return!1}}function vr(r){try{return r instanceof ImageBitmap}catch{return!1}}function yr(r){try{return r instanceof OffscreenCanvas}catch{return!1}}function gr(r){try{return r instanceof VideoFrame}catch{return!1}}function wr(r){try{return r instanceof Blob}catch{return!1}}function hi(r){try{return r instanceof ImageData}catch{return!1}}function mi(r,i){try{const o=new OffscreenCanvas(r,i);if(o.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return o;throw void 0}catch{const o=document.createElement("canvas");return o.width=r,o.height=i,o}}async function br(r){if(fr(r)&&!await wi(r))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(pr(r)&&!await bi(r))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(gr(r)&&Ci(r))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(hr(r)&&(r.readyState===0||r.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(vr(r)&&_i(r))throw new DOMException("The image source is detached.","InvalidStateError");const{width:i,height:o}=pi(r);if(i===0||o===0)return null;const u=mi(i,o).getContext("2d");u.drawImage(r,0,0);try{return u.getImageData(0,0,i,o)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function vi(r){let i;try{if(globalThis.createImageBitmap)i=await createImageBitmap(r);else if(globalThis.Image){i=new Image;let o="";try{o=URL.createObjectURL(r),i.src=o,await i.decode()}finally{URL.revokeObjectURL(o)}}else return r}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await br(i)}function yi(r){const{width:i,height:o}=r;if(i===0||o===0)return null;const u=r.getContext("2d");try{return u.getImageData(0,0,i,o)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function gi(r){if(wr(r))return await vi(r);if(hi(r)){if($i(r))throw new DOMException("The image data has been detached.","InvalidStateError");return r}return mr(r)||yr(r)?yi(r):await br(r)}async function wi(r){try{return await r.decode(),!0}catch{return!1}}async function bi(r){var i;try{return await((i=r.decode)==null?void 0:i.call(r)),!0}catch{return!1}}function Ci(r){return r.format===null}function $i(r){return r.data.buffer.byteLength===0}function _i(r){return r.width===0&&r.height===0}function tr(r,i){return r instanceof DOMException?new DOMException(`${i}: ${r.message}`,r.name):r instanceof Error?new r.constructor(`${i}: ${r.message}`):new Error(`${i}: ${r}`)}const rr=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Si(r){return r.join("|")}function Pi(r){const i=nr(r);let o=0,u=rr.length-1;for(;o<=u;){const d=Math.floor((o+u)/2),p=rr[d],g=nr(p);if(g===i)return p;g{const o=r.match(/_(.+?)\.wasm$/);return o?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${o[1]}/${r}`:i+r}};let ar=new WeakMap;function ft(r,i){var o;const u=ar.get(r);if(u!=null&&u.modulePromise&&i===void 0)return u.modulePromise;const d=(o=u==null?void 0:u.moduleOverrides)!=null?o:Ri,p=r({...d});return ar.set(r,{moduleOverrides:d,modulePromise:p}),p}async function xi(r,i,o=ye){const u={...ye,...o},d=await ft(r),{size:p}=i,g=new Uint8Array(await i.arrayBuffer()),w=d._malloc(p);d.HEAPU8.set(g,w);const _=d.readBarcodesFromImage(w,p,Cr(d,u));d._free(w);const m=[];for(let $=0;$<_.size();++$)m.push($r(_.get($)));return m}async function Ii(r,i,o=ye){const u={...ye,...o},d=await ft(r),{data:p,width:g,height:w,data:{byteLength:_}}=i,m=d._malloc(_);d.HEAPU8.set(p,m);const $=d.readBarcodesFromPixmap(m,g,w,Cr(d,u));d._free(m);const P=[];for(let C=0;C<$.size();++C)P.push($r($.get(C)));return P}({...ye,formats:[...ye.formats]});var pt=(()=>{var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(i={}){var o=i,u,d;o.ready=new Promise((e,t)=>{u=e,d=t});var p=Object.assign({},o),g="./this.program",w=typeof window=="object",_=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var m="";function $(e){return o.locateFile?o.locateFile(e,m):m+e}var P;(w||_)&&(_?m=self.location.href:typeof document<"u"&&document.currentScript&&(m=document.currentScript.src),r&&(m=r),m.indexOf("blob:")!==0?m=m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):m="",_&&(P=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)})),o.print||console.log.bind(console);var C=o.printErr||console.error.bind(console);Object.assign(o,p),p=null,o.arguments&&o.arguments,o.thisProgram&&(g=o.thisProgram),o.quit&&o.quit;var U;o.wasmBinary&&(U=o.wasmBinary),typeof WebAssembly!="object"&&Me("no native wasm support detected");var I,V=!1,A,D,X,ge,Y,x,mt,vt;function yt(){var e=I.buffer;o.HEAP8=A=new Int8Array(e),o.HEAP16=X=new Int16Array(e),o.HEAPU8=D=new Uint8Array(e),o.HEAPU16=ge=new Uint16Array(e),o.HEAP32=Y=new Int32Array(e),o.HEAPU32=x=new Uint32Array(e),o.HEAPF32=mt=new Float32Array(e),o.HEAPF64=vt=new Float64Array(e)}var gt=[],wt=[],bt=[];function Fr(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)jr(o.preRun.shift());Ne(gt)}function kr(){Ne(wt)}function Ur(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)Lr(o.postRun.shift());Ne(bt)}function jr(e){gt.unshift(e)}function Wr(e){wt.unshift(e)}function Lr(e){bt.unshift(e)}var ue=0,we=null;function Hr(e){var t;ue++,(t=o.monitorRunDependencies)===null||t===void 0||t.call(o,ue)}function Br(e){var t;if(ue--,(t=o.monitorRunDependencies)===null||t===void 0||t.call(o,ue),ue==0&&we){var n=we;we=null,n()}}function Me(e){var t;(t=o.onAbort)===null||t===void 0||t.call(o,e),e="Aborted("+e+")",C(e),V=!0,e+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(e);throw d(n),n}var Vr="data:application/octet-stream;base64,",Ct=e=>e.startsWith(Vr),de;de="zxing_reader.wasm",Ct(de)||(de=$(de));function $t(e){if(e==de&&U)return new Uint8Array(U);if(P)return P(e);throw"both async and sync fetching of the wasm failed"}function qr(e){return!U&&(w||_)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()}).catch(()=>$t(e)):Promise.resolve().then(()=>$t(e))}function _t(e,t,n){return qr(e).then(a=>WebAssembly.instantiate(a,t)).then(a=>a).then(n,a=>{C(`failed to asynchronously prepare wasm: ${a}`),Me(a)})}function Gr(e,t,n,a){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Ct(t)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(s=>{var c=WebAssembly.instantiateStreaming(s,n);return c.then(a,function(l){return C(`wasm streaming compile failed: ${l}`),C("falling back to ArrayBuffer instantiation"),_t(t,n,a)})}):_t(t,n,a)}function Nr(){var e={a:Ia};function t(a,s){return q=a.exports,I=q.ia,yt(),xt=q.ma,Wr(q.ja),Br(),q}Hr();function n(a){t(a.instance)}if(o.instantiateWasm)try{return o.instantiateWasm(e,t)}catch(a){C(`Module.instantiateWasm callback failed with error: ${a}`),d(a)}return Gr(U,de,e,n).catch(d),{}}var Ne=e=>{for(;e.length>0;)e.shift()(o)};o.noExitRuntime;var Ae=[],De=0,zr=e=>{var t=new ze(e);return t.get_caught()||(t.set_caught(!0),De--),t.set_rethrown(!1),Ae.push(t),zt(t.excPtr),t.get_exception_ptr()},re=0,Yr=()=>{F(0,0);var e=Ae.pop();Nt(e.excPtr),re=0};function ze(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(t){x[this.ptr+4>>2]=t},this.get_type=function(){return x[this.ptr+4>>2]},this.set_destructor=function(t){x[this.ptr+8>>2]=t},this.get_destructor=function(){return x[this.ptr+8>>2]},this.set_caught=function(t){t=t?1:0,A[this.ptr+12>>0]=t},this.get_caught=function(){return A[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,A[this.ptr+13>>0]=t},this.get_rethrown=function(){return A[this.ptr+13>>0]!=0},this.init=function(t,n){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(n)},this.set_adjusted_ptr=function(t){x[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return x[this.ptr+16>>2]},this.get_exception_ptr=function(){var t=Jt(this.get_type());if(t)return x[this.excPtr>>2];var n=this.get_adjusted_ptr();return n!==0?n:this.excPtr}}var Jr=e=>{throw re||(re=e),re},Ye=e=>{var t=re;if(!t)return Te(0),0;var n=new ze(t);n.set_adjusted_ptr(t);var a=n.get_type();if(!a)return Te(0),t;for(var s in e){var c=e[s];if(c===0||c===a)break;var l=n.ptr+16;if(Yt(c,a,l))return Te(c),t}return Te(a),t},Qr=()=>Ye([]),Xr=e=>Ye([e]),Kr=(e,t)=>Ye([e,t]),Zr=()=>{var e=Ae.pop();e||Me("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(Ae.push(e),e.set_rethrown(!0),e.set_caught(!1),De++),re=t,re},en=(e,t,n)=>{var a=new ze(e);throw a.init(t,n),re=e,De++,re},tn=()=>De,Re={},Je=e=>{for(;e.length;){var t=e.pop(),n=e.pop();n(t)}};function Qe(e){return this.fromWireType(Y[e>>2])}var fe={},ce={},xe={},St,Ie=e=>{throw new St(e)},le=(e,t,n)=>{e.forEach(function(f){xe[f]=t});function a(f){var h=n(f);h.length!==e.length&&Ie("Mismatched type converter count");for(var y=0;y{ce.hasOwnProperty(f)?s[h]=ce[f]:(c.push(f),fe.hasOwnProperty(f)||(fe[f]=[]),fe[f].push(()=>{s[h]=ce[f],++l,l===c.length&&a(s)}))}),c.length===0&&a(s)},rn=e=>{var t=Re[e];delete Re[e];var n=t.rawConstructor,a=t.rawDestructor,s=t.fields,c=s.map(l=>l.getterReturnType).concat(s.map(l=>l.setterArgumentType));le([e],c,l=>{var f={};return s.forEach((h,y)=>{var b=h.fieldName,T=l[y],E=h.getter,O=h.getterContext,k=l[y+s.length],H=h.setter,R=h.setterContext;f[b]={read:z=>T.fromWireType(E(O,z)),write:(z,v)=>{var S=[];H(R,z,k.toWireType(S,v)),Je(S)}}}),[{name:t.name,fromWireType:h=>{var y={};for(var b in f)y[b]=f[b].read(h);return a(h),y},toWireType:(h,y)=>{for(var b in f)if(!(b in y))throw new TypeError(`Missing field: "${b}"`);var T=n();for(b in f)f[b].write(T,y[b]);return h!==null&&h.push(a,T),T},argPackAdvance:ee,readValueFromPointer:Qe,destructorFunction:a}]})},nn=(e,t,n,a,s)=>{},an=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Pt=e},Pt,N=e=>{for(var t="",n=e;D[n];)t+=Pt[D[n++]];return t},pe,M=e=>{throw new pe(e)};function on(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var a=t.name;if(e||M(`type "${a}" must have a positive integer typeid pointer`),ce.hasOwnProperty(e)){if(n.ignoreDuplicateRegistrations)return;M(`Cannot register type '${a}' twice`)}if(ce[e]=t,delete xe[e],fe.hasOwnProperty(e)){var s=fe[e];delete fe[e],s.forEach(c=>c())}}function Z(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return on(e,t,n)}var ee=8,sn=(e,t,n,a)=>{t=N(t),Z(e,{name:t,fromWireType:function(s){return!!s},toWireType:function(s,c){return c?n:a},argPackAdvance:ee,readValueFromPointer:function(s){return this.fromWireType(D[s])},destructorFunction:null})},un=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Xe=e=>{function t(n){return n.$$.ptrType.registeredClass.name}M(t(e)+" instance already deleted")},Ke=!1,Tt=e=>{},cn=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Et=e=>{e.count.value-=1;var t=e.count.value===0;t&&cn(e)},Ot=(e,t,n)=>{if(t===n)return e;if(n.baseClass===void 0)return null;var a=Ot(e,t,n.baseClass);return a===null?null:n.downcast(a)},Mt={},ln=()=>Object.keys($e).length,dn=()=>{var e=[];for(var t in $e)$e.hasOwnProperty(t)&&e.push($e[t]);return e},be=[],Ze=()=>{for(;be.length;){var e=be.pop();e.$$.deleteScheduled=!1,e.delete()}},Ce,fn=e=>{Ce=e,be.length&&Ce&&Ce(Ze)},pn=()=>{o.getInheritedInstanceCount=ln,o.getLiveInheritedInstances=dn,o.flushPendingDeletes=Ze,o.setDelayFunction=fn},$e={},hn=(e,t)=>{for(t===void 0&&M("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},mn=(e,t)=>(t=hn(e,t),$e[t]),Fe=(e,t)=>{(!t.ptrType||!t.ptr)&&Ie("makeClassHandle requires ptr and ptrType");var n=!!t.smartPtrType,a=!!t.smartPtr;return n!==a&&Ie("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_e(Object.create(e,{$$:{value:t,writable:!0}}))};function vn(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var n=mn(this.registeredClass,t);if(n!==void 0){if(n.$$.count.value===0)return n.$$.ptr=t,n.$$.smartPtr=e,n.clone();var a=n.clone();return this.destructor(e),a}function s(){return this.isSmartPointer?Fe(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Fe(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var c=this.registeredClass.getActualType(t),l=Mt[c];if(!l)return s.call(this);var f;this.isConst?f=l.constPointerType:f=l.pointerType;var h=Ot(t,this.registeredClass,f.registeredClass);return h===null?s.call(this):this.isSmartPointer?Fe(f.registeredClass.instancePrototype,{ptrType:f,ptr:h,smartPtrType:this,smartPtr:e}):Fe(f.registeredClass.instancePrototype,{ptrType:f,ptr:h})}var _e=e=>typeof FinalizationRegistry>"u"?(_e=t=>t,e):(Ke=new FinalizationRegistry(t=>{Et(t.$$)}),_e=t=>{var n=t.$$,a=!!n.smartPtr;if(a){var s={$$:n};Ke.register(t,s,t)}return t},Tt=t=>Ke.unregister(t),_e(e)),yn=()=>{Object.assign(ke.prototype,{isAliasOf(e){if(!(this instanceof ke)||!(e instanceof ke))return!1;var t=this.$$.ptrType.registeredClass,n=this.$$.ptr;e.$$=e.$$;for(var a=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)n=t.upcast(n),t=t.baseClass;for(;a.baseClass;)s=a.upcast(s),a=a.baseClass;return t===a&&n===s},clone(){if(this.$$.ptr||Xe(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_e(Object.create(Object.getPrototypeOf(this),{$$:{value:un(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Xe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&M("Object already scheduled for deletion"),Tt(this),Et(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Xe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&M("Object already scheduled for deletion"),be.push(this),be.length===1&&Ce&&Ce(Ze),this.$$.deleteScheduled=!0,this}})};function ke(){}var Se=(e,t)=>Object.defineProperty(t,"name",{value:e}),At=(e,t,n)=>{if(e[t].overloadTable===void 0){var a=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||M(`Function '${n}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[a.argCount]=a}},et=(e,t,n)=>{o.hasOwnProperty(e)?((n===void 0||o[e].overloadTable!==void 0&&o[e].overloadTable[n]!==void 0)&&M(`Cannot register public name '${e}' twice`),At(o,e,e),o.hasOwnProperty(n)&&M(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`),o[e].overloadTable[n]=t):(o[e]=t,n!==void 0&&(o[e].numArguments=n))},gn=48,wn=57,bn=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=gn&&t<=wn?`_${e}`:e};function Cn(e,t,n,a,s,c,l,f){this.name=e,this.constructor=t,this.instancePrototype=n,this.rawDestructor=a,this.baseClass=s,this.getActualType=c,this.upcast=l,this.downcast=f,this.pureVirtualFunctions=[]}var tt=(e,t,n)=>{for(;t!==n;)t.upcast||M(`Expected null or instance of ${n.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function $n(e,t){if(t===null)return this.isReference&&M(`null is not a valid ${this.name}`),0;t.$$||M(`Cannot pass "${ot(t)}" as a ${this.name}`),t.$$.ptr||M(`Cannot pass deleted object as a pointer of type ${this.name}`);var n=t.$$.ptrType.registeredClass,a=tt(t.$$.ptr,n,this.registeredClass);return a}function _n(e,t){var n;if(t===null)return this.isReference&&M(`null is not a valid ${this.name}`),this.isSmartPointer?(n=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,n),n):0;(!t||!t.$$)&&M(`Cannot pass "${ot(t)}" as a ${this.name}`),t.$$.ptr||M(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&M(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var a=t.$$.ptrType.registeredClass;if(n=tt(t.$$.ptr,a,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&M("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?n=t.$$.smartPtr:M(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:n=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)n=t.$$.smartPtr;else{var s=t.clone();n=this.rawShare(n,ne.toHandle(()=>s.delete())),e!==null&&e.push(this.rawDestructor,n)}break;default:M("Unsupporting sharing policy")}return n}function Sn(e,t){if(t===null)return this.isReference&&M(`null is not a valid ${this.name}`),0;t.$$||M(`Cannot pass "${ot(t)}" as a ${this.name}`),t.$$.ptr||M(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&M(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var n=t.$$.ptrType.registeredClass,a=tt(t.$$.ptr,n,this.registeredClass);return a}function Dt(e){return this.fromWireType(x[e>>2])}var Pn=()=>{Object.assign(Ue.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var t;(t=this.rawDestructor)===null||t===void 0||t.call(this,e)},argPackAdvance:ee,readValueFromPointer:Dt,deleteObject(e){e!==null&&e.delete()},fromWireType:vn})};function Ue(e,t,n,a,s,c,l,f,h,y,b){this.name=e,this.registeredClass=t,this.isReference=n,this.isConst=a,this.isSmartPointer=s,this.pointeeType=c,this.sharingPolicy=l,this.rawGetPointee=f,this.rawConstructor=h,this.rawShare=y,this.rawDestructor=b,!s&&t.baseClass===void 0?a?(this.toWireType=$n,this.destructorFunction=null):(this.toWireType=Sn,this.destructorFunction=null):this.toWireType=_n}var Rt=(e,t,n)=>{o.hasOwnProperty(e)||Ie("Replacing nonexistant public symbol"),o[e].overloadTable!==void 0&&n!==void 0?o[e].overloadTable[n]=t:(o[e]=t,o[e].argCount=n)},Tn=(e,t,n)=>{var a=o["dynCall_"+e];return n&&n.length?a.apply(null,[t].concat(n)):a.call(null,t)},je=[],xt,j=e=>{var t=je[e];return t||(e>=je.length&&(je.length=e+1),je[e]=t=xt.get(e)),t},En=(e,t,n)=>{if(e.includes("j"))return Tn(e,t,n);var a=j(t).apply(null,n);return a},On=(e,t)=>{var n=[];return function(){return n.length=0,Object.assign(n,arguments),En(e,t,n)}},K=(e,t)=>{e=N(e);function n(){return e.includes("j")?On(e,t):j(t)}var a=n();return typeof a!="function"&&M(`unknown function pointer with signature ${e}: ${t}`),a},Mn=(e,t)=>{var n=Se(t,function(a){this.name=t,this.message=a;var s=new Error(a).stack;s!==void 0&&(this.stack=this.toString()+` +`+s.replace(/^Error(:[^\n]*)?\n/,""))});return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},n},It,Ft=e=>{var t=Gt(e),n=N(t);return ae(t),n},We=(e,t)=>{var n=[],a={};function s(c){if(!a[c]&&!ce[c]){if(xe[c]){xe[c].forEach(s);return}n.push(c),a[c]=!0}}throw t.forEach(s),new It(`${e}: `+n.map(Ft).join([", "]))},An=(e,t,n,a,s,c,l,f,h,y,b,T,E)=>{b=N(b),c=K(s,c),f&&(f=K(l,f)),y&&(y=K(h,y)),E=K(T,E);var O=bn(b);et(O,function(){We(`Cannot construct ${b} due to unbound types`,[a])}),le([e,t,n],a?[a]:[],function(k){k=k[0];var H,R;a?(H=k.registeredClass,R=H.instancePrototype):R=ke.prototype;var z=Se(b,function(){if(Object.getPrototypeOf(this)!==v)throw new pe("Use 'new' to construct "+b);if(S.constructor_body===void 0)throw new pe(b+" has no accessible constructor");var Zt=S.constructor_body[arguments.length];if(Zt===void 0)throw new pe(`Tried to invoke ctor of ${b} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(S.constructor_body).toString()}) parameters instead!`);return Zt.apply(this,arguments)}),v=Object.create(R,{constructor:{value:z}});z.prototype=v;var S=new Cn(b,z,v,E,H,c,f,y);if(S.baseClass){var B,G;(G=(B=S.baseClass).__derivedClasses)!==null&&G!==void 0||(B.__derivedClasses=[]),S.baseClass.__derivedClasses.push(S)}var he=new Ue(b,S,!0,!1,!1),Be=new Ue(b+"*",S,!1,!1,!1),Kt=new Ue(b+" const*",S,!1,!0,!1);return Mt[e]={pointerType:Be,constPointerType:Kt},Rt(O,z),[he,Be,Kt]})},rt=(e,t)=>{for(var n=[],a=0;a>2]);return n};function Dn(e){for(var t=1;t{var l=rt(t,n);s=K(a,s),le([],[e],function(f){f=f[0];var h=`constructor ${f.name}`;if(f.registeredClass.constructor_body===void 0&&(f.registeredClass.constructor_body=[]),f.registeredClass.constructor_body[t-1]!==void 0)throw new pe(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${f.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return f.registeredClass.constructor_body[t-1]=()=>{We(`Cannot construct ${f.name} due to unbound types`,l)},le([],l,y=>(y.splice(1,0,null),f.registeredClass.constructor_body[t-1]=nt(h,y,null,s,c),[])),[]})},kt=e=>{e=e.trim();const t=e.indexOf("(");return t!==-1?e.substr(0,t):e},xn=(e,t,n,a,s,c,l,f,h)=>{var y=rt(n,a);t=N(t),t=kt(t),c=K(s,c),le([],[e],function(b){b=b[0];var T=`${b.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),f&&b.registeredClass.pureVirtualFunctions.push(t);function E(){We(`Cannot call ${T} due to unbound types`,y)}var O=b.registeredClass.instancePrototype,k=O[t];return k===void 0||k.overloadTable===void 0&&k.className!==b.name&&k.argCount===n-2?(E.argCount=n-2,E.className=b.name,O[t]=E):(At(O,t,T),O[t].overloadTable[n-2]=E),le([],y,function(H){var R=nt(T,H,b,c,l);return O[t].overloadTable===void 0?(R.argCount=n-2,O[t]=R):O[t].overloadTable[n-2]=R,[]}),[]})};function In(){Object.assign(Ut.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Ut(){this.allocated=[void 0],this.freelist=[]}var Q=new Ut,at=e=>{e>=Q.reserved&&--Q.get(e).refcount===0&&Q.free(e)},Fn=()=>{for(var e=0,t=Q.reserved;t{Q.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Q.reserved=Q.allocated.length,o.count_emval_handles=Fn},ne={toValue:e=>(e||M("Cannot use deleted val. handle = "+e),Q.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Q.allocate({refcount:1,value:e})}}},Un=(e,t)=>{t=N(t),Z(e,{name:t,fromWireType:n=>{var a=ne.toValue(n);return at(n),a},toWireType:(n,a)=>ne.toHandle(a),argPackAdvance:ee,readValueFromPointer:Qe,destructorFunction:null})},jn=(e,t,n)=>{switch(t){case 1:return n?function(a){return this.fromWireType(A[a>>0])}:function(a){return this.fromWireType(D[a>>0])};case 2:return n?function(a){return this.fromWireType(X[a>>1])}:function(a){return this.fromWireType(ge[a>>1])};case 4:return n?function(a){return this.fromWireType(Y[a>>2])}:function(a){return this.fromWireType(x[a>>2])};default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Wn=(e,t,n,a)=>{t=N(t);function s(){}s.values={},Z(e,{name:t,constructor:s,fromWireType:function(c){return this.constructor.values[c]},toWireType:(c,l)=>l.value,argPackAdvance:ee,readValueFromPointer:jn(t,n,a),destructorFunction:null}),et(t,s)},it=(e,t)=>{var n=ce[e];return n===void 0&&M(t+" has unknown type "+Ft(e)),n},Ln=(e,t,n)=>{var a=it(e,"enum");t=N(t);var s=a.constructor,c=Object.create(a.constructor.prototype,{value:{value:n},constructor:{value:Se(`${a.name}_${t}`,function(){})}});s.values[n]=c,s[t]=c},ot=e=>{if(e===null)return"null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e},Hn=(e,t)=>{switch(t){case 4:return function(n){return this.fromWireType(mt[n>>2])};case 8:return function(n){return this.fromWireType(vt[n>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},Bn=(e,t,n)=>{t=N(t),Z(e,{name:t,fromWireType:a=>a,toWireType:(a,s)=>s,argPackAdvance:ee,readValueFromPointer:Hn(t,n),destructorFunction:null})},Vn=(e,t,n,a,s,c,l)=>{var f=rt(t,n);e=N(e),e=kt(e),s=K(a,s),et(e,function(){We(`Cannot call ${e} due to unbound types`,f)},t-1),le([],f,function(h){var y=[h[0],null].concat(h.slice(1));return Rt(e,nt(e,y,null,s,c),t-1),[]})},qn=(e,t,n)=>{switch(t){case 1:return n?a=>A[a>>0]:a=>D[a>>0];case 2:return n?a=>X[a>>1]:a=>ge[a>>1];case 4:return n?a=>Y[a>>2]:a=>x[a>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Gn=(e,t,n,a,s)=>{t=N(t);var c=b=>b;if(a===0){var l=32-8*n;c=b=>b<>>l}var f=t.includes("unsigned"),h=(b,T)=>{},y;f?y=function(b,T){return h(T,this.name),T>>>0}:y=function(b,T){return h(T,this.name),T},Z(e,{name:t,fromWireType:c,toWireType:y,argPackAdvance:ee,readValueFromPointer:qn(t,n,a!==0),destructorFunction:null})},Nn=(e,t,n)=>{var a=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],s=a[t];function c(l){var f=x[l>>2],h=x[l+4>>2];return new s(A.buffer,h,f)}n=N(n),Z(e,{name:n,fromWireType:c,argPackAdvance:ee,readValueFromPointer:c},{ignoreDuplicateRegistrations:!0})},jt=(e,t,n,a)=>{if(!(a>0))return 0;for(var s=n,c=n+a-1,l=0;l=55296&&f<=57343){var h=e.charCodeAt(++l);f=65536+((f&1023)<<10)|h&1023}if(f<=127){if(n>=c)break;t[n++]=f}else if(f<=2047){if(n+1>=c)break;t[n++]=192|f>>6,t[n++]=128|f&63}else if(f<=65535){if(n+2>=c)break;t[n++]=224|f>>12,t[n++]=128|f>>6&63,t[n++]=128|f&63}else{if(n+3>=c)break;t[n++]=240|f>>18,t[n++]=128|f>>12&63,t[n++]=128|f>>6&63,t[n++]=128|f&63}}return t[n]=0,n-s},zn=(e,t,n)=>jt(e,D,t,n),Wt=e=>{for(var t=0,n=0;n=55296&&a<=57343?(t+=4,++n):t+=3}return t},Lt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Yn=(e,t,n)=>{for(var a=t+n,s=t;e[s]&&!(s>=a);)++s;if(s-t>16&&e.buffer&&Lt)return Lt.decode(e.subarray(t,s));for(var c="";t>10,56320|y&1023)}}return c},st=(e,t)=>e?Yn(D,e,t):"",Jn=(e,t)=>{t=N(t);var n=t==="std::string";Z(e,{name:t,fromWireType(a){var s=x[a>>2],c=a+4,l;if(n)for(var f=c,h=0;h<=s;++h){var y=c+h;if(h==s||D[y]==0){var b=y-f,T=st(f,b);l===void 0?l=T:(l+="\0",l+=T),f=y+1}}else{for(var E=new Array(s),h=0;h>2]=c,n&&l)zn(s,h,c+1);else if(l)for(var y=0;y255&&(ae(h),M("String has UTF-16 code units that do not fit in 8 bits")),D[h+y]=b}else for(var y=0;y{for(var n=e,a=n>>1,s=a+t/2;!(a>=s)&&ge[a];)++a;if(n=a<<1,n-e>32&&Ht)return Ht.decode(D.subarray(e,n));for(var c="",l=0;!(l>=t/2);++l){var f=X[e+l*2>>1];if(f==0)break;c+=String.fromCharCode(f)}return c},Xn=(e,t,n)=>{var a;if((a=n)!==null&&a!==void 0||(n=2147483647),n<2)return 0;n-=2;for(var s=t,c=n>1]=f,t+=2}return X[t>>1]=0,t-s},Kn=e=>e.length*2,Zn=(e,t)=>{for(var n=0,a="";!(n>=t/4);){var s=Y[e+n*4>>2];if(s==0)break;if(++n,s>=65536){var c=s-65536;a+=String.fromCharCode(55296|c>>10,56320|c&1023)}else a+=String.fromCharCode(s)}return a},ea=(e,t,n)=>{var a;if((a=n)!==null&&a!==void 0||(n=2147483647),n<4)return 0;for(var s=t,c=s+n-4,l=0;l=55296&&f<=57343){var h=e.charCodeAt(++l);f=65536+((f&1023)<<10)|h&1023}if(Y[t>>2]=f,t+=4,t+4>c)break}return Y[t>>2]=0,t-s},ta=e=>{for(var t=0,n=0;n=55296&&a<=57343&&++n,t+=4}return t},ra=(e,t,n)=>{n=N(n);var a,s,c,l,f;t===2?(a=Qn,s=Xn,l=Kn,c=()=>ge,f=1):t===4&&(a=Zn,s=ea,l=ta,c=()=>x,f=2),Z(e,{name:n,fromWireType:h=>{for(var y=x[h>>2],b=c(),T,E=h+4,O=0;O<=y;++O){var k=h+4+O*t;if(O==y||b[k>>f]==0){var H=k-E,R=a(E,H);T===void 0?T=R:(T+="\0",T+=R),E=k+t}}return ae(h),T},toWireType:(h,y)=>{typeof y!="string"&&M(`Cannot pass non-string to C++ string type ${n}`);var b=l(y),T=lt(4+b+t);return x[T>>2]=b>>f,s(y,T+4,b+t),h!==null&&h.push(ae,T),T},argPackAdvance:ee,readValueFromPointer:Qe,destructorFunction(h){ae(h)}})},na=(e,t,n,a,s,c)=>{Re[e]={name:N(t),rawConstructor:K(n,a),rawDestructor:K(s,c),fields:[]}},aa=(e,t,n,a,s,c,l,f,h,y)=>{Re[e].fields.push({fieldName:N(t),getterReturnType:n,getter:K(a,s),getterContext:c,setterArgumentType:l,setter:K(f,h),setterContext:y})},ia=(e,t)=>{t=N(t),Z(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:(n,a)=>{}})},ut=[],oa=(e,t,n,a)=>(e=ut[e],t=ne.toValue(t),e(null,t,n,a)),sa={},ua=e=>{var t=sa[e];return t===void 0?N(e):t},Bt=()=>{if(typeof globalThis=="object")return globalThis;function e(t){t.$$$embind_global$$$=t;var n=typeof $$$embind_global$$$=="object"&&t.$$$embind_global$$$==t;return n||delete t.$$$embind_global$$$,n}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},ca=e=>e===0?ne.toHandle(Bt()):(e=ua(e),ne.toHandle(Bt()[e])),la=e=>{var t=ut.length;return ut.push(e),t},da=(e,t)=>{for(var n=new Array(e),a=0;a>2],"parameter "+a);return n},fa=Reflect.construct,pa=(e,t,n)=>{var a=[],s=e.toWireType(a,n);return a.length&&(x[t>>2]=ne.toHandle(a)),s},ha=(e,t,n)=>{var a=da(e,t),s=a.shift();e--;var c=new Array(e),l=(h,y,b,T)=>{for(var E=0,O=0;Oh.name).join(", ")}) => ${s.name}>`;return la(Se(f,l))},ma=e=>{e>4&&(Q.get(e).refcount+=1)},va=e=>{var t=ne.toValue(e);Je(t),at(e)},ya=(e,t)=>{e=it(e,"_emval_take_value");var n=e.readValueFromPointer(t);return ne.toHandle(n)},ga=()=>{Me("")},wa=(e,t,n)=>D.copyWithin(e,t,t+n),ba=()=>2147483648,Ca=e=>{var t=I.buffer,n=(e-t.byteLength+65535)/65536;try{return I.grow(n),yt(),1}catch{}},$a=e=>{var t=D.length;e>>>=0;var n=ba();if(e>n)return!1;for(var a=(h,y)=>h+(y-h%y)%y,s=1;s<=4;s*=2){var c=t*(1+.2/s);c=Math.min(c,e+100663296);var l=Math.min(n,a(Math.max(e,c),65536)),f=Ca(l);if(f)return!0}return!1},ct={},_a=()=>g||"./this.program",Pe=()=>{if(!Pe.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:_a()};for(var n in ct)ct[n]===void 0?delete t[n]:t[n]=ct[n];var a=[];for(var n in t)a.push(`${n}=${t[n]}`);Pe.strings=a}return Pe.strings},Sa=(e,t)=>{for(var n=0;n>0]=e.charCodeAt(n);A[t>>0]=0},Pa=(e,t)=>{var n=0;return Pe().forEach((a,s)=>{var c=t+n;x[e+s*4>>2]=c,Sa(a,c),n+=a.length+1}),0},Ta=(e,t)=>{var n=Pe();x[e>>2]=n.length;var a=0;return n.forEach(s=>a+=s.length+1),x[t>>2]=a,0},Ea=e=>e,Le=e=>e%4===0&&(e%100!==0||e%400===0),Oa=(e,t)=>{for(var n=0,a=0;a<=t;n+=e[a++]);return n},Vt=[31,29,31,30,31,30,31,31,30,31,30,31],qt=[31,28,31,30,31,30,31,31,30,31,30,31],Ma=(e,t)=>{for(var n=new Date(e.getTime());t>0;){var a=Le(n.getFullYear()),s=n.getMonth(),c=(a?Vt:qt)[s];if(t>c-n.getDate())t-=c-n.getDate()+1,n.setDate(1),s<11?n.setMonth(s+1):(n.setMonth(0),n.setFullYear(n.getFullYear()+1));else return n.setDate(n.getDate()+t),n}return n};function Aa(e,t,n){var a=Wt(e)+1,s=new Array(a);return jt(e,s,0,s.length),s}var Da=(e,t)=>{A.set(e,t)},Ra=(e,t,n,a)=>{var s=x[a+40>>2],c={tm_sec:Y[a>>2],tm_min:Y[a+4>>2],tm_hour:Y[a+8>>2],tm_mday:Y[a+12>>2],tm_mon:Y[a+16>>2],tm_year:Y[a+20>>2],tm_wday:Y[a+24>>2],tm_yday:Y[a+28>>2],tm_isdst:Y[a+32>>2],tm_gmtoff:Y[a+36>>2],tm_zone:s?st(s):""},l=st(n),f={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var h in f)l=l.replace(new RegExp(h,"g"),f[h]);var y=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],b=["January","February","March","April","May","June","July","August","September","October","November","December"];function T(v,S,B){for(var G=typeof v=="number"?v.toString():v||"";G.length0?1:0}var G;return(G=B(v.getFullYear()-S.getFullYear()))===0&&(G=B(v.getMonth()-S.getMonth()))===0&&(G=B(v.getDate()-S.getDate())),G}function k(v){switch(v.getDay()){case 0:return new Date(v.getFullYear()-1,11,29);case 1:return v;case 2:return new Date(v.getFullYear(),0,3);case 3:return new Date(v.getFullYear(),0,2);case 4:return new Date(v.getFullYear(),0,1);case 5:return new Date(v.getFullYear()-1,11,31);case 6:return new Date(v.getFullYear()-1,11,30)}}function H(v){var S=Ma(new Date(v.tm_year+1900,0,1),v.tm_yday),B=new Date(S.getFullYear(),0,4),G=new Date(S.getFullYear()+1,0,4),he=k(B),Be=k(G);return O(he,S)<=0?O(Be,S)<=0?S.getFullYear()+1:S.getFullYear():S.getFullYear()-1}var R={"%a":v=>y[v.tm_wday].substring(0,3),"%A":v=>y[v.tm_wday],"%b":v=>b[v.tm_mon].substring(0,3),"%B":v=>b[v.tm_mon],"%C":v=>{var S=v.tm_year+1900;return E(S/100|0,2)},"%d":v=>E(v.tm_mday,2),"%e":v=>T(v.tm_mday,2," "),"%g":v=>H(v).toString().substring(2),"%G":v=>H(v),"%H":v=>E(v.tm_hour,2),"%I":v=>{var S=v.tm_hour;return S==0?S=12:S>12&&(S-=12),E(S,2)},"%j":v=>E(v.tm_mday+Oa(Le(v.tm_year+1900)?Vt:qt,v.tm_mon-1),3),"%m":v=>E(v.tm_mon+1,2),"%M":v=>E(v.tm_min,2),"%n":()=>` +`,"%p":v=>v.tm_hour>=0&&v.tm_hour<12?"AM":"PM","%S":v=>E(v.tm_sec,2),"%t":()=>" ","%u":v=>v.tm_wday||7,"%U":v=>{var S=v.tm_yday+7-v.tm_wday;return E(Math.floor(S/7),2)},"%V":v=>{var S=Math.floor((v.tm_yday+7-(v.tm_wday+6)%7)/7);if((v.tm_wday+371-v.tm_yday-2)%7<=2&&S++,S){if(S==53){var B=(v.tm_wday+371-v.tm_yday)%7;B!=4&&(B!=3||!Le(v.tm_year))&&(S=1)}}else{S=52;var G=(v.tm_wday+7-v.tm_yday-1)%7;(G==4||G==5&&Le(v.tm_year%400-1))&&S++}return E(S,2)},"%w":v=>v.tm_wday,"%W":v=>{var S=v.tm_yday+7-(v.tm_wday+6)%7;return E(Math.floor(S/7),2)},"%y":v=>(v.tm_year+1900).toString().substring(2),"%Y":v=>v.tm_year+1900,"%z":v=>{var S=v.tm_gmtoff,B=S>=0;return S=Math.abs(S)/60,S=S/60*100+S%60,(B?"+":"-")+("0000"+S).slice(-4)},"%Z":v=>v.tm_zone,"%%":()=>"%"};l=l.replace(/%%/g,"\0\0");for(var h in R)l.includes(h)&&(l=l.replace(new RegExp(h,"g"),R[h](c)));l=l.replace(/\0\0/g,"%");var z=Aa(l);return z.length>t?0:(Da(z,e),z.length-1)},xa=(e,t,n,a,s)=>Ra(e,t,n,a);St=o.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},an(),pe=o.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},yn(),pn(),Pn(),It=o.UnboundTypeError=Mn(Error,"UnboundTypeError"),In(),kn();var Ia={s:zr,u:Yr,b:Qr,g:Xr,q:Kr,J:Zr,f:en,V:tn,d:Jr,da:rn,Q:nn,_:sn,ca:An,ba:Rn,w:xn,Y:Un,x:Wn,h:Ln,L:Bn,M:Vn,t:Gn,o:Nn,K:Jn,C:ra,A:na,ea:aa,$:ia,R:oa,ha:at,fa:ca,Z:ha,N:ma,O:va,aa:ya,B:ga,X:wa,W:$a,T:Pa,U:Ta,E:Qa,D:Wa,F:Ja,n:Xa,a:Fa,e:Ha,m:ja,k:Va,H:za,v:Ga,G:Ya,z:Za,P:ti,l:Ba,j:La,c:Ua,p:ka,I:Na,r:Ka,i:qa,y:ei,ga:Ea,S:xa},q=Nr(),ae=o._free=e=>(ae=o._free=q.ka)(e),lt=o._malloc=e=>(lt=o._malloc=q.la)(e),Gt=e=>(Gt=q.na)(e),F=(e,t)=>(F=q.oa)(e,t),Te=e=>(Te=q.pa)(e),W=()=>(W=q.qa)(),L=e=>(L=q.ra)(e),Nt=e=>(Nt=q.sa)(e),zt=e=>(zt=q.ta)(e),Yt=(e,t,n)=>(Yt=q.ua)(e,t,n),Jt=e=>(Jt=q.va)(e);o.dynCall_viijii=(e,t,n,a,s,c,l)=>(o.dynCall_viijii=q.wa)(e,t,n,a,s,c,l);var Qt=o.dynCall_jiiii=(e,t,n,a,s)=>(Qt=o.dynCall_jiiii=q.xa)(e,t,n,a,s);o.dynCall_iiiiij=(e,t,n,a,s,c,l)=>(o.dynCall_iiiiij=q.ya)(e,t,n,a,s,c,l),o.dynCall_iiiiijj=(e,t,n,a,s,c,l,f,h)=>(o.dynCall_iiiiijj=q.za)(e,t,n,a,s,c,l,f,h),o.dynCall_iiiiiijj=(e,t,n,a,s,c,l,f,h,y)=>(o.dynCall_iiiiiijj=q.Aa)(e,t,n,a,s,c,l,f,h,y);function Fa(e,t){var n=W();try{return j(e)(t)}catch(a){if(L(n),a!==a+0)throw a;F(1,0)}}function ka(e,t,n,a){var s=W();try{j(e)(t,n,a)}catch(c){if(L(s),c!==c+0)throw c;F(1,0)}}function Ua(e,t,n){var a=W();try{j(e)(t,n)}catch(s){if(L(a),s!==s+0)throw s;F(1,0)}}function ja(e,t,n,a){var s=W();try{return j(e)(t,n,a)}catch(c){if(L(s),c!==c+0)throw c;F(1,0)}}function Wa(e,t,n,a,s){var c=W();try{return j(e)(t,n,a,s)}catch(l){if(L(c),l!==l+0)throw l;F(1,0)}}function La(e,t){var n=W();try{j(e)(t)}catch(a){if(L(n),a!==a+0)throw a;F(1,0)}}function Ha(e,t,n){var a=W();try{return j(e)(t,n)}catch(s){if(L(a),s!==s+0)throw s;F(1,0)}}function Ba(e){var t=W();try{j(e)()}catch(n){if(L(t),n!==n+0)throw n;F(1,0)}}function Va(e,t,n,a,s){var c=W();try{return j(e)(t,n,a,s)}catch(l){if(L(c),l!==l+0)throw l;F(1,0)}}function qa(e,t,n,a,s,c,l,f,h,y,b){var T=W();try{j(e)(t,n,a,s,c,l,f,h,y,b)}catch(E){if(L(T),E!==E+0)throw E;F(1,0)}}function Ga(e,t,n,a,s,c,l){var f=W();try{return j(e)(t,n,a,s,c,l)}catch(h){if(L(f),h!==h+0)throw h;F(1,0)}}function Na(e,t,n,a,s){var c=W();try{j(e)(t,n,a,s)}catch(l){if(L(c),l!==l+0)throw l;F(1,0)}}function za(e,t,n,a,s,c){var l=W();try{return j(e)(t,n,a,s,c)}catch(f){if(L(l),f!==f+0)throw f;F(1,0)}}function Ya(e,t,n,a,s,c,l,f){var h=W();try{return j(e)(t,n,a,s,c,l,f)}catch(y){if(L(h),y!==y+0)throw y;F(1,0)}}function Ja(e,t,n,a){var s=W();try{return j(e)(t,n,a)}catch(c){if(L(s),c!==c+0)throw c;F(1,0)}}function Qa(e,t,n,a){var s=W();try{return j(e)(t,n,a)}catch(c){if(L(s),c!==c+0)throw c;F(1,0)}}function Xa(e){var t=W();try{return j(e)()}catch(n){if(L(t),n!==n+0)throw n;F(1,0)}}function Ka(e,t,n,a,s,c,l,f){var h=W();try{j(e)(t,n,a,s,c,l,f)}catch(y){if(L(h),y!==y+0)throw y;F(1,0)}}function Za(e,t,n,a,s,c,l,f,h,y,b,T){var E=W();try{return j(e)(t,n,a,s,c,l,f,h,y,b,T)}catch(O){if(L(E),O!==O+0)throw O;F(1,0)}}function ei(e,t,n,a,s,c,l,f,h,y,b,T,E,O,k,H){var R=W();try{j(e)(t,n,a,s,c,l,f,h,y,b,T,E,O,k,H)}catch(z){if(L(R),z!==z+0)throw z;F(1,0)}}function ti(e,t,n,a,s){var c=W();try{return Qt(e,t,n,a,s)}catch(l){if(L(c),l!==l+0)throw l;F(1,0)}}var He;we=function e(){He||Xt(),He||(we=e)};function Xt(){if(ue>0||(Fr(),ue>0))return;function e(){He||(He=!0,o.calledRun=!0,!V&&(kr(),u(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),Ur()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),e()},1)):e()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Xt(),i.ready}})();function Fi(r){return ft(pt,r)}async function ki(r,i){return xi(pt,r,i)}async function Ui(r,i){return Ii(pt,r,i)}var Ee;class Oe extends EventTarget{constructor(i={}){var o;super(),ci(this,Ee,void 0);try{const u=(o=i==null?void 0:i.formats)==null?void 0:o.filter(d=>d!=="unknown");if((u==null?void 0:u.length)===0)throw new TypeError("Hint option provided, but is empty.");u==null||u.forEach(d=>{if(!Ve.has(d))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${d}' is not a valid enum value of type BarcodeFormat.`)}),li(this,Ee,u??[]),Fi().then(d=>{this.dispatchEvent(new CustomEvent("load",{detail:d}))}).catch(d=>{this.dispatchEvent(new CustomEvent("error",{detail:d}))})}catch(u){throw tr(u,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return di.filter(i=>i!=="unknown")}async detect(i){try{const o=await gi(i);if(o===null)return[];let u;try{wr(o)?u=await ki(o,{tryHarder:!0,formats:er(this,Ee).map(d=>Ve.get(d))}):u=await Ui(o,{tryHarder:!0,formats:er(this,Ee).map(d=>Ve.get(d))})}catch(d){throw console.error(d),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return u.map(d=>{const{topLeft:{x:p,y:g},topRight:{x:w,y:_},bottomLeft:{x:m,y:$},bottomRight:{x:P,y:C}}=d.position,U=Math.min(p,w,m,P),I=Math.min(g,_,$,C),V=Math.max(p,w,m,P),A=Math.max(g,_,$,C);return{boundingBox:new DOMRectReadOnly(U,I,V-U,A-I),rawValue:d.text,format:fi(d.format),cornerPoints:[{x:p,y:g},{x:w,y:_},{x:P,y:C},{x:m,y:$}]}})}catch(o){throw tr(o,"Failed to execute 'detect' on 'BarcodeDetector'")}}}Ee=new WeakMap;globalThis.BarcodeDetector!=null||(globalThis.BarcodeDetector=Oe);const ht=(r,i,o="error")=>{let u,d;const p=new Promise((g,w)=>{u=g,d=w,r.addEventListener(i,u),r.addEventListener(o,d)});return p.finally(()=>{r.removeEventListener(i,u),r.removeEventListener(o,d)}),p},ir=r=>new Promise(i=>setTimeout(i,r));class ji extends Error{constructor(){super("can't process cross-origin image"),this.name="DropImageFetchError"}}class _r extends Error{constructor(){super("this browser has no Stream API support"),this.name="StreamApiNotSupportedError"}}class Wi extends Error{constructor(){super("camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP."),this.name="InsecureContextError"}}class Li extends Error{constructor(){super("Loading camera stream timed out after 6 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)"),this.name="StreamLoadTimeoutError"}}let dt;const $o=r=>{dt=new Oe({formats:r})},_o=async(r,{detectHandler:i,locateHandler:o,minDelay:u,formats:d})=>{console.debug("[vue-qrcode-reader] start scanning"),dt=new Oe({formats:d});const p=g=>async w=>{if(r.readyState===0)console.debug("[vue-qrcode-reader] stop scanning: video element readyState is 0");else{const{lastScanned:_,contentBefore:m,lastScanHadContent:$}=g;if(w-_!m.includes(V.rawValue));C&&i(P);const U=P.length>0;U&&o(P),!U&&$&&o(P);const I={lastScanned:w,lastScanHadContent:U,contentBefore:C?P.map(V=>V.rawValue):m};window.requestAnimationFrame(p(I))}}};p({lastScanned:performance.now(),contentBefore:[],lastScanHadContent:!1})(performance.now())},Hi=async r=>{if(r.startsWith("http")&&r.includes(location.host)===!1)throw new ji;const i=document.createElement("img");return i.src=r,await ht(i,"load"),i},So=async(r,i=["qr_code"])=>await new Oe({formats:i}).detect(r),Po=async(r,i=["qr_code"])=>{const o=new Oe({formats:i}),u=await Hi(r);return await o.detect(u)};var Sr={},J={};Object.defineProperty(J,"__esModule",{value:!0});J.compactObject=Er;J.deprecated=Qi;var Bi=J.detectBrowser=Xi;J.disableLog=zi;J.disableWarnings=Yi;J.extractVersion=qe;J.filterStats=Ki;J.log=Ji;J.walkStats=Ge;J.wrapPeerConnectionEvent=Ni;function Vi(r,i,o){return i=qi(i),i in r?Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[i]=o,r}function qi(r){var i=Gi(r,"string");return oe(i)==="symbol"?i:String(i)}function Gi(r,i){if(oe(r)!=="object"||r===null)return r;var o=r[Symbol.toPrimitive];if(o!==void 0){var u=o.call(r,i||"default");if(oe(u)!=="object")return u;throw new TypeError("@@toPrimitive must return a primitive value.")}return(i==="string"?String:Number)(r)}function oe(r){"@babel/helpers - typeof";return oe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},oe(r)}var Pr=!0,Tr=!0;function qe(r,i,o){var u=r.match(i);return u&&u.length>=o&&parseInt(u[o],10)}function Ni(r,i,o){if(r.RTCPeerConnection){var u=r.RTCPeerConnection.prototype,d=u.addEventListener;u.addEventListener=function(g,w){if(g!==i)return d.apply(this,arguments);var _=function($){var P=o($);P&&(w.handleEvent?w.handleEvent(P):w(P))};return this._eventMap=this._eventMap||{},this._eventMap[i]||(this._eventMap[i]=new Map),this._eventMap[i].set(w,_),d.apply(this,[g,_])};var p=u.removeEventListener;u.removeEventListener=function(g,w){if(g!==i||!this._eventMap||!this._eventMap[i])return p.apply(this,arguments);if(!this._eventMap[i].has(w))return p.apply(this,arguments);var _=this._eventMap[i].get(w);return this._eventMap[i].delete(w),this._eventMap[i].size===0&&delete this._eventMap[i],Object.keys(this._eventMap).length===0&&delete this._eventMap,p.apply(this,[g,_])},Object.defineProperty(u,"on"+i,{get:function(){return this["_on"+i]},set:function(w){this["_on"+i]&&(this.removeEventListener(i,this["_on"+i]),delete this["_on"+i]),w&&this.addEventListener(i,this["_on"+i]=w)},enumerable:!0,configurable:!0})}}function zi(r){return typeof r!="boolean"?new Error("Argument type: "+oe(r)+". Please use a boolean."):(Pr=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function Yi(r){return typeof r!="boolean"?new Error("Argument type: "+oe(r)+". Please use a boolean."):(Tr=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function Ji(){if((typeof window>"u"?"undefined":oe(window))==="object"){if(Pr)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Qi(r,i){Tr&&console.warn(r+" is deprecated, please use "+i+" instead.")}function Xi(r){var i={browser:null,version:null};if(typeof r>"u"||!r.navigator||!r.navigator.userAgent)return i.browser="Not a browser.",i;var o=r.navigator;if(o.mozGetUserMedia)i.browser="firefox",i.version=qe(o.userAgent,/Firefox\/(\d+)\./,1);else if(o.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection)i.browser="chrome",i.version=qe(o.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.RTCPeerConnection&&o.userAgent.match(/AppleWebKit\/(\d+)\./))i.browser="safari",i.version=qe(o.userAgent,/AppleWebKit\/(\d+)\./,1),i.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype;else return i.browser="Not a supported browser.",i;return i}function or(r){return Object.prototype.toString.call(r)==="[object Object]"}function Er(r){return or(r)?Object.keys(r).reduce(function(i,o){var u=or(r[o]),d=u?Er(r[o]):r[o],p=u&&!Object.keys(d).length;return d===void 0||p?i:Object.assign(i,Vi({},o,d))},{}):r}function Ge(r,i,o){!i||o.has(i.id)||(o.set(i.id,i),Object.keys(i).forEach(function(u){u.endsWith("Id")?Ge(r,r.get(i[u]),o):u.endsWith("Ids")&&i[u].forEach(function(d){Ge(r,r.get(d),o)})}))}function Ki(r,i,o){var u=o?"outbound-rtp":"inbound-rtp",d=new Map;if(i===null)return d;var p=[];return r.forEach(function(g){g.type==="track"&&g.trackIdentifier===i.id&&p.push(g)}),p.forEach(function(g){r.forEach(function(w){w.type===u&&w.trackId===g.id&&Ge(r,w,d)})}),d}Object.defineProperty(Sr,"__esModule",{value:!0});var Zi=Sr.shimGetUserMedia=ro,eo=to(J);function Or(r){if(typeof WeakMap!="function")return null;var i=new WeakMap,o=new WeakMap;return(Or=function(d){return d?o:i})(r)}function to(r,i){if(r&&r.__esModule)return r;if(r===null||ie(r)!=="object"&&typeof r!="function")return{default:r};var o=Or(i);if(o&&o.has(r))return o.get(r);var u={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var p in r)if(p!=="default"&&Object.prototype.hasOwnProperty.call(r,p)){var g=d?Object.getOwnPropertyDescriptor(r,p):null;g&&(g.get||g.set)?Object.defineProperty(u,p,g):u[p]=r[p]}return u.default=r,o&&o.set(r,u),u}function ie(r){"@babel/helpers - typeof";return ie=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},ie(r)}var sr=eo.log;function ro(r,i){var o=r&&r.navigator;if(o.mediaDevices){var u=function(m){if(ie(m)!=="object"||m.mandatory||m.optional)return m;var $={};return Object.keys(m).forEach(function(P){if(!(P==="require"||P==="advanced"||P==="mediaSource")){var C=ie(m[P])==="object"?m[P]:{ideal:m[P]};C.exact!==void 0&&typeof C.exact=="number"&&(C.min=C.max=C.exact);var U=function(A,D){return A?A+D.charAt(0).toUpperCase()+D.slice(1):D==="deviceId"?"sourceId":D};if(C.ideal!==void 0){$.optional=$.optional||[];var I={};typeof C.ideal=="number"?(I[U("min",P)]=C.ideal,$.optional.push(I),I={},I[U("max",P)]=C.ideal,$.optional.push(I)):(I[U("",P)]=C.ideal,$.optional.push(I))}C.exact!==void 0&&typeof C.exact!="number"?($.mandatory=$.mandatory||{},$.mandatory[U("",P)]=C.exact):["min","max"].forEach(function(V){C[V]!==void 0&&($.mandatory=$.mandatory||{},$.mandatory[U(V,P)]=C[V])})}}),m.advanced&&($.optional=($.optional||[]).concat(m.advanced)),$},d=function(m,$){if(i.version>=61)return $(m);if(m=JSON.parse(JSON.stringify(m)),m&&ie(m.audio)==="object"){var P=function(A,D,X){D in A&&!(X in A)&&(A[X]=A[D],delete A[D])};m=JSON.parse(JSON.stringify(m)),P(m.audio,"autoGainControl","googAutoGainControl"),P(m.audio,"noiseSuppression","googNoiseSuppression"),m.audio=u(m.audio)}if(m&&ie(m.video)==="object"){var C=m.video.facingMode;C=C&&(ie(C)==="object"?C:{ideal:C});var U=i.version<66;if(C&&(C.exact==="user"||C.exact==="environment"||C.ideal==="user"||C.ideal==="environment")&&!(o.mediaDevices.getSupportedConstraints&&o.mediaDevices.getSupportedConstraints().facingMode&&!U)){delete m.video.facingMode;var I;if(C.exact==="environment"||C.ideal==="environment"?I=["back","rear"]:(C.exact==="user"||C.ideal==="user")&&(I=["front"]),I)return o.mediaDevices.enumerateDevices().then(function(V){V=V.filter(function(D){return D.kind==="videoinput"});var A=V.find(function(D){return I.some(function(X){return D.label.toLowerCase().includes(X)})});return!A&&V.length&&I.includes("back")&&(A=V[V.length-1]),A&&(m.video.deviceId=C.exact?{exact:A.deviceId}:{ideal:A.deviceId}),m.video=u(m.video),sr("chrome: "+JSON.stringify(m)),$(m)})}m.video=u(m.video)}return sr("chrome: "+JSON.stringify(m)),$(m)},p=function(m){return i.version>=64?m:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[m.name]||m.name,message:m.message,constraint:m.constraint||m.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}},g=function(m,$,P){d(m,function(C){o.webkitGetUserMedia(C,$,function(U){P&&P(p(U))})})};if(o.getUserMedia=g.bind(o),o.mediaDevices.getUserMedia){var w=o.mediaDevices.getUserMedia.bind(o.mediaDevices);o.mediaDevices.getUserMedia=function(_){return d(_,function(m){return w(m).then(function($){if(m.audio&&!$.getAudioTracks().length||m.video&&!$.getVideoTracks().length)throw $.getTracks().forEach(function(P){P.stop()}),new DOMException("","NotFoundError");return $},function($){return Promise.reject(p($))})})}}}}var Mr={};Object.defineProperty(Mr,"__esModule",{value:!0});var no=Mr.shimGetUserMedia=oo,ao=io(J);function Ar(r){if(typeof WeakMap!="function")return null;var i=new WeakMap,o=new WeakMap;return(Ar=function(d){return d?o:i})(r)}function io(r,i){if(r&&r.__esModule)return r;if(r===null||me(r)!=="object"&&typeof r!="function")return{default:r};var o=Ar(i);if(o&&o.has(r))return o.get(r);var u={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var p in r)if(p!=="default"&&Object.prototype.hasOwnProperty.call(r,p)){var g=d?Object.getOwnPropertyDescriptor(r,p):null;g&&(g.get||g.set)?Object.defineProperty(u,p,g):u[p]=r[p]}return u.default=r,o&&o.set(r,u),u}function me(r){"@babel/helpers - typeof";return me=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},me(r)}function oo(r,i){var o=r&&r.navigator,u=r&&r.MediaStreamTrack;if(o.getUserMedia=function(_,m,$){ao.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),o.mediaDevices.getUserMedia(_).then(m,$)},!(i.version>55&&"autoGainControl"in o.mediaDevices.getSupportedConstraints())){var d=function(m,$,P){$ in m&&!(P in m)&&(m[P]=m[$],delete m[$])},p=o.mediaDevices.getUserMedia.bind(o.mediaDevices);if(o.mediaDevices.getUserMedia=function(_){return me(_)==="object"&&me(_.audio)==="object"&&(_=JSON.parse(JSON.stringify(_)),d(_.audio,"autoGainControl","mozAutoGainControl"),d(_.audio,"noiseSuppression","mozNoiseSuppression")),p(_)},u&&u.prototype.getSettings){var g=u.prototype.getSettings;u.prototype.getSettings=function(){var _=g.apply(this,arguments);return d(_,"mozAutoGainControl","autoGainControl"),d(_,"mozNoiseSuppression","noiseSuppression"),_}}if(u&&u.prototype.applyConstraints){var w=u.prototype.applyConstraints;u.prototype.applyConstraints=function(_){return this.kind==="audio"&&me(_)==="object"&&(_=JSON.parse(JSON.stringify(_)),d(_,"autoGainControl","mozAutoGainControl"),d(_,"noiseSuppression","mozNoiseSuppression")),w.apply(this,[_])}}}}var te={};Object.defineProperty(te,"__esModule",{value:!0});te.shimAudioContext=yo;te.shimCallbacksAPI=fo;te.shimConstraints=xr;te.shimCreateOfferLegacy=vo;var so=te.shimGetUserMedia=po;te.shimLocalStreamsAPI=co;te.shimRTCIceServerUrls=ho;te.shimRemoteStreamsAPI=lo;te.shimTrackEventTransceiver=mo;var Dr=uo(J);function Rr(r){if(typeof WeakMap!="function")return null;var i=new WeakMap,o=new WeakMap;return(Rr=function(d){return d?o:i})(r)}function uo(r,i){if(r&&r.__esModule)return r;if(r===null||se(r)!=="object"&&typeof r!="function")return{default:r};var o=Rr(i);if(o&&o.has(r))return o.get(r);var u={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var p in r)if(p!=="default"&&Object.prototype.hasOwnProperty.call(r,p)){var g=d?Object.getOwnPropertyDescriptor(r,p):null;g&&(g.get||g.set)?Object.defineProperty(u,p,g):u[p]=r[p]}return u.default=r,o&&o.set(r,u),u}function se(r){"@babel/helpers - typeof";return se=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},se(r)}function co(r){if(!(se(r)!=="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){var i=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(u){var d=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(u)||this._localStreams.push(u),u.getAudioTracks().forEach(function(p){return i.call(d,p,u)}),u.getVideoTracks().forEach(function(p){return i.call(d,p,u)})},r.RTCPeerConnection.prototype.addTrack=function(u){for(var d=this,p=arguments.length,g=new Array(p>1?p-1:0),w=1;w=0)){u._remoteStreams.push(p);var g=new Event("addstream");g.stream=p,u.dispatchEvent(g)}})}),i.apply(u,arguments)}}}function fo(r){if(!(se(r)!=="object"||!r.RTCPeerConnection)){var i=r.RTCPeerConnection.prototype,o=i.createOffer,u=i.createAnswer,d=i.setLocalDescription,p=i.setRemoteDescription,g=i.addIceCandidate;i.createOffer=function(m,$){var P=arguments.length>=2?arguments[2]:arguments[0],C=o.apply(this,[P]);return $?(C.then(m,$),Promise.resolve()):C},i.createAnswer=function(m,$){var P=arguments.length>=2?arguments[2]:arguments[0],C=u.apply(this,[P]);return $?(C.then(m,$),Promise.resolve()):C};var w=function(m,$,P){var C=d.apply(this,[m]);return P?(C.then($,P),Promise.resolve()):C};i.setLocalDescription=w,w=function(m,$,P){var C=p.apply(this,[m]);return P?(C.then($,P),Promise.resolve()):C},i.setRemoteDescription=w,w=function(m,$,P){var C=g.apply(this,[m]);return P?(C.then($,P),Promise.resolve()):C},i.addIceCandidate=w}}function po(r){var i=r&&r.navigator;if(i.mediaDevices&&i.mediaDevices.getUserMedia){var o=i.mediaDevices,u=o.getUserMedia.bind(o);i.mediaDevices.getUserMedia=function(d){return u(xr(d))}}!i.getUserMedia&&i.mediaDevices&&i.mediaDevices.getUserMedia&&(i.getUserMedia=(function(p,g,w){i.mediaDevices.getUserMedia(p).then(g,w)}).bind(i))}function xr(r){return r&&r.video!==void 0?Object.assign({},r,{video:Dr.compactObject(r.video)}):r}function ho(r){if(r.RTCPeerConnection){var i=r.RTCPeerConnection;r.RTCPeerConnection=function(u,d){if(u&&u.iceServers){for(var p=[],g=0;g{let i=!1,o;return(...u)=>(i||(o=r(u),i=!0),o)};function To(r,i){if(r===!1)throw new Error(i??"assertion failure")}function ur(r){throw new Error("this code should be unreachable")}const wo=go(()=>{const r=Bi(window);switch(r.browser){case"chrome":Zi(window,r);break;case"firefox":no(window,r);break;case"safari":so(window,r);break;default:throw new _r}});let ve=Promise.resolve({type:"stop",data:{}});async function cr(r,i,o){var w,_;if(console.debug("[vue-qrcode-reader] starting camera with constraints: ",JSON.stringify(i)),window.isSecureContext!==!0)throw new Wi;if(((w=navigator==null?void 0:navigator.mediaDevices)==null?void 0:w.getUserMedia)===void 0)throw new _r;wo(),console.debug("[vue-qrcode-reader] calling getUserMedia");const u=await navigator.mediaDevices.getUserMedia({audio:!1,video:i});r.srcObject!==void 0?r.srcObject=u:r.mozSrcObject!==void 0?r.mozSrcObject=u:window.URL.createObjectURL?r.src=window.URL.createObjectURL(u):window.webkitURL?r.src=window.webkitURL.createObjectURL(u):r.src=u.id,r.play(),console.debug("[vue-qrcode-reader] waiting for video element to load"),await Promise.race([ht(r,"loadeddata"),ir(6e3).then(()=>{throw new Li})]),console.debug("[vue-qrcode-reader] video element loaded"),await ir(500);const[d]=u.getVideoTracks(),p=((_=d==null?void 0:d.getCapabilities)==null?void 0:_.call(d))??{};let g=!1;return o&&p.torch&&(await d.applyConstraints({advanced:[{torch:!0}]}),g=!0),console.debug("[vue-qrcode-reader] camera ready"),{type:"start",data:{videoEl:r,stream:u,capabilities:p,constraints:i,isTorchOn:g}}}async function Eo(r,{constraints:i,torch:o,restart:u=!1}){ve=ve.then(p=>{if(p.type==="start"){const{data:{videoEl:g,stream:w,constraints:_,isTorchOn:m}}=p;return!u&&r===g&&i===_&&o===m?p:Ir(g,w,m).then(()=>cr(r,i,o))}else if(p.type==="stop"||p.type==="failed")return cr(r,i,o);ur()}).catch(p=>(console.debug(`[vue-qrcode-reader] starting camera failed with "${p}"`),{type:"failed",error:p}));const d=await ve;if(d.type==="stop")throw new Error("Something went wrong with the camera task queue (start task).");if(d.type==="failed")throw d.error;if(d.type==="start")return d.data.capabilities;ur()}async function Ir(r,i,o){console.debug("[vue-qrcode-reader] stopping camera"),r.src="",r.srcObject=null,r.load(),await ht(r,"error");for(const u of i.getTracks())o??await u.applyConstraints({advanced:[{torch:!1}]}),i.removeTrack(u),u.stop();return{type:"stop",data:{}}}async function Oo(){if(ve=ve.then(i=>{if(i.type==="stop"||i.type==="failed")return i;const{data:{videoEl:o,stream:u,isTorchOn:d}}=i;return Ir(o,u,d)}),(await ve).type==="start")throw new Error("Something went wrong with the camera task queue (stop task).")}export{Co as _,Po as a,To as b,Eo as c,$o as d,_o as k,So as p,Oo as s}; diff --git a/pr-preview/pr-449/assets/chunks/framework.BtL3uYYi.js b/pr-preview/pr-449/assets/chunks/framework.BtL3uYYi.js new file mode 100644 index 00000000..15120094 --- /dev/null +++ b/pr-preview/pr-449/assets/chunks/framework.BtL3uYYi.js @@ -0,0 +1,2 @@ +function Ei(e,t){const n=Object.create(null),i=e.split(",");for(let s=0;s!!n[s]}const te={},yt=[],Fe=()=>{},To=()=>!1,Gt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ti=e=>e.startsWith("onUpdate:"),ce=Object.assign,Ai=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ao=Object.prototype.hasOwnProperty,X=(e,t)=>Ao.call(e,t),k=Array.isArray,vt=e=>en(e)==="[object Map]",Rt=e=>en(e)==="[object Set]",ns=e=>en(e)==="[object Date]",q=e=>typeof e=="function",ie=e=>typeof e=="string",Ge=e=>typeof e=="symbol",G=e=>e!==null&&typeof e=="object",er=e=>(G(e)||q(e))&&q(e.then)&&q(e.catch),tr=Object.prototype.toString,en=e=>tr.call(e),So=e=>en(e).slice(8,-1),nr=e=>en(e)==="[object Object]",Si=e=>ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,$t=Ei(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Fn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},jo=/-(\w)/g,Le=Fn(e=>e.replace(jo,(t,n)=>n?n.toUpperCase():"")),Oo=/\B([A-Z])/g,mt=Fn(e=>e.replace(Oo,"-$1").toLowerCase()),Ln=Fn(e=>e.charAt(0).toUpperCase()+e.slice(1)),bn=Fn(e=>e?`on${Ln(e)}`:""),et=(e,t)=>!Object.is(e,t),wn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Tn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ro=e=>{const t=ie(e)?Number(e):NaN;return isNaN(t)?e:t};let is;const ci=()=>is||(is=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ji(e){if(k(e)){const t={};for(let n=0;n{if(n){const i=n.split(Po);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function Oi(e){let t="";if(ie(e))t=e;else if(k(e))for(let n=0;ntn(n,t))}const Jc=e=>ie(e)?e:e==null?"":k(e)||G(e)&&(e.toString===tr||!q(e.toString))?JSON.stringify(e,sr,2):String(e),sr=(e,t)=>t&&t.__v_isRef?sr(e,t.value):vt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[i,s],r)=>(n[Qn(i,r)+" =>"]=s,n),{})}:Rt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Qn(n))}:Ge(t)?Qn(t):G(t)&&!k(t)&&!nr(t)?String(t):t,Qn=(e,t="")=>{var n;return Ge(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let ve;class Ho{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ve,!t&&ve&&(this.index=(ve.scopes||(ve.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=ve;try{return ve=this,t()}finally{ve=n}}}on(){ve=this}off(){ve=this.parent}stop(t){if(this._active){let n,i;for(n=0,i=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},or=e=>(e.w&tt)>0,lr=e=>(e.n&tt)>0,Uo=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let i=0;i{(u==="length"||!Ge(u)&&u>=a)&&l.push(c)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":k(e)?Si(n)&&l.push(o.get("length")):(l.push(o.get(ut)),vt(e)&&l.push(o.get(ui)));break;case"delete":k(e)||(l.push(o.get(ut)),vt(e)&&l.push(o.get(ui)));break;case"set":vt(e)&&l.push(o.get(ut));break}if(l.length===1)l[0]&&pi(l[0]);else{const a=[];for(const c of l)c&&a.push(...c);pi(Mi(a))}}function pi(e,t){const n=k(e)?e:[...e];for(const i of n)i.computed&&rs(i);for(const i of n)i.computed||rs(i)}function rs(e,t){(e!==je||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Ko(e,t){var n;return(n=An.get(e))==null?void 0:n.get(t)}const Vo=Ei("__proto__,__v_isRef,__isVue"),fr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ge)),os=qo();function qo(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const i=Q(this);for(let r=0,o=this.length;r{e[t]=function(...n){Mt();const i=Q(this)[t].apply(this,n);return Pt(),i}}),e}function Wo(e){const t=Q(this);return xe(t,"has",e),t.hasOwnProperty(e)}class ur{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,i){const s=this._isReadonly,r=this._shallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return r;if(n==="__v_raw")return i===(s?r?rl:hr:r?mr:dr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const o=k(t);if(!s){if(o&&X(os,n))return Reflect.get(os,n,i);if(n==="hasOwnProperty")return Wo}const l=Reflect.get(t,n,i);return(Ge(n)?fr.has(n):Vo(n))||(s||xe(t,"get",n),r)?l:pe(l)?o&&Si(n)?l:l.value:G(l)?s?Hn(l):Nn(l):l}}class pr extends ur{constructor(t=!1){super(!1,t)}set(t,n,i,s){let r=t[n];if(!this._shallow){const a=Et(r);if(!Sn(i)&&!Et(i)&&(r=Q(r),i=Q(i)),!k(t)&&pe(r)&&!pe(i))return a?!1:(r.value=i,!0)}const o=k(t)&&Si(n)?Number(n)e,kn=e=>Reflect.getPrototypeOf(e);function ln(e,t,n=!1,i=!1){e=e.__v_raw;const s=Q(e),r=Q(t);n||(et(t,r)&&xe(s,"get",t),xe(s,"get",r));const{has:o}=kn(s),l=i?Ii:n?ki:Wt;if(o.call(s,t))return l(e.get(t));if(o.call(s,r))return l(e.get(r));e!==s&&e.get(t)}function an(e,t=!1){const n=this.__v_raw,i=Q(n),s=Q(e);return t||(et(e,s)&&xe(i,"has",e),xe(i,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function cn(e,t=!1){return e=e.__v_raw,!t&&xe(Q(e),"iterate",ut),Reflect.get(e,"size",e)}function ls(e){e=Q(e);const t=Q(this);return kn(t).has.call(t,e)||(t.add(e),De(t,"add",e,e)),this}function as(e,t){t=Q(t);const n=Q(this),{has:i,get:s}=kn(n);let r=i.call(n,e);r||(e=Q(e),r=i.call(n,e));const o=s.call(n,e);return n.set(e,t),r?et(t,o)&&De(n,"set",e,t):De(n,"add",e,t),this}function cs(e){const t=Q(this),{has:n,get:i}=kn(t);let s=n.call(t,e);s||(e=Q(e),s=n.call(t,e)),i&&i.call(t,e);const r=t.delete(e);return s&&De(t,"delete",e,void 0),r}function fs(){const e=Q(this),t=e.size!==0,n=e.clear();return t&&De(e,"clear",void 0,void 0),n}function fn(e,t){return function(i,s){const r=this,o=r.__v_raw,l=Q(o),a=t?Ii:e?ki:Wt;return!e&&xe(l,"iterate",ut),o.forEach((c,u)=>i.call(s,a(c),a(u),r))}}function un(e,t,n){return function(...i){const s=this.__v_raw,r=Q(s),o=vt(r),l=e==="entries"||e===Symbol.iterator&&o,a=e==="keys"&&o,c=s[e](...i),u=n?Ii:t?ki:Wt;return!t&&xe(r,"iterate",a?ui:ut),{next(){const{value:d,done:g}=c.next();return g?{value:d,done:g}:{value:l?[u(d[0]),u(d[1])]:u(d),done:g}},[Symbol.iterator](){return this}}}}function Ke(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Qo(){const e={get(r){return ln(this,r)},get size(){return cn(this)},has:an,add:ls,set:as,delete:cs,clear:fs,forEach:fn(!1,!1)},t={get(r){return ln(this,r,!1,!0)},get size(){return cn(this)},has:an,add:ls,set:as,delete:cs,clear:fs,forEach:fn(!1,!0)},n={get(r){return ln(this,r,!0)},get size(){return cn(this,!0)},has(r){return an.call(this,r,!0)},add:Ke("add"),set:Ke("set"),delete:Ke("delete"),clear:Ke("clear"),forEach:fn(!0,!1)},i={get(r){return ln(this,r,!0,!0)},get size(){return cn(this,!0)},has(r){return an.call(this,r,!0)},add:Ke("add"),set:Ke("set"),delete:Ke("delete"),clear:Ke("clear"),forEach:fn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(r=>{e[r]=un(r,!1,!1),n[r]=un(r,!0,!1),t[r]=un(r,!1,!0),i[r]=un(r,!0,!0)}),[e,n,t,i]}const[Zo,Go,el,tl]=Qo();function Fi(e,t){const n=t?e?tl:el:e?Go:Zo;return(i,s,r)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?i:Reflect.get(X(n,s)&&s in i?n:i,s,r)}const nl={get:Fi(!1,!1)},il={get:Fi(!1,!0)},sl={get:Fi(!0,!1)},dr=new WeakMap,mr=new WeakMap,hr=new WeakMap,rl=new WeakMap;function ol(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ll(e){return e.__v_skip||!Object.isExtensible(e)?0:ol(So(e))}function Nn(e){return Et(e)?e:Li(e,!1,Yo,nl,dr)}function al(e){return Li(e,!1,Xo,il,mr)}function Hn(e){return Li(e,!0,Jo,sl,hr)}function Li(e,t,n,i,s){if(!G(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=s.get(e);if(r)return r;const o=ll(e);if(o===0)return e;const l=new Proxy(e,o===2?i:n);return s.set(e,l),l}function bt(e){return Et(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function Et(e){return!!(e&&e.__v_isReadonly)}function Sn(e){return!!(e&&e.__v_isShallow)}function gr(e){return bt(e)||Et(e)}function Q(e){const t=e&&e.__v_raw;return t?Q(t):e}function Dt(e){return En(e,"__v_skip",!0),e}const Wt=e=>G(e)?Nn(e):e,ki=e=>G(e)?Hn(e):e;function Ni(e){Xe&&je&&(e=Q(e),cr(e.dep||(e.dep=Mi())))}function Hi(e,t){e=Q(e);const n=e.dep;n&&pi(n)}function pe(e){return!!(e&&e.__v_isRef===!0)}function ae(e){return xr(e,!1)}function $i(e){return xr(e,!0)}function xr(e,t){return pe(e)?e:new cl(e,t)}class cl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:Q(t),this._value=n?t:Wt(t)}get value(){return Ni(this),this._value}set value(t){const n=this.__v_isShallow||Sn(t)||Et(t);t=n?t:Q(t),et(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Wt(t),Hi(this))}}function yr(e){return pe(e)?e.value:e}const fl={get:(e,t,n)=>yr(Reflect.get(e,t,n)),set:(e,t,n,i)=>{const s=e[t];return pe(s)&&!pe(n)?(s.value=n,!0):Reflect.set(e,t,n,i)}};function vr(e){return bt(e)?e:new Proxy(e,fl)}class ul{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:i}=t(()=>Ni(this),()=>Hi(this));this._get=n,this._set=i}get value(){return this._get()}set value(t){this._set(t)}}function pl(e){return new ul(e)}class dl{constructor(t,n,i){this._object=t,this._key=n,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Ko(Q(this._object),this._key)}}class ml{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function hl(e,t,n){return pe(e)?e:q(e)?new ml(e):G(e)&&arguments.length>1?gl(e,t,n):ae(e)}function gl(e,t,n){const i=e[t];return pe(i)?i:new dl(e,t,n)}class xl{constructor(t,n,i,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new Pi(t,()=>{this._dirty||(this._dirty=!0,Hi(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=i}get value(){const t=Q(this);return Ni(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function yl(e,t,n=!1){let i,s;const r=q(e);return r?(i=e,s=Fe):(i=e.get,s=e.set),new xl(i,s,r||!s,n)}function Qe(e,t,n,i){let s;try{s=i?e(...i):e()}catch(r){nn(r,t,n)}return s}function Te(e,t,n,i){if(q(e)){const r=Qe(e,t,n,i);return r&&er(r)&&r.catch(o=>{nn(o,t,n)}),r}const s=[];for(let r=0;r>>1,s=de[i],r=Yt(s);rIe&&de.splice(t,1)}function _l(e){k(e)?wt.push(...e):(!$e||!$e.includes(e,e.allowRecurse?lt+1:lt))&&wt.push(e),wr()}function us(e,t,n=zt?Ie+1:0){for(;nYt(n)-Yt(i)),lt=0;lt<$e.length;lt++)$e[lt]();$e=null,lt=0}}const Yt=e=>e.id==null?1/0:e.id,Cl=(e,t)=>{const n=Yt(e)-Yt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function _r(e){di=!1,zt=!0,de.sort(Cl);try{for(Ie=0;Ieie(b)?b.trim():b)),d&&(s=n.map(Tn))}let l,a=i[l=bn(t)]||i[l=bn(Le(t))];!a&&r&&(a=i[l=bn(mt(t))]),a&&Te(a,e,6,s);const c=i[l+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Te(c,e,6,s)}}function Cr(e,t,n=!1){const i=t.emitsCache,s=i.get(e);if(s!==void 0)return s;const r=e.emits;let o={},l=!1;if(!q(e)){const a=c=>{const u=Cr(c,t,!0);u&&(l=!0,ce(o,u))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!r&&!l?(G(e)&&i.set(e,null),null):(k(r)?r.forEach(a=>o[a]=null):ce(o,r),G(e)&&i.set(e,o),o)}function Un(e,t){return!e||!Gt(t)?!1:(t=t.slice(2).replace(/Once$/,""),X(e,t[0].toLowerCase()+t.slice(1))||X(e,mt(t))||X(e,t))}let ue=null,Bn=null;function On(e){const t=ue;return ue=e,Bn=e&&e.type.__scopeId||null,t}function Xc(e){Bn=e}function Qc(){Bn=null}function Tl(e,t=ue,n){if(!t||e._n)return e;const i=(...s)=>{i._d&&Es(-1);const r=On(t);let o;try{o=e(...s)}finally{On(r),i._d&&Es(1)}return o};return i._n=!0,i._c=!0,i._d=!0,i}function Zn(e){const{type:t,vnode:n,proxy:i,withProxy:s,props:r,propsOptions:[o],slots:l,attrs:a,emit:c,render:u,renderCache:d,data:g,setupState:b,ctx:C,inheritAttrs:T}=e;let I,V;const L=On(e);try{if(n.shapeFlag&4){const m=s||i,M=m;I=Se(u.call(M,m,d,r,b,g,C)),V=a}else{const m=t;I=Se(m.length>1?m(r,{attrs:a,slots:l,emit:c}):m(r,null)),V=t.props?a:Al(a)}}catch(m){Vt.length=0,nn(m,e,1),I=se(we)}let x=I;if(V&&T!==!1){const m=Object.keys(V),{shapeFlag:M}=x;m.length&&M&7&&(o&&m.some(Ti)&&(V=Sl(V,o)),x=nt(x,V))}return n.dirs&&(x=nt(x),x.dirs=x.dirs?x.dirs.concat(n.dirs):n.dirs),n.transition&&(x.transition=n.transition),I=x,On(L),I}const Al=e=>{let t;for(const n in e)(n==="class"||n==="style"||Gt(n))&&((t||(t={}))[n]=e[n]);return t},Sl=(e,t)=>{const n={};for(const i in e)(!Ti(i)||!(i.slice(9)in t))&&(n[i]=e[i]);return n};function jl(e,t,n){const{props:i,children:s,component:r}=e,{props:o,children:l,patchFlag:a}=t,c=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return i?ps(i,o,c):!!o;if(a&8){const u=t.dynamicProps;for(let d=0;de.__isSuspense;function Sr(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):_l(e)}function Ui(e,t){return Kn(e,null,t)}function ef(e,t){return Kn(e,null,{flush:"post"})}const pn={};function Ze(e,t,n){return Kn(e,t,n)}function Kn(e,t,{immediate:n,deep:i,flush:s,onTrack:r,onTrigger:o}=te){var l;const a=rr()===((l=le)==null?void 0:l.scope)?le:null;let c,u=!1,d=!1;if(pe(e)?(c=()=>e.value,u=Sn(e)):bt(e)?(c=()=>e,i=!0):k(e)?(d=!0,u=e.some(m=>bt(m)||Sn(m)),c=()=>e.map(m=>{if(pe(m))return m.value;if(bt(m))return ft(m);if(q(m))return Qe(m,a,2)})):q(e)?t?c=()=>Qe(e,a,2):c=()=>{if(!(a&&a.isUnmounted))return g&&g(),Te(e,a,3,[b])}:c=Fe,t&&i){const m=c;c=()=>ft(m())}let g,b=m=>{g=L.onStop=()=>{Qe(m,a,4),g=L.onStop=void 0}},C;if(jt)if(b=Fe,t?n&&Te(t,a,3,[c(),d?[]:void 0,b]):c(),s==="sync"){const m=Aa();C=m.__watcherHandles||(m.__watcherHandles=[])}else return Fe;let T=d?new Array(e.length).fill(pn):pn;const I=()=>{if(L.active)if(t){const m=L.run();(i||u||(d?m.some((M,K)=>et(M,T[K])):et(m,T)))&&(g&&g(),Te(t,a,3,[m,T===pn?void 0:d&&T[0]===pn?[]:T,b]),T=m)}else L.run()};I.allowRecurse=!!t;let V;s==="sync"?V=I:s==="post"?V=()=>he(I,a&&a.suspense):(I.pre=!0,a&&(I.id=a.uid),V=()=>Dn(I));const L=new Pi(c,V);t?n?I():T=L.run():s==="post"?he(L.run.bind(L),a&&a.suspense):L.run();const x=()=>{L.stop(),a&&a.scope&&Ai(a.scope.effects,L)};return C&&C.push(x),x}function Ml(e,t,n){const i=this.proxy,s=ie(e)?e.includes(".")?jr(i,e):()=>i[e]:e.bind(i,i);let r;q(t)?r=t:(r=t.handler,n=t);const o=le;St(this);const l=Kn(s,r.bind(i),n);return o?St(o):pt(),l}function jr(e,t){const n=t.split(".");return()=>{let i=e;for(let s=0;s{ft(n,t)});else if(nr(e))for(const n in e)ft(e[n],t);return e}function tf(e,t){const n=ue;if(n===null)return e;const i=Yn(n)||n.proxy,s=e.dirs||(e.dirs=[]);for(let r=0;r{e.isMounted=!0}),Ir(()=>{e.isUnmounting=!0}),e}const _e=[Function,Array],Or={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:_e,onEnter:_e,onAfterEnter:_e,onEnterCancelled:_e,onBeforeLeave:_e,onLeave:_e,onAfterLeave:_e,onLeaveCancelled:_e,onBeforeAppear:_e,onAppear:_e,onAfterAppear:_e,onAppearCancelled:_e},Il={name:"BaseTransition",props:Or,setup(e,{slots:t}){const n=zn(),i=Pl();let s;return()=>{const r=t.default&&Mr(t.default(),!0);if(!r||!r.length)return;let o=r[0];if(r.length>1){for(const T of r)if(T.type!==we){o=T;break}}const l=Q(e),{mode:a}=l;if(i.isLeaving)return Gn(o);const c=ms(o);if(!c)return Gn(o);const u=mi(c,l,i,n);hi(c,u);const d=n.subTree,g=d&&ms(d);let b=!1;const{getTransitionKey:C}=c.type;if(C){const T=C();s===void 0?s=T:T!==s&&(s=T,b=!0)}if(g&&g.type!==we&&(!at(c,g)||b)){const T=mi(g,l,i,n);if(hi(g,T),a==="out-in")return i.isLeaving=!0,T.afterLeave=()=>{i.isLeaving=!1,n.update.active!==!1&&n.update()},Gn(o);a==="in-out"&&c.type!==we&&(T.delayLeave=(I,V,L)=>{const x=Rr(i,g);x[String(g.key)]=g,I[ze]=()=>{V(),I[ze]=void 0,delete u.delayedLeave},u.delayedLeave=L})}return o}}},Fl=Il;function Rr(e,t){const{leavingVNodes:n}=e;let i=n.get(t.type);return i||(i=Object.create(null),n.set(t.type,i)),i}function mi(e,t,n,i){const{appear:s,mode:r,persisted:o=!1,onBeforeEnter:l,onEnter:a,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:d,onLeave:g,onAfterLeave:b,onLeaveCancelled:C,onBeforeAppear:T,onAppear:I,onAfterAppear:V,onAppearCancelled:L}=t,x=String(e.key),m=Rr(n,e),M=(j,F)=>{j&&Te(j,i,9,F)},K=(j,F)=>{const w=F[1];M(j,F),k(j)?j.every(H=>H.length<=1)&&w():j.length<=1&&w()},N={mode:r,persisted:o,beforeEnter(j){let F=l;if(!n.isMounted)if(s)F=T||l;else return;j[ze]&&j[ze](!0);const w=m[x];w&&at(e,w)&&w.el[ze]&&w.el[ze](),M(F,[j])},enter(j){let F=a,w=c,H=u;if(!n.isMounted)if(s)F=I||a,w=V||c,H=L||u;else return;let S=!1;const z=j[dn]=oe=>{S||(S=!0,oe?M(H,[j]):M(w,[j]),N.delayedLeave&&N.delayedLeave(),j[dn]=void 0)};F?K(F,[j,z]):z()},leave(j,F){const w=String(e.key);if(j[dn]&&j[dn](!0),n.isUnmounting)return F();M(d,[j]);let H=!1;const S=j[ze]=z=>{H||(H=!0,F(),z?M(C,[j]):M(b,[j]),j[ze]=void 0,m[w]===e&&delete m[w])};m[w]=e,g?K(g,[j,S]):S()},clone(j){return mi(j,t,n,i)}};return N}function Gn(e){if(sn(e))return e=nt(e),e.children=null,e}function ms(e){return sn(e)?e.children?e.children[0]:void 0:e}function hi(e,t){e.shapeFlag&6&&e.component?hi(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Mr(e,t=!1,n){let i=[],s=0;for(let r=0;r1)for(let r=0;r!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function nf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:i,delay:s=200,timeout:r,suspensible:o=!0,onError:l}=e;let a=null,c,u=0;const d=()=>(u++,a=null,g()),g=()=>{let b;return a||(b=a=t().catch(C=>{if(C=C instanceof Error?C:new Error(String(C)),l)return new Promise((T,I)=>{l(C,()=>T(d()),()=>I(C),u+1)});throw C}).then(C=>b!==a&&a?a:(C&&(C.__esModule||C[Symbol.toStringTag]==="Module")&&(C=C.default),c=C,C)))};return Bi({name:"AsyncComponentWrapper",__asyncLoader:g,get __asyncResolved(){return c},setup(){const b=le;if(c)return()=>ei(c,b);const C=L=>{a=null,nn(L,b,13,!i)};if(o&&b.suspense||jt)return g().then(L=>()=>ei(L,b)).catch(L=>(C(L),()=>i?se(i,{error:L}):null));const T=ae(!1),I=ae(),V=ae(!!s);return s&&setTimeout(()=>{V.value=!1},s),r!=null&&setTimeout(()=>{if(!T.value&&!I.value){const L=new Error(`Async component timed out after ${r}ms.`);C(L),I.value=L}},r),g().then(()=>{T.value=!0,b.parent&&sn(b.parent.vnode)&&Dn(b.parent.update)}).catch(L=>{C(L),I.value=L}),()=>{if(T.value&&c)return ei(c,b);if(I.value&&i)return se(i,{error:I.value});if(n&&!V.value)return se(n)}}})}function ei(e,t){const{ref:n,props:i,children:s,ce:r}=t.vnode,o=se(e,i,s);return o.ref=n,o.ce=r,delete t.vnode.ce,o}const sn=e=>e.type.__isKeepAlive;function Ll(e,t){Pr(e,"a",t)}function kl(e,t){Pr(e,"da",t)}function Pr(e,t,n=le){const i=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Vn(t,i,n),n){let s=n.parent;for(;s&&s.parent;)sn(s.parent.vnode)&&Nl(i,t,n,s),s=s.parent}}function Nl(e,t,n,i){const s=Vn(t,e,i,!0);qn(()=>{Ai(i[t],s)},n)}function Vn(e,t,n=le,i=!1){if(n){const s=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Mt(),St(n);const l=Te(t,n,e,o);return pt(),Pt(),l});return i?s.unshift(r):s.push(r),r}}const Be=e=>(t,n=le)=>(!jt||e==="sp")&&Vn(e,(...i)=>t(...i),n),Hl=Be("bm"),It=Be("m"),$l=Be("bu"),Dl=Be("u"),Ir=Be("bum"),qn=Be("um"),Ul=Be("sp"),Bl=Be("rtg"),Kl=Be("rtc");function Vl(e,t=le){Vn("ec",e,t)}function sf(e,t,n,i){let s;const r=n;if(k(e)||ie(e)){s=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,r));else{const o=Object.keys(e);s=new Array(o.length);for(let l=0,a=o.length;lIn(t)?!(t.type===we||t.type===ge&&!Fr(t.children)):!0)?e:null}function of(e,t){const n={};for(const i in e)n[/[A-Z]/.test(i)?`on:${i}`:bn(i)]=e[i];return n}const gi=e=>e?Qr(e)?Yn(e)||e.proxy:gi(e.parent):null,Ut=ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>gi(e.parent),$root:e=>gi(e.root),$emit:e=>e.emit,$options:e=>Ki(e),$forceUpdate:e=>e.f||(e.f=()=>Dn(e.update)),$nextTick:e=>e.n||(e.n=$n.bind(e.proxy)),$watch:e=>Ml.bind(e)}),ti=(e,t)=>e!==te&&!e.__isScriptSetup&&X(e,t),ql={get({_:e},t){const{ctx:n,setupState:i,data:s,props:r,accessCache:o,type:l,appContext:a}=e;let c;if(t[0]!=="$"){const b=o[t];if(b!==void 0)switch(b){case 1:return i[t];case 2:return s[t];case 4:return n[t];case 3:return r[t]}else{if(ti(i,t))return o[t]=1,i[t];if(s!==te&&X(s,t))return o[t]=2,s[t];if((c=e.propsOptions[0])&&X(c,t))return o[t]=3,r[t];if(n!==te&&X(n,t))return o[t]=4,n[t];xi&&(o[t]=0)}}const u=Ut[t];let d,g;if(u)return t==="$attrs"&&xe(e,"get",t),u(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(n!==te&&X(n,t))return o[t]=4,n[t];if(g=a.config.globalProperties,X(g,t))return g[t]},set({_:e},t,n){const{data:i,setupState:s,ctx:r}=e;return ti(s,t)?(s[t]=n,!0):i!==te&&X(i,t)?(i[t]=n,!0):X(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:i,appContext:s,propsOptions:r}},o){let l;return!!n[o]||e!==te&&X(e,o)||ti(t,o)||(l=r[0])&&X(l,o)||X(i,o)||X(Ut,o)||X(s.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:X(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function lf(){return Wl().slots}function Wl(){const e=zn();return e.setupContext||(e.setupContext=Gr(e))}function hs(e){return k(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let xi=!0;function zl(e){const t=Ki(e),n=e.proxy,i=e.ctx;xi=!1,t.beforeCreate&&gs(t.beforeCreate,e,"bc");const{data:s,computed:r,methods:o,watch:l,provide:a,inject:c,created:u,beforeMount:d,mounted:g,beforeUpdate:b,updated:C,activated:T,deactivated:I,beforeDestroy:V,beforeUnmount:L,destroyed:x,unmounted:m,render:M,renderTracked:K,renderTriggered:N,errorCaptured:j,serverPrefetch:F,expose:w,inheritAttrs:H,components:S,directives:z,filters:oe}=t;if(c&&Yl(c,i,null),o)for(const J in o){const $=o[J];q($)&&(i[J]=$.bind(n))}if(s){const J=s.call(n,n);G(J)&&(e.data=Nn(J))}if(xi=!0,r)for(const J in r){const $=r[J],Ne=q($)?$.bind(n,n):q($.get)?$.get.bind(n,n):Fe,rn=!q($)&&q($.set)?$.set.bind(n):Fe,it=ne({get:Ne,set:rn});Object.defineProperty(i,J,{enumerable:!0,configurable:!0,get:()=>it.value,set:Re=>it.value=Re})}if(l)for(const J in l)Lr(l[J],i,n,J);if(a){const J=q(a)?a.call(n):a;Reflect.ownKeys(J).forEach($=>{ea($,J[$])})}u&&gs(u,e,"c");function B(J,$){k($)?$.forEach(Ne=>J(Ne.bind(n))):$&&J($.bind(n))}if(B(Hl,d),B(It,g),B($l,b),B(Dl,C),B(Ll,T),B(kl,I),B(Vl,j),B(Kl,K),B(Bl,N),B(Ir,L),B(qn,m),B(Ul,F),k(w))if(w.length){const J=e.exposed||(e.exposed={});w.forEach($=>{Object.defineProperty(J,$,{get:()=>n[$],set:Ne=>n[$]=Ne})})}else e.exposed||(e.exposed={});M&&e.render===Fe&&(e.render=M),H!=null&&(e.inheritAttrs=H),S&&(e.components=S),z&&(e.directives=z)}function Yl(e,t,n=Fe){k(e)&&(e=yi(e));for(const i in e){const s=e[i];let r;G(s)?"default"in s?r=Ct(s.from||i,s.default,!0):r=Ct(s.from||i):r=Ct(s),pe(r)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):t[i]=r}}function gs(e,t,n){Te(k(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,n)}function Lr(e,t,n,i){const s=i.includes(".")?jr(n,i):()=>n[i];if(ie(e)){const r=t[e];q(r)&&Ze(s,r)}else if(q(e))Ze(s,e.bind(n));else if(G(e))if(k(e))e.forEach(r=>Lr(r,t,n,i));else{const r=q(e.handler)?e.handler.bind(n):t[e.handler];q(r)&&Ze(s,r,e)}}function Ki(e){const t=e.type,{mixins:n,extends:i}=t,{mixins:s,optionsCache:r,config:{optionMergeStrategies:o}}=e.appContext,l=r.get(t);let a;return l?a=l:!s.length&&!n&&!i?a=t:(a={},s.length&&s.forEach(c=>Rn(a,c,o,!0)),Rn(a,t,o)),G(t)&&r.set(t,a),a}function Rn(e,t,n,i=!1){const{mixins:s,extends:r}=t;r&&Rn(e,r,n,!0),s&&s.forEach(o=>Rn(e,o,n,!0));for(const o in t)if(!(i&&o==="expose")){const l=Jl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Jl={data:xs,props:ys,emits:ys,methods:Ht,computed:Ht,beforeCreate:me,created:me,beforeMount:me,mounted:me,beforeUpdate:me,updated:me,beforeDestroy:me,beforeUnmount:me,destroyed:me,unmounted:me,activated:me,deactivated:me,errorCaptured:me,serverPrefetch:me,components:Ht,directives:Ht,watch:Ql,provide:xs,inject:Xl};function xs(e,t){return t?e?function(){return ce(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Xl(e,t){return Ht(yi(e),yi(t))}function yi(e){if(k(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(i&&i.proxy):t}}function ta(e,t,n,i=!1){const s={},r={};En(r,Wn,1),e.propsDefaults=Object.create(null),Nr(e,t,s,r);for(const o in e.propsOptions[0])o in s||(s[o]=void 0);n?e.props=i?s:al(s):e.type.props?e.props=s:e.props=r,e.attrs=r}function na(e,t,n,i){const{props:s,attrs:r,vnode:{patchFlag:o}}=e,l=Q(s),[a]=e.propsOptions;let c=!1;if((i||o>0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let d=0;d{a=!0;const[g,b]=Hr(d,t,!0);ce(o,g),b&&l.push(...b)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!r&&!a)return G(e)&&i.set(e,yt),yt;if(k(r))for(let u=0;u-1,b[1]=T<0||C-1||X(b,"default"))&&l.push(d)}}}const c=[o,l];return G(e)&&i.set(e,c),c}function vs(e){return e[0]!=="$"}function bs(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function ws(e,t){return bs(e)===bs(t)}function _s(e,t){return k(t)?t.findIndex(n=>ws(n,e)):q(t)&&ws(t,e)?0:-1}const $r=e=>e[0]==="_"||e==="$stable",Vi=e=>k(e)?e.map(Se):[Se(e)],ia=(e,t,n)=>{if(t._n)return t;const i=Tl((...s)=>Vi(t(...s)),n);return i._c=!1,i},Dr=(e,t,n)=>{const i=e._ctx;for(const s in e){if($r(s))continue;const r=e[s];if(q(r))t[s]=ia(s,r,i);else if(r!=null){const o=Vi(r);t[s]=()=>o}}},Ur=(e,t)=>{const n=Vi(t);e.slots.default=()=>n},sa=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=Q(t),En(t,"_",n)):Dr(t,e.slots={})}else e.slots={},t&&Ur(e,t);En(e.slots,Wn,1)},ra=(e,t,n)=>{const{vnode:i,slots:s}=e;let r=!0,o=te;if(i.shapeFlag&32){const l=t._;l?n&&l===1?r=!1:(ce(s,t),!n&&l===1&&delete s._):(r=!t.$stable,Dr(t,s)),o=t}else t&&(Ur(e,t),o={default:1});if(r)for(const l in s)!$r(l)&&o[l]==null&&delete s[l]};function Pn(e,t,n,i,s=!1){if(k(e)){e.forEach((g,b)=>Pn(g,t&&(k(t)?t[b]:t),n,i,s));return}if(_t(i)&&!s)return;const r=i.shapeFlag&4?Yn(i.component)||i.component.proxy:i.el,o=s?null:r,{i:l,r:a}=e,c=t&&t.r,u=l.refs===te?l.refs={}:l.refs,d=l.setupState;if(c!=null&&c!==a&&(ie(c)?(u[c]=null,X(d,c)&&(d[c]=null)):pe(c)&&(c.value=null)),q(a))Qe(a,l,12,[o,u]);else{const g=ie(a),b=pe(a);if(g||b){const C=()=>{if(e.f){const T=g?X(d,a)?d[a]:u[a]:a.value;s?k(T)&&Ai(T,r):k(T)?T.includes(r)||T.push(r):g?(u[a]=[r],X(d,a)&&(d[a]=u[a])):(a.value=[r],e.k&&(u[e.k]=a.value))}else g?(u[a]=o,X(d,a)&&(d[a]=o)):b&&(a.value=o,e.k&&(u[e.k]=o))};o?(C.id=-1,he(C,n)):C()}}}let Ve=!1;const mn=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",hn=e=>e.nodeType===8;function oa(e){const{mt:t,p:n,o:{patchProp:i,createText:s,nextSibling:r,parentNode:o,remove:l,insert:a,createComment:c}}=e,u=(x,m)=>{if(!m.hasChildNodes()){n(null,x,m),jn(),m._vnode=x;return}Ve=!1,d(m.firstChild,x,null,null,null),jn(),m._vnode=x,Ve&&console.error("Hydration completed but contains mismatches.")},d=(x,m,M,K,N,j=!1)=>{const F=hn(x)&&x.data==="[",w=()=>T(x,m,M,K,N,F),{type:H,ref:S,shapeFlag:z,patchFlag:oe}=m;let fe=x.nodeType;m.el=x,oe===-2&&(j=!1,m.dynamicChildren=null);let B=null;switch(H){case Tt:fe!==3?m.children===""?(a(m.el=s(""),o(x),x),B=x):B=w():(x.data!==m.children&&(Ve=!0,x.data=m.children),B=r(x));break;case we:L(x)?(B=r(x),V(m.el=x.content.firstChild,x,M)):fe!==8||F?B=w():B=r(x);break;case Kt:if(F&&(x=r(x),fe=x.nodeType),fe===1||fe===3){B=x;const J=!m.children.length;for(let $=0;${j=j||!!m.dynamicChildren;const{type:F,props:w,patchFlag:H,shapeFlag:S,dirs:z,transition:oe}=m,fe=F==="input"||F==="option";if(fe||H!==-1){z&&Pe(m,null,M,"created");let B=!1;if(L(x)){B=Kr(K,oe)&&M&&M.vnode.props&&M.vnode.props.appear;const $=x.content.firstChild;B&&oe.beforeEnter($),V($,x,M),m.el=x=$}if(w)if(fe||!j||H&48)for(const $ in w)(fe&&($.endsWith("value")||$==="indeterminate")||Gt($)&&!$t($)||$[0]===".")&&i(x,$,null,w[$],!1,void 0,M);else w.onClick&&i(x,"onClick",null,w.onClick,!1,void 0,M);let J;if((J=w&&w.onVnodeBeforeMount)&&Ce(J,M,m),z&&Pe(m,null,M,"beforeMount"),((J=w&&w.onVnodeMounted)||z||B)&&Sr(()=>{J&&Ce(J,M,m),B&&oe.enter(x),z&&Pe(m,null,M,"mounted")},K),S&16&&!(w&&(w.innerHTML||w.textContent))){let $=b(x.firstChild,m,x,M,K,N,j);for(;$;){Ve=!0;const Ne=$;$=$.nextSibling,l(Ne)}}else S&8&&x.textContent!==m.children&&(Ve=!0,x.textContent=m.children)}return x.nextSibling},b=(x,m,M,K,N,j,F)=>{F=F||!!m.dynamicChildren;const w=m.children,H=w.length;for(let S=0;S{const{slotScopeIds:F}=m;F&&(N=N?N.concat(F):F);const w=o(x),H=b(r(x),m,w,M,K,N,j);return H&&hn(H)&&H.data==="]"?r(m.anchor=H):(Ve=!0,a(m.anchor=c("]"),w,H),H)},T=(x,m,M,K,N,j)=>{if(Ve=!0,m.el=null,j){const H=I(x);for(;;){const S=r(x);if(S&&S!==H)l(S);else break}}const F=r(x),w=o(x);return l(x),n(null,m,w,F,M,K,mn(w),N),F},I=(x,m="[",M="]")=>{let K=0;for(;x;)if(x=r(x),x&&hn(x)&&(x.data===m&&K++,x.data===M)){if(K===0)return r(x);K--}return x},V=(x,m,M)=>{const K=m.parentNode;K&&K.replaceChild(x,m);let N=M;for(;N;)N.vnode.el===m&&(N.vnode.el=N.subTree.el=x),N=N.parent},L=x=>x.nodeType===1&&x.tagName.toLowerCase()==="template";return[u,d]}const he=Sr;function la(e){return Br(e)}function aa(e){return Br(e,oa)}function Br(e,t){const n=ci();n.__VUE__=!0;const{insert:i,remove:s,patchProp:r,createElement:o,createText:l,createComment:a,setText:c,setElementText:u,parentNode:d,nextSibling:g,setScopeId:b=Fe,insertStaticContent:C}=e,T=(f,p,h,y=null,v=null,A=null,R=!1,E=null,O=!!p.dynamicChildren)=>{if(f===p)return;f&&!at(f,p)&&(y=on(f),Re(f,v,A,!0),f=null),p.patchFlag===-2&&(O=!1,p.dynamicChildren=null);const{type:_,ref:D,shapeFlag:P}=p;switch(_){case Tt:I(f,p,h,y);break;case we:V(f,p,h,y);break;case Kt:f==null&&L(p,h,y,R);break;case ge:S(f,p,h,y,v,A,R,E,O);break;default:P&1?M(f,p,h,y,v,A,R,E,O):P&6?z(f,p,h,y,v,A,R,E,O):(P&64||P&128)&&_.process(f,p,h,y,v,A,R,E,O,ht)}D!=null&&v&&Pn(D,f&&f.ref,A,p||f,!p)},I=(f,p,h,y)=>{if(f==null)i(p.el=l(p.children),h,y);else{const v=p.el=f.el;p.children!==f.children&&c(v,p.children)}},V=(f,p,h,y)=>{f==null?i(p.el=a(p.children||""),h,y):p.el=f.el},L=(f,p,h,y)=>{[f.el,f.anchor]=C(f.children,p,h,y,f.el,f.anchor)},x=({el:f,anchor:p},h,y)=>{let v;for(;f&&f!==p;)v=g(f),i(f,h,y),f=v;i(p,h,y)},m=({el:f,anchor:p})=>{let h;for(;f&&f!==p;)h=g(f),s(f),f=h;s(p)},M=(f,p,h,y,v,A,R,E,O)=>{R=R||p.type==="svg",f==null?K(p,h,y,v,A,R,E,O):F(f,p,v,A,R,E,O)},K=(f,p,h,y,v,A,R,E)=>{let O,_;const{type:D,props:P,shapeFlag:U,transition:W,dirs:Y}=f;if(O=f.el=o(f.type,A,P&&P.is,P),U&8?u(O,f.children):U&16&&j(f.children,O,null,y,v,A&&D!=="foreignObject",R,E),Y&&Pe(f,null,y,"created"),N(O,f,f.scopeId,R,y),P){for(const Z in P)Z!=="value"&&!$t(Z)&&r(O,Z,null,P[Z],A,f.children,y,v,He);"value"in P&&r(O,"value",null,P.value),(_=P.onVnodeBeforeMount)&&Ce(_,y,f)}Y&&Pe(f,null,y,"beforeMount");const ee=Kr(v,W);ee&&W.beforeEnter(O),i(O,p,h),((_=P&&P.onVnodeMounted)||ee||Y)&&he(()=>{_&&Ce(_,y,f),ee&&W.enter(O),Y&&Pe(f,null,y,"mounted")},v)},N=(f,p,h,y,v)=>{if(h&&b(f,h),y)for(let A=0;A{for(let _=O;_{const E=p.el=f.el;let{patchFlag:O,dynamicChildren:_,dirs:D}=p;O|=f.patchFlag&16;const P=f.props||te,U=p.props||te;let W;h&&st(h,!1),(W=U.onVnodeBeforeUpdate)&&Ce(W,h,p,f),D&&Pe(p,f,h,"beforeUpdate"),h&&st(h,!0);const Y=v&&p.type!=="foreignObject";if(_?w(f.dynamicChildren,_,E,h,y,Y,A):R||$(f,p,E,null,h,y,Y,A,!1),O>0){if(O&16)H(E,p,P,U,h,y,v);else if(O&2&&P.class!==U.class&&r(E,"class",null,U.class,v),O&4&&r(E,"style",P.style,U.style,v),O&8){const ee=p.dynamicProps;for(let Z=0;Z{W&&Ce(W,h,p,f),D&&Pe(p,f,h,"updated")},y)},w=(f,p,h,y,v,A,R)=>{for(let E=0;E{if(h!==y){if(h!==te)for(const E in h)!$t(E)&&!(E in y)&&r(f,E,h[E],null,R,p.children,v,A,He);for(const E in y){if($t(E))continue;const O=y[E],_=h[E];O!==_&&E!=="value"&&r(f,E,_,O,R,p.children,v,A,He)}"value"in y&&r(f,"value",h.value,y.value)}},S=(f,p,h,y,v,A,R,E,O)=>{const _=p.el=f?f.el:l(""),D=p.anchor=f?f.anchor:l("");let{patchFlag:P,dynamicChildren:U,slotScopeIds:W}=p;W&&(E=E?E.concat(W):W),f==null?(i(_,h,y),i(D,h,y),j(p.children,h,D,v,A,R,E,O)):P>0&&P&64&&U&&f.dynamicChildren?(w(f.dynamicChildren,U,h,v,A,R,E),(p.key!=null||v&&p===v.subTree)&&qi(f,p,!0)):$(f,p,h,D,v,A,R,E,O)},z=(f,p,h,y,v,A,R,E,O)=>{p.slotScopeIds=E,f==null?p.shapeFlag&512?v.ctx.activate(p,h,y,R,O):oe(p,h,y,v,A,R,O):fe(f,p,O)},oe=(f,p,h,y,v,A,R)=>{const E=f.component=va(f,y,v);if(sn(f)&&(E.ctx.renderer=ht),ba(E),E.asyncDep){if(v&&v.registerDep(E,B),!f.el){const O=E.subTree=se(we);V(null,O,p,h)}return}B(E,f,p,h,v,A,R)},fe=(f,p,h)=>{const y=p.component=f.component;if(jl(f,p,h))if(y.asyncDep&&!y.asyncResolved){J(y,p,h);return}else y.next=p,wl(y.update),y.update();else p.el=f.el,y.vnode=p},B=(f,p,h,y,v,A,R)=>{const E=()=>{if(f.isMounted){let{next:D,bu:P,u:U,parent:W,vnode:Y}=f,ee=D,Z;st(f,!1),D?(D.el=Y.el,J(f,D,R)):D=Y,P&&wn(P),(Z=D.props&&D.props.onVnodeBeforeUpdate)&&Ce(Z,W,D,Y),st(f,!0);const re=Zn(f),Ae=f.subTree;f.subTree=re,T(Ae,re,d(Ae.el),on(Ae),f,v,A),D.el=re.el,ee===null&&Ol(f,re.el),U&&he(U,v),(Z=D.props&&D.props.onVnodeUpdated)&&he(()=>Ce(Z,W,D,Y),v)}else{let D;const{el:P,props:U}=p,{bm:W,m:Y,parent:ee}=f,Z=_t(p);if(st(f,!1),W&&wn(W),!Z&&(D=U&&U.onVnodeBeforeMount)&&Ce(D,ee,p),st(f,!0),P&&Xn){const re=()=>{f.subTree=Zn(f),Xn(P,f.subTree,f,v,null)};Z?p.type.__asyncLoader().then(()=>!f.isUnmounted&&re()):re()}else{const re=f.subTree=Zn(f);T(null,re,h,y,f,v,A),p.el=re.el}if(Y&&he(Y,v),!Z&&(D=U&&U.onVnodeMounted)){const re=p;he(()=>Ce(D,ee,re),v)}(p.shapeFlag&256||ee&&_t(ee.vnode)&&ee.vnode.shapeFlag&256)&&f.a&&he(f.a,v),f.isMounted=!0,p=h=y=null}},O=f.effect=new Pi(E,()=>Dn(_),f.scope),_=f.update=()=>O.run();_.id=f.uid,st(f,!0),_()},J=(f,p,h)=>{p.component=f;const y=f.vnode.props;f.vnode=p,f.next=null,na(f,p.props,y,h),ra(f,p.children,h),Mt(),us(f),Pt()},$=(f,p,h,y,v,A,R,E,O=!1)=>{const _=f&&f.children,D=f?f.shapeFlag:0,P=p.children,{patchFlag:U,shapeFlag:W}=p;if(U>0){if(U&128){rn(_,P,h,y,v,A,R,E,O);return}else if(U&256){Ne(_,P,h,y,v,A,R,E,O);return}}W&8?(D&16&&He(_,v,A),P!==_&&u(h,P)):D&16?W&16?rn(_,P,h,y,v,A,R,E,O):He(_,v,A,!0):(D&8&&u(h,""),W&16&&j(P,h,y,v,A,R,E,O))},Ne=(f,p,h,y,v,A,R,E,O)=>{f=f||yt,p=p||yt;const _=f.length,D=p.length,P=Math.min(_,D);let U;for(U=0;UD?He(f,v,A,!0,!1,P):j(p,h,y,v,A,R,E,O,P)},rn=(f,p,h,y,v,A,R,E,O)=>{let _=0;const D=p.length;let P=f.length-1,U=D-1;for(;_<=P&&_<=U;){const W=f[_],Y=p[_]=O?Ye(p[_]):Se(p[_]);if(at(W,Y))T(W,Y,h,null,v,A,R,E,O);else break;_++}for(;_<=P&&_<=U;){const W=f[P],Y=p[U]=O?Ye(p[U]):Se(p[U]);if(at(W,Y))T(W,Y,h,null,v,A,R,E,O);else break;P--,U--}if(_>P){if(_<=U){const W=U+1,Y=WU)for(;_<=P;)Re(f[_],v,A,!0),_++;else{const W=_,Y=_,ee=new Map;for(_=Y;_<=U;_++){const ye=p[_]=O?Ye(p[_]):Se(p[_]);ye.key!=null&&ee.set(ye.key,_)}let Z,re=0;const Ae=U-Y+1;let gt=!1,Gi=0;const Ft=new Array(Ae);for(_=0;_=Ae){Re(ye,v,A,!0);continue}let Me;if(ye.key!=null)Me=ee.get(ye.key);else for(Z=Y;Z<=U;Z++)if(Ft[Z-Y]===0&&at(ye,p[Z])){Me=Z;break}Me===void 0?Re(ye,v,A,!0):(Ft[Me-Y]=_+1,Me>=Gi?Gi=Me:gt=!0,T(ye,p[Me],h,null,v,A,R,E,O),re++)}const es=gt?ca(Ft):yt;for(Z=es.length-1,_=Ae-1;_>=0;_--){const ye=Y+_,Me=p[ye],ts=ye+1{const{el:A,type:R,transition:E,children:O,shapeFlag:_}=f;if(_&6){it(f.component.subTree,p,h,y);return}if(_&128){f.suspense.move(p,h,y);return}if(_&64){R.move(f,p,h,ht);return}if(R===ge){i(A,p,h);for(let P=0;PE.enter(A),v);else{const{leave:P,delayLeave:U,afterLeave:W}=E,Y=()=>i(A,p,h),ee=()=>{P(A,()=>{Y(),W&&W()})};U?U(A,Y,ee):ee()}else i(A,p,h)},Re=(f,p,h,y=!1,v=!1)=>{const{type:A,props:R,ref:E,children:O,dynamicChildren:_,shapeFlag:D,patchFlag:P,dirs:U}=f;if(E!=null&&Pn(E,null,h,f,!0),D&256){p.ctx.deactivate(f);return}const W=D&1&&U,Y=!_t(f);let ee;if(Y&&(ee=R&&R.onVnodeBeforeUnmount)&&Ce(ee,p,f),D&6)Eo(f.component,h,y);else{if(D&128){f.suspense.unmount(h,y);return}W&&Pe(f,null,p,"beforeUnmount"),D&64?f.type.remove(f,p,h,v,ht,y):_&&(A!==ge||P>0&&P&64)?He(_,p,h,!1,!0):(A===ge&&P&384||!v&&D&16)&&He(O,p,h),y&&Qi(f)}(Y&&(ee=R&&R.onVnodeUnmounted)||W)&&he(()=>{ee&&Ce(ee,p,f),W&&Pe(f,null,p,"unmounted")},h)},Qi=f=>{const{type:p,el:h,anchor:y,transition:v}=f;if(p===ge){Co(h,y);return}if(p===Kt){m(f);return}const A=()=>{s(h),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(f.shapeFlag&1&&v&&!v.persisted){const{leave:R,delayLeave:E}=v,O=()=>R(h,A);E?E(f.el,A,O):O()}else A()},Co=(f,p)=>{let h;for(;f!==p;)h=g(f),s(f),f=h;s(p)},Eo=(f,p,h)=>{const{bum:y,scope:v,update:A,subTree:R,um:E}=f;y&&wn(y),v.stop(),A&&(A.active=!1,Re(R,f,p,h)),E&&he(E,p),he(()=>{f.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},He=(f,p,h,y=!1,v=!1,A=0)=>{for(let R=A;Rf.shapeFlag&6?on(f.component.subTree):f.shapeFlag&128?f.suspense.next():g(f.anchor||f.el),Zi=(f,p,h)=>{f==null?p._vnode&&Re(p._vnode,null,null,!0):T(p._vnode||null,f,p,null,null,null,h),us(),jn(),p._vnode=f},ht={p:T,um:Re,m:it,r:Qi,mt:oe,mc:j,pc:$,pbc:w,n:on,o:e};let Jn,Xn;return t&&([Jn,Xn]=t(ht)),{render:Zi,hydrate:Jn,createApp:Gl(Zi,Jn)}}function st({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Kr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function qi(e,t,n=!1){const i=e.children,s=t.children;if(k(i)&&k(s))for(let r=0;r>1,e[n[l]]0&&(t[i]=n[r-1]),n[r]=i)}}for(r=n.length,o=n[r-1];r-- >0;)n[r]=o,o=t[o];return n}const fa=e=>e.__isTeleport,Bt=e=>e&&(e.disabled||e.disabled===""),Cs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,bi=(e,t)=>{const n=e&&e.to;return ie(n)?t?t(n):null:n},ua={name:"Teleport",__isTeleport:!0,process(e,t,n,i,s,r,o,l,a,c){const{mc:u,pc:d,pbc:g,o:{insert:b,querySelector:C,createText:T,createComment:I}}=c,V=Bt(t.props);let{shapeFlag:L,children:x,dynamicChildren:m}=t;if(e==null){const M=t.el=T(""),K=t.anchor=T("");b(M,n,i),b(K,n,i);const N=t.target=bi(t.props,C),j=t.targetAnchor=T("");N&&(b(j,N),o=o||Cs(N));const F=(w,H)=>{L&16&&u(x,w,H,s,r,o,l,a)};V?F(n,K):N&&F(N,j)}else{t.el=e.el;const M=t.anchor=e.anchor,K=t.target=e.target,N=t.targetAnchor=e.targetAnchor,j=Bt(e.props),F=j?n:K,w=j?M:N;if(o=o||Cs(K),m?(g(e.dynamicChildren,m,F,s,r,o,l),qi(e,t,!0)):a||d(e,t,F,w,s,r,o,l,!1),V)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):gn(t,n,M,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const H=t.target=bi(t.props,C);H&&gn(t,H,null,c,0)}else j&&gn(t,K,N,c,1)}Vr(t)},remove(e,t,n,i,{um:s,o:{remove:r}},o){const{shapeFlag:l,children:a,anchor:c,targetAnchor:u,target:d,props:g}=e;if(d&&r(u),o&&r(c),l&16){const b=o||!Bt(g);for(let C=0;C0?be||yt:null,da(),At>0&&be&&be.push(e),e}function cf(e,t,n,i,s,r){return Wr(Jr(e,t,n,i,s,r,!0))}function zr(e,t,n,i,s){return Wr(se(e,t,n,i,s,!0))}function In(e){return e?e.__v_isVNode===!0:!1}function at(e,t){return e.type===t.type&&e.key===t.key}const Wn="__vInternal",Yr=({key:e})=>e??null,_n=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ie(e)||pe(e)||q(e)?{i:ue,r:e,k:t,f:!!n}:e:null);function Jr(e,t=null,n=null,i=0,s=null,r=e===ge?0:1,o=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Yr(t),ref:t&&_n(t),scopeId:Bn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:i,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ue};return l?(Wi(a,n),r&128&&e.normalize(a)):n&&(a.shapeFlag|=ie(n)?8:16),At>0&&!o&&be&&(a.patchFlag>0||r&6)&&a.patchFlag!==32&&be.push(a),a}const se=ma;function ma(e,t=null,n=null,i=0,s=null,r=!1){if((!e||e===Tr)&&(e=we),In(e)){const l=nt(e,t,!0);return n&&Wi(l,n),At>0&&!r&&be&&(l.shapeFlag&6?be[be.indexOf(e)]=l:be.push(l)),l.patchFlag|=-2,l}if(Ea(e)&&(e=e.__vccOpts),t){t=ha(t);let{class:l,style:a}=t;l&&!ie(l)&&(t.class=Oi(l)),G(a)&&(gr(a)&&!k(a)&&(a=ce({},a)),t.style=ji(a))}const o=ie(e)?1:Rl(e)?128:fa(e)?64:G(e)?4:q(e)?2:0;return Jr(e,t,n,i,s,o,r,!0)}function ha(e){return e?gr(e)||Wn in e?ce({},e):e:null}function nt(e,t,n=!1){const{props:i,ref:s,patchFlag:r,children:o}=e,l=t?ga(i||{},t):i;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Yr(l),ref:t&&t.ref?n&&s?k(s)?s.concat(_n(t)):[s,_n(t)]:_n(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ge?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Xr(e=" ",t=0){return se(Tt,null,e,t)}function ff(e,t){const n=se(Kt,null,e);return n.staticCount=t,n}function uf(e="",t=!1){return t?(qr(),zr(we,null,e)):se(we,null,e)}function Se(e){return e==null||typeof e=="boolean"?se(we):k(e)?se(ge,null,e.slice()):typeof e=="object"?Ye(e):se(Tt,null,String(e))}function Ye(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function Wi(e,t){let n=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(k(t))n=16;else if(typeof t=="object")if(i&65){const s=t.default;s&&(s._c&&(s._d=!1),Wi(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Wn in t)?t._ctx=ue:s===3&&ue&&(ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:ue},n=32):(t=String(t),i&64?(n=16,t=[Xr(t)]):n=8);e.children=t,e.shapeFlag|=n}function ga(...e){const t={};for(let n=0;nle||ue;let zi,xt,Ts="__VUE_INSTANCE_SETTERS__";(xt=ci()[Ts])||(xt=ci()[Ts]=[]),xt.push(e=>le=e),zi=e=>{xt.length>1?xt.forEach(t=>t(e)):xt[0](e)};const St=e=>{zi(e),e.scope.on()},pt=()=>{le&&le.scope.off(),zi(null)};function Qr(e){return e.vnode.shapeFlag&4}let jt=!1;function ba(e,t=!1){jt=t;const{props:n,children:i}=e.vnode,s=Qr(e);ta(e,n,s,t),sa(e,i);const r=s?wa(e,t):void 0;return jt=!1,r}function wa(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Dt(new Proxy(e.ctx,ql));const{setup:i}=n;if(i){const s=e.setupContext=i.length>1?Gr(e):null;St(e),Mt();const r=Qe(i,e,0,[e.props,s]);if(Pt(),pt(),er(r)){if(r.then(pt,pt),t)return r.then(o=>{As(e,o,t)}).catch(o=>{nn(o,e,0)});e.asyncDep=r}else As(e,r,t)}else Zr(e,t)}function As(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:G(t)&&(e.setupState=vr(t)),Zr(e,n)}let Ss;function Zr(e,t,n){const i=e.type;if(!e.render){if(!t&&Ss&&!i.render){const s=i.template||Ki(e).template;if(s){const{isCustomElement:r,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:a}=i,c=ce(ce({isCustomElement:r,delimiters:l},o),a);i.render=Ss(s,c)}}e.render=i.render||Fe}{St(e),Mt();try{zl(e)}finally{Pt(),pt()}}}function _a(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return xe(e,"get","$attrs"),t[n]}}))}function Gr(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return _a(e)},slots:e.slots,emit:e.emit,expose:t}}function Yn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(vr(Dt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ut)return Ut[n](e)},has(t,n){return n in t||n in Ut}}))}function Ca(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Ea(e){return q(e)&&"__vccOpts"in e}const ne=(e,t)=>yl(e,t,jt);function wi(e,t,n){const i=arguments.length;return i===2?G(t)&&!k(t)?In(t)?se(e,null,[t]):se(e,t):se(e,null,t):(i>3?n=Array.prototype.slice.call(arguments,2):i===3&&In(n)&&(n=[n]),se(e,t,n))}const Ta=Symbol.for("v-scx"),Aa=()=>Ct(Ta);function pf(e,t,n,i){const s=n[i];if(s&&Sa(s,e))return s;const r=t();return r.memo=e.slice(),n[i]=r}function Sa(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let i=0;i0&&be&&be.push(e),!0}const ja="3.3.13",Oa="http://www.w3.org/2000/svg",ct=typeof document<"u"?document:null,js=ct&&ct.createElement("template"),Ra={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,i)=>{const s=t?ct.createElementNS(Oa,e):ct.createElement(e,n?{is:n}:void 0);return e==="select"&&i&&i.multiple!=null&&s.setAttribute("multiple",i.multiple),s},createText:e=>ct.createTextNode(e),createComment:e=>ct.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ct.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,i,s,r){const o=n?n.previousSibling:t.lastChild;if(s&&(s===r||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===r||!(s=s.nextSibling)););else{js.innerHTML=i?`${e}`:e;const l=js.content;if(i){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},qe="transition",Lt="animation",Jt=Symbol("_vtc"),eo=(e,{slots:t})=>wi(Fl,Ma(e),t);eo.displayName="Transition";const to={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};eo.props=ce({},Or,to);const rt=(e,t=[])=>{k(e)?e.forEach(n=>n(...t)):e&&e(...t)},Os=e=>e?k(e)?e.some(t=>t.length>1):e.length>1:!1;function Ma(e){const t={};for(const S in e)S in to||(t[S]=e[S]);if(e.css===!1)return t;const{name:n="v",type:i,duration:s,enterFromClass:r=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=r,appearActiveClass:c=o,appearToClass:u=l,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:b=`${n}-leave-to`}=e,C=Pa(s),T=C&&C[0],I=C&&C[1],{onBeforeEnter:V,onEnter:L,onEnterCancelled:x,onLeave:m,onLeaveCancelled:M,onBeforeAppear:K=V,onAppear:N=L,onAppearCancelled:j=x}=t,F=(S,z,oe)=>{ot(S,z?u:l),ot(S,z?c:o),oe&&oe()},w=(S,z)=>{S._isLeaving=!1,ot(S,d),ot(S,b),ot(S,g),z&&z()},H=S=>(z,oe)=>{const fe=S?N:L,B=()=>F(z,S,oe);rt(fe,[z,B]),Rs(()=>{ot(z,S?a:r),We(z,S?u:l),Os(fe)||Ms(z,i,T,B)})};return ce(t,{onBeforeEnter(S){rt(V,[S]),We(S,r),We(S,o)},onBeforeAppear(S){rt(K,[S]),We(S,a),We(S,c)},onEnter:H(!1),onAppear:H(!0),onLeave(S,z){S._isLeaving=!0;const oe=()=>w(S,z);We(S,d),La(),We(S,g),Rs(()=>{S._isLeaving&&(ot(S,d),We(S,b),Os(m)||Ms(S,i,I,oe))}),rt(m,[S,oe])},onEnterCancelled(S){F(S,!1),rt(x,[S])},onAppearCancelled(S){F(S,!0),rt(j,[S])},onLeaveCancelled(S){w(S),rt(M,[S])}})}function Pa(e){if(e==null)return null;if(G(e))return[ni(e.enter),ni(e.leave)];{const t=ni(e);return[t,t]}}function ni(e){return Ro(e)}function We(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Jt]||(e[Jt]=new Set)).add(t)}function ot(e,t){t.split(/\s+/).forEach(i=>i&&e.classList.remove(i));const n=e[Jt];n&&(n.delete(t),n.size||(e[Jt]=void 0))}function Rs(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Ia=0;function Ms(e,t,n,i){const s=e._endId=++Ia,r=()=>{s===e._endId&&i()};if(n)return setTimeout(r,n);const{type:o,timeout:l,propCount:a}=Fa(e,t);if(!o)return i();const c=o+"end";let u=0;const d=()=>{e.removeEventListener(c,g),r()},g=b=>{b.target===e&&++u>=a&&d()};setTimeout(()=>{u(n[C]||"").split(", "),s=i(`${qe}Delay`),r=i(`${qe}Duration`),o=Ps(s,r),l=i(`${Lt}Delay`),a=i(`${Lt}Duration`),c=Ps(l,a);let u=null,d=0,g=0;t===qe?o>0&&(u=qe,d=o,g=r.length):t===Lt?c>0&&(u=Lt,d=c,g=a.length):(d=Math.max(o,c),u=d>0?o>c?qe:Lt:null,g=u?u===qe?r.length:a.length:0);const b=u===qe&&/\b(transform|all)(,|$)/.test(i(`${qe}Property`).toString());return{type:u,timeout:d,propCount:g,hasTransform:b}}function Ps(e,t){for(;e.lengthIs(n)+Is(e[i])))}function Is(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function La(){return document.body.offsetHeight}function ka(e,t,n){const i=e[Jt];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Yi=Symbol("_vod"),df={beforeMount(e,{value:t},{transition:n}){e[Yi]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):kt(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:i}){!t!=!n&&(i?t?(i.beforeEnter(e),kt(e,!0),i.enter(e)):i.leave(e,()=>{kt(e,!1)}):kt(e,t))},beforeUnmount(e,{value:t}){kt(e,t)}};function kt(e,t){e.style.display=t?e[Yi]:"none"}const Na=Symbol("");function Ha(e,t,n){const i=e.style,s=ie(n);if(n&&!s){if(t&&!ie(t))for(const r in t)n[r]==null&&_i(i,r,"");for(const r in n)_i(i,r,n[r])}else{const r=i.display;if(s){if(t!==n){const o=i[Na];o&&(n+=";"+o),i.cssText=n}}else t&&e.removeAttribute("style");Yi in e&&(i.display=r)}}const Fs=/\s*!important$/;function _i(e,t,n){if(k(n))n.forEach(i=>_i(e,t,i));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const i=$a(e,t);Fs.test(n)?e.setProperty(mt(i),n.replace(Fs,""),"important"):e[i]=n}}const Ls=["Webkit","Moz","ms"],ii={};function $a(e,t){const n=ii[t];if(n)return n;let i=Le(t);if(i!=="filter"&&i in e)return ii[t]=i;i=Ln(i);for(let s=0;ssi||(qa.then(()=>si=0),si=Date.now());function za(e,t){const n=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=n.attached)return;Te(Ya(i,n.value),t,5,[i])};return n.value=e,n.attached=Wa(),n}function Ya(e,t){if(k(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(i=>s=>!s._stopped&&i&&i(s))}else return t}const $s=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ja=(e,t,n,i,s=!1,r,o,l,a)=>{t==="class"?ka(e,i,s):t==="style"?Ha(e,n,i):Gt(t)?Ti(t)||Ka(e,t,n,i,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Xa(e,t,i,s))?Ua(e,t,i,r,o,l,a):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),Da(e,t,i,s))};function Xa(e,t,n,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&$s(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return $s(t)&&ie(n)?!1:t in e}const Ot=e=>{const t=e.props["onUpdate:modelValue"]||!1;return k(t)?n=>wn(t,n):t};function Qa(e){e.target.composing=!0}function Ds(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ue=Symbol("_assign"),mf={created(e,{modifiers:{lazy:t,trim:n,number:i}},s){e[Ue]=Ot(s);const r=i||s.props&&s.props.type==="number";Je(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),r&&(l=Tn(l)),e[Ue](l)}),n&&Je(e,"change",()=>{e.value=e.value.trim()}),t||(Je(e,"compositionstart",Qa),Je(e,"compositionend",Ds),Je(e,"change",Ds))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:i,number:s}},r){if(e[Ue]=Ot(r),e.composing)return;const o=s||e.type==="number"?Tn(e.value):e.value,l=t??"";o!==l&&(document.activeElement===e&&e.type!=="range"&&(n||i&&e.value.trim()===l)||(e.value=l))}},hf={deep:!0,created(e,t,n){e[Ue]=Ot(n),Je(e,"change",()=>{const i=e._modelValue,s=Xt(e),r=e.checked,o=e[Ue];if(k(i)){const l=Ri(i,s),a=l!==-1;if(r&&!a)o(i.concat(s));else if(!r&&a){const c=[...i];c.splice(l,1),o(c)}}else if(Rt(i)){const l=new Set(i);r?l.add(s):l.delete(s),o(l)}else o(no(e,r))})},mounted:Us,beforeUpdate(e,t,n){e[Ue]=Ot(n),Us(e,t,n)}};function Us(e,{value:t,oldValue:n},i){e._modelValue=t,k(t)?e.checked=Ri(t,i.props.value)>-1:Rt(t)?e.checked=t.has(i.props.value):t!==n&&(e.checked=tn(t,no(e,!0)))}const gf={deep:!0,created(e,{value:t,modifiers:{number:n}},i){const s=Rt(t);Je(e,"change",()=>{const r=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>n?Tn(Xt(o)):Xt(o));e[Ue](e.multiple?s?new Set(r):r:r[0])}),e[Ue]=Ot(i)},mounted(e,{value:t}){Bs(e,t)},beforeUpdate(e,t,n){e[Ue]=Ot(n)},updated(e,{value:t}){Bs(e,t)}};function Bs(e,t){const n=e.multiple;if(!(n&&!k(t)&&!Rt(t))){for(let i=0,s=e.options.length;i-1:r.selected=t.has(o);else if(tn(Xt(r),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Xt(e){return"_value"in e?e._value:e.value}function no(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Za=["ctrl","shift","alt","meta"],Ga={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Za.some(n=>e[`${n}Key`]&&!t.includes(n))},xf=(e,t)=>{const n=e._withMods||(e._withMods={}),i=t.join(".");return n[i]||(n[i]=(s,...r)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),i=t.join(".");return n[i]||(n[i]=s=>{if(!("key"in s))return;const r=mt(s.key);if(t.some(o=>o===r||ec[o]===r))return e(s)})},io=ce({patchProp:Ja},Ra);let qt,Ks=!1;function tc(){return qt||(qt=la(io))}function nc(){return qt=Ks?qt:aa(io),Ks=!0,qt}const vf=(...e)=>{const t=tc().createApp(...e),{mount:n}=t;return t.mount=i=>{const s=so(i);if(!s)return;const r=t._component;!q(r)&&!r.render&&!r.template&&(r.template=s.innerHTML),s.innerHTML="";const o=n(s,!1,s instanceof SVGElement);return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},t},bf=(...e)=>{const t=nc().createApp(...e),{mount:n}=t;return t.mount=i=>{const s=so(i);if(s)return n(s,!0,s instanceof SVGElement)},t};function so(e){return ie(e)?document.querySelector(e):e}const wf=(e,t)=>{const n=e.__vccOpts||e;for(const[i,s]of t)n[i]=s;return n},ic=window.__VP_SITE_DATA__;function Ji(e){return rr()?(Do(e),!0):!1}function Oe(e){return typeof e=="function"?e():yr(e)}function _f(e,t){const n=Oe;return function(...i){return ne(()=>e.apply(this,i.map(s=>n(s))))}}const ro=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const sc=Object.prototype.toString,rc=e=>sc.call(e)==="[object Object]",Qt=()=>{},Vs=oc();function oc(){var e,t;return ro&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function lc(e,t){function n(...i){return new Promise((s,r)=>{Promise.resolve(e(()=>t.apply(this,i),{fn:t,thisArg:this,args:i})).then(s).catch(r)})}return n}const oo=e=>e();function ac(e,t={}){let n,i,s=Qt;const r=l=>{clearTimeout(l),s(),s=Qt};return l=>{const a=Oe(e),c=Oe(t.maxWait);return n&&r(n),a<=0||c!==void 0&&c<=0?(i&&(r(i),i=null),Promise.resolve(l())):new Promise((u,d)=>{s=t.rejectOnCancel?d:u,c&&!i&&(i=setTimeout(()=>{n&&r(n),i=null,u(l())},c)),n=setTimeout(()=>{i&&r(i),i=null,u(l())},a)})}}function cc(e=oo){const t=ae(!0);function n(){t.value=!1}function i(){t.value=!0}const s=(...r)=>{t.value&&e(...r)};return{isActive:Hn(t),pause:n,resume:i,eventFilter:s}}function fc(e){return zn()}function lo(...e){if(e.length!==1)return hl(...e);const t=e[0];return typeof t=="function"?Hn(pl(()=>({get:t,set:Qt}))):ae(t)}function ao(e,t,n={}){const{eventFilter:i=oo,...s}=n;return Ze(e,lc(i,t),s)}function uc(e,t,n={}){const{eventFilter:i,...s}=n,{eventFilter:r,pause:o,resume:l,isActive:a}=cc(i);return{stop:ao(e,t,{...s,eventFilter:r}),pause:o,resume:l,isActive:a}}function co(e,t=!0,n){fc()?It(e,n):t?e():$n(e)}function Cf(e,t,n={}){const{debounce:i=0,maxWait:s=void 0,...r}=n;return ao(e,t,{...r,eventFilter:ac(i,{maxWait:s})})}function Ef(e,t,n){let i;pe(n)?i={evaluating:n}:i={};const{lazy:s=!1,evaluating:r=void 0,shallow:o=!0,onError:l=Qt}=i,a=ae(!s),c=o?$i(t):ae(t);let u=0;return Ui(async d=>{if(!a.value)return;u++;const g=u;let b=!1;r&&Promise.resolve().then(()=>{r.value=!0});try{const C=await e(T=>{d(()=>{r&&(r.value=!1),b||T()})});g===u&&(c.value=C)}catch(C){l(C)}finally{r&&g===u&&(r.value=!1),b=!0}}),s?ne(()=>(a.value=!0,c.value)):c}function fo(e){var t;const n=Oe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const ke=ro?window:void 0;function Zt(...e){let t,n,i,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,i,s]=e,t=ke):[t,n,i,s]=e,!t)return Qt;Array.isArray(n)||(n=[n]),Array.isArray(i)||(i=[i]);const r=[],o=()=>{r.forEach(u=>u()),r.length=0},l=(u,d,g,b)=>(u.addEventListener(d,g,b),()=>u.removeEventListener(d,g,b)),a=Ze(()=>[fo(t),Oe(s)],([u,d])=>{if(o(),!u)return;const g=rc(d)?{...d}:d;r.push(...n.flatMap(b=>i.map(C=>l(u,b,C,g))))},{immediate:!0,flush:"post"}),c=()=>{a(),o()};return Ji(c),c}function pc(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Tf(...e){let t,n,i={};e.length===3?(t=e[0],n=e[1],i=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],i=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=ke,eventName:r="keydown",passive:o=!1,dedupe:l=!1}=i,a=pc(t);return Zt(s,r,u=>{u.repeat&&Oe(l)||a(u)&&n(u)},o)}function dc(){const e=ae(!1),t=zn();return t&&It(()=>{e.value=!0},t),e}function mc(e){const t=dc();return ne(()=>(t.value,!!e()))}function hc(e,t={}){const{window:n=ke}=t,i=mc(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const r=ae(!1),o=c=>{r.value=c.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",o):s.removeListener(o))},a=Ui(()=>{i.value&&(l(),s=n.matchMedia(Oe(e)),"addEventListener"in s?s.addEventListener("change",o):s.addListener(o),r.value=s.matches)});return Ji(()=>{a(),l(),s=void 0}),r}const xn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},yn="__vueuse_ssr_handlers__",gc=xc();function xc(){return yn in xn||(xn[yn]=xn[yn]||{}),xn[yn]}function uo(e,t){return gc[e]||t}function yc(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const vc={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},qs="vueuse-storage";function Xi(e,t,n,i={}){var s;const{flush:r="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:a=!0,mergeDefaults:c=!1,shallow:u,window:d=ke,eventFilter:g,onError:b=w=>{console.error(w)},initOnMounted:C}=i,T=(u?$i:ae)(typeof t=="function"?t():t);if(!n)try{n=uo("getDefaultStorage",()=>{var w;return(w=ke)==null?void 0:w.localStorage})()}catch(w){b(w)}if(!n)return T;const I=Oe(t),V=yc(I),L=(s=i.serializer)!=null?s:vc[V],{pause:x,resume:m}=uc(T,()=>K(T.value),{flush:r,deep:o,eventFilter:g});d&&l&&co(()=>{Zt(d,"storage",j),Zt(d,qs,F),C&&j()}),C||j();function M(w,H){d&&d.dispatchEvent(new CustomEvent(qs,{detail:{key:e,oldValue:w,newValue:H,storageArea:n}}))}function K(w){try{const H=n.getItem(e);if(w==null)M(H,null),n.removeItem(e);else{const S=L.write(w);H!==S&&(n.setItem(e,S),M(H,S))}}catch(H){b(H)}}function N(w){const H=w?w.newValue:n.getItem(e);if(H==null)return a&&I!=null&&n.setItem(e,L.write(I)),I;if(!w&&c){const S=L.read(H);return typeof c=="function"?c(S,I):V==="object"&&!Array.isArray(S)?{...I,...S}:S}else return typeof H!="string"?H:L.read(H)}function j(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){T.value=I;return}if(!(w&&w.key!==e)){x();try{(w==null?void 0:w.newValue)!==L.write(T.value)&&(T.value=N(w))}catch(H){b(H)}finally{w?$n(m):m()}}}}function F(w){j(w.detail)}return T}function po(e){return hc("(prefers-color-scheme: dark)",e)}function bc(e={}){const{selector:t="html",attribute:n="class",initialValue:i="auto",window:s=ke,storage:r,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:a,emitAuto:c,disableTransition:u=!0}=e,d={auto:"",light:"light",dark:"dark",...e.modes||{}},g=po({window:s}),b=ne(()=>g.value?"dark":"light"),C=a||(o==null?lo(i):Xi(o,i,r,{window:s,listenToStorageChanges:l})),T=ne(()=>C.value==="auto"?b.value:C.value),I=uo("updateHTMLAttrs",(m,M,K)=>{const N=typeof m=="string"?s==null?void 0:s.document.querySelector(m):fo(m);if(!N)return;let j;if(u&&(j=s.document.createElement("style"),j.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(j)),M==="class"){const F=K.split(/\s/g);Object.values(d).flatMap(w=>(w||"").split(/\s/g)).filter(Boolean).forEach(w=>{F.includes(w)?N.classList.add(w):N.classList.remove(w)})}else N.setAttribute(M,K);u&&(s.getComputedStyle(j).opacity,document.head.removeChild(j))});function V(m){var M;I(t,n,(M=d[m])!=null?M:m)}function L(m){e.onChanged?e.onChanged(m,V):V(m)}Ze(T,L,{flush:"post",immediate:!0}),co(()=>L(T.value));const x=ne({get(){return c?C.value:T.value},set(m){C.value=m}});try{return Object.assign(x,{store:C,system:b,state:T})}catch{return x}}function wc(e={}){const{valueDark:t="dark",valueLight:n="",window:i=ke}=e,s=bc({...e,onChanged:(l,a)=>{var c;e.onChanged?(c=e.onChanged)==null||c.call(e,l==="dark",a,l):a(l)},modes:{dark:t,light:n}}),r=ne(()=>s.system?s.system.value:po({window:i}).value?"dark":"light");return ne({get(){return s.value==="dark"},set(l){const a=l?"dark":"light";r.value===a?s.value="auto":s.value=a}})}function ri(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Af(e,t,n={}){const{window:i=ke}=n;return Xi(e,t,i==null?void 0:i.localStorage,n)}function mo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const oi=new WeakMap;function Sf(e,t=!1){const n=ae(t);let i=null,s="";Ze(lo(e),l=>{const a=ri(Oe(l));if(a){const c=a;if(oi.get(c)||oi.set(c,c.style.overflow),c.style.overflow!=="hidden"&&(s=c.style.overflow),c.style.overflow==="hidden")return n.value=!0;if(n.value)return c.style.overflow="hidden"}},{immediate:!0});const r=()=>{const l=ri(Oe(e));!l||n.value||(Vs&&(i=Zt(l,"touchmove",a=>{_c(a)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=ri(Oe(e));!l||!n.value||(Vs&&(i==null||i()),l.style.overflow=s,oi.delete(l),n.value=!1)};return Ji(o),ne({get(){return n.value},set(l){l?r():o()}})}function jf(e,t,n={}){const{window:i=ke}=n;return Xi(e,t,i==null?void 0:i.sessionStorage,n)}function Of(e={}){const{window:t=ke,behavior:n="auto"}=e;if(!t)return{x:ae(0),y:ae(0)};const i=ae(t.scrollX),s=ae(t.scrollY),r=ne({get(){return i.value},set(l){scrollTo({left:l,behavior:n})}}),o=ne({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return Zt(t,"scroll",()=>{i.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:r,y:o}}const ho=/^(?:[a-z]+:|\/\/)/i,Cc="vitepress-theme-appearance",go=/#.*$/,Ec=/(index)?\.(md|html)$/,Ee=typeof document<"u",xo={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Tc(e,t,n=!1){if(t===void 0)return!1;if(e=Ws(`/${e}`),n)return new RegExp(t).test(e);if(Ws(t)!==e)return!1;const i=t.match(go);return i?(Ee?location.hash:"")===i[0]:!0}function Ws(e){return decodeURI(e).replace(go,"").replace(Ec,"")}function Ac(e){return ho.test(e)}function Sc(e,t){var i,s,r,o,l,a,c;const n=Object.keys(e.locales).find(u=>u!=="root"&&!Ac(u)&&Tc(t,`/${u}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((i=e.locales[n])==null?void 0:i.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((r=e.locales[n])==null?void 0:r.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:vo(e.head,((a=e.locales[n])==null?void 0:a.head)??[]),themeConfig:{...e.themeConfig,...(c=e.locales[n])==null?void 0:c.themeConfig}})}function yo(e,t){const n=t.title||e.title,i=t.titleTemplate??e.titleTemplate;if(typeof i=="string"&&i.includes(":title"))return i.replace(/:title/g,n);const s=jc(e.title,i);return`${n}${s}`}function jc(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Oc(e,t){const[n,i]=t;if(n!=="meta")return!1;const s=Object.entries(i)[0];return s==null?!1:e.some(([r,o])=>r===n&&o[s[0]]===s[1])}function vo(e,t){return[...e.filter(n=>!Oc(t,n)),...t]}const Rc=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Mc=/^[a-z]:/i;function zs(e){const t=Mc.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Rc,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const Pc=Symbol(),dt=$i(ic);function Rf(e){const t=ne(()=>Sc(dt.value,e.data.relativePath)),n=t.value.appearance,i=n==="force-dark"?ae(!0):n?wc({storageKey:Cc,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):ae(!1);return{site:t,theme:ne(()=>t.value.themeConfig),page:ne(()=>e.data),frontmatter:ne(()=>e.data.frontmatter),params:ne(()=>e.data.params),lang:ne(()=>t.value.lang),dir:ne(()=>t.value.dir),localeIndex:ne(()=>t.value.localeIndex||"root"),title:ne(()=>yo(t.value,e.data)),description:ne(()=>e.data.description||t.value.description),isDark:i}}function Ic(){const e=Ct(Pc);if(!e)throw new Error("vitepress data not properly injected in app");return e}const Fc={ez:"application/andrew-inset",aw:"application/applixware",atom:"application/atom+xml",atomcat:"application/atomcat+xml",atomdeleted:"application/atomdeleted+xml",atomsvc:"application/atomsvc+xml",dwd:"application/atsc-dwd+xml",held:"application/atsc-held+xml",rsat:"application/atsc-rsat+xml",bdoc:"application/bdoc",xcs:"application/calendar+xml",ccxml:"application/ccxml+xml",cdfx:"application/cdfx+xml",cdmia:"application/cdmi-capability",cdmic:"application/cdmi-container",cdmid:"application/cdmi-domain",cdmio:"application/cdmi-object",cdmiq:"application/cdmi-queue",cu:"application/cu-seeme",mpd:"application/dash+xml",davmount:"application/davmount+xml",dbk:"application/docbook+xml",dssc:"application/dssc+der",xdssc:"application/dssc+xml",es:"application/ecmascript",ecma:"application/ecmascript",emma:"application/emma+xml",emotionml:"application/emotionml+xml",epub:"application/epub+zip",exi:"application/exi",fdt:"application/fdt+xml",pfr:"application/font-tdpfr",geojson:"application/geo+json",gml:"application/gml+xml",gpx:"application/gpx+xml",gxf:"application/gxf",gz:"application/gzip",hjson:"application/hjson",stk:"application/hyperstudio",ink:"application/inkml+xml",inkml:"application/inkml+xml",ipfix:"application/ipfix",its:"application/its+xml",jar:"application/java-archive",war:"application/java-archive",ear:"application/java-archive",ser:"application/java-serialized-object",class:"application/java-vm",js:"application/javascript",mjs:"application/javascript",json:"application/json",map:"application/json",json5:"application/json5",jsonml:"application/jsonml+json",jsonld:"application/ld+json",lgr:"application/lgr+xml",lostxml:"application/lost+xml",hqx:"application/mac-binhex40",cpt:"application/mac-compactpro",mads:"application/mads+xml",webmanifest:"application/manifest+json",mrc:"application/marc",mrcx:"application/marcxml+xml",ma:"application/mathematica",nb:"application/mathematica",mb:"application/mathematica",mathml:"application/mathml+xml",mbox:"application/mbox",mscml:"application/mediaservercontrol+xml",metalink:"application/metalink+xml",meta4:"application/metalink4+xml",mets:"application/mets+xml",maei:"application/mmt-aei+xml",musd:"application/mmt-usd+xml",mods:"application/mods+xml",m21:"application/mp21",mp21:"application/mp21",mp4s:"application/mp4",m4p:"application/mp4",doc:"application/msword",dot:"application/msword",mxf:"application/mxf",nq:"application/n-quads",nt:"application/n-triples",cjs:"application/node",bin:"application/octet-stream",dms:"application/octet-stream",lrf:"application/octet-stream",mar:"application/octet-stream",so:"application/octet-stream",dist:"application/octet-stream",distz:"application/octet-stream",pkg:"application/octet-stream",bpk:"application/octet-stream",dump:"application/octet-stream",elc:"application/octet-stream",deploy:"application/octet-stream",exe:"application/octet-stream",dll:"application/octet-stream",deb:"application/octet-stream",dmg:"application/octet-stream",iso:"application/octet-stream",img:"application/octet-stream",msi:"application/octet-stream",msp:"application/octet-stream",msm:"application/octet-stream",buffer:"application/octet-stream",oda:"application/oda",opf:"application/oebps-package+xml",ogx:"application/ogg",omdoc:"application/omdoc+xml",onetoc:"application/onenote",onetoc2:"application/onenote",onetmp:"application/onenote",onepkg:"application/onenote",oxps:"application/oxps",relo:"application/p2p-overlay+xml",xer:"application/patch-ops-error+xml",pdf:"application/pdf",pgp:"application/pgp-encrypted",asc:"application/pgp-signature",sig:"application/pgp-signature",prf:"application/pics-rules",p10:"application/pkcs10",p7m:"application/pkcs7-mime",p7c:"application/pkcs7-mime",p7s:"application/pkcs7-signature",p8:"application/pkcs8",ac:"application/pkix-attr-cert",cer:"application/pkix-cert",crl:"application/pkix-crl",pkipath:"application/pkix-pkipath",pki:"application/pkixcmp",pls:"application/pls+xml",ai:"application/postscript",eps:"application/postscript",ps:"application/postscript",provx:"application/provenance+xml",cww:"application/prs.cww",pskcxml:"application/pskc+xml",raml:"application/raml+yaml",rdf:"application/rdf+xml",owl:"application/rdf+xml",rif:"application/reginfo+xml",rnc:"application/relax-ng-compact-syntax",rl:"application/resource-lists+xml",rld:"application/resource-lists-diff+xml",rs:"application/rls-services+xml",rapd:"application/route-apd+xml",sls:"application/route-s-tsid+xml",rusd:"application/route-usd+xml",gbr:"application/rpki-ghostbusters",mft:"application/rpki-manifest",roa:"application/rpki-roa",rsd:"application/rsd+xml",rss:"application/rss+xml",rtf:"application/rtf",sbml:"application/sbml+xml",scq:"application/scvp-cv-request",scs:"application/scvp-cv-response",spq:"application/scvp-vp-request",spp:"application/scvp-vp-response",sdp:"application/sdp",senmlx:"application/senml+xml",sensmlx:"application/sensml+xml",setpay:"application/set-payment-initiation",setreg:"application/set-registration-initiation",shf:"application/shf+xml",siv:"application/sieve",sieve:"application/sieve",smi:"application/smil+xml",smil:"application/smil+xml",rq:"application/sparql-query",srx:"application/sparql-results+xml",gram:"application/srgs",grxml:"application/srgs+xml",sru:"application/sru+xml",ssdl:"application/ssdl+xml",ssml:"application/ssml+xml",swidtag:"application/swid+xml",tei:"application/tei+xml",teicorpus:"application/tei+xml",tfi:"application/thraud+xml",tsd:"application/timestamped-data",toml:"application/toml",trig:"application/trig",ttml:"application/ttml+xml",ubj:"application/ubjson",rsheet:"application/urc-ressheet+xml",td:"application/urc-targetdesc+xml",vxml:"application/voicexml+xml",wasm:"application/wasm",wgt:"application/widget",hlp:"application/winhlp",wsdl:"application/wsdl+xml",wspolicy:"application/wspolicy+xml",xaml:"application/xaml+xml",xav:"application/xcap-att+xml",xca:"application/xcap-caps+xml",xdf:"application/xcap-diff+xml",xel:"application/xcap-el+xml",xns:"application/xcap-ns+xml",xenc:"application/xenc+xml",xhtml:"application/xhtml+xml",xht:"application/xhtml+xml",xlf:"application/xliff+xml",xml:"application/xml",xsl:"application/xml",xsd:"application/xml",rng:"application/xml",dtd:"application/xml-dtd",xop:"application/xop+xml",xpl:"application/xproc+xml",xslt:"application/xml",xspf:"application/xspf+xml",mxml:"application/xv+xml",xhvml:"application/xv+xml",xvml:"application/xv+xml",xvm:"application/xv+xml",yang:"application/yang",yin:"application/yin+xml",zip:"application/zip","3gpp":"video/3gpp",adp:"audio/adpcm",amr:"audio/amr",au:"audio/basic",snd:"audio/basic",mid:"audio/midi",midi:"audio/midi",kar:"audio/midi",rmi:"audio/midi",mxmf:"audio/mobile-xmf",mp3:"audio/mpeg",m4a:"audio/mp4",mp4a:"audio/mp4",mpga:"audio/mpeg",mp2:"audio/mpeg",mp2a:"audio/mpeg",m2a:"audio/mpeg",m3a:"audio/mpeg",oga:"audio/ogg",ogg:"audio/ogg",spx:"audio/ogg",opus:"audio/ogg",s3m:"audio/s3m",sil:"audio/silk",wav:"audio/wav",weba:"audio/webm",xm:"audio/xm",ttc:"font/collection",otf:"font/otf",ttf:"font/ttf",woff:"font/woff",woff2:"font/woff2",exr:"image/aces",apng:"image/apng",avif:"image/avif",bmp:"image/bmp",cgm:"image/cgm",drle:"image/dicom-rle",emf:"image/emf",fits:"image/fits",g3:"image/g3fax",gif:"image/gif",heic:"image/heic",heics:"image/heic-sequence",heif:"image/heif",heifs:"image/heif-sequence",hej2:"image/hej2k",hsj2:"image/hsj2",ief:"image/ief",jls:"image/jls",jp2:"image/jp2",jpg2:"image/jp2",jpeg:"image/jpeg",jpg:"image/jpeg",jpe:"image/jpeg",jph:"image/jph",jhc:"image/jphc",jpm:"image/jpm",jpx:"image/jpx",jpf:"image/jpx",jxr:"image/jxr",jxra:"image/jxra",jxrs:"image/jxrs",jxs:"image/jxs",jxsc:"image/jxsc",jxsi:"image/jxsi",jxss:"image/jxss",ktx:"image/ktx",ktx2:"image/ktx2",png:"image/png",btif:"image/prs.btif",pti:"image/prs.pti",sgi:"image/sgi",svg:"image/svg+xml",svgz:"image/svg+xml",t38:"image/t38",tif:"image/tiff",tiff:"image/tiff",tfx:"image/tiff-fx",webp:"image/webp",wmf:"image/wmf","disposition-notification":"message/disposition-notification",u8msg:"message/global",u8dsn:"message/global-delivery-status",u8mdn:"message/global-disposition-notification",u8hdr:"message/global-headers",eml:"message/rfc822",mime:"message/rfc822","3mf":"model/3mf",gltf:"model/gltf+json",glb:"model/gltf-binary",igs:"model/iges",iges:"model/iges",msh:"model/mesh",mesh:"model/mesh",silo:"model/mesh",mtl:"model/mtl",obj:"model/obj",stpz:"model/step+zip",stpxz:"model/step-xml+zip",stl:"model/stl",wrl:"model/vrml",vrml:"model/vrml",x3db:"model/x3d+fastinfoset",x3dbz:"model/x3d+binary",x3dv:"model/x3d-vrml",x3dvz:"model/x3d+vrml",x3d:"model/x3d+xml",x3dz:"model/x3d+xml",appcache:"text/cache-manifest",manifest:"text/cache-manifest",ics:"text/calendar",ifb:"text/calendar",coffee:"text/coffeescript",litcoffee:"text/coffeescript",css:"text/css",csv:"text/csv",html:"text/html",htm:"text/html",shtml:"text/html",jade:"text/jade",jsx:"text/jsx",less:"text/less",markdown:"text/markdown",md:"text/markdown",mml:"text/mathml",mdx:"text/mdx",n3:"text/n3",txt:"text/plain",text:"text/plain",conf:"text/plain",def:"text/plain",list:"text/plain",log:"text/plain",in:"text/plain",ini:"text/plain",dsc:"text/prs.lines.tag",rtx:"text/richtext",sgml:"text/sgml",sgm:"text/sgml",shex:"text/shex",slim:"text/slim",slm:"text/slim",spdx:"text/spdx",stylus:"text/stylus",styl:"text/stylus",tsv:"text/tab-separated-values",t:"text/troff",tr:"text/troff",roff:"text/troff",man:"text/troff",me:"text/troff",ms:"text/troff",ttl:"text/turtle",uri:"text/uri-list",uris:"text/uri-list",urls:"text/uri-list",vcard:"text/vcard",vtt:"text/vtt",yaml:"text/yaml",yml:"text/yaml","3gp":"video/3gpp","3g2":"video/3gpp2",h261:"video/h261",h263:"video/h263",h264:"video/h264",m4s:"video/iso.segment",jpgv:"video/jpeg",jpgm:"image/jpm",mj2:"video/mj2",mjp2:"video/mj2",ts:"video/mp2t",mp4:"video/mp4",mp4v:"video/mp4",mpg4:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",mpe:"video/mpeg",m1v:"video/mpeg",m2v:"video/mpeg",ogv:"video/ogg",qt:"video/quicktime",mov:"video/quicktime",webm:"video/webm"};function Lc(e){let t=(""+e).trim().toLowerCase(),n=t.lastIndexOf(".");return Fc[~n?t.substring(++n):t]}function kc(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Ys(e){return ho.test(e)||!e.startsWith("/")?e:kc(dt.value.base,e)}function Nc(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ee){const n="/vue-qrcode-reader/pr-preview/pr-449/";t=zs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let i=__VP_HASH_MAP__[t.toLowerCase()];if(i||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",i=__VP_HASH_MAP__[t.toLowerCase()]),!i)return null;t=`${n}assets/${t}.${i}.js`}else t=`./${zs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Cn=[];function Mf(e){Cn.push(e),qn(()=>{Cn=Cn.filter(t=>t!==e)})}const Hc=Symbol(),bo="http://a.com",$c=()=>({path:"/",component:null,data:xo});function Pf(e,t){const n=Nn($c()),i={route:n,go:s};async function s(l=Ee?location.href:"/"){var a,c;l=Ci(l),await((a=i.onBeforeRouteChange)==null?void 0:a.call(i,l))!==!1&&(Qs(l),await o(l),await((c=i.onAfterRouteChanged)==null?void 0:c.call(i,l)))}let r=null;async function o(l,a=0,c=!1){var g;if(await((g=i.onBeforePageLoad)==null?void 0:g.call(i,l))===!1)return;const u=new URL(l,bo),d=r=u.pathname;try{let b=await e(d);if(!b)throw new Error(`Page not found: ${d}`);if(r===d){r=null;const{default:C,__pageData:T}=b;if(!C)throw new Error(`Invalid route component: ${C}`);n.path=Ee?d:Ys(d),n.component=Dt(C),n.data=Dt(T),Ee&&$n(()=>{let I=dt.value.base+T.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!dt.value.cleanUrls&&!I.endsWith("/")&&(I+=".html"),I!==u.pathname&&(u.pathname=I,l=I+u.search+u.hash,history.replaceState(null,"",l)),u.hash&&!a){let V=null;try{V=document.getElementById(decodeURIComponent(u.hash).slice(1))}catch(L){console.warn(L)}if(V){Js(V,u.hash);return}}window.scrollTo(0,a)})}}catch(b){if(!/fetch|Page not found/.test(b.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(b),!c)try{const C=await fetch(dt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await C.json(),await o(l,a,!0);return}catch{}r===d&&(r=null,n.path=Ee?d:Ys(d),n.component=t?Dt(t):null,n.data=xo)}}return Ee&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const c=l.target.closest("a");if(c&&!c.closest(".vp-raw")&&(c instanceof SVGElement||!c.download)){const{target:u}=c,{href:d,origin:g,pathname:b,hash:C,search:T}=new URL(c.href instanceof SVGAnimatedString?c.href.animVal:c.href,c.baseURI),I=window.location,V=Lc(b);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!u&&g===I.origin&&(!V||V==="text/html")&&(l.preventDefault(),b===I.pathname&&T===I.search?(C!==I.hash&&(history.pushState(null,"",C),window.dispatchEvent(new Event("hashchange"))),C?Js(c,C,c.classList.contains("header-anchor")):(Qs(d),window.scrollTo(0,0))):s(d))}},{capture:!0}),window.addEventListener("popstate",async l=>{var a;await o(Ci(location.href),l.state&&l.state.scrollPosition||0),(a=i.onAfterRouteChanged)==null||a.call(i,location.href)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),i}function Dc(){const e=Ct(Hc);if(!e)throw new Error("useRouter() is called without provider.");return e}function wo(){return Dc().route}function Js(e,t,n=!1){let i=null;try{i=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(i){let s=function(){!n||Math.abs(c-window.scrollY)>window.innerHeight?window.scrollTo(0,c):window.scrollTo({left:0,top:c,behavior:"smooth"})},r=dt.value.scrollOffset,o=0,l=24;if(typeof r=="object"&&"padding"in r&&(l=r.padding,r=r.selector),typeof r=="number")o=r;else if(typeof r=="string")o=Xs(r,l);else if(Array.isArray(r))for(const u of r){const d=Xs(u,l);if(d){o=d;break}}const a=parseInt(window.getComputedStyle(i).paddingTop,10),c=window.scrollY+i.getBoundingClientRect().top-o+a;requestAnimationFrame(s)}}function Xs(e,t){const n=document.querySelector(e);if(!n)return 0;const i=n.getBoundingClientRect().bottom;return i<0?0:i+t}function Qs(e){Ee&&e!==Ci(location.href)&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",e))}function Ci(e){const t=new URL(e,bo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),dt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const li=()=>Cn.forEach(e=>e()),If=Bi({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=wo(),{site:n}=Ic();return()=>wi(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?wi(t.component,{onVnodeMounted:li,onVnodeUpdated:li,onVnodeUnmounted:li}):"404 Page Not Found"])}}),Uc="modulepreload",Bc=function(e){return"/vue-qrcode-reader/pr-preview/pr-449/"+e},Zs={},Ff=function(t,n,i){let s=Promise.resolve();return n&&n.length>0&&(document.getElementsByTagName("link"),s=Promise.all(n.map(r=>{if(r=Bc(r),r in Zs)return;Zs[r]=!0;const o=r.endsWith(".css"),l=o?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${r}"]${l}`))return;const a=document.createElement("link");if(a.rel=o?"stylesheet":Uc,o||(a.as="script",a.crossOrigin=""),a.href=r,document.head.appendChild(a),o)return new Promise((c,u)=>{a.addEventListener("load",c),a.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${r}`)))})}))),s.then(()=>t()).catch(r=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=r,window.dispatchEvent(o),!o.defaultPrevented)throw r})},Lf=Bi({setup(e,{slots:t}){const n=ae(!1);return It(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function kf(){Ee&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const i=(n=t.parentElement)==null?void 0:n.parentElement;if(!i)return;const s=Array.from(i.querySelectorAll("input")).indexOf(t);if(s<0)return;const r=i.querySelector(".blocks");if(!r)return;const o=Array.from(r.children).find(c=>c.classList.contains("active"));if(!o)return;const l=r.children[s];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const a=i==null?void 0:i.querySelector(`label[for="${t.id}"]`);a==null||a.scrollIntoView({block:"nearest"})}})}function Nf(){if(Ee){const e=new WeakMap;window.addEventListener("click",t=>{var i;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,r=(i=n.nextElementSibling)==null?void 0:i.nextElementSibling;if(!s||!r)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className);let l="";r.querySelectorAll("span.line:not(.diff.remove)").forEach(a=>l+=(a.textContent||"")+` +`),l=l.slice(0,-1),o&&(l=l.replace(/^ *(\$|>) /gm,"").trim()),Kc(l).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function Kc(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const i=document.getSelection(),s=i?i.rangeCount>0&&i.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(i.removeAllRanges(),i.addRange(s)),n&&n.focus()}}function Hf(e,t){let n=[],i=!0;const s=r=>{if(i){i=!1;return}const o=r.map(Gs);n.forEach((l,a)=>{const c=o.findIndex(u=>u==null?void 0:u.isEqualNode(l??null));c!==-1?delete o[c]:(l==null||l.remove(),delete n[a])}),o.forEach(l=>l&&document.head.appendChild(l)),n=[...n,...o].filter(Boolean)};Ui(()=>{const r=e.data,o=t.value,l=r&&r.description,a=r&&r.frontmatter.head||[],c=yo(o,r);c!==document.title&&(document.title=c);const u=l||o.description;let d=document.querySelector("meta[name=description]");d?d.getAttribute("content")!==u&&d.setAttribute("content",u):Gs(["meta",{name:"description",content:u}]),s(vo(o.head,qc(a)))})}function Gs([e,t,n]){const i=document.createElement(e);for(const s in t)i.setAttribute(s,t[s]);return n&&(i.innerHTML=n),e==="script"&&!t.async&&(i.async=!1),i}function Vc(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function qc(e){return e.filter(t=>!Vc(t))}const ai=new Set,_o=()=>document.createElement("link"),Wc=e=>{const t=_o();t.rel="prefetch",t.href=e,document.head.appendChild(t)},zc=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let vn;const Yc=Ee&&(vn=_o())&&vn.relList&&vn.relList.supports&&vn.relList.supports("prefetch")?Wc:zc;function $f(){if(!Ee||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const i=()=>{n&&n.disconnect(),n=new IntersectionObserver(r=>{r.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:a}=l;if(!ai.has(a)){ai.add(a);const c=Nc(a);c&&Yc(c)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(r=>{const{hostname:o,pathname:l}=new URL(r.href instanceof SVGAnimatedString?r.href.animVal:r.href,r.baseURI),a=l.match(/\.\w+$/);a&&a[0]!==".html"||r.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(r):ai.add(l))})})};It(i);const s=wo();Ze(()=>s.path,i),qn(()=>{n&&n.disconnect()})}export{ea as $,qn as A,ef as B,Dl as C,Zc as D,sf as E,ge as F,$i as G,Mf as H,se as I,Gc as J,ho as K,wo as L,ga as M,Ct as N,ji as O,$n as P,Of as Q,ff as R,Hn as S,eo as T,_f as U,hl as V,Tf as W,nf as X,Ff as Y,Sf as Z,wf as _,Xr as a,of as a0,yf as a1,xf as a2,lf as a3,tf as a4,gf as a5,hf as a6,df as a7,pf as a8,Dt as a9,vf as aA,Hf as aa,Hc as ab,Rf as ac,Pc as ad,If as ae,Lf as af,dt as ag,bf as ah,Pf as ai,Nc as aj,$f as ak,Nf as al,kf as am,wi as an,fo as ao,Ji as ap,Ef as aq,jf as ar,Af as as,Cf as at,Dc as au,Zt as av,Ir as aw,mf as ax,pe as ay,af as az,zr as b,cf as c,Bi as d,uf as e,Ys as f,ne as g,ae as h,Ac as i,It as j,Jr as k,Lc as l,yr as m,Oi as n,qr as o,Xc as p,Qc as q,rf as r,Tc as s,Jc as t,Ic as u,Ee as v,Tl as w,hc as x,Ze as y,Ui as z}; diff --git a/pr-preview/pr-449/assets/chunks/safari_32x32.Bkuv9jEj.js b/pr-preview/pr-449/assets/chunks/safari_32x32.Bkuv9jEj.js new file mode 100644 index 00000000..692523a1 --- /dev/null +++ b/pr-preview/pr-449/assets/chunks/safari_32x32.Bkuv9jEj.js @@ -0,0 +1 @@ +const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACgJJREFUeNrEV3l0VPUV/n7vvVkyk0y2yUISJgFCCAMUWcQALoAaUEiV1l3U9iiVthbautRTPZ621ta9BzgKtW5VKseKHMGlUgFjICxBFhNWEwOEyTrZZn37e73vZURQarX/OHN+eS9v3vvd79773e/ex0zTxHf5YVk3rv36Owwd4Hg6+Rwoo68JxjG6zMPp4uFOz8LD1x/ETRc0woBg3wPwAlRjuCkpxUxTM6UBJdn8Yc+nLz96oP1US7+90zpyXvi/oRMewzChawZUjY6GaV9k8AShctWIDlzEYt2V0GL55ITXw0xj4iSjc96CzBXPrxxcaeiGvc23BmA9aGgaHE4hJy3dU+HJ8gUKc91Zfq/HbWpFV6K/90LWd8SDZLeIGB8+/pm5+7NmqbF/UO0tKnKWz70q/UExViiv3zjw3LcCYNre6vDlZMwfHiz5UcnY0osDRZ786fkhzMrah7xEE3BkP9Dfjl6u0vxXzw2Rjc/WLWvZunWDh57PSiVxYqX3b3f9YtgfNrwRtnIf+0YAdFWHK81xfuWFYx8fOWXUrNwCH6ZkdmFu1lYMM/YBnTuB9k+haLmo9d2Hjdz1rAXZw/oXd7/cmf/C38NvPfF7nzQ4MNvvRl5+zv5IlNtekCcEaOtD/xOApmrIKfL/LFh93lP5ZQXufHKnxr8PF/n2gA3uBk4dAPr6cNI7D++X3IdWYRQcookiUwRfmJbF37J0mWdsVfXJVcsW7VUP71u1ZBx8/EArhJBm7c99TYHYnueW+O8Z//1pz/gD+e6ydAV3FG/DxembwdrfAY7WwexTUF/4ENaNXo2IbxSyOBNpzECag0cmVUgaJGQEJ4wd/utXNrex8TPW1TaDGYba26OEhwBYJXaOZZHN63PVlF82+YmM3EyU+1TcWVKHMY5twMn3gNYm6CjGe+PWYFf57XCmEf9dRCqBgSfwTo6j/wmExwkvb8BZkJ/tufXpN+pC3hEnWnrD/RF9wCah1r7/3AEQPFnFcxYu9+TlYKRPw23F9ShiFPITWyjnbYh6Z2CFeJ+69dWuneH9D+5RxaSYWx4MVlZfeXkgWJThpAA7BQuEAK/bgXhCgbu0vCji/fHKj7Y8cBuVrS0sgqkr5yCdBv+Eint85WUjSjM0/CSwDWWsfsh4RztCafOweP2kze8/d+v9CDftPfPZnc8UjT5/6ePLL1l88xVOlYfLYdgg0txOZDji2O+5bP6B42vP09GwxQagdn7y1ewLaf6cqUvuzPMxLCmrQxm3AzhO97eHEMq6GjeuqXxn+1NLrwFU+SvlGu9obvjToqv5tPR/V9101SW8pFMkSC2dAlyUkoTDjfjU634lnUwB0BTxS0pjIHP81AXZZcP9d5TVY1xaAxmvBUIhdOcswCNdd/VtXznjp2C67CqvhpA/Bpw33+aNqSSghT+FdHiD8vGKu+8eNWvOTo/P6+A5Ei6eg0MQiHQSHGVT5igZhWVk7YTgTzu7GRkkrZnByfNuqDiEy/17qMyIdKdOosc9Exsqnkb9qmfWQzNC7jl/BJ83lgRKh27qQzLDOPAFU+CiJdet2Hty5/b9wflXTLMqiiNS8sQJzqo7T3YaVzh2ug1g9djdp43zxOsBzcsdqVImXFeyC+ih1daKCKvEG6V/gWi4UTl14sSc0tef5TNI4u3osaHQE6csVyxumVwAyszJZvawgnxN0QnkUFlz1pdAWtFi2aXj7RTM+s3C0wA4ejhieoOVhX2jcqKkbm3N0JUM/KP4SXQ7CpGeNFF1zWXTqOVNM1JO2y2I/li9RbMWXadWAYXOkyRI8aRi/3Zm17dP3RkFNoDsqulnZoAoYs71dRx1orMFiMrYkH4vDjknwC8bIPvgVfKEfdGdzSHawGqGOhlXU0shEJoFkHPA5CkKPEWGt84FmEy3+qbLBmCcJYZsikPtnc7FjjD09OBjLMBruA2FFMaENRZQGAe7+1UlIeo0D7DTHpF7FgirJVtL0027RasUEkU1IRGipKQhFpegRBIw4jqDGO1KdUP35/sQlfVJLNE2ie/pwoBcjEfVpRCdFMqkBt1BLHY68P6Tj606tenF5WDMiRQDTPtofhFeOyeqxegvq/sQYxij6UDvBl4CCacr9RNXAa19DOttzWeibK7sv4U1ktSOcCUQZwJ0us1DcNOHDc+F2Nt6Vj7POJ62lVkK0LKqZIgAZsp46tj9yecDiQ0gl1Ymi534Hvq7jeZkReyljkt8jqxBRGOuoSQZVpXpKLv06gVH1/y5zIx1nGC8E8ztSxlgFrHA+UrA5ZRD8Jf7C4KTb6H0cDqNTgYB0XRrGUyKRqXk2/e+QA9JKQDMB2MwEwOt5VCYuW7tyd92+0M/zx1THowQeQQSEd5Kuakgt7Qkc9xdK54/+NiiGpPnRddoEqPADHLFSeQiMaJoaWLCWVk1/sXAzAtqJFklHhAHRAX9lP9IlNK55ZWPzGTf6lQ7dlo80CCHA4iFcxIh1vrhW0dXK3tee04UDUSjSUTjMoh3SMq0YhKCNT+8dNLv3trsKjpvuipJVHaGXXqqJMMBZdrk2VM+KK6aWhOlErTIl5RURBMy7aMg0dVtyg2vPWS1nFQKHFb/lViyu4yk3X34QHJHTKFu3Lj+ZWXqD5aZgYoRUTLqJBkl7hDLGRyaiBGz587wB6fUhw8d+CAZlQ8wjje92b5xeSNL5wm5fiFOHutWyAmcFYVEUoYsM8gfr3/T7GupO910U2OhCjFcBFnXDx0Ud2WQIV6ORZLvPrLYe/Ozm2KUAY5L2kTzknRbzUVW4xAy0lnxhbOqCW61xQODeKBQJ5XImGEYKeOa7X1Coso7uK1F3fHXpWeSlbOlwAqHmvBCNlTdmREaXxlAaYYHelvDFnHjH5YoFIFIlHI4QDmkc8s7kZTGymsinkSCDFiKl0hQnZO3GuVcsbSDQj9ohV5kSDTVH5c33L8QSrzzrLGDtM2SmCSYM0HTgVA02p+OkgAq5A78c+dh1DZtfD4WiSUw/4GVYmBErqqLFAUVbpcTDsoeb8viF/3A6gWWAMkEgmYQJAYlJHasr5U3PXo7pMHWr8w9dmESCXW+ZBfvaqiZWuVYeFga806pqmLx/AnYfSyOLfuOrQ0N/PJ4KGvRw9vjc2YrBQU8PUGpMMDzVqdjNj8sOdZMKw2ASIwXj+39TKx7aYV+bNMqO83nmjwNczvhFwhcZ57S8NirPnZqVlePf41D8L2ZmynTaKtmISE7mxq6T7y4rq9peXhkpSN46bXOkefPdhQERvHeTB8nOJyk9IYhiaLa196hnGjcqxytfdto2/MuTC36X981KFo2gFQfQiTU5g3veP3aWNO2mTwzlXC31tbcLDc2HpT2d4b1Lmun2jNVj3f7SYhyqL2m00XdVJMDkCM9lsB8o5cdC8B3/XbM4Tv+/EeAAQD76+LH+g+/1QAAAABJRU5ErkJggg==",i="data:image/png;base64,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",w="data:image/png;base64,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",Q="data:image/png;base64,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",C="data:image/png;base64,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";export{A as _,i as a,w as b,Q as c,C as d}; diff --git a/pr-preview/pr-449/assets/chunks/theme.C1T0t5Zq.js b/pr-preview/pr-449/assets/chunks/theme.C1T0t5Zq.js new file mode 100644 index 00000000..57b71c2f --- /dev/null +++ b/pr-preview/pr-449/assets/chunks/theme.C1T0t5Zq.js @@ -0,0 +1,7 @@ +var De=Object.defineProperty;var Fe=(s,e,t)=>e in s?De(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var ae=(s,e,t)=>(Fe(s,typeof e!="symbol"?e+"":e,t),t);import{d as $,o,c as l,r as u,n as T,a as H,t as L,_ as m,b as k,w as h,e as f,T as ce,u as xe,i as Oe,l as Ue,f as ue,g as b,h as M,j as U,k as c,m as i,p as E,q as D,s as O,v as K,x as re,y as G,z as ee,A as de,B as Ve,C as Ge,D as j,F as C,E as B,G as ve,H as Y,I as _,J as x,K as Le,L as te,M as X,N as se,O as je,P as Re,Q as Se,R as qe,S as Ke,U as We,V as Ye,W as ye,X as Je,Y as Xe,Z as Me,$ as Ce,a0 as Ze,a1 as Qe,a2 as et,a3 as tt}from"./framework.BtL3uYYi.js";const st=$({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(o(),l("span",{class:T(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[H(L(e.text),1)],!0)],2))}}),nt=m(st,[["__scopeId","data-v-e327f06c"]]),at={key:0,class:"VPBackdrop"},ot=$({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(o(),k(ce,{name:"fade"},{default:h(()=>[e.show?(o(),l("div",at)):f("",!0)]),_:1}))}}),rt=m(ot,[["__scopeId","data-v-b267bac4"]]),P=xe;function it(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ie(s){return/^\//.test(s)?s:`/${s}`}function he(s){const{pathname:e,search:t,hash:n,protocol:a}=new URL(s,"http://a.com");if(Oe(s)||s.startsWith("#")||!a.startsWith("http")||/\.(?!html|md)\w+($|\?)/i.test(s)&&Ue(s))return s;const{site:r}=P(),d=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${n}`);return ue(d)}function J({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:a,theme:r}=P(),d=b(()=>{var v,g;return{label:(v=t.value.locales[n.value])==null?void 0:v.label,link:((g=t.value.locales[n.value])==null?void 0:g.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:b(()=>Object.entries(t.value.locales).flatMap(([v,g])=>s&&d.value.label===g.label?[]:{text:g.label,link:lt(g.link||(v==="root"?"/":`/${v}/`),r.value.i18nRouting!==!1&&e,a.value.relativePath.slice(d.value.link.length-1),!t.value.cleanUrls)})),currentLang:d}}function lt(s,e,t,n){return e?s.replace(/\/$/,"")+ie(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const ct=s=>(E("data-v-81a9a3cc"),s=s(),D(),s),ut={class:"NotFound"},dt={class:"code"},vt={class:"title"},ht=ct(()=>c("div",{class:"divider"},null,-1)),pt={class:"quote"},_t={class:"action"},ft=["href","aria-label"],mt=$({__name:"NotFound",setup(s){const{site:e,theme:t}=P(),{localeLinks:n}=J({removeCurrent:!1}),a=M("/");return U(()=>{var d;const r=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(a.value=((d=n.value.find(({link:p})=>p.startsWith(r)))==null?void 0:d.link)||n.value[0].link)}),(r,d)=>{var p,v,g,w,y;return o(),l("div",ut,[c("p",dt,L(((p=i(t).notFound)==null?void 0:p.code)??"404"),1),c("h1",vt,L(((v=i(t).notFound)==null?void 0:v.title)??"PAGE NOT FOUND"),1),ht,c("blockquote",pt,L(((g=i(t).notFound)==null?void 0:g.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",_t,[c("a",{class:"link",href:i(ue)(a.value),"aria-label":((w=i(t).notFound)==null?void 0:w.linkLabel)??"go to home"},L(((y=i(t).notFound)==null?void 0:y.linkText)??"Take me home"),9,ft)])])}}}),gt=m(mt,[["__scopeId","data-v-81a9a3cc"]]);function Ie(s,e){if(Array.isArray(s))return Z(s);if(s==null)return[];e=ie(e);const t=Object.keys(s).sort((a,r)=>r.split("/").length-a.split("/").length).find(a=>e.startsWith(ie(a))),n=t?s[t]:[];return Array.isArray(n)?Z(n):Z(n.items,n.base)}function $t(s){const e=[];let t=0;for(const n in s){const a=s[n];if(a.items){t=e.push(a);continue}e[t]||e.push({items:[]}),e[t].items.push(a)}return e}function kt(s){const e=[];function t(n){for(const a of n)a.text&&a.link&&e.push({text:a.text,link:a.link,docFooterText:a.docFooterText}),a.items&&t(a.items)}return t(s),e}function le(s,e){return Array.isArray(e)?e.some(t=>le(s,t)):O(s,e.link)?!0:e.items?le(s,e.items):!1}function Z(s,e){return[...s].map(t=>{const n={...t},a=n.base||e;return a&&n.link&&(n.link=a+n.link),n.items&&(n.items=Z(n.items,a)),n})}function F(){const{frontmatter:s,page:e,theme:t}=P(),n=re("(min-width: 960px)"),a=M(!1),r=b(()=>{const A=t.value.sidebar,V=e.value.relativePath;return A?Ie(A,V):[]}),d=M(r.value);G(r,(A,V)=>{JSON.stringify(A)!==JSON.stringify(V)&&(d.value=r.value)});const p=b(()=>s.value.sidebar!==!1&&d.value.length>0&&s.value.layout!=="home"),v=b(()=>g?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),g=b(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),w=b(()=>p.value&&n.value),y=b(()=>p.value?$t(d.value):[]);function I(){a.value=!0}function S(){a.value=!1}function N(){a.value?S():I()}return{isOpen:a,sidebar:d,sidebarGroups:y,hasSidebar:p,hasAside:g,leftAside:v,isSidebarEnabled:w,open:I,close:S,toggle:N}}function bt(s,e){let t;ee(()=>{t=s.value?document.activeElement:void 0}),U(()=>{window.addEventListener("keyup",n)}),de(()=>{window.removeEventListener("keyup",n)});function n(a){a.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}const Te=M(K?location.hash:"");K&&window.addEventListener("hashchange",()=>{Te.value=location.hash});function yt(s){const{page:e}=P(),t=M(!1),n=b(()=>s.value.collapsed!=null),a=b(()=>!!s.value.link),r=M(!1),d=()=>{r.value=O(e.value.relativePath,s.value.link)};G([e,s,Te],d),U(d);const p=b(()=>r.value?!0:s.value.items?le(e.value.relativePath,s.value.items):!1),v=b(()=>!!(s.value.items&&s.value.items.length));ee(()=>{t.value=!!(n.value&&s.value.collapsed)}),Ve(()=>{(r.value||p.value)&&(t.value=!1)});function g(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:a,isActiveLink:r,hasActiveLink:p,hasChildren:v,toggle:g}}function Pt(){const{hasSidebar:s}=F(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:b(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const wt=71;function pe(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function _e(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{title:Vt(t),link:"#"+t.id,level:n}});return Lt(e,s)}function Vt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Lt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,a]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(d=>d.level>=n&&d.level<=a);const r=[];e:for(let d=0;d=0;v--){const g=s[v];if(g.level{requestAnimationFrame(r),window.addEventListener("scroll",n)}),Ge(()=>{d(location.hash)}),de(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const p=[].slice.call(s.value.querySelectorAll(".outline-link")),v=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(S=>p.some(N=>N.hash===S.hash&&S.offsetParent!==null)),g=window.scrollY,w=window.innerHeight,y=document.body.offsetHeight,I=Math.abs(g+w-y)<1;if(v.length&&I){d(v[v.length-1].hash);return}for(let S=0;S{const a=j("VPDocOutlineItem",!0);return o(),l("ul",{class:T(t.root?"root":"nested")},[(o(!0),l(C,null,B(t.headers,({children:r,link:d,title:p})=>(o(),l("li",null,[c("a",{class:"outline-link",href:d,onClick:e,title:p},L(p),9,Ct),r!=null&&r.length?(o(),k(a,{key:0,headers:r},null,8,["headers"])):f("",!0)]))),256))],2)}}}),fe=m(It,[["__scopeId","data-v-a1abf3bf"]]),Tt=s=>(E("data-v-8c0fa5ec"),s=s(),D(),s),At={class:"content"},Nt={class:"outline-title",role:"heading","aria-level":"2"},Bt={"aria-labelledby":"doc-outline-aria-label"},Ht=Tt(()=>c("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),zt=$({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=P(),n=ve([]);Y(()=>{n.value=_e(e.value.outline??t.value.outline)});const a=M(),r=M();return St(a,r),(d,p)=>(o(),l("div",{class:T(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:a,role:"navigation"},[c("div",At,[c("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),c("div",Nt,L(i(pe)(i(t))),1),c("nav",Bt,[Ht,_(fe,{headers:n.value,root:!0},null,8,["headers"])])])],2))}}),Et=m(zt,[["__scopeId","data-v-8c0fa5ec"]]),Dt={class:"VPDocAsideCarbonAds"},Ft=$({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(o(),l("div",Dt,[_(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),xt=s=>(E("data-v-5b29a36c"),s=s(),D(),s),Ot={class:"VPDocAside"},Ut=xt(()=>c("div",{class:"spacer"},null,-1)),Gt=$({__name:"VPDocAside",setup(s){const{theme:e}=P();return(t,n)=>(o(),l("div",Ot,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),_(Et),u(t.$slots,"aside-outline-after",{},void 0,!0),Ut,u(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(o(),k(Ft,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):f("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}}),jt=m(Gt,[["__scopeId","data-v-5b29a36c"]]);function Rt(){const{theme:s,page:e}=P();return b(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let a;return typeof n=="function"?a=n(e.value):a=n.replace(/:path/g,e.value.filePath),{url:a,text:t}})}function qt(){const{page:s,theme:e,frontmatter:t}=P();return b(()=>{var v,g,w,y,I,S,N,A;const n=Ie(e.value.sidebar,s.value.relativePath),a=kt(n),r=a.findIndex(V=>O(s.value.relativePath,V.link)),d=((v=e.value.docFooter)==null?void 0:v.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((g=e.value.docFooter)==null?void 0:g.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((w=a[r-1])==null?void 0:w.docFooterText)??((y=a[r-1])==null?void 0:y.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((I=a[r-1])==null?void 0:I.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((S=a[r+1])==null?void 0:S.docFooterText)??((N=a[r+1])==null?void 0:N.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((A=a[r+1])==null?void 0:A.link)}}})}const Kt={},Wt={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Yt=c("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Jt=c("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Xt=[Yt,Jt];function Zt(s,e){return o(),l("svg",Wt,Xt)}const Qt=m(Kt,[["render",Zt]]),z=$({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=b(()=>e.tag??(e.href?"a":"span")),n=b(()=>e.href&&Le.test(e.href));return(a,r)=>(o(),k(x(t.value),{class:T(["VPLink",{link:a.href,"vp-external-link-icon":n.value,"no-icon":a.noIcon}]),href:a.href?i(he)(a.href):void 0,target:a.target??(n.value?"_blank":void 0),rel:a.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[u(a.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),es={class:"VPLastUpdated"},ts=["datetime"],ss=$({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:a}=P(),r=b(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),d=b(()=>r.value.toISOString()),p=M("");return U(()=>{ee(()=>{var v,g,w;p.value=new Intl.DateTimeFormat((g=(v=e.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&g.forceLocale?a.value:void 0,((w=e.value.lastUpdated)==null?void 0:w.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(v,g)=>{var w;return o(),l("p",es,[H(L(((w=i(e).lastUpdated)==null?void 0:w.text)||i(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:d.value},L(p.value),9,ts)])}}}),ns=m(ss,[["__scopeId","data-v-88643386"]]),as={key:0,class:"VPDocFooter"},os={key:0,class:"edit-info"},rs={key:0,class:"edit-link"},is={key:1,class:"last-updated"},ls={key:1,class:"prev-next"},cs={class:"pager"},us=["innerHTML"],ds=["innerHTML"],vs={class:"pager"},hs=["innerHTML"],ps=["innerHTML"],_s=$({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=P(),a=Rt(),r=qt(),d=b(()=>e.value.editLink&&n.value.editLink!==!1),p=b(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),v=b(()=>d.value||p.value||r.value.prev||r.value.next);return(g,w)=>{var y,I,S,N;return v.value?(o(),l("footer",as,[u(g.$slots,"doc-footer-before",{},void 0,!0),d.value||p.value?(o(),l("div",os,[d.value?(o(),l("div",rs,[_(z,{class:"edit-link-button",href:i(a).url,"no-icon":!0},{default:h(()=>[_(Qt,{class:"edit-link-icon","aria-label":"edit icon"}),H(" "+L(i(a).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(o(),l("div",is,[_(ns)])):f("",!0)])):f("",!0),(y=i(r).prev)!=null&&y.link||(I=i(r).next)!=null&&I.link?(o(),l("nav",ls,[c("div",cs,[(S=i(r).prev)!=null&&S.link?(o(),k(z,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:h(()=>{var A;return[c("span",{class:"desc",innerHTML:((A=i(e).docFooter)==null?void 0:A.prev)||"Previous page"},null,8,us),c("span",{class:"title",innerHTML:i(r).prev.text},null,8,ds)]}),_:1},8,["href"])):f("",!0)]),c("div",vs,[(N=i(r).next)!=null&&N.link?(o(),k(z,{key:0,class:"pager-link next",href:i(r).next.link},{default:h(()=>{var A;return[c("span",{class:"desc",innerHTML:((A=i(e).docFooter)==null?void 0:A.next)||"Next page"},null,8,hs),c("span",{class:"title",innerHTML:i(r).next.text},null,8,ps)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),fs=m(_s,[["__scopeId","data-v-68dff59f"]]),ms={},gs={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},$s=c("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),ks=[$s];function bs(s,e){return o(),l("svg",gs,ks)}const me=m(ms,[["render",bs]]),ys={key:0,class:"VPDocOutlineDropdown"},Ps={key:0,class:"items"},ws=$({__name:"VPDocOutlineDropdown",setup(s){const{frontmatter:e,theme:t}=P(),n=M(!1);Y(()=>{n.value=!1});const a=ve([]);return Y(()=>{a.value=_e(e.value.outline??t.value.outline)}),(r,d)=>a.value.length>0?(o(),l("div",ys,[c("button",{onClick:d[0]||(d[0]=p=>n.value=!n.value),class:T({open:n.value})},[H(L(i(pe)(i(t)))+" ",1),_(me,{class:"icon"})],2),n.value?(o(),l("div",Ps,[_(fe,{headers:a.value},null,8,["headers"])])):f("",!0)])):f("",!0)}}),Vs=m(ws,[["__scopeId","data-v-710c2da7"]]),Ls=s=>(E("data-v-4656fea7"),s=s(),D(),s),Ss={class:"container"},Ms=Ls(()=>c("div",{class:"aside-curtain"},null,-1)),Cs={class:"aside-container"},Is={class:"aside-content"},Ts={class:"content"},As={class:"content-container"},Ns={class:"main"},Bs=$({__name:"VPDoc",setup(s){const{theme:e}=P(),t=te(),{hasSidebar:n,hasAside:a,leftAside:r}=F(),d=b(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,v)=>{const g=j("Content");return o(),l("div",{class:T(["VPDoc",{"has-sidebar":i(n),"has-aside":i(a)}])},[u(p.$slots,"doc-top",{},void 0,!0),c("div",Ss,[i(a)?(o(),l("div",{key:0,class:T(["aside",{"left-aside":i(r)}])},[Ms,c("div",Cs,[c("div",Is,[_(jt,null,{"aside-top":h(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),c("div",Ts,[c("div",As,[u(p.$slots,"doc-before",{},void 0,!0),_(Vs),c("main",Ns,[_(g,{class:T(["vp-doc",[d.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),_(fs,null,{"doc-footer-before":h(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(p.$slots,"doc-after",{},void 0,!0)])])]),u(p.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Hs=m(Bs,[["__scopeId","data-v-4656fea7"]]),zs=$({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{}},setup(s){const e=s,t=b(()=>e.href&&Le.test(e.href)),n=b(()=>e.tag||e.href?"a":"button");return(a,r)=>(o(),k(x(n.value),{class:T(["VPButton",[a.size,a.theme]]),href:a.href?i(he)(a.href):void 0,target:t.value?"_blank":void 0,rel:t.value?"noreferrer":void 0},{default:h(()=>[H(L(a.text),1)]),_:1},8,["class","href","target","rel"]))}}),Es=m(zs,[["__scopeId","data-v-6a78db19"]]),Ds=["src","alt"],Fs=$({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=j("VPImage",!0);return e.image?(o(),l(C,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),l("img",X({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(ue)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Ds)):(o(),l(C,{key:1},[_(n,X({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),_(n,X({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),Q=m(Fs,[["__scopeId","data-v-3a042f83"]]),xs=s=>(E("data-v-c413b857"),s=s(),D(),s),Os={class:"container"},Us={class:"main"},Gs={key:0,class:"name"},js=["innerHTML"],Rs=["innerHTML"],qs=["innerHTML"],Ks={key:0,class:"actions"},Ws={key:0,class:"image"},Ys={class:"image-container"},Js=xs(()=>c("div",{class:"image-bg"},null,-1)),Xs=$({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=se("hero-image-slot-exists");return(t,n)=>(o(),l("div",{class:T(["VPHero",{"has-image":t.image||i(e)}])},[c("div",Os,[c("div",Us,[u(t.$slots,"home-hero-info",{},()=>[t.name?(o(),l("h1",Gs,[c("span",{innerHTML:t.name,class:"clip"},null,8,js)])):f("",!0),t.text?(o(),l("p",{key:1,innerHTML:t.text,class:"text"},null,8,Rs)):f("",!0),t.tagline?(o(),l("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,qs)):f("",!0)],!0),t.actions?(o(),l("div",Ks,[(o(!0),l(C,null,B(t.actions,a=>(o(),l("div",{key:a.link,class:"action"},[_(Es,{tag:"a",size:"medium",theme:a.theme,text:a.text,href:a.link},null,8,["theme","text","href"])]))),128))])):f("",!0)]),t.image||i(e)?(o(),l("div",Ws,[c("div",Ys,[Js,u(t.$slots,"home-hero-image",{},()=>[t.image?(o(),k(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Zs=m(Xs,[["__scopeId","data-v-c413b857"]]),Qs=$({__name:"VPHomeHero",setup(s){const{frontmatter:e}=P();return(t,n)=>i(e).hero?(o(),k(Zs,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info":h(()=>[u(t.$slots,"home-hero-info")]),"home-hero-image":h(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),en={},tn={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},sn=c("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),nn=[sn];function an(s,e){return o(),l("svg",tn,nn)}const on=m(en,[["render",an]]),rn={class:"box"},ln={key:0,class:"icon"},cn=["innerHTML"],un=["innerHTML"],dn=["innerHTML"],vn={key:4,class:"link-text"},hn={class:"link-text-value"},pn=$({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(o(),k(z,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[c("article",rn,[typeof e.icon=="object"&&e.icon.wrap?(o(),l("div",ln,[_(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(o(),k(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(o(),l("div",{key:2,class:"icon",innerHTML:e.icon},null,8,cn)):f("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,un),e.details?(o(),l("p",{key:3,class:"details",innerHTML:e.details},null,8,dn)):f("",!0),e.linkText?(o(),l("div",vn,[c("p",hn,[H(L(e.linkText)+" ",1),_(on,{class:"link-text-icon"})])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),_n=m(pn,[["__scopeId","data-v-f5d1f245"]]),fn={key:0,class:"VPFeatures"},mn={class:"container"},gn={class:"items"},$n=$({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=b(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,a)=>n.features?(o(),l("div",fn,[c("div",mn,[c("div",gn,[(o(!0),l(C,null,B(n.features,r=>(o(),l("div",{key:r.title,class:T(["item",[t.value]])},[_(_n,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),kn=m($n,[["__scopeId","data-v-00516ef3"]]),bn=$({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=P();return(t,n)=>i(e).features?(o(),k(kn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):f("",!0)}}),yn={class:"VPHome"},Pn=$({__name:"VPHome",setup(s){return(e,t)=>{const n=j("Content");return o(),l("div",yn,[u(e.$slots,"home-hero-before",{},void 0,!0),_(Qs,null,{"home-hero-info":h(()=>[u(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":h(()=>[u(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(e.$slots,"home-hero-after",{},void 0,!0),u(e.$slots,"home-features-before",{},void 0,!0),_(bn),u(e.$slots,"home-features-after",{},void 0,!0),_(n)])}}}),wn=m(Pn,[["__scopeId","data-v-c00e4bb1"]]),Vn={},Ln={class:"VPPage"};function Sn(s,e){const t=j("Content");return o(),l("div",Ln,[u(s.$slots,"page-top"),_(t),u(s.$slots,"page-bottom")])}const Mn=m(Vn,[["render",Sn]]),Cn=$({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=P(),{hasSidebar:n}=F();return(a,r)=>(o(),l("div",{class:T(["VPContent",{"has-sidebar":i(n),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?u(a.$slots,"not-found",{key:0},()=>[_(gt)],!0):i(t).layout==="page"?(o(),k(Mn,{key:1},{"page-top":h(()=>[u(a.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[u(a.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(o(),k(wn,{key:2},{"home-hero-before":h(()=>[u(a.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":h(()=>[u(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":h(()=>[u(a.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[u(a.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[u(a.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[u(a.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(o(),k(x(i(t).layout),{key:3})):(o(),k(Hs,{key:4},{"doc-top":h(()=>[u(a.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[u(a.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[u(a.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[u(a.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[u(a.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[u(a.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[u(a.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[u(a.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[u(a.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[u(a.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[u(a.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),In=m(Cn,[["__scopeId","data-v-f66ab897"]]),Tn={class:"container"},An=["innerHTML"],Nn=["innerHTML"],Bn=$({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=F();return(a,r)=>i(e).footer&&i(t).footer!==!1?(o(),l("footer",{key:0,class:T(["VPFooter",{"has-sidebar":i(n)}])},[c("div",Tn,[i(e).footer.message?(o(),l("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,An)):f("",!0),i(e).footer.copyright?(o(),l("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,Nn)):f("",!0)])],2)):f("",!0)}}),Hn=m(Bn,[["__scopeId","data-v-c0d258eb"]]),zn={class:"header"},En={class:"outline"},Dn=$({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=P(),n=M(!1),a=M(0),r=M();Y(()=>{n.value=!1});function d(){n.value=!n.value,a.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(g){g.target.classList.contains("outline-link")&&(r.value&&(r.value.style.transition="none"),Re(()=>{n.value=!1}))}function v(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(g,w)=>(o(),l("div",{class:"VPLocalNavOutlineDropdown",style:je({"--vp-vh":a.value+"px"})},[g.headers.length>0?(o(),l("button",{key:0,onClick:d,class:T({open:n.value})},[H(L(i(pe)(i(t)))+" ",1),_(me,{class:"icon"})],2)):(o(),l("button",{key:1,onClick:v},L(i(t).returnToTopLabel||"Return to top"),1)),_(ce,{name:"flyout"},{default:h(()=>[n.value?(o(),l("div",{key:0,ref_key:"items",ref:r,class:"items",onClick:p},[c("div",zn,[c("a",{class:"top-link",href:"#",onClick:v},L(i(t).returnToTopLabel||"Return to top"),1)]),c("div",En,[_(fe,{headers:g.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Fn=m(Dn,[["__scopeId","data-v-73bc42e2"]]),xn={},On={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Un=c("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Gn=c("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),jn=c("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Rn=c("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),qn=[Un,Gn,jn,Rn];function Kn(s,e){return o(),l("svg",On,qn)}const Wn=m(xn,[["render",Kn]]),Yn=["aria-expanded"],Jn={class:"menu-text"},Xn=$({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=F(),{y:a}=Se(),r=ve([]),d=M(0);U(()=>{d.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{r.value=_e(t.value.outline??e.value.outline)});const p=b(()=>r.value.length===0&&!n.value),v=b(()=>({VPLocalNav:!0,fixed:p.value,"reached-top":a.value>=d.value}));return(g,w)=>i(t).layout!=="home"&&(!p.value||i(a)>=d.value)?(o(),l("div",{key:0,class:T(v.value)},[i(n)?(o(),l("button",{key:0,class:"menu","aria-expanded":g.open,"aria-controls":"VPSidebarNav",onClick:w[0]||(w[0]=y=>g.$emit("open-menu"))},[_(Wn,{class:"menu-icon"}),c("span",Jn,L(i(e).sidebarMenuLabel||"Menu"),1)],8,Yn)):f("",!0),_(Fn,{headers:r.value,navHeight:d.value},null,8,["headers","navHeight"])],2)):f("",!0)}}),Zn=m(Xn,[["__scopeId","data-v-d572beab"]]);function Qn(){const s=M(!1);function e(){s.value=!0,window.addEventListener("resize",a)}function t(){s.value=!1,window.removeEventListener("resize",a)}function n(){s.value?t():e()}function a(){window.outerWidth>=768&&t()}const r=te();return G(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const ea={},ta={class:"VPSwitch",type:"button",role:"switch"},sa={class:"check"},na={key:0,class:"icon"};function aa(s,e){return o(),l("button",ta,[c("span",sa,[s.$slots.default?(o(),l("span",na,[u(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const oa=m(ea,[["render",aa],["__scopeId","data-v-79b946ae"]]),ra={},ia={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},la=c("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),ca=[la];function ua(s,e){return o(),l("svg",ia,ca)}const da=m(ra,[["render",ua]]),va={},ha={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},pa=qe('',9),_a=[pa];function fa(s,e){return o(),l("svg",ha,_a)}const ma=m(va,[["render",fa]]),ga=$({__name:"VPSwitchAppearance",setup(s){const{isDark:e}=P(),t=se("toggle-appearance",()=>{e.value=!e.value}),n=b(()=>e.value?"Switch to light theme":"Switch to dark theme");return(a,r)=>(o(),k(oa,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(t)},{default:h(()=>[_(ma,{class:"sun"}),_(da,{class:"moon"})]),_:1},8,["title","aria-checked","onClick"]))}}),ge=m(ga,[["__scopeId","data-v-ebd87300"]]),$a={key:0,class:"VPNavBarAppearance"},ka=$({__name:"VPNavBarAppearance",setup(s){const{site:e}=P();return(t,n)=>i(e).appearance&&i(e).appearance!=="force-dark"?(o(),l("div",$a,[_(ge)])):f("",!0)}}),ba=m(ka,[["__scopeId","data-v-a51e01db"]]),$e=M();let Ae=!1,oe=0;function ya(s){const e=M(!1);if(K){!Ae&&Pa(),oe++;const t=G($e,n=>{var a,r,d;n===s.el.value||(a=s.el.value)!=null&&a.contains(n)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(d=s.onBlur)==null||d.call(s))});de(()=>{t(),oe--,oe||wa()})}return Ke(e)}function Pa(){document.addEventListener("focusin",Ne),Ae=!0,$e.value=document.activeElement}function wa(){document.removeEventListener("focusin",Ne)}function Ne(){$e.value=document.activeElement}const Va={},La={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Sa=c("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Ma=[Sa];function Ca(s,e){return o(),l("svg",La,Ma)}const Be=m(Va,[["render",Ca]]),Ia={},Ta={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Aa=c("circle",{cx:"12",cy:"12",r:"2"},null,-1),Na=c("circle",{cx:"19",cy:"12",r:"2"},null,-1),Ba=c("circle",{cx:"5",cy:"12",r:"2"},null,-1),Ha=[Aa,Na,Ba];function za(s,e){return o(),l("svg",Ta,Ha)}const Ea=m(Ia,[["render",za]]),Da={class:"VPMenuLink"},Fa=$({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,n)=>(o(),l("div",Da,[_(z,{class:T({active:i(O)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:h(()=>[H(L(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ne=m(Fa,[["__scopeId","data-v-0334012c"]]),xa={class:"VPMenuGroup"},Oa={key:0,class:"title"},Ua=$({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(o(),l("div",xa,[e.text?(o(),l("p",Oa,L(e.text),1)):f("",!0),(o(!0),l(C,null,B(e.items,n=>(o(),l(C,null,["link"in n?(o(),k(ne,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}}),Ga=m(Ua,[["__scopeId","data-v-fea79092"]]),ja={class:"VPMenu"},Ra={key:0,class:"items"},qa=$({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(o(),l("div",ja,[e.items?(o(),l("div",Ra,[(o(!0),l(C,null,B(e.items,n=>(o(),l(C,{key:n.text},["link"in n?(o(),k(ne,{key:0,item:n},null,8,["item"])):(o(),k(Ga,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),u(e.$slots,"default",{},void 0,!0)]))}}),Ka=m(qa,[["__scopeId","data-v-64313b78"]]),Wa=["aria-expanded","aria-label"],Ya={key:0,class:"text"},Ja=["innerHTML"],Xa={class:"menu"},Za=$({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=M(!1),t=M();ya({el:t,onBlur:n});function n(){e.value=!1}return(a,r)=>(o(),l("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=d=>e.value=!0),onMouseleave:r[2]||(r[2]=d=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":a.label,onClick:r[0]||(r[0]=d=>e.value=!e.value)},[a.button||a.icon?(o(),l("span",Ya,[a.icon?(o(),k(x(a.icon),{key:0,class:"option-icon"})):f("",!0),a.button?(o(),l("span",{key:1,innerHTML:a.button},null,8,Ja)):f("",!0),_(Be,{class:"text-icon"})])):(o(),k(Ea,{key:1,class:"icon"}))],8,Wa),c("div",Xa,[_(Ka,{items:a.items},{default:h(()=>[u(a.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ke=m(Za,[["__scopeId","data-v-03537061"]]),Qa={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',x:'X',youtube:'YouTube'},eo=["href","aria-label","innerHTML"],to=$({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=b(()=>typeof e.icon=="object"?e.icon.svg:Qa[e.icon]);return(n,a)=>(o(),l("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,eo))}}),so=m(to,[["__scopeId","data-v-b11e1860"]]),no={class:"VPSocialLinks"},ao=$({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(o(),l("div",no,[(o(!0),l(C,null,B(e.links,({link:n,icon:a,ariaLabel:r})=>(o(),k(so,{key:n,icon:a,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=m(ao,[["__scopeId","data-v-fb69e327"]]),oo={key:0,class:"group translations"},ro={class:"trans-title"},io={key:1,class:"group"},lo={class:"item appearance"},co={class:"label"},uo={class:"appearance-action"},vo={key:2,class:"group"},ho={class:"item social-links"},po=$({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=P(),{localeLinks:n,currentLang:a}=J({correspondingLink:!0}),r=b(()=>n.value.length&&a.value.label||e.value.appearance||t.value.socialLinks);return(d,p)=>r.value?(o(),k(ke,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[i(n).length&&i(a).label?(o(),l("div",oo,[c("p",ro,L(i(a).label),1),(o(!0),l(C,null,B(i(n),v=>(o(),k(ne,{key:v.link,item:v},null,8,["item"]))),128))])):f("",!0),i(e).appearance&&i(e).appearance!=="force-dark"?(o(),l("div",io,[c("div",lo,[c("p",co,L(i(t).darkModeSwitchLabel||"Appearance"),1),c("div",uo,[_(ge)])])])):f("",!0),i(t).socialLinks?(o(),l("div",vo,[c("div",ho,[_(be,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),_o=m(po,[["__scopeId","data-v-94ee9a6a"]]),fo=s=>(E("data-v-42fdac0e"),s=s(),D(),s),mo=["aria-expanded"],go=fo(()=>c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)),$o=[go],ko=$({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(o(),l("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},$o,10,mo))}}),bo=m(ko,[["__scopeId","data-v-42fdac0e"]]),yo=["innerHTML"],Po=$({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,n)=>(o(),k(z,{class:T({VPNavBarMenuLink:!0,active:i(O)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:h(()=>[c("span",{innerHTML:t.item.text},null,8,yo)]),_:1},8,["class","href","target","rel"]))}}),wo=m(Po,[["__scopeId","data-v-1b6c6405"]]),Vo=$({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=P(),n=r=>"link"in r?O(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),a=b(()=>n(e.item));return(r,d)=>(o(),k(ke,{class:T({VPNavBarMenuGroup:!0,active:i(O)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||a.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),Lo=s=>(E("data-v-23284b7d"),s=s(),D(),s),So={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Mo=Lo(()=>c("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Co=$({__name:"VPNavBarMenu",setup(s){const{theme:e}=P();return(t,n)=>i(e).nav?(o(),l("nav",So,[Mo,(o(!0),l(C,null,B(i(e).nav,a=>(o(),l(C,{key:a.text},["link"in a?(o(),k(wo,{key:0,item:a},null,8,["item"])):(o(),k(Vo,{key:1,item:a},null,8,["item"]))],64))),128))])):f("",!0)}}),Io=m(Co,[["__scopeId","data-v-23284b7d"]]);function To(s,e){const{localeIndex:t}=P();function n(a){var S,N;const r=a.split("."),d=s&&typeof s=="object",p=d&&((N=(S=s.locales)==null?void 0:S[t.value])==null?void 0:N.translations)||null,v=d&&s.translations||null;let g=p,w=v,y=e;const I=r.pop();for(const A of r){let V=null;const R=y==null?void 0:y[A];R&&(V=y=R);const W=w==null?void 0:w[A];W&&(V=w=W);const q=g==null?void 0:g[A];q&&(V=g=q),R||(y=V),W||(w=V),q||(g=V)}return(g==null?void 0:g[I])??(w==null?void 0:w[I])??(y==null?void 0:y[I])??""}return n}const Ao=["aria-label"],No={class:"DocSearch-Button-Container"},Bo=c("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[c("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ho={class:"DocSearch-Button-Placeholder"},zo=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1),we=$({__name:"VPNavBarSearchButton",setup(s){const{theme:e}=P(),t={button:{buttonText:"Search",buttonAriaLabel:"Search"}},n=We(To)(Ye(()=>{var a;return(a=e.value.search)==null?void 0:a.options}),t);return(a,r)=>(o(),l("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(n)("button.buttonAriaLabel")},[c("span",No,[Bo,c("span",Ho,L(i(n)("button.buttonText")),1)]),zo],8,Ao))}}),Eo={class:"VPNavBarSearch"},Do={id:"local-search"},Fo={key:1,id:"docsearch"},xo=$({__name:"VPNavBarSearch",setup(s){const e=Je(()=>Xe(()=>import("./VPLocalSearchBox.BPLfKR6Q.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=P(),a=M(!1),r=M(!1);U(()=>{});function d(){a.value||(a.value=!0,setTimeout(p,16))}function p(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||p()},16)}function v(y){const I=y.target,S=I.tagName;return I.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const g=M(!1);ye("k",y=>{(y.ctrlKey||y.metaKey)&&(y.preventDefault(),g.value=!0)}),ye("/",y=>{v(y)||(y.preventDefault(),g.value=!0)});const w="local";return(y,I)=>{var S;return o(),l("div",Eo,[i(w)==="local"?(o(),l(C,{key:0},[g.value?(o(),k(i(e),{key:0,onClose:I[0]||(I[0]=N=>g.value=!1)})):f("",!0),c("div",Do,[_(we,{onClick:I[1]||(I[1]=N=>g.value=!0)})])],64)):i(w)==="algolia"?(o(),l(C,{key:1},[a.value?(o(),k(i(t),{key:0,algolia:((S=i(n).search)==null?void 0:S.options)??i(n).algolia,onVnodeBeforeMount:I[2]||(I[2]=N=>r.value=!0)},null,8,["algolia"])):f("",!0),r.value?f("",!0):(o(),l("div",Fo,[_(we,{onClick:d})]))],64)):f("",!0)])}}}),Oo=$({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=P();return(t,n)=>i(e).socialLinks?(o(),k(be,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),Uo=m(Oo,[["__scopeId","data-v-10d08ebf"]]),Go=["href"],jo=$({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=P(),{hasSidebar:n}=F(),{currentLang:a}=J();return(r,d)=>(o(),l("div",{class:T(["VPNavBarTitle",{"has-sidebar":i(n)}])},[c("a",{class:"title",href:i(t).logoLink??i(he)(i(a).link)},[u(r.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(o(),k(Q,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):f("",!0),i(t).siteTitle?(o(),l(C,{key:1},[H(L(i(t).siteTitle),1)],64)):i(t).siteTitle===void 0?(o(),l(C,{key:2},[H(L(i(e).title),1)],64)):f("",!0),u(r.$slots,"nav-bar-title-after",{},void 0,!0)],8,Go)],2))}}),Ro=m(jo,[["__scopeId","data-v-70340761"]]),qo={},Ko={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Wo=c("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Yo=c("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),Jo=[Wo,Yo];function Xo(s,e){return o(),l("svg",Ko,Jo)}const He=m(qo,[["render",Xo]]),Zo={class:"items"},Qo={class:"title"},er=$({__name:"VPNavBarTranslations",setup(s){const{theme:e}=P(),{localeLinks:t,currentLang:n}=J({correspondingLink:!0});return(a,r)=>i(t).length&&i(n).label?(o(),k(ke,{key:0,class:"VPNavBarTranslations",icon:He,label:i(e).langMenuLabel||"Change language"},{default:h(()=>[c("div",Zo,[c("p",Qo,L(i(n).label),1),(o(!0),l(C,null,B(i(t),d=>(o(),k(ne,{key:d.link,item:d},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),tr=m(er,[["__scopeId","data-v-b2580100"]]),sr=s=>(E("data-v-a2ada58b"),s=s(),D(),s),nr={class:"container"},ar={class:"title"},or={class:"content"},rr=sr(()=>c("div",{class:"curtain"},null,-1)),ir={class:"content-body"},lr=$({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Se(),{hasSidebar:t}=F(),{frontmatter:n}=P(),a=M({});return Ve(()=>{a.value={"has-sidebar":t.value,top:n.value.layout==="home"&&e.value===0}}),(r,d)=>(o(),l("div",{class:T(["VPNavBar",a.value])},[c("div",nr,[c("div",ar,[_(Ro,null,{"nav-bar-title-before":h(()=>[u(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[u(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",or,[rr,c("div",ir,[u(r.$slots,"nav-bar-content-before",{},void 0,!0),_(xo,{class:"search"}),_(Io,{class:"menu"}),_(tr,{class:"translations"}),_(ba,{class:"appearance"}),_(Uo,{class:"social-links"}),_(_o,{class:"extra"}),u(r.$slots,"nav-bar-content-after",{},void 0,!0),_(bo,{class:"hamburger",active:r.isScreenOpen,onClick:d[0]||(d[0]=p=>r.$emit("toggle-screen"))},null,8,["active"])])])])],2))}}),cr=m(lr,[["__scopeId","data-v-a2ada58b"]]),ur={key:0,class:"VPNavScreenAppearance"},dr={class:"text"},vr=$({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=P();return(n,a)=>i(e).appearance&&i(e).appearance!=="force-dark"?(o(),l("div",ur,[c("p",dr,L(i(t).darkModeSwitchLabel||"Appearance"),1),_(ge)])):f("",!0)}}),hr=m(vr,[["__scopeId","data-v-54b3a4f5"]]),pr=$({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=se("close-screen");return(t,n)=>(o(),k(z,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:h(()=>[H(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),_r=m(pr,[["__scopeId","data-v-7fd5cc51"]]),fr={},mr={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},gr=c("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),$r=[gr];function kr(s,e){return o(),l("svg",mr,$r)}const br=m(fr,[["render",kr]]),yr=$({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=se("close-screen");return(t,n)=>(o(),k(z,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:h(()=>[H(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),ze=m(yr,[["__scopeId","data-v-83fe2854"]]),Pr={class:"VPNavScreenMenuGroupSection"},wr={key:0,class:"title"},Vr=$({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(o(),l("div",Pr,[e.text?(o(),l("p",wr,L(e.text),1)):f("",!0),(o(!0),l(C,null,B(e.items,n=>(o(),k(ze,{key:n.text,item:n},null,8,["item"]))),128))]))}}),Lr=m(Vr,[["__scopeId","data-v-ffcb9fe5"]]),Sr=["aria-controls","aria-expanded"],Mr=["innerHTML"],Cr=["id"],Ir={key:1,class:"group"},Tr=$({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=M(!1),n=b(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function a(){t.value=!t.value}return(r,d)=>(o(),l("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:a},[c("span",{class:"button-text",innerHTML:r.text},null,8,Mr),_(br,{class:"button-icon"})],8,Sr),c("div",{id:n.value,class:"items"},[(o(!0),l(C,null,B(r.items,p=>(o(),l(C,{key:p.text},["link"in p?(o(),l("div",{key:p.text,class:"item"},[_(ze,{item:p},null,8,["item"])])):(o(),l("div",Ir,[_(Lr,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,Cr)],2))}}),Ar=m(Tr,[["__scopeId","data-v-a62ea253"]]),Nr={key:0,class:"VPNavScreenMenu"},Br=$({__name:"VPNavScreenMenu",setup(s){const{theme:e}=P();return(t,n)=>i(e).nav?(o(),l("nav",Nr,[(o(!0),l(C,null,B(i(e).nav,a=>(o(),l(C,{key:a.text},["link"in a?(o(),k(_r,{key:0,item:a},null,8,["item"])):(o(),k(Ar,{key:1,text:a.text||"",items:a.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Hr=$({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=P();return(t,n)=>i(e).socialLinks?(o(),k(be,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),zr={class:"list"},Er=$({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),n=M(!1);function a(){n.value=!n.value}return(r,d)=>i(e).length&&i(t).label?(o(),l("div",{key:0,class:T(["VPNavScreenTranslations",{open:n.value}])},[c("button",{class:"title",onClick:a},[_(He,{class:"icon lang"}),H(" "+L(i(t).label)+" ",1),_(Be,{class:"icon chevron"})]),c("ul",zr,[(o(!0),l(C,null,B(i(e),p=>(o(),l("li",{key:p.link,class:"item"},[_(z,{class:"link",href:p.link},{default:h(()=>[H(L(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Dr=m(Er,[["__scopeId","data-v-5a5eacc5"]]),Fr={class:"container"},xr=$({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=M(null),t=Me(K?document.body:null);return(n,a)=>(o(),k(ce,{name:"fade",onEnter:a[0]||(a[0]=r=>t.value=!0),onAfterLeave:a[1]||(a[1]=r=>t.value=!1)},{default:h(()=>[n.open?(o(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",Fr,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),_(Br,{class:"menu"}),_(Dr,{class:"translations"}),_(hr,{class:"appearance"}),_(Hr,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Or=m(xr,[["__scopeId","data-v-ddba4ed2"]]),Ur={key:0,class:"VPNav"},Gr=$({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Qn(),{frontmatter:a}=P(),r=b(()=>a.value.navbar!==!1);return Ce("close-screen",t),ee(()=>{K&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(d,p)=>r.value?(o(),l("header",Ur,[_(cr,{"is-screen-open":i(e),onToggleScreen:i(n)},{"nav-bar-title-before":h(()=>[u(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[u(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[u(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[u(d.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),_(Or,{open:i(e)},{"nav-screen-content-before":h(()=>[u(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[u(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),jr=m(Gr,[["__scopeId","data-v-833d0cd0"]]),Rr=s=>(E("data-v-9864418a"),s=s(),D(),s),qr=["role","tabindex"],Kr=Rr(()=>c("div",{class:"indicator"},null,-1)),Wr={key:1,class:"items"},Yr=$({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:a,isActiveLink:r,hasActiveLink:d,hasChildren:p,toggle:v}=yt(b(()=>e.item)),g=b(()=>p.value?"section":"div"),w=b(()=>a.value?"a":"div"),y=b(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),I=b(()=>a.value?void 0:"button"),S=b(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":a.value},{"is-active":r.value},{"has-active":d.value}]);function N(V){"key"in V&&V.key!=="Enter"||!e.item.link&&v()}function A(){e.item.link&&v()}return(V,R)=>{const W=j("VPSidebarItem",!0);return o(),k(x(g.value),{class:T(["VPSidebarItem",S.value])},{default:h(()=>[V.item.text?(o(),l("div",X({key:0,class:"item",role:I.value},Ze(V.item.items?{click:N,keydown:N}:{},!0),{tabindex:V.item.items&&0}),[Kr,V.item.link?(o(),k(z,{key:0,tag:w.value,class:"link",href:V.item.link,rel:V.item.rel,target:V.item.target},{default:h(()=>[(o(),k(x(y.value),{class:"text",innerHTML:V.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),k(x(y.value),{key:1,class:"text",innerHTML:V.item.text},null,8,["innerHTML"])),V.item.collapsed!=null?(o(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:A,onKeydown:Qe(A,["enter"]),tabindex:"0"},[_(me,{class:"caret-icon"})],32)):f("",!0)],16,qr)):f("",!0),V.item.items&&V.item.items.length?(o(),l("div",Wr,[V.depth<5?(o(!0),l(C,{key:0},B(V.item.items,q=>(o(),k(W,{key:q.text,item:q,depth:V.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),Jr=m(Yr,[["__scopeId","data-v-9864418a"]]),Ee=s=>(E("data-v-66d1b838"),s=s(),D(),s),Xr=Ee(()=>c("div",{class:"curtain"},null,-1)),Zr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Qr=Ee(()=>c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),ei=$({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=F(),n=s,a=M(null),r=Me(K?document.body:null);return G([n,a],()=>{var d;n.open?(r.value=!0,(d=a.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"}),(d,p)=>i(t)?(o(),l("aside",{key:0,class:T(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:a,onClick:p[0]||(p[0]=et(()=>{},["stop"]))},[Xr,c("nav",Zr,[Qr,u(d.$slots,"sidebar-nav-before",{},void 0,!0),(o(!0),l(C,null,B(i(e),v=>(o(),l("div",{key:v.text,class:"group"},[_(Jr,{item:v,depth:0},null,8,["item"])]))),128)),u(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),ti=m(ei,[["__scopeId","data-v-66d1b838"]]),si=$({__name:"VPSkipLink",setup(s){const e=te(),t=M();G(()=>e.path,()=>t.value.focus());function n({target:a}){const r=document.getElementById(decodeURIComponent(a.hash).slice(1));if(r){const d=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",d)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",d),r.focus(),window.scrollTo(0,0)}}return(a,r)=>(o(),l(C,null,[c("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),ni=m(si,[["__scopeId","data-v-dffd0917"]]),ai=$({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=F(),a=te();G(()=>a.path,n),bt(e,n);const{frontmatter:r}=P(),d=tt(),p=b(()=>!!d["home-hero-image"]);return Ce("hero-image-slot-exists",p),(v,g)=>{const w=j("Content");return i(r).layout!==!1?(o(),l("div",{key:0,class:T(["Layout",i(r).pageClass])},[u(v.$slots,"layout-top",{},void 0,!0),_(ni),_(rt,{class:"backdrop",show:i(e),onClick:i(n)},null,8,["show","onClick"]),_(jr,null,{"nav-bar-title-before":h(()=>[u(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[u(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[u(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[u(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[u(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[u(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),_(Zn,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),_(ti,{open:i(e)},{"sidebar-nav-before":h(()=>[u(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[u(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),_(In,null,{"page-top":h(()=>[u(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[u(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[u(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[u(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":h(()=>[u(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":h(()=>[u(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[u(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[u(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[u(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[u(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[u(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[u(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[u(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[u(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[u(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[u(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[u(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[u(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[u(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[u(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),_(Hn),u(v.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),k(w,{key:1}))}}}),oi=m(ai,[["__scopeId","data-v-a399be01"]]),li={Layout:oi,enhanceApp:({app:s})=>{s.component("Badge",nt)}};class ci{constructor(e=10){ae(this,"max");ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}export{ci as L,To as c,li as t,P as u}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/chunks/VPLocalSearchBox.BPLfKR6Q.js","assets/chunks/framework.BtL3uYYi.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} \ No newline at end of file diff --git a/pr-preview/pr-449/assets/demos_DragDrop.md.12E-B_I3.js b/pr-preview/pr-449/assets/demos_DragDrop.md.12E-B_I3.js new file mode 100644 index 00000000..d3acecba --- /dev/null +++ b/pr-preview/pr-449/assets/demos_DragDrop.md.12E-B_I3.js @@ -0,0 +1,86 @@ +import{p as B,a as m,_ as f}from"./chunks/camera.BJQyjlnn.js";import{d as F,o as r,c as E,r as v,a2 as e,_ as A,D as C,k as t,a as d,t as c,e as _,I as y,w as D,n as q,R as b}from"./chunks/framework.BtL3uYYi.js";const O=F({__name:"QrcodeDropZone",props:{formats:{type:Array,default:()=>["qr_code"]}},emits:["detect","dragover","error"],setup(s,{emit:h}){const g=s,p=h,n=async a=>{try{const i=await a;p("detect",i)}catch(i){p("error",i)}},l=a=>{p("dragover",a)},o=({dataTransfer:a})=>{if(!a)return;l(!1);const i=[...Array.from(a.files)],k=a.getData("text/uri-list");i.forEach(u=>{n(B(u))}),k!==""&&n(m(k,g.formats))};return(a,i)=>(r(),E("div",{onDrop:e(o,["prevent","stop"]),onDragenter:i[0]||(i[0]=e(k=>l(!0),["prevent","stop"])),onDragleave:i[1]||(i[1]=e(k=>l(!1),["prevent","stop"])),onDragover:i[2]||(i[2]=e(()=>{},["prevent","stop"]))},[v(a.$slots,"default")],32))}}),S={components:{QrcodeDropZone:O},data(){return{result:null,error:null,dragover:!1}},methods:{onDetect(s){console.log(s),this.result=JSON.stringify(s.map(h=>h.rawValue))},logErrors(s){s.name==="DropImageFetchError"?this.error="Sorry, you can't load cross-origin images :/":s.name==="DropImageDecodeError"?this.error="Ok, that's not an image. That can't be decoded.":this.error="Ups, what kind of error is this?! "+s.message},onDragOver(s){this.dragover=s}}},x={class:"decode-result"},w={key:0,class:"drop-error"};function N(s,h,g,p,n,l){const o=C("qrcode-drop-zone");return r(),E("div",null,[t("p",x,[d(" Last result: "),t("b",null,c(n.result),1)]),n.error!==null?(r(),E("p",w,c(n.error),1)):_("",!0),y(o,{onDetect:l.onDetect,onDragover:l.onDragOver,onError:l.logErrors},{default:D(()=>[t("div",{class:q(["drop-area",{dragover:n.dragover}])}," DROP SOME IMAGES HERE ",2)]),_:1},8,["onDetect","onDragover","onError"])])}const I=A(S,[["render",N]]),V=t("h1",{id:"decode-by-drag-drop",tabindex:"-1"},[d("Decode by Drag&Drop "),t("a",{class:"header-anchor",href:"#decode-by-drag-drop","aria-label":'Permalink to "Decode by Drag&Drop"'},"​")],-1),P=t("p",null,[d("With the "),t("code",null,"QrcodeDropZone"),d(" component you can also drag-and-drop images that should be scanned. Use it as a standalone feature or as a fallback for desktop users.")],-1),U=b(`

Source

vue
<template>
+  <div>
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <p
+      v-if="error !== null"
+      class="drop-error"
+    >
+      {{ error }}
+    </p>
+
+    <qrcode-drop-zone
+      @detect="onDetect"
+      @dragover="onDragOver"
+      @error="logErrors"
+    >
+      <div
+        class="drop-area"
+        :class="{ dragover: dragover }"
+      >
+        DROP SOME IMAGES HERE
+      </div>
+    </qrcode-drop-zone>
+  </div>
+</template>
+
+<script>
+import { QrcodeDropZone } from '../../../../src'
+
+export default {
+  components: { QrcodeDropZone },
+
+  data() {
+    return {
+      result: null,
+      error: null,
+      dragover: false
+    }
+  },
+
+  methods: {
+    onDetect(detectedCodes) {
+      console.log(detectedCodes)
+
+      this.result = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+    },
+
+    logErrors(error) {
+      if (error.name === 'DropImageFetchError') {
+        this.error = "Sorry, you can't load cross-origin images :/"
+      } else if (error.name === 'DropImageDecodeError') {
+        this.error = "Ok, that's not an image. That can't be decoded."
+      } else {
+        this.error = 'Ups, what kind of error is this?! ' + error.message
+      }
+    },
+
+    onDragOver(isDraggingOver) {
+      this.dragover = isDraggingOver
+    }
+  }
+}
+</script>
+
+<style>
+.drop-area {
+  height: 300px;
+  color: #fff;
+  text-align: center;
+  font-weight: bold;
+  padding: 10px;
+
+  background-color: #3c3c43;
+}
+
+.dragover {
+  background-color: #10b981;
+}
+
+.drop-error {
+  color: red;
+  font-weight: bold;
+}
+</style>
`,2),R=JSON.parse('{"title":"Decode by Drag&Drop","description":"","frontmatter":{},"headers":[],"relativePath":"demos/DragDrop.md","filePath":"demos/DragDrop.md","lastUpdated":1621091954000}'),z={name:"demos/DragDrop.md"},Z=F({...z,setup(s){return(h,g)=>{const p=C("ClientOnly");return r(),E("div",null,[V,P,y(p,null,{default:D(()=>[y(f,{component:I})]),_:1}),U])}}});export{R as __pageData,Z as default}; diff --git a/pr-preview/pr-449/assets/demos_DragDrop.md.12E-B_I3.lean.js b/pr-preview/pr-449/assets/demos_DragDrop.md.12E-B_I3.lean.js new file mode 100644 index 00000000..d3acecba --- /dev/null +++ b/pr-preview/pr-449/assets/demos_DragDrop.md.12E-B_I3.lean.js @@ -0,0 +1,86 @@ +import{p as B,a as m,_ as f}from"./chunks/camera.BJQyjlnn.js";import{d as F,o as r,c as E,r as v,a2 as e,_ as A,D as C,k as t,a as d,t as c,e as _,I as y,w as D,n as q,R as b}from"./chunks/framework.BtL3uYYi.js";const O=F({__name:"QrcodeDropZone",props:{formats:{type:Array,default:()=>["qr_code"]}},emits:["detect","dragover","error"],setup(s,{emit:h}){const g=s,p=h,n=async a=>{try{const i=await a;p("detect",i)}catch(i){p("error",i)}},l=a=>{p("dragover",a)},o=({dataTransfer:a})=>{if(!a)return;l(!1);const i=[...Array.from(a.files)],k=a.getData("text/uri-list");i.forEach(u=>{n(B(u))}),k!==""&&n(m(k,g.formats))};return(a,i)=>(r(),E("div",{onDrop:e(o,["prevent","stop"]),onDragenter:i[0]||(i[0]=e(k=>l(!0),["prevent","stop"])),onDragleave:i[1]||(i[1]=e(k=>l(!1),["prevent","stop"])),onDragover:i[2]||(i[2]=e(()=>{},["prevent","stop"]))},[v(a.$slots,"default")],32))}}),S={components:{QrcodeDropZone:O},data(){return{result:null,error:null,dragover:!1}},methods:{onDetect(s){console.log(s),this.result=JSON.stringify(s.map(h=>h.rawValue))},logErrors(s){s.name==="DropImageFetchError"?this.error="Sorry, you can't load cross-origin images :/":s.name==="DropImageDecodeError"?this.error="Ok, that's not an image. That can't be decoded.":this.error="Ups, what kind of error is this?! "+s.message},onDragOver(s){this.dragover=s}}},x={class:"decode-result"},w={key:0,class:"drop-error"};function N(s,h,g,p,n,l){const o=C("qrcode-drop-zone");return r(),E("div",null,[t("p",x,[d(" Last result: "),t("b",null,c(n.result),1)]),n.error!==null?(r(),E("p",w,c(n.error),1)):_("",!0),y(o,{onDetect:l.onDetect,onDragover:l.onDragOver,onError:l.logErrors},{default:D(()=>[t("div",{class:q(["drop-area",{dragover:n.dragover}])}," DROP SOME IMAGES HERE ",2)]),_:1},8,["onDetect","onDragover","onError"])])}const I=A(S,[["render",N]]),V=t("h1",{id:"decode-by-drag-drop",tabindex:"-1"},[d("Decode by Drag&Drop "),t("a",{class:"header-anchor",href:"#decode-by-drag-drop","aria-label":'Permalink to "Decode by Drag&Drop"'},"​")],-1),P=t("p",null,[d("With the "),t("code",null,"QrcodeDropZone"),d(" component you can also drag-and-drop images that should be scanned. Use it as a standalone feature or as a fallback for desktop users.")],-1),U=b(`

Source

vue
<template>
+  <div>
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <p
+      v-if="error !== null"
+      class="drop-error"
+    >
+      {{ error }}
+    </p>
+
+    <qrcode-drop-zone
+      @detect="onDetect"
+      @dragover="onDragOver"
+      @error="logErrors"
+    >
+      <div
+        class="drop-area"
+        :class="{ dragover: dragover }"
+      >
+        DROP SOME IMAGES HERE
+      </div>
+    </qrcode-drop-zone>
+  </div>
+</template>
+
+<script>
+import { QrcodeDropZone } from '../../../../src'
+
+export default {
+  components: { QrcodeDropZone },
+
+  data() {
+    return {
+      result: null,
+      error: null,
+      dragover: false
+    }
+  },
+
+  methods: {
+    onDetect(detectedCodes) {
+      console.log(detectedCodes)
+
+      this.result = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+    },
+
+    logErrors(error) {
+      if (error.name === 'DropImageFetchError') {
+        this.error = "Sorry, you can't load cross-origin images :/"
+      } else if (error.name === 'DropImageDecodeError') {
+        this.error = "Ok, that's not an image. That can't be decoded."
+      } else {
+        this.error = 'Ups, what kind of error is this?! ' + error.message
+      }
+    },
+
+    onDragOver(isDraggingOver) {
+      this.dragover = isDraggingOver
+    }
+  }
+}
+</script>
+
+<style>
+.drop-area {
+  height: 300px;
+  color: #fff;
+  text-align: center;
+  font-weight: bold;
+  padding: 10px;
+
+  background-color: #3c3c43;
+}
+
+.dragover {
+  background-color: #10b981;
+}
+
+.drop-error {
+  color: red;
+  font-weight: bold;
+}
+</style>
`,2),R=JSON.parse('{"title":"Decode by Drag&Drop","description":"","frontmatter":{},"headers":[],"relativePath":"demos/DragDrop.md","filePath":"demos/DragDrop.md","lastUpdated":1621091954000}'),z={name:"demos/DragDrop.md"},Z=F({...z,setup(s){return(h,g)=>{const p=C("ClientOnly");return r(),E("div",null,[V,P,y(p,null,{default:D(()=>[y(f,{component:I})]),_:1}),U])}}});export{R as __pageData,Z as default}; diff --git a/pr-preview/pr-449/assets/demos_FullDemo.md.EA-azuP_.js b/pr-preview/pr-449/assets/demos_FullDemo.md.EA-azuP_.js new file mode 100644 index 00000000..736c9802 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_FullDemo.md.EA-azuP_.js @@ -0,0 +1,238 @@ +import{_ as I}from"./chunks/camera.BJQyjlnn.js";import{d as _,h as E,g as V,o as t,c as k,k as l,a as c,a4 as u,a5 as x,F as B,E as f,t as o,I as D,m as $,a6 as M,p as R,q as U,_ as H,D as Y,w as z,R as j}from"./chunks/framework.BtL3uYYi.js";import{_ as Q}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";const W=r=>(R("data-v-df3f27d7"),r=r(),U(),r),X=["value"],J=["value"],L=W(()=>l("br",null,null,-1)),G=["onUpdate:modelValue","id"],K=["for"],Z={class:"error"},ss={class:"decode-result"},is=_({__name:"FullDemo",setup(r){const F=E("");function A(a){console.log(a),F.value=JSON.stringify(a.map(i=>i.rawValue))}const d=E({facingMode:"environment"}),m=[{label:"rear camera",constraints:{facingMode:"environment"}},{label:"front camera",constraints:{facingMode:"user"}}],v=E(m);async function q(){const i=(await navigator.mediaDevices.enumerateDevices()).filter(({kind:s})=>s==="videoinput");v.value=[...m,...i.map(({deviceId:s,label:n})=>({label:`${n} (ID: ${s})`,constraints:{deviceId:s}}))],h.value=""}function S(a,i){for(const s of a){const[n,...y]=s.cornerPoints;i.strokeStyle="red",i.beginPath(),i.moveTo(n.x,n.y);for(const{x:p,y:e}of y)i.lineTo(p,e);i.lineTo(n.x,n.y),i.closePath(),i.stroke()}}function w(a,i){for(const s of a){const{boundingBox:{x:n,y,width:p,height:e}}=s;i.lineWidth=2,i.strokeStyle="#007bff",i.strokeRect(n,y,p,e)}}function T(a,i){for(const s of a){const{boundingBox:n,rawValue:y}=s,p=n.x+n.width/2,e=n.y+n.height/2,N=Math.max(12,50*n.width/i.canvas.width);i.font=`bold ${N}px sans-serif`,i.textAlign="center",i.lineWidth=3,i.strokeStyle="#35495e",i.strokeText(s.rawValue,p,e),i.fillStyle="#5cb984",i.fillText(y,p,e)}}const b=[{text:"nothing (default)",value:void 0},{text:"outline",value:S},{text:"centered text",value:T},{text:"bounding box",value:w}],C=E(b[1]),g=E({aztec:!1,code_128:!1,code_39:!1,code_93:!1,codabar:!1,databar:!1,databar_expanded:!1,data_matrix:!1,dx_film_edge:!1,ean_13:!1,ean_8:!1,itf:!1,maxi_code:!1,micro_qr_code:!1,pdf417:!1,qr_code:!0,rm_qr_code:!1,upc_a:!1,upc_e:!1,linear_codes:!1,matrix_codes:!1}),O=V(()=>Object.keys(g.value).filter(a=>g.value[a])),h=E("");function P(a){h.value=`[${a.name}]: `,a.name==="NotAllowedError"?h.value+="you need to grant camera access permission":a.name==="NotFoundError"?h.value+="no camera on this device":a.name==="NotSupportedError"?h.value+="secure context required (HTTPS, localhost)":a.name==="NotReadableError"?h.value+="is the camera already in use?":a.name==="OverconstrainedError"?h.value+="installed cameras are not suitable":a.name==="StreamApiNotSupportedError"?h.value+="Stream API is not supported in this browser":a.name==="InsecureContextError"?h.value+="Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.":h.value+=a.message}return(a,i)=>(t(),k("div",null,[l("p",null,[c(" Modern mobile phones often have a variety of different cameras installed (e.g. front, rear, wide-angle, infrared, desk-view). The one picked by default is sometimes not the best choice. For more fine-grained control, you can select a camera by device constraints or by the device ID: "),u(l("select",{"onUpdate:modelValue":i[0]||(i[0]=s=>d.value=s)},[(t(!0),k(B,null,f(v.value,s=>(t(),k("option",{key:s.label,value:s.constraints},o(s.label),9,X))),128))],512),[[x,d.value]])]),l("p",null,[c(" Detected codes are visually highlighted in real-time. Use the following dropdown to change the flavor: "),u(l("select",{"onUpdate:modelValue":i[1]||(i[1]=s=>C.value=s)},[(t(),k(B,null,f(b,s=>l("option",{key:s.text,value:s},o(s.text),9,J)),64))],512),[[x,C.value]])]),l("p",null,[c(" By default only QR-codes are detected but a variety of other barcode formats are also supported. You can select one or multiple but the more you select the more expensive scanning becomes: "),L,(t(!0),k(B,null,f(Object.keys(g.value),s=>(t(),k("span",{key:s,class:"barcode-format-checkbox"},[u(l("input",{type:"checkbox","onUpdate:modelValue":n=>g.value[s]=n,id:s},null,8,G),[[M,g.value[s]]]),l("label",{for:s},o(s),9,K)]))),128))]),l("p",Z,o(h.value),1),l("p",ss,[c(" Last result: "),l("b",null,o(F.value),1)]),l("div",null,[D($(Q),{constraints:d.value,track:C.value.value,formats:O.value,onError:P,onDetect:A,onCameraOn:q},null,8,["constraints","track","formats"])])]))}}),as=H(is,[["__scopeId","data-v-df3f27d7"]]),ns=l("h1",{id:"full-demo",tabindex:"-1"},[c("Full Demo "),l("a",{class:"header-anchor",href:"#full-demo","aria-label":'Permalink to "Full Demo"'},"​")],-1),ls=j(`

Source

vue
<template>
+  <div>
+    <p>
+      Modern mobile phones often have a variety of different cameras installed (e.g. front, rear,
+      wide-angle, infrared, desk-view). The one picked by default is sometimes not the best choice.
+      For more fine-grained control, you can select a camera by device constraints or by the device
+      ID:
+
+      <select v-model="selectedConstraints">
+        <option
+          v-for="option in constraintOptions"
+          :key="option.label"
+          :value="option.constraints"
+        >
+          {{ option.label }}
+        </option>
+      </select>
+    </p>
+
+    <p>
+      Detected codes are visually highlighted in real-time. Use the following dropdown to change the
+      flavor:
+
+      <select v-model="trackFunctionSelected">
+        <option
+          v-for="option in trackFunctionOptions"
+          :key="option.text"
+          :value="option"
+        >
+          {{ option.text }}
+        </option>
+      </select>
+    </p>
+
+    <p>
+      By default only QR-codes are detected but a variety of other barcode formats are also
+      supported. You can select one or multiple but the more you select the more expensive scanning
+      becomes: <br />
+
+      <span
+        v-for="option in Object.keys(barcodeFormats)"
+        :key="option"
+        class="barcode-format-checkbox"
+      >
+        <input
+          type="checkbox"
+          v-model="barcodeFormats[option]"
+          :id="option"
+        />
+        <label :for="option">{{ option }}</label>
+      </span>
+    </p>
+
+    <p class="error">{{ error }}</p>
+
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <div>
+      <qrcode-stream
+        :constraints="selectedConstraints"
+        :track="trackFunctionSelected.value"
+        :formats="selectedBarcodeFormats"
+        @error="onError"
+        @detect="onDetect"
+        @camera-on="onCameraReady"
+      />
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, computed } from 'vue'
+import { QrcodeStream } from '../../../../src'
+
+/*** detection handling ***/
+
+const result = ref('')
+
+function onDetect(detectedCodes) {
+  console.log(detectedCodes)
+  result.value = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+}
+
+/*** select camera ***/
+
+const selectedConstraints = ref({ facingMode: 'environment' })
+const defaultConstraintOptions = [
+  { label: 'rear camera', constraints: { facingMode: 'environment' } },
+  { label: 'front camera', constraints: { facingMode: 'user' } }
+]
+const constraintOptions = ref(defaultConstraintOptions)
+
+async function onCameraReady() {
+  // NOTE: on iOS we can't invoke \`enumerateDevices\` before the user has given
+  // camera access permission. \`QrcodeStream\` internally takes care of
+  // requesting the permissions. The \`camera-on\` event should guarantee that this
+  // has happened.
+  const devices = await navigator.mediaDevices.enumerateDevices()
+  const videoDevices = devices.filter(({ kind }) => kind === 'videoinput')
+
+  constraintOptions.value = [
+    ...defaultConstraintOptions,
+    ...videoDevices.map(({ deviceId, label }) => ({
+      label: \`\${label} (ID: \${deviceId})\`,
+      constraints: { deviceId }
+    }))
+  ]
+
+  error.value = ''
+}
+
+/*** track functons ***/
+
+function paintOutline(detectedCodes, ctx) {
+  for (const detectedCode of detectedCodes) {
+    const [firstPoint, ...otherPoints] = detectedCode.cornerPoints
+
+    ctx.strokeStyle = 'red'
+
+    ctx.beginPath()
+    ctx.moveTo(firstPoint.x, firstPoint.y)
+    for (const { x, y } of otherPoints) {
+      ctx.lineTo(x, y)
+    }
+    ctx.lineTo(firstPoint.x, firstPoint.y)
+    ctx.closePath()
+    ctx.stroke()
+  }
+}
+function paintBoundingBox(detectedCodes, ctx) {
+  for (const detectedCode of detectedCodes) {
+    const {
+      boundingBox: { x, y, width, height }
+    } = detectedCode
+
+    ctx.lineWidth = 2
+    ctx.strokeStyle = '#007bff'
+    ctx.strokeRect(x, y, width, height)
+  }
+}
+function paintCenterText(detectedCodes, ctx) {
+  for (const detectedCode of detectedCodes) {
+    const { boundingBox, rawValue } = detectedCode
+
+    const centerX = boundingBox.x + boundingBox.width / 2
+    const centerY = boundingBox.y + boundingBox.height / 2
+
+    const fontSize = Math.max(12, (50 * boundingBox.width) / ctx.canvas.width)
+
+    ctx.font = \`bold \${fontSize}px sans-serif\`
+    ctx.textAlign = 'center'
+
+    ctx.lineWidth = 3
+    ctx.strokeStyle = '#35495e'
+    ctx.strokeText(detectedCode.rawValue, centerX, centerY)
+
+    ctx.fillStyle = '#5cb984'
+    ctx.fillText(rawValue, centerX, centerY)
+  }
+}
+const trackFunctionOptions = [
+  { text: 'nothing (default)', value: undefined },
+  { text: 'outline', value: paintOutline },
+  { text: 'centered text', value: paintCenterText },
+  { text: 'bounding box', value: paintBoundingBox }
+]
+const trackFunctionSelected = ref(trackFunctionOptions[1])
+
+/*** barcode formats ***/
+
+const barcodeFormats = ref({
+  aztec: false,
+  code_128: false,
+  code_39: false,
+  code_93: false,
+  codabar: false,
+  databar: false,
+  databar_expanded: false,
+  data_matrix: false,
+  dx_film_edge: false,
+  ean_13: false,
+  ean_8: false,
+  itf: false,
+  maxi_code: false,
+  micro_qr_code: false,
+  pdf417: false,
+  qr_code: true,
+  rm_qr_code: false,
+  upc_a: false,
+  upc_e: false,
+  linear_codes: false,
+  matrix_codes: false
+})
+const selectedBarcodeFormats = computed(() => {
+  return Object.keys(barcodeFormats.value).filter((format) => barcodeFormats.value[format])
+})
+
+/*** error handling ***/
+
+const error = ref('')
+
+function onError(err) {
+  error.value = \`[\${err.name}]: \`
+
+  if (err.name === 'NotAllowedError') {
+    error.value += 'you need to grant camera access permission'
+  } else if (err.name === 'NotFoundError') {
+    error.value += 'no camera on this device'
+  } else if (err.name === 'NotSupportedError') {
+    error.value += 'secure context required (HTTPS, localhost)'
+  } else if (err.name === 'NotReadableError') {
+    error.value += 'is the camera already in use?'
+  } else if (err.name === 'OverconstrainedError') {
+    error.value += 'installed cameras are not suitable'
+  } else if (err.name === 'StreamApiNotSupportedError') {
+    error.value += 'Stream API is not supported in this browser'
+  } else if (err.name === 'InsecureContextError') {
+    error.value +=
+      'Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.'
+  } else {
+    error.value += err.message
+  }
+}
+</script>
+
+<style scoped>
+.error {
+  font-weight: bold;
+  color: red;
+}
+.barcode-format-checkbox {
+  margin-right: 10px;
+  white-space: nowrap;
+  display: inline-block;
+}
+</style>
`,2),es=JSON.parse('{"title":"Full Demo","description":"","frontmatter":{},"headers":[],"relativePath":"demos/FullDemo.md","filePath":"demos/FullDemo.md","lastUpdated":1707952687000}'),hs={name:"demos/FullDemo.md"},Es=_({...hs,setup(r){return(F,A)=>{const d=Y("ClientOnly");return t(),k("div",null,[ns,D(d,null,{default:z(()=>[D(I,{component:as})]),_:1}),ls])}}});export{es as __pageData,Es as default}; diff --git a/pr-preview/pr-449/assets/demos_FullDemo.md.EA-azuP_.lean.js b/pr-preview/pr-449/assets/demos_FullDemo.md.EA-azuP_.lean.js new file mode 100644 index 00000000..736c9802 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_FullDemo.md.EA-azuP_.lean.js @@ -0,0 +1,238 @@ +import{_ as I}from"./chunks/camera.BJQyjlnn.js";import{d as _,h as E,g as V,o as t,c as k,k as l,a as c,a4 as u,a5 as x,F as B,E as f,t as o,I as D,m as $,a6 as M,p as R,q as U,_ as H,D as Y,w as z,R as j}from"./chunks/framework.BtL3uYYi.js";import{_ as Q}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";const W=r=>(R("data-v-df3f27d7"),r=r(),U(),r),X=["value"],J=["value"],L=W(()=>l("br",null,null,-1)),G=["onUpdate:modelValue","id"],K=["for"],Z={class:"error"},ss={class:"decode-result"},is=_({__name:"FullDemo",setup(r){const F=E("");function A(a){console.log(a),F.value=JSON.stringify(a.map(i=>i.rawValue))}const d=E({facingMode:"environment"}),m=[{label:"rear camera",constraints:{facingMode:"environment"}},{label:"front camera",constraints:{facingMode:"user"}}],v=E(m);async function q(){const i=(await navigator.mediaDevices.enumerateDevices()).filter(({kind:s})=>s==="videoinput");v.value=[...m,...i.map(({deviceId:s,label:n})=>({label:`${n} (ID: ${s})`,constraints:{deviceId:s}}))],h.value=""}function S(a,i){for(const s of a){const[n,...y]=s.cornerPoints;i.strokeStyle="red",i.beginPath(),i.moveTo(n.x,n.y);for(const{x:p,y:e}of y)i.lineTo(p,e);i.lineTo(n.x,n.y),i.closePath(),i.stroke()}}function w(a,i){for(const s of a){const{boundingBox:{x:n,y,width:p,height:e}}=s;i.lineWidth=2,i.strokeStyle="#007bff",i.strokeRect(n,y,p,e)}}function T(a,i){for(const s of a){const{boundingBox:n,rawValue:y}=s,p=n.x+n.width/2,e=n.y+n.height/2,N=Math.max(12,50*n.width/i.canvas.width);i.font=`bold ${N}px sans-serif`,i.textAlign="center",i.lineWidth=3,i.strokeStyle="#35495e",i.strokeText(s.rawValue,p,e),i.fillStyle="#5cb984",i.fillText(y,p,e)}}const b=[{text:"nothing (default)",value:void 0},{text:"outline",value:S},{text:"centered text",value:T},{text:"bounding box",value:w}],C=E(b[1]),g=E({aztec:!1,code_128:!1,code_39:!1,code_93:!1,codabar:!1,databar:!1,databar_expanded:!1,data_matrix:!1,dx_film_edge:!1,ean_13:!1,ean_8:!1,itf:!1,maxi_code:!1,micro_qr_code:!1,pdf417:!1,qr_code:!0,rm_qr_code:!1,upc_a:!1,upc_e:!1,linear_codes:!1,matrix_codes:!1}),O=V(()=>Object.keys(g.value).filter(a=>g.value[a])),h=E("");function P(a){h.value=`[${a.name}]: `,a.name==="NotAllowedError"?h.value+="you need to grant camera access permission":a.name==="NotFoundError"?h.value+="no camera on this device":a.name==="NotSupportedError"?h.value+="secure context required (HTTPS, localhost)":a.name==="NotReadableError"?h.value+="is the camera already in use?":a.name==="OverconstrainedError"?h.value+="installed cameras are not suitable":a.name==="StreamApiNotSupportedError"?h.value+="Stream API is not supported in this browser":a.name==="InsecureContextError"?h.value+="Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.":h.value+=a.message}return(a,i)=>(t(),k("div",null,[l("p",null,[c(" Modern mobile phones often have a variety of different cameras installed (e.g. front, rear, wide-angle, infrared, desk-view). The one picked by default is sometimes not the best choice. For more fine-grained control, you can select a camera by device constraints or by the device ID: "),u(l("select",{"onUpdate:modelValue":i[0]||(i[0]=s=>d.value=s)},[(t(!0),k(B,null,f(v.value,s=>(t(),k("option",{key:s.label,value:s.constraints},o(s.label),9,X))),128))],512),[[x,d.value]])]),l("p",null,[c(" Detected codes are visually highlighted in real-time. Use the following dropdown to change the flavor: "),u(l("select",{"onUpdate:modelValue":i[1]||(i[1]=s=>C.value=s)},[(t(),k(B,null,f(b,s=>l("option",{key:s.text,value:s},o(s.text),9,J)),64))],512),[[x,C.value]])]),l("p",null,[c(" By default only QR-codes are detected but a variety of other barcode formats are also supported. You can select one or multiple but the more you select the more expensive scanning becomes: "),L,(t(!0),k(B,null,f(Object.keys(g.value),s=>(t(),k("span",{key:s,class:"barcode-format-checkbox"},[u(l("input",{type:"checkbox","onUpdate:modelValue":n=>g.value[s]=n,id:s},null,8,G),[[M,g.value[s]]]),l("label",{for:s},o(s),9,K)]))),128))]),l("p",Z,o(h.value),1),l("p",ss,[c(" Last result: "),l("b",null,o(F.value),1)]),l("div",null,[D($(Q),{constraints:d.value,track:C.value.value,formats:O.value,onError:P,onDetect:A,onCameraOn:q},null,8,["constraints","track","formats"])])]))}}),as=H(is,[["__scopeId","data-v-df3f27d7"]]),ns=l("h1",{id:"full-demo",tabindex:"-1"},[c("Full Demo "),l("a",{class:"header-anchor",href:"#full-demo","aria-label":'Permalink to "Full Demo"'},"​")],-1),ls=j(`

Source

vue
<template>
+  <div>
+    <p>
+      Modern mobile phones often have a variety of different cameras installed (e.g. front, rear,
+      wide-angle, infrared, desk-view). The one picked by default is sometimes not the best choice.
+      For more fine-grained control, you can select a camera by device constraints or by the device
+      ID:
+
+      <select v-model="selectedConstraints">
+        <option
+          v-for="option in constraintOptions"
+          :key="option.label"
+          :value="option.constraints"
+        >
+          {{ option.label }}
+        </option>
+      </select>
+    </p>
+
+    <p>
+      Detected codes are visually highlighted in real-time. Use the following dropdown to change the
+      flavor:
+
+      <select v-model="trackFunctionSelected">
+        <option
+          v-for="option in trackFunctionOptions"
+          :key="option.text"
+          :value="option"
+        >
+          {{ option.text }}
+        </option>
+      </select>
+    </p>
+
+    <p>
+      By default only QR-codes are detected but a variety of other barcode formats are also
+      supported. You can select one or multiple but the more you select the more expensive scanning
+      becomes: <br />
+
+      <span
+        v-for="option in Object.keys(barcodeFormats)"
+        :key="option"
+        class="barcode-format-checkbox"
+      >
+        <input
+          type="checkbox"
+          v-model="barcodeFormats[option]"
+          :id="option"
+        />
+        <label :for="option">{{ option }}</label>
+      </span>
+    </p>
+
+    <p class="error">{{ error }}</p>
+
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <div>
+      <qrcode-stream
+        :constraints="selectedConstraints"
+        :track="trackFunctionSelected.value"
+        :formats="selectedBarcodeFormats"
+        @error="onError"
+        @detect="onDetect"
+        @camera-on="onCameraReady"
+      />
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, computed } from 'vue'
+import { QrcodeStream } from '../../../../src'
+
+/*** detection handling ***/
+
+const result = ref('')
+
+function onDetect(detectedCodes) {
+  console.log(detectedCodes)
+  result.value = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+}
+
+/*** select camera ***/
+
+const selectedConstraints = ref({ facingMode: 'environment' })
+const defaultConstraintOptions = [
+  { label: 'rear camera', constraints: { facingMode: 'environment' } },
+  { label: 'front camera', constraints: { facingMode: 'user' } }
+]
+const constraintOptions = ref(defaultConstraintOptions)
+
+async function onCameraReady() {
+  // NOTE: on iOS we can't invoke \`enumerateDevices\` before the user has given
+  // camera access permission. \`QrcodeStream\` internally takes care of
+  // requesting the permissions. The \`camera-on\` event should guarantee that this
+  // has happened.
+  const devices = await navigator.mediaDevices.enumerateDevices()
+  const videoDevices = devices.filter(({ kind }) => kind === 'videoinput')
+
+  constraintOptions.value = [
+    ...defaultConstraintOptions,
+    ...videoDevices.map(({ deviceId, label }) => ({
+      label: \`\${label} (ID: \${deviceId})\`,
+      constraints: { deviceId }
+    }))
+  ]
+
+  error.value = ''
+}
+
+/*** track functons ***/
+
+function paintOutline(detectedCodes, ctx) {
+  for (const detectedCode of detectedCodes) {
+    const [firstPoint, ...otherPoints] = detectedCode.cornerPoints
+
+    ctx.strokeStyle = 'red'
+
+    ctx.beginPath()
+    ctx.moveTo(firstPoint.x, firstPoint.y)
+    for (const { x, y } of otherPoints) {
+      ctx.lineTo(x, y)
+    }
+    ctx.lineTo(firstPoint.x, firstPoint.y)
+    ctx.closePath()
+    ctx.stroke()
+  }
+}
+function paintBoundingBox(detectedCodes, ctx) {
+  for (const detectedCode of detectedCodes) {
+    const {
+      boundingBox: { x, y, width, height }
+    } = detectedCode
+
+    ctx.lineWidth = 2
+    ctx.strokeStyle = '#007bff'
+    ctx.strokeRect(x, y, width, height)
+  }
+}
+function paintCenterText(detectedCodes, ctx) {
+  for (const detectedCode of detectedCodes) {
+    const { boundingBox, rawValue } = detectedCode
+
+    const centerX = boundingBox.x + boundingBox.width / 2
+    const centerY = boundingBox.y + boundingBox.height / 2
+
+    const fontSize = Math.max(12, (50 * boundingBox.width) / ctx.canvas.width)
+
+    ctx.font = \`bold \${fontSize}px sans-serif\`
+    ctx.textAlign = 'center'
+
+    ctx.lineWidth = 3
+    ctx.strokeStyle = '#35495e'
+    ctx.strokeText(detectedCode.rawValue, centerX, centerY)
+
+    ctx.fillStyle = '#5cb984'
+    ctx.fillText(rawValue, centerX, centerY)
+  }
+}
+const trackFunctionOptions = [
+  { text: 'nothing (default)', value: undefined },
+  { text: 'outline', value: paintOutline },
+  { text: 'centered text', value: paintCenterText },
+  { text: 'bounding box', value: paintBoundingBox }
+]
+const trackFunctionSelected = ref(trackFunctionOptions[1])
+
+/*** barcode formats ***/
+
+const barcodeFormats = ref({
+  aztec: false,
+  code_128: false,
+  code_39: false,
+  code_93: false,
+  codabar: false,
+  databar: false,
+  databar_expanded: false,
+  data_matrix: false,
+  dx_film_edge: false,
+  ean_13: false,
+  ean_8: false,
+  itf: false,
+  maxi_code: false,
+  micro_qr_code: false,
+  pdf417: false,
+  qr_code: true,
+  rm_qr_code: false,
+  upc_a: false,
+  upc_e: false,
+  linear_codes: false,
+  matrix_codes: false
+})
+const selectedBarcodeFormats = computed(() => {
+  return Object.keys(barcodeFormats.value).filter((format) => barcodeFormats.value[format])
+})
+
+/*** error handling ***/
+
+const error = ref('')
+
+function onError(err) {
+  error.value = \`[\${err.name}]: \`
+
+  if (err.name === 'NotAllowedError') {
+    error.value += 'you need to grant camera access permission'
+  } else if (err.name === 'NotFoundError') {
+    error.value += 'no camera on this device'
+  } else if (err.name === 'NotSupportedError') {
+    error.value += 'secure context required (HTTPS, localhost)'
+  } else if (err.name === 'NotReadableError') {
+    error.value += 'is the camera already in use?'
+  } else if (err.name === 'OverconstrainedError') {
+    error.value += 'installed cameras are not suitable'
+  } else if (err.name === 'StreamApiNotSupportedError') {
+    error.value += 'Stream API is not supported in this browser'
+  } else if (err.name === 'InsecureContextError') {
+    error.value +=
+      'Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.'
+  } else {
+    error.value += err.message
+  }
+}
+</script>
+
+<style scoped>
+.error {
+  font-weight: bold;
+  color: red;
+}
+.barcode-format-checkbox {
+  margin-right: 10px;
+  white-space: nowrap;
+  display: inline-block;
+}
+</style>
`,2),es=JSON.parse('{"title":"Full Demo","description":"","frontmatter":{},"headers":[],"relativePath":"demos/FullDemo.md","filePath":"demos/FullDemo.md","lastUpdated":1707952687000}'),hs={name:"demos/FullDemo.md"},Es=_({...hs,setup(r){return(F,A)=>{const d=Y("ClientOnly");return t(),k("div",null,[ns,D(d,null,{default:z(()=>[D(I,{component:as})]),_:1}),ls])}}});export{es as __pageData,Es as default}; diff --git a/pr-preview/pr-449/assets/demos_Fullscreen.md.CMW7y2Ip.js b/pr-preview/pr-449/assets/demos_Fullscreen.md.CMW7y2Ip.js new file mode 100644 index 00000000..81112329 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_Fullscreen.md.CMW7y2Ip.js @@ -0,0 +1,130 @@ +import{_ as y}from"./chunks/camera.BJQyjlnn.js";import{_ as F,f as o,D as t,o as k,c as E,I as e,w as r,k as i,n as u,d as C,a as d,R as m}from"./chunks/framework.BtL3uYYi.js";import{_ as f}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";const B={components:{QrcodeStream:f},data(){return{fullscreen:!1}},computed:{fullscreenIcon(){return this.fullscreen?"/fullscreen-exit.svg":"/fullscreen.svg"}},watch:{fullscreen(s){s?this.requestFullscreen():this.exitFullscreen()}},methods:{onFullscreenChange(s){this.fullscreen=document.fullscreenElement!==null},requestFullscreen(){const s=this.$refs.wrapper;s.requestFullscreen?s.requestFullscreen():s.mozRequestFullScreen?s.mozRequestFullScreen():s.webkitRequestFullscreen?s.webkitRequestFullscreen():s.msRequestFullscreen&&s.msRequestFullscreen()},exitFullscreen(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},logErrors:console.error,withBase:o}},A=["src"];function D(s,a,c,h,l,n){const g=t("qrcode-stream");return k(),E("div",{class:u({fullscreen:l.fullscreen}),ref:"wrapper",onFullscreenchange:a[1]||(a[1]=(...p)=>n.onFullscreenChange&&n.onFullscreenChange(...p))},[e(g,{onError:n.logErrors},{default:r(()=>[i("button",{onClick:a[0]||(a[0]=p=>l.fullscreen=!l.fullscreen),class:"fullscreen-button"},[i("img",{src:n.withBase(n.fullscreenIcon),alt:"toggle fullscreen"},null,8,A)])]),_:1},8,["onError"])],34)}const q=F(B,[["render",D],["__scopeId","data-v-39d64d0c"]]),_=i("h1",{id:"fullscreen",tabindex:"-1"},[d("Fullscreen "),i("a",{class:"header-anchor",href:"#fullscreen","aria-label":'Permalink to "Fullscreen"'},"​")],-1),b=i("p",null,[i("code",null,"QrcodeStream"),d(" always covers the entire space available. Not more, not less. So to go fullscreen, simply put the component in a wrapper element that occupies the entire screen.")],-1),x=m(`

Source

vue
<template>
+  <div
+    :class="{ fullscreen: fullscreen }"
+    ref="wrapper"
+    @fullscreenchange="onFullscreenChange"
+  >
+    <qrcode-stream @error="logErrors">
+      <button
+        @click="fullscreen = !fullscreen"
+        class="fullscreen-button"
+      >
+        <img
+          :src="withBase(fullscreenIcon)"
+          alt="toggle fullscreen"
+        />
+      </button>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { withBase } from 'vitepress'
+
+import { QrcodeStream } from '../../../../src'
+
+// NOTE: calling \`requestFullscreen\` might prompt the user with another
+// permission dialog. You already asked for camera access permission so this is
+// a rather invasive move.
+//
+// Even without calling \`requestFullscreen\` the entire viewport is covered
+// by the camera stream. So consider skipping \`requestFullscreen\` in your
+// implementation.
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      fullscreen: false
+    }
+  },
+
+  computed: {
+    fullscreenIcon() {
+      if (this.fullscreen) {
+        return '/fullscreen-exit.svg'
+      } else {
+        return '/fullscreen.svg'
+      }
+    }
+  },
+
+  watch: {
+    fullscreen(enterFullscreen) {
+      if (enterFullscreen) {
+        this.requestFullscreen()
+      } else {
+        this.exitFullscreen()
+      }
+    }
+  },
+
+  methods: {
+    onFullscreenChange(event) {
+      // This becomes important when the user doesn't use the button to exit
+      // fullscreen but hits ESC on desktop, pushes a physical back button on
+      // mobile etc.
+
+      this.fullscreen = document.fullscreenElement !== null
+    },
+
+    requestFullscreen() {
+      const elem = this.$refs.wrapper
+
+      if (elem.requestFullscreen) {
+        elem.requestFullscreen()
+      } else if (elem.mozRequestFullScreen) {
+        /* Firefox */
+        elem.mozRequestFullScreen()
+      } else if (elem.webkitRequestFullscreen) {
+        /* Chrome, Safari and Opera */
+        elem.webkitRequestFullscreen()
+      } else if (elem.msRequestFullscreen) {
+        /* IE/Edge */
+        elem.msRequestFullscreen()
+      }
+    },
+
+    exitFullscreen() {
+      if (document.exitFullscreen) {
+        document.exitFullscreen()
+      } else if (document.mozCancelFullScreen) {
+        /* Firefox */
+        document.mozCancelFullScreen()
+      } else if (document.webkitExitFullscreen) {
+        /* Chrome, Safari and Opera */
+        document.webkitExitFullscreen()
+      } else if (document.msExitFullscreen) {
+        /* IE/Edge */
+        document.msExitFullscreen()
+      }
+    },
+
+    logErrors: console.error,
+
+    withBase
+  }
+}
+</script>
+
+<style scoped>
+.fullscreen {
+  position: fixed;
+  z-index: 1000;
+  top: 0;
+  bottom: 0;
+  right: 0;
+  left: 0;
+}
+.fullscreen-button {
+  background-color: white;
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  margin: 1rem;
+}
+.fullscreen-button img {
+  width: 2rem;
+}
+</style>
`,2),z=JSON.parse('{"title":"Fullscreen","description":"","frontmatter":{},"headers":[],"relativePath":"demos/Fullscreen.md","filePath":"demos/Fullscreen.md","lastUpdated":1621091954000}'),v={name:"demos/Fullscreen.md"},I=C({...v,setup(s){return(a,c)=>{const h=t("ClientOnly");return k(),E("div",null,[_,b,e(h,null,{default:r(()=>[e(y,{component:q})]),_:1}),x])}}});export{z as __pageData,I as default}; diff --git a/pr-preview/pr-449/assets/demos_Fullscreen.md.CMW7y2Ip.lean.js b/pr-preview/pr-449/assets/demos_Fullscreen.md.CMW7y2Ip.lean.js new file mode 100644 index 00000000..81112329 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_Fullscreen.md.CMW7y2Ip.lean.js @@ -0,0 +1,130 @@ +import{_ as y}from"./chunks/camera.BJQyjlnn.js";import{_ as F,f as o,D as t,o as k,c as E,I as e,w as r,k as i,n as u,d as C,a as d,R as m}from"./chunks/framework.BtL3uYYi.js";import{_ as f}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";const B={components:{QrcodeStream:f},data(){return{fullscreen:!1}},computed:{fullscreenIcon(){return this.fullscreen?"/fullscreen-exit.svg":"/fullscreen.svg"}},watch:{fullscreen(s){s?this.requestFullscreen():this.exitFullscreen()}},methods:{onFullscreenChange(s){this.fullscreen=document.fullscreenElement!==null},requestFullscreen(){const s=this.$refs.wrapper;s.requestFullscreen?s.requestFullscreen():s.mozRequestFullScreen?s.mozRequestFullScreen():s.webkitRequestFullscreen?s.webkitRequestFullscreen():s.msRequestFullscreen&&s.msRequestFullscreen()},exitFullscreen(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},logErrors:console.error,withBase:o}},A=["src"];function D(s,a,c,h,l,n){const g=t("qrcode-stream");return k(),E("div",{class:u({fullscreen:l.fullscreen}),ref:"wrapper",onFullscreenchange:a[1]||(a[1]=(...p)=>n.onFullscreenChange&&n.onFullscreenChange(...p))},[e(g,{onError:n.logErrors},{default:r(()=>[i("button",{onClick:a[0]||(a[0]=p=>l.fullscreen=!l.fullscreen),class:"fullscreen-button"},[i("img",{src:n.withBase(n.fullscreenIcon),alt:"toggle fullscreen"},null,8,A)])]),_:1},8,["onError"])],34)}const q=F(B,[["render",D],["__scopeId","data-v-39d64d0c"]]),_=i("h1",{id:"fullscreen",tabindex:"-1"},[d("Fullscreen "),i("a",{class:"header-anchor",href:"#fullscreen","aria-label":'Permalink to "Fullscreen"'},"​")],-1),b=i("p",null,[i("code",null,"QrcodeStream"),d(" always covers the entire space available. Not more, not less. So to go fullscreen, simply put the component in a wrapper element that occupies the entire screen.")],-1),x=m(`

Source

vue
<template>
+  <div
+    :class="{ fullscreen: fullscreen }"
+    ref="wrapper"
+    @fullscreenchange="onFullscreenChange"
+  >
+    <qrcode-stream @error="logErrors">
+      <button
+        @click="fullscreen = !fullscreen"
+        class="fullscreen-button"
+      >
+        <img
+          :src="withBase(fullscreenIcon)"
+          alt="toggle fullscreen"
+        />
+      </button>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { withBase } from 'vitepress'
+
+import { QrcodeStream } from '../../../../src'
+
+// NOTE: calling \`requestFullscreen\` might prompt the user with another
+// permission dialog. You already asked for camera access permission so this is
+// a rather invasive move.
+//
+// Even without calling \`requestFullscreen\` the entire viewport is covered
+// by the camera stream. So consider skipping \`requestFullscreen\` in your
+// implementation.
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      fullscreen: false
+    }
+  },
+
+  computed: {
+    fullscreenIcon() {
+      if (this.fullscreen) {
+        return '/fullscreen-exit.svg'
+      } else {
+        return '/fullscreen.svg'
+      }
+    }
+  },
+
+  watch: {
+    fullscreen(enterFullscreen) {
+      if (enterFullscreen) {
+        this.requestFullscreen()
+      } else {
+        this.exitFullscreen()
+      }
+    }
+  },
+
+  methods: {
+    onFullscreenChange(event) {
+      // This becomes important when the user doesn't use the button to exit
+      // fullscreen but hits ESC on desktop, pushes a physical back button on
+      // mobile etc.
+
+      this.fullscreen = document.fullscreenElement !== null
+    },
+
+    requestFullscreen() {
+      const elem = this.$refs.wrapper
+
+      if (elem.requestFullscreen) {
+        elem.requestFullscreen()
+      } else if (elem.mozRequestFullScreen) {
+        /* Firefox */
+        elem.mozRequestFullScreen()
+      } else if (elem.webkitRequestFullscreen) {
+        /* Chrome, Safari and Opera */
+        elem.webkitRequestFullscreen()
+      } else if (elem.msRequestFullscreen) {
+        /* IE/Edge */
+        elem.msRequestFullscreen()
+      }
+    },
+
+    exitFullscreen() {
+      if (document.exitFullscreen) {
+        document.exitFullscreen()
+      } else if (document.mozCancelFullScreen) {
+        /* Firefox */
+        document.mozCancelFullScreen()
+      } else if (document.webkitExitFullscreen) {
+        /* Chrome, Safari and Opera */
+        document.webkitExitFullscreen()
+      } else if (document.msExitFullscreen) {
+        /* IE/Edge */
+        document.msExitFullscreen()
+      }
+    },
+
+    logErrors: console.error,
+
+    withBase
+  }
+}
+</script>
+
+<style scoped>
+.fullscreen {
+  position: fixed;
+  z-index: 1000;
+  top: 0;
+  bottom: 0;
+  right: 0;
+  left: 0;
+}
+.fullscreen-button {
+  background-color: white;
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  margin: 1rem;
+}
+.fullscreen-button img {
+  width: 2rem;
+}
+</style>
`,2),z=JSON.parse('{"title":"Fullscreen","description":"","frontmatter":{},"headers":[],"relativePath":"demos/Fullscreen.md","filePath":"demos/Fullscreen.md","lastUpdated":1621091954000}'),v={name:"demos/Fullscreen.md"},I=C({...v,setup(s){return(a,c)=>{const h=t("ClientOnly");return k(),E("div",null,[_,b,e(h,null,{default:r(()=>[e(y,{component:q})]),_:1}),x])}}});export{z as __pageData,I as default}; diff --git a/pr-preview/pr-449/assets/demos_LoadingIndicator.md.BVZFqNj1.js b/pr-preview/pr-449/assets/demos_LoadingIndicator.md.BVZFqNj1.js new file mode 100644 index 00000000..bdde5763 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_LoadingIndicator.md.BVZFqNj1.js @@ -0,0 +1,57 @@ +import{_ as y}from"./chunks/camera.BJQyjlnn.js";import{_ as F}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";import{_ as C,D as E,o as i,c as t,k as s,b as m,w as r,e,d as u,I as k,a as l,R as _}from"./chunks/framework.BtL3uYYi.js";const B={components:{QrcodeStream:F},data(){return{loading:!0,destroyed:!1}},methods:{onCameraOn(){this.loading=!1},async reload(){this.destroyed=!0,await this.$nextTick(),this.destroyed=!1,this.loading=!0}}},f={key:0,class:"loading-indicator"};function D(d,a,o,h,p,n){const g=E("qrcode-stream");return i(),t("div",null,[s("button",{onClick:a[0]||(a[0]=(...c)=>n.reload&&n.reload(...c))},"Destroy And Re-Create Component"),p.destroyed?e("",!0):(i(),m(g,{key:0,onCameraOn:n.onCameraOn},{default:r(()=>[p.loading?(i(),t("div",f," Loading... ")):e("",!0)]),_:1},8,["onCameraOn"]))])}const A=C(B,[["render",D],["__scopeId","data-v-3ae3ffac"]]),v=s("h1",{id:"show-loading-indicator",tabindex:"-1"},[l("Show Loading Indicator "),s("a",{class:"header-anchor",href:"#show-loading-indicator","aria-label":'Permalink to "Show Loading Indicator"'},"​")],-1),b=s("p",null,[l("There is some delay between mounting the component and the camera stream becoming visible. Listen for the "),s("code",null,"camera-on"),l(" event to show a loading indicator.")],-1),q=s("p",null,"Push the button below to force destroy and re-create the component.",-1),w=_(`

Source

vue
<template>
+  <div>
+    <button @click="reload">Destroy And Re-Create Component</button>
+
+    <qrcode-stream
+      @camera-on="onCameraOn"
+      v-if="!destroyed"
+    >
+      <div
+        class="loading-indicator"
+        v-if="loading"
+      >
+        Loading...
+      </div>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      loading: true,
+      destroyed: false
+    }
+  },
+
+  methods: {
+    onCameraOn() {
+      this.loading = false
+    },
+
+    async reload() {
+      this.destroyed = true
+      await this.$nextTick()
+      this.destroyed = false
+      this.loading = true
+    }
+  }
+}
+</script>
+
+<style scoped>
+button {
+  margin-bottom: 20px;
+}
+
+.loading-indicator {
+  font-weight: bold;
+  font-size: 2rem;
+  text-align: center;
+}
+</style>
`,2),O=JSON.parse('{"title":"Show Loading Indicator","description":"","frontmatter":{},"headers":[],"relativePath":"demos/LoadingIndicator.md","filePath":"demos/LoadingIndicator.md","lastUpdated":1688667092000}'),x={name:"demos/LoadingIndicator.md"},N=u({...x,setup(d){return(a,o)=>{const h=E("ClientOnly");return i(),t("div",null,[v,b,q,k(h,null,{default:r(()=>[k(y,{component:A})]),_:1}),w])}}});export{O as __pageData,N as default}; diff --git a/pr-preview/pr-449/assets/demos_LoadingIndicator.md.BVZFqNj1.lean.js b/pr-preview/pr-449/assets/demos_LoadingIndicator.md.BVZFqNj1.lean.js new file mode 100644 index 00000000..bdde5763 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_LoadingIndicator.md.BVZFqNj1.lean.js @@ -0,0 +1,57 @@ +import{_ as y}from"./chunks/camera.BJQyjlnn.js";import{_ as F}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";import{_ as C,D as E,o as i,c as t,k as s,b as m,w as r,e,d as u,I as k,a as l,R as _}from"./chunks/framework.BtL3uYYi.js";const B={components:{QrcodeStream:F},data(){return{loading:!0,destroyed:!1}},methods:{onCameraOn(){this.loading=!1},async reload(){this.destroyed=!0,await this.$nextTick(),this.destroyed=!1,this.loading=!0}}},f={key:0,class:"loading-indicator"};function D(d,a,o,h,p,n){const g=E("qrcode-stream");return i(),t("div",null,[s("button",{onClick:a[0]||(a[0]=(...c)=>n.reload&&n.reload(...c))},"Destroy And Re-Create Component"),p.destroyed?e("",!0):(i(),m(g,{key:0,onCameraOn:n.onCameraOn},{default:r(()=>[p.loading?(i(),t("div",f," Loading... ")):e("",!0)]),_:1},8,["onCameraOn"]))])}const A=C(B,[["render",D],["__scopeId","data-v-3ae3ffac"]]),v=s("h1",{id:"show-loading-indicator",tabindex:"-1"},[l("Show Loading Indicator "),s("a",{class:"header-anchor",href:"#show-loading-indicator","aria-label":'Permalink to "Show Loading Indicator"'},"​")],-1),b=s("p",null,[l("There is some delay between mounting the component and the camera stream becoming visible. Listen for the "),s("code",null,"camera-on"),l(" event to show a loading indicator.")],-1),q=s("p",null,"Push the button below to force destroy and re-create the component.",-1),w=_(`

Source

vue
<template>
+  <div>
+    <button @click="reload">Destroy And Re-Create Component</button>
+
+    <qrcode-stream
+      @camera-on="onCameraOn"
+      v-if="!destroyed"
+    >
+      <div
+        class="loading-indicator"
+        v-if="loading"
+      >
+        Loading...
+      </div>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      loading: true,
+      destroyed: false
+    }
+  },
+
+  methods: {
+    onCameraOn() {
+      this.loading = false
+    },
+
+    async reload() {
+      this.destroyed = true
+      await this.$nextTick()
+      this.destroyed = false
+      this.loading = true
+    }
+  }
+}
+</script>
+
+<style scoped>
+button {
+  margin-bottom: 20px;
+}
+
+.loading-indicator {
+  font-weight: bold;
+  font-size: 2rem;
+  text-align: center;
+}
+</style>
`,2),O=JSON.parse('{"title":"Show Loading Indicator","description":"","frontmatter":{},"headers":[],"relativePath":"demos/LoadingIndicator.md","filePath":"demos/LoadingIndicator.md","lastUpdated":1688667092000}'),x={name:"demos/LoadingIndicator.md"},N=u({...x,setup(d){return(a,o)=>{const h=E("ClientOnly");return i(),t("div",null,[v,b,q,k(h,null,{default:r(()=>[k(y,{component:A})]),_:1}),w])}}});export{O as __pageData,N as default}; diff --git a/pr-preview/pr-449/assets/demos_ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.js b/pr-preview/pr-449/assets/demos_ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.js new file mode 100644 index 00000000..2edec72f --- /dev/null +++ b/pr-preview/pr-449/assets/demos_ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.js @@ -0,0 +1,86 @@ +import{_ as o}from"./chunks/camera.BJQyjlnn.js";import{_ as c,f as y,D as p,o as e,c as E,k as s,a as i,t as F,I as l,w as r,a4 as C,a7 as m,d as u,R as B}from"./chunks/framework.BtL3uYYi.js";import{_ as f}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";const _={components:{QrcodeStream:f},data(){return{paused:!1,result:"",showScanConfirmation:!1}},methods:{onCameraOn(){this.showScanConfirmation=!1},onCameraOff(){this.showScanConfirmation=!0},onError:console.error,async onDetect(a){this.result=JSON.stringify(a.map(n=>n.rawValue)),this.paused=!0,await this.timeout(500),this.paused=!1},timeout(a){return new Promise(n=>{window.setTimeout(n,a)})},withBase:y}},D={class:"decode-result"},w={class:"scan-confirmation"},A=["src"];function S(a,n,d,k,t,h){const g=p("qrcode-stream");return e(),E("div",null,[s("p",D,[i(" Last result: "),s("b",null,F(t.result),1)]),l(g,{paused:t.paused,onDetect:h.onDetect,onCameraOn:h.onCameraOn,onCameraOff:h.onCameraOff,onError:h.onError},{default:r(()=>[C(s("div",w,[s("img",{src:h.withBase("/checkmark.svg"),alt:"Checkmark",width:"128"},null,8,A)],512),[[m,t.showScanConfirmation]])]),_:1},8,["paused","onDetect","onCameraOn","onCameraOff","onError"])])}const q=c(_,[["render",S],["__scopeId","data-v-2c48d920"]]),v=s("h1",{id:"scan-same-qr-code-more-than-once",tabindex:"-1"},[i("Scan Same QR Code More Than Once "),s("a",{class:"header-anchor",href:"#scan-same-qr-code-more-than-once","aria-label":'Permalink to "Scan Same QR Code More Than Once"'},"​")],-1),O=s("p",null,[i("You might have noticed that scanning the same QR code again doesn't work. The thing is when a QR code is in the view of your the camera it's decoded multiple times a second. You don't want to be flooded with "),s("code",null,"detect"),i(` events that often though. That's why the last decoded QR code is "cached" and an event is only emitted, when the decoded content changes.`)],-1),b=s("p",null,[i("However this cache is reset when you change the "),s("code",null,"paused"),i(" prop. We can exploit that to scan same QR codes multiple times in a row.")],-1),Q=B(`

Source

vue
<template>
+  <div>
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <qrcode-stream
+      :paused="paused"
+      @detect="onDetect"
+      @camera-on="onCameraOn"
+      @camera-off="onCameraOff"
+      @error="onError"
+    >
+      <div
+        v-show="showScanConfirmation"
+        class="scan-confirmation"
+      >
+        <img
+          :src="withBase('/checkmark.svg')"
+          alt="Checkmark"
+          width="128"
+        />
+      </div>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { withBase } from 'vitepress'
+
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      paused: false,
+      result: '',
+      showScanConfirmation: false
+    }
+  },
+
+  methods: {
+    onCameraOn() {
+      this.showScanConfirmation = false
+    },
+
+    onCameraOff() {
+      this.showScanConfirmation = true
+    },
+
+    onError: console.error,
+
+    async onDetect(detectedCodes) {
+      this.result = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+
+      this.paused = true
+      await this.timeout(500)
+      this.paused = false
+    },
+
+    timeout(ms) {
+      return new Promise((resolve) => {
+        window.setTimeout(resolve, ms)
+      })
+    },
+
+    withBase
+  }
+}
+</script>
+
+<style scoped>
+.scan-confirmation {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+
+  background-color: rgba(255, 255, 255, 0.8);
+
+  display: flex;
+  flex-flow: row nowrap;
+  justify-content: center;
+}
+</style>
`,2),N=JSON.parse('{"title":"Scan Same QR Code More Than Once","description":"","frontmatter":{},"headers":[],"relativePath":"demos/ScanSameQrcodeMoreThanOnce.md","filePath":"demos/ScanSameQrcodeMoreThanOnce.md","lastUpdated":1688836566000}'),x={name:"demos/ScanSameQrcodeMoreThanOnce.md"},P=u({...x,setup(a){return(n,d)=>{const k=p("ClientOnly");return e(),E("div",null,[v,O,b,l(k,null,{default:r(()=>[l(o,{component:q})]),_:1}),Q])}}});export{N as __pageData,P as default}; diff --git a/pr-preview/pr-449/assets/demos_ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.lean.js b/pr-preview/pr-449/assets/demos_ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.lean.js new file mode 100644 index 00000000..2edec72f --- /dev/null +++ b/pr-preview/pr-449/assets/demos_ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.lean.js @@ -0,0 +1,86 @@ +import{_ as o}from"./chunks/camera.BJQyjlnn.js";import{_ as c,f as y,D as p,o as e,c as E,k as s,a as i,t as F,I as l,w as r,a4 as C,a7 as m,d as u,R as B}from"./chunks/framework.BtL3uYYi.js";import{_ as f}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";const _={components:{QrcodeStream:f},data(){return{paused:!1,result:"",showScanConfirmation:!1}},methods:{onCameraOn(){this.showScanConfirmation=!1},onCameraOff(){this.showScanConfirmation=!0},onError:console.error,async onDetect(a){this.result=JSON.stringify(a.map(n=>n.rawValue)),this.paused=!0,await this.timeout(500),this.paused=!1},timeout(a){return new Promise(n=>{window.setTimeout(n,a)})},withBase:y}},D={class:"decode-result"},w={class:"scan-confirmation"},A=["src"];function S(a,n,d,k,t,h){const g=p("qrcode-stream");return e(),E("div",null,[s("p",D,[i(" Last result: "),s("b",null,F(t.result),1)]),l(g,{paused:t.paused,onDetect:h.onDetect,onCameraOn:h.onCameraOn,onCameraOff:h.onCameraOff,onError:h.onError},{default:r(()=>[C(s("div",w,[s("img",{src:h.withBase("/checkmark.svg"),alt:"Checkmark",width:"128"},null,8,A)],512),[[m,t.showScanConfirmation]])]),_:1},8,["paused","onDetect","onCameraOn","onCameraOff","onError"])])}const q=c(_,[["render",S],["__scopeId","data-v-2c48d920"]]),v=s("h1",{id:"scan-same-qr-code-more-than-once",tabindex:"-1"},[i("Scan Same QR Code More Than Once "),s("a",{class:"header-anchor",href:"#scan-same-qr-code-more-than-once","aria-label":'Permalink to "Scan Same QR Code More Than Once"'},"​")],-1),O=s("p",null,[i("You might have noticed that scanning the same QR code again doesn't work. The thing is when a QR code is in the view of your the camera it's decoded multiple times a second. You don't want to be flooded with "),s("code",null,"detect"),i(` events that often though. That's why the last decoded QR code is "cached" and an event is only emitted, when the decoded content changes.`)],-1),b=s("p",null,[i("However this cache is reset when you change the "),s("code",null,"paused"),i(" prop. We can exploit that to scan same QR codes multiple times in a row.")],-1),Q=B(`

Source

vue
<template>
+  <div>
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <qrcode-stream
+      :paused="paused"
+      @detect="onDetect"
+      @camera-on="onCameraOn"
+      @camera-off="onCameraOff"
+      @error="onError"
+    >
+      <div
+        v-show="showScanConfirmation"
+        class="scan-confirmation"
+      >
+        <img
+          :src="withBase('/checkmark.svg')"
+          alt="Checkmark"
+          width="128"
+        />
+      </div>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { withBase } from 'vitepress'
+
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      paused: false,
+      result: '',
+      showScanConfirmation: false
+    }
+  },
+
+  methods: {
+    onCameraOn() {
+      this.showScanConfirmation = false
+    },
+
+    onCameraOff() {
+      this.showScanConfirmation = true
+    },
+
+    onError: console.error,
+
+    async onDetect(detectedCodes) {
+      this.result = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+
+      this.paused = true
+      await this.timeout(500)
+      this.paused = false
+    },
+
+    timeout(ms) {
+      return new Promise((resolve) => {
+        window.setTimeout(resolve, ms)
+      })
+    },
+
+    withBase
+  }
+}
+</script>
+
+<style scoped>
+.scan-confirmation {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+
+  background-color: rgba(255, 255, 255, 0.8);
+
+  display: flex;
+  flex-flow: row nowrap;
+  justify-content: center;
+}
+</style>
`,2),N=JSON.parse('{"title":"Scan Same QR Code More Than Once","description":"","frontmatter":{},"headers":[],"relativePath":"demos/ScanSameQrcodeMoreThanOnce.md","filePath":"demos/ScanSameQrcodeMoreThanOnce.md","lastUpdated":1688836566000}'),x={name:"demos/ScanSameQrcodeMoreThanOnce.md"},P=u({...x,setup(a){return(n,d)=>{const k=p("ClientOnly");return e(),E("div",null,[v,O,b,l(k,null,{default:r(()=>[l(o,{component:q})]),_:1}),Q])}}});export{N as __pageData,P as default}; diff --git a/pr-preview/pr-449/assets/demos_Simple.md.CWiqK3J_.js b/pr-preview/pr-449/assets/demos_Simple.md.CWiqK3J_.js new file mode 100644 index 00000000..d00c5935 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_Simple.md.CWiqK3J_.js @@ -0,0 +1,79 @@ +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.BtL3uYYi.js";const F=JSON.parse('{"title":"Simple","description":"","frontmatter":{},"headers":[],"relativePath":"demos/Simple.md","filePath":"demos/Simple.md","lastUpdated":1692216176000}'),h={name:"demos/Simple.md"},k=n(`

Simple

All other demos on this page utilize single-file components. To use them in your project you need a bundler like vite. For an example that works without a build step and right in the browser:

SEE THIS DEMO

Source

html
<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>Simple Demo</title>
+
+  <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
+  <script src="https://unpkg.com/vue-qrcode-reader@5/dist/vue-qrcode-reader.umd.js"></script>
+</head>
+<body>
+	<div id="app">
+    <h1>Simple Demo</h1>
+
+    <p style="color: red">{{ error }}</p>
+
+    <p>Last result: <b>{{ result }}</b></p>
+
+    <div style="border: 2px solid black">
+  		<qrcode-stream :track="paintBoundingBox" @detect="onDetect" @error="onError"></qrcode-stream>
+    </div>
+	</div>
+</body>
+<script>
+  const { createApp, ref } = Vue
+
+  const result = ref('')
+  const error = ref('')
+
+  function paintBoundingBox(detectedCodes, ctx) {
+    for (const detectedCode of detectedCodes) {
+      const {
+        boundingBox: { x, y, width, height }
+      } = detectedCode
+
+      ctx.lineWidth = 2
+      ctx.strokeStyle = '#007bff'
+      ctx.strokeRect(x, y, width, height)
+    }
+  }
+
+  function onError(err) {
+    error.value = \`[\${err.name}]: \`
+
+    if (err.name === 'NotAllowedError') {
+      error.value += 'you need to grant camera access permission'
+    } else if (err.name === 'NotFoundError') {
+      error.value += 'no camera on this device'
+    } else if (err.name === 'NotSupportedError') {
+      error.value += 'secure context required (HTTPS, localhost)'
+    } else if (err.name === 'NotReadableError') {
+      error.value += 'is the camera already in use?'
+    } else if (err.name === 'OverconstrainedError') {
+      error.value += 'installed cameras are not suitable'
+    } else if (err.name === 'StreamApiNotSupportedError') {
+      error.value += 'Stream API is not supported in this browser'
+    } else if (err.name === 'InsecureContextError') {
+      error.value += 'Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.'
+    } else {
+      error.value += err.message
+    }
+  }
+
+  function onDetect(detectedCodes) {
+    result.value = JSON.stringify(
+      detectedCodes.map(code => code.rawValue)
+    )
+  }
+
+  const app = createApp({
+    setup() {
+      return { result, error, onDetect, onError, paintBoundingBox }
+    }
+  })
+  app.use(VueQrcodeReader)
+  app.mount('#app')
+</script>
+</html>
`,5),l=[k];function t(p,e,E,r,d,g){return a(),i("div",null,l)}const o=s(h,[["render",t]]);export{F as __pageData,o as default}; diff --git a/pr-preview/pr-449/assets/demos_Simple.md.CWiqK3J_.lean.js b/pr-preview/pr-449/assets/demos_Simple.md.CWiqK3J_.lean.js new file mode 100644 index 00000000..875ca76a --- /dev/null +++ b/pr-preview/pr-449/assets/demos_Simple.md.CWiqK3J_.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.BtL3uYYi.js";const F=JSON.parse('{"title":"Simple","description":"","frontmatter":{},"headers":[],"relativePath":"demos/Simple.md","filePath":"demos/Simple.md","lastUpdated":1692216176000}'),h={name:"demos/Simple.md"},k=n("",5),l=[k];function t(p,e,E,r,d,g){return a(),i("div",null,l)}const o=s(h,[["render",t]]);export{F as __pageData,o as default}; diff --git a/pr-preview/pr-449/assets/demos_SwitchCamera.md.B-obcuEB.js b/pr-preview/pr-449/assets/demos_SwitchCamera.md.B-obcuEB.js new file mode 100644 index 00000000..18b367d0 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_SwitchCamera.md.B-obcuEB.js @@ -0,0 +1,95 @@ +import{_ as c}from"./chunks/camera.BJQyjlnn.js";import{_ as y,f as F,D as E,o as t,c as l,e as r,I as e,w as d,k as a,d as C,a as m,R as u}from"./chunks/framework.BtL3uYYi.js";import{_ as B}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";const f={components:{QrcodeStream:B},data(){return{facingMode:"environment",noRearCamera:!1,noFrontCamera:!1}},methods:{switchCamera(){switch(this.facingMode){case"environment":this.facingMode="user";break;case"user":this.facingMode="environment";break}},onError(n){const s=this.facingMode==="user",p=this.facingMode==="environment",i=n.name==="OverconstrainedError";p&&i&&(this.noRearCamera=!0),s&&i&&(this.noFrontCamera=!0),console.error(n)},withBase:F}},D={key:0,class:"error"},A={key:1,class:"error"},_=["src"];function v(n,s,p,i,k,h){const g=E("qrcode-stream");return t(),l("div",null,[k.noFrontCamera?(t(),l("p",D," You don't seem to have a front camera on your device ")):r("",!0),k.noRearCamera?(t(),l("p",A," You don't seem to have a rear camera on your device ")):r("",!0),e(g,{constraints:{facingMode:k.facingMode},onError:h.onError},{default:d(()=>[a("button",{onClick:s[0]||(s[0]=(...o)=>h.switchCamera&&h.switchCamera(...o))},[a("img",{src:h.withBase("/camera-switch.svg"),alt:"switch camera"},null,8,_)])]),_:1},8,["constraints","onError"])])}const w=y(f,[["render",v],["__scopeId","data-v-6622b1c4"]]),q=a("h1",{id:"switch-to-front-camera",tabindex:"-1"},[m("Switch to Front Camera "),a("a",{class:"header-anchor",href:"#switch-to-front-camera","aria-label":'Permalink to "Switch to Front Camera"'},"​")],-1),b=a("p",null,"You can also allow users to choose the front or rear camera on their device.",-1),M=u(`

Source

vue
<template>
+  <div>
+    <p
+      class="error"
+      v-if="noFrontCamera"
+    >
+      You don't seem to have a front camera on your device
+    </p>
+
+    <p
+      class="error"
+      v-if="noRearCamera"
+    >
+      You don't seem to have a rear camera on your device
+    </p>
+
+    <qrcode-stream
+      :constraints="{ facingMode }"
+      @error="onError"
+    >
+      <button @click="switchCamera">
+        <img
+          :src="withBase('/camera-switch.svg')"
+          alt="switch camera"
+        />
+      </button>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { withBase } from 'vitepress'
+
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      facingMode: 'environment',
+      noRearCamera: false,
+      noFrontCamera: false
+    }
+  },
+
+  methods: {
+    switchCamera() {
+      switch (this.facingMode) {
+        case 'environment':
+          this.facingMode = 'user'
+          break
+        case 'user':
+          this.facingMode = 'environment'
+          break
+      }
+    },
+
+    onError(error) {
+      const triedFrontCamera = this.facingMode === 'user'
+      const triedRearCamera = this.facingMode === 'environment'
+
+      const cameraMissingError = error.name === 'OverconstrainedError'
+
+      if (triedRearCamera && cameraMissingError) {
+        this.noRearCamera = true
+      }
+
+      if (triedFrontCamera && cameraMissingError) {
+        this.noFrontCamera = true
+      }
+
+      console.error(error)
+    },
+
+    withBase
+  }
+}
+</script>
+
+<style scoped>
+button {
+  position: absolute;
+  left: 10px;
+  top: 10px;
+}
+button img {
+  width: 50px;
+  height: 50px;
+}
+.error {
+  color: red;
+  font-weight: bold;
+}
+</style>
`,2),O=JSON.parse('{"title":"Switch to Front Camera","description":"","frontmatter":{},"headers":[],"relativePath":"demos/SwitchCamera.md","filePath":"demos/SwitchCamera.md","lastUpdated":1621091954000}'),S={name:"demos/SwitchCamera.md"},V=C({...S,setup(n){return(s,p)=>{const i=E("ClientOnly");return t(),l("div",null,[q,b,e(i,null,{default:d(()=>[e(c,{component:w})]),_:1}),M])}}});export{O as __pageData,V as default}; diff --git a/pr-preview/pr-449/assets/demos_SwitchCamera.md.B-obcuEB.lean.js b/pr-preview/pr-449/assets/demos_SwitchCamera.md.B-obcuEB.lean.js new file mode 100644 index 00000000..18b367d0 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_SwitchCamera.md.B-obcuEB.lean.js @@ -0,0 +1,95 @@ +import{_ as c}from"./chunks/camera.BJQyjlnn.js";import{_ as y,f as F,D as E,o as t,c as l,e as r,I as e,w as d,k as a,d as C,a as m,R as u}from"./chunks/framework.BtL3uYYi.js";import{_ as B}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";const f={components:{QrcodeStream:B},data(){return{facingMode:"environment",noRearCamera:!1,noFrontCamera:!1}},methods:{switchCamera(){switch(this.facingMode){case"environment":this.facingMode="user";break;case"user":this.facingMode="environment";break}},onError(n){const s=this.facingMode==="user",p=this.facingMode==="environment",i=n.name==="OverconstrainedError";p&&i&&(this.noRearCamera=!0),s&&i&&(this.noFrontCamera=!0),console.error(n)},withBase:F}},D={key:0,class:"error"},A={key:1,class:"error"},_=["src"];function v(n,s,p,i,k,h){const g=E("qrcode-stream");return t(),l("div",null,[k.noFrontCamera?(t(),l("p",D," You don't seem to have a front camera on your device ")):r("",!0),k.noRearCamera?(t(),l("p",A," You don't seem to have a rear camera on your device ")):r("",!0),e(g,{constraints:{facingMode:k.facingMode},onError:h.onError},{default:d(()=>[a("button",{onClick:s[0]||(s[0]=(...o)=>h.switchCamera&&h.switchCamera(...o))},[a("img",{src:h.withBase("/camera-switch.svg"),alt:"switch camera"},null,8,_)])]),_:1},8,["constraints","onError"])])}const w=y(f,[["render",v],["__scopeId","data-v-6622b1c4"]]),q=a("h1",{id:"switch-to-front-camera",tabindex:"-1"},[m("Switch to Front Camera "),a("a",{class:"header-anchor",href:"#switch-to-front-camera","aria-label":'Permalink to "Switch to Front Camera"'},"​")],-1),b=a("p",null,"You can also allow users to choose the front or rear camera on their device.",-1),M=u(`

Source

vue
<template>
+  <div>
+    <p
+      class="error"
+      v-if="noFrontCamera"
+    >
+      You don't seem to have a front camera on your device
+    </p>
+
+    <p
+      class="error"
+      v-if="noRearCamera"
+    >
+      You don't seem to have a rear camera on your device
+    </p>
+
+    <qrcode-stream
+      :constraints="{ facingMode }"
+      @error="onError"
+    >
+      <button @click="switchCamera">
+        <img
+          :src="withBase('/camera-switch.svg')"
+          alt="switch camera"
+        />
+      </button>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { withBase } from 'vitepress'
+
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      facingMode: 'environment',
+      noRearCamera: false,
+      noFrontCamera: false
+    }
+  },
+
+  methods: {
+    switchCamera() {
+      switch (this.facingMode) {
+        case 'environment':
+          this.facingMode = 'user'
+          break
+        case 'user':
+          this.facingMode = 'environment'
+          break
+      }
+    },
+
+    onError(error) {
+      const triedFrontCamera = this.facingMode === 'user'
+      const triedRearCamera = this.facingMode === 'environment'
+
+      const cameraMissingError = error.name === 'OverconstrainedError'
+
+      if (triedRearCamera && cameraMissingError) {
+        this.noRearCamera = true
+      }
+
+      if (triedFrontCamera && cameraMissingError) {
+        this.noFrontCamera = true
+      }
+
+      console.error(error)
+    },
+
+    withBase
+  }
+}
+</script>
+
+<style scoped>
+button {
+  position: absolute;
+  left: 10px;
+  top: 10px;
+}
+button img {
+  width: 50px;
+  height: 50px;
+}
+.error {
+  color: red;
+  font-weight: bold;
+}
+</style>
`,2),O=JSON.parse('{"title":"Switch to Front Camera","description":"","frontmatter":{},"headers":[],"relativePath":"demos/SwitchCamera.md","filePath":"demos/SwitchCamera.md","lastUpdated":1621091954000}'),S={name:"demos/SwitchCamera.md"},V=C({...S,setup(n){return(s,p)=>{const i=E("ClientOnly");return t(),l("div",null,[q,b,e(i,null,{default:d(()=>[e(c,{component:w})]),_:1}),M])}}});export{O as __pageData,V as default}; diff --git a/pr-preview/pr-449/assets/demos_Torch.md.AnpZuZA8.js b/pr-preview/pr-449/assets/demos_Torch.md.AnpZuZA8.js new file mode 100644 index 00000000..351c1129 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_Torch.md.AnpZuZA8.js @@ -0,0 +1,97 @@ +import{_ as B}from"./chunks/camera.BJQyjlnn.js";import{d as c,h as E,j as v,g as A,o as l,c as p,k as s,a as e,a4 as D,a5 as m,F as f,E as _,e as d,a8 as q,t as b,b as w,w as o,m as g,f as x,_ as N,D as S,I as y,R as I}from"./chunks/framework.BtL3uYYi.js";import{_ as T}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";const $=["value"],M={key:0,class:"error"},O=["disabled"],P=["src"],V=c({__name:"Torch",setup(F){const i=E(null),h=E([]);v(async()=>{h.value=(await navigator.mediaDevices.enumerateDevices()).filter(({kind:t})=>t==="videoinput"),h.value.length>0&&(i.value=h.value[0])});const a=E(!1),r=E(!1),u=A(()=>a.value?"/flash-off.svg":"/flash-on.svg");function C(t){console.log(t),r.value=!t.torch}return(t,k)=>(l(),p("div",null,[s("p",null,[e(" Pick camera: "),D(s("select",{"onUpdate:modelValue":k[0]||(k[0]=n=>i.value=n)},[(l(!0),p(f,null,_(h.value,n=>(l(),p("option",{key:n.label,value:n},b(n.label),9,$))),128))],512),[[m,i.value]])]),r.value?(l(),p("p",M," Torch not supported for active camera ")):d("",!0),i.value!==null?q([a.value,i.value.deviceId],()=>(l(),w(g(T),{key:1,torch:a.value,constraints:{deviceId:i.value.deviceId},onError:console.error,onCameraOn:C},{default:o(()=>[s("button",{onClick:k[1]||(k[1]=n=>a.value=!a.value),disabled:r.value},[s("img",{src:g(x)(u.value),alt:"toggle torch"},null,8,P)],8,O)]),_:1},8,["torch","constraints","onError"])),k,2):d("",!0)]))}}),U=N(V,[["__scopeId","data-v-cf37801d"]]),j=s("h1",{id:"torch-flashlight",tabindex:"-1"},[e("Torch (Flashlight) "),s("a",{class:"header-anchor",href:"#torch-flashlight","aria-label":'Permalink to "Torch (Flashlight)"'},"​")],-1),J=s("p",null,[e("In low-light conditions you might want to make use of the cameras flashlight. Using the "),s("code",null,"torch"),e(" prop, you can turn the flashlight on/off. Note that support is inconsistent across devices and browsers and can only be detected after already starting the camera.")],-1),L=s("p",null,[e("Feature sponsored by "),s("a",{href:"https://aeschbacher.ch",target:"_blank",rel:"noreferrer"},"aeschbacher.ch")],-1),Q=I(`

Source

vue
<template>
+  <div>
+    <p>
+      Pick camera:
+      <select v-model="selected">
+        <option
+          v-for="device in devices"
+          :key="device.label"
+          :value="device"
+        >
+          {{ device.label }}
+        </option>
+      </select>
+    </p>
+
+    <p
+      v-if="torchNotSupported"
+      class="error"
+    >
+      Torch not supported for active camera
+    </p>
+
+    <qrcode-stream
+      :torch="torchActive"
+      :constraints="{ deviceId: selected.deviceId }"
+      v-if="selected !== null"
+      @error="console.error"
+      @camera-on="onCameraOn"
+      v-memo="[torchActive, selected.deviceId]"
+    >
+      <button
+        @click="torchActive = !torchActive"
+        :disabled="torchNotSupported"
+      >
+        <img
+          :src="withBase(icon)"
+          alt="toggle torch"
+        />
+      </button>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted, computed } from 'vue'
+import { withBase } from 'vitepress'
+import { QrcodeStream } from '../../../../src'
+
+const selected = ref(null as MediaDeviceInfo | null)
+const devices = ref([] as MediaDeviceInfo[])
+
+onMounted(async () => {
+  devices.value = (await navigator.mediaDevices.enumerateDevices()).filter(
+    ({ kind }) => kind === 'videoinput'
+  )
+
+  if (devices.value.length > 0) {
+    selected.value = devices.value[0]
+  }
+})
+
+const torchActive = ref(false)
+const torchNotSupported = ref(false)
+
+const icon = computed(() => {
+  if (torchActive.value) {
+    return '/flash-off.svg'
+  } else {
+    return '/flash-on.svg'
+  }
+})
+
+function onCameraOn(capabilities) {
+  console.log(capabilities)
+  torchNotSupported.value = !capabilities.torch
+}
+
+function onError(err) {
+  console.error(err)
+}
+</script>
+
+<style scoped>
+button {
+  position: absolute;
+  left: 10px;
+  top: 10px;
+}
+button img {
+  width: 50px;
+  height: 50px;
+}
+.error {
+  color: red;
+  font-weight: bold;
+}
+</style>
`,2),K=JSON.parse('{"title":"Torch (Flashlight)","description":"","frontmatter":{},"headers":[],"relativePath":"demos/Torch.md","filePath":"demos/Torch.md","lastUpdated":1688667092000}'),R={name:"demos/Torch.md"},W=c({...R,setup(F){return(i,h)=>{const a=S("ClientOnly");return l(),p("div",null,[j,J,L,y(a,null,{default:o(()=>[y(B,{component:U})]),_:1}),Q])}}});export{K as __pageData,W as default}; diff --git a/pr-preview/pr-449/assets/demos_Torch.md.AnpZuZA8.lean.js b/pr-preview/pr-449/assets/demos_Torch.md.AnpZuZA8.lean.js new file mode 100644 index 00000000..351c1129 --- /dev/null +++ b/pr-preview/pr-449/assets/demos_Torch.md.AnpZuZA8.lean.js @@ -0,0 +1,97 @@ +import{_ as B}from"./chunks/camera.BJQyjlnn.js";import{d as c,h as E,j as v,g as A,o as l,c as p,k as s,a as e,a4 as D,a5 as m,F as f,E as _,e as d,a8 as q,t as b,b as w,w as o,m as g,f as x,_ as N,D as S,I as y,R as I}from"./chunks/framework.BtL3uYYi.js";import{_ as T}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";const $=["value"],M={key:0,class:"error"},O=["disabled"],P=["src"],V=c({__name:"Torch",setup(F){const i=E(null),h=E([]);v(async()=>{h.value=(await navigator.mediaDevices.enumerateDevices()).filter(({kind:t})=>t==="videoinput"),h.value.length>0&&(i.value=h.value[0])});const a=E(!1),r=E(!1),u=A(()=>a.value?"/flash-off.svg":"/flash-on.svg");function C(t){console.log(t),r.value=!t.torch}return(t,k)=>(l(),p("div",null,[s("p",null,[e(" Pick camera: "),D(s("select",{"onUpdate:modelValue":k[0]||(k[0]=n=>i.value=n)},[(l(!0),p(f,null,_(h.value,n=>(l(),p("option",{key:n.label,value:n},b(n.label),9,$))),128))],512),[[m,i.value]])]),r.value?(l(),p("p",M," Torch not supported for active camera ")):d("",!0),i.value!==null?q([a.value,i.value.deviceId],()=>(l(),w(g(T),{key:1,torch:a.value,constraints:{deviceId:i.value.deviceId},onError:console.error,onCameraOn:C},{default:o(()=>[s("button",{onClick:k[1]||(k[1]=n=>a.value=!a.value),disabled:r.value},[s("img",{src:g(x)(u.value),alt:"toggle torch"},null,8,P)],8,O)]),_:1},8,["torch","constraints","onError"])),k,2):d("",!0)]))}}),U=N(V,[["__scopeId","data-v-cf37801d"]]),j=s("h1",{id:"torch-flashlight",tabindex:"-1"},[e("Torch (Flashlight) "),s("a",{class:"header-anchor",href:"#torch-flashlight","aria-label":'Permalink to "Torch (Flashlight)"'},"​")],-1),J=s("p",null,[e("In low-light conditions you might want to make use of the cameras flashlight. Using the "),s("code",null,"torch"),e(" prop, you can turn the flashlight on/off. Note that support is inconsistent across devices and browsers and can only be detected after already starting the camera.")],-1),L=s("p",null,[e("Feature sponsored by "),s("a",{href:"https://aeschbacher.ch",target:"_blank",rel:"noreferrer"},"aeschbacher.ch")],-1),Q=I(`

Source

vue
<template>
+  <div>
+    <p>
+      Pick camera:
+      <select v-model="selected">
+        <option
+          v-for="device in devices"
+          :key="device.label"
+          :value="device"
+        >
+          {{ device.label }}
+        </option>
+      </select>
+    </p>
+
+    <p
+      v-if="torchNotSupported"
+      class="error"
+    >
+      Torch not supported for active camera
+    </p>
+
+    <qrcode-stream
+      :torch="torchActive"
+      :constraints="{ deviceId: selected.deviceId }"
+      v-if="selected !== null"
+      @error="console.error"
+      @camera-on="onCameraOn"
+      v-memo="[torchActive, selected.deviceId]"
+    >
+      <button
+        @click="torchActive = !torchActive"
+        :disabled="torchNotSupported"
+      >
+        <img
+          :src="withBase(icon)"
+          alt="toggle torch"
+        />
+      </button>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted, computed } from 'vue'
+import { withBase } from 'vitepress'
+import { QrcodeStream } from '../../../../src'
+
+const selected = ref(null as MediaDeviceInfo | null)
+const devices = ref([] as MediaDeviceInfo[])
+
+onMounted(async () => {
+  devices.value = (await navigator.mediaDevices.enumerateDevices()).filter(
+    ({ kind }) => kind === 'videoinput'
+  )
+
+  if (devices.value.length > 0) {
+    selected.value = devices.value[0]
+  }
+})
+
+const torchActive = ref(false)
+const torchNotSupported = ref(false)
+
+const icon = computed(() => {
+  if (torchActive.value) {
+    return '/flash-off.svg'
+  } else {
+    return '/flash-on.svg'
+  }
+})
+
+function onCameraOn(capabilities) {
+  console.log(capabilities)
+  torchNotSupported.value = !capabilities.torch
+}
+
+function onError(err) {
+  console.error(err)
+}
+</script>
+
+<style scoped>
+button {
+  position: absolute;
+  left: 10px;
+  top: 10px;
+}
+button img {
+  width: 50px;
+  height: 50px;
+}
+.error {
+  color: red;
+  font-weight: bold;
+}
+</style>
`,2),K=JSON.parse('{"title":"Torch (Flashlight)","description":"","frontmatter":{},"headers":[],"relativePath":"demos/Torch.md","filePath":"demos/Torch.md","lastUpdated":1688667092000}'),R={name:"demos/Torch.md"},W=c({...R,setup(F){return(i,h)=>{const a=S("ClientOnly");return l(),p("div",null,[j,J,L,y(a,null,{default:o(()=>[y(B,{component:U})]),_:1}),Q])}}});export{K as __pageData,W as default}; diff --git a/pr-preview/pr-449/assets/demos_Upload.md.Ds3GTY8o.js b/pr-preview/pr-449/assets/demos_Upload.md.Ds3GTY8o.js new file mode 100644 index 00000000..3f7af43f --- /dev/null +++ b/pr-preview/pr-449/assets/demos_Upload.md.Ds3GTY8o.js @@ -0,0 +1,57 @@ +import{p as y,_ as u}from"./chunks/camera.BJQyjlnn.js";import{d as c,o as e,c as p,_ as F,D as g,k as s,a as h,a4 as m,a5 as C,F as _,E as f,t as o,I as d,w as D,R as B}from"./chunks/framework.BtL3uYYi.js";const v=c({__name:"QrcodeCapture",props:{formats:{type:Array,default:()=>["qr_code"]}},emits:["detect"],setup(i,{emit:a}){const r=i,k=a,n=l=>{if(!(!(l.target instanceof HTMLInputElement)||!l.target.files))for(const E of Array.from(l.target.files))y(E,r.formats).then(t=>{k("detect",t)})};return(l,E)=>(e(),p("input",{onChange:n,type:"file",name:"image",accept:"image/*",capture:"environment",multiple:""},null,32))}}),A={components:{QrcodeCapture:v},data(){const i=[{text:"rear camera (default)",value:"environment"},{text:"front camera",value:"user"},{text:"force file dialog",value:null}];return{result:"",options:i,selected:i[0]}},methods:{onDetect(i){console.log(i),this.result=JSON.stringify(i.map(a=>a.rawValue))}}},b=["value"],q=s("hr",null,null,-1),x={class:"decode-result"};function w(i,a,r,k,n,l){const E=g("qrcode-capture");return e(),p("div",null,[s("p",null,[h(" Capture: "),m(s("select",{"onUpdate:modelValue":a[0]||(a[0]=t=>n.selected=t)},[(e(!0),p(_,null,f(n.options,t=>(e(),p("option",{key:t.text,value:t},o(t.text),9,b))),128))],512),[[C,n.selected]])]),q,s("p",x,[h(" Last result: "),s("b",null,o(n.result),1)]),d(E,{onDetect:l.onDetect,capture:n.selected.value},null,8,["onDetect","capture"])])}const S=F(A,[["render",w]]),U=s("h1",{id:"decode-by-upload",tabindex:"-1"},[h("Decode by Upload "),s("a",{class:"header-anchor",href:"#decode-by-upload","aria-label":'Permalink to "Decode by Upload"'},"​")],-1),N=s("p",null,[h("Finally, with "),s("code",null,"QrcodeCapture"),h(" comes another component which allows image scanning via classic file upload. Nothing is actually uploaded. Everything is happening client-side.")],-1),V=s("p",null,"If you are on mobile and your browser supports it, you are not prompted with a file dialog but with your camera. So you can directly take the picture to be uploaded. Adjust this behavior with the following dropdown:",-1),O=B(`

Source

vue
<template>
+  <div>
+    <p>
+      Capture:
+      <select v-model="selected">
+        <option
+          v-for="option in options"
+          :key="option.text"
+          :value="option"
+        >
+          {{ option.text }}
+        </option>
+      </select>
+    </p>
+
+    <hr />
+
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <qrcode-capture
+      @detect="onDetect"
+      :capture="selected.value"
+    />
+  </div>
+</template>
+
+<script>
+import { QrcodeCapture } from '../../../../src'
+
+export default {
+  components: { QrcodeCapture },
+
+  data() {
+    const options = [
+      { text: 'rear camera (default)', value: 'environment' },
+      { text: 'front camera', value: 'user' },
+      { text: 'force file dialog', value: null }
+    ]
+
+    return {
+      result: '',
+      options,
+      selected: options[0]
+    }
+  },
+
+  methods: {
+    onDetect(detectedCodes) {
+      console.log(detectedCodes)
+
+      this.result = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+    }
+  }
+}
+</script>
`,2),P=JSON.parse('{"title":"Decode by Upload","description":"","frontmatter":{},"headers":[],"relativePath":"demos/Upload.md","filePath":"demos/Upload.md","lastUpdated":1703524587000}'),Q={name:"demos/Upload.md"},$=c({...Q,setup(i){return(a,r)=>{const k=g("ClientOnly");return e(),p("div",null,[U,N,V,d(k,null,{default:D(()=>[d(u,{component:S})]),_:1}),O])}}});export{P as __pageData,$ as default}; diff --git a/pr-preview/pr-449/assets/demos_Upload.md.Ds3GTY8o.lean.js b/pr-preview/pr-449/assets/demos_Upload.md.Ds3GTY8o.lean.js new file mode 100644 index 00000000..3f7af43f --- /dev/null +++ b/pr-preview/pr-449/assets/demos_Upload.md.Ds3GTY8o.lean.js @@ -0,0 +1,57 @@ +import{p as y,_ as u}from"./chunks/camera.BJQyjlnn.js";import{d as c,o as e,c as p,_ as F,D as g,k as s,a as h,a4 as m,a5 as C,F as _,E as f,t as o,I as d,w as D,R as B}from"./chunks/framework.BtL3uYYi.js";const v=c({__name:"QrcodeCapture",props:{formats:{type:Array,default:()=>["qr_code"]}},emits:["detect"],setup(i,{emit:a}){const r=i,k=a,n=l=>{if(!(!(l.target instanceof HTMLInputElement)||!l.target.files))for(const E of Array.from(l.target.files))y(E,r.formats).then(t=>{k("detect",t)})};return(l,E)=>(e(),p("input",{onChange:n,type:"file",name:"image",accept:"image/*",capture:"environment",multiple:""},null,32))}}),A={components:{QrcodeCapture:v},data(){const i=[{text:"rear camera (default)",value:"environment"},{text:"front camera",value:"user"},{text:"force file dialog",value:null}];return{result:"",options:i,selected:i[0]}},methods:{onDetect(i){console.log(i),this.result=JSON.stringify(i.map(a=>a.rawValue))}}},b=["value"],q=s("hr",null,null,-1),x={class:"decode-result"};function w(i,a,r,k,n,l){const E=g("qrcode-capture");return e(),p("div",null,[s("p",null,[h(" Capture: "),m(s("select",{"onUpdate:modelValue":a[0]||(a[0]=t=>n.selected=t)},[(e(!0),p(_,null,f(n.options,t=>(e(),p("option",{key:t.text,value:t},o(t.text),9,b))),128))],512),[[C,n.selected]])]),q,s("p",x,[h(" Last result: "),s("b",null,o(n.result),1)]),d(E,{onDetect:l.onDetect,capture:n.selected.value},null,8,["onDetect","capture"])])}const S=F(A,[["render",w]]),U=s("h1",{id:"decode-by-upload",tabindex:"-1"},[h("Decode by Upload "),s("a",{class:"header-anchor",href:"#decode-by-upload","aria-label":'Permalink to "Decode by Upload"'},"​")],-1),N=s("p",null,[h("Finally, with "),s("code",null,"QrcodeCapture"),h(" comes another component which allows image scanning via classic file upload. Nothing is actually uploaded. Everything is happening client-side.")],-1),V=s("p",null,"If you are on mobile and your browser supports it, you are not prompted with a file dialog but with your camera. So you can directly take the picture to be uploaded. Adjust this behavior with the following dropdown:",-1),O=B(`

Source

vue
<template>
+  <div>
+    <p>
+      Capture:
+      <select v-model="selected">
+        <option
+          v-for="option in options"
+          :key="option.text"
+          :value="option"
+        >
+          {{ option.text }}
+        </option>
+      </select>
+    </p>
+
+    <hr />
+
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <qrcode-capture
+      @detect="onDetect"
+      :capture="selected.value"
+    />
+  </div>
+</template>
+
+<script>
+import { QrcodeCapture } from '../../../../src'
+
+export default {
+  components: { QrcodeCapture },
+
+  data() {
+    const options = [
+      { text: 'rear camera (default)', value: 'environment' },
+      { text: 'front camera', value: 'user' },
+      { text: 'force file dialog', value: null }
+    ]
+
+    return {
+      result: '',
+      options,
+      selected: options[0]
+    }
+  },
+
+  methods: {
+    onDetect(detectedCodes) {
+      console.log(detectedCodes)
+
+      this.result = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+    }
+  }
+}
+</script>
`,2),P=JSON.parse('{"title":"Decode by Upload","description":"","frontmatter":{},"headers":[],"relativePath":"demos/Upload.md","filePath":"demos/Upload.md","lastUpdated":1703524587000}'),Q={name:"demos/Upload.md"},$=c({...Q,setup(i){return(a,r)=>{const k=g("ClientOnly");return e(),p("div",null,[U,N,V,d(k,null,{default:D(()=>[d(u,{component:S})]),_:1}),O])}}});export{P as __pageData,$ as default}; diff --git a/pr-preview/pr-449/assets/demos_Validate.md.Ba0B0yOc.js b/pr-preview/pr-449/assets/demos_Validate.md.Ba0B0yOc.js new file mode 100644 index 00000000..e68002cf --- /dev/null +++ b/pr-preview/pr-449/assets/demos_Validate.md.Ba0B0yOc.js @@ -0,0 +1,119 @@ +import{_ as c}from"./chunks/camera.BJQyjlnn.js";import{_ as F}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";import{_ as o,D as E,o as a,c as n,k as l,a as r,t as C,I as k,w as d,e as t,d as u,R as B}from"./chunks/framework.BtL3uYYi.js";const m={components:{QrcodeStream:F},data(){return{isValid:void 0,paused:!1,result:null}},computed:{validationPending(){return this.isValid===void 0&&this.paused},validationSuccess(){return this.isValid===!0},validationFailure(){return this.isValid===!1}},methods:{onError:console.error,resetValidationState(){this.isValid=void 0},async onDetect([i]){this.result=i.rawValue,this.paused=!0,await this.timeout(3e3),this.isValid=this.result.startsWith("http"),await this.timeout(2e3),this.paused=!1},timeout(i){return new Promise(h=>{window.setTimeout(h,i)})}}},D={class:"decode-result"},v={key:0,class:"validation-success"},A={key:1,class:"validation-failure"},_={key:2,class:"validation-pending"};function f(i,h,g,p,e,s){const y=E("qrcode-stream");return a(),n("div",null,[l("p",D,[r(" Last result: "),l("b",null,C(e.result),1)]),k(y,{paused:e.paused,onDetect:s.onDetect,onError:s.onError,onCameraOn:s.resetValidationState},{default:d(()=>[s.validationSuccess?(a(),n("div",v," This is a URL ")):t("",!0),s.validationFailure?(a(),n("div",A," This is NOT a URL! ")):t("",!0),s.validationPending?(a(),n("div",_," Long validation in progress... ")):t("",!0)]),_:1},8,["paused","onDetect","onError","onCameraOn"])])}const V=o(m,[["render",f],["__scopeId","data-v-2a6ebd39"]]),q=l("h1",{id:"pause-validate",tabindex:"-1"},[r("Pause & Validate "),l("a",{class:"header-anchor",href:"#pause-validate","aria-label":'Permalink to "Pause & Validate"'},"​")],-1),w=l("p",null,"By pausing you can process each scanned QR-code one at a time. The last received frame is still displayed so it just looks like the stream is paused.",-1),b=B(`

Source

vue
<template>
+  <div>
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <qrcode-stream
+      :paused="paused"
+      @detect="onDetect"
+      @error="onError"
+      @camera-on="resetValidationState"
+    >
+      <div
+        v-if="validationSuccess"
+        class="validation-success"
+      >
+        This is a URL
+      </div>
+
+      <div
+        v-if="validationFailure"
+        class="validation-failure"
+      >
+        This is NOT a URL!
+      </div>
+
+      <div
+        v-if="validationPending"
+        class="validation-pending"
+      >
+        Long validation in progress...
+      </div>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      isValid: undefined,
+      paused: false,
+      result: null
+    }
+  },
+
+  computed: {
+    validationPending() {
+      return this.isValid === undefined && this.paused
+    },
+
+    validationSuccess() {
+      return this.isValid === true
+    },
+
+    validationFailure() {
+      return this.isValid === false
+    }
+  },
+
+  methods: {
+    onError: console.error,
+
+    resetValidationState() {
+      this.isValid = undefined
+    },
+
+    async onDetect([firstDetectedCode]) {
+      this.result = firstDetectedCode.rawValue
+      this.paused = true
+
+      // pretend it's taking really long
+      await this.timeout(3000)
+      this.isValid = this.result.startsWith('http')
+
+      // some more delay, so users have time to read the message
+      await this.timeout(2000)
+      this.paused = false
+    },
+
+    timeout(ms) {
+      return new Promise((resolve) => {
+        window.setTimeout(resolve, ms)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.validation-success,
+.validation-failure,
+.validation-pending {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+
+  background-color: rgba(255, 255, 255, 0.8);
+  padding: 10px;
+  text-align: center;
+  font-weight: bold;
+  font-size: 1.4rem;
+  color: black;
+
+  display: flex;
+  flex-flow: column nowrap;
+  justify-content: center;
+}
+.validation-success {
+  color: green;
+}
+.validation-failure {
+  color: red;
+}
+</style>
`,2),L=JSON.parse('{"title":"Pause & Validate","description":"","frontmatter":{},"headers":[],"relativePath":"demos/Validate.md","filePath":"demos/Validate.md","lastUpdated":1688836566000}'),S={name:"demos/Validate.md"},N=u({...S,setup(i){return(h,g)=>{const p=E("ClientOnly");return a(),n("div",null,[q,w,k(p,null,{default:d(()=>[k(c,{component:V})]),_:1}),b])}}});export{L as __pageData,N as default}; diff --git a/pr-preview/pr-449/assets/demos_Validate.md.Ba0B0yOc.lean.js b/pr-preview/pr-449/assets/demos_Validate.md.Ba0B0yOc.lean.js new file mode 100644 index 00000000..e68002cf --- /dev/null +++ b/pr-preview/pr-449/assets/demos_Validate.md.Ba0B0yOc.lean.js @@ -0,0 +1,119 @@ +import{_ as c}from"./chunks/camera.BJQyjlnn.js";import{_ as F}from"./chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js";import{_ as o,D as E,o as a,c as n,k as l,a as r,t as C,I as k,w as d,e as t,d as u,R as B}from"./chunks/framework.BtL3uYYi.js";const m={components:{QrcodeStream:F},data(){return{isValid:void 0,paused:!1,result:null}},computed:{validationPending(){return this.isValid===void 0&&this.paused},validationSuccess(){return this.isValid===!0},validationFailure(){return this.isValid===!1}},methods:{onError:console.error,resetValidationState(){this.isValid=void 0},async onDetect([i]){this.result=i.rawValue,this.paused=!0,await this.timeout(3e3),this.isValid=this.result.startsWith("http"),await this.timeout(2e3),this.paused=!1},timeout(i){return new Promise(h=>{window.setTimeout(h,i)})}}},D={class:"decode-result"},v={key:0,class:"validation-success"},A={key:1,class:"validation-failure"},_={key:2,class:"validation-pending"};function f(i,h,g,p,e,s){const y=E("qrcode-stream");return a(),n("div",null,[l("p",D,[r(" Last result: "),l("b",null,C(e.result),1)]),k(y,{paused:e.paused,onDetect:s.onDetect,onError:s.onError,onCameraOn:s.resetValidationState},{default:d(()=>[s.validationSuccess?(a(),n("div",v," This is a URL ")):t("",!0),s.validationFailure?(a(),n("div",A," This is NOT a URL! ")):t("",!0),s.validationPending?(a(),n("div",_," Long validation in progress... ")):t("",!0)]),_:1},8,["paused","onDetect","onError","onCameraOn"])])}const V=o(m,[["render",f],["__scopeId","data-v-2a6ebd39"]]),q=l("h1",{id:"pause-validate",tabindex:"-1"},[r("Pause & Validate "),l("a",{class:"header-anchor",href:"#pause-validate","aria-label":'Permalink to "Pause & Validate"'},"​")],-1),w=l("p",null,"By pausing you can process each scanned QR-code one at a time. The last received frame is still displayed so it just looks like the stream is paused.",-1),b=B(`

Source

vue
<template>
+  <div>
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <qrcode-stream
+      :paused="paused"
+      @detect="onDetect"
+      @error="onError"
+      @camera-on="resetValidationState"
+    >
+      <div
+        v-if="validationSuccess"
+        class="validation-success"
+      >
+        This is a URL
+      </div>
+
+      <div
+        v-if="validationFailure"
+        class="validation-failure"
+      >
+        This is NOT a URL!
+      </div>
+
+      <div
+        v-if="validationPending"
+        class="validation-pending"
+      >
+        Long validation in progress...
+      </div>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      isValid: undefined,
+      paused: false,
+      result: null
+    }
+  },
+
+  computed: {
+    validationPending() {
+      return this.isValid === undefined && this.paused
+    },
+
+    validationSuccess() {
+      return this.isValid === true
+    },
+
+    validationFailure() {
+      return this.isValid === false
+    }
+  },
+
+  methods: {
+    onError: console.error,
+
+    resetValidationState() {
+      this.isValid = undefined
+    },
+
+    async onDetect([firstDetectedCode]) {
+      this.result = firstDetectedCode.rawValue
+      this.paused = true
+
+      // pretend it's taking really long
+      await this.timeout(3000)
+      this.isValid = this.result.startsWith('http')
+
+      // some more delay, so users have time to read the message
+      await this.timeout(2000)
+      this.paused = false
+    },
+
+    timeout(ms) {
+      return new Promise((resolve) => {
+        window.setTimeout(resolve, ms)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.validation-success,
+.validation-failure,
+.validation-pending {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+
+  background-color: rgba(255, 255, 255, 0.8);
+  padding: 10px;
+  text-align: center;
+  font-weight: bold;
+  font-size: 1.4rem;
+  color: black;
+
+  display: flex;
+  flex-flow: column nowrap;
+  justify-content: center;
+}
+.validation-success {
+  color: green;
+}
+.validation-failure {
+  color: red;
+}
+</style>
`,2),L=JSON.parse('{"title":"Pause & Validate","description":"","frontmatter":{},"headers":[],"relativePath":"demos/Validate.md","filePath":"demos/Validate.md","lastUpdated":1688836566000}'),S={name:"demos/Validate.md"},N=u({...S,setup(i){return(h,g)=>{const p=E("ClientOnly");return a(),n("div",null,[q,w,k(p,null,{default:d(()=>[k(c,{component:V})]),_:1}),b])}}});export{L as __pageData,N as default}; diff --git a/pr-preview/pr-449/assets/index.md.DnOK2cmZ.js b/pr-preview/pr-449/assets/index.md.DnOK2cmZ.js new file mode 100644 index 00000000..6ddc6c3c --- /dev/null +++ b/pr-preview/pr-449/assets/index.md.DnOK2cmZ.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./chunks/framework.BtL3uYYi.js";const p=JSON.parse('{"title":"","titleTemplate":":title","description":"","frontmatter":{"layout":"home","titleTemplate":":title","hero":{"name":"Vue Qrcode Reader","tagline":"A set of Vue.js components for detecting and decoding QR codes.","image":{"src":"/logo.png","alt":"VueQrcodeReader"},"actions":[{"theme":"brand","text":"See Demos →","link":"/demos/FullDemo"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/gruhn/vue-qrcode-reader"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1707952687000}'),a={name:"index.md"};function n(r,d,i,s,c,l){return o(),t("div")}const u=e(a,[["render",n]]);export{p as __pageData,u as default}; diff --git a/pr-preview/pr-449/assets/index.md.DnOK2cmZ.lean.js b/pr-preview/pr-449/assets/index.md.DnOK2cmZ.lean.js new file mode 100644 index 00000000..6ddc6c3c --- /dev/null +++ b/pr-preview/pr-449/assets/index.md.DnOK2cmZ.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o}from"./chunks/framework.BtL3uYYi.js";const p=JSON.parse('{"title":"","titleTemplate":":title","description":"","frontmatter":{"layout":"home","titleTemplate":":title","hero":{"name":"Vue Qrcode Reader","tagline":"A set of Vue.js components for detecting and decoding QR codes.","image":{"src":"/logo.png","alt":"VueQrcodeReader"},"actions":[{"theme":"brand","text":"See Demos →","link":"/demos/FullDemo"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/gruhn/vue-qrcode-reader"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1707952687000}'),a={name:"index.md"};function n(r,d,i,s,c,l){return o(),t("div")}const u=e(a,[["render",n]]);export{p as __pageData,u as default}; diff --git a/pr-preview/pr-449/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 b/pr-preview/pr-449/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2a687296748f6b8bc8076cd11bde49cd27e4442b GIT binary patch literal 28332 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 HNCp4^t1hY; literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/assets/inter-italic-cyrillic.D6csxwjC.woff2 b/pr-preview/pr-449/assets/inter-italic-cyrillic.D6csxwjC.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f64035158d7e4c01654e3f23dcd6e8299928a28c GIT binary patch literal 17824 zcmV(|K+(TGZYzoV0yihRy3;{L*Bm;yv3xXa1 z1Rw>42nQe=C3zL>7I?PUshK)MG!ta^L3b^d$O{#w!;WOi#caU z9epdi^~z}FXC1zMc;nw||B-~iJKZ7-`H(Kn3lKjZ5N5RqaHof~Lr#JsXW1jml58&> zQGi~|0cnL4zB|P8}0t5&U@c|JdMvNGlmzMw!d_sgsBSwh~ z<3uKERMdzOA;C{wc9u@*KWk~1ZrQFoOIvrA?XoRxnU;2`Lr2EaDbuDiOouv|*;F%- z#gKPJ>8fl=HUf*mFq&P*op#SRB5uMwrI5O=D|BV|t7*jYszMn6_y=vT5wbG)8zDBN(kmfH1b)al)=7_XtiK52#|ESncdAW0QK2HvRY`_;WiO>pz_-Xk zH!T)&YR`MAJa7J@pNA;Ve=XlUuY2Z4Y1bh`Bcza^p&9I}QLUiMj74g|4NyqjXq$hi zG1}j&v`P|}Bqr@5l@eV;qy>fq`v}SgHrfA#@*v!mV~$a+B6D&Jh-sRueXL+`%jr?vt30*Vq&Bs(79VL�!Z1%E;0yxE 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/assets/inter-italic-latin-ext.BGcWXLrn.woff2 b/pr-preview/pr-449/assets/inter-italic-latin-ext.BGcWXLrn.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9c1b9440ed419d4a71ba46b0db3951164f9e10df GIT binary patch literal 63552 zcmZ5`Q;aAKukF~jJ$r21wr$(CZQHhO+qP}{e*fFaZJM@enzTt@R^cWm$_M}m@E^VN z10epVfSCRhZz}-6AUpr_{{Ms(tc4v=;*I0UC$1`>m`DPq&!?m;pd5e&5NSwf4HY=y z9GJ;WA6(1~$O=RPoTd*Qb$R_czHOKw7KCW~-DDBz-LTs`Mrk z%XuLUgqR^8SpbuiL4%mxNJA_EI`K0umbccrk;xp$)2&k!N+ zeb5sQW4@@M-7-f1BuW!r_40&w89d~mGj~nDg~8p`DPa!RR0hJN#AgiQ0OGbh%k>Fk zDg#m}JnXxoTj?iJnOuE<>SuM2Wia~bj@pU0Rl&5u8?*7~+Xs!C2=825{=mwe(rx;c zEOn+dpzw?uVxD{Cc# zf;7#S>Iz`XL;$iN!Qe}`1b)tM>vwI_Y;HOuW5^x@jJ+R1EZbgr7!eVYj1w3*mi18m zsoPjtSzSFjDebpA6Z87%!|TuQ%j>TfukMWM3zOnwTuSFLF)b41EPZcxZ!T53@#{9= zXuzYs5Gu@31>=~l5lX}JUwwQH@V9A2DGJX1&MF_9r7aE>vvT&$lC&QjiaqlR@E}3Ytx&T87yL=F3zQm(ASY)w7R{4*o3F2J^!cr3449 zLwFH8ceTEtF|{$~lrR|P)O%n^{D=tJArb9=Otf=kb^WpP!*c4@x0>xYSdm+PNG~@< zTzgoy_V~@LHnGH*_{exEpH`|SHg&|IDXNsoICrBy#h6-&ce9+_y8M#}cM%Wg5H9o? zj+{LL7{-1KJZnFS{y|N39F2N*Nl|KT zthEjVf*1=B0&$46p^8LCNMW;cRLa)Vmh~!Xig~4uZ*wuK>A8K~?lm8~TU~S^0&$U@ zs+ib50%G=G%3ws+@2@T3E+O7-8+pOEbeREj$W+R^H-?-z!%2Mip{zlhfG{GITYu`A zO6pHHCt>pK)7Vl14^l&g6GA63Y_awxq)`VS6%7*$z!0vg!r4p4)PkwN@~Cu*1&B6- z)7en1r@1j7&)X??`ur+;W*z^|BVJu)1tkjn8G?vC7MsQh%pfZ?@y{Nnwbl$WkeGQUw3GY$@4u^Px4bu!sn>q7+Rg&_ zbQF_J#)?8NM+h}|aa6?=Wq%U)cQUpwu8maZH!ICHeM*N2Lq8>42Vqr#1p)z*NJ(u& zd4-A7>BHaEs=jBNp1!`a?N7e8uBQ6PCdMMWUb~G~r!Fo+0z0j@EeT|x)&f`>WFrVz z;pt$sEd-;W07z+PqM&fu>nO|9$Knz4g1|q477#gdM)U_9v zoz$J2V12*ay`OImp4+p#jk8~#FXKT?%Y_m&nkwZ6BGGURL9J_llWprr1(mDQX!R!I}H+Elh9*Kt|sgG6&>M_>D|1QlpM~UMq~cfiwnHTamI$}Y)(jR z4kNJslqK-((750Ho7(d=CiajZf7$YipnMA;82Up_PdTr*S*&0M@2Gn2xmBYpk~Je& zMH246yUNtOpd|^lCWr%t#Gx+v4gJ|d6vV4Qw<^?spk ze<}HE+xOqU+`Z{;r&n%iawwo!3W)X;hiysn{`bAz{rf+^yxH$AS2L5}IXI&iKm%1` zEy?5T3j|lU%4XF?pFl5s|EPccjV|-S5UNg&+_cLfr#)U|`qC*iVl7&$>mJ8Rc{n|N z9KG`8EkoCyzG5!Y1(eb&fj0F|uyZqye`^U%7Y^twdXZ zT)#*A5!}y+)LOIYVD1qG)sT}kTiG?O+m2C=k)_*(m1w_tuTnO*x%<$)(U?X=+yPNc z(BE!A!Xm0J4=JJIsbOV5zAC10?w^QQ1Ei>3i?{ZEhJsWvJ zt1AT#sQ+?s$`dOelO|>X>uI3Ye1bRtR#^tgNbk@7`YJTPZom1005M`gB01}sdLpnL z7yNN-ouzZ8Xev+qwIMLXK?D@gDy9ieob=g~vUa^C#|HZo93>&0Nm2?Ba@sRqZEFP~ zHW36{MAq!OYz`W=^8OY#+I-ZIybtm~*w4)#h<6Y2R_}!%sy1YGrAQ~rD-i@R@GFeX z0ZX-zOiSbQ%i^;^T*2+h%7XpGJBl3! zy;aCL^qgrswVP|TT|)n4^4@Z+EDFBa!h;Ej2-#h*pyZxrDC;a^tG?g{QLq%ugHDy3D?9x^9J1UulSlkVt|F1Olg9l_v%FQ$vZEf=v;uZ{E5EPM-&I zUFLWx#RY+av))=xKER9~?--vGCNDeXS2z4K@4&!viqCLPLdWXW}a0H|& z=^Y>-iseB)&Otxa@rLX9#A|>BE{{Pqq!5d9C}ACDEyN$ChB}az>XkIHYE#lewNQ!) z%b0Vz?iW4eojBzzq|P{QF1(}2bMVil&&I%(K57n}U*o|(uxZB?yyGnv2=rzkWT7Bu zDZKZedC;3pkU?u47V}%E+01Q}N*dnJEv$F67uEj;7uQ=wiW{cTlSV_)@{fOg8-H zAOJW80chUJxBtQ6U~V(tc{;wYnJmdD84zOp<2m8cW$uBxK~^qFaZXlCT0A+Gl8Ugo z4zo2kq#$Rcm`aFo7=q+X;*mKkHDP+ovT};uwCn9SKVNGktNuvc{uWxNr%kJT^rKX- z1~qpijgU2ax5pun*ACdj|6mNO2br z&%3sP3K|j63eMM(QUj76COsfmlK1!T>{t;F?u@qhRWRsfh z8AI}Q;!F#`BOR)xE*d+!*R<(}ar|BCH@ao_eRcJns$9W$=>1T$=RK#rIulSBjp;P- z{oJOT@uw_HXHEOrrnIm!A{rzW8R}}kLtj=)6L$U?D?)rElBR~OqjA+)W%pxMd*PIH z&64h(mHp4@hfLc(gJV5*Nawiz@0isJ-C9+4@s3|+he9T(cEY~Yrrfx&kb@F@ zN1`MB@t8`!SRE1p8XH`#f)SNc<)A{LO11|qCbQYxWk{yT7L$yW$pA_Cwv|hRr4X_B zSzga=vJQaO7BAgEw|9_}5gCRyJZmVkExd`u0MkxnQAAJ|7t!t*A5ZZ7*7oqgUqWB| zQt~?Dy_)`%%vHWGTHmHZw0I4_wM82mSUnb9n8}GumT)jpnprbvmjGvZ22?g{VI)<_ z$t-9;>t^B(f99X`O)$AD>b1!QGDJcMQ9)j4;gBxdwad`c=l(!lL=M78ZD0@eN=lh6 z$p4)+p@bw)l#Tx9X()?lRjL?$~(i%qyd%S8PBF+Av3Y5;GWOMdhX&_I0g^XDC-VWrjmauURTA z6s+q;tL-*&Kyj^KvQxuVke1e+&B0Hh4?HVpa@QvuO-(7mqvv z1c)bBD^b@2VIc6 zB_{%jN5~2bm6(A!vMJW*iDYnj8HRwb$lT>*G%s}#wn&3lRF_gP>Pnd!M&+URX!%26DpbST}OBneM4r>cFC=QJguf5IoF> zG}hF(AkuxTSc<43HWTsteW-wqOJma)thnM^bgP{UH-<0ZGWDI3>?S}Yn5#F%1&xER z^Hn>_pI7JYgVHip*Sgfgw@Wt?hfUi|{$m*pbld*YYZ;{RtH#l%nt2xSMMnQo6wI{R zQZ2T!_Q=GO7=+jt9i`<5WKrQ#h-|AC_okhU{|xAPn?LB?D(HN1U<6*w=s~K8Qb^Sx z_s!23Tc*IROI>6$pqca(Y?d|h#P$@A?3_UHArL7%az@ulMe^J}z8jwcjL`Y-i>1MS~ppy(=QvYYUc) zI_9;%zu|~ELMA*0&C`BE7_|Z`og`UinYkQeeDSl*4uOyHRv-kIb-yr8DkfUt{wz^O zLkH#rblTTHII-k5@W7V-v*m?v(t<@!UN+3SSf-B+UBF9iDHYCls2Mc}a# zmJ(%@i9fcT;EtqMIc4FM>t%~-MHiJhb0igcA({KQH&R2CmUlztngX%P36WTcx#}OC z4fzyEJ`q`YVJbyYy!H!?aoqXL24Vw_@Tct8c}!5q4h_YJ4fE7`fD1tRJ&@gUW7XiW^hBH-W$fgqM}-H_d<hsV7gpe+-QTLrx)itsk2P$@x+CMOKG3a>L-uW$z{FTusJCqXhJ`2P9bC1cfL;QHu4tdoJ z_zuj)O!}{`*feU5HsUKd$3hEX`yxg>v z9lo;^gHrtVsjOdU>Kx7cnsSSoT&nQf#}>1;6tg11s|j-7)sVRlG-yNFkhjiSx?k?C z;5b$J?Q9gYkWX6o!c4S0PCUk(+qLr57;)OyfwNieaQIWkkvksE86L>hj_mJn&Ib!s z+zTP;>!o5~2BMwyZKqVdk_}gDlOHmVs-DD%Wt-qTey&~SmH+1v3G3|&27AW@F?beIKc3Sv)B8ypcZ6yG7b z*BMs{vtu)kRO7p{jz|%Hpx?d3Yuz6r)Je@L5*Rag6Wf1H;1q33lbFhYtz|lFM556O`xrJ4F4BB4yP&2s)NTKf#7R>D?-pC8MKV+&~#VxeagO zaMY=7wiUBkPVkzcdF!)nDFN?N8lf8bhzbNwd-jq_(HxCJnqo<6b5|s=J~oV?tCx{X z@KT{=Yvw+>Y}{8k>ET-LRH{9gKxg4T5=lJPq(-a!-rb_?CSL2wqC}J3wRY_JYT&@u zo8nf^pHxITWQK{nUB!V7k6fp*C}XRjsTCt|itR13{Yd9Wb4%u#03#0r^_`VF+Cdyt z@u2wfiSe*O{uNJVL$lx=;CutXm@zL4)X~>r3FX;tvpCL+VE(}-Zz%GL=2*X z@?CUT0f%*@^+Vhye^+nTV*71fFif~(rK4wORmNvqhl-YroBx7^{^yY?2|oHBV|y91 zbUtb|jc4c#6{cR`%1(mal&s2%k4T}x+^%NWMP|wHmE!6?x*qi3z@{uj})LEAnb#2uMi`*qCw7v{|d`OTyVKXkB@IA zq)&f8?uLTQZr|wRc2q8bf)Y_LZctnZ*dG*`6{-5Ms=qyIH_1945?bHW*f>ng@^D$K zjEm6XxASid@PL<$G|*o{kUoWkLUktba7;{tQc-&Xa<(|Ja#j-o#DAC&4*{?k1Yod` z@kWHS7>iA}+Yz)dd+}I85)4$t+>x3>*{mRvbOF#A<|7TI(%j%>H4U2U*#&d6ZDh2m z3Ho!TiPLQ$JW`T;3R-Ax2-Ev42w)gV7Y~yCfVnmhiH^#>X!{!JB${hdS56z2gJb?X zvSKDqw%Di++-H&N&sqN*V>z4M><8(0ON_;~wb6t_7a~v%5CH<<(a-yEP44>#)BARb zZrM7|_h60g`=ey9kEr+YNX_>*^Zj#fkG|L8IHxhB=+5`Ar_aa!xya7@^=MAk+vNLl zTrH)qLHi=~;VqHIrkFqxhav{&XX~NQ<$>cbdv3%mLTRP)#wQ3$3%pg7eQtcacCz+d z{bZi+Y=K!yF$eovx2OGzZFr>hPNRPc)RCh%o?7NHA+J-?H0GLf@>69bryH>evMZuF zqCKQJq!SjO1cX9hgTNNvlg^dSmd=3AmXA9a&Om5c{y_d*NIyYQAyX|sT3(bk>Rn+O z*dy2;#39<5+6g}yxn3z)slVgCSE&~)cz~W$8p7yql6#nUL`)pWeFMr=#|QNdq^j4y}^cn*BGIVCG8+%=H@O&(6T!w6yuVF9D^k(#9@ zoG1wBBZBGUSQ>cNwb#DQgM+)yHS&6a+G^VzW4F4H044(rHO_@cqjWG)CL?1UMN(cm zAtaqTIbXSZ)75AGjw3izE$cbNYR4ylZ9=#~D6*gKP?PjLo3-TB}_cztSl_h1N57(0ra)21L% zdwm0Q9TnqiFEF1<(>Jx*`b+vhtBzPx2!^4>t9A%_A72@7_FBwb5Oh+vH{sLqXY+fr8vZvmwst&%9AXd6t^lv#9^J{5Mng|ghD#J!xu?4u>}5~sBb%ZTqh2jNpZ z8usVk*Ee-cQ?z1rFD=m@R_iop<7f76(Ye2p$5-{iAPmC7z`CZxFfGX$(-ls_Cw8|? zhY`BgIoMLuy@q$z?B%&v4G6fuf$h7pT7mi#+R4r-^isHO7;b(>E_xzyf)uYp(5+}T zl#yZ%6bA_39%ME<5%LdkoD>h_<*SZ#UDk;`hC(*EZ}Ex;)y}x0Rf4BBHA9ykRR2L& z){&Npg7y^o%|ltSFY8{_<(2=|s^|$dnUQ=lpcj~tb{z?_6mv{EC0(%CYQ!wq4PC#M zUu=kycQZTKnt%h~fMJ1dnjKwQ2>Sy@+f8*`UgII(`V=>EAtku7b7uwfkS*BKSnW(% z9t8cc1mfCn$+Hw`0Pid6l_FtyS~`|wKmadb`kZyeK2P7>XDO8#==UbN8{torZa%sr z2g>F+)Kj@JDp*Zau$?7EXGaT56!Y0AB+_?R(Csf)mrSNw*SL5xXhd%TgZS+r7}q@ zciEFHR#!4NKhkTXTqRs-x!ay=l~ni+MztcHyY1KlX;A^4g1ahhUgtJ(A(!a3{gNOZ z3fLXP*h%J|7wqjY57*8Q4~@{&Wg|DydbUzqD)t_RBT&>0sz5O*3b>$ck2CL%U$2Sz zJ-uo@>9P`8U)#RcU$xJZn`&xn>Latbd}bG@=gS-yqF?JPt%WkTkGC)5+nJqADemrT zr7;mQtmtjHRhr<$4xPZnYxSiuw$^^yi>t5hS6_z5qib7`oh)pHJ~lE5ts3oooQOxV zQ(HOoHU&2n-QTLMYaP$k&FGyE9nL zs{9IV8?ENlN=|x?r8d$g6?bA-nNDq{Z-e2mnld;$m)i-+rmZ44cw2KQcB5;rrcY36 zi3Q?%4y=eKG`DU`LDP7Xxr1A^(qVCTH)xwnfW{>}^}RP+nt zHS0b;zjK6&39Sx_Lq)LDrfF7!%OZi@y%0vzBH-Il!%7DZY=#~@G_%+&q!(0Bv)~DA zg^*$S5fRB$3!_9I3L!~U4IZUe9G8@+T_E?nMZ)=p&Lr;VS~uAa!^Y>ZY$)RYWcD2^m+;k?GKaRGaX(kob7 zk3;Be1&(66{70gj$bF6I3=_VZr(BH(pf%QAQ+G(8vgUfPPd{i~hc5{LasUwbLp^tt zIL83)0p(o*`wcGvf%_Bvefa(Kh4d}CVwvJ=%wXWz z8IqH1!aGdx8{qLoQkY0IPBGK5WW9)I3o_Lccp-O0@nL1}QcM&!B+^4nG4scu@?J#c z*+=4sLFwldiMI-FIsxAGahS5ncti0i6g%TE-7j;rYgW9MynT2N>W3`1PAFMHD3HeVE^#RkZ_huSU4reyT&Lt^WBqR0y0Lyc=*IXLNX zHK-!3PuC%{PY8}REW(Dcg>6*RV5Bcl;Hu59_JNo&7BtZZd9K&r3^4k*K?&|8Sl5xw zxShU1EuxVUDdNdY!_A9=IpAvGQTNAxf4&NOmgYy$P-bR5r9iBX8oh?sCUfxJ-^EP$ z@p9mB!oUH!)-)|;&>QPY!~u=s`=NHL>a=vUzg4k~%$>5_r6bv7^$xCp4fxS_F-*!^ zElZ#I3)f*W`@L<9T6-27Yca~s1;cD?{}8erNGma;F`ef}xb5a3ua(o@w8tBB-<@ll znbOQGYrfsAF%~c=%^MYDf{05aV9vCgjF@a@Sv9asd#kNzFOgqj|Eadj0-_nKO<*WO z7_HFnr`Rv7OJ|i>{>bf{x*k34eR=~TrABn^*~{&$0dn|Ac2ORU<0AHQXkL&GNDY9} zjgLdMakNqpw6{_IMCyXj8HxA_g&_!gvnL-R1m@U(@Nui(=eeS?lNv0kSTd*vL~PsNx-x*MW!Xe77|0j151DTe zEvK2{82dR47%o-4BW2%46X?uMyV<@eRm$egp1l&qwE!fIBB4tkEx;wlif39(6qoDeT#mw5uUtENq3#rGx2gl~h1G@@#69 zoJN8`m7>EQ#1&7a6KSam%$j^^L(5)@PJQ+;->f10;6;#8nC|HBBG1-?bX6B>ULh?P zkbr#_)8H&(T3ii+?;`yVmFzq3glZh)4SvVs0Q3G+r*8oKQ;tW!GPk%uk5C=#ZclIX zC*y|8>~KED z=I$)S6c8ed&=6x{C~b$;YgCM?Q6q?AIN7`@N6@IhU<|5-0uv$H=dnac0a*5RjikP? z0%s5p3h&lTT5XUAL|f5hYBE(`M4d=2(E(1er)`)czXq}zE~#ieXNvfd&kj=x8F1oF z4vw0(VOjP#R!gykR1mMajFhI7!QY~U1K|R*!q^MyGb#?Hf*=_$5X_1}Lv%_mQHQILR94%n@ngv>aqhlSLg<%sIkech)eSJX zP8WCsO4NLJF^78111Srvri0>g4;pMNedUMPYJc`i zPxbc;ZAxcI>x?V{FnY?+zhAz5&AYgu)vfNL32e9g0&uRd6BbanoQzPhz-{&gFZYgp zOt+X>>~R(0o5F6toWfqOx$S%{wSZa6v#7dSgl~L7oIu~JOBKo9=td0Se^UaG4IC`Q z291zKY#|`J<`wnzi<5e?4|yueJcQu;dv)%rn=-=SG~lXJy>qii|7h>u8aW{ z8KPya{TNSeRL?r+<2%mcqwm@(0iQSqU&z`t%XTV_VYvdUv4sq~kohDU<&fUizMuO+ z^eca;e(o&pW8GT5i_tIe$@VJdUl!Ze0&GCE^|x|fSZA?w{;IbRz6$r+c^_d!t=u=6 z4S@Cdc~YRIf(7Qpi%JF1!m2JS=z`+C{wI0K!g9q(e5%?B+_&A6#_uLrL#zHOWgGd< zQLP@FgNh|=;w}818VZ}Hv&?|BcNj=lU2l~>CuVlxMnfl6v=6b*6!+`#t$fPgh23K1 zUv{V%RyhsHuSBS2+U``U?#qvh|6Jopl>^(SPoh{o%3XxY&hKCQ@Q(c~InOwPd{(Hr zOUNvmt1o7$=nr|e;{6IyDV0{%Loe$0Wt2}HilKcJRfDsF)cX(&h?!RcNN#>WwGW*; zFZDCQO@Ay6KR)2g!PXwNb z&Q)D2a7-#(=6aK6PY6YRfP~T7VuBClqCgP~R#r)2@gVpj2dsOmoSgh>2nWQL_Hck! zn=@w?nKOCk3`Huu#tr@Vp(xJbO_Z$ zi+c^;RgFPh1!{duC&l{lA%X(NZL1#|Eog@(%iTuUkt&8cYnNn?_Yig4A+Zcb?LhDR zB40XJnWCm#O-SF0KteLeyVghY&pb3A*|qKk285pu#29j~mj)HqV<0HyZt0GbnQ0ZV zLE2cnrwa_k;E-FfSR`iP8l;SswNM^A*))Puldn$#zcB*#%VYa6n0Ch_0)BA4&FV-` z&Rt}{&J=sA0O!a$`5HI8{-2^IdoHw_k8!tghyfs7w9U(Vp&1LP8UUF-TfF+6VOYJe zR+*|mgwMS{@XssKy7meP!dSXIOg_Iv!716kJ7H9GqBOY`Af0-8U`7Vcy2&lE+OaEf zqhYq$pFR<-ac%a~YO*z!`rAh5)!6_|nJ-aATm+RY$FS7ew-aS9d27D5KAU48V)Uko zlk16qBMdo7Z+I}-MbiWduj;G|>`;13=tzI*-1W;-ZXzABK2;AB_KsKHS(6GxKn=Tz zz7b}fzafIN>e!l3sc*50D%~i|mbk#9d`>x>%v+I~zsb7rFVU7-wXDOW$mRkhQ}SAY zH5n0%8C`ieDOEH{N=vXm32(mSK}GDL?st}_&B#t{0fk6z9!8|i#>Tf;TfP_szTzq5)WS~shUWvA^jd0SK20<8Dg)@2d^KAJ z)~fDCkI$b+LO`z6DW6~-{L7I}2P!$SUG;adK-HZR#z(@0vRElcFo99@ zs%ViIc}#7|p4!_1J9`(UvOH-Mm@hA)nYkL@XcdsM1|#Xqh(cd~>5Ed@v#)iNWo*3% z-N!_Vws&(aFhM56AuK23@s8GX_1x=?v5o9`R?GvoN+~=a&*!g@o43p-?-(@W|}kkWZmyJVOmrA<1dqBHn9%!G9&dg z3&CR(NTDDwN2qPKQ?=%N?g(}ii;P5vsY$9-$Wx>F_v4K!i<<;%6XOzmgN{SwVez>) zYB;qNJ~nXB9*ve7Cu7rnTSZ-W!avAu4cYS6M-uT@VNEKG@p~}^2eJ0K)2<_|{swBn z0Qp0$p@nL3v^yZ}LxEd9Fqaiw;W?XCPMtF?F8MPxwNy(|KB9XzM#k&GR+#n6{0xMkR0GN%vkkHO> z;XrxIQcKEMS!o}f9hm73QS=6Y$T8f<&(-{W-t1Kft^4HCYfT+D-j#t{Q>0Ev+xH3J zY3+6C7GB-H@yxR(+07W&mw~{+!57aGye-X_F_%bX&z8&C7DwP^%vjc#EjMHfQC;n4)FM?*s!cQj)L^oa+T5EU8H@!F-h6^i<^?MkkVO5Lj= z`)jK?wK;!)k7%uOQgq=)Q&E?HV&xMc;wPy5HrKkA6ZA37rG7P_zt0}GYcv*fL+T77hLYMMgOKoMb;lix)p6)?M-J!Y;=3PxccxLe)On}tfKX=2sb*(YQ z5i=Ev=ExGC+jARr$|03CYrVlwyaIVquEI^~aM@>$Cz8??7&V&WnXgp0{$qw5Hb&4? z{ee}4PH$~|@hgBvwgv6s)!W!_hf#Osse!$9upYF&s#o=1Y8Hbcj+4P{_ePm%3kEr{ z;XK53Vtd5!B+9N`x(-zNrn*76=S-0x?MTA7iKN1t(H7}-fUrw*}&!uPY|0>%i@Ww zO7MBSQTz-9F$%BV`>Vmx&so ziz6z9hcdvty`x$Y5vTxTc2|c*>lRCIh1j)TF}^d;i)A31hi-AbP9ymjfSV7Qz}%A9 zscd^|Yrhr_)i=LpAUA47lQ2~;bMFuX*ZmI}wwSlaDd%&Uu=#mXM1nKI=6z_3dRRWZ zzjH2>(v4zHp3YSpfUw=h{}4NIW8or9)@bCEV+3n*<+MTI7CR)hN8-m3-UDjE6*34x z(sDL+HX%`-i29R?v|=v{^e(Vgv*lpOO{Z@cGP^oF-)`Gf_Nb+%P@X0;ndY2@WPuO^ z@MB@ubpZ{%+T+P_lf}~D;k}JcyGI^H>ivgAN}l6`0c9r%O6?Q#2w;}22aAU#5n6S` zwhG(8x()mbSz3Icz%5~6P_ESf`_UAmw3HW~o2t-1Eb)9dfdC6z*Y`Z4+10cHV}^os ztlyJ;<9y-E?|`_Ib`Nbx#WAkUxpzsTFbG zfBdlF*qfd4V=3u{TS#XvH%b;Ro~-AF@KK90jpESck5iy# z=P>CuI4W&XO8Ub_w#j2WeU&=yK04tz{k}545t%MaH{a-bqJE5F`rfGIQeJWpmtidG zIeOgNLg-%kBH}Q^azPqt#_7tnH^nFk1Fj-lz0u-3)k#G@^+uqg=|aI8yqO7($=3?& zXo#W5!9QbV?L4v*ntuLuk`rRAmGy0*0`Bwsd+n&9Yt_)Oif#bO5@1YC2A4T2RL{TK z)06vZ6`7mcqx3sfTL9uCy0Z|Gv!|fnW|NB*j$?N@ZZd7)?lwn7^OS5ZRZ{uMi@>0F zM8ZD9Z35krxG{@oCdtsTU&twYoj9P;d5*fPaQOr5E@E=3TtWTIgaq_Mvi90sbxluk zV#-_r>c3L$GyA&gDmaTT2kS^fBN!LQx|=qVm6??qyA>6Ln@6krJJW0V$H=V%FceYW zoz(R9h|l3spmLl;p5f$0!HDcI-)6F0$L$uPK?hK48XC4bHZg<^5+!rjW2f5TZZ)(owvnXv=Ans!vB9 z_XA9&eEc4OycP`W6v+NvQr`1Dau;j7Dw{Obc&>p()+&HuO#vnl$$aSVJcEZUni|27Kg!%og{fW9APe_!SGfA{2C(U`!L2kg3K67o^b=#4<} zrnZ*9jT0eYoSG>1 zo#>DYaSbt(`VM#M_fJ7$$5xVH3Xq>OjO(4|_wMA*pm$aA{30gD93Ogew-np_mkcy9in^XC zM(E6L6Jgd=+L^~kIcevB$0)g#44104rJ{Ji}rVO(b0?EA~3{5IY+33f4&n7b|OQij~hq2Mj#VA)n{Rv<|R zUIIIzVSUwc=JsG=0L6oYe0}Zu!^+RhMXZBQxn@FU#{Ipd@?I|j{348tWZl|SY@uW& z4!u^uFug?aDo&l{(=p|v#nZT2A}Ik90Q)uap@NRf!6A#ken2Zq@d+THQ)8sV2=3r_ zgQ@Q7p2u+543Iyk8_GxPUy=wM*g z(W=?9lL?=ZI^nH;*Y+Qh=rXBX4}#m_kb@==<8R@#1&4-AJ>9``nfxf51>A+6h5D&w zr;4Qk1lvMRV+J}$UrsZ5edX#q2A0KrZZw5*VAf0Qg>U<&#|IXq$IkgRJ}s(v<}m8D zmvDtRKy4b5tLy)i8a>BOA>%ZmuswC?(va(hUoKn0z)p`fgLyARX$(L>Ba zcg7%OVogelni8^I`QHH%8$|{3Q2>s{n#7|$AJFfb@vwc|nJm6n`%CRqSel(W*rPDl zE)|@Ri3ww{-U<6m&t$>aVkdQf6S`i>XkMoD!4GamXXVSZZLp^owLr?wm>&eC3#4FO zma9?m_8R*9(G`5*?k%%&*;0NQPpY8C^*kpBd@Z`HAHu~6y+3|}M$N3%qMQFxui(Rx z9h*rLvXg6Bw|&d#Y;MIr$mjWZFpE(T#rkkTskK_&hjS#$eU%4Q1^Nb|h1~-(hiysn zkka4ornvMl58;kp1y6r1^|Y}}??skE1}f$D3ZaWTqEU-JMq`k;_QE+`ziFbx++n2=MeFA6HdUIaEgLW&Ktnh z-r8=LnuBYBi$iO}jcCYrjFKsTmzM$Ic*c;LF(&Ll}0@)is=ik!s6tW6eZ55Gq1sL;_=OPpgeJaq|w zTOM_CUOjf<%NSsvL@I63+n_Im;t@zYXeS9n)kj}h) zDF%y4iUynm_W}c_mc>y&w3BLko#w|187NazB(75nGMJnT6iAPi^K)=c4=nA(U|G4( zr}&4ZQ$AYd!JJVSAy@t`F9FK(NM?vj>drB9vAvKi@!+oz%`Gnyjd5c73Gk?P<)Bry zoLBlHUz2L96K+eyEonOHtna%+oTYXB-CFrq<&Lsun)m)VTfMcm<5?tme=~q}$_CUK zO}g)vloHHM!@7Ta4?A+($XL08zqTmi;N3~o@(nZGUTtem(n@xxq)Cu^3aH)=U~fvn zO=)-x&W~;_DmBcC97Kl{TtT@U5+e?EFW{G36>u0&NKB{Jeq4I_q^LWY3UNJ zmrxE<^>F}&o&ZF(-|CZm;R-DA736ctCT2F64E3S)3+=EWUYvEX;X$!%+U^5!Xx_1y ziapJ*4yRU(VF`r_rpN$l5iWrmy?bWv;vC@8_&kj?O$^E9mRkBOe|XS;VUx74wR;Hj zzou0>dZW~P{gesVc??xM$O^DA%E(?a-lKl@wO}=JCriXsY8+FAQhts;y_2MK8*F>P zlMVZ`p|4;D`4N^G+xig@d&-@yzVwu%{nTN?%UUzqQt%sizarM+DsgkyCGYe+c*2<{ zv1dhiImE2JexfG1+*5SdL7kvpiK600;m-swA zI1&E@#+A039Tc2ZeZ}rgFc|O>BA05si3I&Io=0KGzf6aPkcr|?s9bhKfbt1D(&^26 z)=IjO<)^y{vil;)fS7Ijhh30-C9xV={|3^%fm4Qr>b*jCMjHf85_4VEt6VZ}?0v2* zdRf>v|09&&wV|s;7lOx;L?W~Y8TxW?HY#o(;I6C|U)bbQh5}l()w!ZH@8TpY{aRoGqXAtLKOn*YVO1-2Q(@UF*>MiPUVlaax}Wb%h9oj`*xXYkpSg8mpG>HO1l zqsx0?ftTH8)w|{v9@KSyn2%s63?uv9$=jvxC;61aT41A56OvhTK^&(#M zje*60hmuwn%+`1wMj~Q65R?RF)jcxzk&FkS z%TixUU{w>R7*TX7mk4Zpx5rDE)7nkazYYP#?RGidh11yoDm{vwFaEeW8~1|;{|s%A zo!R^GzMbuGQ(bL@<4+9Gc65vt-R?6GPD@NNK^CUHMEjyQ3|YjC42N%!GNN5Pihp`M zxs?{eq)5z3QvpW^8s=Se&F(81<}!$b}OBCy{ey^`2u-# zq?Bl&p^9e0>GYCfVlvnm-L}pshca_1B4h@Y%0)KrdDj&0`tAsUQ@HCbmneS0qW&pF zMx#uB?VkKM*!Ig!iJx)7{=x23h#olT9xjBy9h%0>LdbuS62GZiWp*y;eMcp%{WWwI zJa`%hu+RcRp&Tt$$b6=sSH@)TWjH}8Hfvk5Gh!kMQy)y_Y&7B!NQO7EL;la=eRL5l?``rk>IgHp(WuYzi-p5)d@roe2 zdq{#JvEmg#)_@mj484hm&0-CMcA(BZ0MNYM1aqPLMij{m0WVaV5H?TT3KXP=Fd}JT zR%bHy=Y0ThT2$ab`4qZphdmK|i0#3>(U6~qD8W{4NPN6YnS6Iu3_+ShYXl%K_cBnT z?0WRzxW5XDkZ#)mCTW^pvf8hel(yRl=XO&d`2PVnK*+x+6!pSl{R;|gOyQ|Jn<*vz zqtiQ=wT&=8pYV8*;%uElb&lXlT9}kncVnW2W2MEk#D6P=ExDYMI)}=~FC-Mq#s{^fdsr;cvJuU6^nbdX}U)e$?5tKdgjca{RM9_q+sFPbBd;hqv{*1f^%J*-*CGRX0aZhJ}-gciW)$n4`4 zBa3X|u<2OL``hD`n`LkW_A5A@{dz!hIk?V$3oz`h$7uEwz^ELIY={KwzHV5{45|S( z_Zsx-gl^#@(wpyZj-4_$M51$tyF!S^ey#|V|D>QzXW+?$SfZbw4$ubgJF{6-)IqiCA*{#?bm zKeO>xSnDA&8vf(}(Vo0^s=ud5OVoS`k2P=wuIGwP%Lo=wl)R@yTUPF%WA?3?2RNbH z0JtSeZHi25&TQ_D%!lBf#i*hdPIGVsL&8Cl?J+8_h^52^`wP(Ae#U*OVnnvq$5on% z=t}cyTH$ZnXuEz{+r7$%G>Z{oyD%r_EuKF*4Re5tKRaF*^asc$-{?Uv@b6Dfs*2(L zH`63kPouKapM2VVZw#-dT(%ru1W*f)J>Tk7<%9vLs@@$l{x+g);#zzDYWj%>7!bqu zTpr0P33_OW*PF$gW4GPWu>S?Nyo2#1HF`{D@F$0yCy3H@;~iH(76BmG!YxH<9VWv> zM?^_D1LvQGJ2}VlBpf6RcY7EBd9Q{&06@cl83CHR_SNs0^=Z1gVB}!MknV!xKdJAK zN3TlhE<)&6xw?;{WGjZDG=nwKbi?%#Hbj39OTfqNK1GQJ7lAIPIp?g*&?|A;;$4Yn zL7r}4vrIa6Sw9V2gV|-{^ewP$ZRT$Hj3;&t=f=<;Y|F#jg%-QD@J2hdeEs+O3ogU4 z{D&ij3{R~G3@v~EM1SDr1zxD12mxC!n6(p1J`j$NKJf3_HF;NBdUSMrI#9=hB$$X6 zZXmKbz^z3#gkq$0TnUMcYz%SfIE$Oqaw)*GiFGtp#zDrJo5>1nnX~csqkx+VbUUjH zTW_EWV6K6g$LOwpd>@-Cd2g5tJF}GGQhPYr>vS8<$0qQgXGgmo3mhPLz=`tpW{5jo zVF@v4I=bke?nM+osL0Zgq!(zAQML?tBTX1TVgIc3r-BYNPA>hoC=f5MUgGIRECPm` zixYysj0tZ&^54{JFb~Gj$hg=nm@C*fIWPmMqNIcLdB=_#B|^=Mw`!3LB)Klg0|uH) z49WYF{vLmc%q%>6Hz;3tYX#T7rszRG8X29K1t=lnBxmn+{q6zTWl#E(c9mcInabD# zncuOzBx$ul!r&daW6SSvpUTwCBoz+A!&K`gR+eSJ6(#Uetpo zD3_r5B@Ny1&!^X)JYT}r!NW{?PQ?g7S!iWzes4kP-#9U$|Md?q_RKvJyX>381%h?u z$e^%%*5_z5;*g@hS$lU_!}>?^-}vtJx`*z$U8s}jV!w{-PMNR&UrMSYI4QnL?9UQT zm>%o+;dJ|;)de(Q9skp){O8LXN9!-Cif-W?21rmoWGA@W3@ME@=ZHkjX*K|k60qir$_V^THeTiQU*0mA?7o))(rbg}Q|2mz$J!p6zmVRuX0 zZjmmJGxxnv6%hJ0%!|f<4?X4Fi4p7n2{|hXY=ag^sI(KC^;hGtp|`C-4{0}a@h6}t z1?liA1d~9H;~JKiEKR+RyKsk=wXfO;g$VCVQqdqh3`Q}&^4JmVRNgaetkHFuQ9RZ| zV1ee`!s^|-D$l$U+38_rZb)pb2?W71{)&bpE8<#X>)XlydgKO>n08d(+R4XS@5PY~ zs61U>U8-Ex@OrDGS$ik`05m&RbB~+V3y;8wJMX{ARf2F%F|W5t;e0(OQ4$gGne6{T zagUF!Jv+hmXL{O@Mg>9so^CcIV2tZ`Z*rMz%4lmzgv)Yc+Ohz(du1J+|3fI9p6$Yq zly!k4CoVdgvpaYiz7B`C>fQxkMwrgCvRd*{c;nW@l&=cxIgyd!9J|0Ve1E7UTa6Qt zs-8&9xqB^6(HG`gPIs08a@)!py6EfqvGM6M@Fub*aNtHqM{s)|Cql+et;ZvsJ&o{2 zfj$xRq71xQa$9?(ewf-kP0h<^J00kkcFNd>_%J;wM8U)nmK&4GqE%nG@b-d;T(5gh z7ZU(%AkaJB{_|Eu;b-&{8I%BZ6^HHSW(RKbhhz?ufC6r8Id+X5OOh^2E%)sFPFrJm zz&#>gc!L;S-m^?n#!l{ll!aHZfPxSPQN;64O}?*;P}(l^<43%ueMyxe;o7^2;BZ$K zlB^hz<3X1J;fj2syIB31?j!Nj>iUpaqOqpAlxq@9&@mqHjG@Hv@P?YEO0JGNbyRyk zHdcV`T%eEirzdp)IcbgRSMX+^O|8Iib8KQPY7~9(9bh-MUdc=L=9u&g! z&MUa~eUFhc-^zLRG23za@ngB^D0Y~rm34|}uHCd5%_-qML zs;4_6SWAkt4WEH$RN_J$6@uG*+@iiOfeIKFgu>$$*)jh z9K5TNed*4>g48#de6&%sS7x2@j?g-@KiP^K`H;d8tpNLR0HF(zrn*4q8Zb{u2$lYz z#4AM1f&2W$X-$v|9A1A$Tm9fyJO7Fe$*6{#CPd?~5UZBL3@ioX`h`DmVy|I}!G8G5 z-LyT)`?jaynQ%Hipa2nRXS&g7;Gd8ZLzD&MNHg6QoUrNTR!W26e)x}wg3+gO;$%Gr z1k$lP&@5@%)4v-(3>>%yJIfeuFE~P{l|Y5j!5cZ}$?0K8*^dE`eMJ!4 zQ+6m}5;EzmT1!L`*Jmd-WJ1ey;{zG|3{f$F>!YCMtk%!6i}8O)PyCjddiE6yQ13m| z*ExJ$w`o|319Ee(W|#S`iUSBvdm+pdb z{REdL1P@oyad05Uj@od$DCs2`D2LLWv&YZhFrVR!ar+3e#MPlU5S^nlMJX>q+bHD_ z>4oP%Xp%uN>u9@cr`Co+gH7DC+~y@~2KE)3ou5?hSkZ{>JUJ+yJUBLSf6 zGO!}@`=)HSJ}Rb@iZIt*cDigqDjWfaqY$k9-x9#3H2mZ853l9H@BwCnh4j=!6mosW#IiC|mm zCMpM>PZWTZYxL_BorZb{bfUlgavo(oES}R=kFjb0^={lQDK;-4+*Yh>Pk+FbJ?2iD zH6<|5DA8b8B=uxTS>LrY=pr;&(9@EB!gr5UzdlL8>KzKemTJ1p_2F?uyC2GfA&2jxX(0uQL6D89-`WY zpN(o5cHkd>6kIoJ)W*giVu%>cKf-SnAKh=fd(nQw#25WX6}ACQ2`RtYv)fg!oqdO` zQ5(8GJ5@02nSC4{La@K^?7KU6VQwF{Qkr;e@6{b_v9xH4nbg-7bAZ#T{{b)3UiwC2 z{k_xSyv23)i$O&Zbn_Y-HAd*AOo3-8XT=wD^1#w7G>FQ}D=7`Cr3R)ecpz-*&#fYl z4~dPx`kw5)auEC12L`6Us+@8}nt01Hnc0iRLMqh&%DL$s`~_vs;Zbl(v_>NF!KD+<$gmGh=uFDKfvb>A{5S9c00$i?>o>D8?;p(^dJ^H3hE&nY} zq`VdF{6Jmt1xc%T^px~mUAj-9>o!K#Yw^Cz>i0d9 zxaVzJ>>EP2y7JqWC3xPvLCW}gmd`^KKE8Y8ja*ve9!PbJ)FMy@u@%wf_jP~(?HT4N zwX9V^{WkRIi!x>45=vGVPpPr6yV=rz;TN1#}&Ep~~=MVRSjYda@o?r2IQ&PkIEYx#usDZ1a zf6e;^S^o^MY$dLg*Hm14DPo*A@dIe$jk<)4s;T<4??9fW!W<&u@o%yAevm@?_V+bt zxd&S3G=)I_udGkqKF)iGE>Kq}a`p_#brn8ojSH7aJb9vE>L*k;xB*+_c#&l1Mi#s8 z<+iwC{rhBEB1y*u3bQlB8`t+Jm7O0D6^BcNaa3AQ{3BQK8C9*@y1jF9d8@{q30rA9 ze)A5YE0v8V^Uy#d0wvrGD&VCm0YJL*W|K4K*mAH8nCwK7dkQ1Dd4))_VpM-VH!?H7 zGOEZT%)}>-UQ|R0)8Dj{4z3{0bZuJy_-a1TiI;0`hWi|()lan6ph229q%=e;LD;<{ zH0;F(=`eBnYe)9Ax8G3&8)e+sS6v6D7eaI#ht#EGr1kAfeJ{#0UlYwO%V11MRmK-t z7AOy6($k&ru`x7whqmYe&1ns-LKYynY1ySl&eFi!Lul%p zWuvSek{Xc7@+-|mQjrv$uf}A#>7OVDVgOuXU@LzPOM`L;q z?w8*ck)wSQY1?I>H6(KVZY=!F#fJ2=V+6f*bg=4{ST62 z6>k^FtI^L$tQE>k)9Z$cK?-f+DStnS&qAg!iiU#g^(PJ+zj^mdY_lr=(RZiXhwt|F zXJTwyNp}417aOIcUa zaT5iS41W2nQ+fqZg-QCwxpvbq!PjIB2P1+{qh4Woa#GocDMU{S$-8R8p2ZMB zuzdf2M%5&^cDaRH-DmR*CJwx950f$mzWiE3mJEIHgax_lrWGKwyN_=|@DmXHk4B;x z=7eDhCZ{tWTO@T1!G@lk2f=LS#k39=p?rV@t&p_i2(C*`1&^-*TrRMii`AvNg&(KfYwn9EFY^DkE(=<#J4pM}C=7!~R#h*<pI9aALtiZXnTj9Ai3Q+gt6F+Y?|VRK$roE z8W(6rA-ocV+dRC6LU?*wxFrVRN`O2HMP5K5nBjgCalSPdM$(a&#tfz@ML`go=?X64 z{jv9r67c4ZxP-uV|>G!3!`jtE!;lI ztJ#$Vmki{`EsDsc0G-tu;8PCKywS8TEbUUe>Ke!xs8aoZt)}faJZT5LZnvDfX-f!w zeR57U-Y^q3h5;5~g`-=xkof6f5_6pxIYyDFZub+X)|$P6KcB%{?2=*v>bydq!IV8%Grh=D^fXWUPHINdXXGh?58AQ3b{OkM+V&ER=(hOC~{1)I(` zaEwfH$4S-+Tz8M-STv5Mx@pSeP6L+ttv%xhJ#dmrOzt)90NaxD*)Ty64E?#8g0c5OfG6IR8HL;8@7Z2>)LxTLkEe zH%#!$M3nyz zD1PfU28~-Gj+RArYdUb(c9j8;RaMsw*BMk`jTw;&+?S#muHAZo4YI2h^cba2R^=hI zE&P(7^OxIYCD4SLAC|K5g|)HQ3kC-mb{@13*d#xOHkVAW%2)* zx{6N8Z9C8}(J>KdVC=oKkrciwTbknJpuW{Stj-zu=7)y`KMne}e>73-NHnz>SqOVh z#)Ctu)Wg*Gf?fIW-weEC+K`{HSDdobRi;E1cu);M`7OhlHmYL@(b*m5oX9VxRkhrz zG;&S@6etT2))a(zodLJ2@?`rqobyz@$@R^DZ0dGUPPwj?mpnuTni%r0wg4xc);m21 z&9KMQg5H>g(~13}#;SuVSOYwT;0e9_WnR)P;aFk@0=u&;W;VL`V%zd^w$#h4>QNQW`x8S7*#b4wbR)B`9Cct zXow1{zbT8GNA%o&%Mi0hdcHav_q9LWbr7QZYkTMGo?PqlZhu!*#LVWuRsUbNbPKSx z+{+)NS@)@Y_3N3NxX~?r`OXd8E0vA@XUfMnr>ov}yWEe zjmQ7)WBpq0%)jBENC2R20u1~90RRxddjJYhPyt9=J0Z;$B$`ZZTQ-u<0xY#!cu7ku zg318TL}5lKzut5kJ&T_TQm7^X@e~KJ zG`#q9RouXWatT|R2TYk=%Q39#a$R~vZJM+vrL-dr>H%2OiTrp7DTuI4ZCkeQL-GSk z`iYKduNTIFD6}uGSs}lmW%2I;ptze=>vNXf9nhhW=jw+8^N&j=AVgTEbez~Ul6M2x z)B>cdNApC6pVd+Nwe~;2O-*b9Oc5b=qh?P-Km{IVeiEgl_>EqGx0hEk9KyUb~}NW3TRvFUwtAikTD z^{rHIUC5A>7uin(H7_e;J?^R9=ZaEAG{REI_QiY4cjau55ybdST1qr^td8~Fq2;?- z3@AVZ^;nm+I1;Z&I5d08RyYta+7Xjt3b7>gK4M^qg>u7gK10kD7Czb=L@3JnsW*li&`rZLN=?Tg*Tu*0lIvP^AOtaS1*?x+;a z;iK{2DID$pHD4?Q3G7wBbxILhe`t*35=r$ga8I-4aE8zYpB{S{(Vi2{$yBiU0 zdggF}0;r`dmEGZn7#x)G_4!T|T6B(F|Ce+THS@e-MxXijimVwAJno zOTIxLQekHSmIL(BeYti>Bj4etVD>umN$0+?z${A;bpYoLr2xtTZQe zjF8npKFw!h?V{wd=aTjNZ;P~|j*t4dldKg|=$#Yt97h-6abB@J<%1Ih-H@_k3T9IC zHDo>gPdfcV;klI;$lD2lVi_5GjadgUl#AT^mSXLe2+AdF4^m4<@^xP+L^filLhC%8 zSPInyLTsiajN6JmDX;WfQJ_q8^YH{CEK@6-9z_|+7RsXA8hY}CaUcrqlPb&#`31eN z^7@?X$;NZmw%&6mb3s)7&*}h}E{qmljH?XV*iYBMQBci(&S6|Fzzx&(wEM5u>C)*%tDNJf}+^K4B#0FWM|EACipK$>WfokZ5U-+8!lq(&k`o2snu?0Zdb{j$h{I zz_CTFq|~835e-=pmMkoVisg}n ze$KBaE5Nq640yp`mwXfViKxog8u3!-Q%gZE3%%*z*_)Qf)zmoy8$OA;8UPnB({cMl~QL<&tR^?fmlI?1cstb*MNn*HcNrT#KyqM$`(rWWls0Kyu{$V>6 zOs0n66oX}>3nqDr_(xBQoG4Lu&mFcRls{G!#c6QpnR;J@fLpr=Pl{+XPP{2}to0dX z0D^0*Y_MwSEMkO%E>}n5*kAgN9?FpA8Rn`muN+LBSp7O8(OT-PWSSQe*A1217z;4x z>$F5f$0VCV{sltptEbpgMPLsB_T#Y_`5M&x%=B{m97Ln-K~H$(w^zhH7;<(O>CyGe zWA$Vd7de3j4k`suTgRQT`>a|j?kuraX0uu0oUuC=!1PjJ$2T>10Vou0mzL)HEzy(# zUXCpQNUfLy(C|K~0sIffmFe5v!LlnURJ^s)x$_rcq#vJz3QM>&B^sPZl-pz65Xbb9 z8kfh-@nHP-BQ*!k_G!%9^U3V`m~Y$X&g+$4H`bl?Y=f(xt7a?PvzxZQjorDe{Z@U| zD*5!0K3BKCuOG{;gpTWka=NU)^+^Bc#9Wf@?93;%ynf$D`seghSJALsF$rgQmncjB$TGwye;;|^W_J#bs@`TP65aqrw`cVK?n!WCJH;fjs6Gqz#d zwBm~523+5y49-YW!-xsQW5i#G zmrtxVRllw>b#eV_OlB|-W@~EAx8MMP4A-!NDlkF|ya1OW3@nI{hH+qF#j0#&*{WUI zM{Be;`xm#z_3qyN`$xU?;&1)NYkY&Zdyn_}k3(&UhNU0{HFyFSB9XC*5`}+XFDpw$ zA~hpkTT(^O?gew|=PqT71rkYz0UHXIb*@3;BaGt13rn|`HkJg(I>kp_>~S-`h$C#k z7VmM7Lm0w1u3;M8I7d4v(KS8M8??&DS$V}8HnD>TSmK8qO)}LfB~8n8OcUwjT$`hr z%bR&SQ`w&*BBYiqDhoM?QCh?$R|Lv}Y)D2Z@ylv+tVy+6`_fX~6PQeEmnjoPZc`U8df zu0GMQCb1AMTF_TjqP46o?Pxl8q~(>_c{}M0WUK=9t3+L{8#P@^mFUVw|NC;QJ=F^> z4KihOpKG4Y;>14K+7@>re@=18%w{E5vXklXSwEh2s{i(qr6yAIsWsF#>Uru->K*D+>L&GDNRF-0&L(u6hQVrJ zO|f<~Pg)2qo|a3ip{>x~(jDl2^hkO-y@cLC@1|d+3+apWm-N5rKf_ls@Zmb)7U7Nz zKL(GH!6;)iG0rkZ7*84R7+-K}affj(_H6qY`z-r%`zHGt`(^vL4%&Eu!-m5SLCaBz zpiVF(P#rxSLmW>!_BpOtn_I>Ub^dAdw2sjfk9B7l6 z8+amcFz^dWgN-3slHAyx?9WN|Nq(FZPA_LU$arsU(6ykygRS?u1t$e}1+NDG+`n;u zP{?Jj1ee7P<0f+N9f?1Zb7Uu3D>OT_BD5*AKlFMSD{L|BRk+Qez6dPYJEAJ$ZseZG z;K*s79M6|m$h*oDr|*qQjB1M-j^;&=#i$*wi}^y?6?-mDCN3=QWZXi0R{T#YB0-s2 zl}Mrq5~q{glj@SyvgyfD$!L103RPn^k3Ru407f8$hCm1)bQD-Rqed%0-%`3Lq(LuY znuo>Uox1>J^v6X2qlJM0E#392jwOaK4IlxgSqkb3#ma9)1XNdFTZtd_Cj3v6|HJJN zK2^kX91eePXP}1TC48MDpbb?NfSw0v=LQ;4pNKO>ggkD zWJ2q%_MnJVWeJKg@j;U!lmKy&O+<@o6$4oL5JI+PV6GqyjqZNCbEZmzvHm(OGw(P+ z9e)sNPhgvb2*M83QNh{8Myxb&j5_K$LnO8_!Wko1kXoEF;|H0KYBWWC(Kgo_SgvSP z9eZA?eLiPTp0pL0(3VW*(A8o> zl8=e}o2SG&Yq$~hBf5ArmaZm8p;)0tZiuQs#tJ-5Z~jP?kMWN8VmERMI*{K6u4JM^ z8g!QXi{RBhpq|r#plP6KQhA+_5K5@E_htm886uZgxV9!a#tGIa$EN1fg@l?VLj9ZG|Yt-`j&w;Yi zq~bXs4^Akb2pb2-el_0H9NnxTmhkSBL4_g~jLthToVvhJgxjUn7P=|TSwNDWdChe} z)jr4c^p^t}eG+qg8rgm6T(cffIX=K^fk+wUPe_%#Lfo_$IvJ#WobeWRv!6wv_^6je zr3+0cnfS>9VA%$Hi%`2uMaUS#YRLseS?MGQPKXzB%IjBar(KCN=*^a@9KSK2KAfF9 zDxxs!tNs$Ry*iW6{lmScK10X0q?vBJF14|IJOHFp+|$o>>TvA#u}}KSGhwy3%QWawZwr&9 zKQU4^H&RfUM9$zW8DM@u0s>?bVjp?ju$C=#ey9T6xxq4UHeI6%-zn{}GL;Lv4~8_n z+W+w-=u&=n*R=Pbc|e9hfsx>aC#Fx4`roZzI$?#yx5?gpe!=Pkf4DZYd()$7n|wcT z=q6>nV%+%a2C|m2he47w<6}77g?6?dH4dxwZ6K28tV>=5?~tNAoT$*cnqpASd-$LXG<0O)2n%|%Do)%MM8ODFREcNJtGE$k z`x@86%`lpLtiCVZvsk6Cy4~Bh>>n33RqS-nW6u}drE$e4!JKdQr1LL)`J{nM zOw<%GHC=E-dr}2XG!Ot_<%rsOiDuE?`LYYTkC!CZ+3BPbUqS?ioMGz_4r#pFR47q8 zbDqMR>zCK&-cTe#!MrLa^>?TMzR_Xr`Xf{;;ELA+m;rb0vvs^8mG;JKLA~f64UW`x znxPh6=J%nF7-^QF5Qpo*WjK);tgh;cN~uhvC|C53uC@#{Sq@qiLK}M1)6muy)0;-z zvJTuCiz6w-dM1+ zP2~tH#Y;?(tcrk$pzOImKv^n&202|{QhErI!ZoTr`uW{<6*{t8(kj>s6>x zGs9V6Fpt5_;{ZRJ^3~~q^_0)x#D$#_{ibWdF<Ls}!CLEVH9%KU=Bk+B7e*KW3m772oo+(1PT8)TdC{Tj@@zT}q=66qg7hQlvg=fBgjnZ`aD z9@$>$?{Z6YjC=1MzHXu8T@0HU(vTrtMC#ihA?+c8T?fcphkCm9>Pr1Ke~tPB%@$-A zM2iPXg>OKh#MM3ZZ0+5r|NbTkmTr*@{yXRGOkBa5RcEj9)&FQSK*zD zQcDPVrcX;>9ddW376UzZ^ZGIZbux?^nsMPd#Pu73s~60AizGh8(*O3AwN1oTdHaS= ztI|K@<)!Uarq_v{7419kOFkW&wHW~mWUj14Zj~qmH&LhsJ3SNQnyb-6@$Ck z<#oR`*KeOU;F||SRhDw25I@|Jw4sqVWpL*y>t}6cYis|Ax!t1J7wksMhqcqck zFVRRHra&wy1EaCzxMk+#IyRHQ4eaOXXV~p<3}xLe76k6*Mp>Pg(Yi&qWP2_{QmWtN zl-Y<7kggFM(@JAT7rkx|^2i3}CzfVVs!rkX>)3~b4_?%n_@w&fi+^f;fALjawrM8u z+aaP(E)uWS9tE{JfJP!$Bk`UZYrdO~O!Ny=lj?;=A=%8Q)KJYVq)#*4c-|ePkcC61 z$F0XULwLi?mviOsK{M}^9wF8b;X#1(40H$*LQJx!2bQQ~Z{VV%GgT7y z0r5gK44RADY{hBH*uF^PxIXm|{BxWpi^y2zm?g^W30;_$PziLy5JmkOK(L@>+l&fL3dp+Ud`{u!KE!XlP39`lCkY~V6bkf0VS>?q(qgEY9ZptxL|w0D)RSi9?6%B z@_0v|UjcR;iT;FqbU%b*@>d#ugng1Ir6dk~|6S+Kbp1a%0XT`b-*CXTd-&cr7r%M_Iu*hNXm=o+ij zfvzBJ1-24$5xL}M=op&Ct)t0j1WK#BorPOm7@=7ond~sQ2ISkr??8n)(?ApP4upUX z^s3JgF7De^no#a2ngJT3e4(1r@mXicaZ=w|L)qo4ps-WsLmW$~F`MR(2p#Gb!&2}^ zVH@f}qe;P0KN~`M2%#8Iy>&j(o2}ha7^e91BPV|cuN^oyqo}hq*G46@fua-QlbwF zV@m*6i=TT{_8tmflC%)uKo8~e=!nwALDW$*ILcE~yb+UGOfzY=M96$?UL2Q~V=18d zGP1OJq=&?kYD$@JuSf*lO^NVF-!e}&1tOI~A3_DuvXIUFBDfWZ$I68Ip%+?Bt-M0( zG$#^H?G!M$O!LBEUue)Q=w#QXl0@{-d-d6uPr#b3jEBE*NQx}y z7wsZ}1ilxrOSGDc6*g6fL-S9-ce4fLIKfDmz(Dp@*@<|y=v+S+)I-&MszY>-6Cu#|vNA>~_nh%1xh1qc$|}_o z=@G!lR9lu2&)XR2t2NBE=o6(kW686ylQ$WK;5!qi28P;3Eua5 zr6zjaTxDd5zmB^bniZ%mKxZCo<)3;rnp*_t)ktvEQY5H}YUF*Jo%b%aEmBysQ9-Jv zTMq)t34(2-hZ@& zEpnlrl1kft#;imly*moeTZ8MqG+8vf6KFUc#0oXl_cMc!8-mv4z%)f(-$R6tN6GB%9BNrp$mg#BbB*dL_NNQtj;QmaSiQ>Q)gZ3jH0! zr)UXu7HJnQYb}GJ1*~ypnF> z=9{$fC@H>7W&!togY?T`DGPz_OPgyXM)jP`=~^6B{X{(1UrZ1 zvcMI@wEi+N;SRx=Y=oSndphE3bN%h# zO|bKndz2$RF(^!h+5(zD;M&RC>6k1{)XQw{KyTRK8Nb5V7yCo|gpJ?J^*+>7?&?W% zr}zUlKZ7?koMjTgfIemYe6HiNfD!GssGJahY-9e2zyF*n)EeFgFtqa~}5k^gBuuzLXn=OPT;^=<%NNGMx(7;FP zAz2!f#F7Q7FCJ7uDuSF5hJpU??6=D~S8gI~O)_PCbyifO=lLTfdUlD&<9rx*YHX$= z6^aDCUcCC*;?nd{3hL!ujdBz7DrAaD*WsW6ZV-{0apHzYV|>HsUCV|P__TNDfcIUI zMN@gWb5`v^!W_B#dP#%E1R60zSAo1z6xlBa`O)xV{NRaLEIU+NRwm#8HfzCP8w$L@ zBShN52R1DYS$m18qH&Gc6#?PCwCT0E!FgcY6AX=DI4sB>g1IywLL-_fI`|uAGRnjTV`)|a>>{P z5QYpEAk@>-jq1vJ-44-!g3cT6v0##4g`!vcJKn)fu&YxivoSzTErt=(QKvSitX2ND zFek-Zlm}^=L_)R!z5ru08?(#X^LnGvfBa@Gp~Bbr+N=oC15%N&VJiBSbIZo|VNbq~pN+gK~9 z-a<+xiH1_s9arHPyXTF$+xrezv}cz{_7#(zcbtz~LW+U?z*a$aga*6!OV7akE2lbU-C^SqX*_c-)AP{sgKDve!v36MeGw@g#W&t0}a7q z?jc7l@pRe4yQUOZjET54CPx&w-jP~ ztb#~;!143jGQy&>G8viOFM@e;)4Ph3!Ivm-;Fj)B4o}1*vCysl%shUgm~m?t2F^Q+ zl;Wmb3txp^bTiZr9C5IV5CBm-{J0_0r9W9hvTqLOoYoQWqsS|CMBdX?0s;&CmH;_E zwVJhYUAt|6GTJ@798e7R3cNFz+@L!~+B^;=&uw5P5r7Xtddh+cg)XBVt*jn+-qIJ- zq$miJ?lpt&xzn%%MnVr$JZk_!K)%0YxTnFK zYO#kr=DcD*6%k$>W?rRnoq+7>%i>4-`t{DdR6Ni?GA(|fbXSwhO<5@sd4_9SgqF07 z;1v>@_UzUGUb>}{W-^3qJ|Z(8H>U2iu|x;K!xDkTU_YH9PmAKO<@c7U-{^*LfM9>UDrX$J%2 zQLw;|TNBPRS6JdA**y^n{Y^{jHqY*pGCw=}JM|{jp?iq(!)9Bmc5TfTVD?BX7FrG( zd=YX*q7mLpUDrFqWU#ZW3F~wOB1#*rC??%sktoj6xlrtxA!CMH*^!IztlvBolzVI3{F*~}GxrF!52J%#)^ ziPZ8pW8?rHczt)Ncmr3{|5>4uKq=K;VTHr+KfdZm9=V33o-8-@Jb=?xOO|OC^$u7? z>j$S;r7G?43dksTg+Nn4mLRD}ONo?Wu<89=DJyJzbC^DLCZF!BXFxE6ISwPGgT1*qTHC24z z6`@uk)52QOO-MLgz7egWS%@x9c-n$im%!1#6{uHmbp8WG)U7a1 zS4OrnhJz3!VbqR%^5(YJR3RXZVUPzcg#^ed4EVKD3zQzIb~K^a6)7fUNMsL1%p@}1 zBPncN=e1Da*yG^Mi%#)IC-t;8RkO}4Y)`+LC$@^)KlcOJmoCK}ApbF2vmc)tD29`| zUVHuNY72&cPew)q(0)XQsQGz%iF1TFr%!?gR}{B<KQ zHB7L3+03WcpGRlg9pfWa$l;q4`3=1aKZR`CuSM`&f(T=k{KV);18V%w+FhWSx=)n2 zV<+{EHGI693YF%xb|f|P@3k8|?4C)*|JPN~V^hEychhc-TZ~A!MG>=RXvRDJ?bZB$ zG-+|6HRbWnhV?&Y55?`TSPY@nu_zLz96AOh5ckl+qJd(hKoK>96oN!I@m)oVBTUV9 zMsL=Am05#8cAEqMzp9H5@*q4)Z@jknt?!=plBeDSG!<-vj1hZtnsR)ke%sSti-X8m zRhl&!uxpw}i-;KmX;6y+k)Ae#bD_*e1qE25-s6oaqcTQ7EYFxsF)^SW2cS}fClZsV zL8aP7hJzB5K?Q4)`)ZeBK)F?BmG1z&p7CzwfNzyEIa|em0;o1xY0>-QC|naQq9zNu zo3s+|dd!ah8Gj)r^^XDinyZ&e#mBcK*;H;1jh@Wk(u926oai7{S}0imP79s9MT- zleUw&TPiLrwd?e^w&Z)b-=f&c{Oyp=-lC9qW&EcKkH4glFN%(2LifDSD9XzaD76Wc zry}(i661@M%PWY+3w0=#9^TuV(X(oO9hpcs<^n+2lCdWrp(fvUF zf(JV5$CLYW`P|5^opDV@x%VqrBZKRPDeH3Uq#nna*xF+tmbhmMxaMoyNcmCH`Pq5m z>J%8F0e$@6d$FKGKo*5{b_RPl!CE0=C7QBmgK#k<@n*HaOxC8f>9+~j{GIOA;z0pY zCk0K>E^Nss24A(YcyfBCID0%?WE4XFS&isw*MOt)+FdYHD7FqT&rWFRl=g_z2@h zXv-C@CY@B8AeW{|Oj=d}M`?X?S84U%qs{{W`a8MlXmT+rX)Ci4hP7w@J_Z}jVO&Q| zgud(#hV3hPr6K#P+52Pm+p$P+ioZU67b(}MPj#J+#Ey+ykyZ?_KL&EC7A`lzs6qMB zNU%f``VSWW(F6!F#%3YD2Ypjy!^>q(=XC38I&jBWv%Ajqr?!FbT$N0{rQ7?-zFEs) zylF0tHEF%?q4@w%AE-fz#2bK-X%kCwrD6p)e6){*->?ToH3{gc)K)%sXKCBdw`cBK zBzm36-0~vc-Y&2?V1nep%hxFd>lSL234^j|>tczE%Il z>wjN^$lp_D;z$aJW(vW3(%RnHgxu4u+bpmlVEbXsus@Q$>Kcu5SF%MBAfIO*LK6n2 zUFl4GRYl~dp_ffcZLz;)iW?De0AU&|$Eu$Kx4--Ys zI+etaGuRsBLwpt|-++bT|DzgQn-SV0z3_qotH32LH3`Tojs)MX zwQbj*=VMKLS*|ZfEAxZ;C{o$3yYkD10_#r>CP@Kngv#B1tu-a?s&E(EDCG9qA;Yp8 ztuOoBJ@Gy&byVm>(ZW_0gzoA~8csPnYSDJON?zDnbsFn;W7&zb&bO~TM4svJnIiCW z_`qW5f6k_srjDKgVyOnYTb@ekP&zg3LThy!YzuY&emh>%f~r-KZ`T8Ep)1jkVUsFR zC!?+)S9gt_%GQ{?6_6Usv7&y^G_4WW#ArM^Vg?FcZcy5J9g%rp9wAZj30A_H8aUX- zq#QSl!k}%bkR&_bG4*75}31F{ruY-?akyBhV$zQPvGQ>Cr|72C(f$Su-aFIdP2rM&^1BCDzLMKvB7WtzAUbE$`zX*E@HQT0q; zY3H)w4CKVQlBr=@{BF%DoSnH?TiD5kV+P;D)$P@FUi_5*!9pGv^Tnjcd*9Wx-Lp7q znTzb^`6^Az3n!OUD(VO_2B}i&SS1kuszWLM664u3ezmt_3Ml$;8@Qqr**Xu7r8>C@ zn__s!rz$uxK4p*T*U_E8g6%wh+pyuO{yB?oEx0?IK06ykq{7!qx=nr)7R%|O1+z1p zsvFk62Nn0f`53tu0C9^e1`c>_; z-o@Evp!k^ez=Tzt3)xvrnHU{A#o> znLG=ps>JrD)nFTLuj~juno)<|STEp&-&t)>z^;TxFCVI!WHbh+<41L5-ThRrjN?nFK1h0XFd z34yfvIRyFWSpZj&Nv^pJ zY@517QybfutW%Tn@s(ktr6ov#pb&)JJTWQph>@NnNox8Db}1AFCx~8I;8jUUt)2wB zN_ElOP}`vky)5=HH-_xH{OvPpY2R#s^yi!@ z8SNIpi#fd(D#THAkts+;jNuaWMT#k-PcgnOP)m7+AUR`cks+z#5{uiV(qwtSjX={G^KOTlPrfR7rB<-dUcFV0kMKw%^3}vGY>-YC z)GVBx7l7{GOP)gg3f!N4!bC|tHEc+k9xt?(e0kFlBf4awmBXe&T;06l#vHT%yVK`y zA%6KA1Q-STkj<{+N2~r?HS($r_7FWP3{L?7p%^dsZkb;x@LO#pXK}^N^B{Oj>r|z z71Uq0PC(GZjc~S6*8yQ~nLfRT87M21h6~iQ&?dG;bHP~9zivRU0R3zyMGoK`jIJ9s zC!7W36ZJH#CwfRcONKiynHBr&NwAI-H9& z<>#$wCI#VBLetfOkar*IKS96otx+dYeQAjvWF99ntI7^pC|nnRINIxXzyqI{>;4sW z{2pfv_+lQRo>$CjL&RZFgU?aA`xo7_=J-8{gJl{F5uUyw1Ay~80(tg?D2CJsts*3< zOp|deMV?`A+=1RlX$xt)z4u#O*B?)VPfpc~elYQ!=l3hkk^b?^1xN0?a&&iW3#WBR zH&ECa-Ylc#9-pNQic$SnTnt5X0)im~Qt$@HhNhxJbWw6`aBD{VCiueSA_5F&n^rQ< z+L<=6)uFR>n+k>l_!LNRy?6>fY2@j8fEIs7j$c$IYbnAWmR5qHl2v4lW*G^g2S35v zPmg&E&~D)dwZduJW4kd?F8|uTwwTU0y?BOu%_M zKNrfNUOwd%L^C%+%jMOCIL@unSR9F{5m7*A?eJg;!^h}8gF-stVm=sYGR1(_v3aoS zqcaS76@Iwnyh%PV1EguhFJ~C20xc>SwUN==e@t+TlR7gk;2y;@Ro~=&2WDFvRPo{_ z7r0q=^0cg3bgHvYe}T5zk@mR+!V=XFp0&yCyX1adZ;uuxc z#Dv=R5Z{X`$Hz!)iVCQEqStjh$QcoKomMHSNhfVZVdUcYIvd~AJ|G{^7&9Z`u3kOz z9zrio)14_$3LJ-vdUsR%P9xq z!dsmb1et|fBo-0w%Yb?im@6kD{Ok(a8T9>idt3C1gAs;qy!0PbX>T3qMZt8LVKvmF zBmcu1*;rL1ttnGmoz0Xrhd&<)Q)hZ(?V0_VqED9Iz`CZc0&4}ir~=dVoksd$MxXwV z?L#y)xSaFfKjR&~MC8Jko9ZE>%aiLWjB!21nlGF=_-}2wPMj~+rkS^u?C*6P|81L) zBHVKo#oy%<1Zqq@D7{>Wg-s@UVvm9Ap)$gu6`3j-{^KfliM+3*9%wmY^P#@aIEK1h zg3i0d@8G@YIPf+$*n1yfzwg9*B|$+S0qxA2x;>O>MMp#VKsgI@&9>}P?rsWztINEO zK8|ujEDD-~a?-cMrTPZ;h%6n7M|P2@mfCs)cC1;e(1T3v5hm?LthVkV6@-td{ z?$jpslJ{USj*`xVTy=NC%nuo$d)uPIDug}P95!6TJ0}ifKq!BM%(s~*T{ASI*y*U&R2=~9FIjON;vLOeY>Nw*0phcEmdtQ zf941neIU@N>Bi1ftR#&bYsr(M8DHW8k%%BOrck}8VIwbH)awJfDFc!p4$h%(_#bN) z2_|4pG1eeKrXYtW`7E-KWAk6qVc}?DBa#%t&waG-MG>G%;e5F(2%$+b)5<#sja)#yLzBuvIZMENQ?Q|+A+_s=p%5!>DuHjyN zDijJ!9q@?hHxEQ1R%?ZzRsda$=`8AT?i0po`ss-F0nPV) ze5kcchZWREfB)tQ9hIl-Wr;49(1R))GQm@f^xo{!cu^UPD`XoOCn{j9k3QDS8T0xX3P|Ce6a;EBU{K7sznaK6WGV`rd$vU^w^#oum#w(e~sNTWK87{J%dj(lR%sPN|10F5(8 z^t}eaFTHH$wl%)IDphj|ua|Z-yQn!nl7}C1!qI~&_h@Ukg;paA7_0{uwNnC}fMU>8 zgsxe+8B0pC7t2Gz1%N>+SPsh7a2+RtLpFncko7G0Cf*YCMLD(VEUbssGE{fC7@I>_ zws5LaDkC$Zpc&az*ao)W!%RboUOR%LS&!WHtWMs*gZfhZAeo68^Pt1U@axOB%R(SN znMwfdFIWM^qPc;zJ>M!fckG1hn*6uTA^g2ReUbHyK_4mwtyOC4qs`CyUkW#~C?JIHjN8-@hI5(;r|&;E z!mZ0X%o^J9=OdHn_tx;4GqJYamYFp+VTUlKt=U4l%m@8*-}uY|<+L9u&Jk1L$J5l0imqCo<~A~GcSQue zTVipkL;|I+`4s((nyU*6WBYL2dvYqjIJb`Ip`o^nm43#UdAJZ7LTkXsECOAZzWAgH zB{^vKHEh(;=6S5Y+T7F)Z9~C2iKu_m8Qr;a?v8_{K&s6lo{Q^hBE~e;Q=DDyjX00P z@cs5@1SCo7-iIBUPqSBmio8~E_(pDnsn*ndL{Jn3011Vfj|4TLJYyfpn0h~LKyO>~ zskC)4b*fRU!^%!GweB$rse5~m(j-S-0?m2Y^8LsFXfETUiEcr*Vb%93d((YB24D7E zI+)8HKJNAHs_ISDg7`o0tYpW2+?uHZvXmxBofornJ3E!uPTzCc7yFJY2VdB!&sv>3 zJ3w9X?AY!80eWlxg*wBtxKE1l!JQZYza+}Z(k1ue(N*5fZu;p&ie-kbx%LPgWI%3wd%TI3{7k9N@S9v zX{M{5T{UJJ=^2D1J%_E$7)q-4hppkoVp!|GVxzbT}1!+79fz_tQaQ4eb0! z-w47ruru4=*oO0C(3~};?Tni{{6o;V2!u}UCZ2#YLv67Be$mK<^p;C=S?!xv z?_ZfcJGZ6%iPhEof^d5crUma^PxNP(0Ia*}K{-p6_Tu=neL)%F=_7tNxMbQA{D=s! zHu4V)AU&E790HlN@hLx(k?rwG6Orxsn+iUn+NDSpCObSxa2>-@C4n0n|={`d= z(m}dceOg&JOP~d}?CRt4d3K~pgMI18=Tzj^#G0<%y>qELNbx)bsT(3KMLwnI2Edv^-LW+IsYwip@h#+wk&-r$t{ z{~j;yrFB)ecP8R?E}NsN=K(txnyN`g$LQyk>lJJ8W3rqY+^ckQIa1G#s2H3Tw0ZI1 z2$|Awm$BwMi(y70{bh`poSGm>kJpX$f1pQH4A`da{YVY>pVifwTt~H}8VPMoDF_Rm zm9`{t3n-i4(q&RK&Q7@ zR?*P<&QBNs>u#f-mt7u_T2olpkv5I;aSY5T?Vg3o?bWf1I3E`mENDj-28Ix6Z8enpexW)(b&HhXW z;EC&*c~yFFjxG;`BJv#~`&s$X)`;4l$*oc1(MW0Wvr?%NWFOfg zwUjN8*ZP4kjuW5KA^EE8s|~IHnlsnCJQYUx@1?u@#F_A?>YL=oj$+5LG+$jQgtBTB zqYZQ9+;(as9`B;~G;pBsg-(fQ_{)rFtUoLpQWy2$)V1s&f%;_b>D6?`xuz{*G%V5~ zA2NbTNJc=O?+sPFUZ!>;y0<(inRD*DwXE*-8VQ{FeNzAf#diq|tU*Bfa@bVZ=Pw0jFfMQg9j&PFw0kSxHo!8L z+mv0;(1L;d-sW03Z69F4V1MB_7V9}d%pNM7%i>xx_(aVu3pu#Y3+IAQ1>Z#Sc)+4V zvYI&yAe8zde#>^psY~AUtTm_$6;Ux;K78_F5VaNOo?<_|@l(VLJ>1Rct!jWR{~sGw zI`BD6m;a*#!LPe@;Y^ZDYsKl9AEG>$>j)4?Bi3 z`4a`zZ`a+L3kh`QlJrt9izBK2zEG&eF?(ypWXabYlm{Ud@*26mjw~a zl9FbpwzIqQ%rrQcBz8X#*^MS^Qk>FvJh6*Sg{Xt;AapSBn7aMNiNa>-mJ6a*uzz5n zf13|gQ$)=VX;U}3<`kXl$x6nl!?mhVt_XVk+yeb~a&V8GKcbr4Aa~EEs6RTC(9aos z1Ku`m<2*y~&(OPo{5tTr7ltt%UFaJG%wLj8ciH3ST9%v>P(WQ{keep8$wza%bs@1XVHy2O+;MaSTsdTVRg_7!y>5)5@ zZ3gQAl_#r(L2e}h!H6?3E|guw#>!nyh(EDOL3qpGlH*NprXK;#whXr;|5k@khPQAo z0Fx_)Xa+T(pLuJCQJwV~Z?7H~Pb{Vj51p|4%-t$?Z$e7|e4@TMj!K-mR!XZmVvo#g zC-jPj8;A8iLuO0mfv8b>9SB~_(wxPknnRH}WJ@QHOeE^L5YO;fz3?88c%+%jZ+Ofb zBRs!N96wQ=kZW>9-KnnU>dM=1Eg1=iktx_E7x^e1e7&jjyXjBQ!eKKUXl)Us0fzj! zzEPlT2TTFBaAC2*Lxip&@iz@ItNf(r?f`Z7@SOp9Xr)0dIHseIm-N&xLJKGI~g z<$esfTS3rL(!bc*KU6+Q zeKi@FI!<$kRu|xy>!&Z_j^!)4vK9avUiD$oC7cy_EWit96x?2R667M$(|{mWJoVhk zBD49|Kpsu8n`7}Q=OBt!q`uzrr}h+!saE_sfI}(uyrAYdX4UABMo%{{GPAAk9>A8G zA{dEe6ntzBN=*%BBpfE8t=ufobCz@4m?wiThp5RVOR0=eEKR^iyi=snmZAi@QaF4 zCG{7y{BfI@f$|Im3tE`eMWHxsYzv37`!Zd4R7(`h2-U!DO!{hg-Oba765A@4rQb#C zT|iT*)Ex9ECm-0p*O#-`8!q@Tpx|d084X#g3@(8tkh$UI{e>QY$V6_Tv_xb{l23nt zkn}F+@v-DvqMD)28gJpTW23wM>;>RHfj$rA;#_jXW zfB#Ax8;6nJ)+T|vVvsDTl{i<>W0*p0V}=wWg_LBOip)C26)J#XiecaZs24>xtqx0G z%;ZXzPHu~wCKN)M&r{rhQs#;3T6l2lLfT6DW)W$q)n$(Bcv5Sf}egT7XTiOJLFsnMajdZt}jd6vB#TM7Fb-#b2 zaZH06rL6~lb2ric;dL#G_9(R@eY!6)k}pC`-qr%cEwQjS6*{VMhp_x zTI>?rge(NNcKf%<(ffYGPBrP@JIBV|E|0%y^q6lyiCZ=`{5C$G!P4_%FqjE#*?{+I ztm-i(=K(e*gL|@}pAf?F))OFIeZlPBmAtmtVu&gO?Q0WuH^nXv-@y zU8AW?Y&e_TC=rE4LRmM2c?(=ha~M0zH9;yP>W*;}^+}RY?_5X}3H1lTk}~2|As~Vz z)6ru5B%5*&Kl$DPgL5PfY(Tw<7hzBFp_4VzHbvC*>9J}|tO(9|n>7X;d?9EXBKLE+ z$z&;svE!<7_yHo2>ep$-fXGA92T47figdJwJ>=a2qB*k$T07;ZI|>zGE}l5CldX!# zMrp=}CburZ4|*o;+*CfjF2gNK80rAy%pfxr6C@03#(?4{tL`NPy0^^C%PgQTlDS|z zH*2QpfNRAz^{!$sDggVs*aD}k@A*-Z+7uqJ!6i#Ce!b__k7#$C!kkiBlD9fH8^Z;G zuTBhfgPF$;+h=E;{x;A3xWX=Eto?bM^VP^9iSqAQLpKgwM~Pwf@jQpflYTxq+**TA zxcv+uj6=u89_}?+k;S{`C{>-w6t6#I)P!lwm$n{)I1`J1g~?Pkobm!uRt;7_eyhZ* z1Wv84LeBX-Ol^k~VT+UbN>1&AsC`auss$NoCGNx_Q4zgm; z1!p1f47^|AP%5M@iP~DAP)#(=SBap13p}ERct->z0x!oBn9YP#nU-zMP_~59OTriu zt)ytmc$zRfOuknD!%>#~L%;SXazQ-X+O2YrcT$CCq_M(YMqx_w$20pkv4Qd281^BD zAD!d2zdV1}8(sY8rHj{RUu^xS;^sr%fGmP-)B)&bxg5mEVz6ExS~@E^qB=(E;`6#X z4UZXeVR}vtHWZo^4)Yw-SQsbM<06+x>{Kx@+HSI>7DyjL>bl1K7?G4o1VH9CRx>D2 z97tr42O-F{wOSrx0q=sYlEsfC8+adv6`O~`-6;!X7n=b<9(c#OCY9r&y-Pt{N%tKA zle0axNH1?7+T-O9tc@$Ud=l`>$2&k6j1Q0DfC~wRp?UEdLqER8KB1}VPsCAHrAULh z*hiGAo0MA#hmh%_b)Qn?_F;wmlcZ@R*Aen*jSsRVk`M@>imbMD=%J@+LGzj8e)p5d{W=2Uiv}Z$$0op7n$K*vr3zvg|<;6Zt z1iU1afsHA*Aec`9FDqFEr!33Z6085zDVXJUIOyCgGxm`hekD935xc#hC3=(D?8aMv22l zUMO~+pz+S5moz~1S_)%~!U;DemrtuolXQ$>&?EU$^L|90*uIAaEx`XjpEch#Og$lV zzpBOJ`!-&kaG;qbgiqeJcmg4@DACYrrz96(u(a6lOMQ!vw0O>$Q-<`<+6ro*9+2!mu;N(;iN;5k%i&thQ;qYj8xM@wH| zE<20n+(nM7xkZ)`>O?a|Ru0oJSyeM}N?S{~q>RAq8KY!K2-BEUPQQ{8GSdfFggEQ< z#i$qx+0Lne5G=(N0odmQDMUVzyw7>k10`d(v%xQz8jrm6EKE3Q6lfbW8cEvt5|4mn zYbF2FK$C~=TZ2$LL@uwFQJ^vEQYemnPd4}xj80VgL^5oNGRN7(_X85m%Xy>!j-Z8RRSy1pC!A?uqik2Se^#|NM<=C~p?Gw1UXyos|o1+B%Wa zV(5lG-X3|S_enc_kt9B2gty?~d4l8Jt%Gm$ELFrCeT4TXhWGWxCd?#O#+uD1Z%Y#fF*CaxT97n zl)*>`FH4=G=E>7c7$j3BGeH1}ToF`1qWNy==%Is|kKmv)j5(2wqYaO8OqgqWI5|9R zo#1Y;IkV{s_rrF*0`Bcci6y^KZN4$}5;Nzj@KUt8)djlsxl*!Z8R_(6@WzWvr%1CN zSpP?cO{QxwaDT<~bsHIU-BsS=H59G<8wO5c=S9LeX{VbZMj;5qgLKW1UPjl94Dwh; z9WGvjVVVE&?uzHVCLNScC}b~%P8F)?fn%CUOIkdJhMazg6w(C4uH+_q>CD2dS&Zh_ zy7UOoWYTMg@VK4Bcj!K&Rt)J-t?nQm&I&1bX|7B*@ZeQ~37i^DzExt&M{z%V@aPqJUu7Z|H+}M95_Urcl5E>JVc2PNDBe)69G|*2poftkbWIeD-2QZENnLO_PH(cs@zdq5VEH3PA8$!>Ie_^0!5u9}<578lhxh(_xM^7O zT?Ar5^zh}aeCeaka5B!REIZ~%266ZnNnzwB>pQZ~M-LJRBQ<1Ku0gwU$vl`prqFqC z;oiGy&XQlSrSwKYFS#nB`r2vJ^@uTHmXxI3z@zYp`+%Ogu>&SOJL)P9-Bzkxkuj5= zKDGk|V_R)SdMWr7o!u5})23%U$6{%D?daTS4vQHfsw~4Jxk{6&EgcP`U!rJI8^zKE3BsY~03|tX4ACTsQf!Px zU}D=9)Xz6ZcoM~y&Hrhm@g{)Y70JA_(#> zjOB|ct9zRUAB+l3#tt+yN#m95;kVd?ff)zQxlQ8=6f*iaro9HE zM~v%??u&XDo#=bbutZ_i zWLwFsd6cS%-x5o<_r(fxJr(2{{{j8m3Zx6Cp2YjUAutNwcYL`_2&huF13Z>Nm)#(;G|}Je+0)E?PSH1MDC53=W&s z9P4*hDJL};o5b<@;Mo_bX`Q{4L&67-gb;BJYXC4f#u`tem!K z_3$h+sG<7lSht|c>!6-eJZ#45%1OkSeqE@7sv2Jzq@`p`;U?X=O5BYXsOC*1+nN2; z@jz_QNcax|o!v82cK!#&>(4RjBC>{=*a~BYJ!0(E)c|^t;4r2GO#^8}opG^T-ZIj( z+d8q^6-`w1=BCP;R-bO8s6SIr3j2rQ#GoKLx<_DqAZ8=o$_U5L|5=v*wUW)b4sWd- z)cf8%?ZOY~kTM_N++DodGCH(byBxuDMu&5RPVmF&RIwfTU?NT@R&0_MMKK9#xHsJ0 zgx1@YPL21tN`W-%nrJXQ745nXXECkjEDqXoJ?j{@C)RnLK&`*8iAIH{ttde#%i}(q zp^Vd|;x??eF4d?Hw(&EWf|P-$GpsfBrwyLsQxbBmn2EYg4LpT1CYs{mz{y{X;P{ij zzg$4iV0B>`1m^(1{O}f{TYGUMvY|aIO!5?Is^13xqwy-KJ#S; zD;6eUv{?fr`J!KVN9I4+MHWgw2~NDY@;b=>^AtAf--WqdH{EU}piF^}>nP;L`ap_j zrPAvDwNAi`uKO(-G4yv>W7A$JX*_fL9o#k+Um4*=7kZ0P_^%}@4}bhwoEGBcO^2eq*cPOWYCnT+i;ug6SQgx4AT z+nre=Djx1*OO};Rc_{CwJ?tsw&}dxmZ|;-(53*ZB9z6Qz8h_2?flbX{Nn;TX_0$ZCUW&)TLx5y{9qP1B8JaR3lwW2TjZC9DL1@d8u2M_1~V zmCS~zM?~9==DAphIGvD%Y`&)PJV|g{FUxtpG@hl(`7Olv&$wn;&)PaEBCKB&KR0;% zSs(E|wYqf$x^o@aMfNNiTuMU=lxtscK+9UR z2&4VdHIBXGM<-%r=2+c1Jg{WGFxKPe(cHjd*2GZQeXQ$8lEadraVdD9%$OV#yoIyn~hD@sbv)YAFJVGM~%#>3092@iGj3#AOBvm=`@ zi49ahS~GPe{pKMo4KjX5@yN|9xYaPC-m5aUmFMx-1%&4H{_Ueg!nphW`)_{V!Ea6( zMMzI#O_?66{%Pks);^RtU?J6Ggz~&VQjbzx9Da^@xxIbF=4FZ^{OWA`lj7(R9VoGZ zuB`A~g>FO)8CAxKEei?+G7$#*WJ(d?aKW0+e6L2X&V7cK-l~R?Xel9c0{fLNW?4%(uVgTPM=bR!+T-Viu5{1}sQOr}Od?1NI0epem#igyIp$)MsyQ}a6Q1f;D=r`YHV>g9zcbxSf2GBq}D zkz=%}A5sq${c_XNuObe71Zb{*vC0I)F70f(wc4mDo?T9F4%Q$l*f%@j2xa|@!Ll3# zwDsmFGOoa}D_L7x2w4$}=iyU;>>1}D(l@Mqgs@t(jv_M@T*mZBY?r1_Os13Rk)%02 zVZ;rbS|j1ryH}ve4S}tM*A{`zCp8iGaFNGMu3Qx!(I4b=m3tWPJ;-rFH*0s{esJiC zG|j=2DkZ|Wh(0(8UecLTCKKYfKbKt+F*se=B#4sopb#uY+!#7h6P<_#b&jF7M@z&% z5_~X&)eS+VMCQ_{O52mHr$$}qiKJ(>Dirrdd-tmxbR1J;CU{EoWKmn?xHye7uM21~ z<+GWG3j`eW1l~_|t#8BZeRqBDSiwvSX2^vR=1={*{#DnZ-N0^EL07Vo5l1&ABG^a} zz3sn-jSE#ZIOY2{@J|*^{sw&mWmN!}!Wi?EU(qbnrUKIrt7A3bOeuu3-oOol2uN9=*NavHURITz=r6GldXX7l*h?PQ zne{#vzX{+&((9%<1I0R-L~64PfXS3XR+?oxF%!{)U90j2y>omX+nkqv57~q{)dB4J z77VF}vhBp-6MA)}_{ay#h5l2$3UrgshD0HT-%R$1&S~H<*V>PCsxsLlO1YXMxm3PC zF?j3@{vs>vuPP)F3*oIxlO#!vxk$Ax>fyl^>K4B5nTVQ0Z|j zGT%bkhiuU73@h!lh@$gAQ{aUIit{Z(w=XOPSZF=<4f9a!Hth4T8Mr^U^FmM;)b0yD zpZxl~;oxasKI@N#glE0bSwdB5o`UoVgWisdzF{M z+x{aI>TRL``9AB*CmjO9cRMqgZ2knJ7b6_=GAMDGdmvrgiiOW5IKQ;>Jwog3uHxLOkU1QgCt=_7O8U%P_lx zWBFGtdbrrJRCjMWT@ex2)48xcJD`i%-K+i&7}1rg8VvIQY8a;ULod8(s)X4Zt=@k0 z99J$Wg@EbizWcx8dgV>q2zevdSDy*IJ5ek_D9>@4U0FpqkDbsvAXJQYSRFelC8Ur1 z`{*f2XUJ;p@^QVld-s!>ndM}X6~%0GzyVG183d%>x1xkrluo|LLkPM%SXc4Y5rbhO zX&O*CI`g%%5@KHNm68%*7yp^v{N^wBb6A-xBX!_;J=v_mI2G>ja<2*Nx2K{( zI=Rk}u{VEGmB-sa?>Jif)4^?Jv$S8WNDu z-67XyW9*W~2oM zsM1oesyU+bP>|4q1H;Bl(w9st=X|I)ORn!GDuO3*E5$w)yZxM`!J;^eVHj zR4T@^o?}OPpO7gYeMR6`i*a?i@r0yfB?0s(Q?NsSnAwbXrExkP36}XQa;A>XtW2MM z0~yyIz2d1Jp)FIUgjrOX{0<}lj)Q>(mU-I5BQs+AT_0%t_SNlSHY%D5q~bs;KiXHk zEOSsFblZxIp!-FwFttSD}V- z+u8koV;|LtS5P#X(bYG}^t%7az3t>pn5X4!Lg`oO>t;>${A!J-;yWz+(Z9NSY9LpwApKcd-cX8dq zH;E|=2V^i9A(0y9%)gFG72#V4AJySH%RmO{kyrlq4Oy1741s63elC6kwv?Udz;x;R zb*NQ0ZFtkCbdT?43}cq{=t14qJ<%f{D0+osw5W7ASncR-{09f`N8zU9LN=o$9KRI; z$3k>w9WPQV$QOLbaVyCT3tfyz#NJ_J^N&8Ky*C2rym>z&zXDFFTFC`iGu{jXOO6ri z)*=hfrH!ATyDFtW_Q;ouhzL$wk@UN(6Tp-LU)CVN`(;;n#!y%oPS1@zxA*pHZJT&= zQ+M=OKUIXcNf@@IV@MZvm)6d^Jlv#H3tyrL%$4MHH$$` z`CSGq%^E*cD@srtBlX;_GJ|NbE5D0Lp-jH|Ob#pgmWm|+Rii#O%7{58UO;6QAEd9VJ{|)A@xl8e_RJ}|CSoK;Em4OO zu}J8v@$>OQy0|H;WLLe-p;Asu_Jc_O$kS>5==T+0kivuj9)SVW!*e#wC5 z!_}0fY&elo@AmyC&2W}>DcaE(a{37Y&+3Bxy<^URCTNqt4pYTezJl&TYOsx82R`+R z-$Rx*m+8l`hglr2)e7m~ZsbC=13DBZ2;~)Qj0!sM-0&L-H@=|LA8$(?j&>k!2O` z#df_((yvh{Pe`+;YE`N!5`N7OS?zT`#L;1?M3jP(btFp^HTmchCel(d#u_@KVG_fd!=bp+)GxqVUj`IVCF?OHP9`0$0Z(3#?Lw=ys zjc1nERK*2V9O%cJLNi)m`Ew-QKtVA3^tt5lU>rK!O@wu>PMMXWQC;mp)$=?%%-We0VoyI>Tumrp`A?n4CJb;pVLjfDPE z+!$S(FT~N#@>F{t8}QB5)*|lV3asd75)~)L8HFs?#D9@{#|HkJr#cZfUI1n8t=rYd zHlo6=PR&5}?}a{uH_#L5ju_L62FqwzufxGaOcmqc)#pzd66a0i8*~ldDTAA)^G)p& zb2=CVdzUYzqJFh4zKm%hDD=XmZs7yrF%}he+9yiU1blJnHk*G+P51S3RAh#e9`1?9 zM-LS(q?AJ`YBD4{6W4HN6znH3@lE$ccpoJssn*WnGb&zVt+D6xp`grLJ6)-8<6wDY zu}T7gXOB>M6CP@HxP@QdH>9Yrom|{o?X;bjj9`kHQvJ5Oo#+X6cunLP8eKtO!Op{9 zNrZcQx`FJKvJ1T1V|#kvyuQ*m&bO<}k*ck#nr}rF>a(L#`us{l{`s*;MNeI!RU#0Pn4temR~Sjb%(olN#091kn+dQO7ka9nel{%u&hi z@H$>~;D?=%RNHp9kn2eIPV5oKXe8?Wcg+v(2x zDmxCJ^pGFTr%$QFDz$lUUP!JuelZ=wV7sW&_#>6EM_JG8KrU~Qhq-cE4_=|ck1 zoEu&zv_?gB>)9}4qKJsch|gW_p5VKS z2@8D7oG;Hjt8bm_p7fL<$+nNNNagSJTP0YP%A*Y|?3-s84p9YXN+pP)%X%By(Bnr) zlMr2(#adcXX*(DbHZ?exX{BgLF%nZ+f{Cz!sK9@wF8Tw}G^?uVm7vJwVeNxjNgc8^ z+Sb?Bigk&^4Tj`2VG09I0*u!^!Nk&$LJE$eQP3_*PbWTX*2X0xB4PB;d_#SB_>-{S zEMz=Z{Pj#njr`MAk$Gsksf}NAjCAL>~Qvm#JT2}lqjQ? ztu7sl27YV?HFE(R(ikP%n&Ft+47-&=3NHAWix~GZBpgtvw-|S(K;=AAvE;U>cjo$< zXpXLGh8xV6hIZ%0mzT2E{*Xk$$q6$4#eLV1n!4Ek^vlLX{81_h?sR8F`@m~c)`TXv z*|K39+IR2H2FbH3+O|h*`75EJ75fl&=U#fnY;vi>p6ZYf^hGo%3W5fx)!9heR+R#@ zf0$hVjcSS@iF6}ag=V0^D9I{$?i94($9SDOjiXo8w!legzpUCvMAqz;+A-_EeBQJE zgx%W=j=e_qbn3fnz)o)E+uk*&eQxNGJAe>miHga^JXS5G)MMn(%Er-Fu|#=X<+;OW z$)mCN0_$xmrH{lvTt@j?9;;a- zx3cr@sET-x&aMr0aukT)Hk4)*yvKo|_g*iPT~>|pP(+}vZ209?!t`}@v%>Co#3kqt zb(Mvv8vin1TxnN^oPg@P$E(p-Tjw+R*u3T&j&|(Q68)Jfs41n6-)%1y zKYvPY-yc@zE;;G%W=}s-F$KpLIR?j`{;RxV!gOwqbT&U+33wcxrAAo(DOQm(fkI$M z-*SH2XZG5#S5{{xg2CjxIlul=RU3Y?9i&bh=6Gh(@>Xtdm|M@WM4!x9uO*Sxa%oFX z`swHY`G%oY5PaYm7xCZ?b3xsVu`K=5nS?H8?J_q(@W&+A{e3J~)2vWGOw47aVVsBY zk-y$%7^IYW`uMS+@#!&=&!!jBQp3&W3=ACT>WCLJ_vP4qpZV(3K~rGMnub6j#H9w8 zlyF#Ada22>A*F{yE?aQ6)4uCM0f9VYb*>@ll2a1tcS|1{V7}5EX@`&nYn^t2*g?8V zy!`If8g3rM4ZXwTA?GlYyBN}UQ^fMsSm9=bCR-&hbG z^ttCvPUA|rBG*q%i4-H=1WryLA}wPzX3D%6R?%{xMAxIPFtG``2xF}jcRfh!*%p8we5~Qp(s0)FdV*WuTAxkjg(3MO@oLCEZnQxe%#j z_R5LQ|-Y=&@FnUpnHF0pYK+T@HLyW?x#rF7|So#P9u+hTJ~d2A`d z-|cyyb)gClxdr+@i&Zg|{j19)rU@;$1(QstRLRuaz|nY0~BLw!38zRXEODLsFA>`o(QjHTl~f{O?V>WMrL&i{(-F!3o& zWD+{HjMvuDvaHB9Dg{@@`(R6+w47>T3mqAO|3>>O*i(uapXG$ozWjVP4GOFr9fo1f zn_>wEN9bUZTcmvyrGeeEN!#99Sk<~=y~~SPQXBKscTW0!?m)~;nuZI@%5hro^!7#v z`gR289aqCUdt~p7cov&=pq2HSN3k|-ZLqGyVwtkB{nKaGA{n>GK-hADD_OAi?u_;g zhNJ+yCYkP}R$ar34oI=|*|OUv(wXs)Uy5`%=OWK?oA0iTh-|5!zDE&O@fiG7&2+f5k!J*CUns?1RmleCaqR--da!ujA`ZrXUH zmHz1JCOMD5-l}I-EhnVL6PG1qsbd>v+#K@rK!@&dvq@<(J~gz0V=xg0DACso zwY0t#W!1K6As5;j5U7x5{pgr<6E)BZqAE9Pi8y%@o7NPqeOQH+TI!<~ThUeHJav4j z0q=~Lmv!-*?-_IjW^XNu4N z%QKqJq}hYp1)(ZUNzLQ+Y=Uw|m90Xlu0LR3NPRk>VL&(_8*|X;@j|m|d>RyCTwsy2 zm9QS!G@om7lje?m zeqpWv3SYO(v><~m$k@};wac^CUCHDkF^;qIA{Q3ar5T?XZqo)>?Vq*;zeur7peorT z(1=^`xS>tT3wL=f=bVxmLG>(?@370JMHXjn(Xw1{6?GqP>DC0S}7 ztKzD+Ohr5|JClz^|fNmPXNec+164sg@pWS04=o{8PQ=rv*v6 zQ{XBSIcb|_E)hD2<;kZ!4K%jcrhC$DRL|jpbaLXPrO#bf^Yt!u@tCoIpe(;rCg1ZgN+w~#r@z~;m2UBEHmHxuMaav^4{as)j%_SyO{h#C zZ+TQ=pr6HSHX^F|lJQyebgP^SG|7@n(T<8&@4hADP73wFC1MQ$M3s-l0~(XP>SJ$2R6WTlDP-s%T}YXcz?@dk_De-6F?;|KaZspI(oo zo<(j3yL+vBxh^K06b z!eg04n|Ri9nDPbbD*k;8on_JFh)8GG$(nMg_uQmQQqz}nd3tMm(lbd)5zvp_A!t{W zUn8T?w0W~N_t^D?OX6B4L%n%nK9I{QKHL)b6|JOb(!=5aYH-}wyDbk}GinB3p_-aX zc(ef@=kWZ$RAMpU{&+Tc@Ig&g0*`ExD1g(uk<%?Ih168X6S2@0BJU+Pkda?!Y^zAMgY`o}kAh$xv!SYGlG1|EvJg zvz&4hF zwBzJbdx?6Ld4dS|smChGNco92gGuWYcJ7TjSO7+UnCSJazDmF~L<1@y09&>}N6qvP z%KNmAYW%!sMJdwfiaB`n;w67D91i+TpJ*F;uujN9h4U~^^A@Ubmv+v+n4gb`HD}Uy zO3rX0!t98Si7uylD8cF37TqCiy-iI#CK(BlBh-;RFypvz}m?UI8M8t6|TA1mL8 zUn&Z2MhfAwApqQ4s_`=-+gGh(JE$?*T~m)gb1c4Pv{*DY(3;XatDEI|EZtwLpI!xJ zVfHxjrDck6@b2ml@G|F2_Xsq%BQNell_;l)v7qiv`Pct8yC<}`(58aHw$i2`jaXRd zp>Vra|Ik4D9Zo#Q>BgcCu4cY;LTAps&{4F21 z_Y_8ny9r!&JW7T~l`F%`ijRyMbh+dvu?xk@x|FzN4I(S}A{7c_fW_TX*Xm%oU3(rv zDT!gATQ_t*<=S4c1l8tt?jRRB5$~nszOYl^Um_L>cR|371Ze~s_dB9951BAxpm3Y% z(M+U=WdpjZ>r(gIy&2Ae?ANP5;*xeZ}Tr`<4ZKqbTPR`rTmR%QedRrrZ@47l5NkSK!^>V~7t| zb-thX-*uUIyT9HaJTUWep)zLHo+;!`dri&1nmnJ#FZP>T)_i9HMSw!!6v5fiu*x8& zSJ2C~!co7ek~$+~iD4KjAVxgv@ges&M-Ndi@(l^~bd}vO^?})ZH zteV=bSgf^=`e)C@pVOY3xzQggFotP2w3m%ULUUGOA&$mBZOYQd zkT>hw8K@wK5g*$vb0}Yy72IunJTEb_a2q|vVC)v|z&(r{g}L;R83#?dK-*|+Z$Jry zXLHxI4g$qo5*2#<%|5G6*pF@>EjCy>Aa%*5G^I=yBzym_%{owHGu4QiS zx;-ktD;l+z#=WIK6MCfIcKnn8WZ8n+@ zadPl$=9QN%f?`1FV$B{xXj#cM`VgpWYCR|euODR}HsvecW|Fv2pR6{vn+{g3Y>}VzuyZhp0Z*-AQ z95q%TsA06Vuk;=R6s$N$pGWn458-d!ou_FFfw_K`;4K#&<1L{@aeukr!ND108p&4S z!w*vunff$BQTA4(xUP^b-X4BkesMQOS&YY-?L0%r7X$O%!_EULdhw6it#Ob<qIRYq9Sjv=q`V=RO_sE?i)`{rOWL|12o|_nG7g29@;ebTJQ5~7= zb4qv4gC7UU|Gu%hrx|wmnbw(iy;N1T+<-N$HyKQuF)Jd}b|Awjt=DK5hXZE|K1p6& z$a`6u;N^8iuq zMqKaGW_{~!5X#~4CX&QUeB>2!iRkz!UX3=@g~v6lB|Hvo5|=pEkYzUq_!FMb;s6;u zE7NFuHxV#cl$5RE_*HxO+%~hMKZ$g@eN}55Xv+8DBd0af5<^!2(vixs%Q+S-{b?q+ z(eMSxON}|LchEru3H~$OhahM7IOaZ z{t{|MT9kN4pAgVNYshS#sQWQaFuMXaW50&?LJQi$NEdv$5A(<^`wX#QuDC$(|TB8aMg_TpKa*-T5z;$}i zR*71Q)3R+q08@@oG1^$uva~YWvl5uwB%J>q1WfvSRig=vh3q8`LJ1#d!$HW-w=0FFSpGNhHT z{%Ty(53kP2q-TZdipcH5X;>cS9+x3%rwA+VsF5Wb+oo zrPDb^|L2iUo(ZieA0zYUX$Pp=X6BcC^x$n%7O2Vx88v#1k4-pvdnn$wL))1GRA)(; z$jDKs(M+2G)t)p7ENCrvbSSeO@IoD4nKRlAGid@RiDt+U@Aa&F)aew025$%qaj>)T zw)AweL7E~RTsLq2V*}t_4BWUMpt<5%^UpTSYs3Y#SadAhyoh>!tyhAiNRKYim zCc~o-C3f|FG%-AKeRz0^i%(!H=AOs+&A268?in(6ZMwq{=8>U71xqPMc>rBa(K3Zo zXRl0O&;R1&PXY)(!plin)1_Ta?fo?5ek4?YMnC#M!imS8ewffBv#da{AF$^>)eIVO z8SSgFPqiNu1W4S#sKN7Uy$ANY_tzuNJ9@o@0w%y?z_>OZ?X#1UUZrzcz7>`ylf$wJ zh8mJ59s820#T+(=F!fGUap!m8b3-JXc{P8|@6v*&`5a|hi9}HmZr6|O>rjqndN$HU zi6MT``51@@6>z$f5dom#%_=-^$4+Ik3LMRO;#2yBDG2Ha0)sn99Nen^*eVfHM);Q^ zNCDB}{YHAR>r_3*<@tp3Z{|Z=-c$bR5i?yXHc<<{JY9h%i(4kV^fC*oM(NV{0(|~r zypjD+l3C#9IWbT8YUZT0kxfMDfopCI?=WcltGU~ZCfZVGdZ5-a0-a~YCTds0#lZ|E%~V88&avk> z0@`-0T!Oq%19B${f!9{qJbG#YANoWUl1W8TwKJsmN%WCyWNOm9`)m8tv|h zL;=O8UAF_-ED9vw9Vu z#UshDCodmR$H&IAg?SU)5H;&Y{by?5o{D!{t<`a$uAIAeyp0o^xT2#YE^`pE&DQVw z59W9e7u?GK)|75=Vy4vm)KtfsJw;E*LC288w7p48FahO|`qWdidjpiG`Dd+0y2~W9 z9d?hQoeGkNkh{xJyJgh5QyMz}+ip>^bTXuE2bwj^HSEiK!Ttb~c;HO}Lwj1-gas~2 z$aqos{aw+NI_;B!KB%)-ty2AXtfw)m3--p&<8zU(+X+UxzH2M~>*Mu)hK1YWE?sZVuy)IHS@m`99`%wYs1#xRO? zN{-Sd*sIIxe*qRxN5gm|H6D~$+LpAG_e>X{Q=U!{}7WQ>f{6*NSuXhB%3;q;DlDuWy& z&9qU68G<<}wXnPx47^!JKrhWX65>J;j$<#*jNttfd@zPMY0io;a|Pu>TQeB@MYB63 zxUW?e!#KtjI}&4KSt0T*srZp%m`=dj=UQ~3+#!|pxGRfIVWz$|ZN)RL3EM##PN91zD*a!ir*>cXaOW5WCvfN38UfYbp*Gp z|4k#?*~M@2ixeo*^wM2QZk+s*jFD@^N8Tm#(A8<90Z=a)72Aw-2;E)(w(f1S@5aHW z3S)R3FL9YxEEheOwAU-HR!=Ro!*|*}W$H;zMK*hSzlQr*;`pEPNvq=3(Dj~Z%sR=J z-Wu0~;l7J6ijvOHb}yVrj%twQ$=E$y)t-o+4(s&RKe|`jY+@ei5KA@fJl50L_1fac z1?83I(Tf1AKBvy7)~m$Zr#`v$nvU~Qg+ov1bQ;TwgfT3-8oCQM7hNH_>_ahE*LF<3 z^tCD1payjc>?=&U%CzWqJlYE=QbFz_&;_1OOj>&+pKMP{m)85JtRb$r6aLs!);}0~ zk;qkS;&<1=6euU-A=yf63!T}=Y5|(i71Ogvd7o)aPqe`K_j&9L=3YnqBw#;xR_}{B z9Ut68)2BN)=fj@ttqc!DfaO;2Z9eLfZKcZ<+~#Q}2pcNJ_SG4bASKX2vhO^o*VjSL zR$;}poZ-5xMCV!+d-OtSy$0(J->|+I*HI2r((JZu`*0nXFDjfcF8|)D`U0hMZkHKQ z_;QcDp}6u0`rmQ*$$RH`UP_s*V<){n^ptZ$q3aThQ_$Xl_0D?h*j}O>#o^ZY9RBo7 z;gdMu(Va1^$tIKnRctvl$iR>G6c2RTFg~grnoPn%x|fKJ9Vk}0Z%6ibW2pVOwd;0w z|D&hu#r!gS?lAs6F>LTG5`4t6WePFv@vHbFU6y8&t#-nnTxic{byk8xgUMQ9gp}qw=*LOU3E640CV1p5J9yk<=9&G2{4xUHaTH-pH@pcgZcR54 zk4ItW=G}#*`Yd?X20N^BIs`QF6g|}y-?-L@l!4&KOb(WQ@)2qL=)~khYk?yp#fK>O zbp{Jpc7%ZZoq;j9RN_)`8|~JammL}-2;@x{qM~BH!zn(lg`PI%rSN~B1n^cU9aYdo z6CnzFAB4&?D^AJflc0D*+zJ0%%-*TXg-6>Y28{leJikl*OZ$vL$O5Av~4Fi;Dk)rWHQLz$T`*B zE1%TRWa#=j9<4u@sSp2jy`c1x`TWd$+DK`>c3JDnwLu%=ZVpmp5K$N7?tE%JWXI_W z_yT3|`oxIT(PjKp_j89zn3RFh*Kef-TGG%59MCu^&gEw#(Pa;6`xC)BQ zu#UB-OU)TW0lvgPa-jONv0ZVyl6o|sMvR+^?m?1F!^tIfF`fgj3Jf-__*p~5^lEDXyAy-upz+#a32;Xxzvf>5clMTf*F zJrSX9O|k9UQ|XYx|)&REcoNV1&KuiehQ*^vH7UUvnd0$jk zd4_Mje7GmvuPj~Oz0MM^%r(60%8^JC$79Zkd#z3uKU-Pu0r-N=(On2rrV;w6MGRzO z)F5mOki+aVx;BE|6HY44SaDBqX!IvCqVe3EH=~>^S9_^C8h3@OIMznh)oxRoNs}dl zKe{qCF3vf>ZpzuJF|L@zET&uv*-4qMeN9c&WKS(TO`E*?-u4j*-Z_|JD*QM$+f87o&Jppg z>PRCO4z{4Ez~UL zYWHlHLB^gy`M1pw_ZC&uWR6R$(eL>N#%Z)%8ypY2?%&sxRq+ZA=Xjko$j*_gwGK3v+ixFC9eMi1DvXpXlHeTd5wAs*S|{I`du6Hr*<|vU z3J6PM=;T3%n$7g!#JK`8t8x=JZY<@LMTbqstm1K4?pB|?LSK4pv~UI>U`q^W5LWyd z#oK%a5wxfxUPlRbEsnUEVv6cJTIpsuc(FxAL=9>~oJPZZ#Cb2olVOgo`-rcoHv85~ zMB1#Crtc@G0H}HJ-oQ2Olczkdd6dSwEKTa;?qF&#BT@ zMkxBBS}^3@JeBd!F#-*|WHZR3*PtNSvmp13hg)M;5aAoaTFxL&Q-7i?*G*IBti>x; zbGe}v2mGS@%lMSB+-QDJtO%!U+Xt6g49k#L^4RU%?8nTyau~~AL+P{aUsO~~lDgPI zS=AC)pve|rI#AJF_;F|Ei+0YFR#iJy-gAHWw5W1VzJg*lHoOljp2!hE$E!YJCRf~* zZ>|09b+XB!0Mc|t)NOuiq zJ1jyEFyLer_mYrG;b&&5LeZL&RjV;`JxxfI#%+lgd1_TLrR8z@QD4nXEq-|doSh}eNjH~m!j0g=sjJ96x3S$`}a>&}0s7cuO(ftRf7F?wJ&L@bM z9|1(cyp2R~8YNVMVS<=OkDMSzdr)v-_b88jAMW<^$-6=I($9bAI}4}P^MC&-tn}jC z513njSu4+uM5JR)zf@ceZxsVIAIuMQ=y%DWEV@xc-aKZiU;4-Ly%aIz4}9^SMpGuV zIVnk|3j64jVqkxFVvF>S-CtS_{pFR&w!i-=qvX2b$@A~dmnb>}b<2Os!O0Vn5E(*k zw6XRI$t(^0x0=D6P-ChpjfNNSqu>p$hKA4iOznKqVW!Z*b2L7hcbwr*I(IoPw8D&T zkeF*z-~#~+>uguqUAe;HEKbj0uGC7=AWrLV_$D#_0~~8EUFQEiONg$4k!>%1xK(P9 zuK2^~2cQXZjf|5qV&w5Dc?KbO;3yE27~aIY&@!~GDy0Vfn_MDSjFgwu(Mo|3A5rc2 zLav7cDwBFH(eub#<#(#^*5YiCC7k~IQU$!k0TPk|-o~aiCxiBC1_fLUqxj{qG~xk~ zcW%gnAMh(`g4az?OrhfC9$@#VCbs`X>zV`7uxz}?)z6<{vxGYSl7p~euq6=C=c z7bySv$n2IKVT&9!^nf{aRjslm`<&aPX>SO^$W5~c?VZGFZc~myaXeO#8u#)BWy5D? zyYR%Dx0yg6CYc0Le0)RCKr%iMjYOgY$??o3qb3zfrB%vVf&hlh5`~b%J8fuc*p&0A zUjU=AIUB%N5$O(BC9ozDt})T1VFke$`fxd89pfRX@TlNnI{i?%&hXX1c~K8y-y>I^ z3cibt*g;!DG!SOhiV8X<*!nUHT;sElEhhGH*TqbcXqR;xPg?6dk6%xAp`FG5>tQk! zP?jtxWi2P(PkVi;xNC?1Q%!SQ!(Eoou2!BMxj57njSa?+Cz2=p#s9rwP5!Uqwg54E z*+&AR2FDc#JNXFSNt3t?XJVAq5;EIeN&}=Qi7WG}aA2mVEFu~XRFm!~hgnL@^7ElL5Nhm44su5<~i&HV80u91Kf zow$iE#Bo&?j;fR)lB-CXf+*_<<1~)-uZq)pqAy~aY)}LPJAaVL=0b2pgWf}YDRb)$ z^98M>Ua1VdCoxisSCti$Je8-?v}1g7(WO>Yy@>bW-sHHo$+hm2Yq2dxEPu{dP__8| z09r^8mb{HLjzWY+0EKL!OdFpj&mbc_&6n9pl*dRC$2x{0iN#=#z)W43T9bw8$&;D6 zPPUW404sSlr-+YSB`$uCr-?!fZ`w^DBhG$DG9LQ%TI*$V@8Mv)SvHgHa#5ZHg2q}m zfwd%5BgZP$DNOcFK8V6baMTxLUfD9lgHyJhl!ay*)HW6LIAx37GRc^J)K&kPMq$Qv z&~Rf64v^pxVzN@iTlJ$D;=r`+Gpe9Uh_gzMlqnwcF|3DbHTf^@rn_n7pjon=T|+Gy zNLLw!AwZ0QCsmNs75`7k7_lA62MfyUIVd`!0KOoDvkmaM;!)%Jv&Pv?zJJO60X)M~ zHZiZ!Ovl?oR}7jJIBt7rqBD)U^HfwLlo^PR!UDU zoE(b-k>G~?YbU-sZcKIGWleX{{Y*wdIx&@O*ieT0jU{b9-#wn(@rWBwcsCl}PV~eM z7SFCK*>`Pmz~$7EB6w2Oym1p2L7Tv1SsgbLf?F`S1Wp2o!o$u#*!MG9K@L>W`i z9CVx9SHVIRpnU*cB~rR+MxfWer*)Z>B4&&>S_O^Jkc0Y*UGw+L!Z`IH0p*=77sjs}` zlHV{r=)?_lV2LP+qS>~=qjCk=u6A2%_=ecTk)@x6Crr6LI#wfzpT%j+W&romLznM2 z2^IuI0&8{hy$ijYEczbmA6m`Z}?q|m9+6eX2w4R+% zK4Q7U9>F|%!6iHH_>tC))|sC!o|H|tehutU>pE0gi(dBY+*e|iV+Z=fQ9-%%cN7=2 zL8q(6AlBnG(uYlUsch(?C9H-KqGf7NC{4akI^=Qujc}g8p&Om3nwE5^u_ z*v-M`zx+1?9zwD!397!hS7G4IdExvUlMk5e80WB&TP8vwr4i9tG@?)vDN`wp2;*8v z1aKO2To4q0@NFfo2Dap4qrj4rxZVq0RJnL`&upCgWQyfT;kKrl82I}8&Flc_()y28 z2Hw{dI5=4>JME7kmG`GoFBf$7#`5t>r!4)x(NNkuVBxcf%S+$Qo>7`lC4x9NVLv#Q zLV-!&wPw>b!w7_?ujm1K-@AFu2Q)nvd9CGAl@0sp>P=EbFmru1#1rS$CC-F1?>eZL_||HO{l+p$084hPmL}N%N}`-e#Bk^k{z}>WcMQLqMn6zb9Urk zWo#;2R>qm&KUL>tbo;jVVT(j!kONWlYm3;+a0p3Olx0E|DHj8wuCt5rhO0cwvhzRE z5e9?e#AK14qBrT%#w3HbQ*uo0U@X`l3s^x)A;+byS<4jJq6WkEO>#)9zbvwVNVoBi$tjS_XRcZ!aQ|7h;nTwR~RXF zr^_m64qIrU(#t>l>Vk}S!g!SKzj`TMNI*eF|XA%uh>+W>ZJt{bfOQt2mu5k-5B`X-R&Ipb=8fBvD7r;_NDV*5%_A9N*o3xZO6&*d zFDHakW{^0koFr~GuhCkzjfT`z2TI`($+6O9vE1#|7WO?4(SB?94l*7C=p0n3u$GvO z=iBxTo0FQ~HWT6d2Nq`v8G7vU{}e_+Lk7Kp@Mz3->k?c?Pax$s5@XX0!2@Z$T?!|o zKqDI3r6=Qn7941E#y4UyG{O{WzQg6kT#~VM%r%A$ z+F|YAbgK2tUu4MkPkl6Qvqkq}HPp&X%l;6`OuDJV)DS(}wiXJf7>k)C3rpEvP literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/assets/inter-italic-latin.DbsTr1gm.woff2 b/pr-preview/pr-449/assets/inter-italic-latin.DbsTr1gm.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..01fcf20724f915f68a974ef2fb85f86f3039b1d8 GIT binary patch literal 46048 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 b/pr-preview/pr-449/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e4f788ee02bb687bc1d5045483ff0d381e7654e0 GIT binary patch literal 8784 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 G0002QVTgqQ literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 b/pr-preview/pr-449/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..28593ccb8a4d849a746f2b970678fe426cb136e8 GIT binary patch literal 26600 zcmV)1K+V5*Pew8T0RR910B7g`5dZ)H0L6F!0B3yw0|eaw00000000000000000000 z0000QgDD%9791)+NLE2ohdl;hKT}jeRDl`*gBUMt3i?>&JurdRNC7qiBm;*E3xh}i z1Rw>38V4X7X1675n-=kI2biyYZzqeQZjoA&vk?|!900t9xyk>ZkaUdUz#0Rktas3h zfMl{}Rjm$G%``GXUWU>#GS!C8y3wYu)n&M!lCuJrK<-+U(yb=|6)@L+kXfeR=3N_CMzFKaOs?L6;G3(7!0W#721gJbQc**tm?5tem_A z)qbBnyZhcpybFVn>_x~p9HiVT)0TFC0#yo>Ps?BAkpjxQ zQfa{|xPUK@O5qof0*auZ6sWWce-S|{RH*U@$WsN8g=#BSK|#c&>a3u$ifdiD)my8} zF7RK!_W!Qk2L?V-BpRQ27y=a;W216<<_6g@sz{Vro=~Qu@J3`{4Rvg7q662Ue3nF%I2TaybF8ERu zM_~n+l(`LSZdVbq=DPora^qc& zoN<#$B!nfzU_ulLVJC=YP$cv5h(sr5LMA#fBaVoQIKdGKPVm9~|GR(p_x^n!>uUeU zt7Z4RKko}Xh)a1T+2^|V&@OKYQ$#Vnv0#RzBd z2}cJTM>vb47{Muy0ELJyx)OYe=)RoO%2|ro)gJxc7BR33AV7zkp%g=kn$iaRlmmkM z&V5Pe($&cSB^;1&_k5RQme>emhwT5mw`PCl=5OhDtKEfe9KxT2);V~#De#bVaq713ByP5Ye!~}pG zV5lz)KS6Ar1y~;!G-cdfDRWAS8g0AOnU7 z;~smtUpOO0@{nj3147~nNh0L10aK+hT{<%y<#ETE>jY0LU?DEcRkB(wg)Z}|Zr6|H z&?JUHM*ISI7etd0a?jMf?*S)Fa>_IQYK}@Tj?Q}n!jFI{G+;a6IN(he^#v4AM}B{> z00bSNM5<7X#S=^_&2qehglh~&v(?YQXaFbxaAG9HqMx)sfH8mo0cx-Wu@F!g0e~Q^ zu@q9hHORu$JI<1^#6cGZAdUC9cOwx87!Y?6Lo*QwA_^$~TT%581E_yCYmg9#mZ+kD zlP)JNQ{9jOAI3k2Z;Qyr@MxPSoU`SQA?ZEiJkWS!Y|1|H#Nb`053aY%+}Yg7ji%H0 z7jFf>KYXd{X{v^}xZ$5t{|#puL`SAE*o0$e+qa2wJUjW$sDUi{p|Wgi_w2YB*UgKj zck@9ZZ)XL8mG!se_ltzujG?DHp5CfHNjV9*18-}-*z-L6GM>LmaToSaPOFsYc_K5# z`O`&HLgS#uk1Pj|HgfTRtQ8Em)%3eeU+4ukBE2?FAHAEKtK$8Mjp|2b zJ2yMF{bO~(QxKMh0zF`&Tg+%}vPygR8{=6@6Jmwrg5L{ElQujZx`p1%(SYH6)PyNB zSg^N=!lAIQPvy#u`+_$g{=JyC3lb(mWcltDBVM8;$qpB6GcRPwl%=w5ss7ah9EFN- zRjDCR=K`Tinu&;A8J2I?q0=>8x((p^8*UmjK9RkAYs7*+;O9G=Uns*W7D#Z}>sH+o1xh7cr1-f(i#h9$2Awq^gEw=Q=p?kn1!Doa&;we~B#90HD`(R& zEln0M+)@&?4UlLOLD2vhXy9^Gse-+e4ACV3XlO$RxUjaqD;AKJh?*aKnQ~p5F89 zo)^LIrG1b*ppJHa$^1HWbMO#jD0ql9?78r}++TNujxutT!_ohfk5?8FrxmBIg%8K3 zpO1|r(s_r@bp$X15KsVMgZ&dufdnW(0Qmea8214^2;mU~w-CAo+GB_xfcOmP=fFP) z@i{^s0rxV@SD?Q}>w8gq1KIZgKOog>6v&gO0RAI@J_Fn@!2Sc!e*)(%Tn#Bu0N~eG zATAI2Jdi$4ir!V4w^VN)TY z#Dq(ubcPc`R!KOR5EGI}!XkwoQs9un4=Lp$rBV`sBNcuq;YG$yC_#->Z(@0n$Q{5U zHK@sK{1S8%>>T6m_P4>d+N-&Wp8B88p;qUNOL*dL1gd`4cj6*-%R5g~(AUM1FQTl{ zyDB=>tL;$FeF%wYO~0b%j<>*^!MM8DG@uGgY&WIh;-U`+DCe2SpCEtUx z*U9$Q-qdg@nIH(JaWE(vKx1cp0Pwv%n17HqnP_BC9-|8l^D zQ@bl~sCxv2`}s%-_!EfBgA>1_^3AF!6*`Gk;hp*z%^Vs`KX10cmdr<#G|J z%J92+{^yywNDTL-t5*KELli_M0nSY4K7kM4e%cIiJN+38c1Dq z$9cCrG~up(_e^@^F(dJ&~UIv7+1|(BMDP7g2V7K=*qMguVz;(_A65E8ku&lZI`H8Ds5SG995~CzI4veY+&jGL37?*xch_@ zI=sPM_Jl7lKk>GOj|yEiX8Frrpo?Z9+brfnfFTqpYD73< zFvJteyYmyrAcjOOj7s>1#474oP3bs0v_Yt_r>P?U{hlzs>W&XU(>gjQg@Di$#XuF-|{ znvY3(jl8x9AGPRJoCujd4A>}WC~~`uL1lt#-ZS?1Jn<2UJW$T#5mnyRt9O_!Nz zH_W`QYg9_p2cZ^4r}CI0i7X(WJs;^&5&KWerKXi=s~njEn%z%bwt|)F9l^uwaEpi8=_ru5B~l}ai8xA(3hN1rHZ}xnY%4^D7M22M9ehYGto0pvPKU@&H@nyE z>;qNBn$vMu805TF8maFt6@a&v6l&M`ip)C83JPSd64xYy>ZB6qsb&&NA3WKKAjO7& zCpFr_cGd)*Q6VIR^amk>hVUIA?8c)5Jhv_@itPVw^7N(vnD-Hamos>iQiDYnXa;z`p<;Yn zTG5*2<@J$*Chqs-KE}Ymzh~S!<~c*+6(uf6?-u6xrLFbZxhl`px;)>?vU{b;N!Kxf zztocB%Mso()+>v>g(n4;f3 z7gAV~%-mW?0uF5zig!C{@KkXdbt4rLnrFZk!HkoUXX^ow!bH$6@Ps9lzFaUtF{whK zMQ|k*4Q5_x3wf`v{-RLUeP%$8D}9x1ZrC4Mb;FvFf{TgRm?yB$ImeLa%s3f%o8-m? z_$|dgJVEZkFyVBxP}oz$e*SSGg9p5Z!vZ%$+fM}-Z9ZnU|09$`+XerihXTz?^Ob*e zc%F_s-!-`?^Dkawjs-l2D;9?`mIGnUAZW!XqS2IxBZ?8`oF$!JW&Zm&4ttU7@WQK~ zO|Ip!C#3$L+AJ^iImaCFT0ghyB{gMw{vDx;D%vx-2GT(s&*)F;mH5)vLp7sJ_IEv?RVAN)#!xPpphc&_zn2_Gsl)ud*SR)vlK}mx3IH z8PtR9BM;mnyh5Gw=-HjHvKKWWvGiR=fu*Fk&AECoY zd`-KA*TBF%G<}I7d(07p1v#dbC;vz(lu)Z=1zpNMD~Kp8+6o975TRfhlRk-<0 zo9BZyY3_tlCoZz@`-e3?N_O!t=2#JHR2ADeqyCLc#G_#>$Zc=P0Xa0WgE9E;I9~P`l_p=T zI`uE@Mp=_;apI5aPj$ks=rw`a?qtDzqOF5y;Vum?naK4z-Hw)P;H(_6fV?yL@D{}t zuB@!)twoR4i|+h1LPI{wUVfJWg>_`-rsC+A0%Y{W|B-Kc^{xH;rtWkvHN7{uyF>0h z>EN<$7kF=OPP*JTL%!2OsI%ETmNO(n^6YjUD7jjV6TWaM0QCN|f z1UHGp?x1c3J0L;P_~#~0S=)riGiuNZH^0$`R-hn2J(NIRXW>Mpb!nZhcn9}HgRYYN zBe)&o0PE0?Im#KR%l6C=8{UsWFlHkRKzyb#vjRs5WV(=qkXQ-b@ew~3%P)WxiRUdc zGQcmA^^fXJ0hn805KRL}QX)izLn>qu;9|9#?pwFg5d{K{pW&ztQqnG8Ouy}sIP7@4 z_lTAjm{J~2B$IC}t;OK5+Egg`_Ogo*(TKgUdTWlsFvjHEMq}&&b%)FhE+CBf4v)ORcwAWH~p@jh;(!lW{k3^MT%aKyfG$lR}_Sw*;^eA_cI3i9lTX zlI|<8X<{IRWgzt$DPq7la~b4u!Ptt%NxKuD=^-f!4`r)v_DK1ZXc6|7+ooaNoHv-$ zT;Pc51u!K4bL|q?+_+I=NA3B%j4WNbpBZ^KFE8@WgY-5Dz{LQ(&Kh9>fH*N>;~KyS z1{UZ&gqSsj0Y=_>Eikt13~PIq`2e#Xm{}E%kf#6Z(#)A5304P#Myr}n>7_Gu+$3@L z!5QZiozgWuYeSv9;95~@YsZ+tcK3XUPpLxq=ayqTq?VG@oacjIRnz!PcIK^+n5SjZ zBeC5qJx%`TQb?!$}%tPM#Ssm@@`OXTFP7l8)`RTZ> zku2^y^wjw<9_jxap0MDuxTRhC?zyGW@Djc7j77SJtcz&AS6unWUf|9lD?KLK65jpM zmALugbPGD?%A9_s$|QNHMR@LUMHZ^3KLhu;y6l|1oP0{9&l4)aX|PF3enpda#i~?Y z$tRaFBK%tcFF2~?5UX0P4Xl)w!R%5~A@>Mr`q+r`%>RxsCStU-o zPg=B=xTL4wB~785FU0NdNS6ZGUHocx;Xr;*Y~5YEJ6GcV`g$ea=B~81FE;vg1JMx# z(0USJS#3q_xG-Lerm>ju`noDvRU8VCN&x$)+Xz9~mfuhQ{g)nmV8WNHPJWU;s8VS+ZMW z@L?h4X0%q6QO5^V6xAnYC9hy;xK*dtIMqgJBf|r?%w?DiOIZSms>KKnfG8$7Rbv|r z?75D%=vhY#dYLMiTBa-0_jih!rL2r;g)Rf09J6tEp5!l_XayIWQ*meKaqdLa(blv~ zcGp~tP>hIA4((5FPD_qzxVkqpWjHvy3X`y`A-eIGEw67>ufFd6*zV2uI9^|Ji0`M{=Fj8ITncgB-` zd~DuDxiN))DW5n0LD=M>ODPru7-~=DNauKZ$qxjJ0dvupQ{KAeh?WzIjw}T5&$=rp zw2SuEgR+mG-T*cx9SH{jso|uTi4De?E^*j7`Q#nzgB%0Ncq@jQ%uvJYb|v=FDXll- zgdma+kQV?znzs>6r@$hm+67bq4hOD|OrBmhfS>^CO^YAe#&)9D*D#mj%{m;ii`5q(~dH)oU=U%`6-mAKIJV3fQ%k@`Fdg||| zvLEP|1ASSKi+9hvAE`_C#3m{eSxd~jKfn6-_BaEMRIWm|SG(fHne(h)EB1o>fzH+T z@_n!JC;5l|)nL^qrQTJqF(;!Q64jT=Oy7+zr*&URFqe=fg#l}S>7AvG^>2U75$^j? zRTv&#Qxd*Zo4kaC*Np;gdwStwU*E+^G{rm&^S4&P^rJI6!6uTruooXb{Jb>K=Oo-E z1qzL$vsT21kN9MtUz)tr{*U<@voIz! z={g_<%AjL=lHPC4{R-5*{GF4>8X2Su$UmnCSsfOo8x81FeN|gtxq^XJQ7b98;tumT zXJT(oX8}8D^!Myhv0}A9oQ#Y}tS%6Gai%R-b*^3SCwMnLzDX?@`yYsS$EDv9KWkq&LGh(%8<(0=(2f6WFX7d4yM{jo({S6oPKRIsuc|rx?TU3BK4v;9&h^YV;U^^~9 zTowL4Px+CXYlp@seIcz@dR3~b{MCQd#C@@q;mvS@+*(y_uC@T=@K$h1U8$uN4~`Y@ z49Ys|cL<(^%S#GaN!9r!yn$TIAvHR$a`ao8sO8U$BI(JZ>gFRBgnb&E*lkU$vh$BM zGTK|Al)6zMd&QX{CIBo{erJrB_$dgK_iuEs(5}%X^{pM<%;g(zmJbSe26YQm zx{`lCbzC&|kqK?a-;`#bmb^-+vE!Mgo$0v*zMa3OqT7vxFK^e&%m@PBG+z^wkKhsD zJ`Ru=Vp#$%RXG&#Jdl(~U8@P1wgI@wKqKaEWQ7}XU6**LBZdR~A({nOx?o=dr1&^M z40>rSA_GBZA=oKPLqZV`fyzJB#vuRcBlSqC;0r>;{ZEGXpT5p)*oJG=pJTGHYr~3o zx%uc~d%3V}jVvH)%CJU^tY3a)O?yLcyXm~m|EyIx6oSfOP2A2a+YpFL)t@ItYpva! zw0%>h{^11E9dV^v+DlZ47?Z& z7=g!bYoE`AK0BmqzGmiJ!NNDLgd4>5>&pfN$4(A3lnw1HQum|*Kin+h4{go`XMyH7 zhMA)_?8pN#_rCcY;1u8)0z@GxMWIV)#2?_Qx*6-I^-+_a6ZHqIpU$*v)Smy|u(Ut6 zuIWGoI0J59iTPgOS;SHgx8~hNLeYmaXK>!vYaU@;C+Enm$C=}5;V|~%zuQ02H zO5U0Jy2?K zkNdPiv6zSF=csgQ-V9?>`A>!W8J#<}zNP;cR1lEWc6Q@bloTN0&u@QL;*3_1L;nBA z{+-u%dakZFZu2h*%f408)AFRG0pELhaeX?l#MZmD!KrO&^KBTrHeiVZRTy*Z`vfm( z3IY96Jr{Z?&6GfIJrIrB6?LdYO&y=8#gmG5`O6Vm zRozgZOf)v92+bjA4|ibg&W$n-NA3$?2FE6D$z%`gw`o6_-kaO^U)M9w+>WS-wyeQ7 zqtE1;*xJvZzkHSw*g5>v90K?@6KIU6fyPMBa7T9e&5oW!U)tGGSUBFU^y0smQ=)T9 z79(~??0Z(ZNPVi}U$A5AP}fqIE{|3`YW?KuE!ewWmgX_fA>Z6lYP}za>f;wm3nGoU z2zx3U!m6lse%;hR_OpW&u5oVMrLxTdX>s9CnwPRKjy@nfxOg|aYOte+vB;2C{rlsT zNVLMQA`E=}3ex^IdTw@<=QiGbKzPtN3Ieyg^a|6^ zjf!41XX!`D^+wrZVL=|_UvZcgemZqVYitoIc=-M#GFu5vFxn!Tb;)hfU05NnyuQ;k zE-LEw-+#3(v;?!{xnzn7w_6NnIEm$wbz(UsKHev~*J)9{B~IaK<_Xx`cqEJl5Q$6} zDUVJcCb0W@^~F(ac@%3W81$~=16!QC-bAk>6ByEIs!3JqHZ@TV7c8 zy7iAURVqbhEFahH8uxrrA7}Ywx)UcjuhEG~*?akX6szcRa}ZSHd3wjPSZFp)oCa7w z5cTOK*5Ak(+>4kf#B%ZNoRpX=@lB$!dBsn=hNsR{&uZljG8FZfUdFNqI(EoDK_$I^ z4*u?YzVpPf>|gTl%2D@P=GvW)`LG@#V>7SG4r-Nd{v&nh5@(8DfSyYeh9p$G$g}O8 zbWOnAb+U>qXf0!9_m>Gi-%VJ?KHP36|Meg2+S3oBeWJHUKa1v8%(Dw$1Mk3GKm=<7 zNX3J;t>9Prn=2v!gH+7t7ycNj9WDGmpI1@w8@u3jCk>$qE|z7pE?n)a?YYq5#X%63 zprfa@PjHo$-Bc#%;X99p=Gj$e&Y4&6eYAF@;Ky(IHn-V93g^XoZhBfwxJ{7n5G{9v z+Th2b`p#~rdqYo!qmp_)1-$Qjb}hgvT`NJik>%B5@tI$_oy){!L0;L#0xswckN3Js z+{!A4G+q2M_Th7X^MRl55BajYsptJFsbLL0)phP8BxWex&zD1O@Ef7#(!e?e;jKP9 zDx?`b1_PJz|7gCG?XOD3#2-%T_1w?+ZVp^924ccZKUaQ?yB_A>2AAEeN3t4U|aiVOy%LQbrX}Wfwerms_QFrxpo}=XWdwZzA4=NRoDe z%Jz$)0#EF;kS(m@aT}}H^_%^|m_fdK+@JwrR(&;(C#=pAdim}OV*2b_%^Y<#R&ja4 za>C8NVL<^~!q%Ws=b@GXi_l&sGeXqDQ81ar1;=LJy;?Z6qrx0v^#qa2_wCk zo={qJlt6!xqkJgv>BbJaFWVpWA3v`c?BtUj%NzxB61Bv)NUaEZyT>RbTA=uR!6;~t zk-oTHy#E{QP%80DZO>@9)H1x#Fv=awXwNvjJuq=0?2vmNaD!>Js#;SAwM4xEjc-;w z>M_fT>b!g?Wk)e_ok-}1Ex(Fgih%juWwqoB>q_cg6G27bq>S< z+kOChHvC|^6dZ-9Ie3#v_t%`YU*A24J;%GL1NI&7o=WqD@18Wp$nQb|fB?>kPyjU` z6jDJAyy9ti0KX0rSbpwTU5(9b08=@YeDeD+^Cu`bv@g|{KTR=i1i_MulXV%IEo&`r4AlTo_>=7PfVSKd(uNb zS|SzDBp6h?0|hY0<9w?gax%62oAo%du7F@Hu3xvjzQ%AbgtcU0#`1;R@_}d&?+KM` zVT0eiQj9UR5su57uYs;UgWt?_3Y$iDH>6)3$j%I5>pL8J>u^!%ZNpWcZwIWm4`gdr z`tjjx3U3LKm-EP9N}k3OCCiMIc6a3>{2Jfk(uS!gOD)(q&QAx5!1`2H%|n%~E128? zb!j8n;pM$H9CMSfMA}qw8x-_kp0fz1coIBm9Zn|oR_5RR z2N=m^IAQ)_ZAXzlb)ZPU*;weYIi1Dc-dTLIFaXp|OANIk%Yj426}n^T@29UzF<|Lp z4?4q(<&gHf4TTT&@{TMitsuGres1PTq41Am5Rh^aWeKmyaq<6)5q1R)VZx^RK_`4A zG}hAmX1a?RE?XS#X&}hFYO4jaPH5^jGqmfGdH#%IURREb;oNim5PG*mj^4qD0Ql?qL}{)G=U~9GNIIAW5&U)# zAVh%bnGV$XWvux}jAXSH`O|;Y7FWc|i-`ICLJD<9lT}fBoo$k(eKXw1n+}qUC_B_3To}!QIFZ%!A zpBv~8whcOm5%fjo4ZlTyoPo`7jJ_myqsjH;Ve&)r3-SjGu7$v&#iG|jYPrGk zxz#?aX&X(O8#Z@sp4iOWe70G!)v+bp4%kK8HQRlqpebu9WQsH8G^Ly(q;yfnC~A9a zdoTM?`w9CO_8;uk8{iE_8wwrl9gaD094Z}gj)hL`&LPfx=UV5>&chp>HhOJjZrr!= z>_*W>rOOwp7nM%kO^u~yP)}1Usm-n%T_vtk*T=5CRV@69sp~sui(}mJ&N&~Q<3A_F zK>!1IP#}R50Nh|xhVtOh4eHI+%0;1M5|F{IPK6M>FOjfyXL$@1HZ6;vOc;%JB$i`g z$qrIR-KmH`5_aN3qc4L2Jkl9~tPt&G5?Qhm&aKFeK<0nSCFnp^d>G!1eT1tvE1B}R z>4?SA>EwUU&r);3pX&Zz{%!fIrE#u)v&#`tm|tzyoIW2winyF9HIp{0qw0mWS9n-* z&e$oMUxqIsZ;$u@O+Ow=ywcb8#W4j<&>ZvdW6ZZcJRTju0#?-bK~vm!nBah1QxjSN zF(I-2UL8r@pene9Q0`OGT!O{D*DE-@g4354#Hql;HHQnos#jH(8~EX^vh(++ zCsOl|?&Rg>Mo^QQK+dxMyxr$Ps5Kj(pCCbkdFlU}Ky*(sS0`HUZO-Y~%o2AaDZ@eh zUCgL!?eRtxcB~lfE%h=iLPNh4yc81owWgA9Qz1o~1WP+QJI2}u*^#Pl%5br{orEj} zgoY2D97fnKo2^j7s$kWM`wpR-cz3CT>;vYS&WQ+0%ENgSO(Yrj?V}M2`iQhA;1B$f z{?u!B!7ecllrOf(^~7>Oq(QPIr_hw#2H->-g%&ArnwhmtDsRqlNZ?z2Q!ncJ4-IhM8~Qb77<4ujy5d01*9)WL^xFwWoYAW0i z>_~$q#<#a-+jev;qfpfN`F=ab-apAhl{PIEv7{SEn zbK%`2kPATcO+=LIfHT_s+5=Kkfva@F94|@jh!0ukj>n^5w9J z$iwwNBVN;kOkDbO`BsMnhvbS)B*QWRFBt~UC%O!2pFVbU!EO{kA5;6hau564^enZ` zwrJ>vlkIESRWq~MExPSpFv!-2p-&ry-ewQFgroR*=g`289YFOEVW}h(p9X~dABSpa=)>3dsx|nrf2$!#tO^q zYNHYTAUjf&^R~<`I_<_5vxCqa-8LaPnc19MTwY782Z#@YssjMTV-Q-Jlu5ohb! zd8izf)E(@E=yNH#_lE@JlCCAUK=%L*rATi-skxK&Ung*F_{x=0r-?47&W$dVIX!#S z%(>{cj;PQFg+0^ND=5go%X4qI(TUMqV%?j*VoQQNR=rw})|-?I&+GDn;Lhj4v2xg1 z4a*&urcotfE0q zD-5dk!J`-u)U=@lxRbl1;iUg=m;kZ}l0v^YKM@^k69+#?$tti7qNX|uM}ps;q&)Az zk~ug+T7u&722S>M7WjwMf`X2m)TuM3_yQ)j6Wgx~igC~K0}ixn%>{VgJPkkFu^GEK zRb}!+;f?nbKbHMir0?7e8Di2*RCny%cy~@abAA189{;GY(eeYOhrM9YA8@1f?)z_bcnu6gS?>1?jrd`t{B!0WtO^+*YIf>c6P8xxffeF zw!Vsg;K`xa3WZf`h7?^mu!{~R?p?2tOMZJb30bMt)v-}p?xTc={qH65@3o-cnGC)V zoD<$w3H!_3RaUP%Ba=att~=p6Zr zDlM;&ad60X_fG|ck46n%TEUmuZD)7(m$&&d%}KX}iD_G=K#fO7pn33p9Co(n7CJKb z46U&l7bEEr_+Gu*cvdYnNhUtN?Pb>j-_bcUd z?MUMQ%^ZWK1DRB4uVa59hKyY=ZSx!1c;z!LWOG~(YY1tK1WN>#ccTR|S4LKB0fE-7Qv%lhpDPEPQ0SCvIV)SDV$VZO z$>?#qUtC>*`!CaK@}g9=l7z3=i;}(WgiC^k0U>gun9FsIl2BSjVGl)Z0txMYt|56V z*UHdEXSjSSFjhsbIJmkMHdEc%dqMkc_iV^Zh=mi{v_js4F}YVRWygN|`SW~l`iax6 zYW7O&FSTb>6<@kW`33DE_K|_|(9M?|JFUpc`nN^s7mrsXcFpNHbj~KU*xj%Bm$Fy~ z4H?!Yy_OV>mP^WbJM>>X;emskfFPSWSzfLaB6lTJc-qO^YEUD6)|E<5zC9@xUG6=Uuq(iV{8t%ZrDaz@<`X*E@zF^>eW8&U{- z7(?Dv+Y{=(x}A^v?5+4|)T*KY)LXQcK(-onCSu?)#>^+OF1_U)pPPpc{RE%E4lQ>+XvHM#imIMya#L-Z3SWL{+|}I zi(?jA3AU1Ty}oY)^whQS>GroHq0W6=cQxbYmwu*y$>JS{@^qE7dxbTjOB^j1#xtSv z0^rvu&3Xf9sJmvo9p$lFbWFmO-?kC}TVXS~=ne4ubN=Tiedpf88`7s=;XMe?&Lwa5 zFppI7n$8iX`I1y~es_`E&1bA`5L`Y84|*Q2xIC_YP@?+y--qP<9lzm#a|6@j>y!mE z(SZjkDiN`jtZr}!*w2!6wzfSzaq%oe4+jPgPmX7c?&4xv+5~x)X;G9)%D5NJ%9d$s zXz`XBrY$xUz7s6KQCtn$!sUg8ct=M*pSD_8#r@@_RC1of;neny{5o8;U1~Ci!{s(B zkUt2HYOMDGc_89~ADXsmR7%=#Q9zk;qu3-z-D+Y3*;}P+kHmm-1Eme#zng<){M;W{8t_aT6JW%gR7L@b;0A}= zfW6x;c*B-vg8RoM{p}ZqAZbG*UXUvhQ&lL5WOt<3T#E~mhJMJu-wB3_G{zegb##kG zuM5tgb@?UB8QK0tD4F8~ig54IairlBoP+kpp9W5@X`vt>I5VGOi3d1y zCfSZ8)w@Yxq*njbI3+G|N^LBBw89^Scp)M30rO0UA$X=BVXRB+y5E0MKDz5cztA07J&T9R7yF1< zKFpd`Tnj`fOK_#z;f)CfE*!4qH6>;l!@)9fj~^!IUtGRaWr7k$;t*`^ojWaYzA;mK zZ8}P*P~5QpZB!E~IVk~v@$wX8@?~?{@_Gr#Bm0!};DB;jmqn3b2Ry|a2;*ySx-6Iz z0E<%N4mgvU1MbPjOCZkoaMuzsEc8JabeSD=y2ek0I&iRhggp`RkkEc9ufS&PjZl0Y z_RF_E?Hg{-u8~S`j1`9|c4t@3!mhdKUqqUi=4*Q{MNt0fK$lpAUA4rUFj z;i;7{(lftGb84O{2|v4>Wx z!dot+xho{e104JDP~UxQciXynhA29_x<7A)Y#5`qetwGI{vxpKn1>#R1WZ z(#Hr^*a69kldA8qpX|a%?x=O-F)osw@(E*ECPC{cA^`a?xvVfKpO0sfxOJtPs3Qot?F-X2`EXEY!5;hS@gciS=>vx>m{s zl(mPWN!zPNP6ajeU9b!^Vi$}YxE%m+q?{WyJ#2?V^vq3l@1l9a;7)$>?trAzkHEHF z@ahuv*Lb5v5Sj&(kF#n~BCD>YcQVg-M`V2j(9konY{QDOiI(uW3*gzb0HCz6)C#e)5Q@E%vEEx%0Uod@Ib(k@p$*&yMB%iHpCz^J>~&o%#EXdk=$|+L z1x$o`Mv3ZIwRj?`q0cvbm^Zv0Oqzy=TfgbV!>ylJu+ZsuID>V z2!khhwH4UOxL&^v7uL81CPVG|LZ@zBLWZ*WjuH{g5WbfE=^hZgRn6#Q)wctcDQkJ1 z+Vr0YWpKqOL=eI9H9%I7;QLBJ+kgyz8mDct?xd=R3YN%GDQLb?&!jaLVnm@6e`q4& z3wOMrN%&XbUo$q)oaUd+dAnGw<{0UZz`>1gf(;PXFvCo*dC0Yzg--M9<|j}a^Vv1udA>nD7w{UN3KV>lrmW# z9oRJWe?6@cK@NB6G_kJbw4}iI$Km6P1|&5XgkML40HvC!KT_NI^X$q>!X6ionXl(d zuR4HYAD{+7(%$09C+v}{!m7(h`HCPSv!u3DvcdR&ib*g2>_sLW$iiH*T7*=OBO|-N(-RG36^wcXf3wS&1$$p z?krofC1oD{AQ6t&wxX#gvfnN*h>|b6;uD%SBnfS%_OGwKjQCz@+p0NS3wEQW!A%Kx z@jN){{+OlfgN4)=nj%&?*uNfAY)@0r_62Q}&M!9L8<81bc7k%`Qz=QeuQo>TfDy~b zH^jJvG#VCMPTQ9ER&*;Qlo%$m5{Y|S$qN~_qJfE2cBS273?$I~wlmIq7HE>94GZ(` z1)2{=bcd_XKgw;rxlmYhlk^Ec^=m6j8!=o{be!Rx zKnm3U_*l@7hfx#Z^@Mo$j51p1IOhp3-0x{Y-H{zYMGCtUaFY^sJV6`5Ga$Twg8c`Tf8BGvhNsX8LZYswtc!Le| zG1vNg0*Svap0|t)j_=;e7#E|L#e}J{Qf(|fWOA`mHCw2py0(QrUBQ&UM7-kQ;a$kH zo3w%gs0gCYO(-|<=3qHGSaQR%_Y0L<9v=9&X51{A_qM-h60`Pv{7>Bw>PFlC7mQdJ z@Na-1X(H#Mt+%Ud;~8cM3LOwr=c-I_-m!dl_gBB>|0TRARb{E()!Y2q=@yY}h~H;r z0|~;_isI-X0lIrB!l_#Qs1I1Wz=VjBa!O#{@;2c3Nhs97_XvnM)Ch4q*)(h%%LB!= z)g<}LzP$}CWBFX`Oi7kXaaVa;A!}FBkcrQuH2WIu-{E($Nr;ZhX275e->guoP*TcN z%xv<%Qn+AeddenfLW^FclBc17Aj7FQZTW~^pHb%=rnr;91d4m-~bnR-{# zv?ry53}0(I0cR^Ne|f8I&zYMprpJ1pHjT_jhG1~vQ=P=lt-C|AoXHIYr8T=X>rOJz zbe&b*S=`h<|5(@nHO^nl1})WLYi}G;EkGh`eWBF6i3+T7v%Ga#(n1Z%osR{t!FkycId1OJ#1}mkRdO3?Wrn zsJr<5f^uT3iySu$V__qDhkLX6{1kkAJUlJnEHGK+VtF-r<(p?fl67+Z`&&6UyD#l& zLH`uyB*L@BR07D0m+Rjcrv00(h@_k$-jVmg3x3M+{e2PJqq>ug6ZPS|el9mL+bysa zO8MjFDh#t`)&aIBN!Sr_Qx0)9ZaL(l?o1`>Ii|%!qKGQaE$jIy@VP%NkP#b?vKE{Z zhi6@o(~g2yJ(kl0Oo1$d+Ng9NvTW+@4X*~*^;Q>Vf2o>QD$5D{5o zs+b-ETBsIiU8~JV20thyLuz_7rCRTJw=kwg7bz~b2(q$J53sYFP$UQ4*QZR%nl1Hi zI-o*W!$o|8I#F{m^B@Q2sy%Ao!E%B@e-My@wJ5XH6fht#sr4;J!dg<+5XhZ2pMJfZ zrb3d9?8@&YH+Hx>P|E2l)c%ceMC|ta;>!Nou8t}KG5eQilZ^$(1cpBTnh6aRTk(bWPPA z8Cec`({M7=*}RGe)h7}_wp5KmX$>YLhLvy9*R zaT^nruCCL^%dCwo4<1}Zxa@&R5})Vg`QgGR+gSDuDU(4~Q<1k9q*IPB)0$&h6D+?Y z=L&m`kEF@M680`!s=&@TDWJ%PLLJ{6t-7%&wj$LhU@b@S3zOiLm`FpbgHlB>OP5ST z0fZOYTDGTa?{$HMb5@z68gxf@HlYheBR1;V=!1Uj&HbyIV6)_;X-Lt|mP+N&^ir{G z(H|{(U?{Ag-a3`mH8*ls9GvaY-U8owy(|y5E|3d|DJowQc03SF$RR1DFIClOULkW7 z(DLCqxeMO`GVs-9pnrneI5?aQtg&NMw3)e*ZoNX(G<1FBnPf{KgIO^O7X(HNGMzHp zoQJyMW|R+-s|XN^FND!ca(M^2X~$xR+ejKm;~t`J0tW{b8;!qu-;9aQXA<7W4i?KY zKezGRLFe1y*>a#&I<)(7rdQPHy#h2?w9r4_v|i@k%W;~JQ8mUFlFMK%hY0XB8K)F0 z725D;)$TDB{frkOxHPe5HSW2X7bU+=sa`KbU+Fz=o-*%W#lxzjj?-g5ss1XOsskqZ zQ-<=lK(As*G=%ZFe@4?P2JH><+)zK>h2Q--s%!o;Fh-hchnFhB;q z0=AD|jCQZq0xAv}%YARMk}xJaQYAv9mRxe!iYu-s&g#8Q?1e2yLP%k@v)1aGb1&KZ zK%%R^d?N{JZd9F9)i9shFiWYvJ7aHqez7q4ZXxeYZX%+Z5`yl=3LEq0WeiY{h=u{F z3U6$b4ty_Ghh*_Pdm%tR@)woInMvU2&9@&OeVV# z#uf53HL|7Q#Kqbm%Uovb?wvSo?|uf3MN<*d=+a93xajB}!1fZ=nn8t$<=PL2>7 zrhw$XN5W_0h%bQT{i@?gjD53G?Kp^^sdV2W?~uYqcY52_m0GW92<*i3m4Tz?6J?L1 zG`CdjD?RG27BJ1N)cXsvaSDFKq=*7~vgJ$yXx`sIJ~ZkbFz1UB3?XYyrl6iKWVUv1 z&J%jxaGZZ}CzG13ctGrMEnMm(zE6PBaI=o{z!?<bKA z#S2EZrUyn9q`L(FMpv=)v`3uj8;|}O`+ob#M6;n=Ha@p7F}oFDj~{zPU$_j%$z>S` z8a?|}M!^^358F(x?&Q}ijUFBcHqGtBC|Ra{%HlM(+6JLtfoA@-JDj%>OUj}+P^`S_ z{zS4t=SXSSr}*WPlgdFbctX%KHvO)iUoO?~=}WPy_75)eSt1dxQK74X$9=c=KOVnm z+5;c7O^2!Xc*%rHSbZK}dQZ~(!d>!(P#*M@I){F8{mW1BP?i36yOZe9CVITYiZa(T ztYw^nAE`!;ls317yyw5pptFA{{@~NqF$|${u_60H=#aaE+nXP_R(%b$vOBdhCXTd% zUE&@mf3QR+5|ybGP7voY!cqxY-q~oXpZr|n+gB;^R6)9#Hh0eJ`M5|jq{qRm9M93B z=z}cXDj~)aaQKp}#8M&#=?~bMp9{c&V_nFq1|+^4jHbawKaMOp&GC0^OA+wt9fb5-{Pi~WprES+fO!d679L%AO;lCcgnzZ z1&-$9yOyKsTI8~VKDe7yjf^!s{CVta-ATQ~Xf4%F$xv$?ax|wvbnRT6$z#b@nEX@o zrRad%CCa8n-13VTGrBD+?^z(vx7a6&8@_$|Id}CH2jP0H>e8(5)xliuU_PuCCROs0 zi@#+oaVE!&(on>PEH15x@IPyQcymLCYiPC!06*Uu{B*2Uv;^0gkake!;WXV{g%8cD zF8&8sdyB^{e;hvW6T-(E-<^lnm`VPFzQUyYu7PM2s`l)=r0NdqpS@O@^*h7mABf0| zia*c4Q*2Kns!o9b7uP}_NHpilVI2)xy~wgIC$QYk8qkYDhhCcRCeH2j2j`&>4-d@H zcsX~NlyOMRena=BB9r&X9E;{p+{TBI4`9PB7Pj~a#3O29odo-Rs5T@mj1)%{P7jXH z>MCvAIPLWBQTo}OhYGNdgdE{!=dg{?KFpLFJnJ}8I81%RY~AYAxsly%<_EVB^{9*k zUAHdAOOKnP8h88!LvTCPzDD*HWGx?lEm}2$ReRVBiLeyO)v>YT(-F&9INg3YhqhQ_ zIa3L)u2`n;GfjxD(}w+v31YU?q&(i8kMic+(C`P(WowdY8Q+|mVh^&mD46RQ6N)Yw6QOxVIEYV{w@WkUZWT83=jDYK5!jOF$~>e zodIVvir+Rwh?vw4GLQ<`^5ljSg0Tqqvk+C^)C%R=yrT@;M5|nwo;o2?dDl}1unyT4 zGc;=kM*;KLRh65XE_uey#KaU)h--F{>WP>>c-sODSuiH3`2U7 zn`p*X7T`y+$=s0TmJnhU{>C>q`l^3aWeU?cKG`(crStO-MBC@}7vejB2cNO+BvnP}2;lSzV|R{A>#x7T_T?43|1LR+8wdEb6h z8h8X+;E?IyYY+^177Gz&f^y+7lrzs-o@7C|wcvLvKBeC8xpZ(9u8|hEa@G5s3HzGn zW@bi`Bt}P_8TKz`$R?9T85~?qdQwV3hoEWaIcV6K`twkYc{_5RAr3W1Kv z3Qd!@q%F!#%hm?mxnZVxO4O~KDt#w^{K{b*_+q~6NGpNouCd0JqUZ6ue}U87zODNwb0)@J~Ud<#MBQQ%qXj8nz_9pemta^z{HHZ z#Y94%e5KH?m=2cK)DhN1^TIY7);NlXuSxo(xxi^v(E1wzZqHvK9lVhwYw_{&I@moxq&{u~xn^`>mS#2!~mgpvM z@i_*!fugzM@Ymdk0;h5moOLKuK@pxQ^>btVnKm}OBjc1#=)I!I@w2;2(<%~|fB6>O zJ}5q|zCkUYSP!+z+Uk7H+DwjGk5!!cuWyx;fJa(1p0*%i77} z57-leQb2tAV8)dt()t~j|LyDlxDZ_6de>0L^;(`Zs@Xy|9^8d~4$&~Kt@^2>BJOKr zc0zEK)`mAMW#O8NH*BN*4voMWd6Wfq9mt@VSwqEILyzwmJYB%Q$4Rm#TE(1Iaw>a1 zc8~*?V2u%Ce4}##A0p00IHkJlJn$7&99)hPdTs=*+xT7IXZ{<^9n7%lOGA7k-43Q< zs%>wadVi4=+j+B;4WM~0JTuRRy3eHLK4C8L341@zjf`->X%1MwX0+k<_O?3~`e|$9Rpbq*yESQq5jf4I3w}sKMgfOesaPBn; z{ixiV`z3bU6>Tt`GnCzk)*eUws!2v@NoTj5|6ZJbY_E>xh;K%Eh0kgYLIeGT)bcw9 z3#PoOqy>))thVx6Y?q4QVivQI00j&%fC&twV_k<+5T{Zd!$C;UlrW8(YnIhZSMs&0 zAglpcA*5(g^KtD~=C!wiZU9 z&qtV}PV!h~XS5*U9_J=Z)k>Oyx>LFvU!W3VQ9>rF%F)g%Y2{vv(`Ul2+f{0v^lId+ z9o0#VE{B^qUW*M4!w1ggm#^x3h5{efiic;?kw z-Qj)|Rmx}%3Wtj0nuW6eeUdTmhXLW}hJMxxn^ekJlc7aS_uaXiz}GD!ddXYOh93t%v zz5iv%eIM&3cIuS;(6L2Sp!S)b7xzE9iw#{B8at3(rE2zC(VkJG@K2Am6*bsuHgxhY zaNozYtG+kO^Vs@tMz%65_lH-$G>4m+Qg+vXUpGVSW*B?FI#N1@kp5#R8w@cg%WA@# zJkWBK7F#K>`e;>?hB?~pF5QcY4#ES_kFc;xAH3PxGareDGjH~!BweB+w;ou3u#hfU zggc%A9hR45@f^fH)$=))!4PXJY0#X%F-&Bfx@g|&Ld%227VnK%x!LBD#tvDL;qTxx zT^{(1DyFyDhQ@Sc!a5!8L{QB%$-)){(ouneV5iw=V#(TWMV^;RBv#%xe#^?1<>ueX zHoReR>ET+C+cw7su50v-qKGeTrzxHT!VDOla&smvH!*P_ig&deV{O0^U4gH z6Y?=INZ^WtzKZm4Of!bLljB%@rhi`> zgQg_Qt|;6i0SYFqN@u&|$(UiWJ~Jpy6-8iW=b()JB9I;*BlFl7N?o;q+K0ZRG0mT` zHPCjf+bIu`cEM6aDZufC^Ve!ihy%Mx`EIUMI4vVht11m7r31(XVbvinra`h+lf7JO za7^_!Ix2D5y5DpXx+)DyiLzZZKbV;47QbxTTDxp=rrShCtD9&}Wvg;r|8176J@h`a~4^2IIOTt`@9fcz# zUGpdkpJMz%~(98`q z$wsfx#&_r=LTE8SM|4IUD3N|ZLBYqc4@1x`s*IItB9NCC!pdN}phtQf+()7!FhDWM z)>DBVbl~=ltf7A9k>7BQ$A?jeO=)SFa!3fRq^Y$%Q_?QgjI{iM;*NQ?f;&RrpVMHv z?^p%Q>$6W{X=wB-R>bZZ90O!;boo+8ra9Y(dDMnQH%02&88Vh#en6h-W1_e-yIc1Uz z)qmLpgyFK`+p-c1DY;7pP(Me7qJ2s(#3e*1wqxf75I9r9LXfsOOEi5)y?2jE7qef> zQ~O4JCts33S(I+PV)vuB8G}fMq*uX;bF@L3W;IwoDCVnxv80e0<1c<*i?lQHBDM}K z*`-8LGm>|5pbfeT^88Kp>besNSEcv(z`Ed3MJR_-&0VnyD-uyjT#;;oYz}2#oJw=( z+qhx-9=DruHg_wjVVa^Z87glkWpKx4i)b_W=~h1-^;hPt?OFtdPe&B&`nA@#e+C6K zj!5gO1yGK(zj4+@+e|l=rp3#G<8T%po2t8Pv==r@Mm3+|J~}O-X#**uSXvL_pz2z_Um$I?xCc7|3VXr7eXNp z<*pe8R;52=WfL8uUMVKJsZ_VHsg?MIexNA8ZEebzDLHw%7@P`JZzx}dh#C34-s8j? z{X0^sG-mF+yI%eZyqk(g!xqRS2q7!(vo)c4H&vJ3oYL4l^a0wtiT5{nWtRPa-TKIQ z18R$sYSh-JeSlHmBxitVN#zi(IhR`GazGT-sJo2nT)Ls1x_Q50S_s9#7pIo4$OK$3 z((KYf)(K{dshg$YyCg2W(2F_dLd?FLZ>k^KTM#pGd)iuf^}KnDpu%lbfYfC zvOA;=dXFnd@t^Gm?+guFPkUE*HPokfT+u_l@j=JqnR3mSblHDU3-Y`ze!{edbk;FE zEv7Q{P4SI~%Rt*t@K{l?!afhMWrn&%nbjMP^9lJxJj&PUU=#rRb*Pd{QlUE>M(Y6N z<4_SNG*u3O3T~lEhhC>f)v~QEVQ!}m+h(^zyMNa5o!Eir_lEuv0%prk!=&0YJAD#yyOp>Y!4T?~<)+r>c${`3OOly39Ao@;2_o zA!adGaw`cEKFC6b%lPO)d_E*>=ya9+bqdr0$Y3yZ14l)0vP4%Z;0KB_#BW&#lBd4{ z!GPdF7c2Ck;GZT7QB^wc_PXIC5$;+v?HaPF%1)8uBlOnb02=P1fCY&ek*5ZBW+82X zzs1`6)9GuDVxx&yq7FdO74d79RLdHC+U}FtHkcNWxznyKsIEuR-89hg2s1XNbs^zD z97ascRO&?L)l%J2Um$9$6-!PTC!vK7q(c8R`gADehi~!GwTl%}=PF$b5Qw}{9Uor| zm!Kh1p0YETOC~^*a5;CPbwlW(BxGam?3yN=%Vp329om%sgV#cjR%XALuczArHRtx$ zW=d(gMRVxM$w}5b-Ro9(Kbmw3jl*wEfXNpxaN{Gn9N#{bPJifVouobFrlRi$-t7UB z$6Do0jdeDm_x7QIF~WkEV$PnzuX`KW*7xtBdmlX;(+1k>qm#Z7+Lxyb<=WbCWupkZ z=WOLKPC~>uc!Xr@#z8IHf^cAQsvQK1F`WOCP1x40zBv z>}i1w|3Kks^P7Fa;4@xfBaix13J@o}TqPLlDXW5*s(p6!iDe6`?Ar#(T zU!m|3SgIxAvdhkUTkNpou38d})M+ZKqRigE3)sGNA6uY0K0YRo#oMiemg-)dz0Gw* zHA2GyNeGDW*tSDu#&MwASYBo31Bd+sY4mPWJ=-@hpHb@ z$AOg=k_9HhA}L)drUUzg>Bmy67+5qJsAfg}-s2#c?Wqw8IPMhe-^``$=pU?FW04hN zfz0;1W3ID-M~V01GODqY2~*+A>dG%8r5yVx49|aJ2F+bFVosAboGmq$@13U4Tr`nR z>~TeN7Ug^aqWkB?LDE0Eb5IZlAAGW^G)MZbQxw2B&io$Owd&`_*5Ej#y78T(Wc^^# zd(YCP+=_!9uC)|N=QM|U{2Ffj7`z>-=dq5c6 zmUv@D8ulhRbAy>QDZ@Rt%BH}*$1I3JLy5`%JGy1#nMKklS6PapU%XHH@9!8~jrW?I zY)I7allBn3Pl+)PR2%OM3eksALoMZlC~ZnNe;MyFKo&wJQ9v}*(~?heHALI{A^`QV z44sqix}f7t$;ae@jhRD#R*$8%RXHb%f-_A#f}+s|DJp7feE%{9XNkV0!oyL>+o|#5 z2pe!TTY`f`3)$n_Pj6cp71En^1n6Bd3C&12%Zaq?Kb{=1?^n2Rz1?2#bSc@8`_%@j zMa1Okd}dxUX<5&9nK9iVJJ=7rVufo4M#VAe+4NGyWQsM?1%m-1yk5Z4+5{A!Sx3*} z>s~iCGdvvkdF+H`r{ac;MnFrl0SiuO;Zo+inB2PtpppHPObW}k<{Li!^AIFU$thG5 zuMy8Z+MAxf-kg(eOm}anD9tHhtr_*JzsTi&rz`cV%>wu1lgZ%E->(u`T(`V>oW$x! zol4u5NUE6G?>NRf((%q+)dR4uO+VYMI@+zvLG2ikZ14V0#eDV`ltCrXKhj7y#>|>E zr8u@9>tKuPG${H(1$pDgS*nzcJKArV?9~k7mF!8%w@lJRUm)x;-Se%9e6juO+U)!mt(utYyBx zUH{Hi!G;G~vPWAxq!<^(85hBdel{vo07#PsG!F9l2x_+B+Y!u2X7r^HacNV@;su{+ zEif)`+h)Se=Hqz=d@vDj%XPB6pAX@fJ5~M2_Vxx8iN*G?t(d-{#P-<<1BSv0Iz&R*M>eL{ z+ii;pST{Src}XlJQIS~(q1C4R@oVMQ1IfvD6$Mq!`4ZN4wlVZoXMPGxUiB9Ri^4X1 z(;WuV%OB;sl8juCyk?^@R&6jWNd~51btcWE)fV-`C7nIBs*{NmWIcQWx%k37`h|SaBi1S$r1lA_8ihEnHSa5Nfa* z9;Q$(q!y7>L)gxh#5lrs=BsFei7E``OIb`AVb)Vh4AxtO3ezGuhl*wvsi$YL?OFy| zA?-sf3zMG*XD6lu-2QEEfva2hqf?JWY$R@@Olc`32=&e*q zr*Ddy!{eIlZEw}U79Ez5|7(bP=ghb%zQGBduE!IpwSG}cs2~zg<+)R$ZhXWBdJct?M%0%$i-fE52{`PhcqT9B)7P5 z^Wu5bSvO3v$G1tRN>i_Pn*VN5l7K{%t%Dob8^l~+$0DZ;bV1hDkxGRm`GqErNW^J= zYD*OwagIi3BfG!7l8Cx5)fUZxeJ%q2IT^B_5+djyBM|vPjCV+WLqZ3tJK*e~g!kKw zgA2lJ#6L!_RG8KGSd!&>pPQ z{EgT&XD%;-@ubKDN?2jp$(0KTMl}J*bx2EozVwmK$8ktX zrDCy!r-W_d?ILvRL7$k53$U!}8QBB9;fd)9_y61@0NrDww9k2t)tQCFF>;(0YP%4j@J+aenunCvr@0Jr4Sg~ z)^FYW%0wZ8?B59K0!vCVIE52HF4@`UgOw=?0>qd1+<|DWW-)ydDBO6&{Ld@$TLhr{ z&PD=Et_F#$%Fkue7444QVmz}nzgBYL5ZiU;Pg7xr%$P|T%b@udbJF-8k99Q*U-D_q z6THjkLDi}va>~c7@`X_OK(yqtWQ_il%LbpUw!XYC!E6Rko_^wDdUOkod>) zQ(zD{T5q4}5S+rHzA9kGt|XvJRUry+5FH8;2zHZKP8*UL9ROcMf84#@U)5>d-1Ieo@TTILWj z%P=GuUApdqD0MlaZ!YnI$OAmdCY1t(%VToLtSh5)QTk~8grnnNi)1y#{>ZFIN7E3c z_vXfJ!WC7~SDz*7xBW39mU5Ba2~#p5(k+=Y;m`J>JA(Vuz0>Xyk=JnujvS(vR653l zkuI{x1X#av5MWIWybQQMt5iwn8<~Lyl@{O}@En3@*)xQq>(CIIv$W$ex*-jlT|5r^ zHY*13rq|FA3>g|Rv^X@T<%fR~M=&&nk1{l~Ht5hC99xGLh*{Lml2#l-_kbfL2PF*X z7bP=#GJ5S$)rf6CpV}hc;pmePm_i*fm`J^*e8L!6)QBBFsuns5p}(!h^vp+nv_>Ib zdtzo?fTocTz5=*N|erAFUT}00000A`o_+ literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/assets/inter-roman-cyrillic.CMhn1ESj.woff2 b/pr-preview/pr-449/assets/inter-roman-cyrillic.CMhn1ESj.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a20adc161f433a7c4e3d92306301b9228bcf9fb4 GIT binary patch literal 16780 zcmV(?K-a%_Pew8T0RR9106~lZ5dZ)H0DY_g06`%D0|eaw00000000000000000000 z0000Qf;JnTejI@~KS)+VQiTZyU_Vn-K~#Yn0D>GZYzoFWxhOFCMgcYgBm;yv3xXa1 z1Rw>38V4X7&~ydchCS#Gz^U?2)GLZ$;~)fx9VPq!mcYpnq1!@L^>;{*F0jecR$FUZ z6iO)D+m7xk=GG~2u%_f@f_0A}M3f5QA!I8ybSlL6sOEWg@rZ{%r-XO@6}qY6-9rwk z7S=XGl3Aagf2VfteNWPp^bim65V8@r49{4$60G9{g+&}2us@F-2(Lo2<%nmyfcXPAsEmOx;aaT-TYLA-g zgvewpb}BVR-ML%T9e1_+XSTRIu8ysxt~wvE#THu(7?>6s%t#g^w%AI*C@r+u&NSFS z!?YO379&Qd#efkr8h}DK?^}Y96T(bDG`ag0NywoDEJ20KvU^4sLVzaVq0LwZTv|C` z14y1JvebUtkK*Sjex9GxKPxfB0|W^&XiG7#GZLgqMUf&w#9A^4 zW+iy=)FGciT7s+#QV7M`LjC>~tH06w!e2Ax?^P|^{|Jdg?L}zEBROmDjx(eq_hRc1 zV(lsh-~$j6AyVM#mLRo3yaZC>4oHYziCX!nWJ|kyDQ1We#|#&!v`Om_QWZjOQ|_<7 zqO^Ag z|LxCM>gQohx?AS&cd2u!HPjGABuD`9BFByk0|5i0D0M-?X4I1etS^BES`g^zkt~9N z6bNJ~lV}D>P(cz{NrEb0f~~eA*hz!DjYD*TB-l$5xJZI}3Z&b9(r1+npvb#yl83Nl z2RnI^NS>jR=NyU`K_+AH?@ubOxrE?5zK?(a5HSEGfL9XQB!kX)2>@jCl1u;sGFnn> zj2C28OX#Vbi5JWktIZxrhYIpYTimo&U!G5i)?Q&yyoK6r2DWv;-31u6PL4a9i$7$)2F)vjovc;xwPK zkBm6fN#La>Q69B!-2$zOXy>J5lik8e zjvr!tgI)_mcek^UQnXpzqIehz`x2z^vtH%)_`!k3m2{<9hw^N84vueaRwueKS$3HK zVb)5CK*`%upy*Rb{-fw<4R%DoIZ>ilo*ZRa)D#}Tx)+(E&Z1l5xQ48UMoE>6C}TlH zzi*VptQV1_u#IZ4I$*gm@*C|gTAPwGntNMse;D@@02GLZEstc;mQ#|djM-gg+ZvER zs*0x>FbwEhF5>l%PyLvBaHKdMIm=jls)CofEk*ltCopWRZAp=ynu*F6+rJToloGhD zK$~G>vL-8w2Vjjj4qt;E)-no*zrxzjk;7tzvejc<`$O~munh-(`?5rjPvLp#Gx!03 zQlpT<(il36?a(U*@j5wBtwtSH=jYIE2f)zvu-AX$UG+dD!}anu^fqT3G1QWWK`>AT z`){B4jRWge!1`BdxMP#wk)vBR%!sa>ViO7q%y$S%s0cN|5n7^%Fc8IrK$H+Btz2Cs zD>zAuy<{a9xk14Gs1mf>8v&(?o;nb& z1P*8i74t2qRtys`mCQ;6We6lqC^V_2!A8isXLc@nFa|`jzFM)INiB@Dl`AG{3NIK? z5rn0wAPyMV4Uk-g<)=CFtJ&wbEPa48K2Y@a&VyXcm6N)nbSph9zY&D=zMFA)~&X^R$umKua zfIz9Wq(Y-07+_SAB+mqiCZPc*V^Z4i=ulZ5&?r!ZK(A1$vKm2g^UV7Jb~Zlndl9dG z{TXm*1!agOP7zcBSrT2not*}`8#^CBU{HJtb~S_-uBKN0VP%Tl>aaPAF-fwx4W+PT zC!&!JAZLJ(R%+2eCCg{s%XQqbgms+dUoGJ$TrEICQxG zMBnMk)3xV|Uaz`Pf60B_b<26H@|OEn%^mDc^*!5C*|O`A`&r3~`<3%u;cC&U>yzu7 zC1=eQ=W4&z|FGp<#frrx+Y}HGPyj^Xzv5jWpdbL|PebG^h-Z;G5}2DHbrY03fV~fd z`+#@|=!YQm5HOE{{y0RR0P;y7o(Abz2)+RLOF+K_p_d@^Ap}1I`70oPGKd}80|O`k zvX0Z}<`X2jxsD7fgkn)4F zs=LU?d=aObus|! z(Eb_0&jmb3w+NBZq5y*2@ssYZDSt(HCWd%C$xKd(XvIX0k&ID1=KIDy>8TE-BIPD( z_CQR^vqsx!#*H42Bi?w@T4REL_hSh^%I6vYB$N)oSV4~h;-2P&&Snj{J3XGHHnY1P z!)kVwqyjWG_X)t8NfYy)mlj(EU`PsfjNF5CwC&d3@(kPZEmIF9=~9&f@-qO`9~7&h zQMhF|zt-e8ee+2;*$yz;WQV=H%U4l>Mv@64=$4c=l$dKUW^X7h*&vo{D4X^M)4bA9 zzE;w_!@QYhj3&#RnI#+m-XN4>8N!}CKkQ%50E+FvCVM*iB5M2a8J`c%Iqv`f2QAuN zaIacLFhI~|&!&sYT-PiGvNU|lqD=TKD`V1VRVh8pqGIBP1e|c*!9E|h-#N5hj8j-m z?qg-+(C#FT%T-<6Al|6c##QM->NUMQy0C|rAL4sQVgVht+3q_oo3xulo%1wZz9(V7 zhb*u&+&};bCAPD}_K=6e&Cg$;KP{BC?g{T3ufjydYcL~iWrL=ww z?w*g2hcr<_9i%De_J+;$Qfr3MF%jYK3z18KVF%zLBg{$d5E$Z@g)0sk?J;F*&2o0$ z$J_b3BhpFugAWQxEPI50kn-`|*{|(zO2er~RJh3zmng58d0L6Cm7%JHf+g*001fN{ z3-$~`D@8K>bN>eLXqS%<0OV#-dhVPU)emx68yL4kx- zrDm#&DkbKFp$aIx?5tL?<(;+&Vte$~g{7==_hVK-NZ(+WjvK}=P-xy(y-(e#DSesh zgvL@m zlnl*)X!#s|9R64angj7!89*OraXhRl@tMbTw`)|l5AjPbA>Tkwp2E_AW`QZLv`t~) zuPkx$rjB(DUr=D$l0PgY3+>Vh&A%OQ90)BfZ-UqktPE)smD6*5a;nZw)cM(I$LHp| zVzj($J_}Yu?nec(4ni3eY^UedZ_!n{wx)z7ciGFXU-h{P&eqqItJx#hINP}-8R3?( z$L|Ii9_T@*;=(=cf*L7i*nyWG^DW4rC?m5sr;v2sL|W-eb>(&!UxjUp%7!YS`4sH5 z9se-U;oLr6;DZ^4KbhWh@y*{K*{D(!+J|1I zVZ?|v?oP|B*)?bG_VCDG-NjaY{w~+hcCM@GNqSVNqW@|T}FJT~!ZaixUWxJb{(L1$d2CAM7~mhwnq6&ZE}VtvAALfp={(9fMa zqZTYtpJQtsAGUgUG~$n?OB@@E_FWQVxlcoDElE2?!Wq-~#Oq(GWIy5dmNr!y3$)#3 z$E=P-aih9_1uG^+j!2JD;p3}A6XN&n z*!vI?6y%6ZtyunF<8_!dOq{{g(z@s+p)gcWHkx`mT*0*`>-s>B^s4j?Vsm2ZM*|qg zcm$9T%sa~vazY$p`60k-&gn9J9xhHfinHVZ?0pCK_46HUVN*+_9 z77^9n7&GJ;GH5o`6D=dt6P-3>Fl5NFF(#@*EnK3_ss8plqI9u|P`CB*Ih_s)K|)hW z)uHO&tF>7~h|fVB0fv6wLz1LdCQV~>Ht0ow1kk{_5S!z_FkYdIFYCRD&!|~#-aLPf zS?3-QS#$9?FZ-Pvm8a~^mC)_SIQHW~W@fp9ExmeB90g<3d@jW-jDds?KoCXa4whXa zNSQYcn+SqrH;7^&$piti>x73GgaxcNv(2ZAzR-AV=9foI9sV@%|7X)xz5VXpt2?cE zU&JVRZ8F|#G&9p{WGdzcABYmp=7VzG){Vi!hv(xO0%P*?1&5EQ&O3UN#}DzZBtNLU z-X(ju8AHxx_x_Q+0n!%>YoB;zlrQ__UXKfj&mQoMr2f_Xg|4wR-!%yP%Eu>cOZgkP zMj%}`LjC}V1w<)t3qgYf22y8~I*g3z&hl=lsu_rg>t)npIAi5mnid8PMGf|vD-R3Z~aoef`hldw!teQ! zsW1CCF;dGwTq6RdafQcOuWVW!@s13 zE>ZtZfB%E7{$9LzUS6&Tz5M^m-Wm=%G!6#?5->5@KIKK}-R93(IWX}E6ZQ{_ZY13c z2pcl}Q4lA9VT{YzS05c-X@ADZW7|#9N|Ks?_W3kRmh*e#FMt4yKE!5l4fJ(!QCt)L zb^g7*~>CJvyR$T$T7t_I%{@fX7%D^MaG~ zC=CaT*GmdT<`-I~+XIM=jRDfroh_Zv>1YVV`i})XKL{jwZBwVtCyN(YJGyh^8sqEc zwV>^zLiSIAepedEX5i|~3nq=R%h?m0AQ^5)Aa0_*wsNeJu?fkVORt-`mSkw0Im5pOZ>Q6pLJ=UEkDn3pq%U!As8g*NqaW#8&wy7?Q8 z7D^*}FG*uJ_$0^2z)J{bQeA&{nc-KbKgyPtW^6mgvS($1$J#z-S?7Uh8FNZQOTw7A zK&7noKlqM){%r*$`>htva9Vx#q(CA7hV}<$Y-*PNVZ9?}Zu)YDeu@4?AYHz7{9S$# zo%a|V*jpe+UkjL?iWG~dJ`0##+gh!@=B-y{Nb`F$i0L3aI;0qGAnKQxEo3=k+Vikh ziJgMWumgw|D{%Uz0VNSgrq({*m^j@e$JQt}pp%ze$Teo0&tl~`*-!AH_}$3p*6I*jbGEg1k zS?%Gy`!n*x1FjaPHP#XEZhh0Ghi3sH%+B`z1nKKjLEinDnO;32Kd$kT)w*>{wZ`4M z)!MclV*WmQ7)4L2ULW=fb>1`9MV-n*y+;GFe}0i^9YPD4$2jStf{8~F>DS?Y<;mB= zxuX3WziMHk@QMdA1vuF`k*Q~!bsuN#%o^;LDn%I0Gjkl%6KIhZ>$iU| zTZV7NKdy*ZRD3`_R-t;r>p$gw^z5@Ae_0(k-u#u+4QP)kXM@KCAQ9lDRUiNk5wk8}7v5*?m9_0>GnZ)b zHXOqh`8Hd>M|pon*q9(r&|1CbLE1S)5x0aw+D<9C&<)B~1+x;X%-X7;FgA9K$?0gS z)7Th0O|}|R3;rgCc14zyPbK9ZJCaaz@Dgc}RF z06O}VB*4oJcKzYlSQI*e9ILZq1U<1LIG(s{E|6kNOGwf#G!}wgjvUDFSh3HaIa_i4 zj~Ir%e1=i~VAUN9~-?l;whI>`rG3>&8GQ|<0?=~< z)P+(_zl`h{OONG9#6FsNPQRAO$V%H#de}xcc;sdP^Eew!7wL880=n>M&sf*G`}sGY zvfiu7nZ0pkA1>yuPM*-_8Ig11Lmu}dsj~Ko(L%lVjMH?zkI}-Dn|OB39}OSQ2iCUu zT!cIrx)$(9wo{J3WUw=H6tyAPo9mCv&}3_k59d?)BdOO*65ws)#m(7qG3A#pi&2WR z9GyN>R-Qe*9(^qh2w3X-3x2MP`P?&T6MZ6F8e~s+`iL92g?aLqK(7$J#lzBEn5+wjyJQypMRb0K*!G|hlhJ58~eWEefdUYAV|5i z&W*AO=3_2VGhs7*ne1oDNektL<%tVVldrNDlM_Ni{K7(V)g;o{nT2VI)oF27VP+Cr zRLEt9hsEt_P=nwLjMS?605o`%T$GBm_>Rh<(02}SCmT@N5>Oc*mOT(t?8#K2xY`v`svc_epS#Kb$SpGKe{!-zdGxpV z1tZ?cn}~-08tT2%LG^F@MF@Ze0KGCOKmgF#I3N$GN0Y5pOIz)n1ew}WV|S5kioyYm zv$aEg{3r-<3&;(ckd7$@NJXN1!DImw@wU4|)a^@$+I%~$Jmp;6$~2iOLj~w+*%Ssy zK1I0=FanxB{6B-_FiB$zwMelwN1_lwU2*no095^IK&Ml;&9G7-5<@>{S{B8t-J{f`tf$OU{=+D*a!LiM{-7GH`nMQBP9|58e^c9|HmbI&uA+WS zJw?4z{f7FeMzBVy#vP3h6dB5X%4N!ernY90<{PauS`W2Vw5zl`wfnWFb#!%3>iFus z)%m@08`VJFNZmoTp&q0jr}|Q(sZ44)l|${K4pK$FB4Fad6L{Ew;5Go{U~Gmx0LzJ{ z*ti`X-EqJIv=O_~r1M)!-N+%?DoG~NY$2o_C{l!JL_*RaFu7wRc8Vx6$9a@xmV49y z9%>M%0mSBjHtabhGz__LKU_0z55yN{&qtKPf5r1N*C*qJ<)Wm`)Q(=>ZI)!x)wk!q z2||HF!oFQ5$te&wU>bf9l3c{M6qy5Jeq#ZMS_4gM7gdtDHm_Rpfbh>- zhUIy5w*$OAhDGUt7rk+VVU9bu$Pls=cd9-RSDO2J=w#EiJuVI)EB7Y~mR0aQgH8I5Y#>!_I6m92^m{UA4HhaxN<*adsD5tu6= z5=u?O%c5n0SxVT)CK;Ea_SjX@-0fCKq}cORM?lW4fVkaWIO*t3nv2$zahx^UH``Ib$S&$Z3QBb*!#Qk?S3>H7r4d&#wvI$9LffbgyDcr^O}xMX{AA zuq1N7>U*eS^=gYXscv@gvi@$UA5`OrUK>YsJZ}E+O5S<_ma}H0d-L!nEZ^x^r@KAj zvx_uoy6o8WPeobJH#y{?UXZp>PYOypU9FrV=S~NxmR&`SqsZs0arU1Epr5hWh`}`` zi?NIS@jQIG#>6R3@abMJoHei??zUh8fz^JDc;K?c(DzSg7$)^_hqEiH{Un`C0&Cyy z(w&Yw+6D^EcVBwb(H6pM`{6jPvP)M065F>OyPcvqf5^!uYidQUh$I3TKO_*Z|V({}+&T+f2B%VBtXNSeU4aHVhqD9uBLG`<;y)Mt? zYCOlDQ(tXyDDG{XGilOvO8=%@4Pe9qhp2J*nNJKZj$hnTa|i!to~3d8OnfQLGUH!M zvdkap+l+_!uT^dP9X@{KZbyZ7;R9U73}fioj5trHLJ%RqIxPPKK@FokLZSzT9{i=l zU-pMDSciBn)0~5D%}*Tc1K3}+j>mNAOytbOhW$i<03nzPZUYyNT!xD;9Uq(D(R{q4 z@6?{MG6xS{QACv7Q_|==eWHEHelzwoF7LI;1a=ki+|;XXOFlCRi!%2|5%b2jP2CTd+zBfzwT*FdkA>H$+BOs>6f}9Q_A$6 zrzw9g9|G9eIYgY?EmU?N&28_9vAw-@TGmV!-Sq72zI6WFLp|N?JCS)Es|;N?@p+hI zqOX+*9C8(Y51w(H&pqwI1e#{sFr+wR`DTO|W9A{4lF}VS5zQRMA08|(U0t1dNv(m^!IQ>qz9KDfw*W`G5 z>!IB6Q_qMi;dXn9jNE#GkG^_R97>-RUUxJ#v-A+Ibi<3Gaq{^P6Cqw_%-Wa^Z@!E^iX^E|d!P4XU1A0G{G&q;fK?8VVM zGUh~P6d!JK6+_J`17`DIqDT6{v&@e~?-u;x$OCYwt@I09O5A1Dco(e-H&)42R=a*6 zclTmOvcI1YBV2Asb9b`kex9VfaED6=b+L}r8eF63dJb7qf@}EXa3>toEs2E9WkwwD zCYqWEq0-mrh7_eqi{+`OfH&0cX(7AerMGfjF%md#rmXNL(!Q)6nB!3@dMVBAS3JMU z0?$bBglDYgqEi0iR@pBfW2|afvnxcXUqHUeyb?8zPB|Ych*JDgQ6i0>}dwr1$)9qd99{?{F1&_$fE1(sddbQ zVviv?l<*>ioj5n+ohC%>fmDlv4l8VJ~a zLV?h*^T2uK;VWP+C4`cQIm4?ft?xA`51;WXIFbx^52_1{2Db0({0XY+t?K&w;Rtwe ztiUTLXf#YtE@Z3PbsDM)3k+9q5A^68Ge(O94-1o-x)AZ;rjkz!+mqFwB@<`ecae-d z0NI{hdV#(59g6h)Ix6VlvDPnBTBgzZD=ysQN* zZw*l&%ecSKN^z5LmK=H7N8lCQCRb3|Ordy-0#>bJy$})c=N;T9EspnnnzQARX@^IC z#F2?ZcDkVphOBKa*Vq_N-FzhRy`+pxOkA35#it$=bw)|9TU;xCiz>lnOnf+Sl|KxL55S%rNs95NXZ zd`jZ%ipjXsEBUmvgqOo4j94t}H9T`qR;YE{m`Uyy<9e%&{rm;b^I1Jlh~Y!OLTHfa zN_CLMC=+nBf+n4dgLT$I7sPt(NJ`@S>RG>YqIT6n(UHCbLWLtF0qsxR$Oh6kJ(`!~Njb0wXS`osNWTedIiRb^CG z)ELmr2?w^odi&RS{((^Xy~je1VwRchGH?a1*tIX?i zW>^<#`ARaaJ(%JGET&YFxA4nCWZ3w^zZC1uW{Jca_uBxkXg;(|l-fdk6hk3!~c%j1V^U`VPZd83cN93

KZ;k8ywA} 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 O1{o}0SRMEP0000Yp_Hru literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/assets/inter-roman-greek.JvnBZ4YD.woff2 b/pr-preview/pr-449/assets/inter-roman-greek.JvnBZ4YD.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f790e047daa346583880da2be470431e35aa6054 GIT binary patch literal 21776 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 De!(H( literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 b/pr-preview/pr-449/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..715bd903b9b14d22a056f10e6d13b8d7e0acce57 GIT binary patch literal 59608 zcmV)TK(W7fPew8T0RR910O;5N5dZ)H0wurz0O)N10|eaw00000000000000000000 z0000Qgj*YdrFaO39h^WC0k&sd@Fhf6-K!qHMAZ)CNpgk(Wrg@xc zaV%shD|3P_<9RxhfV0wJW90w?*VYvmqTB8b0+%Fql^R>lrEdvCK%mE)6`C~>J`eC{p$;>mMdgjyVJuU5HaB4^Z|oXT@n1U~ zzxc0z)_eG8`S8zZoyXMnkBalK!|FuEnv&ts&F=*s5HMoIfKehwh#EEZqEee$Y*|{n z#^3&bW39hP`2W1!Tf2XI+yBqIt5^Tn9d_H+v({2SwTM_#4VDp-D?PeR@-n6uYXI&@ z&Og1I{kw!?XvsWmhI#8u)DtV`k4TJ*Y3K%Kl}T;e_x;Py!>jZMmJAU zsYXmS)d&#-280fsPy0fsn)A@Ka;TJfEmRJwcUGbyt}AC`n) zBZ2a!W*H;{-Ws;a8Y$gUH6BfzlZzLPL z&6dh;+HBzaxKZ#Rgm3{HU&b&97Q)6qh6{Ljk(NaSb zV)=?A=Dz#xgC{=mMUh~F29+pLVu+$4N`@utkGcJ8?~XC7m%w&^6P*mVD*z0lKp^`6 zxM%k)JPYVIVd63O=Qp7?{{|1 zMl2%uV6tjz64Q!csJaN&6jR>81yf9;22)J%K`dtbD4!sL3L=<9v~DqrvlUyjxIboj z4Q>#{2es8f2T=rT7Sp)J6j2^U6hnP5#RnZss)MmWt%YejZQk)7A>aW*Cxme}$9)N< zhf{^+B|`NP-I7{`5JDO7AVx62 z074965c^B5r&i9tpGv96J^j+$n6ebHwq56mL40p3?KcufGH-d$RU6tN!r!^M69BD& z#Wc4vLFm{qU*?uTs<<#j@eqf2G>#_2T$EPnXcC&zjwVCTB-u;kmYJxw za^nyA)0TSjp>u9mXTKPvRjh(n>61fkiyfA{N+#1r}If!F#Z9d$8u@yER_Udw24k zdREW6vxX>Fjib713jdH!y^~~xY3{PiNlG+z#;rR|I@<+g7g%MW_y6zH>ED@MX@%%% zt=^ek2|-Bbl~%q=pOF@jv4Ay*Vl2x7D_DlLvv!0c%L2vWW zAl#q1$B#`PJ6^&82OKN&kC~)<2vg;1+|sUEHQ_t}2j_+MS_a|Xf1Q;SJI;*szaie^ zroE~(gcd`K@b%T$GhH&<9dHGJ-Bt%2sPC;wa|-WUTVXq)NCWG;-n zNmonv#2BQAqEv;^?ee*{VZUedLZ!3@jPIu?RVakP@_%#vYZv}60J{oTO`ux)l$zYR z$z*4eO?c@6(_{%g0JsA2@pZONsltE%W52JQx6wfdy^EGughp%ki4LNgL_;C|7|r7M zzowP+|L&GX7g9o323#vS2f!n?dwW*9tC@|LGIEM2ziCM`D{13g4D5~>8z3`NV8G4b zj8otT;PHShe_3W8WiwxWhb1UU&^XH$>QHKt2({3!#h;MstSsHx`~OST`t7?wfhxGw zHb}L6pox&@Xa;OfAniG`rbKmgn2^G5a-jf-sCs~iK*}f-sVRb@y8wvp0*X)rD51?F zC^b#WDbdcI?A%cuQlW~lLBi|<5~7Fz7-Z2!~)YH2}%f}f%@$$x4QQ_VvNXO zWDt4y6#~z1Uw!tu&ayRh(=_rZoQe?&zo1F>BX;wC#0fAF7(m=u89WB}Z*1Yn;5 zfY*%xylnu)M?xU}VH(6qQ4mwog9Hguq5{&&OptcwL#UPs;i9r3ENL@@>ti6SsT>)~ z0ofcLxg{cUM=8jg%0})k7imNX{8MFscfb5d++$*o`d zuOp_VB6WmE+6`&_hMxNUSrt_Vjw~ESlKc13+7f@C(BxHyBUJWrW#rB6$0;(QZ2ya+ zvC1uRrW6}7XMMzl804CcVsq;?oD`e^M?_C4nN@SPiA#9o0&| z{F4K#$I|cTRlJ6(B>FX_zvEg?&ZR{TR^PX%=l_;Vf__8KOaJX<3e|f2jbS3lNM<|z z`jo-X8ky5y*?woB-0%}14EnVJa9^0X1Ffd)R`{5>1^-xp!47GkJ9W<>Fe74xrz8bE!oCz`_?^{X*WBvjNR60 z>y_X3>P%K%)2!!I_i#!*m}jbg{;7e5EXU@shf5~)XsL@0l1UA%BK3Inso~vPYJ|^S zY#he9&;i>uE&mA%oMgC`#yh}x*ToM~yb$NV&293u~=xQA$n}3mWM4dOt7?nCn7`MHDbG)f)fV?s zLG(bw#6pZDNiz5K zhX*+JHCl;(Xdcz7VN2Uk+-70V{01{Kv-hknQ#Z^H{WPCv&gUcczgp)Lcx^~YEwb3d z3bTJk;_YpTsex^wDYH(=jeYTu}g zdyy|8%PLL88`t%SVl4AT#R!RCiB#&pQolhKs~PwSrwnZc##&NZ{#r^Kuyl0nW7{mFqHP}*b-r(BIr)2Yl>`$Ab~8oe zzNi4&q|3XsN~-MpcrXuA88V;qVKx#~BUVc$d`6(VlKV`OL^E>sj| zoi5O|jKB+uDrl(u3-1VN@$YC~D5?L`MCV7Ep9G}PD$*|Sf>e>L0RGL~vEoScj2SZR zSAZ|{k9_ZFIr3S9O|R}c-_A+%G;$?mN2v3((Syfd`d0S;2D+34oQlqMga58BF3Fb* zj2;qrpUL7i{s(Xy>pHQ^`b13|)Zg*}HvZm)KUpmb=vG|Ziv5vgj^Poa+lBsH8^{-$ zzeXX}S-NUH?@*E5e^m2f_|g$a9dq0XC*!G28vcCSWm^>w{XL&?^Mk`qMYoba;=<>> zWPssJ>@hnYB}tOaNHlnB!JZ~bZ;NhHNspW=ND6&Yg^=sn0UP;wiN=6kpFx38*u7{&-dj~_dhsm zKSQ7E?Oj!l@8&PZPGcOOf5$4)Ov%zdPSYoe$2anKexA_NInL*i@AA2YE352<

Skip to content

Decode by Drag&Drop

With the QrcodeDropZone component you can also drag-and-drop images that should be scanned. Use it as a standalone feature or as a fallback for desktop users.

Source

vue
<template>
+  <div>
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <p
+      v-if="error !== null"
+      class="drop-error"
+    >
+      {{ error }}
+    </p>
+
+    <qrcode-drop-zone
+      @detect="onDetect"
+      @dragover="onDragOver"
+      @error="logErrors"
+    >
+      <div
+        class="drop-area"
+        :class="{ dragover: dragover }"
+      >
+        DROP SOME IMAGES HERE
+      </div>
+    </qrcode-drop-zone>
+  </div>
+</template>
+
+<script>
+import { QrcodeDropZone } from '../../../../src'
+
+export default {
+  components: { QrcodeDropZone },
+
+  data() {
+    return {
+      result: null,
+      error: null,
+      dragover: false
+    }
+  },
+
+  methods: {
+    onDetect(detectedCodes) {
+      console.log(detectedCodes)
+
+      this.result = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+    },
+
+    logErrors(error) {
+      if (error.name === 'DropImageFetchError') {
+        this.error = "Sorry, you can't load cross-origin images :/"
+      } else if (error.name === 'DropImageDecodeError') {
+        this.error = "Ok, that's not an image. That can't be decoded."
+      } else {
+        this.error = 'Ups, what kind of error is this?! ' + error.message
+      }
+    },
+
+    onDragOver(isDraggingOver) {
+      this.dragover = isDraggingOver
+    }
+  }
+}
+</script>
+
+<style>
+.drop-area {
+  height: 300px;
+  color: #fff;
+  text-align: center;
+  font-weight: bold;
+  padding: 10px;
+
+  background-color: #3c3c43;
+}
+
+.dragover {
+  background-color: #10b981;
+}
+
+.drop-error {
+  color: red;
+  font-weight: bold;
+}
+</style>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/demos/FullDemo.html b/pr-preview/pr-449/demos/FullDemo.html new file mode 100644 index 00000000..df92c871 --- /dev/null +++ b/pr-preview/pr-449/demos/FullDemo.html @@ -0,0 +1,265 @@ + + + + + + Full Demo | Vue Qrcode Reader + + + + + + + + + + + + + + + + + +
Skip to content

Full Demo

Source

vue
<template>
+  <div>
+    <p>
+      Modern mobile phones often have a variety of different cameras installed (e.g. front, rear,
+      wide-angle, infrared, desk-view). The one picked by default is sometimes not the best choice.
+      For more fine-grained control, you can select a camera by device constraints or by the device
+      ID:
+
+      <select v-model="selectedConstraints">
+        <option
+          v-for="option in constraintOptions"
+          :key="option.label"
+          :value="option.constraints"
+        >
+          {{ option.label }}
+        </option>
+      </select>
+    </p>
+
+    <p>
+      Detected codes are visually highlighted in real-time. Use the following dropdown to change the
+      flavor:
+
+      <select v-model="trackFunctionSelected">
+        <option
+          v-for="option in trackFunctionOptions"
+          :key="option.text"
+          :value="option"
+        >
+          {{ option.text }}
+        </option>
+      </select>
+    </p>
+
+    <p>
+      By default only QR-codes are detected but a variety of other barcode formats are also
+      supported. You can select one or multiple but the more you select the more expensive scanning
+      becomes: <br />
+
+      <span
+        v-for="option in Object.keys(barcodeFormats)"
+        :key="option"
+        class="barcode-format-checkbox"
+      >
+        <input
+          type="checkbox"
+          v-model="barcodeFormats[option]"
+          :id="option"
+        />
+        <label :for="option">{{ option }}</label>
+      </span>
+    </p>
+
+    <p class="error">{{ error }}</p>
+
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <div>
+      <qrcode-stream
+        :constraints="selectedConstraints"
+        :track="trackFunctionSelected.value"
+        :formats="selectedBarcodeFormats"
+        @error="onError"
+        @detect="onDetect"
+        @camera-on="onCameraReady"
+      />
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, computed } from 'vue'
+import { QrcodeStream } from '../../../../src'
+
+/*** detection handling ***/
+
+const result = ref('')
+
+function onDetect(detectedCodes) {
+  console.log(detectedCodes)
+  result.value = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+}
+
+/*** select camera ***/
+
+const selectedConstraints = ref({ facingMode: 'environment' })
+const defaultConstraintOptions = [
+  { label: 'rear camera', constraints: { facingMode: 'environment' } },
+  { label: 'front camera', constraints: { facingMode: 'user' } }
+]
+const constraintOptions = ref(defaultConstraintOptions)
+
+async function onCameraReady() {
+  // NOTE: on iOS we can't invoke `enumerateDevices` before the user has given
+  // camera access permission. `QrcodeStream` internally takes care of
+  // requesting the permissions. The `camera-on` event should guarantee that this
+  // has happened.
+  const devices = await navigator.mediaDevices.enumerateDevices()
+  const videoDevices = devices.filter(({ kind }) => kind === 'videoinput')
+
+  constraintOptions.value = [
+    ...defaultConstraintOptions,
+    ...videoDevices.map(({ deviceId, label }) => ({
+      label: `${label} (ID: ${deviceId})`,
+      constraints: { deviceId }
+    }))
+  ]
+
+  error.value = ''
+}
+
+/*** track functons ***/
+
+function paintOutline(detectedCodes, ctx) {
+  for (const detectedCode of detectedCodes) {
+    const [firstPoint, ...otherPoints] = detectedCode.cornerPoints
+
+    ctx.strokeStyle = 'red'
+
+    ctx.beginPath()
+    ctx.moveTo(firstPoint.x, firstPoint.y)
+    for (const { x, y } of otherPoints) {
+      ctx.lineTo(x, y)
+    }
+    ctx.lineTo(firstPoint.x, firstPoint.y)
+    ctx.closePath()
+    ctx.stroke()
+  }
+}
+function paintBoundingBox(detectedCodes, ctx) {
+  for (const detectedCode of detectedCodes) {
+    const {
+      boundingBox: { x, y, width, height }
+    } = detectedCode
+
+    ctx.lineWidth = 2
+    ctx.strokeStyle = '#007bff'
+    ctx.strokeRect(x, y, width, height)
+  }
+}
+function paintCenterText(detectedCodes, ctx) {
+  for (const detectedCode of detectedCodes) {
+    const { boundingBox, rawValue } = detectedCode
+
+    const centerX = boundingBox.x + boundingBox.width / 2
+    const centerY = boundingBox.y + boundingBox.height / 2
+
+    const fontSize = Math.max(12, (50 * boundingBox.width) / ctx.canvas.width)
+
+    ctx.font = `bold ${fontSize}px sans-serif`
+    ctx.textAlign = 'center'
+
+    ctx.lineWidth = 3
+    ctx.strokeStyle = '#35495e'
+    ctx.strokeText(detectedCode.rawValue, centerX, centerY)
+
+    ctx.fillStyle = '#5cb984'
+    ctx.fillText(rawValue, centerX, centerY)
+  }
+}
+const trackFunctionOptions = [
+  { text: 'nothing (default)', value: undefined },
+  { text: 'outline', value: paintOutline },
+  { text: 'centered text', value: paintCenterText },
+  { text: 'bounding box', value: paintBoundingBox }
+]
+const trackFunctionSelected = ref(trackFunctionOptions[1])
+
+/*** barcode formats ***/
+
+const barcodeFormats = ref({
+  aztec: false,
+  code_128: false,
+  code_39: false,
+  code_93: false,
+  codabar: false,
+  databar: false,
+  databar_expanded: false,
+  data_matrix: false,
+  dx_film_edge: false,
+  ean_13: false,
+  ean_8: false,
+  itf: false,
+  maxi_code: false,
+  micro_qr_code: false,
+  pdf417: false,
+  qr_code: true,
+  rm_qr_code: false,
+  upc_a: false,
+  upc_e: false,
+  linear_codes: false,
+  matrix_codes: false
+})
+const selectedBarcodeFormats = computed(() => {
+  return Object.keys(barcodeFormats.value).filter((format) => barcodeFormats.value[format])
+})
+
+/*** error handling ***/
+
+const error = ref('')
+
+function onError(err) {
+  error.value = `[${err.name}]: `
+
+  if (err.name === 'NotAllowedError') {
+    error.value += 'you need to grant camera access permission'
+  } else if (err.name === 'NotFoundError') {
+    error.value += 'no camera on this device'
+  } else if (err.name === 'NotSupportedError') {
+    error.value += 'secure context required (HTTPS, localhost)'
+  } else if (err.name === 'NotReadableError') {
+    error.value += 'is the camera already in use?'
+  } else if (err.name === 'OverconstrainedError') {
+    error.value += 'installed cameras are not suitable'
+  } else if (err.name === 'StreamApiNotSupportedError') {
+    error.value += 'Stream API is not supported in this browser'
+  } else if (err.name === 'InsecureContextError') {
+    error.value +=
+      'Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.'
+  } else {
+    error.value += err.message
+  }
+}
+</script>
+
+<style scoped>
+.error {
+  font-weight: bold;
+  color: red;
+}
+.barcode-format-checkbox {
+  margin-right: 10px;
+  white-space: nowrap;
+  display: inline-block;
+}
+</style>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/demos/Fullscreen.html b/pr-preview/pr-449/demos/Fullscreen.html new file mode 100644 index 00000000..8c23ba1e --- /dev/null +++ b/pr-preview/pr-449/demos/Fullscreen.html @@ -0,0 +1,157 @@ + + + + + + Fullscreen | Vue Qrcode Reader + + + + + + + + + + + + + + + + + +
Skip to content

Fullscreen

QrcodeStream always covers the entire space available. Not more, not less. So to go fullscreen, simply put the component in a wrapper element that occupies the entire screen.

Source

vue
<template>
+  <div
+    :class="{ fullscreen: fullscreen }"
+    ref="wrapper"
+    @fullscreenchange="onFullscreenChange"
+  >
+    <qrcode-stream @error="logErrors">
+      <button
+        @click="fullscreen = !fullscreen"
+        class="fullscreen-button"
+      >
+        <img
+          :src="withBase(fullscreenIcon)"
+          alt="toggle fullscreen"
+        />
+      </button>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { withBase } from 'vitepress'
+
+import { QrcodeStream } from '../../../../src'
+
+// NOTE: calling `requestFullscreen` might prompt the user with another
+// permission dialog. You already asked for camera access permission so this is
+// a rather invasive move.
+//
+// Even without calling `requestFullscreen` the entire viewport is covered
+// by the camera stream. So consider skipping `requestFullscreen` in your
+// implementation.
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      fullscreen: false
+    }
+  },
+
+  computed: {
+    fullscreenIcon() {
+      if (this.fullscreen) {
+        return '/fullscreen-exit.svg'
+      } else {
+        return '/fullscreen.svg'
+      }
+    }
+  },
+
+  watch: {
+    fullscreen(enterFullscreen) {
+      if (enterFullscreen) {
+        this.requestFullscreen()
+      } else {
+        this.exitFullscreen()
+      }
+    }
+  },
+
+  methods: {
+    onFullscreenChange(event) {
+      // This becomes important when the user doesn't use the button to exit
+      // fullscreen but hits ESC on desktop, pushes a physical back button on
+      // mobile etc.
+
+      this.fullscreen = document.fullscreenElement !== null
+    },
+
+    requestFullscreen() {
+      const elem = this.$refs.wrapper
+
+      if (elem.requestFullscreen) {
+        elem.requestFullscreen()
+      } else if (elem.mozRequestFullScreen) {
+        /* Firefox */
+        elem.mozRequestFullScreen()
+      } else if (elem.webkitRequestFullscreen) {
+        /* Chrome, Safari and Opera */
+        elem.webkitRequestFullscreen()
+      } else if (elem.msRequestFullscreen) {
+        /* IE/Edge */
+        elem.msRequestFullscreen()
+      }
+    },
+
+    exitFullscreen() {
+      if (document.exitFullscreen) {
+        document.exitFullscreen()
+      } else if (document.mozCancelFullScreen) {
+        /* Firefox */
+        document.mozCancelFullScreen()
+      } else if (document.webkitExitFullscreen) {
+        /* Chrome, Safari and Opera */
+        document.webkitExitFullscreen()
+      } else if (document.msExitFullscreen) {
+        /* IE/Edge */
+        document.msExitFullscreen()
+      }
+    },
+
+    logErrors: console.error,
+
+    withBase
+  }
+}
+</script>
+
+<style scoped>
+.fullscreen {
+  position: fixed;
+  z-index: 1000;
+  top: 0;
+  bottom: 0;
+  right: 0;
+  left: 0;
+}
+.fullscreen-button {
+  background-color: white;
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  margin: 1rem;
+}
+.fullscreen-button img {
+  width: 2rem;
+}
+</style>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/demos/LoadingIndicator.html b/pr-preview/pr-449/demos/LoadingIndicator.html new file mode 100644 index 00000000..fa6d71bd --- /dev/null +++ b/pr-preview/pr-449/demos/LoadingIndicator.html @@ -0,0 +1,84 @@ + + + + + + Show Loading Indicator | Vue Qrcode Reader + + + + + + + + + + + + + + + + + +
Skip to content

Show Loading Indicator

There is some delay between mounting the component and the camera stream becoming visible. Listen for the camera-on event to show a loading indicator.

Push the button below to force destroy and re-create the component.

Source

vue
<template>
+  <div>
+    <button @click="reload">Destroy And Re-Create Component</button>
+
+    <qrcode-stream
+      @camera-on="onCameraOn"
+      v-if="!destroyed"
+    >
+      <div
+        class="loading-indicator"
+        v-if="loading"
+      >
+        Loading...
+      </div>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      loading: true,
+      destroyed: false
+    }
+  },
+
+  methods: {
+    onCameraOn() {
+      this.loading = false
+    },
+
+    async reload() {
+      this.destroyed = true
+      await this.$nextTick()
+      this.destroyed = false
+      this.loading = true
+    }
+  }
+}
+</script>
+
+<style scoped>
+button {
+  margin-bottom: 20px;
+}
+
+.loading-indicator {
+  font-weight: bold;
+  font-size: 2rem;
+  text-align: center;
+}
+</style>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/demos/ScanSameQrcodeMoreThanOnce.html b/pr-preview/pr-449/demos/ScanSameQrcodeMoreThanOnce.html new file mode 100644 index 00000000..35a79a95 --- /dev/null +++ b/pr-preview/pr-449/demos/ScanSameQrcodeMoreThanOnce.html @@ -0,0 +1,113 @@ + + + + + + Scan Same QR Code More Than Once | Vue Qrcode Reader + + + + + + + + + + + + + + + + + +
Skip to content

Scan Same QR Code More Than Once

You might have noticed that scanning the same QR code again doesn't work. The thing is when a QR code is in the view of your the camera it's decoded multiple times a second. You don't want to be flooded with detect events that often though. That's why the last decoded QR code is "cached" and an event is only emitted, when the decoded content changes.

However this cache is reset when you change the paused prop. We can exploit that to scan same QR codes multiple times in a row.

Source

vue
<template>
+  <div>
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <qrcode-stream
+      :paused="paused"
+      @detect="onDetect"
+      @camera-on="onCameraOn"
+      @camera-off="onCameraOff"
+      @error="onError"
+    >
+      <div
+        v-show="showScanConfirmation"
+        class="scan-confirmation"
+      >
+        <img
+          :src="withBase('/checkmark.svg')"
+          alt="Checkmark"
+          width="128"
+        />
+      </div>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { withBase } from 'vitepress'
+
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      paused: false,
+      result: '',
+      showScanConfirmation: false
+    }
+  },
+
+  methods: {
+    onCameraOn() {
+      this.showScanConfirmation = false
+    },
+
+    onCameraOff() {
+      this.showScanConfirmation = true
+    },
+
+    onError: console.error,
+
+    async onDetect(detectedCodes) {
+      this.result = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+
+      this.paused = true
+      await this.timeout(500)
+      this.paused = false
+    },
+
+    timeout(ms) {
+      return new Promise((resolve) => {
+        window.setTimeout(resolve, ms)
+      })
+    },
+
+    withBase
+  }
+}
+</script>
+
+<style scoped>
+.scan-confirmation {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+
+  background-color: rgba(255, 255, 255, 0.8);
+
+  display: flex;
+  flex-flow: row nowrap;
+  justify-content: center;
+}
+</style>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/demos/Simple.html b/pr-preview/pr-449/demos/Simple.html new file mode 100644 index 00000000..803646aa --- /dev/null +++ b/pr-preview/pr-449/demos/Simple.html @@ -0,0 +1,104 @@ + + + + + + Simple | Vue Qrcode Reader + + + + + + + + + + + + + + + +
Skip to content

Simple

All other demos on this page utilize single-file components. To use them in your project you need a bundler like vite. For an example that works without a build step and right in the browser:

SEE THIS DEMO

Source

html
<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <title>Simple Demo</title>
+
+  <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
+  <script src="https://unpkg.com/vue-qrcode-reader@5/dist/vue-qrcode-reader.umd.js"></script>
+</head>
+<body>
+	<div id="app">
+    <h1>Simple Demo</h1>
+
+    <p style="color: red">{{ error }}</p>
+
+    <p>Last result: <b>{{ result }}</b></p>
+
+    <div style="border: 2px solid black">
+  		<qrcode-stream :track="paintBoundingBox" @detect="onDetect" @error="onError"></qrcode-stream>
+    </div>
+	</div>
+</body>
+<script>
+  const { createApp, ref } = Vue
+
+  const result = ref('')
+  const error = ref('')
+
+  function paintBoundingBox(detectedCodes, ctx) {
+    for (const detectedCode of detectedCodes) {
+      const {
+        boundingBox: { x, y, width, height }
+      } = detectedCode
+
+      ctx.lineWidth = 2
+      ctx.strokeStyle = '#007bff'
+      ctx.strokeRect(x, y, width, height)
+    }
+  }
+
+  function onError(err) {
+    error.value = `[${err.name}]: `
+
+    if (err.name === 'NotAllowedError') {
+      error.value += 'you need to grant camera access permission'
+    } else if (err.name === 'NotFoundError') {
+      error.value += 'no camera on this device'
+    } else if (err.name === 'NotSupportedError') {
+      error.value += 'secure context required (HTTPS, localhost)'
+    } else if (err.name === 'NotReadableError') {
+      error.value += 'is the camera already in use?'
+    } else if (err.name === 'OverconstrainedError') {
+      error.value += 'installed cameras are not suitable'
+    } else if (err.name === 'StreamApiNotSupportedError') {
+      error.value += 'Stream API is not supported in this browser'
+    } else if (err.name === 'InsecureContextError') {
+      error.value += 'Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.'
+    } else {
+      error.value += err.message
+    }
+  }
+
+  function onDetect(detectedCodes) {
+    result.value = JSON.stringify(
+      detectedCodes.map(code => code.rawValue)
+    )
+  }
+
+  const app = createApp({
+    setup() {
+      return { result, error, onDetect, onError, paintBoundingBox }
+    }
+  })
+  app.use(VueQrcodeReader)
+  app.mount('#app')
+</script>
+</html>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/demos/SwitchCamera.html b/pr-preview/pr-449/demos/SwitchCamera.html new file mode 100644 index 00000000..f3f5321f --- /dev/null +++ b/pr-preview/pr-449/demos/SwitchCamera.html @@ -0,0 +1,122 @@ + + + + + + Switch to Front Camera | Vue Qrcode Reader + + + + + + + + + + + + + + + + + +
Skip to content

Switch to Front Camera

You can also allow users to choose the front or rear camera on their device.

Source

vue
<template>
+  <div>
+    <p
+      class="error"
+      v-if="noFrontCamera"
+    >
+      You don't seem to have a front camera on your device
+    </p>
+
+    <p
+      class="error"
+      v-if="noRearCamera"
+    >
+      You don't seem to have a rear camera on your device
+    </p>
+
+    <qrcode-stream
+      :constraints="{ facingMode }"
+      @error="onError"
+    >
+      <button @click="switchCamera">
+        <img
+          :src="withBase('/camera-switch.svg')"
+          alt="switch camera"
+        />
+      </button>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { withBase } from 'vitepress'
+
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      facingMode: 'environment',
+      noRearCamera: false,
+      noFrontCamera: false
+    }
+  },
+
+  methods: {
+    switchCamera() {
+      switch (this.facingMode) {
+        case 'environment':
+          this.facingMode = 'user'
+          break
+        case 'user':
+          this.facingMode = 'environment'
+          break
+      }
+    },
+
+    onError(error) {
+      const triedFrontCamera = this.facingMode === 'user'
+      const triedRearCamera = this.facingMode === 'environment'
+
+      const cameraMissingError = error.name === 'OverconstrainedError'
+
+      if (triedRearCamera && cameraMissingError) {
+        this.noRearCamera = true
+      }
+
+      if (triedFrontCamera && cameraMissingError) {
+        this.noFrontCamera = true
+      }
+
+      console.error(error)
+    },
+
+    withBase
+  }
+}
+</script>
+
+<style scoped>
+button {
+  position: absolute;
+  left: 10px;
+  top: 10px;
+}
+button img {
+  width: 50px;
+  height: 50px;
+}
+.error {
+  color: red;
+  font-weight: bold;
+}
+</style>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/demos/Torch.html b/pr-preview/pr-449/demos/Torch.html new file mode 100644 index 00000000..28424726 --- /dev/null +++ b/pr-preview/pr-449/demos/Torch.html @@ -0,0 +1,124 @@ + + + + + + Torch (Flashlight) | Vue Qrcode Reader + + + + + + + + + + + + + + + + + +
Skip to content

Torch (Flashlight)

In low-light conditions you might want to make use of the cameras flashlight. Using the torch prop, you can turn the flashlight on/off. Note that support is inconsistent across devices and browsers and can only be detected after already starting the camera.

Feature sponsored by aeschbacher.ch

Source

vue
<template>
+  <div>
+    <p>
+      Pick camera:
+      <select v-model="selected">
+        <option
+          v-for="device in devices"
+          :key="device.label"
+          :value="device"
+        >
+          {{ device.label }}
+        </option>
+      </select>
+    </p>
+
+    <p
+      v-if="torchNotSupported"
+      class="error"
+    >
+      Torch not supported for active camera
+    </p>
+
+    <qrcode-stream
+      :torch="torchActive"
+      :constraints="{ deviceId: selected.deviceId }"
+      v-if="selected !== null"
+      @error="console.error"
+      @camera-on="onCameraOn"
+      v-memo="[torchActive, selected.deviceId]"
+    >
+      <button
+        @click="torchActive = !torchActive"
+        :disabled="torchNotSupported"
+      >
+        <img
+          :src="withBase(icon)"
+          alt="toggle torch"
+        />
+      </button>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted, computed } from 'vue'
+import { withBase } from 'vitepress'
+import { QrcodeStream } from '../../../../src'
+
+const selected = ref(null as MediaDeviceInfo | null)
+const devices = ref([] as MediaDeviceInfo[])
+
+onMounted(async () => {
+  devices.value = (await navigator.mediaDevices.enumerateDevices()).filter(
+    ({ kind }) => kind === 'videoinput'
+  )
+
+  if (devices.value.length > 0) {
+    selected.value = devices.value[0]
+  }
+})
+
+const torchActive = ref(false)
+const torchNotSupported = ref(false)
+
+const icon = computed(() => {
+  if (torchActive.value) {
+    return '/flash-off.svg'
+  } else {
+    return '/flash-on.svg'
+  }
+})
+
+function onCameraOn(capabilities) {
+  console.log(capabilities)
+  torchNotSupported.value = !capabilities.torch
+}
+
+function onError(err) {
+  console.error(err)
+}
+</script>
+
+<style scoped>
+button {
+  position: absolute;
+  left: 10px;
+  top: 10px;
+}
+button img {
+  width: 50px;
+  height: 50px;
+}
+.error {
+  color: red;
+  font-weight: bold;
+}
+</style>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/demos/Upload.html b/pr-preview/pr-449/demos/Upload.html new file mode 100644 index 00000000..b5f5cb66 --- /dev/null +++ b/pr-preview/pr-449/demos/Upload.html @@ -0,0 +1,83 @@ + + + + + + Decode by Upload | Vue Qrcode Reader + + + + + + + + + + + + + + + + +
Skip to content

Decode by Upload

Finally, with QrcodeCapture comes another component which allows image scanning via classic file upload. Nothing is actually uploaded. Everything is happening client-side.

If you are on mobile and your browser supports it, you are not prompted with a file dialog but with your camera. So you can directly take the picture to be uploaded. Adjust this behavior with the following dropdown:

Source

vue
<template>
+  <div>
+    <p>
+      Capture:
+      <select v-model="selected">
+        <option
+          v-for="option in options"
+          :key="option.text"
+          :value="option"
+        >
+          {{ option.text }}
+        </option>
+      </select>
+    </p>
+
+    <hr />
+
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <qrcode-capture
+      @detect="onDetect"
+      :capture="selected.value"
+    />
+  </div>
+</template>
+
+<script>
+import { QrcodeCapture } from '../../../../src'
+
+export default {
+  components: { QrcodeCapture },
+
+  data() {
+    const options = [
+      { text: 'rear camera (default)', value: 'environment' },
+      { text: 'front camera', value: 'user' },
+      { text: 'force file dialog', value: null }
+    ]
+
+    return {
+      result: '',
+      options,
+      selected: options[0]
+    }
+  },
+
+  methods: {
+    onDetect(detectedCodes) {
+      console.log(detectedCodes)
+
+      this.result = JSON.stringify(detectedCodes.map((code) => code.rawValue))
+    }
+  }
+}
+</script>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/demos/Validate.html b/pr-preview/pr-449/demos/Validate.html new file mode 100644 index 00000000..899ec437 --- /dev/null +++ b/pr-preview/pr-449/demos/Validate.html @@ -0,0 +1,146 @@ + + + + + + Pause & Validate | Vue Qrcode Reader + + + + + + + + + + + + + + + + + +
Skip to content

Pause & Validate

By pausing you can process each scanned QR-code one at a time. The last received frame is still displayed so it just looks like the stream is paused.

Source

vue
<template>
+  <div>
+    <p class="decode-result">
+      Last result: <b>{{ result }}</b>
+    </p>
+
+    <qrcode-stream
+      :paused="paused"
+      @detect="onDetect"
+      @error="onError"
+      @camera-on="resetValidationState"
+    >
+      <div
+        v-if="validationSuccess"
+        class="validation-success"
+      >
+        This is a URL
+      </div>
+
+      <div
+        v-if="validationFailure"
+        class="validation-failure"
+      >
+        This is NOT a URL!
+      </div>
+
+      <div
+        v-if="validationPending"
+        class="validation-pending"
+      >
+        Long validation in progress...
+      </div>
+    </qrcode-stream>
+  </div>
+</template>
+
+<script>
+import { QrcodeStream } from '../../../../src'
+
+export default {
+  components: { QrcodeStream },
+
+  data() {
+    return {
+      isValid: undefined,
+      paused: false,
+      result: null
+    }
+  },
+
+  computed: {
+    validationPending() {
+      return this.isValid === undefined && this.paused
+    },
+
+    validationSuccess() {
+      return this.isValid === true
+    },
+
+    validationFailure() {
+      return this.isValid === false
+    }
+  },
+
+  methods: {
+    onError: console.error,
+
+    resetValidationState() {
+      this.isValid = undefined
+    },
+
+    async onDetect([firstDetectedCode]) {
+      this.result = firstDetectedCode.rawValue
+      this.paused = true
+
+      // pretend it's taking really long
+      await this.timeout(3000)
+      this.isValid = this.result.startsWith('http')
+
+      // some more delay, so users have time to read the message
+      await this.timeout(2000)
+      this.paused = false
+    },
+
+    timeout(ms) {
+      return new Promise((resolve) => {
+        window.setTimeout(resolve, ms)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.validation-success,
+.validation-failure,
+.validation-pending {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+
+  background-color: rgba(255, 255, 255, 0.8);
+  padding: 10px;
+  text-align: center;
+  font-weight: bold;
+  font-size: 1.4rem;
+  color: black;
+
+  display: flex;
+  flex-flow: column nowrap;
+  justify-content: center;
+}
+.validation-success {
+  color: green;
+}
+.validation-failure {
+  color: red;
+}
+</style>

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/flash-off.svg b/pr-preview/pr-449/flash-off.svg new file mode 100644 index 00000000..2d34c96f --- /dev/null +++ b/pr-preview/pr-449/flash-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pr-preview/pr-449/flash-on.svg b/pr-preview/pr-449/flash-on.svg new file mode 100644 index 00000000..9d0d023a --- /dev/null +++ b/pr-preview/pr-449/flash-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pr-preview/pr-449/fullscreen-exit.svg b/pr-preview/pr-449/fullscreen-exit.svg new file mode 100644 index 00000000..85e2eaaa --- /dev/null +++ b/pr-preview/pr-449/fullscreen-exit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pr-preview/pr-449/fullscreen.svg b/pr-preview/pr-449/fullscreen.svg new file mode 100644 index 00000000..08d4f2cf --- /dev/null +++ b/pr-preview/pr-449/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pr-preview/pr-449/hashmap.json b/pr-preview/pr-449/hashmap.json new file mode 100644 index 00000000..8d7d097f --- /dev/null +++ b/pr-preview/pr-449/hashmap.json @@ -0,0 +1 @@ +{"api_qrcodestream.md":"CGQgF4oK","demos_simple.md":"CWiqK3J_","demos_switchcamera.md":"B-obcuEB","demos_upload.md":"Ds3GTY8o","api_qrcodedropzone.md":"CqxuZhVd","api_qrcodecapture.md":"BVomH-fp","demos_loadingindicator.md":"BVZFqNj1","index.md":"DnOK2cmZ","demos_fulldemo.md":"EA-azuP_","demos_dragdrop.md":"12E-B_I3","demos_fullscreen.md":"CMW7y2Ip","demos_torch.md":"AnpZuZA8","demos_validate.md":"Ba0B0yOc","demos_scansameqrcodemorethanonce.md":"M3YU2Vzr"} diff --git a/pr-preview/pr-449/index.html b/pr-preview/pr-449/index.html new file mode 100644 index 00000000..eccda190 --- /dev/null +++ b/pr-preview/pr-449/index.html @@ -0,0 +1,26 @@ + + + + + + Vue Qrcode Reader + + + + + + + + + + + + + + + +
Skip to content

Vue Qrcode Reader

A set of Vue.js components for detecting and decoding QR codes.

VueQrcodeReader

Released under the MIT License.

+ + + + \ No newline at end of file diff --git a/pr-preview/pr-449/logo.png b/pr-preview/pr-449/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd815d01af0fdd664c8272090b5b6308163a55e GIT binary patch literal 22337 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 AXaE2J literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/manifest.webmanifest b/pr-preview/pr-449/manifest.webmanifest new file mode 100644 index 00000000..24bc3b32 --- /dev/null +++ b/pr-preview/pr-449/manifest.webmanifest @@ -0,0 +1 @@ +{"name":"Vue Qrcode Reader","short_name":"Vue QR","start_url":"/vue-qrcode-reader/pr-preview/pr-449/","display":"standalone","background_color":"#ffffff","lang":"en","scope":"/vue-qrcode-reader/pr-preview/pr-449/","theme_color":"#10b981","icons":[{"src":"pwa-192x192.png","sizes":"192x192","type":"image/png"},{"src":"pwa-512x512.png","sizes":"512x512","type":"image/png"}]} diff --git a/pr-preview/pr-449/pwa-192x192.png b/pr-preview/pr-449/pwa-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..cfda4297b6904e9f033fadc394a64d5b12094466 GIT binary patch literal 26062 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�AwnaJ|R&Ji8LVY91tDEuJ7Kfmii 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 Qelu!)+1`S9>BfV<1B9JOl>h($ literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/registerSW.js b/pr-preview/pr-449/registerSW.js new file mode 100644 index 00000000..33008eed --- /dev/null +++ b/pr-preview/pr-449/registerSW.js @@ -0,0 +1 @@ +if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('/vue-qrcode-reader/pr-preview/pr-449/sw.js', { scope: '/vue-qrcode-reader/pr-preview/pr-449/' })})} \ No newline at end of file diff --git a/pr-preview/pr-449/select-camera-demo.html b/pr-preview/pr-449/select-camera-demo.html new file mode 100644 index 00000000..80f1eb2d --- /dev/null +++ b/pr-preview/pr-449/select-camera-demo.html @@ -0,0 +1,82 @@ + + + + + + + + + +cameras:
+
    +
    + +

    Capabilities:

    +
    
    +
    +
    +
    +
    diff --git a/pr-preview/pr-449/simple-demo.html b/pr-preview/pr-449/simple-demo.html
    new file mode 100644
    index 00000000..40a1b5e0
    --- /dev/null
    +++ b/pr-preview/pr-449/simple-demo.html
    @@ -0,0 +1,79 @@
    +
    +
    +
    +  
    +  
    +
    +  Simple Demo
    +
    +  
    +  
    +
    +
    +	
    +

    Simple Demo

    + +

    {{ error }}

    + +

    Last result: {{ result }}

    + +
    + +
    +
    + + + diff --git a/pr-preview/pr-449/sw.js b/pr-preview/pr-449/sw.js new file mode 100644 index 00000000..56ff70e9 --- /dev/null +++ b/pr-preview/pr-449/sw.js @@ -0,0 +1,330 @@ +/** + * Copyright 2018 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// If the loader is already loaded, just stop. +if (!self.define) { + let registry = {}; + + // Used for `eval` and `importScripts` where we can't get script URL by other means. + // In both cases, it's safe to use a global var because those functions are synchronous. + let nextDefineUri; + + const singleRequire = (uri, parentUri) => { + uri = new URL(uri + ".js", parentUri).href; + return registry[uri] || ( + + new Promise(resolve => { + if ("document" in self) { + const script = document.createElement("script"); + script.src = uri; + script.onload = resolve; + document.head.appendChild(script); + } else { + nextDefineUri = uri; + importScripts(uri); + resolve(); + } + }) + + .then(() => { + let promise = registry[uri]; + if (!promise) { + throw new Error(`Module ${uri} didn’t register its module`); + } + return promise; + }) + ); + }; + + self.define = (depsNames, factory) => { + const uri = nextDefineUri || ("document" in self ? document.currentScript.src : "") || location.href; + if (registry[uri]) { + // Module is already loading or loaded. + return; + } + let exports = {}; + const require = depUri => singleRequire(depUri, uri); + const specialDeps = { + module: { uri }, + exports, + require + }; + registry[uri] = Promise.all(depsNames.map( + depName => specialDeps[depName] || require(depName) + )).then(deps => { + factory(...deps); + return exports; + }); + }; +} +define(['./workbox-5199072c'], (function (workbox) { 'use strict'; + + self.skipWaiting(); + workbox.clientsClaim(); + + /** + * The precacheAndRoute() method efficiently caches and responds to + * requests for URLs in the manifest. + * See https://goo.gl/S9QRab + */ + workbox.precacheAndRoute([{ + "url": "404.html", + "revision": "0d85dd8b0275491d1b4fb89a04cc8892" + }, { + "url": "api/QrcodeCapture.html", + "revision": "b027b9f377de6add75aab32f2a0fdb2f" + }, { + "url": "api/QrcodeDropZone.html", + "revision": "6ca17feae2a2b2dc578190e304ad5580" + }, { + "url": "api/QrcodeStream.html", + "revision": "bd5d8ba757fcf7d26ba3d08cd8d52493" + }, { + "url": "assets/api_QrcodeCapture.md.BVomH-fp.js", + "revision": null + }, { + "url": "assets/api_QrcodeCapture.md.BVomH-fp.lean.js", + "revision": null + }, { + "url": "assets/api_QrcodeDropZone.md.CqxuZhVd.js", + "revision": null + }, { + "url": "assets/api_QrcodeDropZone.md.CqxuZhVd.lean.js", + "revision": null + }, { + "url": "assets/api_QrcodeStream.md.CGQgF4oK.js", + "revision": null + }, { + "url": "assets/api_QrcodeStream.md.CGQgF4oK.lean.js", + "revision": null + }, { + "url": "assets/app.DzN9cVpk.js", + "revision": null + }, { + "url": "assets/chunks/@localSearchIndexroot.BQqEPrZR.js", + "revision": null + }, { + "url": "assets/chunks/camera.BJQyjlnn.js", + "revision": null + }, { + "url": "assets/chunks/framework.BtL3uYYi.js", + "revision": null + }, { + "url": "assets/chunks/QrcodeStream.vue_vue_type_script_setup_true_lang.CUHYp3xr.js", + "revision": null + }, { + "url": "assets/chunks/safari_32x32.Bkuv9jEj.js", + "revision": null + }, { + "url": "assets/chunks/theme.C1T0t5Zq.js", + "revision": null + }, { + "url": "assets/chunks/VPLocalSearchBox.BPLfKR6Q.js", + "revision": null + }, { + "url": "assets/demos_DragDrop.md.12E-B_I3.js", + "revision": null + }, { + "url": "assets/demos_DragDrop.md.12E-B_I3.lean.js", + "revision": null + }, { + "url": "assets/demos_FullDemo.md.EA-azuP_.js", + "revision": null + }, { + "url": "assets/demos_FullDemo.md.EA-azuP_.lean.js", + "revision": null + }, { + "url": "assets/demos_Fullscreen.md.CMW7y2Ip.js", + "revision": null + }, { + "url": "assets/demos_Fullscreen.md.CMW7y2Ip.lean.js", + "revision": null + }, { + "url": "assets/demos_LoadingIndicator.md.BVZFqNj1.js", + "revision": null + }, { + "url": "assets/demos_LoadingIndicator.md.BVZFqNj1.lean.js", + "revision": null + }, { + "url": "assets/demos_ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.js", + "revision": null + }, { + "url": "assets/demos_ScanSameQrcodeMoreThanOnce.md.M3YU2Vzr.lean.js", + "revision": null + }, { + "url": "assets/demos_Simple.md.CWiqK3J_.js", + "revision": null + }, { + "url": "assets/demos_Simple.md.CWiqK3J_.lean.js", + "revision": null + }, { + "url": "assets/demos_SwitchCamera.md.B-obcuEB.js", + "revision": null + }, { + "url": "assets/demos_SwitchCamera.md.B-obcuEB.lean.js", + "revision": null + }, { + "url": "assets/demos_Torch.md.AnpZuZA8.js", + "revision": null + }, { + "url": "assets/demos_Torch.md.AnpZuZA8.lean.js", + "revision": null + }, { + "url": "assets/demos_Upload.md.Ds3GTY8o.js", + "revision": null + }, { + "url": "assets/demos_Upload.md.Ds3GTY8o.lean.js", + "revision": null + }, { + "url": "assets/demos_Validate.md.Ba0B0yOc.js", + "revision": null + }, { + "url": "assets/demos_Validate.md.Ba0B0yOc.lean.js", + "revision": null + }, { + "url": "assets/index.md.DnOK2cmZ.js", + "revision": null + }, { + "url": "assets/index.md.DnOK2cmZ.lean.js", + "revision": null + }, { + "url": "assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2", + "revision": null + }, { + "url": "assets/inter-italic-cyrillic.D6csxwjC.woff2", + "revision": null + }, { + "url": "assets/inter-italic-greek-ext.CHOfFY1k.woff2", + "revision": null + }, { + "url": "assets/inter-italic-greek.9J96vYpw.woff2", + "revision": null + }, { + "url": "assets/inter-italic-latin-ext.BGcWXLrn.woff2", + "revision": null + }, { + "url": "assets/inter-italic-latin.DbsTr1gm.woff2", + "revision": null + }, { + "url": "assets/inter-italic-vietnamese.DHNAd7Wr.woff2", + "revision": null + }, { + "url": "assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2", + "revision": null + }, { + "url": "assets/inter-roman-cyrillic.CMhn1ESj.woff2", + "revision": null + }, { + "url": "assets/inter-roman-greek-ext.D0mI3NpI.woff2", + "revision": null + }, { + "url": "assets/inter-roman-greek.JvnBZ4YD.woff2", + "revision": null + }, { + "url": "assets/inter-roman-latin-ext.ZlYT4o7i.woff2", + "revision": null + }, { + "url": "assets/inter-roman-latin.Bu8hRsVA.woff2", + "revision": null + }, { + "url": "assets/inter-roman-vietnamese.ClpjcLMQ.woff2", + "revision": null + }, { + "url": "assets/style.DtBLy4Td.css", + "revision": null + }, { + "url": "camera-switch.svg", + "revision": "c966900237eef848d4aeb18b0ad64371" + }, { + "url": "checkmark.svg", + "revision": "398fc16c5cbd6c20b529b76742c33942" + }, { + "url": "debug-memory-leak.html", + "revision": "baffbefe1bde1d10f0c089b20f0cb9ed" + }, { + "url": "demos/DragDrop.html", + "revision": "54ad4ea7a7bcba4538fdd84736ff761e" + }, { + "url": "demos/FullDemo.html", + "revision": "22ad2d394e5e6001bf69f80d7c9a35db" + }, { + "url": "demos/Fullscreen.html", + "revision": "b610a549bbe27efdadb7fd854166412b" + }, { + "url": "demos/LoadingIndicator.html", + "revision": "316dcf6ef232d95a7ca0903c04f23da6" + }, { + "url": "demos/ScanSameQrcodeMoreThanOnce.html", + "revision": "c18dcc31f749e2032301386eed108466" + }, { + "url": "demos/Simple.html", + "revision": "3067aea3c4f4f4fc4c3d297e770ecd51" + }, { + "url": "demos/SwitchCamera.html", + "revision": "83295d03a34eb3e87620e83c35ea6aa8" + }, { + "url": "demos/Torch.html", + "revision": "01564732ec52b81e5a37612c6b3bdc49" + }, { + "url": "demos/Upload.html", + "revision": "65baf704deb5f4f21ffa72b30b6a9e05" + }, { + "url": "demos/Validate.html", + "revision": "b09f32e3eb9fbb66ac485c3d530dd8dd" + }, { + "url": "flash-off.svg", + "revision": "8b05f5dcd6712992a544b34520ec7262" + }, { + "url": "flash-on.svg", + "revision": "23580871877110ec5e7dcd41efdbd07b" + }, { + "url": "fullscreen-exit.svg", + "revision": "77f8bddd41a7894d1a00324ed9dcb8f9" + }, { + "url": "fullscreen.svg", + "revision": "432c44f09de0b4e0f9e236fad9b8c7f9" + }, { + "url": "index.html", + "revision": "adbc629e07dea3bff557278f49f78ddb" + }, { + "url": "logo.png", + "revision": "5f0c1d6358641bc48207acb9fa0b6182" + }, { + "url": "pwa-192x192.png", + "revision": "05431c417219f6c247a23488366a2b41" + }, { + "url": "pwa-512x512.png", + "revision": "5e0a4893ebdd02af95cf73c7b7759ddd" + }, { + "url": "registerSW.js", + "revision": "cb826733d1228e0f33c8117077d32d72" + }, { + "url": "select-camera-demo.html", + "revision": "caa12e13f97000bc06e565e64bb8bd0f" + }, { + "url": "simple-demo.html", + "revision": "d2e0337bc830c36ac24089933500e897" + }, { + "url": "pwa-192x192.png", + "revision": "05431c417219f6c247a23488366a2b41" + }, { + "url": "pwa-512x512.png", + "revision": "5e0a4893ebdd02af95cf73c7b7759ddd" + }, { + "url": "manifest.webmanifest", + "revision": "cdc5a0b0c58ffb38b8b281141584d834" + }], {}); + workbox.cleanupOutdatedCaches(); + workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"))); + +})); diff --git a/pr-preview/pr-449/workbox-5199072c.js b/pr-preview/pr-449/workbox-5199072c.js new file mode 100644 index 00000000..077fa26d --- /dev/null +++ b/pr-preview/pr-449/workbox-5199072c.js @@ -0,0 +1,3391 @@ +define(['exports'], (function (exports) { 'use strict'; + + // @ts-ignore + try { + self['workbox:core:7.0.0'] && _(); + } catch (e) {} + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Claim any currently available clients once the service worker + * becomes active. This is normally used in conjunction with `skipWaiting()`. + * + * @memberof workbox-core + */ + function clientsClaim() { + self.addEventListener('activate', () => self.clients.claim()); + } + + /* + Copyright 2019 Google LLC + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + const logger = (() => { + // Don't overwrite this value if it's already set. + // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923 + if (!('__WB_DISABLE_DEV_LOGS' in globalThis)) { + self.__WB_DISABLE_DEV_LOGS = false; + } + let inGroup = false; + const methodToColorMap = { + debug: `#7f8c8d`, + log: `#2ecc71`, + warn: `#f39c12`, + error: `#c0392b`, + groupCollapsed: `#3498db`, + groupEnd: null // No colored prefix on groupEnd + }; + const print = function (method, args) { + if (self.__WB_DISABLE_DEV_LOGS) { + return; + } + if (method === 'groupCollapsed') { + // Safari doesn't print all console.groupCollapsed() arguments: + // https://bugs.webkit.org/show_bug.cgi?id=182754 + if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + console[method](...args); + return; + } + } + const styles = [`background: ${methodToColorMap[method]}`, `border-radius: 0.5em`, `color: white`, `font-weight: bold`, `padding: 2px 0.5em`]; + // When in a group, the workbox prefix is not displayed. + const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')]; + console[method](...logPrefix, ...args); + if (method === 'groupCollapsed') { + inGroup = true; + } + if (method === 'groupEnd') { + inGroup = false; + } + }; + // eslint-disable-next-line @typescript-eslint/ban-types + const api = {}; + const loggerMethods = Object.keys(methodToColorMap); + for (const key of loggerMethods) { + const method = key; + api[method] = (...args) => { + print(method, args); + }; + } + return api; + })(); + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + const messages = { + 'invalid-value': ({ + paramName, + validValueDescription, + value + }) => { + if (!paramName || !validValueDescription) { + throw new Error(`Unexpected input to 'invalid-value' error.`); + } + return `The '${paramName}' parameter was given a value with an ` + `unexpected value. ${validValueDescription} Received a value of ` + `${JSON.stringify(value)}.`; + }, + 'not-an-array': ({ + moduleName, + className, + funcName, + paramName + }) => { + if (!moduleName || !className || !funcName || !paramName) { + throw new Error(`Unexpected input to 'not-an-array' error.`); + } + return `The parameter '${paramName}' passed into ` + `'${moduleName}.${className}.${funcName}()' must be an array.`; + }, + 'incorrect-type': ({ + expectedType, + paramName, + moduleName, + className, + funcName + }) => { + if (!expectedType || !paramName || !moduleName || !funcName) { + throw new Error(`Unexpected input to 'incorrect-type' error.`); + } + const classNameStr = className ? `${className}.` : ''; + return `The parameter '${paramName}' passed into ` + `'${moduleName}.${classNameStr}` + `${funcName}()' must be of type ${expectedType}.`; + }, + 'incorrect-class': ({ + expectedClassName, + paramName, + moduleName, + className, + funcName, + isReturnValueProblem + }) => { + if (!expectedClassName || !moduleName || !funcName) { + throw new Error(`Unexpected input to 'incorrect-class' error.`); + } + const classNameStr = className ? `${className}.` : ''; + if (isReturnValueProblem) { + return `The return value from ` + `'${moduleName}.${classNameStr}${funcName}()' ` + `must be an instance of class ${expectedClassName}.`; + } + return `The parameter '${paramName}' passed into ` + `'${moduleName}.${classNameStr}${funcName}()' ` + `must be an instance of class ${expectedClassName}.`; + }, + 'missing-a-method': ({ + expectedMethod, + paramName, + moduleName, + className, + funcName + }) => { + if (!expectedMethod || !paramName || !moduleName || !className || !funcName) { + throw new Error(`Unexpected input to 'missing-a-method' error.`); + } + return `${moduleName}.${className}.${funcName}() expected the ` + `'${paramName}' parameter to expose a '${expectedMethod}' method.`; + }, + 'add-to-cache-list-unexpected-type': ({ + entry + }) => { + return `An unexpected entry was passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' The entry ` + `'${JSON.stringify(entry)}' isn't supported. You must supply an array of ` + `strings with one or more characters, objects with a url property or ` + `Request objects.`; + }, + 'add-to-cache-list-conflicting-entries': ({ + firstEntry, + secondEntry + }) => { + if (!firstEntry || !secondEntry) { + throw new Error(`Unexpected input to ` + `'add-to-cache-list-duplicate-entries' error.`); + } + return `Two of the entries passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` + `${firstEntry} but different revision details. Workbox is ` + `unable to cache and version the asset correctly. Please remove one ` + `of the entries.`; + }, + 'plugin-error-request-will-fetch': ({ + thrownErrorMessage + }) => { + if (!thrownErrorMessage) { + throw new Error(`Unexpected input to ` + `'plugin-error-request-will-fetch', error.`); + } + return `An error was thrown by a plugins 'requestWillFetch()' method. ` + `The thrown error message was: '${thrownErrorMessage}'.`; + }, + 'invalid-cache-name': ({ + cacheNameId, + value + }) => { + if (!cacheNameId) { + throw new Error(`Expected a 'cacheNameId' for error 'invalid-cache-name'`); + } + return `You must provide a name containing at least one character for ` + `setCacheDetails({${cacheNameId}: '...'}). Received a value of ` + `'${JSON.stringify(value)}'`; + }, + 'unregister-route-but-not-found-with-method': ({ + method + }) => { + if (!method) { + throw new Error(`Unexpected input to ` + `'unregister-route-but-not-found-with-method' error.`); + } + return `The route you're trying to unregister was not previously ` + `registered for the method type '${method}'.`; + }, + 'unregister-route-route-not-registered': () => { + return `The route you're trying to unregister was not previously ` + `registered.`; + }, + 'queue-replay-failed': ({ + name + }) => { + return `Replaying the background sync queue '${name}' failed.`; + }, + 'duplicate-queue-name': ({ + name + }) => { + return `The Queue name '${name}' is already being used. ` + `All instances of backgroundSync.Queue must be given unique names.`; + }, + 'expired-test-without-max-age': ({ + methodName, + paramName + }) => { + return `The '${methodName}()' method can only be used when the ` + `'${paramName}' is used in the constructor.`; + }, + 'unsupported-route-type': ({ + moduleName, + className, + funcName, + paramName + }) => { + return `The supplied '${paramName}' parameter was an unsupported type. ` + `Please check the docs for ${moduleName}.${className}.${funcName} for ` + `valid input types.`; + }, + 'not-array-of-class': ({ + value, + expectedClass, + moduleName, + className, + funcName, + paramName + }) => { + return `The supplied '${paramName}' parameter must be an array of ` + `'${expectedClass}' objects. Received '${JSON.stringify(value)},'. ` + `Please check the call to ${moduleName}.${className}.${funcName}() ` + `to fix the issue.`; + }, + 'max-entries-or-age-required': ({ + moduleName, + className, + funcName + }) => { + return `You must define either config.maxEntries or config.maxAgeSeconds` + `in ${moduleName}.${className}.${funcName}`; + }, + 'statuses-or-headers-required': ({ + moduleName, + className, + funcName + }) => { + return `You must define either config.statuses or config.headers` + `in ${moduleName}.${className}.${funcName}`; + }, + 'invalid-string': ({ + moduleName, + funcName, + paramName + }) => { + if (!paramName || !moduleName || !funcName) { + throw new Error(`Unexpected input to 'invalid-string' error.`); + } + return `When using strings, the '${paramName}' parameter must start with ` + `'http' (for cross-origin matches) or '/' (for same-origin matches). ` + `Please see the docs for ${moduleName}.${funcName}() for ` + `more info.`; + }, + 'channel-name-required': () => { + return `You must provide a channelName to construct a ` + `BroadcastCacheUpdate instance.`; + }, + 'invalid-responses-are-same-args': () => { + return `The arguments passed into responsesAreSame() appear to be ` + `invalid. Please ensure valid Responses are used.`; + }, + 'expire-custom-caches-only': () => { + return `You must provide a 'cacheName' property when using the ` + `expiration plugin with a runtime caching strategy.`; + }, + 'unit-must-be-bytes': ({ + normalizedRangeHeader + }) => { + if (!normalizedRangeHeader) { + throw new Error(`Unexpected input to 'unit-must-be-bytes' error.`); + } + return `The 'unit' portion of the Range header must be set to 'bytes'. ` + `The Range header provided was "${normalizedRangeHeader}"`; + }, + 'single-range-only': ({ + normalizedRangeHeader + }) => { + if (!normalizedRangeHeader) { + throw new Error(`Unexpected input to 'single-range-only' error.`); + } + return `Multiple ranges are not supported. Please use a single start ` + `value, and optional end value. The Range header provided was ` + `"${normalizedRangeHeader}"`; + }, + 'invalid-range-values': ({ + normalizedRangeHeader + }) => { + if (!normalizedRangeHeader) { + throw new Error(`Unexpected input to 'invalid-range-values' error.`); + } + return `The Range header is missing both start and end values. At least ` + `one of those values is needed. The Range header provided was ` + `"${normalizedRangeHeader}"`; + }, + 'no-range-header': () => { + return `No Range header was found in the Request provided.`; + }, + 'range-not-satisfiable': ({ + size, + start, + end + }) => { + return `The start (${start}) and end (${end}) values in the Range are ` + `not satisfiable by the cached response, which is ${size} bytes.`; + }, + 'attempt-to-cache-non-get-request': ({ + url, + method + }) => { + return `Unable to cache '${url}' because it is a '${method}' request and ` + `only 'GET' requests can be cached.`; + }, + 'cache-put-with-no-response': ({ + url + }) => { + return `There was an attempt to cache '${url}' but the response was not ` + `defined.`; + }, + 'no-response': ({ + url, + error + }) => { + let message = `The strategy could not generate a response for '${url}'.`; + if (error) { + message += ` The underlying error is ${error}.`; + } + return message; + }, + 'bad-precaching-response': ({ + url, + status + }) => { + return `The precaching request for '${url}' failed` + (status ? ` with an HTTP status of ${status}.` : `.`); + }, + 'non-precached-url': ({ + url + }) => { + return `createHandlerBoundToURL('${url}') was called, but that URL is ` + `not precached. Please pass in a URL that is precached instead.`; + }, + 'add-to-cache-list-conflicting-integrities': ({ + url + }) => { + return `Two of the entries passed to ` + `'workbox-precaching.PrecacheController.addToCacheList()' had the URL ` + `${url} with different integrity values. Please remove one of them.`; + }, + 'missing-precache-entry': ({ + cacheName, + url + }) => { + return `Unable to find a precached response in ${cacheName} for ${url}.`; + }, + 'cross-origin-copy-response': ({ + origin + }) => { + return `workbox-core.copyResponse() can only be used with same-origin ` + `responses. It was passed a response with origin ${origin}.`; + }, + 'opaque-streams-source': ({ + type + }) => { + const message = `One of the workbox-streams sources resulted in an ` + `'${type}' response.`; + if (type === 'opaqueredirect') { + return `${message} Please do not use a navigation request that results ` + `in a redirect as a source.`; + } + return `${message} Please ensure your sources are CORS-enabled.`; + } + }; + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + const generatorFunction = (code, details = {}) => { + const message = messages[code]; + if (!message) { + throw new Error(`Unable to find message for code '${code}'.`); + } + return message(details); + }; + const messageGenerator = generatorFunction; + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Workbox errors should be thrown with this class. + * This allows use to ensure the type easily in tests, + * helps developers identify errors from workbox + * easily and allows use to optimise error + * messages correctly. + * + * @private + */ + class WorkboxError extends Error { + /** + * + * @param {string} errorCode The error code that + * identifies this particular error. + * @param {Object=} details Any relevant arguments + * that will help developers identify issues should + * be added as a key on the context object. + */ + constructor(errorCode, details) { + const message = messageGenerator(errorCode, details); + super(message); + this.name = errorCode; + this.details = details; + } + } + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /* + * This method throws if the supplied value is not an array. + * The destructed values are required to produce a meaningful error for users. + * The destructed and restructured object is so it's clear what is + * needed. + */ + const isArray = (value, details) => { + if (!Array.isArray(value)) { + throw new WorkboxError('not-an-array', details); + } + }; + const hasMethod = (object, expectedMethod, details) => { + const type = typeof object[expectedMethod]; + if (type !== 'function') { + details['expectedMethod'] = expectedMethod; + throw new WorkboxError('missing-a-method', details); + } + }; + const isType = (object, expectedType, details) => { + if (typeof object !== expectedType) { + details['expectedType'] = expectedType; + throw new WorkboxError('incorrect-type', details); + } + }; + const isInstance = (object, + // Need the general type to do the check later. + // eslint-disable-next-line @typescript-eslint/ban-types + expectedClass, details) => { + if (!(object instanceof expectedClass)) { + details['expectedClassName'] = expectedClass.name; + throw new WorkboxError('incorrect-class', details); + } + }; + const isOneOf = (value, validValues, details) => { + if (!validValues.includes(value)) { + details['validValueDescription'] = `Valid values are ${JSON.stringify(validValues)}.`; + throw new WorkboxError('invalid-value', details); + } + }; + const isArrayOfClass = (value, + // Need general type to do check later. + expectedClass, + // eslint-disable-line + details) => { + const error = new WorkboxError('not-array-of-class', details); + if (!Array.isArray(value)) { + throw error; + } + for (const item of value) { + if (!(item instanceof expectedClass)) { + throw error; + } + } + }; + const finalAssertExports = { + hasMethod, + isArray, + isInstance, + isOneOf, + isType, + isArrayOfClass + }; + + // @ts-ignore + try { + self['workbox:routing:7.0.0'] && _(); + } catch (e) {} + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * The default HTTP method, 'GET', used when there's no specific method + * configured for a route. + * + * @type {string} + * + * @private + */ + const defaultMethod = 'GET'; + /** + * The list of valid HTTP methods associated with requests that could be routed. + * + * @type {Array} + * + * @private + */ + const validMethods = ['DELETE', 'GET', 'HEAD', 'PATCH', 'POST', 'PUT']; + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * @param {function()|Object} handler Either a function, or an object with a + * 'handle' method. + * @return {Object} An object with a handle method. + * + * @private + */ + const normalizeHandler = handler => { + if (handler && typeof handler === 'object') { + { + finalAssertExports.hasMethod(handler, 'handle', { + moduleName: 'workbox-routing', + className: 'Route', + funcName: 'constructor', + paramName: 'handler' + }); + } + return handler; + } else { + { + finalAssertExports.isType(handler, 'function', { + moduleName: 'workbox-routing', + className: 'Route', + funcName: 'constructor', + paramName: 'handler' + }); + } + return { + handle: handler + }; + } + }; + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * A `Route` consists of a pair of callback functions, "match" and "handler". + * The "match" callback determine if a route should be used to "handle" a + * request by returning a non-falsy value if it can. The "handler" callback + * is called when there is a match and should return a Promise that resolves + * to a `Response`. + * + * @memberof workbox-routing + */ + class Route { + /** + * Constructor for Route class. + * + * @param {workbox-routing~matchCallback} match + * A callback function that determines whether the route matches a given + * `fetch` event by returning a non-falsy value. + * @param {workbox-routing~handlerCallback} handler A callback + * function that returns a Promise resolving to a Response. + * @param {string} [method='GET'] The HTTP method to match the Route + * against. + */ + constructor(match, handler, method = defaultMethod) { + { + finalAssertExports.isType(match, 'function', { + moduleName: 'workbox-routing', + className: 'Route', + funcName: 'constructor', + paramName: 'match' + }); + if (method) { + finalAssertExports.isOneOf(method, validMethods, { + paramName: 'method' + }); + } + } + // These values are referenced directly by Router so cannot be + // altered by minificaton. + this.handler = normalizeHandler(handler); + this.match = match; + this.method = method; + } + /** + * + * @param {workbox-routing-handlerCallback} handler A callback + * function that returns a Promise resolving to a Response + */ + setCatchHandler(handler) { + this.catchHandler = normalizeHandler(handler); + } + } + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * RegExpRoute makes it easy to create a regular expression based + * {@link workbox-routing.Route}. + * + * For same-origin requests the RegExp only needs to match part of the URL. For + * requests against third-party servers, you must define a RegExp that matches + * the start of the URL. + * + * @memberof workbox-routing + * @extends workbox-routing.Route + */ + class RegExpRoute extends Route { + /** + * If the regular expression contains + * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references}, + * the captured values will be passed to the + * {@link workbox-routing~handlerCallback} `params` + * argument. + * + * @param {RegExp} regExp The regular expression to match against URLs. + * @param {workbox-routing~handlerCallback} handler A callback + * function that returns a Promise resulting in a Response. + * @param {string} [method='GET'] The HTTP method to match the Route + * against. + */ + constructor(regExp, handler, method) { + { + finalAssertExports.isInstance(regExp, RegExp, { + moduleName: 'workbox-routing', + className: 'RegExpRoute', + funcName: 'constructor', + paramName: 'pattern' + }); + } + const match = ({ + url + }) => { + const result = regExp.exec(url.href); + // Return immediately if there's no match. + if (!result) { + return; + } + // Require that the match start at the first character in the URL string + // if it's a cross-origin request. + // See https://github.com/GoogleChrome/workbox/issues/281 for the context + // behind this behavior. + if (url.origin !== location.origin && result.index !== 0) { + { + logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` + `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` + `handle cross-origin requests if they match the entire URL.`); + } + return; + } + // If the route matches, but there aren't any capture groups defined, then + // this will return [], which is truthy and therefore sufficient to + // indicate a match. + // If there are capture groups, then it will return their values. + return result.slice(1); + }; + super(match, handler, method); + } + } + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + const getFriendlyURL = url => { + const urlObj = new URL(String(url), location.href); + // See https://github.com/GoogleChrome/workbox/issues/2323 + // We want to include everything, except for the origin if it's same-origin. + return urlObj.href.replace(new RegExp(`^${location.origin}`), ''); + }; + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * The Router can be used to process a `FetchEvent` using one or more + * {@link workbox-routing.Route}, responding with a `Response` if + * a matching route exists. + * + * If no route matches a given a request, the Router will use a "default" + * handler if one is defined. + * + * Should the matching Route throw an error, the Router will use a "catch" + * handler if one is defined to gracefully deal with issues and respond with a + * Request. + * + * If a request matches multiple routes, the **earliest** registered route will + * be used to respond to the request. + * + * @memberof workbox-routing + */ + class Router { + /** + * Initializes a new Router. + */ + constructor() { + this._routes = new Map(); + this._defaultHandlerMap = new Map(); + } + /** + * @return {Map>} routes A `Map` of HTTP + * method name ('GET', etc.) to an array of all the corresponding `Route` + * instances that are registered. + */ + get routes() { + return this._routes; + } + /** + * Adds a fetch event listener to respond to events when a route matches + * the event's request. + */ + addFetchListener() { + // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705 + self.addEventListener('fetch', event => { + const { + request + } = event; + const responsePromise = this.handleRequest({ + request, + event + }); + if (responsePromise) { + event.respondWith(responsePromise); + } + }); + } + /** + * Adds a message event listener for URLs to cache from the window. + * This is useful to cache resources loaded on the page prior to when the + * service worker started controlling it. + * + * The format of the message data sent from the window should be as follows. + * Where the `urlsToCache` array may consist of URL strings or an array of + * URL string + `requestInit` object (the same as you'd pass to `fetch()`). + * + * ``` + * { + * type: 'CACHE_URLS', + * payload: { + * urlsToCache: [ + * './script1.js', + * './script2.js', + * ['./script3.js', {mode: 'no-cors'}], + * ], + * }, + * } + * ``` + */ + addCacheListener() { + // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705 + self.addEventListener('message', event => { + // event.data is type 'any' + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (event.data && event.data.type === 'CACHE_URLS') { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const { + payload + } = event.data; + { + logger.debug(`Caching URLs from the window`, payload.urlsToCache); + } + const requestPromises = Promise.all(payload.urlsToCache.map(entry => { + if (typeof entry === 'string') { + entry = [entry]; + } + const request = new Request(...entry); + return this.handleRequest({ + request, + event + }); + // TODO(philipwalton): TypeScript errors without this typecast for + // some reason (probably a bug). The real type here should work but + // doesn't: `Array | undefined>`. + })); // TypeScript + event.waitUntil(requestPromises); + // If a MessageChannel was used, reply to the message on success. + if (event.ports && event.ports[0]) { + void requestPromises.then(() => event.ports[0].postMessage(true)); + } + } + }); + } + /** + * Apply the routing rules to a FetchEvent object to get a Response from an + * appropriate Route's handler. + * + * @param {Object} options + * @param {Request} options.request The request to handle. + * @param {ExtendableEvent} options.event The event that triggered the + * request. + * @return {Promise|undefined} A promise is returned if a + * registered route can handle the request. If there is no matching + * route and there's no `defaultHandler`, `undefined` is returned. + */ + handleRequest({ + request, + event + }) { + { + finalAssertExports.isInstance(request, Request, { + moduleName: 'workbox-routing', + className: 'Router', + funcName: 'handleRequest', + paramName: 'options.request' + }); + } + const url = new URL(request.url, location.href); + if (!url.protocol.startsWith('http')) { + { + logger.debug(`Workbox Router only supports URLs that start with 'http'.`); + } + return; + } + const sameOrigin = url.origin === location.origin; + const { + params, + route + } = this.findMatchingRoute({ + event, + request, + sameOrigin, + url + }); + let handler = route && route.handler; + const debugMessages = []; + { + if (handler) { + debugMessages.push([`Found a route to handle this request:`, route]); + if (params) { + debugMessages.push([`Passing the following params to the route's handler:`, params]); + } + } + } + // If we don't have a handler because there was no matching route, then + // fall back to defaultHandler if that's defined. + const method = request.method; + if (!handler && this._defaultHandlerMap.has(method)) { + { + debugMessages.push(`Failed to find a matching route. Falling ` + `back to the default handler for ${method}.`); + } + handler = this._defaultHandlerMap.get(method); + } + if (!handler) { + { + // No handler so Workbox will do nothing. If logs is set of debug + // i.e. verbose, we should print out this information. + logger.debug(`No route found for: ${getFriendlyURL(url)}`); + } + return; + } + { + // We have a handler, meaning Workbox is going to handle the route. + // print the routing details to the console. + logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`); + debugMessages.forEach(msg => { + if (Array.isArray(msg)) { + logger.log(...msg); + } else { + logger.log(msg); + } + }); + logger.groupEnd(); + } + // Wrap in try and catch in case the handle method throws a synchronous + // error. It should still callback to the catch handler. + let responsePromise; + try { + responsePromise = handler.handle({ + url, + request, + event, + params + }); + } catch (err) { + responsePromise = Promise.reject(err); + } + // Get route's catch handler, if it exists + const catchHandler = route && route.catchHandler; + if (responsePromise instanceof Promise && (this._catchHandler || catchHandler)) { + responsePromise = responsePromise.catch(async err => { + // If there's a route catch handler, process that first + if (catchHandler) { + { + // Still include URL here as it will be async from the console group + // and may not make sense without the URL + logger.groupCollapsed(`Error thrown when responding to: ` + ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`); + logger.error(`Error thrown by:`, route); + logger.error(err); + logger.groupEnd(); + } + try { + return await catchHandler.handle({ + url, + request, + event, + params + }); + } catch (catchErr) { + if (catchErr instanceof Error) { + err = catchErr; + } + } + } + if (this._catchHandler) { + { + // Still include URL here as it will be async from the console group + // and may not make sense without the URL + logger.groupCollapsed(`Error thrown when responding to: ` + ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`); + logger.error(`Error thrown by:`, route); + logger.error(err); + logger.groupEnd(); + } + return this._catchHandler.handle({ + url, + request, + event + }); + } + throw err; + }); + } + return responsePromise; + } + /** + * Checks a request and URL (and optionally an event) against the list of + * registered routes, and if there's a match, returns the corresponding + * route along with any params generated by the match. + * + * @param {Object} options + * @param {URL} options.url + * @param {boolean} options.sameOrigin The result of comparing `url.origin` + * against the current origin. + * @param {Request} options.request The request to match. + * @param {Event} options.event The corresponding event. + * @return {Object} An object with `route` and `params` properties. + * They are populated if a matching route was found or `undefined` + * otherwise. + */ + findMatchingRoute({ + url, + sameOrigin, + request, + event + }) { + const routes = this._routes.get(request.method) || []; + for (const route of routes) { + let params; + // route.match returns type any, not possible to change right now. + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const matchResult = route.match({ + url, + sameOrigin, + request, + event + }); + if (matchResult) { + { + // Warn developers that using an async matchCallback is almost always + // not the right thing to do. + if (matchResult instanceof Promise) { + logger.warn(`While routing ${getFriendlyURL(url)}, an async ` + `matchCallback function was used. Please convert the ` + `following route to use a synchronous matchCallback function:`, route); + } + } + // See https://github.com/GoogleChrome/workbox/issues/2079 + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + params = matchResult; + if (Array.isArray(params) && params.length === 0) { + // Instead of passing an empty array in as params, use undefined. + params = undefined; + } else if (matchResult.constructor === Object && + // eslint-disable-line + Object.keys(matchResult).length === 0) { + // Instead of passing an empty object in as params, use undefined. + params = undefined; + } else if (typeof matchResult === 'boolean') { + // For the boolean value true (rather than just something truth-y), + // don't set params. + // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353 + params = undefined; + } + // Return early if have a match. + return { + route, + params + }; + } + } + // If no match was found above, return and empty object. + return {}; + } + /** + * Define a default `handler` that's called when no routes explicitly + * match the incoming request. + * + * Each HTTP method ('GET', 'POST', etc.) gets its own default handler. + * + * Without a default handler, unmatched requests will go against the + * network as if there were no service worker present. + * + * @param {workbox-routing~handlerCallback} handler A callback + * function that returns a Promise resulting in a Response. + * @param {string} [method='GET'] The HTTP method to associate with this + * default handler. Each method has its own default. + */ + setDefaultHandler(handler, method = defaultMethod) { + this._defaultHandlerMap.set(method, normalizeHandler(handler)); + } + /** + * If a Route throws an error while handling a request, this `handler` + * will be called and given a chance to provide a response. + * + * @param {workbox-routing~handlerCallback} handler A callback + * function that returns a Promise resulting in a Response. + */ + setCatchHandler(handler) { + this._catchHandler = normalizeHandler(handler); + } + /** + * Registers a route with the router. + * + * @param {workbox-routing.Route} route The route to register. + */ + registerRoute(route) { + { + finalAssertExports.isType(route, 'object', { + moduleName: 'workbox-routing', + className: 'Router', + funcName: 'registerRoute', + paramName: 'route' + }); + finalAssertExports.hasMethod(route, 'match', { + moduleName: 'workbox-routing', + className: 'Router', + funcName: 'registerRoute', + paramName: 'route' + }); + finalAssertExports.isType(route.handler, 'object', { + moduleName: 'workbox-routing', + className: 'Router', + funcName: 'registerRoute', + paramName: 'route' + }); + finalAssertExports.hasMethod(route.handler, 'handle', { + moduleName: 'workbox-routing', + className: 'Router', + funcName: 'registerRoute', + paramName: 'route.handler' + }); + finalAssertExports.isType(route.method, 'string', { + moduleName: 'workbox-routing', + className: 'Router', + funcName: 'registerRoute', + paramName: 'route.method' + }); + } + if (!this._routes.has(route.method)) { + this._routes.set(route.method, []); + } + // Give precedence to all of the earlier routes by adding this additional + // route to the end of the array. + this._routes.get(route.method).push(route); + } + /** + * Unregisters a route with the router. + * + * @param {workbox-routing.Route} route The route to unregister. + */ + unregisterRoute(route) { + if (!this._routes.has(route.method)) { + throw new WorkboxError('unregister-route-but-not-found-with-method', { + method: route.method + }); + } + const routeIndex = this._routes.get(route.method).indexOf(route); + if (routeIndex > -1) { + this._routes.get(route.method).splice(routeIndex, 1); + } else { + throw new WorkboxError('unregister-route-route-not-registered'); + } + } + } + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + let defaultRouter; + /** + * Creates a new, singleton Router instance if one does not exist. If one + * does already exist, that instance is returned. + * + * @private + * @return {Router} + */ + const getOrCreateDefaultRouter = () => { + if (!defaultRouter) { + defaultRouter = new Router(); + // The helpers that use the default Router assume these listeners exist. + defaultRouter.addFetchListener(); + defaultRouter.addCacheListener(); + } + return defaultRouter; + }; + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Easily register a RegExp, string, or function with a caching + * strategy to a singleton Router instance. + * + * This method will generate a Route for you if needed and + * call {@link workbox-routing.Router#registerRoute}. + * + * @param {RegExp|string|workbox-routing.Route~matchCallback|workbox-routing.Route} capture + * If the capture param is a `Route`, all other arguments will be ignored. + * @param {workbox-routing~handlerCallback} [handler] A callback + * function that returns a Promise resulting in a Response. This parameter + * is required if `capture` is not a `Route` object. + * @param {string} [method='GET'] The HTTP method to match the Route + * against. + * @return {workbox-routing.Route} The generated `Route`. + * + * @memberof workbox-routing + */ + function registerRoute(capture, handler, method) { + let route; + if (typeof capture === 'string') { + const captureUrl = new URL(capture, location.href); + { + if (!(capture.startsWith('/') || capture.startsWith('http'))) { + throw new WorkboxError('invalid-string', { + moduleName: 'workbox-routing', + funcName: 'registerRoute', + paramName: 'capture' + }); + } + // We want to check if Express-style wildcards are in the pathname only. + // TODO: Remove this log message in v4. + const valueToCheck = capture.startsWith('http') ? captureUrl.pathname : capture; + // See https://github.com/pillarjs/path-to-regexp#parameters + const wildcards = '[*:?+]'; + if (new RegExp(`${wildcards}`).exec(valueToCheck)) { + logger.debug(`The '$capture' parameter contains an Express-style wildcard ` + `character (${wildcards}). Strings are now always interpreted as ` + `exact matches; use a RegExp for partial or wildcard matches.`); + } + } + const matchCallback = ({ + url + }) => { + { + if (url.pathname === captureUrl.pathname && url.origin !== captureUrl.origin) { + logger.debug(`${capture} only partially matches the cross-origin URL ` + `${url.toString()}. This route will only handle cross-origin requests ` + `if they match the entire URL.`); + } + } + return url.href === captureUrl.href; + }; + // If `capture` is a string then `handler` and `method` must be present. + route = new Route(matchCallback, handler, method); + } else if (capture instanceof RegExp) { + // If `capture` is a `RegExp` then `handler` and `method` must be present. + route = new RegExpRoute(capture, handler, method); + } else if (typeof capture === 'function') { + // If `capture` is a function then `handler` and `method` must be present. + route = new Route(capture, handler, method); + } else if (capture instanceof Route) { + route = capture; + } else { + throw new WorkboxError('unsupported-route-type', { + moduleName: 'workbox-routing', + funcName: 'registerRoute', + paramName: 'capture' + }); + } + const defaultRouter = getOrCreateDefaultRouter(); + defaultRouter.registerRoute(route); + return route; + } + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + const _cacheNameDetails = { + googleAnalytics: 'googleAnalytics', + precache: 'precache-v2', + prefix: 'workbox', + runtime: 'runtime', + suffix: typeof registration !== 'undefined' ? registration.scope : '' + }; + const _createCacheName = cacheName => { + return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix].filter(value => value && value.length > 0).join('-'); + }; + const eachCacheNameDetail = fn => { + for (const key of Object.keys(_cacheNameDetails)) { + fn(key); + } + }; + const cacheNames = { + updateDetails: details => { + eachCacheNameDetail(key => { + if (typeof details[key] === 'string') { + _cacheNameDetails[key] = details[key]; + } + }); + }, + getGoogleAnalyticsName: userCacheName => { + return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics); + }, + getPrecacheName: userCacheName => { + return userCacheName || _createCacheName(_cacheNameDetails.precache); + }, + getPrefix: () => { + return _cacheNameDetails.prefix; + }, + getRuntimeName: userCacheName => { + return userCacheName || _createCacheName(_cacheNameDetails.runtime); + }, + getSuffix: () => { + return _cacheNameDetails.suffix; + } + }; + + /* + Copyright 2020 Google LLC + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * A utility method that makes it easier to use `event.waitUntil` with + * async functions and return the result. + * + * @param {ExtendableEvent} event + * @param {Function} asyncFn + * @return {Function} + * @private + */ + function waitUntil(event, asyncFn) { + const returnPromise = asyncFn(); + event.waitUntil(returnPromise); + return returnPromise; + } + + // @ts-ignore + try { + self['workbox:precaching:7.0.0'] && _(); + } catch (e) {} + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + // Name of the search parameter used to store revision info. + const REVISION_SEARCH_PARAM = '__WB_REVISION__'; + /** + * Converts a manifest entry into a versioned URL suitable for precaching. + * + * @param {Object|string} entry + * @return {string} A URL with versioning info. + * + * @private + * @memberof workbox-precaching + */ + function createCacheKey(entry) { + if (!entry) { + throw new WorkboxError('add-to-cache-list-unexpected-type', { + entry + }); + } + // If a precache manifest entry is a string, it's assumed to be a versioned + // URL, like '/app.abcd1234.js'. Return as-is. + if (typeof entry === 'string') { + const urlObject = new URL(entry, location.href); + return { + cacheKey: urlObject.href, + url: urlObject.href + }; + } + const { + revision, + url + } = entry; + if (!url) { + throw new WorkboxError('add-to-cache-list-unexpected-type', { + entry + }); + } + // If there's just a URL and no revision, then it's also assumed to be a + // versioned URL. + if (!revision) { + const urlObject = new URL(url, location.href); + return { + cacheKey: urlObject.href, + url: urlObject.href + }; + } + // Otherwise, construct a properly versioned URL using the custom Workbox + // search parameter along with the revision info. + const cacheKeyURL = new URL(url, location.href); + const originalURL = new URL(url, location.href); + cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision); + return { + cacheKey: cacheKeyURL.href, + url: originalURL.href + }; + } + + /* + Copyright 2020 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * A plugin, designed to be used with PrecacheController, to determine the + * of assets that were updated (or not updated) during the install event. + * + * @private + */ + class PrecacheInstallReportPlugin { + constructor() { + this.updatedURLs = []; + this.notUpdatedURLs = []; + this.handlerWillStart = async ({ + request, + state + }) => { + // TODO: `state` should never be undefined... + if (state) { + state.originalRequest = request; + } + }; + this.cachedResponseWillBeUsed = async ({ + event, + state, + cachedResponse + }) => { + if (event.type === 'install') { + if (state && state.originalRequest && state.originalRequest instanceof Request) { + // TODO: `state` should never be undefined... + const url = state.originalRequest.url; + if (cachedResponse) { + this.notUpdatedURLs.push(url); + } else { + this.updatedURLs.push(url); + } + } + } + return cachedResponse; + }; + } + } + + /* + Copyright 2020 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * A plugin, designed to be used with PrecacheController, to translate URLs into + * the corresponding cache key, based on the current revision info. + * + * @private + */ + class PrecacheCacheKeyPlugin { + constructor({ + precacheController + }) { + this.cacheKeyWillBeUsed = async ({ + request, + params + }) => { + // Params is type any, can't change right now. + /* eslint-disable */ + const cacheKey = (params === null || params === void 0 ? void 0 : params.cacheKey) || this._precacheController.getCacheKeyForURL(request.url); + /* eslint-enable */ + return cacheKey ? new Request(cacheKey, { + headers: request.headers + }) : request; + }; + this._precacheController = precacheController; + } + } + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * @param {string} groupTitle + * @param {Array} deletedURLs + * + * @private + */ + const logGroup = (groupTitle, deletedURLs) => { + logger.groupCollapsed(groupTitle); + for (const url of deletedURLs) { + logger.log(url); + } + logger.groupEnd(); + }; + /** + * @param {Array} deletedURLs + * + * @private + * @memberof workbox-precaching + */ + function printCleanupDetails(deletedURLs) { + const deletionCount = deletedURLs.length; + if (deletionCount > 0) { + logger.groupCollapsed(`During precaching cleanup, ` + `${deletionCount} cached ` + `request${deletionCount === 1 ? ' was' : 's were'} deleted.`); + logGroup('Deleted Cache Requests', deletedURLs); + logger.groupEnd(); + } + } + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * @param {string} groupTitle + * @param {Array} urls + * + * @private + */ + function _nestedGroup(groupTitle, urls) { + if (urls.length === 0) { + return; + } + logger.groupCollapsed(groupTitle); + for (const url of urls) { + logger.log(url); + } + logger.groupEnd(); + } + /** + * @param {Array} urlsToPrecache + * @param {Array} urlsAlreadyPrecached + * + * @private + * @memberof workbox-precaching + */ + function printInstallDetails(urlsToPrecache, urlsAlreadyPrecached) { + const precachedCount = urlsToPrecache.length; + const alreadyPrecachedCount = urlsAlreadyPrecached.length; + if (precachedCount || alreadyPrecachedCount) { + let message = `Precaching ${precachedCount} file${precachedCount === 1 ? '' : 's'}.`; + if (alreadyPrecachedCount > 0) { + message += ` ${alreadyPrecachedCount} ` + `file${alreadyPrecachedCount === 1 ? ' is' : 's are'} already cached.`; + } + logger.groupCollapsed(message); + _nestedGroup(`View newly precached URLs.`, urlsToPrecache); + _nestedGroup(`View previously precached URLs.`, urlsAlreadyPrecached); + logger.groupEnd(); + } + } + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + let supportStatus; + /** + * A utility function that determines whether the current browser supports + * constructing a new `Response` from a `response.body` stream. + * + * @return {boolean} `true`, if the current browser can successfully + * construct a `Response` from a `response.body` stream, `false` otherwise. + * + * @private + */ + function canConstructResponseFromBodyStream() { + if (supportStatus === undefined) { + const testResponse = new Response(''); + if ('body' in testResponse) { + try { + new Response(testResponse.body); + supportStatus = true; + } catch (error) { + supportStatus = false; + } + } + supportStatus = false; + } + return supportStatus; + } + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Allows developers to copy a response and modify its `headers`, `status`, + * or `statusText` values (the values settable via a + * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax} + * object in the constructor). + * To modify these values, pass a function as the second argument. That + * function will be invoked with a single object with the response properties + * `{headers, status, statusText}`. The return value of this function will + * be used as the `ResponseInit` for the new `Response`. To change the values + * either modify the passed parameter(s) and return it, or return a totally + * new object. + * + * This method is intentionally limited to same-origin responses, regardless of + * whether CORS was used or not. + * + * @param {Response} response + * @param {Function} modifier + * @memberof workbox-core + */ + async function copyResponse(response, modifier) { + let origin = null; + // If response.url isn't set, assume it's cross-origin and keep origin null. + if (response.url) { + const responseURL = new URL(response.url); + origin = responseURL.origin; + } + if (origin !== self.location.origin) { + throw new WorkboxError('cross-origin-copy-response', { + origin + }); + } + const clonedResponse = response.clone(); + // Create a fresh `ResponseInit` object by cloning the headers. + const responseInit = { + headers: new Headers(clonedResponse.headers), + status: clonedResponse.status, + statusText: clonedResponse.statusText + }; + // Apply any user modifications. + const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit; + // Create the new response from the body stream and `ResponseInit` + // modifications. Note: not all browsers support the Response.body stream, + // so fall back to reading the entire body into memory as a blob. + const body = canConstructResponseFromBodyStream() ? clonedResponse.body : await clonedResponse.blob(); + return new Response(body, modifiedResponseInit); + } + + /* + Copyright 2020 Google LLC + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + function stripParams(fullURL, ignoreParams) { + const strippedURL = new URL(fullURL); + for (const param of ignoreParams) { + strippedURL.searchParams.delete(param); + } + return strippedURL.href; + } + /** + * Matches an item in the cache, ignoring specific URL params. This is similar + * to the `ignoreSearch` option, but it allows you to ignore just specific + * params (while continuing to match on the others). + * + * @private + * @param {Cache} cache + * @param {Request} request + * @param {Object} matchOptions + * @param {Array} ignoreParams + * @return {Promise} + */ + async function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) { + const strippedRequestURL = stripParams(request.url, ignoreParams); + // If the request doesn't include any ignored params, match as normal. + if (request.url === strippedRequestURL) { + return cache.match(request, matchOptions); + } + // Otherwise, match by comparing keys + const keysOptions = Object.assign(Object.assign({}, matchOptions), { + ignoreSearch: true + }); + const cacheKeys = await cache.keys(request, keysOptions); + for (const cacheKey of cacheKeys) { + const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams); + if (strippedRequestURL === strippedCacheKeyURL) { + return cache.match(cacheKey, matchOptions); + } + } + return; + } + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * The Deferred class composes Promises in a way that allows for them to be + * resolved or rejected from outside the constructor. In most cases promises + * should be used directly, but Deferreds can be necessary when the logic to + * resolve a promise must be separate. + * + * @private + */ + class Deferred { + /** + * Creates a promise and exposes its resolve and reject functions as methods. + */ + constructor() { + this.promise = new Promise((resolve, reject) => { + this.resolve = resolve; + this.reject = reject; + }); + } + } + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + // Callbacks to be executed whenever there's a quota error. + // Can't change Function type right now. + // eslint-disable-next-line @typescript-eslint/ban-types + const quotaErrorCallbacks = new Set(); + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Runs all of the callback functions, one at a time sequentially, in the order + * in which they were registered. + * + * @memberof workbox-core + * @private + */ + async function executeQuotaErrorCallbacks() { + { + logger.log(`About to run ${quotaErrorCallbacks.size} ` + `callbacks to clean up caches.`); + } + for (const callback of quotaErrorCallbacks) { + await callback(); + { + logger.log(callback, 'is complete.'); + } + } + { + logger.log('Finished running callbacks.'); + } + } + + /* + Copyright 2019 Google LLC + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Returns a promise that resolves and the passed number of milliseconds. + * This utility is an async/await-friendly version of `setTimeout`. + * + * @param {number} ms + * @return {Promise} + * @private + */ + function timeout(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + + // @ts-ignore + try { + self['workbox:strategies:7.0.0'] && _(); + } catch (e) {} + + /* + Copyright 2020 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + function toRequest(input) { + return typeof input === 'string' ? new Request(input) : input; + } + /** + * A class created every time a Strategy instance instance calls + * {@link workbox-strategies.Strategy~handle} or + * {@link workbox-strategies.Strategy~handleAll} that wraps all fetch and + * cache actions around plugin callbacks and keeps track of when the strategy + * is "done" (i.e. all added `event.waitUntil()` promises have resolved). + * + * @memberof workbox-strategies + */ + class StrategyHandler { + /** + * Creates a new instance associated with the passed strategy and event + * that's handling the request. + * + * The constructor also initializes the state that will be passed to each of + * the plugins handling this request. + * + * @param {workbox-strategies.Strategy} strategy + * @param {Object} options + * @param {Request|string} options.request A request to run this strategy for. + * @param {ExtendableEvent} options.event The event associated with the + * request. + * @param {URL} [options.url] + * @param {*} [options.params] The return value from the + * {@link workbox-routing~matchCallback} (if applicable). + */ + constructor(strategy, options) { + this._cacheKeys = {}; + /** + * The request the strategy is performing (passed to the strategy's + * `handle()` or `handleAll()` method). + * @name request + * @instance + * @type {Request} + * @memberof workbox-strategies.StrategyHandler + */ + /** + * The event associated with this request. + * @name event + * @instance + * @type {ExtendableEvent} + * @memberof workbox-strategies.StrategyHandler + */ + /** + * A `URL` instance of `request.url` (if passed to the strategy's + * `handle()` or `handleAll()` method). + * Note: the `url` param will be present if the strategy was invoked + * from a workbox `Route` object. + * @name url + * @instance + * @type {URL|undefined} + * @memberof workbox-strategies.StrategyHandler + */ + /** + * A `param` value (if passed to the strategy's + * `handle()` or `handleAll()` method). + * Note: the `param` param will be present if the strategy was invoked + * from a workbox `Route` object and the + * {@link workbox-routing~matchCallback} returned + * a truthy value (it will be that value). + * @name params + * @instance + * @type {*|undefined} + * @memberof workbox-strategies.StrategyHandler + */ + { + finalAssertExports.isInstance(options.event, ExtendableEvent, { + moduleName: 'workbox-strategies', + className: 'StrategyHandler', + funcName: 'constructor', + paramName: 'options.event' + }); + } + Object.assign(this, options); + this.event = options.event; + this._strategy = strategy; + this._handlerDeferred = new Deferred(); + this._extendLifetimePromises = []; + // Copy the plugins list (since it's mutable on the strategy), + // so any mutations don't affect this handler instance. + this._plugins = [...strategy.plugins]; + this._pluginStateMap = new Map(); + for (const plugin of this._plugins) { + this._pluginStateMap.set(plugin, {}); + } + this.event.waitUntil(this._handlerDeferred.promise); + } + /** + * Fetches a given request (and invokes any applicable plugin callback + * methods) using the `fetchOptions` (for non-navigation requests) and + * `plugins` defined on the `Strategy` object. + * + * The following plugin lifecycle methods are invoked when using this method: + * - `requestWillFetch()` + * - `fetchDidSucceed()` + * - `fetchDidFail()` + * + * @param {Request|string} input The URL or request to fetch. + * @return {Promise} + */ + async fetch(input) { + const { + event + } = this; + let request = toRequest(input); + if (request.mode === 'navigate' && event instanceof FetchEvent && event.preloadResponse) { + const possiblePreloadResponse = await event.preloadResponse; + if (possiblePreloadResponse) { + { + logger.log(`Using a preloaded navigation response for ` + `'${getFriendlyURL(request.url)}'`); + } + return possiblePreloadResponse; + } + } + // If there is a fetchDidFail plugin, we need to save a clone of the + // original request before it's either modified by a requestWillFetch + // plugin or before the original request's body is consumed via fetch(). + const originalRequest = this.hasCallback('fetchDidFail') ? request.clone() : null; + try { + for (const cb of this.iterateCallbacks('requestWillFetch')) { + request = await cb({ + request: request.clone(), + event + }); + } + } catch (err) { + if (err instanceof Error) { + throw new WorkboxError('plugin-error-request-will-fetch', { + thrownErrorMessage: err.message + }); + } + } + // The request can be altered by plugins with `requestWillFetch` making + // the original request (most likely from a `fetch` event) different + // from the Request we make. Pass both to `fetchDidFail` to aid debugging. + const pluginFilteredRequest = request.clone(); + try { + let fetchResponse; + // See https://github.com/GoogleChrome/workbox/issues/1796 + fetchResponse = await fetch(request, request.mode === 'navigate' ? undefined : this._strategy.fetchOptions); + if ("development" !== 'production') { + logger.debug(`Network request for ` + `'${getFriendlyURL(request.url)}' returned a response with ` + `status '${fetchResponse.status}'.`); + } + for (const callback of this.iterateCallbacks('fetchDidSucceed')) { + fetchResponse = await callback({ + event, + request: pluginFilteredRequest, + response: fetchResponse + }); + } + return fetchResponse; + } catch (error) { + { + logger.log(`Network request for ` + `'${getFriendlyURL(request.url)}' threw an error.`, error); + } + // `originalRequest` will only exist if a `fetchDidFail` callback + // is being used (see above). + if (originalRequest) { + await this.runCallbacks('fetchDidFail', { + error: error, + event, + originalRequest: originalRequest.clone(), + request: pluginFilteredRequest.clone() + }); + } + throw error; + } + } + /** + * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on + * the response generated by `this.fetch()`. + * + * The call to `this.cachePut()` automatically invokes `this.waitUntil()`, + * so you do not have to manually call `waitUntil()` on the event. + * + * @param {Request|string} input The request or URL to fetch and cache. + * @return {Promise} + */ + async fetchAndCachePut(input) { + const response = await this.fetch(input); + const responseClone = response.clone(); + void this.waitUntil(this.cachePut(input, responseClone)); + return response; + } + /** + * Matches a request from the cache (and invokes any applicable plugin + * callback methods) using the `cacheName`, `matchOptions`, and `plugins` + * defined on the strategy object. + * + * The following plugin lifecycle methods are invoked when using this method: + * - cacheKeyWillByUsed() + * - cachedResponseWillByUsed() + * + * @param {Request|string} key The Request or URL to use as the cache key. + * @return {Promise} A matching response, if found. + */ + async cacheMatch(key) { + const request = toRequest(key); + let cachedResponse; + const { + cacheName, + matchOptions + } = this._strategy; + const effectiveRequest = await this.getCacheKey(request, 'read'); + const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), { + cacheName + }); + cachedResponse = await caches.match(effectiveRequest, multiMatchOptions); + { + if (cachedResponse) { + logger.debug(`Found a cached response in '${cacheName}'.`); + } else { + logger.debug(`No cached response found in '${cacheName}'.`); + } + } + for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) { + cachedResponse = (await callback({ + cacheName, + matchOptions, + cachedResponse, + request: effectiveRequest, + event: this.event + })) || undefined; + } + return cachedResponse; + } + /** + * Puts a request/response pair in the cache (and invokes any applicable + * plugin callback methods) using the `cacheName` and `plugins` defined on + * the strategy object. + * + * The following plugin lifecycle methods are invoked when using this method: + * - cacheKeyWillByUsed() + * - cacheWillUpdate() + * - cacheDidUpdate() + * + * @param {Request|string} key The request or URL to use as the cache key. + * @param {Response} response The response to cache. + * @return {Promise} `false` if a cacheWillUpdate caused the response + * not be cached, and `true` otherwise. + */ + async cachePut(key, response) { + const request = toRequest(key); + // Run in the next task to avoid blocking other cache reads. + // https://github.com/w3c/ServiceWorker/issues/1397 + await timeout(0); + const effectiveRequest = await this.getCacheKey(request, 'write'); + { + if (effectiveRequest.method && effectiveRequest.method !== 'GET') { + throw new WorkboxError('attempt-to-cache-non-get-request', { + url: getFriendlyURL(effectiveRequest.url), + method: effectiveRequest.method + }); + } + // See https://github.com/GoogleChrome/workbox/issues/2818 + const vary = response.headers.get('Vary'); + if (vary) { + logger.debug(`The response for ${getFriendlyURL(effectiveRequest.url)} ` + `has a 'Vary: ${vary}' header. ` + `Consider setting the {ignoreVary: true} option on your strategy ` + `to ensure cache matching and deletion works as expected.`); + } + } + if (!response) { + { + logger.error(`Cannot cache non-existent response for ` + `'${getFriendlyURL(effectiveRequest.url)}'.`); + } + throw new WorkboxError('cache-put-with-no-response', { + url: getFriendlyURL(effectiveRequest.url) + }); + } + const responseToCache = await this._ensureResponseSafeToCache(response); + if (!responseToCache) { + { + logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` + `will not be cached.`, responseToCache); + } + return false; + } + const { + cacheName, + matchOptions + } = this._strategy; + const cache = await self.caches.open(cacheName); + const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate'); + const oldResponse = hasCacheUpdateCallback ? await cacheMatchIgnoreParams( + // TODO(philipwalton): the `__WB_REVISION__` param is a precaching + // feature. Consider into ways to only add this behavior if using + // precaching. + cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions) : null; + { + logger.debug(`Updating the '${cacheName}' cache with a new Response ` + `for ${getFriendlyURL(effectiveRequest.url)}.`); + } + try { + await cache.put(effectiveRequest, hasCacheUpdateCallback ? responseToCache.clone() : responseToCache); + } catch (error) { + if (error instanceof Error) { + // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError + if (error.name === 'QuotaExceededError') { + await executeQuotaErrorCallbacks(); + } + throw error; + } + } + for (const callback of this.iterateCallbacks('cacheDidUpdate')) { + await callback({ + cacheName, + oldResponse, + newResponse: responseToCache.clone(), + request: effectiveRequest, + event: this.event + }); + } + return true; + } + /** + * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and + * executes any of those callbacks found in sequence. The final `Request` + * object returned by the last plugin is treated as the cache key for cache + * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have + * been registered, the passed request is returned unmodified + * + * @param {Request} request + * @param {string} mode + * @return {Promise} + */ + async getCacheKey(request, mode) { + const key = `${request.url} | ${mode}`; + if (!this._cacheKeys[key]) { + let effectiveRequest = request; + for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) { + effectiveRequest = toRequest(await callback({ + mode, + request: effectiveRequest, + event: this.event, + // params has a type any can't change right now. + params: this.params // eslint-disable-line + })); + } + this._cacheKeys[key] = effectiveRequest; + } + return this._cacheKeys[key]; + } + /** + * Returns true if the strategy has at least one plugin with the given + * callback. + * + * @param {string} name The name of the callback to check for. + * @return {boolean} + */ + hasCallback(name) { + for (const plugin of this._strategy.plugins) { + if (name in plugin) { + return true; + } + } + return false; + } + /** + * Runs all plugin callbacks matching the given name, in order, passing the + * given param object (merged ith the current plugin state) as the only + * argument. + * + * Note: since this method runs all plugins, it's not suitable for cases + * where the return value of a callback needs to be applied prior to calling + * the next callback. See + * {@link workbox-strategies.StrategyHandler#iterateCallbacks} + * below for how to handle that case. + * + * @param {string} name The name of the callback to run within each plugin. + * @param {Object} param The object to pass as the first (and only) param + * when executing each callback. This object will be merged with the + * current plugin state prior to callback execution. + */ + async runCallbacks(name, param) { + for (const callback of this.iterateCallbacks(name)) { + // TODO(philipwalton): not sure why `any` is needed. It seems like + // this should work with `as WorkboxPluginCallbackParam[C]`. + await callback(param); + } + } + /** + * Accepts a callback and returns an iterable of matching plugin callbacks, + * where each callback is wrapped with the current handler state (i.e. when + * you call each callback, whatever object parameter you pass it will + * be merged with the plugin's current state). + * + * @param {string} name The name fo the callback to run + * @return {Array} + */ + *iterateCallbacks(name) { + for (const plugin of this._strategy.plugins) { + if (typeof plugin[name] === 'function') { + const state = this._pluginStateMap.get(plugin); + const statefulCallback = param => { + const statefulParam = Object.assign(Object.assign({}, param), { + state + }); + // TODO(philipwalton): not sure why `any` is needed. It seems like + // this should work with `as WorkboxPluginCallbackParam[C]`. + return plugin[name](statefulParam); + }; + yield statefulCallback; + } + } + } + /** + * Adds a promise to the + * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises} + * of the event event associated with the request being handled (usually a + * `FetchEvent`). + * + * Note: you can await + * {@link workbox-strategies.StrategyHandler~doneWaiting} + * to know when all added promises have settled. + * + * @param {Promise} promise A promise to add to the extend lifetime promises + * of the event that triggered the request. + */ + waitUntil(promise) { + this._extendLifetimePromises.push(promise); + return promise; + } + /** + * Returns a promise that resolves once all promises passed to + * {@link workbox-strategies.StrategyHandler~waitUntil} + * have settled. + * + * Note: any work done after `doneWaiting()` settles should be manually + * passed to an event's `waitUntil()` method (not this handler's + * `waitUntil()` method), otherwise the service worker thread my be killed + * prior to your work completing. + */ + async doneWaiting() { + let promise; + while (promise = this._extendLifetimePromises.shift()) { + await promise; + } + } + /** + * Stops running the strategy and immediately resolves any pending + * `waitUntil()` promises. + */ + destroy() { + this._handlerDeferred.resolve(null); + } + /** + * This method will call cacheWillUpdate on the available plugins (or use + * status === 200) to determine if the Response is safe and valid to cache. + * + * @param {Request} options.request + * @param {Response} options.response + * @return {Promise} + * + * @private + */ + async _ensureResponseSafeToCache(response) { + let responseToCache = response; + let pluginsUsed = false; + for (const callback of this.iterateCallbacks('cacheWillUpdate')) { + responseToCache = (await callback({ + request: this.request, + response: responseToCache, + event: this.event + })) || undefined; + pluginsUsed = true; + if (!responseToCache) { + break; + } + } + if (!pluginsUsed) { + if (responseToCache && responseToCache.status !== 200) { + responseToCache = undefined; + } + { + if (responseToCache) { + if (responseToCache.status !== 200) { + if (responseToCache.status === 0) { + logger.warn(`The response for '${this.request.url}' ` + `is an opaque response. The caching strategy that you're ` + `using will not cache opaque responses by default.`); + } else { + logger.debug(`The response for '${this.request.url}' ` + `returned a status code of '${response.status}' and won't ` + `be cached as a result.`); + } + } + } + } + } + return responseToCache; + } + } + + /* + Copyright 2020 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * An abstract base class that all other strategy classes must extend from: + * + * @memberof workbox-strategies + */ + class Strategy { + /** + * Creates a new instance of the strategy and sets all documented option + * properties as public instance properties. + * + * Note: if a custom strategy class extends the base Strategy class and does + * not need more than these properties, it does not need to define its own + * constructor. + * + * @param {Object} [options] + * @param {string} [options.cacheName] Cache name to store and retrieve + * requests. Defaults to the cache names provided by + * {@link workbox-core.cacheNames}. + * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins} + * to use in conjunction with this caching strategy. + * @param {Object} [options.fetchOptions] Values passed along to the + * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters) + * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796) + * `fetch()` requests made by this strategy. + * @param {Object} [options.matchOptions] The + * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions} + * for any `cache.match()` or `cache.put()` calls made by this strategy. + */ + constructor(options = {}) { + /** + * Cache name to store and retrieve + * requests. Defaults to the cache names provided by + * {@link workbox-core.cacheNames}. + * + * @type {string} + */ + this.cacheName = cacheNames.getRuntimeName(options.cacheName); + /** + * The list + * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins} + * used by this strategy. + * + * @type {Array} + */ + this.plugins = options.plugins || []; + /** + * Values passed along to the + * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters} + * of all fetch() requests made by this strategy. + * + * @type {Object} + */ + this.fetchOptions = options.fetchOptions; + /** + * The + * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions} + * for any `cache.match()` or `cache.put()` calls made by this strategy. + * + * @type {Object} + */ + this.matchOptions = options.matchOptions; + } + /** + * Perform a request strategy and returns a `Promise` that will resolve with + * a `Response`, invoking all relevant plugin callbacks. + * + * When a strategy instance is registered with a Workbox + * {@link workbox-routing.Route}, this method is automatically + * called when the route matches. + * + * Alternatively, this method can be used in a standalone `FetchEvent` + * listener by passing it to `event.respondWith()`. + * + * @param {FetchEvent|Object} options A `FetchEvent` or an object with the + * properties listed below. + * @param {Request|string} options.request A request to run this strategy for. + * @param {ExtendableEvent} options.event The event associated with the + * request. + * @param {URL} [options.url] + * @param {*} [options.params] + */ + handle(options) { + const [responseDone] = this.handleAll(options); + return responseDone; + } + /** + * Similar to {@link workbox-strategies.Strategy~handle}, but + * instead of just returning a `Promise` that resolves to a `Response` it + * it will return an tuple of `[response, done]` promises, where the former + * (`response`) is equivalent to what `handle()` returns, and the latter is a + * Promise that will resolve once any promises that were added to + * `event.waitUntil()` as part of performing the strategy have completed. + * + * You can await the `done` promise to ensure any extra work performed by + * the strategy (usually caching responses) completes successfully. + * + * @param {FetchEvent|Object} options A `FetchEvent` or an object with the + * properties listed below. + * @param {Request|string} options.request A request to run this strategy for. + * @param {ExtendableEvent} options.event The event associated with the + * request. + * @param {URL} [options.url] + * @param {*} [options.params] + * @return {Array} A tuple of [response, done] + * promises that can be used to determine when the response resolves as + * well as when the handler has completed all its work. + */ + handleAll(options) { + // Allow for flexible options to be passed. + if (options instanceof FetchEvent) { + options = { + event: options, + request: options.request + }; + } + const event = options.event; + const request = typeof options.request === 'string' ? new Request(options.request) : options.request; + const params = 'params' in options ? options.params : undefined; + const handler = new StrategyHandler(this, { + event, + request, + params + }); + const responseDone = this._getResponse(handler, request, event); + const handlerDone = this._awaitComplete(responseDone, handler, request, event); + // Return an array of promises, suitable for use with Promise.all(). + return [responseDone, handlerDone]; + } + async _getResponse(handler, request, event) { + await handler.runCallbacks('handlerWillStart', { + event, + request + }); + let response = undefined; + try { + response = await this._handle(request, handler); + // The "official" Strategy subclasses all throw this error automatically, + // but in case a third-party Strategy doesn't, ensure that we have a + // consistent failure when there's no response or an error response. + if (!response || response.type === 'error') { + throw new WorkboxError('no-response', { + url: request.url + }); + } + } catch (error) { + if (error instanceof Error) { + for (const callback of handler.iterateCallbacks('handlerDidError')) { + response = await callback({ + error, + event, + request + }); + if (response) { + break; + } + } + } + if (!response) { + throw error; + } else { + logger.log(`While responding to '${getFriendlyURL(request.url)}', ` + `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` + `a handlerDidError plugin.`); + } + } + for (const callback of handler.iterateCallbacks('handlerWillRespond')) { + response = await callback({ + event, + request, + response + }); + } + return response; + } + async _awaitComplete(responseDone, handler, request, event) { + let response; + let error; + try { + response = await responseDone; + } catch (error) { + // Ignore errors, as response errors should be caught via the `response` + // promise above. The `done` promise will only throw for errors in + // promises passed to `handler.waitUntil()`. + } + try { + await handler.runCallbacks('handlerDidRespond', { + event, + request, + response + }); + await handler.doneWaiting(); + } catch (waitUntilError) { + if (waitUntilError instanceof Error) { + error = waitUntilError; + } + } + await handler.runCallbacks('handlerDidComplete', { + event, + request, + response, + error: error + }); + handler.destroy(); + if (error) { + throw error; + } + } + } + /** + * Classes extending the `Strategy` based class should implement this method, + * and leverage the {@link workbox-strategies.StrategyHandler} + * arg to perform all fetching and cache logic, which will ensure all relevant + * cache, cache options, fetch options and plugins are used (per the current + * strategy instance). + * + * @name _handle + * @instance + * @abstract + * @function + * @param {Request} request + * @param {workbox-strategies.StrategyHandler} handler + * @return {Promise} + * + * @memberof workbox-strategies.Strategy + */ + + /* + Copyright 2020 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * A {@link workbox-strategies.Strategy} implementation + * specifically designed to work with + * {@link workbox-precaching.PrecacheController} + * to both cache and fetch precached assets. + * + * Note: an instance of this class is created automatically when creating a + * `PrecacheController`; it's generally not necessary to create this yourself. + * + * @extends workbox-strategies.Strategy + * @memberof workbox-precaching + */ + class PrecacheStrategy extends Strategy { + /** + * + * @param {Object} [options] + * @param {string} [options.cacheName] Cache name to store and retrieve + * requests. Defaults to the cache names provided by + * {@link workbox-core.cacheNames}. + * @param {Array} [options.plugins] {@link https://developers.google.com/web/tools/workbox/guides/using-plugins|Plugins} + * to use in conjunction with this caching strategy. + * @param {Object} [options.fetchOptions] Values passed along to the + * {@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters|init} + * of all fetch() requests made by this strategy. + * @param {Object} [options.matchOptions] The + * {@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions|CacheQueryOptions} + * for any `cache.match()` or `cache.put()` calls made by this strategy. + * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to + * get the response from the network if there's a precache miss. + */ + constructor(options = {}) { + options.cacheName = cacheNames.getPrecacheName(options.cacheName); + super(options); + this._fallbackToNetwork = options.fallbackToNetwork === false ? false : true; + // Redirected responses cannot be used to satisfy a navigation request, so + // any redirected response must be "copied" rather than cloned, so the new + // response doesn't contain the `redirected` flag. See: + // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1 + this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin); + } + /** + * @private + * @param {Request|string} request A request to run this strategy for. + * @param {workbox-strategies.StrategyHandler} handler The event that + * triggered the request. + * @return {Promise} + */ + async _handle(request, handler) { + const response = await handler.cacheMatch(request); + if (response) { + return response; + } + // If this is an `install` event for an entry that isn't already cached, + // then populate the cache. + if (handler.event && handler.event.type === 'install') { + return await this._handleInstall(request, handler); + } + // Getting here means something went wrong. An entry that should have been + // precached wasn't found in the cache. + return await this._handleFetch(request, handler); + } + async _handleFetch(request, handler) { + let response; + const params = handler.params || {}; + // Fall back to the network if we're configured to do so. + if (this._fallbackToNetwork) { + { + logger.warn(`The precached response for ` + `${getFriendlyURL(request.url)} in ${this.cacheName} was not ` + `found. Falling back to the network.`); + } + const integrityInManifest = params.integrity; + const integrityInRequest = request.integrity; + const noIntegrityConflict = !integrityInRequest || integrityInRequest === integrityInManifest; + // Do not add integrity if the original request is no-cors + // See https://github.com/GoogleChrome/workbox/issues/3096 + response = await handler.fetch(new Request(request, { + integrity: request.mode !== 'no-cors' ? integrityInRequest || integrityInManifest : undefined + })); + // It's only "safe" to repair the cache if we're using SRI to guarantee + // that the response matches the precache manifest's expectations, + // and there's either a) no integrity property in the incoming request + // or b) there is an integrity, and it matches the precache manifest. + // See https://github.com/GoogleChrome/workbox/issues/2858 + // Also if the original request users no-cors we don't use integrity. + // See https://github.com/GoogleChrome/workbox/issues/3096 + if (integrityInManifest && noIntegrityConflict && request.mode !== 'no-cors') { + this._useDefaultCacheabilityPluginIfNeeded(); + const wasCached = await handler.cachePut(request, response.clone()); + { + if (wasCached) { + logger.log(`A response for ${getFriendlyURL(request.url)} ` + `was used to "repair" the precache.`); + } + } + } + } else { + // This shouldn't normally happen, but there are edge cases: + // https://github.com/GoogleChrome/workbox/issues/1441 + throw new WorkboxError('missing-precache-entry', { + cacheName: this.cacheName, + url: request.url + }); + } + { + const cacheKey = params.cacheKey || (await handler.getCacheKey(request, 'read')); + // Workbox is going to handle the route. + // print the routing details to the console. + logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(request.url)); + logger.log(`Serving the precached url: ${getFriendlyURL(cacheKey instanceof Request ? cacheKey.url : cacheKey)}`); + logger.groupCollapsed(`View request details here.`); + logger.log(request); + logger.groupEnd(); + logger.groupCollapsed(`View response details here.`); + logger.log(response); + logger.groupEnd(); + logger.groupEnd(); + } + return response; + } + async _handleInstall(request, handler) { + this._useDefaultCacheabilityPluginIfNeeded(); + const response = await handler.fetch(request); + // Make sure we defer cachePut() until after we know the response + // should be cached; see https://github.com/GoogleChrome/workbox/issues/2737 + const wasCached = await handler.cachePut(request, response.clone()); + if (!wasCached) { + // Throwing here will lead to the `install` handler failing, which + // we want to do if *any* of the responses aren't safe to cache. + throw new WorkboxError('bad-precaching-response', { + url: request.url, + status: response.status + }); + } + return response; + } + /** + * This method is complex, as there a number of things to account for: + * + * The `plugins` array can be set at construction, and/or it might be added to + * to at any time before the strategy is used. + * + * At the time the strategy is used (i.e. during an `install` event), there + * needs to be at least one plugin that implements `cacheWillUpdate` in the + * array, other than `copyRedirectedCacheableResponsesPlugin`. + * + * - If this method is called and there are no suitable `cacheWillUpdate` + * plugins, we need to add `defaultPrecacheCacheabilityPlugin`. + * + * - If this method is called and there is exactly one `cacheWillUpdate`, then + * we don't have to do anything (this might be a previously added + * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin). + * + * - If this method is called and there is more than one `cacheWillUpdate`, + * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so, + * we need to remove it. (This situation is unlikely, but it could happen if + * the strategy is used multiple times, the first without a `cacheWillUpdate`, + * and then later on after manually adding a custom `cacheWillUpdate`.) + * + * See https://github.com/GoogleChrome/workbox/issues/2737 for more context. + * + * @private + */ + _useDefaultCacheabilityPluginIfNeeded() { + let defaultPluginIndex = null; + let cacheWillUpdatePluginCount = 0; + for (const [index, plugin] of this.plugins.entries()) { + // Ignore the copy redirected plugin when determining what to do. + if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) { + continue; + } + // Save the default plugin's index, in case it needs to be removed. + if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) { + defaultPluginIndex = index; + } + if (plugin.cacheWillUpdate) { + cacheWillUpdatePluginCount++; + } + } + if (cacheWillUpdatePluginCount === 0) { + this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin); + } else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) { + // Only remove the default plugin; multiple custom plugins are allowed. + this.plugins.splice(defaultPluginIndex, 1); + } + // Nothing needs to be done if cacheWillUpdatePluginCount is 1 + } + } + PrecacheStrategy.defaultPrecacheCacheabilityPlugin = { + async cacheWillUpdate({ + response + }) { + if (!response || response.status >= 400) { + return null; + } + return response; + } + }; + PrecacheStrategy.copyRedirectedCacheableResponsesPlugin = { + async cacheWillUpdate({ + response + }) { + return response.redirected ? await copyResponse(response) : response; + } + }; + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Performs efficient precaching of assets. + * + * @memberof workbox-precaching + */ + class PrecacheController { + /** + * Create a new PrecacheController. + * + * @param {Object} [options] + * @param {string} [options.cacheName] The cache to use for precaching. + * @param {string} [options.plugins] Plugins to use when precaching as well + * as responding to fetch events for precached assets. + * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to + * get the response from the network if there's a precache miss. + */ + constructor({ + cacheName, + plugins = [], + fallbackToNetwork = true + } = {}) { + this._urlsToCacheKeys = new Map(); + this._urlsToCacheModes = new Map(); + this._cacheKeysToIntegrities = new Map(); + this._strategy = new PrecacheStrategy({ + cacheName: cacheNames.getPrecacheName(cacheName), + plugins: [...plugins, new PrecacheCacheKeyPlugin({ + precacheController: this + })], + fallbackToNetwork + }); + // Bind the install and activate methods to the instance. + this.install = this.install.bind(this); + this.activate = this.activate.bind(this); + } + /** + * @type {workbox-precaching.PrecacheStrategy} The strategy created by this controller and + * used to cache assets and respond to fetch events. + */ + get strategy() { + return this._strategy; + } + /** + * Adds items to the precache list, removing any duplicates and + * stores the files in the + * {@link workbox-core.cacheNames|"precache cache"} when the service + * worker installs. + * + * This method can be called multiple times. + * + * @param {Array} [entries=[]] Array of entries to precache. + */ + precache(entries) { + this.addToCacheList(entries); + if (!this._installAndActiveListenersAdded) { + self.addEventListener('install', this.install); + self.addEventListener('activate', this.activate); + this._installAndActiveListenersAdded = true; + } + } + /** + * This method will add items to the precache list, removing duplicates + * and ensuring the information is valid. + * + * @param {Array} entries + * Array of entries to precache. + */ + addToCacheList(entries) { + { + finalAssertExports.isArray(entries, { + moduleName: 'workbox-precaching', + className: 'PrecacheController', + funcName: 'addToCacheList', + paramName: 'entries' + }); + } + const urlsToWarnAbout = []; + for (const entry of entries) { + // See https://github.com/GoogleChrome/workbox/issues/2259 + if (typeof entry === 'string') { + urlsToWarnAbout.push(entry); + } else if (entry && entry.revision === undefined) { + urlsToWarnAbout.push(entry.url); + } + const { + cacheKey, + url + } = createCacheKey(entry); + const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default'; + if (this._urlsToCacheKeys.has(url) && this._urlsToCacheKeys.get(url) !== cacheKey) { + throw new WorkboxError('add-to-cache-list-conflicting-entries', { + firstEntry: this._urlsToCacheKeys.get(url), + secondEntry: cacheKey + }); + } + if (typeof entry !== 'string' && entry.integrity) { + if (this._cacheKeysToIntegrities.has(cacheKey) && this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) { + throw new WorkboxError('add-to-cache-list-conflicting-integrities', { + url + }); + } + this._cacheKeysToIntegrities.set(cacheKey, entry.integrity); + } + this._urlsToCacheKeys.set(url, cacheKey); + this._urlsToCacheModes.set(url, cacheMode); + if (urlsToWarnAbout.length > 0) { + const warningMessage = `Workbox is precaching URLs without revision ` + `info: ${urlsToWarnAbout.join(', ')}\nThis is generally NOT safe. ` + `Learn more at https://bit.ly/wb-precache`; + { + logger.warn(warningMessage); + } + } + } + } + /** + * Precaches new and updated assets. Call this method from the service worker + * install event. + * + * Note: this method calls `event.waitUntil()` for you, so you do not need + * to call it yourself in your event handlers. + * + * @param {ExtendableEvent} event + * @return {Promise} + */ + install(event) { + // waitUntil returns Promise + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return waitUntil(event, async () => { + const installReportPlugin = new PrecacheInstallReportPlugin(); + this.strategy.plugins.push(installReportPlugin); + // Cache entries one at a time. + // See https://github.com/GoogleChrome/workbox/issues/2528 + for (const [url, cacheKey] of this._urlsToCacheKeys) { + const integrity = this._cacheKeysToIntegrities.get(cacheKey); + const cacheMode = this._urlsToCacheModes.get(url); + const request = new Request(url, { + integrity, + cache: cacheMode, + credentials: 'same-origin' + }); + await Promise.all(this.strategy.handleAll({ + params: { + cacheKey + }, + request, + event + })); + } + const { + updatedURLs, + notUpdatedURLs + } = installReportPlugin; + { + printInstallDetails(updatedURLs, notUpdatedURLs); + } + return { + updatedURLs, + notUpdatedURLs + }; + }); + } + /** + * Deletes assets that are no longer present in the current precache manifest. + * Call this method from the service worker activate event. + * + * Note: this method calls `event.waitUntil()` for you, so you do not need + * to call it yourself in your event handlers. + * + * @param {ExtendableEvent} event + * @return {Promise} + */ + activate(event) { + // waitUntil returns Promise + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return waitUntil(event, async () => { + const cache = await self.caches.open(this.strategy.cacheName); + const currentlyCachedRequests = await cache.keys(); + const expectedCacheKeys = new Set(this._urlsToCacheKeys.values()); + const deletedURLs = []; + for (const request of currentlyCachedRequests) { + if (!expectedCacheKeys.has(request.url)) { + await cache.delete(request); + deletedURLs.push(request.url); + } + } + { + printCleanupDetails(deletedURLs); + } + return { + deletedURLs + }; + }); + } + /** + * Returns a mapping of a precached URL to the corresponding cache key, taking + * into account the revision information for the URL. + * + * @return {Map} A URL to cache key mapping. + */ + getURLsToCacheKeys() { + return this._urlsToCacheKeys; + } + /** + * Returns a list of all the URLs that have been precached by the current + * service worker. + * + * @return {Array} The precached URLs. + */ + getCachedURLs() { + return [...this._urlsToCacheKeys.keys()]; + } + /** + * Returns the cache key used for storing a given URL. If that URL is + * unversioned, like `/index.html', then the cache key will be the original + * URL with a search parameter appended to it. + * + * @param {string} url A URL whose cache key you want to look up. + * @return {string} The versioned URL that corresponds to a cache key + * for the original URL, or undefined if that URL isn't precached. + */ + getCacheKeyForURL(url) { + const urlObject = new URL(url, location.href); + return this._urlsToCacheKeys.get(urlObject.href); + } + /** + * @param {string} url A cache key whose SRI you want to look up. + * @return {string} The subresource integrity associated with the cache key, + * or undefined if it's not set. + */ + getIntegrityForCacheKey(cacheKey) { + return this._cacheKeysToIntegrities.get(cacheKey); + } + /** + * This acts as a drop-in replacement for + * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match) + * with the following differences: + * + * - It knows what the name of the precache is, and only checks in that cache. + * - It allows you to pass in an "original" URL without versioning parameters, + * and it will automatically look up the correct cache key for the currently + * active revision of that URL. + * + * E.g., `matchPrecache('index.html')` will find the correct precached + * response for the currently active service worker, even if the actual cache + * key is `'/index.html?__WB_REVISION__=1234abcd'`. + * + * @param {string|Request} request The key (without revisioning parameters) + * to look up in the precache. + * @return {Promise} + */ + async matchPrecache(request) { + const url = request instanceof Request ? request.url : request; + const cacheKey = this.getCacheKeyForURL(url); + if (cacheKey) { + const cache = await self.caches.open(this.strategy.cacheName); + return cache.match(cacheKey); + } + return undefined; + } + /** + * Returns a function that looks up `url` in the precache (taking into + * account revision information), and returns the corresponding `Response`. + * + * @param {string} url The precached URL which will be used to lookup the + * `Response`. + * @return {workbox-routing~handlerCallback} + */ + createHandlerBoundToURL(url) { + const cacheKey = this.getCacheKeyForURL(url); + if (!cacheKey) { + throw new WorkboxError('non-precached-url', { + url + }); + } + return options => { + options.request = new Request(url); + options.params = Object.assign({ + cacheKey + }, options.params); + return this.strategy.handle(options); + }; + } + } + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + let precacheController; + /** + * @return {PrecacheController} + * @private + */ + const getOrCreatePrecacheController = () => { + if (!precacheController) { + precacheController = new PrecacheController(); + } + return precacheController; + }; + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Removes any URL search parameters that should be ignored. + * + * @param {URL} urlObject The original URL. + * @param {Array} ignoreURLParametersMatching RegExps to test against + * each search parameter name. Matches mean that the search parameter should be + * ignored. + * @return {URL} The URL with any ignored search parameters removed. + * + * @private + * @memberof workbox-precaching + */ + function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) { + // Convert the iterable into an array at the start of the loop to make sure + // deletion doesn't mess up iteration. + for (const paramName of [...urlObject.searchParams.keys()]) { + if (ignoreURLParametersMatching.some(regExp => regExp.test(paramName))) { + urlObject.searchParams.delete(paramName); + } + } + return urlObject; + } + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Generator function that yields possible variations on the original URL to + * check, one at a time. + * + * @param {string} url + * @param {Object} options + * + * @private + * @memberof workbox-precaching + */ + function* generateURLVariations(url, { + ignoreURLParametersMatching = [/^utm_/, /^fbclid$/], + directoryIndex = 'index.html', + cleanURLs = true, + urlManipulation + } = {}) { + const urlObject = new URL(url, location.href); + urlObject.hash = ''; + yield urlObject.href; + const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching); + yield urlWithoutIgnoredParams.href; + if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) { + const directoryURL = new URL(urlWithoutIgnoredParams.href); + directoryURL.pathname += directoryIndex; + yield directoryURL.href; + } + if (cleanURLs) { + const cleanURL = new URL(urlWithoutIgnoredParams.href); + cleanURL.pathname += '.html'; + yield cleanURL.href; + } + if (urlManipulation) { + const additionalURLs = urlManipulation({ + url: urlObject + }); + for (const urlToAttempt of additionalURLs) { + yield urlToAttempt.href; + } + } + } + + /* + Copyright 2020 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * A subclass of {@link workbox-routing.Route} that takes a + * {@link workbox-precaching.PrecacheController} + * instance and uses it to match incoming requests and handle fetching + * responses from the precache. + * + * @memberof workbox-precaching + * @extends workbox-routing.Route + */ + class PrecacheRoute extends Route { + /** + * @param {PrecacheController} precacheController A `PrecacheController` + * instance used to both match requests and respond to fetch events. + * @param {Object} [options] Options to control how requests are matched + * against the list of precached URLs. + * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will + * check cache entries for a URLs ending with '/' to see if there is a hit when + * appending the `directoryIndex` value. + * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An + * array of regex's to remove search params when looking for a cache match. + * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will + * check the cache for the URL with a `.html` added to the end of the end. + * @param {workbox-precaching~urlManipulation} [options.urlManipulation] + * This is a function that should take a URL and return an array of + * alternative URLs that should be checked for precache matches. + */ + constructor(precacheController, options) { + const match = ({ + request + }) => { + const urlsToCacheKeys = precacheController.getURLsToCacheKeys(); + for (const possibleURL of generateURLVariations(request.url, options)) { + const cacheKey = urlsToCacheKeys.get(possibleURL); + if (cacheKey) { + const integrity = precacheController.getIntegrityForCacheKey(cacheKey); + return { + cacheKey, + integrity + }; + } + } + { + logger.debug(`Precaching did not find a match for ` + getFriendlyURL(request.url)); + } + return; + }; + super(match, precacheController.strategy); + } + } + + /* + Copyright 2019 Google LLC + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Add a `fetch` listener to the service worker that will + * respond to + * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests} + * with precached assets. + * + * Requests for assets that aren't precached, the `FetchEvent` will not be + * responded to, allowing the event to fall through to other `fetch` event + * listeners. + * + * @param {Object} [options] See the {@link workbox-precaching.PrecacheRoute} + * options. + * + * @memberof workbox-precaching + */ + function addRoute(options) { + const precacheController = getOrCreatePrecacheController(); + const precacheRoute = new PrecacheRoute(precacheController, options); + registerRoute(precacheRoute); + } + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Adds items to the precache list, removing any duplicates and + * stores the files in the + * {@link workbox-core.cacheNames|"precache cache"} when the service + * worker installs. + * + * This method can be called multiple times. + * + * Please note: This method **will not** serve any of the cached files for you. + * It only precaches files. To respond to a network request you call + * {@link workbox-precaching.addRoute}. + * + * If you have a single array of files to precache, you can just call + * {@link workbox-precaching.precacheAndRoute}. + * + * @param {Array} [entries=[]] Array of entries to precache. + * + * @memberof workbox-precaching + */ + function precache(entries) { + const precacheController = getOrCreatePrecacheController(); + precacheController.precache(entries); + } + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * This method will add entries to the precache list and add a route to + * respond to fetch events. + * + * This is a convenience method that will call + * {@link workbox-precaching.precache} and + * {@link workbox-precaching.addRoute} in a single call. + * + * @param {Array} entries Array of entries to precache. + * @param {Object} [options] See the + * {@link workbox-precaching.PrecacheRoute} options. + * + * @memberof workbox-precaching + */ + function precacheAndRoute(entries, options) { + precache(entries); + addRoute(options); + } + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + const SUBSTRING_TO_FIND = '-precache-'; + /** + * Cleans up incompatible precaches that were created by older versions of + * Workbox, by a service worker registered under the current scope. + * + * This is meant to be called as part of the `activate` event. + * + * This should be safe to use as long as you don't include `substringToFind` + * (defaulting to `-precache-`) in your non-precache cache names. + * + * @param {string} currentPrecacheName The cache name currently in use for + * precaching. This cache won't be deleted. + * @param {string} [substringToFind='-precache-'] Cache names which include this + * substring will be deleted (excluding `currentPrecacheName`). + * @return {Array} A list of all the cache names that were deleted. + * + * @private + * @memberof workbox-precaching + */ + const deleteOutdatedCaches = async (currentPrecacheName, substringToFind = SUBSTRING_TO_FIND) => { + const cacheNames = await self.caches.keys(); + const cacheNamesToDelete = cacheNames.filter(cacheName => { + return cacheName.includes(substringToFind) && cacheName.includes(self.registration.scope) && cacheName !== currentPrecacheName; + }); + await Promise.all(cacheNamesToDelete.map(cacheName => self.caches.delete(cacheName))); + return cacheNamesToDelete; + }; + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Adds an `activate` event listener which will clean up incompatible + * precaches that were created by older versions of Workbox. + * + * @memberof workbox-precaching + */ + function cleanupOutdatedCaches() { + // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705 + self.addEventListener('activate', event => { + const cacheName = cacheNames.getPrecacheName(); + event.waitUntil(deleteOutdatedCaches(cacheName).then(cachesDeleted => { + { + if (cachesDeleted.length > 0) { + logger.log(`The following out-of-date precaches were cleaned up ` + `automatically:`, cachesDeleted); + } + } + })); + }); + } + + /* + Copyright 2018 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * NavigationRoute makes it easy to create a + * {@link workbox-routing.Route} that matches for browser + * [navigation requests]{@link https://developers.google.com/web/fundamentals/primers/service-workers/high-performance-loading#first_what_are_navigation_requests}. + * + * It will only match incoming Requests whose + * {@link https://fetch.spec.whatwg.org/#concept-request-mode|mode} + * is set to `navigate`. + * + * You can optionally only apply this route to a subset of navigation requests + * by using one or both of the `denylist` and `allowlist` parameters. + * + * @memberof workbox-routing + * @extends workbox-routing.Route + */ + class NavigationRoute extends Route { + /** + * If both `denylist` and `allowlist` are provided, the `denylist` will + * take precedence and the request will not match this route. + * + * The regular expressions in `allowlist` and `denylist` + * are matched against the concatenated + * [`pathname`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/pathname} + * and [`search`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search} + * portions of the requested URL. + * + * *Note*: These RegExps may be evaluated against every destination URL during + * a navigation. Avoid using + * [complex RegExps](https://github.com/GoogleChrome/workbox/issues/3077), + * or else your users may see delays when navigating your site. + * + * @param {workbox-routing~handlerCallback} handler A callback + * function that returns a Promise resulting in a Response. + * @param {Object} options + * @param {Array} [options.denylist] If any of these patterns match, + * the route will not handle the request (even if a allowlist RegExp matches). + * @param {Array} [options.allowlist=[/./]] If any of these patterns + * match the URL's pathname and search parameter, the route will handle the + * request (assuming the denylist doesn't match). + */ + constructor(handler, { + allowlist = [/./], + denylist = [] + } = {}) { + { + finalAssertExports.isArrayOfClass(allowlist, RegExp, { + moduleName: 'workbox-routing', + className: 'NavigationRoute', + funcName: 'constructor', + paramName: 'options.allowlist' + }); + finalAssertExports.isArrayOfClass(denylist, RegExp, { + moduleName: 'workbox-routing', + className: 'NavigationRoute', + funcName: 'constructor', + paramName: 'options.denylist' + }); + } + super(options => this._match(options), handler); + this._allowlist = allowlist; + this._denylist = denylist; + } + /** + * Routes match handler. + * + * @param {Object} options + * @param {URL} options.url + * @param {Request} options.request + * @return {boolean} + * + * @private + */ + _match({ + url, + request + }) { + if (request && request.mode !== 'navigate') { + return false; + } + const pathnameAndSearch = url.pathname + url.search; + for (const regExp of this._denylist) { + if (regExp.test(pathnameAndSearch)) { + { + logger.log(`The navigation route ${pathnameAndSearch} is not ` + `being used, since the URL matches this denylist pattern: ` + `${regExp.toString()}`); + } + return false; + } + } + if (this._allowlist.some(regExp => regExp.test(pathnameAndSearch))) { + { + logger.debug(`The navigation route ${pathnameAndSearch} ` + `is being used.`); + } + return true; + } + { + logger.log(`The navigation route ${pathnameAndSearch} is not ` + `being used, since the URL being navigated to doesn't ` + `match the allowlist.`); + } + return false; + } + } + + /* + Copyright 2019 Google LLC + + Use of this source code is governed by an MIT-style + license that can be found in the LICENSE file or at + https://opensource.org/licenses/MIT. + */ + /** + * Helper function that calls + * {@link PrecacheController#createHandlerBoundToURL} on the default + * {@link PrecacheController} instance. + * + * If you are creating your own {@link PrecacheController}, then call the + * {@link PrecacheController#createHandlerBoundToURL} on that instance, + * instead of using this function. + * + * @param {string} url The precached URL which will be used to lookup the + * `Response`. + * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the + * response from the network if there's a precache miss. + * @return {workbox-routing~handlerCallback} + * + * @memberof workbox-precaching + */ + function createHandlerBoundToURL(url) { + const precacheController = getOrCreatePrecacheController(); + return precacheController.createHandlerBoundToURL(url); + } + + exports.NavigationRoute = NavigationRoute; + exports.cleanupOutdatedCaches = cleanupOutdatedCaches; + exports.clientsClaim = clientsClaim; + exports.createHandlerBoundToURL = createHandlerBoundToURL; + exports.precacheAndRoute = precacheAndRoute; + exports.registerRoute = registerRoute; + +}));

    ZW z>LvWci|0Ys_~}zA<#r!FpYB||^on+Us`%f%qy+jTHN#5H_iqB-3Ph=a%NV&Ad-gHw zl4kvsk9?lBv!OO#qTiYn;vKECa%fn4tT|~nfbKPSY6FQp8|vk7r?}G(%x$_VOxJ)1tWAXy zcO*??y!+8dxoc9|2dW^~GN;B|U287!Nm=LIaJ|ooF+aLwJ~NGa1&q?uVsgUYS0mKc z^NMXa(-R0U<;Xo`mUgC|{_3V_zm68nk4b20hpwkRQkMb*pZZl2rg(>RoxTxgS~q>5 zb7#x}f7-3WFBmEwNSeWAM6RG)CF_BlV(;Q7?x!tD9MS)>b17=hXlnJg>danU(&=^r z-)3(3ih3{goV}bHi+zaagq6RWx_bm``PwSmsO_Yvdpio+qC;yl?_p;yv+s7FpwBj+ zQai?Me5wWN2(b*{1y)CJlZqTYJZ35$0sP!^-i64 z`d(46qTZAIEg zkrG#q7P)*}dk)#g;1erffjC^O)0hAQnxgE(`z}fm7Ix$@FIwC;_oNa zQb&n&LZp+=b$_xc{dgqZKj`Ci-p9j(Ryc}Wu~;G%Dtxnv98OyN+DAJgu2V;>(~qs& zkMFpj*r+4-hRg21{p371)eP8HBbcxVziL&b4fi2d@`LnFB1U$xu*{2mR8p>ft_poh zSMe{nu_Rcv;3^rP@5-rh|9xug(~ls?I)#9qyBhPnOY%II$Co)f@D+Kv_-R{h zXnyH(AMtPjD&-$N=K_KvHgl>^4Qkuj!*!WJ;SH=1X9TjeBd-x-1AbEA=ZaACwu*`O z0>$QkuFPMm%7?1@#NE3ripz13?~-Ww-aowBr@cqTsggA3 z3*J}p+tOY*WsqHRX2`&Z9p9#Ro4ul0WWTiGS|uwMo;BEVjY$vB+Ym)-U6|ZqF;3$! zrN(UN4VB^Vp_&@OB&0&+WJq@9)n3uzf+f zznj$JjkJc79b(a6waK(YWIRJ!Az;Yhj+_A5DxQ;Kv6B~B21}U1912nRRMCh4kTHon zgbPU{0EAg->BR!bLNdrCvr;(nAvdf6$s-c7u*ozhQK>)$bE0}2sB+FpRM6te|9d$z zsI5ztZ;OpjIolBaY**(tM0%96Ey=yE_lNV?pF1vK9eCUcm|=EY0VN(v_@u(f(o4}T zDPatNGza`q^$)!d@XiKafG`2@@smOcv1e`|<84JnJ<$xy@d428$9~ES%Y{8c)7c^n zCH|?WB}1}yOj(oly=x^m+d|brlb`{e)F_{pX_W>XA3CIEa{FgYkrY``lAH5~dex~$_1`jOy7Z>Rpw0O{g&wfc8 zQ=iC8D4!jalOX>Fj04tz^xgg$v?*Z*31uAo@4$U-n?rDBUjS!7h(YY2#tQ$g;|q`r z6c%wSK>q>Ig@9dl3le8G5Au%?{(s&QOGwMY?0V1x?*aY^;4c7v0ez8T2t?=ziU<*Q zMO}m4;J1V=b6XHD85m<@a-6rmf|5WzKtBLaw>$69b&G*`@%w?2Zjkc6QO@>=?2gJu zMR{rB{F(XX^z=(DJg1{C4X|8La0Q*-*h>dA!_qQDU=a$>G17i^XM`|v+iBl(Iv zYKMTn2yGB%@URuq#LNm(UQD`(h0j;Ag2v$b`0g3dRV!}5!n zTEcQZP5dOYHo4Ry7aVg&nCFwJ2=gMA7n7(ac8`;5MfKxIOA+d#TpcGn)LMvumjl_h zo=TuG8$p7Bf?;A&ZWQJu%%NpI#B&ojr;fSBGH2qv7l(3@jmyn)W{liT=O16Sw9;6L z{+-oC>l{M`sr;;@i}Pi}QD426)og?M6l$x zS285gwp@ILu`&NdHn$V;c6%=3-X!G9AXa1=cvs@ZL_|Vzr9F`=Ah$kY%Ji~+lH_D= zL7O9Z_ZSs!;N;Rya`B7GUm$`~Ji@B)bdN(}y-bR7g;nIr$RbUF^}8O`al0rNtw&g9LmFGLLJ}WJawYEuP%qpMa8&>OX((BGB7iL zav?s(?X2X)K#H-Ts&MCC_gC4>xZM`an()wF`FE zPdn)sjI?+bN3B7c4y#bF(PghHNxk}6vvN;Hv9F)~fUp=P%q3OF#j%NXp`xxh9l&44 z=jAvS{$#zW>(Kg?qqK&v&9m7?f77mxS$qJamj}TvR_Dm;DMFOQlcdEP`#VYx52Zox z-mW5ry3tedKXOK9e4(}cBy7K?kQR(iqc`g3o>c4aj!5&8Dy-LeO~M~!p(oxiu2*ho zLn9%w#gIoN#i!|qhQWk6#pSD%kD|;?in_(rx~ssH%rag?Sjw^?0W77Lz6RlQyIDF6 zJtPH865f#Vfh;!wD{fUcKiApATY)Fe&3}eFxo$iE0yUeVWI=<02d`rfxL5(W8Fs#& zD|%!AIC-?{7S>{`YwSP(puevN~8bE$j8Jz9Ekdec7tG3laqtU^S2(R!)|IFZidr8 zM?Ea*~cX?!2l%ch2t}LH@d0Z>zRw?(&cvQi&qA_X^7*j~MH%?!Vm{?-F zxBBi%s!LWQvKy7tFNzyd(X@tmZZzX@Tb{P0yIXo%MwByDUZ8^EiY8{k;i2N8iQ%i^ z=I3y8RZ=4?%qcxrOT?;@#QKt{uBuaGJH6_0+swNcL+{P~?o~_`Dy-W}Ij@h=n5$$m zPtoC`@Ym^ek#5v99bXR=wJd zjkC{>G-$8y&Q^AI=k_wycCAiIO>0onge-b}zDm_Sv$$%Rk(O5D)@m)!-4Pb9g0h^u zVh2jIrA)hORnx4S@%M{8>DJ1qwA0qIT)o#W^aRELD#loE<*;gecZ7;xU5Y3uCuLxMY*o3kV_?;x+$zS;kApXLtMS$yDy3%qX zFNWaAY&g0y92u@ zQbSQ1ixw`%hGI1p=aS+zmtaRV{HoQ_OU}%)X#LBKwRe`NWyfuHEq*Pzj zXVW&bQTtMDwPtyPfwI0&(ghi4>tTYLV%}?Vd**`tkiz(DqP3o}&%U>P4c{lrKJboL z^hH{#Y32c&bC0Gi$z4)^L8>~3O-(n!s*Z?i)z}2Aa4%$Q34HV3-t;6~PAHrQ%^J{8?pu7zZ2WqILvIix5cu~< z2cS5?>}{Zqt>^b`6&34|EjYvDU1h5H-N!Qkr3KbR9i=&rdqxMYwJ0m9{g`QoK3J z?cQ5Vzb2bf7Il>LYlch)(|rSKi><>nC)z9uhdB=+A^FS0mScljN_~eq8=8idCM4_H zG{T8czae68BX6#A(^U_S-_%L17*8(OS4WSrha#&&T223QEl{~|7BfyaSz7=N42Lb> z%3JS(T`RT{dIlXGQ#j5jtzZBMTV?EOFgu|(rT=2*D1Wo5Xr!23jnWfO-Q)V}K` zQPAF~LWXiwq>i{&PH;LI(%};6myPrntCEkHhjpXzR-2Fb z;?5o{%&u2lp~a6=#+Yf+)B7V7QmmGvdM^_3J5kir`MNpE_bk-w@7%;%IkaWfWMdFa zI&~ZNV_lD@LhHQvD53w8J6|v>kiSdK*9hq4jh++qR_j;RT6dcOGoE5f( zq~yp`FeKufrjhV&sgVleT4Dqgp<$^YHUE{7hT^?!R9Z^$cSd|P<=|SYlvDI4_bb6x zBUNqy&2h9%Ys>FZe6p0@H=ko(*>F2F^hG3N#pa^oJW<}YvTQ#jp02r9yuaQ%V@$qf zF-TS58swLOSYUkM2Unw`XgE>f{4gPqssfm?bWjQ#u0=$U> z=Jc?I?J=zxqkVC^1)C?mTmKS4M9MvcSCCjBiVE>B8vdy<0&FPPkf)XE9zKE%O21G4yIA*H6;_4fUyD;Cwk#)oXq2pLv#nW zKCi?Bq0JBx(&sR;M_GIYVsuT}5`X3L?0#HUCIEfRY694F#>%4_U8i-?QcgI!EMm$b ze|F3!dvVx8aJI>fg4hLsYsLg=nX{3~4agk1r$@=A*_%tD?E}=XSD^TwKD=v zTbsGdLP#Hz5Kv-eM<|n~H}YOAR|fksLfmO+e(Bf_L$hkx8C9rVgb**Z#yVBTq_F`h zx7_~0Uy&l_(gGi`Do$>YtHgVtc=yFcWi^(RF7XDqC351j{-nWUU_hq-f-DWJURP`d zQl27WA&6oeim2D7*Rqs{fN&5ZS#{fIh`yD~MTVpH8+`BfQ;Mm&&BImP6~-L0j5^aG zpfQVy)3ozqs_zbK`E~|qW&^Mm;_uY#9MEC?0HP6vnN>K~GOq}+0D`(!D z_KhCJC4n&(Rv9mn#X)1YPbe6V0(KZ%QUk}{4@mO@D8+9?aNrDFW?~@uk-fB$7sXt2 zp!w|&*KrhF*4GZU2Ra}M3VYj}QWz|MKHtfai+Y0e3ltW3vB4Aw3>D!D%mkICL6Vqb zIFe5pBKQ*TWo!)tndBT=V_XknuGkqF8nHO-5G{60g) zG&u(uh-CmrXe@}S1_q@3x5jZolcBo?Q$_;a;)i2~87(XzdbV+Jgc^Q?^|&fDm~?<_ zgKV@dltBUpwhkDu+6Yx*ihJ3}f>ZtxMYD%v~@)Z4coYVX8t;{Z2RMDD zTg)1GWmmEBB z6)Unp=FYv;i`MeJ4N6T#?$DUoW_X7Vxx;g|155RgZrH-b6_n_zbndns7gfXw@I-_S z=99|J0_L&B2^6Xa5?Zwyn{A@`IVZcMG)JRy$?W0-Nt_t z3)w@ClC|O?A2jfk6wojb9xGDU@ob}0k-J~OXkyi4%n?*t6(Aeq=T4q}O~4&C)9pIp zSEf#5eBe&@86Y)2iI~s8zYsIvw$^eqxWjnmhv}Q}f2tUSb*-3WW-;wkMuR?5)9r0v z9Ou#4&U9%!-d)ea4s}6STGnrj282tVgI3cC&_yYIkm$fQf)739>1{wwLd=XRA%_Qr zgH%P%(qwyK$_2my@7VH^p|k!hPyE6Td1Quf${;A+o^S$0-F(RJ_M`r4S6_TD?O&YV z%6-pqEsgmp%T(~M<%hrK?={3V{GE>D!< z6Qdlgz)g~tye8quf|t1kRD+MdJ(zzer_XqFmGk1A>kSN8E3+A1l9xx{J=D$mTzj@p zAHI~COYX-r8k8uhroB2}RT4rsWerlyZgzAys8eaoj5})qIxjE!>Nez%0X7^uCbi^& z=z2u*@yu7B6PmT|~?rr(PMa8;)g!;T~!S^(GSvD7! zD4Z>Lz!lQ%JQ4g)Z^ z2G7<_%0*Fu1J+ER>Ss1H7})UdwHPg)5uxe+sN=y01JWxWOf|f&n$Jx%je+k3W>#W7 z=`b>@9*K8d1K1R%_F!BYQSUV-a=1bF2v^p#J ztp}B6;=xa<_LK;f4#(;8m1}416L3f)yyQt}q+Z3vnxnz6LzA>b@Nr}rfiV`{npCr_ z`fc}cAB$~fkc)&xgR6S|-?8fzxBtqZVq^q``rc(}hND0B__^CRI-QyU>w@Pa)?JO0 zbpid?-)3wku=Pz7EtEJLA*MEo0eoH-a9c9UFr~jCiTg@|U>ngiJ7zM!zZhkDwx3P} zY|>n?wnU8)5b-njb<9JlRPH&`cQXOg(&nNH;yP4^rfb{hAI=UHWeBO_M`36~qkhEV zT{xVFR9dT8N6(-4+f^tfq%eha8OW#0K01%+w8AoVg3kqCA+O`<>aE#<(xVl7Giu)Hr2v53$$PF_!5& zZ7c3aH_Be+GJ=ZDwvN3VD8xls0B8D|b`r;)enF_(- zh?E-F7uPBqy|2Km`ntwK_%w$Z=*eKKYrb*u8<&vwkG!J0hws8xOi zBr%OCi6aE@)zx|IQEI7Nx0Df^}3U)$Ma{Vq(ZUEejB!Hlk ztBXR&vMCKZ0B{FEHhFbP}_@MbbxQ!45l|k(`VSj14nL3`&|Vsv&j&- z8tluCu*-ER(Y*#K(m(O|n<=uvnRs$b{@*wk38N?yVp=K_A73UuQX9D+FDdzAy!ObG zKIz(8i>@#TrmL&&`%Ad&K3RFIb@@)a&bk^y+J3z{Gqbq5P2MMOc4?^9fOGKi;sA!utAc%nTXqcgS${X|TFu*Ad-$sq zhFwT(jgL!jE@zy^r~{0=zY(ZSsV zQ`j_Y@9&!riaF^!K=j%AFmxR;y2`+Fz<1Ecbqc4qR8~d+uCqUFQCIj!! zqyY|7ahrSJ`_YOsRb1*0bHIHMMx+ni?0LhAQ+H|}Pt)Pmf}_%nQY&WJQ&H->yMx}@ zhfxjolgyTaJO{g~<{Q+@u^v7aB~`v!{bpJ=a*i_hMPn`ioukjeCjXMY-L&?{QEx?2 z#RUTaf!#NyKHVApc^AC;%+z>4D(p{}SXDnid|0WX+xu}B+Ub~1^c~O4^nE&$(8UJg zJ|G9%>4WnbR|<0kG~uTRrWrKChU&N*b?oZ3Rw-y#$>}zI(AiLJ=LPxpb*K0Z&Ja3( zyHInY?i{sF@tnvEoSIO~+Q@=)LGW|Ws{kBh9L^8ZpW#XMp$P>ALk^B7=8bSju01;^ zb+WvZCFO8S0AWfV{V&x8B&O)Ki`Z+WZ~Up9q=>}a$GF%t-|aqH%N@?Y3i>MT#4WamuUyCCO{98U~66ci+clIow~>BEQfU?0HT55-qbHZRnE_4xIs zpT{(QR_aV;4d~;jTD&f`&85&^|%k%7#goXx-k|T<|RfdLzW{-Og^G>nF zCI!G;0KcpZ1p@%lfVgiTi2DGM{_YP){w9>^05Gw9wObXYv#cynnKyES9RSA!)-#2M42Vf_?cV^Yyhs`v!kM zd}o4GG5_`y3TQ{SwKWTyZ6ikVhrBW1?HnMytb8!v@-MH}+2jo;)ANxy3)_R^_a9sx z_l~-EwW*LV1#*_;EzT@N3)TjQK|Cpgqw@Cw8-{* z0gD%7j@&%fd)!sa1U_wPYr8X6b-`mDcljod`N2HJf%6kPHvPB3J;8!>A~EqXE@Y{g z6CZjnc=Zhdm5;o3)YDI@Nk2HsH}g>zNCJw7ZiNdxjqeWkP?LP}pSZF9#GhXhTKIkW z5woMIloEbX{OcTgZ^rJ+tkQs5{rH$OxVLDf>m=j65&8wXe0lfM+GsIuhmHz&}r-;QS2H`2B zZ>WD31Gy&v5L*INeNfJW(B!4kiRy58FDp!VqP)CzsxDNtwVfb2#RRfEFa@!(;>zWw zuMTEDdL4k_YIuJ^2;hWV1$z;sXh$sG*9MLC*s+sJGUTUcG8&E0L7@TyvE$WLM_gzd z+b^r(alXe?#1gTqQUi|SYYdlle;Ei^QHIYJXqWsw7s%Tx8#`iGnH(L)W$8=-KGlVl zNa^eh;_j0_;_3J^{-_WG#Qs3byg!Lgz{e}}Sk215(Myd;O#))?1je?2XU3B$0Qv8R zq8E^Yw!@-?mE*rluWuPFq&{p%9-)2@&ss4S<6lsy2FE$kqJH!5;C@Zg>VuT)kw1u!YRRmC0Or`)p2zHSM zX{*H#Z@tgT2U80I&fqAoE9Fs0)CgG3TR{O6M?sbD(CDXrZxOVxg9hp7%h@Yy)UVyw zm+QjDn3tU_{IEuz>yuao0tD7hJPK?=11v2AHoNZh?uRQff;YOtM=n+QtyrNncz!&w zT3TK@kw!{ihvlTEa!9N4pI~BnGm6`hI#hc=TjU*`<{stQCFI!&O#p|^*9`x)t4(Wy z3F;Ik2B!}MKp+HrNaBE|Uzyqj2@MMbyfCx6_~>%8yIVL60~8hj-v>~Kp|9;wK+#U* zFL45t4Jnih^{@drmtb17xrLn4kJ-@{HQtSy4hi>s!rBrz@!pbeI}&oV>YR@9%4&-3Rt?=aBr4)ISSS5C@&qbP z4g0X$8y?t&eKdUcLrS5_{8H2G?GW*Xh7gI_wx-V4#xD58$2lO=gAr*ZrvJQQFW7>b z$5+3C6liNo>RU4**zIhUir53-gWlciBcUWcD_%=4(Eu*C_E0MIP9Zgc4Mv^*4wk|c z2;5&79n{8(?aeABAB#zKJBlrB?DwQ7VT@Fk2{TUpuf zG}6PibvZuRozRiVt?sx|c4W#Z}yFEE%SRdFO@~o_}lfTz7_ln^rr2Bz@q$-mL1x zy3x7J{>+Mw@#3(yxB7>d7j?Od&H0tnKN4HFM5n=t*!=C=O5sebsj4Bt;)q`}zuwo) zyT~E6%#@(?-DZLXJy&?4+o(-sdaE_1#*+NziNz(|GSw1n3v2yZ*HJN$c{X$1NOj`U ztf2pBdhI;z_A@?T_pK5Ad``G`*f6D}q4MTg95Av4JQQ!6C;)L^A()2xE9$GrZ)z`* zy^dQFo_J;5F91D*@3o70zuTX4eWVN8YrVZsi5mhS@Y=+Nx>^x%u2&p=qx4I?SDxMO zVKnv(e%g8wLm8i(sr4|v5gW!Z3=(r6AxhRH9*PIzD%c^^&=CB%gK$c*ps)!<5pCbL z_Li^b>?dvv3G|X<06G12uFT z;p$oSfY@f!F6B-gi~ct(;LF7hc>*wmu%);2vy{a)qy;0KpsY~?(H56dHg6afP zD@84{fMkWI^hehu1;K(=<*7!$zq^j%tlaU@m>nPAQ4X$f*3>yQ`uk$#S0NT+GW(Ca zO3K?D#t-kjk=wf>6e;M{y_QrtI;+(EFD)Gdg6foC-`K;m9i+aHh!Ma(kc=dkKEl&gFhgMbe-*`lnr-2iwxiW*{))&xbQE3S0fHM%uxaBX3WVzq9zXWUYI zvah*FQs?%6V(M0Ah~xCi@@Nj+Y8}XJDM0M}K0C6YU;rXQl&fWd^&*NfWZcj}LiZC0 z=tmtX4WRYE+py2cwd9`c>(7;yYtDX3p1=G+&Ck!~Dv^@ttAEZHXKN=rV&o;C;o%ae zoN4K6+Lo3(V1KQ4Ix+phnV@-`oQ+LjeTm1cIZVd^G91_k}-f%WPbi87eC|98%^s*fGOUIFO zWqs_!P~mRNUPAo!w#)8U+q|MXWEgBd+w5u7J_m?>f0q|c0gB}Dch~gGSKfjJ_=aEhp#|nt%&>QFTC@8 zXXC?ju6C9MZmEw8dRu=jsF&`$y>%`DP_H9-xfGyCUSDvXl4wl-cDmgS03>Ort59v? zVoJFfd!SncXu1wygF{piccW=oWnB;(+p(+A#Ol)DANVEEf^lo|@APu|=z()Wkpuw< z!4b0dDb!XsU$fYs+9V+x;bF_mSA=Z-6@c2!aEzAa^ZX|SFA55(Tj7y>A<|A|@WrXW zuF0J=G3zmc-r0>I8Wc{vCG^X(tx?dv0Q67!1S``JegBmuCete&&^ zzpcCFM_aYc=L1Q3ZEhg$Pr+WypS*#K>XV{CjD2elJSM84IOsH&Dv2f>5CQ06)CHK& z#1GHwfbcJ`#m;^B9RG5*;^h8D`Gp_l?aad=hSDp3#g$VJ`DW?L13!t+qS~V%?D`4& z?<&)Ox*h%V*~4yoo0eD4akv{87jf%>7cs3jIPhMofZZW;mNCGVW!w^KN_1VB61zV- z`yMd_ft7RsjY8UVRNtwacfN=>?j9-HVBgB&rjq8U1u2WO8TlXpOq%|`tswq#R~7QM z^OJt_i$&zRW&-9B(04k3%PL*F!Kc8FsWw=Ag|+< zKv%%B6LX}BDS?z(<^wU?&fZdtwya}kt!KNPjvf~2tN>!oQvg{sK-eN%y~xVI%& zp@0?9?h{-eO#RL6K@kzHL4nP|!GZOyKH&_{*kr6@EZMV1$&T2cR|*v9#pFA8$iJM^ z%go(8uUrY3hcf^LxGnelB02Gu49;09FD5l_xpiK=G2oi1jZL_2A{;cX>r}7lBEmkm zz`*5q3-$zVz>&wl6FKM)I2GAEe56RTd$5Tq>UvF!RgQ@Ut z^#89d6gYITj0x-SXUbfxhs0mPi^oZXenQoou-Zcly#EmWcSvqFv;oF{gvGvA-dWgDzmnS=r*xjbjlqUZ@+H!u?5xg zCN1pkzD?eInXvtA!7(UH8qPI9;&Ph2 zqWrm=%q^3m+tS>k_&4*-6)KJj!CRxn!@>UT5hTyfA^+MeAih!2M`%}elA@^%GZ4V2 zpnEJQhIa9Gb8+?qW@4@s!zq*TwlTA+o2QGTt0&N#Uf#&rxIHn^ zsOJwc8t)$$?dyLcuu5iQT_)T1C2$?8+S@I!=B(WQW%xJAD%#6GBEk;+@diw2V zUI8K~z1uGxapJw1v!9EL8;r7HZx@^;B9T!>EcA#fzFp!RPQ|L& z_g}_h`3kW>7ps~XyD#&d>ich4`Cw1?kOvH>sHGF5;wDaI4`xL8Cb(L|fdO5*4Yx0~ zM819e_fPmB;yE{JL9m_;Dx9UJZjV-uRdCBK3RbsLSi&f%sM}u#$HYDm`>Y8A(h;*h zPfSf_;w(@JU&Dk0?wAA3(LX(1O|{I2dZ*6|D#AVQCmzu)rrML^@%3G zEmV8uN#xLkoMoTPqij+ZDLD}ii+ZA(T)(l(is-B|_is(8R>tQb^X>xW^1%W;1XfEL zO4`Us?ZSEeaDA)_`1!pH^Lpwn;tEYHTzwo}+;Kyme8c3gu~x`^ERaTs~5 z{g-#Ckxz)Z>38{Fx#=7%xl}R|NM8c1Zk_SIa@LXgv(mqM6>=+q?sZEiDh(Ei$SU4I zluq@D5=*CP?9;0VJzcKs9Cp){$Mod>L*7F*l- zCEDjYB}UpY5&?4G%Pua_G1n#$Z%2!ymCuMK_VSLG7H{StMSdDduD|3`#Y_zWfhf z>x9XC=bKG^s7%hRq5)G5Z%a|m?X>9E2gf)hR%GbY0<-%i>Bli8(?VcTt7+`J->FQq z=*yuxHkRd8qFMUAIsQP+!Bs;W<)Iy0$m`~THQ1J~&GLH9)InZ152V^*7P=Rt6wF-w zaL%sm>!4n?aPwlEv#6`5BiXzwk6wsZ&m#&oh0UjOx2o8mMPMLz=}$oVTp)Y_=4tH0})g^L{2~5(D4@0mS~Hao;~| z5S+E40jdX_;1Q<39>A{_Y2-UCNlABZlLOq&X-O|McXKs0<$!tcJC;D~hx=J3?jB~A z?p`L8)J|q5xwGn$?4L8MOdcSgg;_CDBJ1_N&N@o24#{@NVEk1t1-i=ov#7(D@<7rv zgFMa7TT35@R>O~DOXi;a4c6OQ)RE~`3EC}{uW0UIjk>^3;(q$Mh`gEz2OmA0o|%?8 zRxd3G%VtKH`|J8D$9}7A1s2%lWyw6q%)=zENfPIL4se-~rX0H3OW@|>hcmTbAu+W20u({;IEV(9E=HXt5>V-|XQqE`wTtE0}z6lU0a3Cw)y0&4+eW0ji= zcQsZ0t4N8L-=7e>^0x~{Rji)3Uvd`i5P6@T{by%o+I!&}i@`jDI|)&pByl++i&ofC z+nGmeXsb`9UKP@lIkpG@O2=SYFza%pT!oa4rJJT)u|!@>n#{V$wAU8aE{MBClm{|+ z0FV@l_Af2q^!=?PYB&BoT)v$)=+t2)pw>LK%V`}=2;|8YqOMxJwr75h8RlgvV~@_P z#iYLZ0M^ehytj>I{x?E-SMg|may)m$EutbAb(j6ktdKutQ1}2gI`YKI3&wwXgmkkp zQLUxHQ_#7`@$>(%+AMFp^+7u|U-(HO@@a1fAFMsc7Z}^I?yl3aZ_)|^=orUTH$-*W zDm-mqU+LS*@HeZ;_j0m~o7L!A*m#&&JKSm&aT#}~;mh4Z|1l6QY=#8lUtlIoE(g?A z9XJPBK>p@Zz2+y5HP1CR?Z@c=4g$adhO|+|75t4EnPMr2&%y>ZT>dJesqmS0LyTxE#=>tDXfT3Fce44g8a@(f(q zSzuLe{+m)GzDiNdFQpYz=!@#WkT#^a;#D|(Up1dU*@vkH!vd2DGNLyE;TrQ>#n-lKlbrV zm$5=($WU_}xu~PU{;Rpr10ePvB!F}9cD?{5C<~P4j0}A1D|I>X-uq}DUbbS4PoRy; zOjiV)_#f3^|Fxr{h};|(GNh1be5UKk$AO#ORgT|)?YJ2b-zKN9C8q$yx8ZD5q1-50 zprId+0ALW!n0G2I-sSKEl>4t%FuYP~`|iWbq+x%mJCLmG-_nrJLH^W}di|K&GJE-v zq(}nN%inrZB`)^e9wF5WXBuKZe!0QNu*{k%V-2_Smm4dXyq+FEWE2vFVt}$O*X}ZO zkq!*RR!UP`txnC>|p1~)DoJW$AZoRP){pD?i2uhU;hUP0m%MUaG))!+pXVG6WWxiKjIcE zo@`p^_)Nd`#`$=W)2bb1&;++CuC4L5`~2UP)xTLO+++90eCp2hPipda@24;$U);$} z{w>0vGVZK{T#OBxu5#R7Zb7!)& z{H5&drF=^E@={KI>96$Um6ZIPrRD70uXr*sjz}iqeKSbJxC|mtvjs?zENtTa3B~Yk zgi3Ho^!iF!&R$X-{vJ-seY+Fu3b4NZ&xPQ8WJbdSPe3>$a_u-cLJS?JA)Tkr*H{sW zWKTSa>|a^#-xR}TtqxSuFZLk|j7y+L69IWB>(i^wilxW(99`XQT+S5B%W>mmt+X4? zv*XAC&nL5)?c=$g&(l&pPWDqy|2#=^oL?UR-mnF}8vy)|VF&pbh{b^s6|d#oqc#-&QX4R}Rm|%2pZ?$jK@X4VjE9q(jDIg5`i<_7 zIkc098QR^`MgU27za3#W|H&V29nE%~Ji}#{iG2NN8ju@UdykWH#hs4SNgA!#hF-`7 zGHOk`9InTY^^tid{v!h)2S%oWj=~+8xMGL+NdWlTNyTG01oHy&g3B~wYz*Roz17bu zuu^mn;jUA~JT}YtwqAM(^}mS?hnc(6&+B;Ns7(t;^j% zu`1}~+i^jCU#8*KS7A_|U0I9Mm8B9fs+w-!!Wh*MU5E2Jd-#{13=HaSqM~4`za~n_ z80O#_yRuzm5BSZ#>g}8#5XR=!l=+8$B=4|Z$FSjyn^I)ik~-B)H|B`o%>$}0Tn@8t z;~NT=NC`k@wwTTQ{m0`?Q!{Db$+4-a8x`^tynBHDTHk-E_I4>1^~1h_o<&P8w`Lmfi+VXKwFuWCwa$Uw*HZ#MI zs5?cOFdITRMk!(SNJ7pZ7Msf-7R2cx2KmFi>@bP9GatKVh{Rm1LostbP$v zI3$Bl$rd;0X$v}Zv!pnfo%Z0<2PSOe9)|Iz2R+rhzKtCc?Klzvj3~wE!GR}vkyH?K>Wcf{jmEROvCVH5HUW|pdy^D8{J|HB!sFI@Kp4xOtIRL|O*PcpLKyJZ^G5S>$Nvnbs z7gWvZu>?!tJT)OG>-f#|Tc$n@qcJyZvP5DF4|#}D%P!~1d2g19&))Wv&i8RGEMss? zyi^!_TObTFubQ;(i!$fC(Y<};g3_`hx+&Ki;GHS_zA632>)*g^eZk&}wruuxqj99I&$jpncu$r0JQ(fhZ=4J#3_GLH zyzn%`8|Nrn{w>fml0oNn;}t@<0yO_edzxX*GnV1K6~mz{@E-N2U|KW(5jzYsm%~y2 z5Ch6wS7_FUbSPOz+U$65gZ(+`DcFU46!xdZr-F%Z4rjyoc5Yz$o3X}_;0|(sYpVKu zN(01N1=hbeo3hs*v$=zt;OB$nQD}-zV{O!q9c)Fg4v<+ z*^Z6v+N_r8wupC2C&n9BOD9*W?#=Ebb!d&2qiHo%C{tTCWl9v9tW?3_jH3qz!(`Md zw$smHydrQw6*C1zM>Fcx>3i(gR`ktghgd5>a^vg{tUeiI>u`L7)k{ZPSZy~G-#C8F zOz=k(U9YwM&28syA{qcIC&C_RvO62#x`|978Gr|ZSU*2>p zs0z6MbErJAtJp34DG9jq{=)P&Pyd#TBd6=cje14nk~k=z5`XiUMV~^73pzGmN~e&A zQ#Ne_{LswUG*R%+>Z_ap7pE7mz1x%2b-D4+6}{M(Q*3?p{NmjEPnE}}{lBgp-#WXs zWpOe5cVWBC!oufozxAJ||Mlwjw;x;9;>PX&wqMVyTAVzn|F;AdERz9%cXI&14B#z5 z1wa_fd1Wl}J=-D0Jx3(2qYU#PEJKqK=~t(;2Pn4?wluGVst|4LxJGPPI#v-}c_$`7 z-&SW4BU@!2mq?9VAhh{jz*4(0eDk8DARR$m>4S1KECe!?D~2G#lA#*`%G&`wo+&A+ zB)T{}ksC+E4w*GW14-}NR*j$?4RlPsZi*LjF!d+^^ZrUER+6*icEmNrRij_k&WB_X zj7WQ~NFiiemR+jH8m`x-Rf0^}4OXdtq_K6GGGMImNbbsG@rPi)s!WY`;r!)t0cmcP zU=zC;q!QIH*Gk`Sfx$1+z=*AT0Kl-k0&;jMVCt65>)v0v`BF<=vv)FkYLOa|v20{; zpN1MH*E%+?C09nzYqVt88Z9akRM(Wsjp733;scMS>w@j0zyBrG?pYCNqGi(MdnKAC4S{8V+)a?+t zMqqKDo3Uk|QDbAe8SVjfb@sD>v28uF#aM*Mu_hsXmBt*YmZEtNF(t7jgJefGN8KG})I$;WIKE{Nf8n3Vg zl9(HmCyJ7|G94+}u+E_!xKDA`Bi7F1HXO#}kZR;He{OEO3O6-P!y$5aVC$9d#>dh5 zazz%tZfJSYRkb%h9>v@2Acm&gs|MsG3vzI*|s9d@8-D?nb8{*@jPdJ%y?Q3cCoMHsQiZdx)tRwOy?A z&MD=oo1+>gj7n$bl-;Nq88USDh~+*V`dZJ4&7VQ<7Gs^2m%BMlXXy-F8l`AgxpC}T zkqT!$CsB)_u==89G(F>LBS5=_01J1&WQVU?m|)G(IyV`hA+o9Ud5ByiuvlU;w(Mi7 z9A26hI$(;-^jNI{2HlDzNQ*H;Vi%O0RjXq)OxCC@`|BP?p@b02a75;-Z%qQ`??sZE7=~w%8!sKZ7Rp(4KK#1Z;sLe)yBYeAI=7NX zgBrl}PD+mC|i$mw86{pc0yLY)sybs z4Q_H5mOT8_m^w~AsJ^EDfAwwk_v(erubWC)8_XYO{Wa@mmOtx3RxBH{{KoRS1!RwB zJ8qlRuF9xMwWu~p(?BBm)R6~;Q6f<&PLs4mGF_)ht=3mv>7QOOUp0Sw$%a^>&9=oB z*#)~}-?wvioxzD|wz%Xo5A$`NV4h{CT<-+uxyHGT(P6weV1@)|I(L!_kKRs zXZlIcc;2rEgcz7$hAbRHQlNzGa1_QuOmcx95P$&az#T$>2-yH(6}lsv&Ou+gOG7k8 zA^ry!a1FO{KR@MRj_@L<5JGxHKmw!}4V1f!70*rzS1VS8SK`|tOgDtoQ6vSYa3m&=R+q{O)@(un(2$2Me zC`JWNdJNDod zdSMtQV?L5Ng-a;oG1ADRtj)U9O*-mPjYGTGE>{=A0xgT{@79c!zSgea#h=@E$w;Fl zOQAIFoPGHCx+*D-Qmc#lYm8^rW=8Q14(Zq`YKD5Q`@Sqv3RMQy>BuJX7nD(P~*+$^t^R2lO* ze)b){&(C=uALSqUYkt&6{YqevFdOipK5*gxqAgCbBW}g#aViQ?Nw&00MOsP$>DM%u z?7Z&7Pd?*&etWu|C6{QB12%Ai+x5||+Z`LSX&bYctws+ciKxho-c2a})ymqf*3(8h zzDM@7PU}^@wfA*S5A>6+d$9k}o(t$)vJ!o>cRu4fkv~+w1yfH(axu_7AxK77lpq zM=`HcuR~*YbujmpU3h=|b{+7(>b=njpJtz7pUZZxeboGIy07!S>UaBW&kt$8WxsnP zIl28S{>`&xjxK015U?IlwOZEf76Kpkm3?cc&f@d-^xo4VZX=l}Ceat?Y9h*Ix&ChNk~*=Yg5hPw)j3$GMlB|B{A3WZ01Kbd%sdTgNU2TB$cLZ+3zNr)%hO8|hFlK2iyb&$MJgFMPoExr;F5S0#m z#uhiyk$ssgAVF`+Xxe!kWZ}A6{8E#xSkzB0;%iv7czIh6=s4yUtjdj5#E2_bZ(EwS zFpVoLmR?qyPLq9JbV~!ZiE?%@Ej3J?2XR{~fU1Weq1x5}&|3=fA)%&<2&sC8NjQdB zPsZ^0>Al+`sN?Y4f|hi_QBkx_u_Gi3$SyiUOd+Z}QcGv_^=x7ZZ90KkGwHH>j@U;2 zIp4oQISN$aB?pcMBB7lz!Y(QHby=Vr>S7@@0dy)KP>BJd>RZq)f*gwTNU;_6s>Bq~rGk#d( zZ3J-d5Og9kG;8%@!LqQu7~EoiITr>|bfnki{Km=B*WQ+PZ+m$Qb;t_bJeqn4)vDFx zD^!{0AsO>sR#=#r5ct(ttMD$lvO<2#PS6)J_vK>OOArRDYPCG3oHijZ`$YPYh&$ud zAY12_d<13lItq`o+Gi*o%4yAkXTL) z&H8(w!T;ThbdrG(gmXzVc?3#;J)w|OmTzpm z#u|jnraxp3*b<#wc5h&DdKza@*m0VK+^_rSla#A=EIAFk7c zCd=1JY(5J+=-v2R5}JqkGJi=K7)z(`tKgtTik_LTME4ebHNqDR3>12dCLZpq{&AlA{nBpXa zXn|S|Rk;68`-G}ulsU51<1R0;WPGh=wU*i=fu=AMdRo%2_gm$vWKax*F$rE6XHWHV zq>KD4i>`fcBq*wnM3A37s0s&{RtV?K*L)`=hL>(UYJ;JEHRreJg>HKi`?>Udd*4P8 z^9Qk7Rf+g<%;mC%f;d(I7545KB^M75gA zl)cKgYK1)V)jjeeB+`J6%h4@vAZ>tPQcFsVXAh(NyiozIZw%N=X#H%ulaK&-@dl8{ zF1_b^P@q=hEoXVrCvc?*TtQ&#~Mu0tDD! zN00zQ>t0o|?FKsKh$caIaNpEiBZsa52hbW}om%N%5#H2Td(MsCFV|^{?nL(Hft^M*DF=x^i5^n+ zer%x_DvptT`tTfn|KrQ#aB#}{#dEt10>G}Xtqwl~<;uDECi(mpklOoXcvxMuOIYW4 zsl5?3ZT&$iwXs2zkZ%}nX^p{c&dKA76I@2Kx}c~Us6z15U2Q}v+~%ZoiWaa%dN#MHTj{44VExvK(=#pl9_8s}2(@T;MTci*jGOmoLk zJT-#R(ifu~GgnZNFy9;>u>+!LUW#N;UK4~?h(nKIH<sO>^#Rb%`miLdhqO2frc`zz#Kn2 z;>?MX1drUPlktwmeeuibyM|P1D$g`%-^IUTDYpTp)2)^QssnW_U=|Br01!13g*X@mNJd zNj@-TD(J~tf&o45wQNueTNx(A^Ev$_VjpLv!N8<6Av{@x5G>?4>(Ks9o}r;1z_O61 zg;cH*Xnr%e01_GXae<3p4+j(p-dZrgWKmsUIx2I>33ZtsLetWrdB)JZ_z|&hn4zV67QNKkwV3krxCSky-{Qb!jb` z!+ZSeqXjoS&KFgdClx9Z8>nTeyhHO&Yk*wRGcz=wf*x&xLZ6YbGUT(~;Nn)VJKT*6 zEss2>Mg-Y$ z&8t!+GxCk!=eEQY4D^m(I*Y;Fhj^g15>oXwfy0TXR-y+-LMER4YZ>1RO_-Sltc(rq zwI>ztn^XB@Z>=!CRjI8{OuSYO0!mN2!a--oAhp%b>@A2{`kQ`wx`e`x_7jwj(mIn2_O7a_&q z=9t)r?#O3v(0V66Jb!``{G(cex5iO_^t-trqI-d;AZ!?_-AF8b(VILU2bgsDtf+1J{VBnz^I{G-}p$gA!!=@yTNlp?$2f zpg_hc+fm32Wyh;dtb`0|ENlS1*;${aUQe?jsfL(w5(mPvxDS21)DdvAwgMmxY(={z zC~|Q7ve4Ek)u`@Ui2YEWSwLTTgttmStT3i5+@y~!s1S!+67Mx`1(WhJL6`ccPB=xf zfmWXr?1VHW9;?M4x(``0eBvgXBDr#~dTDrI3n(+Bno%8nWh6w5-SgmSVC92X<`|06 zyivBqS%ZW%)`Xf4X0_!~)^Eh!VI4cS%Q+jPmXECS; zEaf{=f_aoMZ9oG&$;VYF5%{#XvWa7$D&@x@=&rq;Ca3edMIKzt4@+NCHZ_;n z`shX2eV)o!@ebnZleXm)F8rK6-3-(dL?Yd*Ame^o7h*?kkXMqN$fD3E@_1;)R$c6Q+nL}dY&nGu41loLK zzodXF$Wp0?7&CGanLG@wmIf3kY#YT)KPYS#>pdBqh)`)qCck?1hE4_g0Bvt{0~=zm zMF==;k(BLn$&9KAn+PoqfPgd$YN+dM=HLWd?W_j|)kGj;t&70@LH`%Y6|snTOHz1+^a&2zBUKJ&ayZ@3pLPQ zf~^Y83A_zF;URRd6o^STk90r!6EpSB(bg6L__?R+P219%1yYA5p_3j~Lay7K&j}S1 z<&Z+@Z~FDHSIT(4=-D8fE8z#m_Bq|p7I`BcpGg?e30;@%>@;6Z3)V@u?VKRgP@_j4 znhVt~DHxX^*me{YfV2?dqD|$gnmJsHY<89T!Cj+?L;$IzmrcIYg_ET5XNi9V;ymnR zs>2#sk+4j8vVWe=2!L@`(A#dW8U-FqOF3D@5n8GnUkn55BYY0ihpmCfIRaLTfq}&_F$a#ImQ2z#Ie)8{1X8kx{9hoeM)j2S$F*!v zb;0}b5WJ;i`1aeqC6+ZT& ziV+jkQyl-n22(RDU-`0TBIgOX+rz(}IPYa+cp8Fz9wsNh0=lN}mCw_pCt>0(q^uh@jB@C5h# z{N}DrncX&r>UYT!emwnxdla(-Nz90=g*N>3cQJUf4vMaKnJgb3@)6GD_DN3-deE~< zQMl%j1oIMN!}?iC(A=)jouNUkA6Vz;RRXyn4_3tB@y0??MzRyl*WPk!9KGWTxI|oa zg|ojl-1dgfyQT0@OVuO}hl!g!kt+d@dqAOQ+~wXJX6|6&`jn+d7-Hx+KJ@kg!1RTp zl5*8$y!)6PZxTfzWlJq@p#~CgU?^Uj1yrm{N_=I-4VG@+ne_k^G(ravOh!^9=%{b0 z_I@=j$aADPET|pO+~0pH~T z;u^hECfLvTsoBtE$MSrATWRN##Vd=QyZNK0!5fY~?thT>{L9~cMVBUraVT8<)J$oM zYW}Xc-~Ra#12R=BU>;}3O93*F_D%_H2;{F?#|_niErEfN5moKqN>I{ZIuT=FW4MA6 zOj&6s1D$PW2g1V5?EvJw86-Fm4V{Pp9lD&Fu(?HrQ^+_rsW#Nn!Yrq2&4B}pDiS*F z1SFTlS&H3H2_3Cv6*U%bHwTI6*Ct^amx-YRKC~!7W9k$F5T}q!L4E~|=|yyHcy*qUL9m$|`(eFPaFLetUgRoglsjdz z!d~LR9(XQKJz`v7C!d~8nDaeMwI+m!p&SSu*Qt!h7(;!6Q{jvATj63Rt}wYAF9Xy& z&2i}fuos-67)oRT)pkCHSI_{DR60^`FYOJd!8Y$V#(by6Xf~vJJE%0RbfddXciA+^ zZ+Ip<6OR?!!#lh+3MFWJ{gA@p2k)SB0lh%k6CchN(NwkGmkvzy?FO<` zKYq4r)S>nC!FRF-a+kixec&@k)JG&}i(So$OP!oOi9>jVLdqo99jWMX2K z2oW;lz)-c8N{=?TO8}eJ0~e$NHgC3<==k9OF-n`rqeGej@dE(KIVNe(Y^ceNI=hI zYH$(A*Tvi^La1!3qun+8Km?C%a<1l$E zoyoIk@SUplO&s1O)5ZB<-jO#$1K&`H=Al#4eVfTQ+nR*hC2_JVXDsyZ>T#S# zi=TcNl%VvNKP-@Bbfd6vGJ3B`h?rBD(B^x#nE)C5NpvBB7{k$&|F}fu5Hp803+jXt zcVL5T!-G-nGJSU0;xHD4_rTXg#r8Xoa;YWNcTst&s;Iwl*E8io?sZx(VfGB z&DgEmjdsbioK-Eaaecj>5*t5OL$+@8ynt$mQq}d&OP0ZA6dBCdCQ<5ZMwm6yl6!k4BQ~ zl7HHwR#%GzRimgnX-{%yJXico6}nH0LsOsW$y43=wXv-GK;Bcro@EboY;jr#Yrfz1yx9(gWuz( zJ(bXkLs8p)Z3C-6(|X$saQFnf5p?rq#WgCf3SlO`HL9ULOfaDjo~X8yx4@lqM0gz~ zsngmdQ{&w0Am{{INsrit!qQb-z8GP5E8YtjxI%AVST{oxXv3J>7Vj!igPKjFK)O3F}n{XJ|$-= zytV+qw^&iZWG9pALi00V=8N5dIl*swJbgt%Y<84zj~#%WvF9>{!!lz)#cGb+N71%FD@Q(BA>H@1gy|ehtU7E-AvoqH`!33=<_>6Y!Msq_ z6*iL(Ap`JQy1GP%x-~6h4uXCgFD#g9S={FX@k{X7E!b+ZD!UAj@Ez&(i>U^_>Dk#~ z1$W@z#Dq;qCV;BTy0$c5ja+MD>s1_d6_s2GN(KrxoPB&@_eaRGXw_W(gh;*HT)e?@S6a5%(NOSa5e!(FOGM;)hO^K z_{gCF-1RBKM;fBuwgd57g6q!i218_ULRZ-l;hr_$OqNL!UDuWS5MoL>$dr=8<|j~b z2x7CEK2T0?Ziruk)7e5zQ$=t3zXv+eNY?2hka%e{hb%k{>-ROfJzNuWB)XdtDYDcCdZqk7Cuf?xWcrIFCg>U|rkR&N05AWb`MqDuzn^V9tt3yhwthQdcD1zj)F{W0D8~&r@89O!wr$> zT~PSEkqk8QyR0Tg9FC~etzdy0q}$TBa1_XYjhM1p0z*v}a4X|L&_rOg$qt6;^!TG| zl1%6#AcTCN$T;`JKDibCDCOPdQ1HwP5O1seS9=Ha+HjukgqeC590x(J##P zGP11@A+ErwF7o=D+R6z1c*m6FQU@lvrB_GO`;}^iZ?;aIO!k)^g71IZL2brOGPkP< z(*&83@%akon#i@0!6ZhD4*{{ot`0Wm7~S6c66LlU_Es}Z1Z)^81OTtAkcMklNo=Gq zzBZLd-&*y!q`K!QUx!Ay8|+KdU?`Eg88cD~={N(|h=@2Z2pt%D7?qvHfkhK-7u&8F06>mr=K(M^2f~O%{1H(IC(Onu=FlGYG6HIo?H8S*E+-sRD-l$GEN`< ze*&YqC2{{e(Wt0P62;b1cX_iUAtf;(CX(Q-0rq<_heVQOHg>a>Y%Qf%-@x?wF)Z8g zz&{UdTP;_yab7@?7K=_OWP39MeYVh(3Vp36SJUyBE&*LHCl~%bFkmuD-z>9r!`oKF zw)qw1);~Ox#A_P}{K$mCxX-wm19V;!Zj^sKI#4>VLduk&-CFqH63&|JW!uV?tMd7Y zjfvvJ0%{%SLl=KZoT?h#sEEx z-1)HpaN0}Xs`1_e#5?}F90gi9j+Cv9?hcr$!-~s62T+}I}Ko0i{Rm3IuwLQj#O zYVuo#TEqy&Gj1!AYAwOY5h>)RNI}DHnj#4u$rZ$>^bhwe{nMi?m@3Fl739FsQd%*n z^Vf*Dop}d2FKVn-Vw+8&cXn4%S+{#2y|8>&vdw$06&thu>l+jDy81S4WU6z)7eM^U z6CjtXNn_u-tG52h!FZYL{s2ooP(#Chdxg0YV_jijZ=yRSgVUx=8)j+5a9z+`PM_a4;4)nGO;c)EfFA3n%WJmFreoR+wY87@xAiQg_$$eS8S(OE-kT= z$wVS|Ot!2GN3RY>=k_N+sUQWrC*-DnWiH z8ZRfj@WDD3!&#xSItJef!OAi5YAXc!prv<9ZFaaCAx|KHw&6r|5CHUW{@Rz1Yl66} zz?{dh(7X2uiDUb3&WN^so6+u&>4}R3i)yCmzbaxa%$AC@0eoCfAA!k3H5k4)J(f_;r? z1qNPjP)=*|F+C2yF#A=p!A3AJNe2}Tj4(E~Ug%BQnPt$uYU(~5&YWvKKmFRte8DtU zbJ&ysOF*>0x||!_a%?-P8-=XU7JA^f(Iq24=e@(8^htNKZ4dVJMzY!RML({Z4EkNO zGTGN1oo8Q3jr=(jBcz=}`TIYcK4#K~(bQl&(>;sPIQaD&q07c4F0k>i0)Ok(fm;SY zf-8Li0#eI=Yz~M696-CkH)0U&X|Zb6`>k&>^K>Z_;MVFaB=9{z7&g#8y8I&`2Bf2U ze}E2jG70aC2zZ_iLo_MXt6vfl&oA^`~!HDq|?(40)SPVa!Ym+QX%7HlQ z9uZ?o9Um$y)ygDb>&Gp0SfTali*dP1PQeP%bIH4fAU4_=z1|FU9oCNO&}WN2thVDu zW(U8wnODpdEmPSB63%cNgVkjiW=Gngi>8xjxr9bz4_GX= zFF@0weY75vBuC9($0k&`M)ZID@pgT+YBAUb=M0^9Gn^c67pf~$0&iBZe>PIlGmIyy zstb!_tdvm0H^$VXbW=+hQj_$jz&7H@c=^6S?`Bq5b)-e`8%J=d)IvxC6=oppPSZ+L zI;YUiqN5Z=P5Nz2$~XwCX~xT_(yzDLm?K#C*|#hy8mr(MNctq`R##F#p;~3IEma&4 zQw{zYCZ0r5yva3d8Y#c80@9yzqD`pL0TQexNVJ`e?-uzaE>#hb^tD}!#M{%}*-d=Z zWjXOJQK~-L`gZmtc2%wI2?#td*IK}!Mov$n@(QEY3o8@yt5BxX+R8JCwQR@;g_B}I zGN;aiv&RxjWv`v1J~RJyq~p5cq*IS~w@}>+(JeLBClenWE+!0xQ)-url!d^l!N*CP zgNRKlh$b1%LFPio&>K%v4T_)$2(h^E24Xyk$)(asi-jZ!$d97j>|jBYmQ&r+jVN+t3yVD5Q&$=jo8POzQjptXg^HL}PvOKH`H^QT0~<6dD~pG=4EkN_|kMy}WE$|8B2GhrL#pL}aX z_F!N^MV3HAjx*{qD8@zdOOU~(Gg$YXW-2Y*%?;P!5fbk5TUrN^WwQPYBXFd$tb%=9b7sPYn35! z^M`6Es5lO`6cQWrW=|HGqM!V#3%Kqgte?*tdTnTQC zGVC{V=aq_cOo67kWKkcl>>_x6BBSjNB4mouGUfdBq;QqC+FGUVqzC&MM#-Q6N`lTP z^)?ak^Xu{LeIX&?Obr8HLZcj-LN;a(VG1++6iw|H+%r0oV#;6HPKtls-jedh#<2#@*tLp!$yU_r?Bp;J9w2$syIzS;mEfmv&(694*?tjWC1+ z5uN@ObB3Mddn`NV1z81wZLr;az>IjPN=W#<*`3ED;-=f-+$BzLYcd}Nd?7}}K;Wt+ zM#7>ucIm!2g=>0aM0`jlU=8Dv$m)!~mcGGFXwVF!IX)w8f*ov4GpQ9!`gcsnl z=AuKkP3-XKltAT@r1ReQR6em|cy@c3J2P7pps0bFI32)a#Xc9_#vk_>`*x}Wr2XmF zpzd0Th z&eU3_h=&yRCLhS&Y)vcEph(uZf$qW(T5S^jur%L^opCIA%>rS4h;h!VHg4~&6F~w- zxdOs8C4;)7oVN7(gQ9rMhGkhB9U-<|lP3xiA_|=mN(Oh=W)3PN4f{|Mr9}5ec>quZ z+eLM6c8Ku2=+=g03NrDJ9W+q7@9nZnLw70YltZs#Y2GG?2}w zg)HO5J-f0K4e8i<=AFUb8qd+Vh1HeL5xkN9drmz7m}{$e)oUrPGX`#$CF1~lbqZx; zV1!@cMa6tNGC^TKz~s-&H!^pPp9~8|w^1rQ4VwLfT}y|HyqJ>*~?3=j3SLb$1TjAmcZbqYwf! z+vf$of>p3kpT~?8%a;u{{HHN)e+{Fw4p>X&n|8;)gEH82DDE12p0C26P1f3BwisIf z!+xjce7Tj?T~q*RYVbQBI`6y;8y;{=#9%wB^@w#$4n|qC4`g;Da{vKB&cZfPiQo|{ z{f|J#fvBHi9_5P##G?xIFtKRwDveC&hh!m}^`Q&7Z;B}c!A6vLO^UGdb4h{{1*Xm^ z^~P!65sAbPTki3f)u}((+vMOnp(H5+2VptW6JQ*Nn?rJ`z|u_pp6N4AGxMPtO=Ab7 z8?`X{_;ilCCeSCF{Q&GJ)5}bE{44ax20I*T=ARVhRuL$GO*W_g#>Trd)2pfqwWPcj zEEpxJt@XH(@MMRi7oNE=a)oP54d-dG{Am0bMvT$Jp7cSf2W$+4(R?`sMQ0B>V@`#g zl76NjTX{hW@@?nSQAj6Nm=}{|@nq_{0&R6Bekg_z>yYLfL*tgO>+QWxZEW-a=f{8z z3v^P|0|mL;u}|(xa;n@n{2Ht~_+9gqp4dL_5_!>1wiI})d!kJjWElBuLIJdpLj!Lf zok`xCct`Q7eTzHP(2~)kNq7sh*lI~6+-6&icLJ}e2#Tg=5R+2O$GuiVYSwfR4ZHOP z97q=lPKP)KDf9k-B_Z8$qCR5wqapFzOn_{M+5QyUuOY)BPcXDFS1c#4h{J87$h?ox zL>^%v!|_0mlaI9~EMxcgH4|zUq~X4x5V`>#ZR$Z-psxhHQ2?bFy51O- zegxe)SC2h}7Pb`i0gQc85T$Jt(on`INPA9uh2A`)MmMmQGPN(~NUQ6TPk`&@15GWw zM2b2o9=z8T@&pmEFcwrAVFfKZ6-JgC5Vk0snL2{-M>}e~c75aR`E3*z9>mBPh$>8l z-4kSC0rR4J_i?jNg3kmGXP#GQgXzxP_Prx(w?)a(o#|E}u5d_(`h&S?6Xo7p>bt*s z-p68+sb$<=I5Zbr%BDSv>GKA36YlKEvk~@XOK4ULV9{d`b*ln+6B5KjN9ejTS__*i zl=lyFB^EjuJrUf2$GTEXuNj1>acWo8BfKaYlk&Efcv74|!#59M8s6Q7OU zu47Y!RG&+mYA3nKGJ&Zeg>8&y{1eA#jKrrNfMBVEtKO|XDa`5$ z1VZg@pHhW0#*C&U)3lKY%%O;XtPj^!Gu}6y1obK`>^KPg=@^>6Z>BdVG*7T&WogVT zLTEu)e=|Yilm=8KiR`*F9H;620Hg3{lU>*W%KNA@gf6fAAyiXIW4xwjF@vb)m$`nqAn>4m#$g9vkkx*$~KWX5#? z;YW}2<6DT9aP~t)e|z`E8UlqHKGhmA9GB}Z6gYHFtZH&dvrh188W9r-GBdBvA%Yfl z34_Z#!2pa$Kw{DlL32QYIRsxuOdfi)FlO`kYWd_5pkwm~H9y%698ciG!A|lJV&U{> za1TzDF*x+Vc1myKmr7FS?p!Kx_uL8!D-#{^lex_!b4iG2dQm?y5>Ris`IOUD z@WvU@OU;iS%gAV&Z8$^wknCqR2PQ*-unfgLH_9Ra50DiZ_vk11{9Qg%Gs0qg$|4BN zCOO!%k2d#w<^CD|Wsfl;^P2oxAWd0-@op&|y$T&IiFlznl`GjxvR%rvEtI{f6iQ?x zinB5v)RgXCA|Yext3hv`M-|^ARg&q(+$ph2{I2{!B~KvsA62z4RuG#C}>Im>C{>_y<0PVHBK zyY_^IaNj8(=Mbie6)YT^?I1!I@lKyqRGo;;uepCe<{sBIDLm2UCAsG3)(K5D^H4l zJv|t=wFN$NGdKq|+6fb?Jnbi>+I4UZ1p3Jk~Htj^nOik#BX0?P%CulOWIHxbDboxRmE!D)N*;V4800DziDg3zomI+8) zwi+21Z7FSMPyfE-E#&4t{kh{U)aE{&vEv_&4TFyP0(+Pm&(>{#ni+Kt5hKKk88K;gm6AC05dx7i9;v!RN>u=#`9uYJ1}M;qhQjb_V>!awG*6%(MUW=) z#i;+hSTZbYbc#=27tZ6(^4DD!2xw-2j_+4Me)gH=*9=T~z7^}jn7568XwAkkU_4Ev zlY`(poYBefIPH_(=9vMy`unCxcS>>wdkPb}@XYW_(oWB`w_Ni7xw+`X9X8EVx;IGs z&krg=vRAS^VG;)u`QkDcY{ZS2#oMb0f z{IsSjx<=lO_oV``z2_q2*AhinpeRc&Pd+c>k29&G!fDkZdZvEwg(;$z{6Zee1Q3i7 zlfH=kOfe`;FtC#ze2tRI!(_WD1sj#!^9(rW2($t(XY#lo*wAO)4K0-Sod9kQUPZ4* zAqL=l)+pvNE?CabSnp8!#Ga7bZT2^r;etiXku^{R-rBjD<8VFoS$B7>2|oED@5N&= zGG#A0KM^lYvfn-&~4_^St#KF*-)+O-u%{?sE~-Z2B+ak5m!Q_CX{xro47^MMI`;6` zwM9+b0pZ@j@TqHs__s7CCaHXJb+NPes(|y`kre2u9SoI1ow+S3CV6zMa!4?yC69S- zK&owSUy?~SV56}cZyms9sXwzDdbu$?*y~gdfSU>xD09{K!|P7;hz`S!Kw?Mp^Qym7 z72=bX%`xLl9=e?6gEyg9%zGw|Md`vdp&8AWl1#W`xCBP=Iu@{AgFE< zLc%hRcWL@xzGMr%^z@48$HZexTgXrI>pb^G$BDFXJ{*E_Q35ITV>6r41w`D(nr735 zB4U$b(})Y*`18$#QxVg2W?uAa;mHhl?oMjSn)9;fOeZsjNQFX2*TSH((6--!j+?u> z;(c6oWQt_pivbiNY$mnt{Yce%`zP^8s6FLk$f5c9O(bxYOfLpN-rdr(q6z z9o_sd8u$dW3aC_)hdm7RmVT^v+do@PoccaME<_l~t$LK`uzLPu09f?V?tz@eghNa) zh;9uo_ayJkh|WkUDsLXM2%+J9UYZcrFDlHA{DVT(iZ0CweBwV$7;s)3j{wM(+!`$f zIWBI6_PS1hE%8kr98-BJ9CAh6k2y7331g8e_Jx2rvQ8w*lSMS3*Nqkfu01q-+$!Tk z+|O4|rl#4v-B$$z?M@+;wD!9fr&5j7P}{1KL`mczWCa&LV566^MS!m=v?1RGMwblo<`%w;+1^RZD-C?#ugr)U>n2m&9^g7XV>V2Ji*c8hC-ga;JvFZ+gA zFZ-khT>26AQeMrGWd59q!B^Ynq1+7=-^4!kaBmPr;HCD4$kPutI@mwumPmJ5tl4G8 z`?~ichjBqdnu8Sv2I!AE+P}cNZ#7-DCza|yI(BkAlPMx5CRvDP$&A{Z)f#FFgtnUJ zYp^*F#ZN)oC<2I)6ZvxI`Qc)&@lopr>~i5=GTOMlGu8Ct&v4X3!(EEDQ$3tChAp(i zsU+quRWtGNQ2IDg$49LOjSn%Rv?#$@%4X1U?et)I^4 zV}e9*rk}@5%yQTfZAHidzDOX^pwR~dgxembDc*ZT-J;-}dM18l$8>r2jGc;X7wMhR zLIG$1USk1RayNHga=U-s-vsZPdPBCW@)O-dw5^E&?UYJ-3?2ur zOi?|;f%hX$xHVxkBREpWX&PwjNoPWJtqL;L#L)6!1 zZ9?{0HB)MM=_?}4QL6hftze%RkLn9~U~EVjd1M0G?LgF`orceugZ2--Gs$MIQ`(2E zM_kBS$SStSK((T4%ku@I&)CnwTv=HkroE6d=K0gynXt&*mQqTwP&CLeRV@z7nteZ| zw-fD)KdlQFP#fZ9I38)t!iFMw(qujK3Y&O;i!96y+z+EW?p@r<3>eB_VTK zdgJ^wSN&M*E^na@l!$Z9q9*%Ys5j$SO;+$s z$MmBJS;&up!46xXRL}bLCNkeWoKW+<%?U&sfQcZ1ZDU(p628r2uK;uu)K43l+0qwv zP0R6O!-f}#!ui;FPt-w5EvUb-`4!NVas|4l_#MuOAk;Oe$*@opv%3CZgktHGov`gpOqiqXn zVTXH>i#55l1TKBNa%tiK-FardB$5Z5 zUEqZ55XN$dfLT#ebviP}<3^BRPA>{j5oQf5cuK0at>i!ia;c74vHvJZ^7#gxfoU?= zBMuRx46(5Z{%f}Z93(9En--cJnlb_)|NfmWAxthd1wNBxS|(7qi3BNZ4ca0USo?y0 z_9Mk&d^d6Zh(eY%D{!UA&;6T7v0e@__H0?x@p|+emo=Hs$h>3oT4a>_&G~_-r zK=mwOpfO1W7mV;yUyJob3(zI%o^~YZ%%BTQN3}%>P9X&c)QR|@eN-u;o}#Ad`;&Hz z47U3u>>&b`296aq3;23Y$Tl`{nPjLmBn$J!pFFYsarwrag5ujg2U0B;&-!-!M;KjY z#&!P`z`1TYExG|+3AIaD< zq#jhe81yUWY{iFqvgwBXOul;t(~e_G2mLs&7_LQW80GJbp(I;uu)X}5KwQGsnaQp( zJRwpLBnnrAY)!JPd7lw)BXL&jYf@TG6>g1soUm1|aZOndDfhcEBb;g!1GNLszgG|lMZnF8qF6Mru} z;x$i2@u)R`M9@MJ;DHwv?o`EA&r47zL*MkhRpWr#TO9yL1&iW53xs#sAf{JmP~J(y z6X8xnDn!9XJ6`xxq(HUP9Swk&ZfjI@m5e0D8T-SS3(2kH7 z1FQyW1f`H`@u8M-I2rci3)g+%YsuV2-Rtnp{EH`#s_&4jR)p9Ju(?0rwWg5eN_S30 zOF8{j715gu1hXc3KQG>rT^NG1`51n2MkTej6;JXUMem|r({XA~_T1?VA3b7HB`;W` zfEm>Q@N>{QuV+p?;I+?AC-sc5tX!>vZRd>ShS_HqiA0u|;5A3?-EMFMfiVOyrXL$3 zP~TKcrfZ%j2Wg(*0ra!XcVHFkab={hp?Y>tH}lFWXonanmQl&tevL35BaU{+Qh@&R z%5F$rHSv!i-*@V*l&Efq#M&n$MlPrd45HjEpxT+=j#$8A>FECDR!EpP1)|l^`-+Js zF138ceDLK(pSyEcWgvX9G~n~asZ%8-AoLf+D<<7|Jry80;OZRQ-|#Kx04fk1W#l1c zk%*sh^U59#EK6tkq^&qRxG^k+sSTq1uSNb0vY3{*R0UdZB^+CteYmccvjZ!- z>(w4t)-*Kjp7J9E;Yty-Wo;{x=Mu>%BqcL>>Mmtd$-SR~@#8S|O?sg$`LaFVQZeH) zvMP^!;hJP-RPQ*9^{+S_{X^BJFo&e${1=HMjw(HenLIw-Z>$`Q>na$RZWcs+* zHd)0~&;^a-VCcn1YeCyEAjWPB;gZ4?+NY9X-pJU!XinuE=n| zk$@tshhPZ&nAh%XAR+~!e1C!n?G0G4gl8ScP|9nU=rVb$;*U^n180V=lLxbNVS)z} zZOJ`5nFz`p#!;n=1TM3TaDGlm&|8V~R37a8Z z7=C{9M6*be)k!MLV0aU;r{PrtM|7x3dIdVzFVW@NOGnDd*CYsMXnjP9Fg0jL>*`NQ zp5vTlu7Fc--|D4DVlJr5sh*V+j7Iv009NI#d#O_a;$7Mz@T|a@xxtax_nGL*tdw=s zOF&3nbwt_*FzzfHDB%Xo`~Tp?h1drWa>eFTv~H~qU{1Rc+aSdX_B0a6`y6^Q1%8yA zE(VCwKr?+Kp%p&P$bb2Ywr$KHDV{b3U&&f0;7i)W=Ix2wky_mb?-UCYPg@h=;RSJt zN8f_4{glkjb?k(MVL3ORjGBS{_m=cCY0;2|!`zmcyM0{J-HKl)xpx5ES=BsW0Qc>i zDo$BUC4rr6N0G2ty6+SL0#mBj5-9;hdZ%$;yY(sk3vNA0%5;z=&j@t@+U@4*OFkP! zy3qfI?WW{^D0Dz@=%MtZZ{x_D>)Ba9bu&30L7I&uFSN2D$MI?^mC4Lj;#)k?NuP7R z#Ej@GWZ!??0MU6_c~UaT2+h3Dw?OjeyhsCM`Mas-11>P;y||i7cv(Q#e$Wcqr}8&x zmCyo%KL-9ZD8s#F&UPX9N`uF0QQk+cK1($yU}R| z=Wd(Y{xrt+Q^p)BRp$b|}jssR1 z23JL}JdECJ@H%x5HPXzzI?vrg&-}v(66#z$8f&mDQCx94pPQD(gLLqqD#-jEQfzL} zVVf#C6K2)u;b=J~IMHsW;!K}VQgnMTT!3Uoc_&P-g-C-6z3^bFNOK!z@Irm+a1VS^ zy`7*Ry^r16SgJ9d;CpV?a(XT!0-kiRQ4>f^Bl{$m4IO|hXnNv{ppRlTZ=LuG*+PCW zOkgQX1GmV__uN~+QfqkZVybx}N`^z{%y@q(Tgo~=pBPQsv`5pvp zR3nt!@X-KC!FlY5=PWpl3qAvjj_`Xf6cx@ayiYQ5DRJO=<}u_PJF6_P#6lW$Qou(~ zcSLwHRT!uk*p--MCoV|h6(1b)_qxG3cX|CICKc`0IYGWPHI7afi!+HDqPTF=_vb!g zgLfSC=lc&~Sb6Z7_Oi0ib<2h3Olw(FPLIuKLnCFha%L^Yrt(tRw7=`~lFPV|HR}yN z`}-}=lI_iJOb8y-6$OuqKjqJH|3n{FL7HZmYHyUHWnKlkINYBc+oDKD!06ub5L)O3 zHMi;Hm-9MT4Mu9B^yxw4r(b95w0==b^3Su#w!Xxf_lT z+7(P;^?l=c7MU^7xN-dWHKXaLe(~L{*D{!*6)EAl3V-@nZCOEHr;e08+D$KAe@}*y z2^qYN-kTG3YAj`taew4OvaK#j3NR4lWS(28!MXyh-i1T^qjBN|xX9rLo&DPDjLra8 zb%Y~RHcmrNwpJPA?|Owz6SJ9ia&?Qr%Wm|F-Z)L)V&T8xy|D7Q01Zpuf7rb0D@odJGXnJ`|mHLK@7hwSU0A@VNTt%GKgzz_T9A1XI*$xV7Jv}r1 zyb~+n@v*+7Qy9>Uw{o8batL09*P*jxdS@Hpokqq1-+-6l=@?dS!_a8p&}%$jQY(7H ztC*6){8?VY{9THNs&2lKzmAA`ved3nVDhQFNR49+Mwz-IM z4&S5QMc2B812FV!*!HNy1FhK2Lm2yy^jJOr0bYdvEG!!Nkh{SI-Mu&XRD0)G@fDNQ zpm*}*k-0%%1=vdl=gJ=+5X&r^3KC}nV#<5+aDl1@eS)XDm?)qW6&~_&q3&o7MsCUE z2fajYbC8fdKQ`geU+Ct&%%KY~zRtZ;=WNs*<1DCdP=m_r#kv9?yqBwS8Fg`IgB#-` z`paunn@Iw-V{rhK8=873YSH@i_X?nMSl;#uYrDR%40{*tot&}`1whe89Vq?^maLOU zIPK9eN1j~%k{5%BsG?|GwZtSO2iB7-wZ6WlK16l=4zT< zV}nu(_=Fv*#G@$JN?2gmEM?9t==3|Lfn^NYVjM=|`ar8sACokQ`x3u@IQ;i5FkZ06 zx;7G@O>K=mSXD1a*^IWDELXY7AO+ncM+r+TaH7ryn_IZ#kOeB?tFb|JFB%>b!~Z}0 z`xhcM=@l9_f(dKFzv&xaAkYgN9!}sB(&09JNKZY~#0z3=fg)S8+O#Bvp2oJG^ ziTDWE9NBh~Sxq^t2Ib%20DD1S`pgdrJPjzX2+u2UxXirzZ z5FYjj{kVaGd!6Zm1|tNXmf%$pSYU_AVV0{9T1&O4&eOMKi>P{-q6R4H`K0{k@Nb6g zWrz&fjH(EZISQ7F<0iZ!49DSq)dFdhq(~5~n|IqK0A41Zrb#J)r*L{drya_OL1Oj^ zE+Yh`GU}Dns!WN@WfMNPdeXC2RJXOJlDk9-oy8oPHr_z&_u8r=fEIEeg{TPW2Q$kt z2zvd{nj!nRLP*LzX@1ELxFQfOC!|n+m9{oBi;d4o`=34%%TKfmJoOj8|3Nq9ulv#|XOqMi+Uf zB2$+$?n$>Gf{x-*JH+bkeS zYBLN#P)icO!?1zEG#bvb29Gy9!|N7j!u0#tAec2BfT76=XJ9~2+VgVGlW5!P%%37w z#Y7f2HKL%2CqpM5E^@!<0{dmY+t>_U7XzI`^$|i9lImn&6Cy?Y?4xHLJsRT@&neN< z{S+q&j!X<{DA9wZQ`XgIPy8-8CeU<4#-VTlVXsjdw)B09L?n4#vm<@(+#`M=yR74! zM06WH+#{K_9aDdgIgx#p!dS*dw-Dy>w@xMk-Z!LlX*E<>q-@&ttD)8R#-@% zlH@`(?_xA`5hK9vc=?BC-KkIZZrA}j=|VqGZQ18o8g{DO-b7+a?zKe1JK`Gg6FYS= z0NzMN24#lO`W+=L;SIZc798dlA-0o#6GVUn1_l{&2@md_CcSM$_ozav=`#qin8p~p)T(6iZ- zn)()H`55dz`T;!mx6tbwtUAg-?H6)<=IZ^NY1Qy5wH@9mt;oyg?G|^;1mYEGx6!7w z5y@1dQv?MzRu!4mz;Hk!b$Ip-SxCpsc0C(!#E`@^pDdh+huB!2cs%JG-$@5{SzIf{ zefaxbhtw_03{Z$}uE9L7!9{ri)3{fWqzTyOE#k9Z4i_o#fvDi;G*iP@`6B<0UTgd> zusji|1d~H-m5hyrf?|mF(9pHs;8mO3ox_+>M>f1ZOFS{{Jyw*xjlAD$6BVRKiZnco zi;z?(n`3oParb`X4~_0v{cNg)2GsWveGRoJfN!y5?UMhSsB} zxy-0K2k)z)1QiP?^8TD^>*Smnb7X@1Qmv)ih_cv+Vs?}-~I!& zMM?*6w}C8B*;SO7lqNSM*8u|nt|>%vJ!DdlSrI?lJ@%jP7zneEgaTP8I}ZLm*XgP# zm>1aGq%%8dDrKYpi?3GMCiq41nGg`jXn=)efChsg4xB%6w9mlupwN+}znIbah(+n!@z8e(MST>ej`5W@eWNK z7wVW6?kLv*B}~0=8w!|I!s5TD&>mwRZtq}`Z6E#_bdU=v8Be^$XGpl2G1zDS&6`0M z3NEe?dd?bql3lzTi=Fu_Wo1U zhbpJc=fB;BokmG!f0K~Dt^z{*^zaY-m@-uk4m8fy)z(l`Q|p2b2L5jA?T7#2aFkFf zPpneeL%}DTw`w{MPiQFS(G0QCAX*%(hc&%;27@zn()ALbbml%RE?#Q0(V~6OLjNJr zVyKHWOVx+CRC8j)2gh~xYyQf9H0~atU5k~J*AkK=oAPdm20{e^Q6x)K1dOb)FAFcO z3atlF(e{7V%!hoj$@Q=aCvQ6|QD{9|*hw}cD))8G7E`2l&G9>Ab;R8#{n_pG2lqKF z;Pp$=(N6&;zg(#6PVWkHK#9|!UHdqm-0+N;$)}QW(=`?*m*hh)!x5D44-jjM7o`NME9dCqn~E^6@^}zWlw$B-&bVU>q`$}#O~c? zCq?F$w(=K3p%&eRp;fSGDOY@+*+pZ)dml(^ZH+bXpj10#+g)M!q67H?m-xkVD-pqj zNb`n6o-@^HGpPZu>3z#u4aaOUR(hY&B%F&~r$!Sgizp$}pMzf34ZZBG{U}bi0yXjZ zy}lC7YM>Le$se_d5}I}aRDx}|8+TAXgf z)oL!(@gs@?cAYIwc{&FMC^BCYlA%XGnh&+Qo+`YN5O)Gx2AE@z0U0p{BXRijzGe^j zJP)7M6g&OAlp$aGN$R4lh`I*ot9GTQnOBZL(oX`=lMb~L+Hqq(bE=S56IEjw(S@4> z??sgg!c8aEc&p)+kvFX1IvL(`bmZ>YXn0~Q1WFAuJz?~G<;@O9eYK_8kU}sOMykSd zzUayRN1ZT;(n=hC>jS+znx$$VC~>tL;JfYGX>f(Xu z^r4IT{OU;D$JpArnrkM~T#;xx>6q05c&{e-}|*5 ze;W3DI>P$-6>U^FmeE)>Sok zmj!{**E5>wsFg14J!?LVZSj84F&qj#Kae_h$|T5I_pRU3=3X5)N{I$^#vD@{q(IR; z^OsP#O)S?sa<;K6Z)um#q(8}k^11jUb|%b8A|dY6Z^C zWQitTw7+^cl&4HahuYqiKXf0b!Tkuzf!xmVC4(*kNw?8t7AcveSS{aPGjtLUBh8di z4a1e%dX#NMElVJ-x05%bOt2b8-&lC0T+Cp!cSW0tm`-*Ryf=Oa>k=sEo93MeA5*f3 zW}+y&F0RHWclRVYcXs5?rk#`7-|@$7H#~LcU-s4Qz0Rj)$yNnZ91K=a`(d2y=oQAy zJ1Q0Xg4%8_WtiRd+}8D9c3dbzctk5A;mwvUY9UE9xq{V_Ahj9Z7eG>W_;Tm5Np-nM zT6F{xi`|UXI_1amN@7AXLxWGU5qLF>`vUX@^|G&Z{F_H3Js~X>WXyEuUt18mzO~?S zy(|4X^1^1Ue&%UM8!ohCTcS62*tgQ>QM?k~j8jsBasptINo$&p3j(dh=aAGG(AqY+ z(_T0WN4Oz5L5DNZcJ@!J0qF1N9oR< zec1!d`ULbRUC|EQVlach3^}&S4AABDl~q@SWlVmT>G1PF2kRsQ#pH?kOn zqt7@8SI8tsMzP74QnJmvCzX@1@M@EJ8heM2w1g-W70k!L;hAenh$J{uCPC~z-rdjv zJz;oU-}^cVhSYgo1b?Zng*P1A!VOcMa!;A79u%$sTqF8d+cI2F{1ICku z4=#SXH6#-E{PKp4Gl$VNo8Ok*bJiUu!uSm=cjJ#t>r~$C+SC-D~-{r!_PDE{$Dr@#zdw0#Cw`TFgr8}vnYKk%1p&i^6v8`(2 zLTkc9LGF=-V~DXgtyoKzL8rW<7b=)hhGctFDtg#^>>|9d@hV-DHz2j5%O`m9qN)Z> zEqdI(DxEu@&27HkYOx_E^6mSa)j3OHxfj&4Qf82{Qz(q((`$NPH>U+|lGeeq;JE5V zS~(@VP5hD{7Wo!W3sTg3bVwo#`9(z-MU~q{PVsQPk25HJ)%Q{|d*Qv^A!Vu2Y^u|k zow_0Av%TIj|NNQZVRU6;rei*N?2#-M3NlS|r!!wnPQ6I=D}MVX=^x`i9R=dp5gwY) zMGB!~BjbXRAj?F=Nb5&t3uM6+m-oi126a?x$Cb9wG4@n5vkI!q^^Gp{XEQBh^F)Z* zS7}C8?A~8n%-G3nxmBYCw&}FR8tFCWY!rbVqPX@vZN?|fyq+$`8eixhe>9?Ko?}K< zJ24k;sbIDyV@)pp zj17Soa##2(cRQq^p(3a)S%%jPd?VkqV)pib=$cRz<;}b=kfZhe%c^FL!rP-QqnP=K zOsbwpasOETDr5k9sA}`K%$8A??lHN`GQ6DJBDdDPw&06z{)`)iAX7Qts6V3fUP)7y zvVp_ONvD02f-RM-*wvRm)Aa2@x4OIc%chp3#W|8IVMTOd{P>*F6B4xn2##6x_UTha zdmel0F_iQK8S-gLVs6DwOJM6-E4cqI|7ZvlSNPW>p#^%0cCYQMXZFwAHoJ9Iy6%!t zLNqwWumSC__DYRmLY{Wf;+X4PLg;vLd3a*9t;gq*Q}3v^9mlW*4IB_n@AM0~1nMSF zBrLDq_(D4z#i3+6z9~?10S&Jl?X_((k}!`CLnR+1D8MCZY?09rC}{XI7F z20321fn-8$9Bk`+{hq3t`hhOeh=lX$kQaQ~vCxsJ_kexVd$98I~!XnV4=@3xcX1 z$9f1Rl~pN>OkgDN*BD0Co^T5;7$rM<_KwZ1j`|cmDL*FN9pAp_LK)q-)CT{IoH zi;Y`t`*t()X+^N7qWveHJuMiWtIB<&06x&4@AwwOu!WFSHuwJ-!xna%YopfLU1gP{ zryadg_tUNpomeO2ywvc|r3^G$ z16@HbV?j93rFG+cvb-mb^7-Wa7jb@3Zuihj?RT49UyDc*{8Tw z?`p+c{d=?Ls(!gWn;VITg-D09xLH(HoZ_f59JwIXd$=4?LzO^v7%7{`M#?EitccJ^ zE6t9nZ%}ws>_gQ$er6p2EPAR+>pp-zQnNr*+10b(GxpvvBu?WZNp}=`6W>hPn^98PGb0pSR}he} zN*CBp%$&pm3@CT%WFmG)f)3;duJ%H+ATDCs!9M2trxyI&qTh?n#r0BZ1yrhGgXOLm zsq?{{Qly0RO%u_%#Lz}e)MnkZ_82RR?MGPf?|^bo{g?w04(-Jhfj~_I1uK8BcrM(< zlS$~R$5>WQ@4QNDj9KS2P*ow=AzKY#O=ut>wvdK!>=lqeLSe}W7_`grQ1%6?h_^UYB4H ztlq7qsz7Jg9As!T=kxjao;r`@Mtuo)IXEByN0gGND2nP~_b33vZ?sQ0y)HF2*DP#R%iszz+i zPaH-I!q)>aADE}zHMFoLwG}E~=cjOB=v3+SF%byTjwT;Z-J29$T|bb`pnXChExP9L zSEf2(iFWWtgb|Y7L#a2mw6`UPPaEK1J9;5N(CZq1O~tDd85g&uk_pFXDxYy|>1_UD zn@ovq08W=*{_%rgU&8ff!*%#tQV@Tf0ST*vrrE?M4jjDk@~;|?OPJ{1^y;S9E?<;) zUhK+r4lh?DGhgi$#JavSGhvqw@GT^jxDkyy`|58NCz+#cO-mKFAv<-x0Z2}D4ttJ7 zNCdxw4+?d)d=UN78DkUa(s(NEK|~}NO9)b z{wwY|qRw?NGmNZrn%n5@%*Q2eba(vKwQXy&$RbfZH1>$DnQg6xpq#&q6$nKkmN&FE z0P5r6$EXJtBqq}sJl1%7`f6U=v`I~xdEjZ$7tpqrPC)V#k-}${c0CS4nl0?!bo^%~ zpc{Sz=ZZguSD+n^!x2g3R+Sq^3TYyfG5xXdpXgx|Qe1Mnr)o4L$@m(f!xC~swb%gU zi}qZ>|X03agC83mj_-S=}8f29*aArnHrRl4R)pB2fuEJ z(K7Mess19=_KSwMX~G{n{j^xgQu9NX988C#L%X3|;sSP?K7!5`|H%|=#n~sd-q^6e zt+r!dv5VhrPkq>PBeFg={;6qdp}sZiPvkZ#b0fOh&dNOdn^%RwKG;3dh~xu&Au~nM zSX1LHh@C`VRNFV_hUV1RrX%ezd}l(5NMq|a#5uUV!$m!s`7yAI^RW^oz*o7xxh@-6x2p~h%h`Fy^^mR(00IvYqTaQ zH+Uo)esUV^1%C5-tqF3%Yw9R_uI`tNCOK`?)TV@l3(bhzaavwBpo7GNQ0?UG!+=wf z(w+fKx7T?>kle%2-c4fSOJc!?wKtGf$YvXt`<}bgb>tkU=pumfQ3rb9`F!9HqPbaM z{(%c(K?{N-{mj|k_&GMq4L92s`xc$_$@;Q2h2-<%J6vl2r<3_p%N(k@^&i#)9M5y$ zo%Cv3QB(CY!S)YE(Uv$OgV-6@>JJ$_x;~-5cXy-&r+ZA{y4Y?ic6)6892W=qQE-68 z@5;VdQ3_G-7Zdy#6WFbwyLcCI8uD;t8Cb4M6ffcivl&?yz`S?H=k$Z6wX(#OqxpRF zm@k2WTi@W#-*o97!7K)abqHGP4CM}Cjvf4hm(~=z<^}x*?}>yIWs_xq!nLisHB^jF znb2f_TZ`|Z>j7zDakGcSE^bTAk3rzjICN5mvHD4>nvhiMp|ey`zk<%7YC&RERcAVq zffD*l?r`+(2NlhH9fd>cyjI6+BTGtar;ZV+=bDHek`9#ZhW4ib{-lk|D0a?MkeKJS zt)^>s?h|l6tg+rY0vQf^`uZ(XoBsTjR;PIKnPw1^s8?J)C`w+&e|G zp>u-q&=+*|^rwlXH1gzWuaG(kxdq9nF6dg&LpYd7>y1?|P8X*0L-VgJN!+!|wv3_(o=!)*=t@LjCkYswY)PM7AWrK@uHb!nd9 zKKqdONV3Z=Kky>Bg3ygJwqe@;mzsVvImgGq`oT?F=lJRGzw1>q1{(l!g5nuQ7kGGz z5BeGm`)Z|nFD=(ADpPIpwY8Ws8%!pn>r4InMz7fUZIb5+@KyXotG|W*X48CMNYd&H z7bo_oe9A6N9_T*ovduCWgFg&l=B3we`BHY3L}FYdt_Gu~1%aC#umy~0a?SDzZUt#f zMne4@sX*F%gqghUD+O%(|9xr(rWA`4VhVpqDqrl4<=<$2Vwct)_D5jDq)e zpIOv2&e%R5x$;C3c%y#gO83UTufS#$I*!8$_(%9D^tX3H2eiRWa5UB=s~(E6B9~=6 zz!5kKFThq+GgnLYuiio4lrY-3=Q*+9*$1*HHnD0j0_l~;x)?=sVdrC5+P{()+AcVp zHae4gRU1A$<81Ss3K$qunlph?&Cu6MU(+68f*+)$jq1M`*^pe@(?7n42%}o+vCuvb zezQ2`SzvmK3Pbo`m=3@ofPfHc-67*3kM z=i(}8OD4bqQ-$H{UTY*xO+`T1Pxerd*>82W(+dU27xsfCqd!D`9-V`gJU5&QbkZ|s zgkL|fO~1COExMBLu=9n;u$)up7v4k>g5irGrc{_aeEY|3!QopA!b+~o>JiPVhN{qo z4LUvK#nZgXGy6Ef*kduB3=mV?EPdWSppPQODE@EP9ojfK8=Kx&gBsiXqV^nOpSP@| zX^((gEd68^*oMRq@|Z`>AK_s4FdK~}*hs6n#XEIT)b$6^YL2(-aAY=RdQ6j9f)vxp zvkAIV&Rqfyhne|6BisLuDQzumpn@$uj6cBZtcN&xpNj=95Uq{+o37jg@m@aNI=}wz zP;xEtTE!RBgZ{RWYP4Dotq3O+m9r*f=}4v|%ua)U#Y} z^{gkKB zBHmydPH+t_B+4WFhpbJl>&a-ap`p2z#&L8o7f~^|a(lU4ZULh#-c|wYK;o_tdamhD zMSU`o{uMr{%Fnrix^S{WCn_#eQCNR9M#yC{ z5y<_0^Tdv~GZ;p{^rU^#Q%U@3%hVehc@}K_ck6GjM&);)dR|wv3%AeD)lY&U z6qzw|O+G5%2IdWlCVneLNu!(~9EC+y$==rRBu)#llVvwiQy}O9gUzC@+8kLz);TNS z0E-?id|qpB7fs{iGN(imW2?7ul&t}@B+w@`=ZYv}ju_mVKV?HeSkj;&0Ar6b;g_v+ z-;Af9c1K-j1AQSV+0YB;+@4PE@EFSxdtin@{}WN5td8nDF+x#|vGh)2uZA|lO;1+f zBb}H-jygnx{KdwoYV4Y@V+ib84Dx9E1?>a&m2mr;w^UVhK(^m6?w{C<*D^iqgU3(# zQ(WydSK1C2hyk93Q?TGK;2PX&%I0%%G|6C_PnktGOQ>A9jW5KovJ9MuJyD-_0iK>j zi4`akb<29Xl;z1_qgSAWNBD4-9}!v(dia~V*DTs5TLW1p)Zlf?Bf8CZnG7K{w+ts) zM6kTxm(FmEFi1wH{66C1TSP}F@I5g4YFpfGTV zY=@x|v%Y;;THwxO?14QlgwH|QPVsXJ*I&Zf%?+P|rU%SxAwfobL?(0}VO|OPITZwH zTJ2zpy}Hn;T%w6^CDC&GMIxegs~KU#O+XKCHU$;@f3nB441nom5h6Wd-KK4~Wk?7M z%y?wO-jZyGuwlu|LOzKS1$ZDTgP_1WQ<69FdqkGPwQC-)6eouI*X@ufA(Z!=h4b!; z3#G2dzSrme*eKPNevA^thq|SnFxnWCEB-qCP+j|kBI9%4eg^D%6Y~f*$l5s1dBz7q zD24F=NQ$Kjg`xfo_DHB6wU-2TW$m5eCNxmWrbw5SFqqEkCGpfTp%LE|)KvN-nA#Qg z3{khTu?IQ{Ma^35q=2QxAx~pE4E#FaCFx=@>mW^_?S!wtlLeM$4+tcgN>N73SUkET zdKHaR84Q9M8<%_G$(S%_Xdnj_S9YMTCr@V|5tL`6Fe`~os0$Ef2di1rNZMNz0HUzq z*#sX3$AWs-9b0sUmUPV1TSt&|b%R3A`uv$rM*JY4e67$_PW%;tK)s!C8e{N%6v2jb zXrGzGAyyD*JNCoEH}QSsn5`4)@5UP3QxZBKBw@sz>|g^+%3ke|zcR?vP3dp14mH0Y z8h9mN9vw)U&2{N4nZoee?7mmfz_+JdOW*_?VXfDv$(6HSbO;=1(|6 z540dIbKI#oVFg?tCJtbnf`$B@a!vy0OAvh4)Ecj_otI)b$!iFv zM!3FAwn`az+JO6e&kG~DRTTe#SbY5ZFZX5T`<4y8H7_aiw}~)%ME;&F<-AEdG0tfE zF7J2xwbSUBsA#jbe_SX!peJF-+`hjf`-QDQdZUiR!$4aU|DMbXM$*w8YLVSUC;+3Vt2a)7$+Rzog6aS=Z*6;`QsY(nAxsv2)i==;N!c zH|>oyrne&@fPZU?$gz^{r#*8oU9XitZM}%&bA5X&HQJl8T0ntaZ|d~aL@;V9;^w$7 z1Curb4O6v*;ZN2@`_P%iuuJ09*xp6J5i#qjWiNE>q?bSDw}~NWMD+Cqb~vwd)1kPE zDa2*RDk9tu#0cw+3PN7egTuMW^Q20JejWTS4KhsRLGX_{gZkN@k1Pu znt%c3kQUC-cp3Tc{BS08<)b@j`;e}jsUeICW65Mfvo*$|y3b!XzVJKY^&1Hvo*3~=N^!?CNn@>S(^|rs65$l}Nd3A%W28^yXze8Z#R~Vw_m`~w|g~QRQ zncueG&OLrqT?@VXb^h7d$g}nL!kha3{zFO>n!x_*+8X!AKQCsV&CIQ=$!ib=t_>*G zLOKHfA%L-Wuy=KEP-+rq1^C{u`B0B)3$;e5kdbWv?n1>U6v#VdTfd;vmQ}*SOZWie z)swsHp$W*)UP zk}2SgpKz@MgfFvcM1Aa};DydUQ9IdUSG=2m@e1U;S(3!I8}wM0q%NaOB8X#^jC} z-Tt-j`Q1o&OM3?+0dZ}s#}^M3(Q;h!=6Qx41Q_i2bZ9KsYTF!Cx*NN@)8jLCnw^~N zxao1$H0k&E`EAa4&CNeX%UZWe6cDR{+&JgrsM-38j85b_jBk{fgr=vq^A)_qdPjsj3G!+s8UT90_lTP(GNP z&HY%ARW+JS; zz0~~hT&YVWH8t>n{zc2Gah7!$#aJr1#+oM}hsJQ-61a@ZtMsJWb`*?6)v7$Ag>!IT zu6u94c=Khoy%vf#%c20O+0d?Vfk`fLp4)m8!d3=O*Bg-?nd~T9uQ_<1IJ_U9v>+Hs zUcj=}5wKAsd)Jad7U9;5;oZcXZmKACq3e5S`W0&l?U4Va#BrtDc|ztWk~Q4t#P zLilt7VB9gioGKCzmkfehYmGM8qe0Pvg`8t-Poo2kjj{219Q9tXFIM}VTP7kobU%@k zT3T7Oj7d0)e9;CP5I=CYi;X7i>#UoRi<&>;zwrC#^oM4w5RBvP&EjyG}94=W@|1cGywkA;odn-KRzHO?U_|3`rO@UPoj>TH)5U zBQm^br`Euw2GRV-mxi0eL|lbtC3J(Ct)==Jwhs3XV$0LfTmm8F6Ds6jT4Vke9KJFw zDU;Y9ILwznB9XF*`HePI#@y$OytZfGqc65b7#g@P>C=1<2BE+l&tA;Udb0!f9jg4q zOo#)5cI+Z-<2a|3hCkP7GO6KfoPg(GEipB6vYMUjW&+wb2JgX7;Qzq0daQ^tXi3SK z_n?=4Fky70LQ)P=Sfe3u?-Xm)zV;6HoIbF{Pz!JrUedKr^J|`(+(`DCTX(SKKP1m0 z=jFVgW^VM}oZHs6Ft@+tJK};!qedx=W& z!j#fWVpAZ5rJBS>K;Pl~N|{{WZ@HnycH2{uE%&iYaDKyE*}<4y*#Fqo&7p$-|518$ zQWv+#1IDe1M4!z)T)M6Hy7D0v$?v?-Q=XSJv2@8)ID+c47nIcA8{vB(N3edZw0s&} z1r?&6QU9Y1#b2=1J65YjWyJ=#beo_Psz_nn2=aCG1Ym{obZrGeY*u}p7*U=`mmFAPY6`GUf`lWnrPgNb_VhgG11GQMcaeTlgc(Y0HI41rnBz=@?j8wm*twryH| z@D+zCqnzIb-gNCRR62t(+duvNlG{%8o1u4$x7}mWhd_u)i5|GFy$u@$VbjN=Fc^hB zQy1~Xc^7$5)1^u>qO6^gH>X}jdb2+voQ&EA0@8QqCYs_We4PV}ummy;b01;WEL~ju zzY|WftgL)y322wZ6Y3)^>~;yrKjD4y3Q6w1&s2%_IG5H^>j!fO_HD5~v$cD3_F1MD z_@gxuI8|5U;(kd`dbd`}y5zE*59cn_jahko$PsWiRFBVuWCfUdQ6N!?L#nJLBkM+K z2mi}Gxb1vxIm8P znzoeSgf7&k$7V|6luu{kh6oz*C8-cY^C&#`&4Mf9anvg7FA+`~ioDVB5*-$pFgE97 z&DFgfldJ6y{Pz#3S*K%AFhNa0m9AK*-6?rf{ld;JwLtd%{T3rsSbW`qKFt4qOSWEV zP3t1g8VGfO)t_BM=JYDi<|sh$Pd@6d-lTfqQ zQ7Db%h*=!+K}hZc{P17-D>OyN{X_1#rDoI>379~gh&X6AHUKw2RxT} zB~eN`B_g2T_!0OYxqdxY=@36`xKT*GrU;83yQkPt^~y(AXp#Jd6)_ z$uMq@uioDK*l0TLH4-@wy{&%0{aPjOm8__QiXp|4WFakvE6O{`V>=~kl$gEszT%@{ za|krB0g+Mzk%ljRw&3k37Cz$|He$YY2?Mz-`gYHzBiy^+!{IuGFnp5|%a>DOQrPyuFb z9mM9)>sz%8d!QrDmc*WZz9@@H1}wmP7v3N{11cFNxIfu1sReKBltOl}B{utkt=tax z>kG$b{x(L+6+4z8xO9#ez0N6?ZRsgKndmS$H1rt>!dmYB`FSTfUhalx0iA^OA#voE ztD~u5ix?r>JJ=3Hf3rlZH7pKr#V7JB%4aCv>oZ7{MDuD#LvWW;Vxdq>Q=R!Dg9v!p zSo|35*w^I9D-cPy0?uvi6s4#W?eQ#WGC5ong+|jm6;j@4_9hZ}jAB25=6qoq&5gttU2wR)CdXSR4d&cAiac4 zb`A4oi!QJuc|4U;78K~3KKLiqLlY9{tqeGpp@*jc4iBfmTD-xPB()VyiQZpE(>d)O zznjiT`StgoS35aQGfPS>a~jK{v_o@lK*!L9qJi1rG{g7^73Q~0V$Oq=mSg376THJ9 z;QLcoMK^1|9C^-Su(&oltrR$2r74>)d zqq$y+Vw{&%5_Gu1qo$?`PU;f9F|2Hcb@ZW^LU%M`r{wwyjg_^2QIKe7HuystL7PAi z*-EcF?6A(0cUzP8mJt##+BTeoU-M0-{v~UC8kxrw-AghwSgA%^mNE2#GcG5>)3`u6 z!&JuIP*#o5ON9EB-b9^&*&q;e{<~r>eVfXU*g7&YeCVV3m#JIucW@L2H2jlQybgE~ ztk!>JFRww53Kgpb!22IgGp?N0Yl_nXG45_8Fxk!3@6e3f!p|G<)?)HeB}OBI>4SXg z>k5(rqOGa4V_D}x5A?=3_aiF8*$V*Ct#~tT+7UdiMC%_o>C$%;1AFu1`*LzFF$e;? zzNQ@j=Pfn>SD2?-cv_#Yjd?mrFdMr-dAcKR8Xh@2GxsIgkUNu!o0RPKSc5(76}sZ> z=*~gZC4HXr5d1#=3|{Psyezu*Z3^XNfyyejltI#a))O*XWe=&Si=&ng+8}L|>f8W< zjE6FkwL5GOEh5T!**^ut)=WO|CB&}n64nTU8^NYKh^)X2gUbkJP-fbzZS2;z^l_IO zN-&x~AiEe|_sNA(vlc$k$sFNF-Pv~^U=qS09zdo9Pm9v&$Szb4M7!&+R^rK+3dw=_uAd+ zn2GEUWLS(^#PbX(tZ?QaFxV0tWz)H=FX5J1$gpD=GJD%1;+~jLY|nzI6bxcTVd354 zQWr1>Ul!u!S9wyCU1`#2MSFLWii<`NDU9)Am zwk=v4T9Wig%+IG4(LR%-eq!3;qD62h=IJsf6Bo)QirJwV&LW6M{!-**1jkB+jnSg<8h4?KA3FT-_Xm zu&o)I!Pa>U?!)~X_rs(SsODho$8!cVz-ezgvklV$c$d1c8+N->`i^*R($a`;WoD%bqBv~h zC~N_6C?f;CFqh!&5A%WBG)-lQBO)V&twurZWk;O^4^4xY5L;(dqarVEyvhrph1?D= z3FC0ZY!q#!$&i_$uR9=z3_O(ZsQ6VTgrThumaee^N{G^=l4` zc2N+?aq#3OMXp^qWM}-3M5885@%9Z2_uNiXILf)+08M{&l?BzJcd=f07j^cpI0aN` zRkJT`sq<<)GSZ+TZqcr+s!ExM3noD%1W#ER9ZGa0T(_z|5{;_gkp$M}lA%6}l?Frb z^hI;Q3r4GHB7!f&J#+!y=^B+^g?Ci|AGyjZjzfRGbQ2wvH-xbalKfE`R7+$d*4Uw&0?o1WD zx^zDTZx{J|mB|gHFcwvs;l1{d{SA0A!iRwAv!`NP( z0?+i;LwXZ~c_)}-0E78)p;75fFoIKBevo+-ZCZRzwJZLLjaYwWRu~R*$w{3YQsIz@`A#KiDRMOHq zc%mq8FfMt#koK{*uYcfhA|;4K-&Xl?cXXtRz;xlHG|oh^fl0ZAGLyizYoa<38D3yJ^Sj|<9Fi>W?@ z)^P>w?X7>_YhR8zJ{q%)vVU)jX++V?2k-r>FoD$ckb zS@W<{Ut2NRxDvpM8V(0xHD5eWhvAQ0Wd6IT@|U5^sklB7*&(c@9e&?JH93dnHhk<* zJ1UK0Jlx)O6h5)$xDo?xTSl$_0m3kVR$c_xt94QK6M zJn2@e`;Nv+Cam=kgZRMszO>a|c!Qmqd6%*s)|U}!Y7UIh7T_Hm@RWa8xTLB(-4x_R z&b~M2;{;XOJM|PdD-^xXtd&P-YITJd;sF_lr4}Qm#(9$9-Yk*qo~c9|vkc(CpFD#L z=7*=_oLoge6P+S9S?+lJzmx-$kLHP`BZcuuFC~drO0bu>s!2k``uNOsz)yl)L&jP{ zN31r}$*(=ik}=VG#>OS#&09qsnY9Hu5=_E_j`#g*t@S;Ccd|ES`?YMmOy%R!kl7`E zhz|V_mB>sbv-q>ulpI~sI%N=b3p0QeeauN;$5XoUg-G2A!Y7aM^*pAe=mY9O zpz5LHU27(Y2sT4A%o*Q-plytyQ_Ov2;vL=INTzobwI`JBl2vAqO+zGdS}>;9bb8Qg zdbQ6NJA=Xj-@!8onCi~aADi6#O8hfPWq@*qA?jJS5LQID2-tDu771lOGg%IAF`?3L zCz&OS*|1?kwm6_TvL%O0a*LA<=WuQr4_jO?%3Ja{Lbl{XS+b=7QNCPdB!tBNwcu9YdFlm2{gp+xh`|woC;4g#xTb+YaZ6?eLkTP_iE+oi;Pbt>{`#W@m{; zPy)k1WP%Ya2rD=ftda<<5h4iapLYa-TR#VL_ii>>ZbeWSN#Rm^TQ;QWCgEGFEEaVM3?5FI4+g1*{T6bM>^JO31g@FnDRAIPS} zu||?D!_(Y!w@dr|HKdO< z%yH9yJ#5WwvEU!~Y~Ot|<~$m0v7n{Mx#*TE@aR9Z7jB)$(`a@&Wybq{74-aWdL5FU zTGrLkMw5nfG>;<-$Y3~yq*C9sFaRMaLV%6|*{mp|CeAP$MxUljz$CLz_(MdNGy2pC zB8JAKSSJy<`6T0y;XRx=hZq(+q6wCQqWX~s<{E8hWvfC#AbN9vhPSzdU1;MP@JsmJ zm&w|i-#4T(m3ZA;l@g+QRT>X2*UsZGIGWVtm4}z7cJuFSZB;m#1AnvbegHEIVyy0B zwc<WNXbG)i;+@Gtu5=?qd31PSy689{i9J97Aj~B!%6#{Je zi_3Et?f$H!mICmjW@DPhx|$N#sM+%6YdxhuYSPEvJRd|R=+i9cMg z+T{UHLQm0COvh@08`4U~K*d z3vu9EJ&VsSMQ}|cTzeJVRR*aGYg?7}(ANTR=nwbH;pVp3V>X+M-`i^K>uw-of9@J! zD@#ASP}XYf`M*1*6f4YZT<*Be=!>7X0SA!=teZ$h<2g+hF6hFv7Ud6FlgFtl%Q~)qT724S+o{|C zICt(0{XTxaTm1rXinh?0g)t?ufZ9|>xqtgO1XB8caVHf|FofV6VEVq`OgY6I(Gi3u zCaG2E1X9(a3uscS(vAsNi;hj+czHVn(bdR{Q#CLED4+?bfhJwVX$Z!n4_Ag`#)WW*Q;8?DtXEfvMAGdZBJm#S64Hln} zhfsne!H|)mnbRsIp@>tD{n15*_0sczbzUW;@?GO>XlZgnrys*6`3>C1038?N|7Ay! z6rrpEdj0$J{dWhGUHNKcaBv9ZDMs$Re>Xqc^KIhm?M@)@WW9)iz3dP}P1twx9+|{N zBe0%CAg~f-S+TRM>6_+BOy6xu70BVH%~d2D&m}FIwasE07t)Qp>DKI4r6qnn2!L(D z1n~x7GlABDEklhMh=2k?zz0B~UV77ObAg17XknVHH~&PGV5c8~D~V&Xm0~9HL4H%hsR%f z@}iaHZ+73{PK}suZw3Ap${sTRPn&JNks_XlFa|2cHx6^_rbvTckJR7&14e(xwe-$O7AU& zkjC(Vg>}jtOj+p^f1AeC4fHRo$mO@TTs2$pqotN#49Of-R%??Qj>AUpcnk1-7BJAy z`Yi#QePkl6Sc;fDKS%_8t~Tz*Rus`lv{3-LcC05f3b|A|Nt#5qD|U~x>yn;A@6)P; z!S@r#fM5t5+cuO*9Lu1n$~5B=ZSxG%oblAM<~}%otNv58+A8;1B56GL3E#6k=eY~~ z&G{pc-8|JQr~EqEF6mN{XfxR(#stRb2(b)G`X6<&TIJe}MCdeAn8rnF=;~Uh+7fNI zI**i^9JVd9_HXNxAEDXU_NpMi`Ct_&*0xI>aYutX;-7mi^&bzTfI@8I4i`0shQ*c@^*iOusXkesEo04K-`9 z>{T*ky1Tk&Oc|LfDHu-~lKE0$^llt<@71 z^NyxSTjvS#1Ya0cS4L_G@>FGUi>~>!n>vqq|4cY$G58Az(5Sl;ZBtSrlUoSH)=5h4oBvq4sHM#?LJuIfE513YEj zNoCcjxg`cu4%fmPGIWHR%tR0;h*SNxSS#zIDwei+v!4v8b|%w>M;NjZa{qmFEBE@C zkjzK#5-Wn3!ePT=LSTxQX&EAU?S8Yu^L~HAr2?H>@mKyd| zmwV&PbwUs@x7oRMc`Jp(vs#Q{_}`MbO^5 zZ2^Lg!74UUrc|cbrC6+NaB~()g1;ha4qBVUBgEn@$rUR}fq!lvgoBR&-^xt=7l<+a z%XLMC_4Cr!!*y!wC2w4XP+K@wRY;K91t{?$P$W@9QLr3LY!8cs^!XztMz*|q5cX>W z8x+Pf<4JCB$cjtI;HuoSpl;j;fnD@#kP(+_#AYA;@Kna*Xn{8sw?zwv1E549oxg-k z|1DC1NHc%%b(1zgOW~rrpAw_@aW+FkO98P4&_Znr(SzZTl}u|Ef^gTJkbn5$N-^tV z-vtnLe8Yci%@T6PQ(Z7*2NuJ;5v-z0RaOwoVAd6a3r*rd; zSyNOiUwmKmMZLYe%W?m9<5x2%=oJ2WKkHpDOTOQXWxiUT<}TOX`c872*=prJzNY*W z5#@F_dHT4nRFsTT?$H@t$(OWgG&NF}jLhHOV>?*lk4g7X z%9X%UNNMr!BW%~DIZ!pe+F^`K%loP8QYKWkG2Q9!+-a28PjwCt+AX%brCnXuA6t|y zc>354OGWo?BfaUuuH6ftxC{dZsU)=axF=@^hT>k<$^hQs^#!af%MP^VU@#54Fo#^U zn(LKI`SzDr(=g?R!W1!9dALTu(~VMxb&QZtPezT4NrezBJ(@ILJ|dH!G|E->29M}4 z`4Zjt`;LNe$A0|8qsi?)m@3{Y-Rf!Ku4*Uoj9mZA$$F*2SkE4+G)CJYyXU&Ax33ZM zeLS7lI4SnR9Wb-|&>7=ZXP#Zv>iDMxkH>n@WXw< zDq(B4=P!sk!SYRAj{4~`g(=!N%3mldn)3`B=+WMePSq%b@C#J{$RcloM!5Rq9Wdpl z&YG5UsJ@7+IyPqnvl9{e$dZF9WaUM0mXbRj3tO*TPi#Eh(Yt3Ce=k~DqKWLM_j=z# zt@sZo^M?$d;*8B$@bXL33C+gX+|y1g)_4M8%Dbfw>F71!?5;}s>Ye(O=2Nje;38=! zz+-7`aM!6o>dhng9Ci=0>E&5rn=HMMzIyhhCiF9vCc@KZZQ&m?HM(eM`uX}6p@9{FaK1+kE`ihT1Ugb3DH1op^=%!MPmn7Vd9e$UO{pKBc=77C$i{H*cuQjf-@}tFy7TIG z2i7K{k@qF=BFn8RNvG`^Cobb-#dN=OaG>`oFPid(;d31S^NhMGrI8XbA} zFSeLPv@*i4>f*Lo1GVL{Jf-rTM(&#r=GHXff^i9>UzIdR+&6lxwCee>srbj+jinAj zjtg$0MSP@|D1C~KWl$h_ow#p;}w#vjF0At`k)zswLn~J+n}yd2~qlAe%wu1- zO>uvh{gP_dO<<{1-Pi#4_o1nXoAcg|-p6mZ#HTWJYv z3U=>;@ZG0MQ}CXKv$`X;8QR^Ai6ck|f*_Df7}H+BN7(P!JGp+p9|GrD0Dd;+wOc0b zenoA9@g;{5ZUG&2X4%$UOO*NXe%9p(as=&*O?J(+%Vh0K9rC$oY{~-PR zfm2d_-#!k-TbHb#p39PoRbHhQCpP@S9oJ8Q1u{H?E`F6zO^5d8IQ$<}L;A7={?yR3juYnRLyvRn%(CbnUu@)+@%#6-i^` zlzY-NqZMj2E8dsn>xRRJfn@nxRD)7EuU^8t}&SMBs+wM}Xy97~noWk=LSg8FT zi3GPy=c)`6^Uwr({Fo8*MB{wro==>lI{6Hqyz^wE4fSNWPEt)u8CkKNB%qhn^@%pj zvE8#aLv&RQJhB9xG)6WYM;DK=Jn;Q61>fW2c0bjqC%lXHN*&=N=cEywj|)^N+|-y!plamG%eDivI|2rBWJ5;K7mzUe%2%;sDqs8nd8A~EH~B5+^GY0;QONYE%F1`S9fLqqv# zYLx8mWVyHu+N=j&{7B~KSn^QpvX*p=Xo($mXkErN6kjE9#bJE&2}%K)j_ydz^oUq^ za0miW@XRpkv{c7Hk0VL%@ml{Tge}@8n5J??(qtO8&8pr1SnI}O9swzFMh!`+Zdg&~ zPT8L}t##tL>PO&l6(NQ5^m0s9dF*rEa`htSMJtxeV5qWgMG<9LCP%V+bd1cpJdL18 z&^lpFdQ&G$pD`7TE3W!LmS?B^eKeo=kyNncQpS@H)8=5xx2|wzL*E?uZNi>LJ(KuH zS*?#Ch;Xiyp11*4OK^gky2n3ZjN=zxZ8#wcnUiynNJ%l*tfT(Yt&W2>E4w=^tcgF& zs)NRf(EJDNdXsu@vWXsuF~gKX8{q&9BUw9@b2=M~mg;4N22LM&xh30(3%2Sx@xZi# zJ8TW4`!Brc_cTGAofK6(8Ybw5kvgLg$Hav#kRmE{tdh&eZF``s>n@@N0Wp8Ng)HM6J}#XV-7UUeOe}@@^pfq19V{`d{M?oeGWJ@ zyda=bd(PL4#-zM(MgBdPZJZWN)}kI>?&;kK+VA^iimm+XVSqqr!MHunf@l_(OdWwW z(GY0nl-6Vm#`;N6?n$s1%XE`ZVt!A=V_vdWT;YiADj3Q%)p|Ry{d+-DR_tV}4sHJ% z6Yzm6OVk{HewQ?YD27(tB!+8`Skm3I89B4#(%XcO8j#$)C#&~YG=a{-VcN51 z6G487jEpyL5k2`uBRHS-yvco6=2|J&&e*xKtjpHIL|P0&;_=lq>L$WNF%D$G{dfT! zGr6e6Zim34S%Ug)`q8?Dsae>Bcp16et;9cUNcw(d?!8Hm(A2~Pb!xM_x=o}*B0~5w z^24^*pd&8Rb}NAI^=0Bt=vRLk`EwUS&;kBLuPkg(yZ4pHQB@e8RU2lkVk+sL^A%)$ z1Vm)##BDqAfO4}PPZ7eEe_I^-^7`5zWu#|#_N?bU9f+AGXgNPKzl)D#&O`H$i?=%i zocx+yh|8L^VB{w>Tt-m}FG;i2EyKx)&IV3#mX10~g`iOG=wlWIztdsL)9_?a{Jr(TcN49T6d+O3* zpM-1L8BDwq_F{jlZE*5>QAW^JGt=FLgTkEeNgWM-|CA+$`F%kI%iG3DxQb~ zK0BB8KPPZ;r4e8dTY~<($sx59{n>fn{L6+wHqm54G1B5RrQ1~XLWA~du-fXqgUn)W z>vsLa`fMk5OY{)7L@FvNAGWeK+>4`$a09$8dq^g-EC#I_woT(qw_N+Mv5ZQwIO5ze zsVz#g2x2^H(>B^pgDC%%F?=}*kIQC0l$z{=c;Wj7%mVYRotc%DMD|At1qf)@=XPA6 z+RKHOj%LgO{Wm`7Bj7E!5w99v7f z5_fDm|BqiPo4UVv3i>qDi~Y z1T#k)NrS9blkO^lr#N5v9{R+sb39d1jlEwxv;g zJnPy3kXOC6RnhyiL722! zc6C9MwY6kdTnwprX=#$^xE6fSvu|Lb))#RoLawmEx4k085)DzHOp-eDv zP9T<|ckuN==UQ?QQtmipma6n$V*NGvVYg;1`2 z#8a;x+lpyD?GLjU9WOfVT}Xx*m5#;7OZPc^TM-A zb;c}g-Sb^9t~F8g@j$l(V@U+1PE(09GfPZ)UTe1b57;?~85*&=L&@q!Gqu?(y*Kq+ zG8C|as(?b1y|ZTvd(RL&PFQKUQXsd9bm(0o z+qfSv#Ut>kfKpplZ*<#7;KS3yqzR&2Y`V4rBpwpbGLvet8?@q}@XsZQg4&f*v*R`k zV$s3e7LZgau5Y}q8=PGrIAwv*OZqef_t15ONK8c0E(#@^t<|@b4s&z}NyuhU;tmgD z(-C!1imQj$3Gu_)X`#EO>ATy>Y_fP2o2b5)ifP&^`fONOE@%s;hb6MR=*JRr z8Bo7g(&t{*E%9GMwLgevrkDQIT3P_79G&gi##;BumtOJP7gunl(X1VYc&f$kOn=k& z^*OhMsEDE!XIasd_T?oj5Qf2)8KW=Q{Qc=r>={@;bNb+e~f0>{_AC z3L(QNmjbZzp}x%YGP%F-UypHj!3e8i= zN4Ft@p+(PkjZ4W_3KC@TMOsHaTggS*|FXC4_FXlVTY29Q=4OW^;wm3Qr{+v)D5zEV zAvo!*ex}Z%kkZ=yOgrh$e-M)*NvWmyhj=+?L5oca?IQd_V>U#3PE|zM9*cg@fdQYJ zq?O@$_TC>UTtkLjs8dH~H9TkYBF}v#J|(KVg>p~5l<3vd3no8#a_$kmC=Q%M;yHxJ zUJ%c0sgv8IIkKt!t2Z7s!5q^%Cr#4PYSnHgG0Y*g)^0FYIQ-0}ozBlAFZbbB##v}$ zU<9&WBJu_wIC8jJQ6{Z8&Qn!vb$aPt-kSRQPYWgrBbzUcB!OQ*@4yc;VGL33z%pDu zMb#ALA>3~A%DY2`M$Ss{ifwOK%)|ru_SLPkYVdt-9Ttw~ut`!_PVi_X$9%?avp}G! zIjR&A*v5%G7VyAMPA5E^Bj{TV9)i5W)J&-;bHEKb^~T%orI5*fm$vOlIa={N-PCqx zq+9-Bm|J$ZBXocNymw!8VUIPU_xK@u)b z3l1B_#1B}iR)t0s04LrX@$A!*amBcyJ9uZ@B<+;%orGI?F;yGSTxGBY%E$nq1_nuq zi$_P=*waDXGtdGhgiPRr=;7UQvF)ZiAqqgYgaK`}NhJ`TL<(2pcR=4h)mBgiGX3-0 z(;xE)%6KFSE?_MBV!!P*Se+g23wyeGI;6`gm0h%V^;^uK?H7lagp}8boS?G`3IPPo~7^oyBru01d`ht z^y9*+4_&qq^rJI1fPJ|f^rXqW1-ssXx+3nu?0F^ma6(f}ItqI5PvnQ1gcSOwD&db_ zCq@#0exVe4V=WPgDKPpc0C~;;@{ZHd5AjnkG}RvXg^{=ix`!C_N!;><#@i2elA%ci zbkM#oij4Eqk{yuHAA$e}G^3Lmkay}f|K*zg`0hF#ND*UBxWRSHMF&V{^VYLjKB&R|xZ)HGT`(yMdqQLQGU zX59|BVy}Is-}QlI5?ptL}C!X(8#!@=eN0POT;?(ka!P(R;E|?|1KSSDmM^ zFz%^S22PlgJ>6^2JPVH_kXtMzRH89p?{C!_`|ReV>J_q7U9m~s`t11Ckn-WS(Kb>w)SRgKr@PO<=t~>(I|^@-$Qpenh;>L%B;|W zW4qxlWItbLjjyDEVBwFvZ#K~1A5DrdmK2N>3#ua zyfI$QDZ)90Nfr+Yi;F~hOWZ{R?%v@AsH(0j^W4u+tkL+AWNM|f zM2&j@M)CCX$ehzdl^@zW(EFFE#M=h|w>&f71pF%5bOY07JEJ~8(~!_qfj9RrkgF{C zzxQ~&iK`4=AVm3g#ua@8h389U;Y`ZNq%)L@o!bOE-3EXLL+c=L6u~Fg;ddO3SOMvckM3Flg0|} zpA?y1)Y&86{|=u~Ir$TPFYe0ki-r(!xJ_}*-p_?kxD(iQhK~>oIvK1Ma?4F4Ivas< zZJKs*8YwfR{9BuU#&sX3+XH`3Eiklfqe@};>iNJJjU%Or_XZ&h@#e7|RVeo$ z9)sFA`4k}X747f%;qD+{zC=w#^oPJQEbY%O^oJ6Q&LIPL#rN!Q-#~RYATD9XN+0|{ zer^ZzR)RT)ySG)-n%GI?CwT@Z+6Y1-^}1vka!)+vp&2N}jACL;*LOYXkuc5SqBGrM z)CW4M$>&Z<%}HIX*)4mIM~i$?@e+>X^JRS=y&(vjEpe?bfT$Ct5-~_3__y_h7Oj)@;d<| zSg6TVB(&BD2KjDzyzTbA%Q^N>EVt1Lso|GRInA26Vmddx|9EeSNlGJ|hofFwu~YN! zCrbx`AFB>lPy6~BEB{n&xNPd9vd`?YW2lYWH^q_q7*H9|vng~G+s*ZIfVnoLDzbUc zbx=Z5hpMPKc^wql{E;KV&pW}=8jBb6`Fj!)(HFjVz4xo$emINY1}uT!{h4D@#x^eN z?-)(f0rhp=lvzR2qE?Yroz-p_`)x`;EaR9bD~=QG~ZalQpb<5T^tmL z560_*Mz5vYk8+VkVk6+ZkVoOGLu>N}QudM=w%ofWBEIiePqQm>RLldt7qL}EVy1BNKtRJai91L=!HaNAVGhlJKKw}}ECJwD6$ng*G7iCzDbu-MncH$^v0%=XuGW3bY{*FxI9q&k|d%lNQaaBqUH#jxN zd^(jDR$$t+TY;}b&6^Vu2GfJWu^sG$^a_=SZ5M$8kCf69z2{E-CQbU5{3CO$Cwky)4W^ojgtDH_km zvVd3)^u0Ij^iV2bn%uSE07-z-kpS=Wy3C}9YowEzI3)X!? zfn^@u{Fo*0{e@-tLP@!1qlt!@!G)b%i0C{YXg)Ko1m9r@o~0xE{kdxxCB^A9q{zOp zqQ%#U6X0D8vXBnvi>QHU^Wa7^|BeYSKw`v_?A_ioMwHyRWil;q*Q@?$ke-~jX4q5? zeZe$>Y}Pt!Lv*Y#qkTzOW;|F(g0wd*gS~Am#{8fA@E&?IO&ZcBpGXem;kMvY*m*|<{2gE`V zT~+!_l~6NvXvnDOGTJ*BTj?16C8aD!3fy;eI%$cl_w`D)4}2t~r^M_~g_vcI?u~2@{fyijV20jyz!igAD8`spy!;_FpqDD({OSb!|$q){R zWo}FEouFNqqu!_Ms^2G{{x>OkX6#*0l;DuG!aRfuNQWD|H|{NSKo(7R+mU*`1vda| zLw}6^2{^mqF3myI`Ba?$+WRIWpgIf;6vp?{9TSs4Lzt&I3oVh&Ly4R^m7}S z0|f{0;5SbY`P&mSOI^zVQMLMURYIe$^6zIo^EBKO3)Q?Mk3}%= zvdduCD_Aq0*ii@>TeAFcR8X~`3*Y9J*-(M(2&Ul`aIY!5PQqLhEtx{MnqW|r z1cJGPYpTB44lI}|2GMW8B6WG6iG>Z>m$+Kj6Ei+DUKgF&mq?)amWnG zbs1@D>jT>Ne7XL`D%K?#MqIT~)|b5k&% zp=&!i{*_X@0926tyKJ6-f>1fi}cl!Y7I@sVHD!C|1&I#~ek&b7md5b%4v^DTtbOX_ASEv%jX^#l7 zbX`6>7|9{a-(&=%+W6O)zxo0i}&w<(-;dlY(42sSh1lTFJ zsZG2urBm)-J19QKRORv6YPMOMB?oeUI>Wtf!UtquEYC;g!Yft5q9}85ZIBZH5oF{H%)Ly+|bKJ|)&p1g5NTtxjZ6#8E zh?(}&Y@;-qLpyBd-Q>!LA}QRPR#g4C##A@!U0!@i-iagiy^KdP>a#OPWE`d7jP-Qs zBsyq%l){Uiu@m%P(L*Tjb~JKzuFCYTt?)%gfE1QgjtalIbZA`Mo$<5 zZaM&;Xc0-3-Z=REc(fZ$@zpf?e?9(1uGcH23;K(MtC!xxmMqIlUp#WbYA^LEGD7DWhh6Xvy}|$cnJbxTMIg2a5!9SyC*4i z(9-H;9uFuj-|3albI$Mc69K(vh0z}q(p{lZj{3k*a}bKwz$4rsC$11zn@3QWWEUm1p||K#GbX{)Ten<`vXfK7?XCmq!FR&6KYwmAMXbMYK!Z+fzegOwBh ze%e8!Qiea#G#{)>9@l6@Y}1c!;+h!VTy2ocQ3B4 zY5gsD(oz4e zzlO8}#mt2f?bhiGC?UUCLJ|JF{WJQ)(^&XRculqEcdfmlpE8>u<5cNI#&1YPNB3{G zcYRe~aBRPY8}sobu(Y}ygvIAy$)P@YrHC!=OQ(t4F~rBQHw8Rl{4}w6&!-)D9!YFSW)YlL-K*NKk(yfIkeu4az zauVYp`VD2*AA?CAfR}d!!d%K(Ja||7?bqIL?um@-Qh_flJq_!18srw zz=rd_fc>t5_7z6-%h4&J;@0adz$?ET9e+J&j4Vtx@*BettHF{Mrv?!NqF1T6mpeDE z6S=B{X_H!Z==Tn}F0HjVsXrXEuZi{+rX>B{O}vtX#>YqZT;X%5lgC31C8*j@u(VhP?Z95?Q6uueVJw)pP5^A$%;b~aidL8G=08iO-4 zvb^&C$SC}1qv)F9pniv3;$G%iY;pgRcTZCC%nRio*dTYckeXhUQ?V|7drm7JW0uM> zzst(61$YDv@U-)}=M{l|hP1alAv!$1A>y8!)o@ewvh-M6-sYK4mLE?o?}$7^)9e>! zwT8#w*yJHoiHS*tDT}V8vWJnTvZ)D&B^Dvzt(~0%AZwBPzZZmfoC2DpNIT!7?9UI> zy$w<-4136gdYdD{@B|E08Fg(_8!K{XykXSl$vBd439QTL1G;24d@L%eSa_*=ak_h; zn3H3|TMM%^hUVncsHjO4^YGE!!W1=2YoH}qr7E+fk?}Hcdq?0sLK*1Y=M}c|(TJW& zU^(g1>;3zRFRsg_?a?p!iHy>jkV_3Q*yz37anj~~gz^WmJ(UjHK zx9z9f2fw&uwjMNBzn4|pa5}ijoA}Br{pHm=ZdUis6Z-FpY95}F-mO0mI!Gy#f73#2 zTf&!$*Tik;QXQfdLe(ZO?%0wtyK26W;GjtsNG2p1jK)*`V(4`@B>sh;1c<%I1udw* zJTrdKdBTt^5|KE-Ucn)b9S(=sIrwt-_e-O{3>3Bh^DO3!U*UtISpxnHbeEM84#lvgFjksm(GVf3Z8sD~e!slIqX4$%!_>`IMEYJo!){hNqaX z+3#eGc|?evWjn`F%-pyu^V9mF7%iF}C1`%kn_$Vxvhj9ch1XQWZruqkCW1k;ASE7p z*ZZd_`s9+8@ttbnOKCcIcYD9C3wh`(DAWL(_3BZ;JwX^D2GiMZbZg*yAbl#uDH*w{ z4{0+SVxlcrhnzU<#<{HmqpPm{yL%`em+Qi`o?>2pI&~PCiJiJ%&Axe(OdX zsEgjba8L#?b#k~XDY6x&`MT||gPM$90qm^!tWI+xqN$QO%52gR<-!Ts%`@V@0;eAHuiLSdo3YWonTD-&_omAd`ai_dbRUJ%leElvf;S>BjcX`I+ zsERwKLqbDHXP!;`jvMMgu-%c^@%#wep@yhdNO&hEThgI-yXFM+oJiIj!I4hcC zFoZ;Lg1Bb=mzMwJ&P;;<1UCjGJNMjvpK=aXbZ93F5aGm~Iztvtq#5eHV)#eBlDuro zCV6LsZi5RX?GR|s-xdF0jbeqILh?))N7yiG3e8ZbYYqnON2j^dwt^EcQo^5|3T|)M zj{530Tj!ReKl;Nj`D^KbJFK?n-t7+UNfzH)5K8W5g;d?gjn?M!B#xlA@~C%8TmNvv zZ>Llyp@J}vNu}{S;_XKmRSh^YhpHvICv2WZ;9RifWTR~f@s3w8lEc(TQn2$BiS26y z11prAWy&EJ`WBclUaDae5Gjvl>;u<2BxLvbu{8&hv+EgP-$;40) z2-fMsb1i!~R9)HAAL~iA{bm=1H}Rwu8iacN5ZY@5u1aZ|YCq5kBx5R(%G+u>0Qkek zFPxns;w^+?aDdn-mO~KR5x0yViA+E+ALBjb?UR$08W5Wux^INwZc!UFNZ8fXIRRZx zO&Lozb2L@Wfw7>?csC~oO1t(+eQEx*8fyi0Q;a$8ET5+(X>Jec;-GBc=+pj^6iFu_l|pzl+<9%42Ubhg6Str-%q40?n-he8QdER4P$X+FDeD&lbwp$pZPA_kcNr zn{VA$)RWmZ3o0=ih6__R$-g)(&FJcyO0Tf8OrX^8fJ?;*KR;yCz!}crn_Ji|e$vZ~ z7MK%n22%verm=Ufs|ZBpCSt6gse`Rgi^OPh?PCkVNdM<%xub!<1RM8B`?JLqJC4fs znT0RUh^TWc$#6`_i#*~vGz=aEkDL6L9JCH|8oD+gft^56nJM~ixjO7hJ3Kty@zju8 zwDB)-{S$aIh6-jDjT8|}%*_OM$%OwYdZCp{1co!$jaZ~!gX3%yY z6Oshsa;18l1xRuPFb4ZTEcVG%9tH?Yv106A;k$v999diHW@vt{$m{=cM~0dl!Djdt zqMKy`%M79_u%NWt7qw2bH=E7()p$5B5)b6Yk95^w(667;=M`0U1|SU6@h;5$NO7d{Zzr!r26-QTDrn@>q^Rl%_IrbhnlgJ)BY=gH%sa^5%Bv{a zsbjM?4)<(p*y+eg!EKCBo#or>*X2+!qs)-{=KJ&9(nnj&C#>Bn)!A0H;nU((3Lmy# z7?aVl8$zF+u_(pSoUsu=;8~;o;-UB83h;EhXjNg)CN@*lB`!x~HZ}_5eBpTEHUm)f z?xa;Rz(3hKc6TsSBJj(UBr#$;Qgo=%_j14_4JrxD8DbZ+v<1d zwD&9u74Y9R%>R`Ra4Xik1lAuBcW{;V{7>@ngeN$#Zz(|R*G<0U)>))3AG0g5O}vUG znJLg(^3osF0%kQYyq|67A`{)n*_eVHc3>cbT5040H&}CqQR40tL;AGL9~pT#inEwB zaoK7m3+I}F8@Hfip3^~*kPqer*ksO-Pp@DMJYk@Px{0qPZnPyS(ogFVcs84wG}0}@ zymJn>^=`PpVxMr>n`X{@_hqcD+E25PPt|BNP4{;1aCX~?N8i}4uk0)}p!#W1uk_LG zZYx2NQ1j_52A;#kiFUbeq}bmg1G0np9Gfl)6k- zx?e+;QczO%gvAyz;h;EE`OgUNb;gcybY_ojx>jtvs}w8Cqq3?LE4rE#C7ANIcwzie z(mIhU((cVpjDPIFxxF>$U7Xks9-Zew1czFuC~RR2qsLEE$*hA~J~U5TaTk(+GU$eVha2$GhG%9>i`$7038qH-Tg^;472ZqUJju z|Fy8Bnw;-@W~|F&xN(JnBGmNyce8s*%X*_hirDm`5;;_X8q0Ii`Y8purhL+bF9fNk zcZ=apTh^c@gJsWnZ%9RrJdpF~T@t{oeTVewuP}|31tAAj+-RJMOzbey^aqi?1UE`r zo90VjXiO14CbarvRl_I&LgRF7BW!+k8xp(Tb6ijA{SFrB<(@{L5ZK(stL6HC08c=$zb!3_4YyJ)c4qT!nXW{l zE0ZziVwpNXIEa9W$F#H>r6o%#7andFeA1;|%Vtw0VPO&~l`v_kY;iW0_Q}j_DgI)ae=b4fnJER$K9d2)$?K?6g&u4}?Mmr=RL0JaxFCEBw^(t#Ww4wdzfnD8~ zb*X(HsMlP7J7k{z>sR}^Kze6nJ1cl&AcDYRO>^8i(3&(m%QlhPGB8fzpib?bp44M(*XET zzoO+i<)8d3#@-ymx4i83;(!F36O^M?1UkjzEB{Rd?wsBxv}OUih1MzPwwM8z*DNIT0c#w&8|Z+CN;FR>EMCePu?XyB_L;lZc$2A)kpY zshiDC`E4EHlf`kex6{|$H#ZYZywbeL>{N$?XP;E39u7%_Dk?nGwET72_Q~WJ$m6i< z{YH9Fw7?}GKZ?fWCj?Jk`Zn1o7zv4!(miYn3oBznHQu18-LPA+^tVp~GcT$|snp#n z!{ZXG7+zjtMlMxMjjNz|xnxApXk`?2&q=kY)W>ZuVW@xY}@Lc|KzksthY?jH6|U zUj%`wJTKeDx2jkQYP3cfbtJzxB+)0wAXRT>mDz||-8W-K4XBN)2cBO_EErY%T%b%$ ze&x@K_OBi=pQgF-%Jh~SlQ>T+;afk(0%B4Ys#wXfhdCUS>!jZDWK^n!jj21Q1_#j2 zB?Xi7&(h54CeIXmEiH#-*u9nr>l{mWdWR29L~mYx46!=FEvI>pYm9?fhW3gb6Y1RP)ATs9fcFtZHtMfs=3!;A^$aS^sO(+I7xx_2&gY*i!-;v4l@JcRWU{R^qirQeGJ-WwL_$dsy7;E|z~k>%kV#-)(e- z71;k^h8gTz#*FeQ3%-NrO%_n*#DCDW8@2w$h3W6L;VzDp{+q09&LtwkH+)w(*$0`T zP~-_rN|;s_#e7h1k3MY-?!U|g6T|!aSlraEU&JmT#tBh0G4lR77hQIia7>Fv_V=?g zGTK?b%uQ^6z;7iY)kCRejOeIl2~uyTO6ELlZoY z5&eDLl|yIFfKKiD$86F`tPwdao%HY?%)R)X{^g@ZybelvQY>? zera&^RONJh?e(*>967Ax>b#K`oyePRnn2bEr&`$BMwrB-fKyxDYvi4@2KOtgwmKz+ zCI*#mmXf>$+FNXoeIE@V{#h_JtbPCP{ri1|Gc#Ao5WgCxx>L1e~I5MmWVHZ`ZF!6nJIB+5io328$xq0xB z`zmoExdu5DLE&jD`NC^{F~k8b_dJ1nrlpqtP!0a{7R-%Dw{>2^Gt&ptocW>lGKf9N zDfMsC&OxNQHYMfo8N-2ja9v?HnS04yVV{_LVPD{L+)H#)J#Q7wMN4wG9q71Tq%*OZ5!tZN^7_=zCc;19oN0Pn_dahu+lnwoePs z?qBeQ$uRU*kT7UB$JAWbVPd`|ksnwc8Iw%9QV=%&vLejpN=P!O-*j5_vlwPwcO}$E z+JxIqasU+cxmmmWxwxp?+8hudHYEDuf`(4}XGOYNvpOvLJm5c%bzLPOh>SL}V4(4_ znZ!H$hczz#cxxB0b-T`9j)vCGVQ?$;-j3O$@$UXJ<&Q^RSPvOK_(_j&<{eQ36R*R7 zHTP)e?o;3Q>$tYk@2LBc!|o<;P!xwKq@Ib2hP`*luSwe7)XXnGpmTN&hELP&iHxsi zW^09Z&`qkSVakGsBxSmrM)Zafb)&U>Bb#Du)0L z;UEs<3;0qNbR(xtN!)q8ykkT9rz&_zpw(({cflmO) zpoBU*2Qx~S=kX_r!nje7pJQ%%kb}i`u!}41wK2-a#uBN&A78{7;4D}lC7AO0w@HrZ z5o*%qP?D}gG~(y>Q9d8azMqkJ;&mCUM_l!OaSt)j7iSabLnJ1}W+*1D6sIn4ZOdFy zY7yTHP))!9Xtar}$REBA#|yk+HBFXjhDw!NW|{d+iY*cu�zBE;A6`RoYnYVbGchb9$^iIU2 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 b/pr-preview/pr-449/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5a9f9cb9ca0cd78b6ea2f3e5c9d2838dc8895598 GIT binary patch literal 8492 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 a!Vc~9U7SGB8$q3Ii#9CnAx#qS0RRAsKuhfa literal 0 HcmV?d00001 diff --git a/pr-preview/pr-449/assets/style.DtBLy4Td.css b/pr-preview/pr-449/assets/style.DtBLy4Td.css new file mode 100644 index 00000000..e8f9799e --- /dev/null +++ b/pr-preview/pr-449/assets/style.DtBLy4Td.css @@ -0,0 +1 @@ +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-roman-cyrillic.CMhn1ESj.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-roman-greek.JvnBZ4YD.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-roman-greek-ext.D0mI3NpI.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-roman-latin.Bu8hRsVA.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-roman-latin-ext.ZlYT4o7i.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-roman-vietnamese.ClpjcLMQ.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-italic-cyrillic.D6csxwjC.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-italic-greek.9J96vYpw.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-italic-greek-ext.CHOfFY1k.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-italic-latin.DbsTr1gm.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-italic-latin-ext.BGcWXLrn.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/vue-qrcode-reader/pr-preview/pr-449/assets/inter-italic-vietnamese.DHNAd7Wr.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-green-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);--vp-code-line-diff-remove-color: var(--vp-c-red-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);--vp-code-line-warning-color: var(--vp-c-yellow-soft);--vp-code-line-error-color: var(--vp-c-red-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-gray-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-brand-1);--vp-badge-tip-bg: var(--vp-c-brand-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-brand-1)}.custom-block.tip a:hover{color:var(--vp-c-brand-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-e327f06c]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.vp-doc h1>.VPBadge[data-v-e327f06c]{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge[data-v-e327f06c]{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge[data-v-e327f06c]{vertical-align:middle}.vp-doc h4>.VPBadge[data-v-e327f06c],.vp-doc h5>.VPBadge[data-v-e327f06c],.vp-doc h6>.VPBadge[data-v-e327f06c]{vertical-align:middle;line-height:18px}.VPBadge.info[data-v-e327f06c]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-e327f06c]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-e327f06c]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-e327f06c]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b267bac4]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b267bac4],.VPBackdrop.fade-leave-to[data-v-b267bac4]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b267bac4]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b267bac4]{display:none}}.NotFound[data-v-81a9a3cc]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-81a9a3cc]{padding:96px 32px 168px}}.code[data-v-81a9a3cc]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-81a9a3cc]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-81a9a3cc]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-81a9a3cc]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-81a9a3cc]{padding-top:20px}.link[data-v-81a9a3cc]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-81a9a3cc]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-a1abf3bf]{position:relative;z-index:1}.nested[data-v-a1abf3bf]{padding-left:16px}.outline-link[data-v-a1abf3bf]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:400}.outline-link[data-v-a1abf3bf]:hover,.outline-link.active[data-v-a1abf3bf]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-a1abf3bf]{padding-left:13px}.VPDocAsideOutline[data-v-8c0fa5ec]{display:none}.VPDocAsideOutline.has-outline[data-v-8c0fa5ec]{display:block}.content[data-v-8c0fa5ec]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-8c0fa5ec]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-8c0fa5ec]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-5b29a36c]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-5b29a36c]{flex-grow:1}.VPDocAside[data-v-5b29a36c] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-5b29a36c] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-5b29a36c] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-88643386]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-88643386]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-68dff59f]{margin-top:64px}.edit-info[data-v-68dff59f]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-68dff59f]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-68dff59f]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-68dff59f]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-68dff59f]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-68dff59f]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-68dff59f]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-68dff59f]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-68dff59f]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-68dff59f]{margin-left:auto;text-align:right}.desc[data-v-68dff59f]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-68dff59f]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDocOutlineDropdown[data-v-710c2da7]{margin-bottom:48px}.VPDocOutlineDropdown button[data-v-710c2da7]{display:block;font-size:14px;font-weight:500;line-height:24px;border:1px solid var(--vp-c-border);padding:4px 12px;color:var(--vp-c-text-2);background-color:var(--vp-c-default-soft);border-radius:8px;transition:color .5s}.VPDocOutlineDropdown button[data-v-710c2da7]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-710c2da7]{color:var(--vp-c-text-1)}.icon[data-v-710c2da7]{display:inline-block;vertical-align:middle;width:16px;height:16px;fill:currentColor}[data-v-710c2da7] .outline-link{font-size:14px;font-weight:400}.open>.icon[data-v-710c2da7]{transform:rotate(90deg)}.items[data-v-710c2da7]{margin-top:12px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-4656fea7]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-4656fea7]{display:none}@media (min-width: 960px) and (max-width: 1279px){.VPDoc .VPDocOutlineDropdown[data-v-4656fea7]{display:block}}@media (min-width: 768px){.VPDoc[data-v-4656fea7]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-4656fea7]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-4656fea7]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-4656fea7]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-4656fea7]{display:flex;justify-content:center}.VPDoc .aside[data-v-4656fea7]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-4656fea7]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-4656fea7]{max-width:1104px}}.container[data-v-4656fea7]{margin:0 auto;width:100%}.aside[data-v-4656fea7]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-4656fea7]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-4656fea7]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-4656fea7]::-webkit-scrollbar{display:none}.aside-curtain[data-v-4656fea7]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-4656fea7]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-4656fea7]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-4656fea7]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-4656fea7]{order:1;margin:0;min-width:640px}}.content-container[data-v-4656fea7]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-4656fea7]{max-width:688px}.external-link-icon-enabled :is(.vp-doc a[href*="://"][data-v-4656fea7],.vp-doc a[target=_blank][data-v-4656fea7]):after{content:"";color:currentColor}.VPButton[data-v-6a78db19]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-6a78db19]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-6a78db19]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-6a78db19]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-6a78db19]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-6a78db19]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-6a78db19]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-6a78db19]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-6a78db19]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-6a78db19]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-6a78db19]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-6a78db19]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-6a78db19]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-3a042f83]{display:none}.dark .VPImage.light[data-v-3a042f83]{display:none}.VPHero[data-v-c413b857]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-c413b857]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-c413b857]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-c413b857]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-c413b857]{flex-direction:row}}.main[data-v-c413b857]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-c413b857]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-c413b857]{text-align:left}}@media (min-width: 960px){.main[data-v-c413b857]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-c413b857]{max-width:592px}}.name[data-v-c413b857],.text[data-v-c413b857]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-c413b857],.VPHero.has-image .text[data-v-c413b857]{margin:0 auto}.name[data-v-c413b857]{color:var(--vp-home-hero-name-color)}.clip[data-v-c413b857]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-c413b857],.text[data-v-c413b857]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-c413b857],.text[data-v-c413b857]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-c413b857],.VPHero.has-image .text[data-v-c413b857]{margin:0}}.tagline[data-v-c413b857]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-c413b857]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-c413b857]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-c413b857]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-c413b857]{margin:0}}.actions[data-v-c413b857]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-c413b857]{justify-content:center}@media (min-width: 640px){.actions[data-v-c413b857]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-c413b857]{justify-content:flex-start}}.action[data-v-c413b857]{flex-shrink:0;padding:6px}.image[data-v-c413b857]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-c413b857]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-c413b857]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-c413b857]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-c413b857]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-c413b857]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-c413b857]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-c413b857]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-c413b857]{width:320px;height:320px}}[data-v-c413b857] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-c413b857] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-c413b857] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5d1f245]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5d1f245]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5d1f245]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5d1f245]>.VPImage{margin-bottom:20px}.icon[data-v-f5d1f245]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5d1f245]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5d1f245]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5d1f245]{padding-top:8px}.link-text-value[data-v-f5d1f245]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5d1f245]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-00516ef3]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-00516ef3]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-00516ef3]{padding:0 64px}}.container[data-v-00516ef3]{margin:0 auto;max-width:1152px}.items[data-v-00516ef3]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-00516ef3]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-00516ef3],.item.grid-4[data-v-00516ef3],.item.grid-6[data-v-00516ef3]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-00516ef3],.item.grid-4[data-v-00516ef3]{width:50%}.item.grid-3[data-v-00516ef3],.item.grid-6[data-v-00516ef3]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-00516ef3]{width:25%}}.VPHome[data-v-c00e4bb1]{padding-bottom:96px}.VPHome[data-v-c00e4bb1] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-c00e4bb1]{padding-bottom:128px}}.VPContent[data-v-f66ab897]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-f66ab897]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-f66ab897]{margin:0}@media (min-width: 960px){.VPContent[data-v-f66ab897]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-f66ab897]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-f66ab897]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c0d258eb]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c0d258eb]{display:none}.VPFooter[data-v-c0d258eb] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c0d258eb] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c0d258eb]{padding:32px}}.container[data-v-c0d258eb]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c0d258eb],.copyright[data-v-c0d258eb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-73bc42e2]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-73bc42e2]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-73bc42e2]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-73bc42e2]{color:var(--vp-c-text-1)}.icon[data-v-73bc42e2]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-73bc42e2] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-73bc42e2]{transform:rotate(90deg)}.items[data-v-73bc42e2]{position:absolute;top:64px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.header[data-v-73bc42e2]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-73bc42e2]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-73bc42e2]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-73bc42e2]{transition:all .2s ease-out}.flyout-leave-active[data-v-73bc42e2]{transition:all .15s ease-in}.flyout-enter-from[data-v-73bc42e2],.flyout-leave-to[data-v-73bc42e2]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-d572beab]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--vp-c-gutter);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-d572beab]{position:fixed}.VPLocalNav.reached-top[data-v-d572beab]{border-top-color:transparent}@media (min-width: 960px){.VPLocalNav[data-v-d572beab]{display:none}}.menu[data-v-d572beab]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-d572beab]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-d572beab]{padding:0 32px}}.menu-icon[data-v-d572beab]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-d572beab]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-d572beab]{padding:12px 32px 11px}}.VPSwitch[data-v-79b946ae]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-79b946ae]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-79b946ae]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-79b946ae]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-79b946ae] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-79b946ae] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-ebd87300]{opacity:1}.moon[data-v-ebd87300],.dark .sun[data-v-ebd87300]{opacity:0}.dark .moon[data-v-ebd87300]{opacity:1}.dark .VPSwitchAppearance[data-v-ebd87300] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-a51e01db]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-a51e01db]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-0334012c]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-0334012c]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-0334012c]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-0334012c]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-fea79092]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-fea79092]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-fea79092]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-fea79092]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-64313b78]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-64313b78] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-64313b78] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-64313b78] .group:last-child{padding-bottom:0}.VPMenu[data-v-64313b78] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-64313b78] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-64313b78] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-64313b78] .action{padding-left:24px}.VPFlyout[data-v-03537061]{position:relative}.VPFlyout[data-v-03537061]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-03537061]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-03537061]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-03537061]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-03537061]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-03537061],.button[aria-expanded=true]+.menu[data-v-03537061]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-03537061]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-03537061]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-03537061]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-03537061]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-03537061]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-03537061]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-03537061]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-b11e1860]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-b11e1860]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-b11e1860]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-fb69e327]{display:flex;justify-content:center}.VPNavBarExtra[data-v-94ee9a6a]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-94ee9a6a]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-94ee9a6a]{display:none}}.trans-title[data-v-94ee9a6a]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-94ee9a6a],.item.social-links[data-v-94ee9a6a]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-94ee9a6a]{min-width:176px}.appearance-action[data-v-94ee9a6a]{margin-right:-2px}.social-links-list[data-v-94ee9a6a]{margin:-4px -8px}.VPNavBarHamburger[data-v-42fdac0e]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-42fdac0e]{display:none}}.container[data-v-42fdac0e]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-42fdac0e]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-42fdac0e]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-42fdac0e]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-42fdac0e]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-42fdac0e]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-42fdac0e]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-42fdac0e],.VPNavBarHamburger.active:hover .middle[data-v-42fdac0e],.VPNavBarHamburger.active:hover .bottom[data-v-42fdac0e]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-42fdac0e],.middle[data-v-42fdac0e],.bottom[data-v-42fdac0e]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-42fdac0e]{top:0;left:0;transform:translate(0)}.middle[data-v-42fdac0e]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-42fdac0e]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-1b6c6405]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-1b6c6405],.VPNavBarMenuLink[data-v-1b6c6405]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-23284b7d]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-23284b7d]{display:flex}}/*! @docsearch/css 3.6.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-10d08ebf]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-10d08ebf]{display:flex;align-items:center}}.title[data-v-70340761]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-70340761]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-70340761]{border-bottom-color:var(--vp-c-divider)}}[data-v-70340761] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-b2580100]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-b2580100]{display:flex;align-items:center}}.title[data-v-b2580100]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-a2ada58b]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap}@media (min-width: 768px){.VPNavBar[data-v-a2ada58b]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-a2ada58b]{padding:0}.VPNavBar[data-v-a2ada58b]:not(.has-sidebar):not(.top){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-a2ada58b]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-a2ada58b],.container>.content[data-v-a2ada58b]{pointer-events:none}.container[data-v-a2ada58b] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-a2ada58b]{max-width:100%}}.title[data-v-a2ada58b]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-a2ada58b]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-a2ada58b]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-a2ada58b]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-a2ada58b]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-a2ada58b]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-a2ada58b]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.top) .content-body[data-v-a2ada58b]{position:relative;background-color:var(--vp-nav-bg-color)}}@media (max-width: 767px){.content-body[data-v-a2ada58b]{column-gap:.5rem}}.menu+.translations[data-v-a2ada58b]:before,.menu+.appearance[data-v-a2ada58b]:before,.menu+.social-links[data-v-a2ada58b]:before,.translations+.appearance[data-v-a2ada58b]:before,.appearance+.social-links[data-v-a2ada58b]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-a2ada58b]:before,.translations+.appearance[data-v-a2ada58b]:before{margin-right:16px}.appearance+.social-links[data-v-a2ada58b]:before{margin-left:16px}.social-links[data-v-a2ada58b]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-a2ada58b]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-a2ada58b]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-a2ada58b]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenAppearance[data-v-54b3a4f5]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-54b3a4f5]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-7fd5cc51]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-7fd5cc51]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-83fe2854]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-83fe2854]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-ffcb9fe5]{display:block}.title[data-v-ffcb9fe5]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-a62ea253]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-a62ea253]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-a62ea253]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-a62ea253]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-a62ea253]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-a62ea253]{transform:rotate(45deg)}.button[data-v-a62ea253]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-a62ea253]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-a62ea253]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-a62ea253]:first-child{padding-top:0}.group+.group[data-v-a62ea253],.group+.item[data-v-a62ea253]{padding-top:4px}.VPNavScreenTranslations[data-v-5a5eacc5]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-5a5eacc5]{height:auto}.title[data-v-5a5eacc5]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-5a5eacc5]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-5a5eacc5]{margin-right:8px}.icon.chevron[data-v-5a5eacc5]{margin-left:4px}.list[data-v-5a5eacc5]{padding:4px 0 0 24px}.link[data-v-5a5eacc5]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-ddba4ed2]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-ddba4ed2],.VPNavScreen.fade-leave-active[data-v-ddba4ed2]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-ddba4ed2],.VPNavScreen.fade-leave-active .container[data-v-ddba4ed2]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-ddba4ed2],.VPNavScreen.fade-leave-to[data-v-ddba4ed2]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-ddba4ed2],.VPNavScreen.fade-leave-to .container[data-v-ddba4ed2]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-ddba4ed2]{display:none}}.container[data-v-ddba4ed2]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-ddba4ed2],.menu+.appearance[data-v-ddba4ed2],.translations+.appearance[data-v-ddba4ed2]{margin-top:24px}.menu+.social-links[data-v-ddba4ed2]{margin-top:16px}.appearance+.social-links[data-v-ddba4ed2]{margin-top:16px}.VPNav[data-v-833d0cd0]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-833d0cd0]{position:fixed}}.VPSidebarItem.level-0[data-v-9864418a]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-9864418a]{padding-bottom:10px}.item[data-v-9864418a]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-9864418a]{cursor:pointer}.indicator[data-v-9864418a]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-9864418a],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-9864418a],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-9864418a],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-9864418a]{background-color:var(--vp-c-brand-1)}.link[data-v-9864418a]{display:flex;align-items:center;flex-grow:1}.text[data-v-9864418a]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-9864418a]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-9864418a],.VPSidebarItem.level-2 .text[data-v-9864418a],.VPSidebarItem.level-3 .text[data-v-9864418a],.VPSidebarItem.level-4 .text[data-v-9864418a],.VPSidebarItem.level-5 .text[data-v-9864418a]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-9864418a],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-9864418a],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-9864418a],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-9864418a],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-9864418a],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-9864418a]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-9864418a],.VPSidebarItem.level-1.has-active>.item>.text[data-v-9864418a],.VPSidebarItem.level-2.has-active>.item>.text[data-v-9864418a],.VPSidebarItem.level-3.has-active>.item>.text[data-v-9864418a],.VPSidebarItem.level-4.has-active>.item>.text[data-v-9864418a],.VPSidebarItem.level-5.has-active>.item>.text[data-v-9864418a],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-9864418a],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-9864418a],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-9864418a],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-9864418a],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-9864418a],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-9864418a]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-9864418a],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-9864418a],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-9864418a],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-9864418a],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-9864418a],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-9864418a]{color:var(--vp-c-brand-1)}.caret[data-v-9864418a]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-9864418a]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-9864418a]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-9864418a]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-9864418a]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-9864418a],.VPSidebarItem.level-2 .items[data-v-9864418a],.VPSidebarItem.level-3 .items[data-v-9864418a],.VPSidebarItem.level-4 .items[data-v-9864418a],.VPSidebarItem.level-5 .items[data-v-9864418a]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-9864418a]{display:none}.VPSidebar[data-v-66d1b838]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-66d1b838]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-66d1b838]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-66d1b838]{z-index:1;padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-66d1b838]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-66d1b838]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-66d1b838]{outline:0}.group+.group[data-v-66d1b838]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-66d1b838]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-dffd0917]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-dffd0917]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-dffd0917]{top:14px;left:16px}}.Layout[data-v-a399be01]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-e0eabd38]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-e0eabd38]{margin:0 auto;max-width:1152px}.love[data-v-e0eabd38]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-e0eabd38]{width:28px;height:28px;fill:currentColor}.message[data-v-e0eabd38]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-e0eabd38]{padding-top:32px}.action[data-v-e0eabd38]{padding-top:40px;text-align:center}.VPTeamPage[data-v-5849ca39]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-5849ca39]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-5849ca39-s],.VPTeamMembers+.VPTeamPageSection[data-v-5849ca39-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-5849ca39-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-5849ca39-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-5849ca39-s],.VPTeamMembers+.VPTeamPageSection[data-v-5849ca39-s]{margin-top:96px}}.VPTeamMembers[data-v-5849ca39-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-5849ca39-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-5849ca39-s]{padding:0 64px}}.VPTeamPageTitle[data-v-009aec79]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-009aec79]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-009aec79]{padding:80px 64px 48px}}.title[data-v-009aec79]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-009aec79]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-009aec79]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-009aec79]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-a3ec3a48]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-a3ec3a48]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-a3ec3a48]{padding:0 64px}}.title[data-v-a3ec3a48]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-a3ec3a48]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-a3ec3a48]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-a3ec3a48]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-a3ec3a48]{padding-top:40px}.VPTeamMembersItem[data-v-77f2aa77]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-77f2aa77]{padding:32px}.VPTeamMembersItem.small .data[data-v-77f2aa77]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-77f2aa77]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-77f2aa77]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-77f2aa77]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-77f2aa77]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-77f2aa77]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-77f2aa77]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-77f2aa77]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-77f2aa77]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-77f2aa77]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-77f2aa77]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-77f2aa77]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-77f2aa77]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-77f2aa77]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-77f2aa77]{text-align:center}.avatar[data-v-77f2aa77]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-77f2aa77]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-77f2aa77]{margin:0;font-weight:600}.affiliation[data-v-77f2aa77]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-77f2aa77]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-77f2aa77]:hover{color:var(--vp-c-brand-1)}.desc[data-v-77f2aa77]{margin:0 auto}.desc[data-v-77f2aa77] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-77f2aa77]{display:flex;justify-content:center;height:56px}.sp-link[data-v-77f2aa77]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-77f2aa77]:hover,.sp .sp-link.link[data-v-77f2aa77]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-77f2aa77]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-008d0cb2]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-008d0cb2]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-008d0cb2]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-008d0cb2]{max-width:876px}.VPTeamMembers.medium .container[data-v-008d0cb2]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-008d0cb2]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-008d0cb2]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-008d0cb2]{max-width:760px}.container[data-v-008d0cb2]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.decode-result{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drop-area{height:300px;color:#fff;text-align:center;font-weight:700;padding:10px;background-color:#3c3c43}.dragover{background-color:#10b981}.drop-error{color:red;font-weight:700}.error[data-v-df3f27d7]{font-weight:700;color:red}.barcode-format-checkbox[data-v-df3f27d7]{margin-right:10px;white-space:nowrap;display:inline-block}.fullscreen[data-v-39d64d0c]{position:fixed;z-index:1000;top:0;bottom:0;right:0;left:0}.fullscreen-button[data-v-39d64d0c]{background-color:#fff;position:absolute;bottom:0;right:0;margin:1rem}.fullscreen-button img[data-v-39d64d0c]{width:2rem}button[data-v-3ae3ffac]{margin-bottom:20px}.loading-indicator[data-v-3ae3ffac]{font-weight:700;font-size:2rem;text-align:center}.scan-confirmation[data-v-2c48d920]{position:absolute;width:100%;height:100%;background-color:#fffc;display:flex;flex-flow:row nowrap;justify-content:center}button[data-v-6622b1c4]{position:absolute;left:10px;top:10px}button img[data-v-6622b1c4]{width:50px;height:50px}.error[data-v-6622b1c4]{color:red;font-weight:700}button[data-v-cf37801d]{position:absolute;left:10px;top:10px}button img[data-v-cf37801d]{width:50px;height:50px}.error[data-v-cf37801d]{color:red;font-weight:700}.validation-success[data-v-2a6ebd39],.validation-failure[data-v-2a6ebd39],.validation-pending[data-v-2a6ebd39]{position:absolute;width:100%;height:100%;background-color:#fffc;padding:10px;text-align:center;font-weight:700;font-size:1.4rem;color:#000;display:flex;flex-flow:column nowrap;justify-content:center}.validation-success[data-v-2a6ebd39]{color:green}.validation-failure[data-v-2a6ebd39]{color:red}.VPLocalSearchBox[data-v-65963c98]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-65963c98]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-65963c98]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-65963c98]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-65963c98]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-65963c98]{padding:0 8px}}.search-bar[data-v-65963c98]:focus-within{border-color:var(--vp-c-brand-1)}.search-icon[data-v-65963c98]{margin:8px}@media (max-width: 767px){.search-icon[data-v-65963c98]{display:none}}.search-input[data-v-65963c98]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-65963c98]{padding:6px 4px}}.search-actions[data-v-65963c98]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-65963c98]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-65963c98]{display:none}}.search-actions button[data-v-65963c98]{padding:8px}.search-actions button[data-v-65963c98]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-65963c98]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-65963c98]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-65963c98]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-65963c98]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-65963c98]{display:none}}.search-keyboard-shortcuts kbd[data-v-65963c98]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-65963c98]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-65963c98]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-65963c98]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-65963c98]{margin:8px}}.titles[data-v-65963c98]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-65963c98]{display:flex;align-items:center;gap:4px}.title.main[data-v-65963c98]{font-weight:500}.title-icon[data-v-65963c98]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-65963c98]{opacity:.5}.result.selected[data-v-65963c98]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-65963c98]{position:relative}.excerpt[data-v-65963c98]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-65963c98]{opacity:1}.excerpt[data-v-65963c98] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-65963c98] mark,.excerpt[data-v-65963c98] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-65963c98] .vp-code-group .tabs{display:none}.excerpt[data-v-65963c98] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-65963c98]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-65963c98]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-65963c98],.result.selected .title-icon[data-v-65963c98]{color:var(--vp-c-brand-1)!important}.no-results[data-v-65963c98]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-65963c98]{flex:none} diff --git a/pr-preview/pr-449/camera-switch.svg b/pr-preview/pr-449/camera-switch.svg new file mode 100644 index 00000000..aee2cd71 --- /dev/null +++ b/pr-preview/pr-449/camera-switch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pr-preview/pr-449/checkmark.svg b/pr-preview/pr-449/checkmark.svg new file mode 100644 index 00000000..1b04049c --- /dev/null +++ b/pr-preview/pr-449/checkmark.svg @@ -0,0 +1 @@ + diff --git a/pr-preview/pr-449/debug-memory-leak.html b/pr-preview/pr-449/debug-memory-leak.html new file mode 100644 index 00000000..d4ef55a4 --- /dev/null +++ b/pr-preview/pr-449/debug-memory-leak.html @@ -0,0 +1,102 @@ + + + + + + Document + + + + + + diff --git a/pr-preview/pr-449/demos/DragDrop.html b/pr-preview/pr-449/demos/DragDrop.html new file mode 100644 index 00000000..2cd033e4 --- /dev/null +++ b/pr-preview/pr-449/demos/DragDrop.html @@ -0,0 +1,112 @@ + + + + + + Decode by Drag&Drop | Vue Qrcode Reader + + + + + + + + + + + + + + + + +