[
  {
    "path": ".eslintrc.json",
    "content": "{\n  \"extends\": [\"next\", \"next/core-web-vitals\", \"prettier\"]\n}\n"
  },
  {
    "path": ".gitignore",
    "content": "node_modules\n# Keep environment variables out of version control\n.env\n.env.local\n\n.next\n"
  },
  {
    "path": ".prettierrc.json",
    "content": "{}"
  },
  {
    "path": "README.md",
    "content": "# Teini\n\n> Teini (tiny, [ˈtīnē]) is an extremely small webshop leveraging awesome and free solutions like Github and Vercel.\n\nMain purpose is to get you started fast and cheap. Hit the deploy button to create your own version of Teini or see a working demo here: https://teini.vercel.app/\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fzeekrey%2Fteini&env=STRIPE_SECRET_KEY,NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY,SHOP_NAME,SHOP_CONTACT,SHOP_HEADLINE,SHOP_SUBHEADLINE&envDescription=You'll%20need%20Stripe%20API%20key.&envLink=https%3A%2F%2Fstripe.com%2Fdocs%2Fkeys&project-name=teini-copy&repo-name=teini-copy&redirect-url=https%3A%2F%2Fkrey.io&demo-title=Teini%20-%20The%20smallest%20eShop%20in%20the%20world&demo-description=A%20real%20online%20store.%20But%20without%20the%20costs%20and%20without%20complexity.&demo-url=https%3A%2F%2Fteini.co&demo-image=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1494256997604-768d1f608cac%3Fixid%3DMnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8%26ixlib%3Drb-1.2.1%26auto%3Dformat%26fit%3Dcrop%26w%3D1829%26q%3D80)\n\n## Installation\n\n### ...if you're not a developer\n\n> 💡 If you need help at any stage contact me. If you want me to setup Teini contact me as well.\n\n#### Accounts needed\n\nRunning Teini should be easy and for free. Although you'll need to create some accounts to make it work:\n\n| Account       | Description/What it does                                                   | Link                |\n| ------------- | -------------------------------------------------------------------------- | ------------------- |\n| Vercel        | Deploys and keeps the actual website running. It's awesome.                | https://vercel.com/ |\n| Stripe        | Provides the whole checkout and payment infrastructure. It's awesome, too. | https://stripe.com  |\n| Github/Gitlab | The place where the source code is stored. Awesome - yep.                  | https://github.com  |\n\n> 🤑 While Vercel and Github should be free while respecting their fair use policies, Stripe will cost some money. Fortunately, these are transaction-dependent.\n\n#### Environment Variables\n\nTo configure your store you need to set some meta data and credentials upfront. The following data needs to be set:\n\n| Environment Variable               | Description                                                                                          | Default |\n| ---------------------------------- | ---------------------------------------------------------------------------------------------------- | ------- |\n| STRIPE_SECRET_KEY                  | The Stripe secret key: https://stripe.com/docs/keys#obtain-api-keys                                  |\n| NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY | The Stripe publishable key: https://stripe.com/docs/keys#obtain-api-keys                             |\n| SHOP_NAME                          | Will show up in the browser tab and in the seo config.                                               |\n| SHOP_CONTACT                       | A way customers can contact your. Could be an email or a Twitter handle. Will show up in the footer. |\n| SHOP_HEADLINE                      | Will show up on the index (start) page and in the seo config.                                        |\n| SHOP_SUBHEADLINE                   | Will show up on the index (start) page and in the seo config.                                        |\n\nOnce you got everything together you can finally deploy your own version for Teini:\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fzeekrey%2Fteini&env=STRIPE_SECRET_KEY,NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY,SHOP_NAME,SHOP_CONTACT,SHOP_HEADLINE,SHOP_SUBHEADLINE&envDescription=You'll%20need%20Stripe%20API%20key.&envLink=https%3A%2F%2Fstripe.com%2Fdocs%2Fkeys&project-name=teini-copy&repo-name=teini-copy&redirect-url=https%3A%2F%2Fkrey.io&demo-title=Teini%20-%20The%20smallest%20eShop%20in%20the%20world&demo-description=A%20real%20online%20store.%20But%20without%20the%20costs%20and%20without%20complexity.&demo-url=https%3A%2F%2Fteini.co&demo-image=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1494256997604-768d1f608cac%3Fixid%3DMnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8%26ixlib%3Drb-1.2.1%26auto%3Dformat%26fit%3Dcrop%26w%3D1829%26q%3D80)\n\n## Usage\n\nOnce your store is up and running you definitly what to add your own products. Here is how to do this:\n\n### 1. Access the repository\n\nTo make changes you need to access the repository and change the actual source code. To do this you'll need the following tools (all of them are for free):\n\n- Git -> https://git-scm.com/\n- VSCode -> https://code.visualstudio.com/\n- Prisma Studio -> https://www.prisma.io/studio\n\nOnce you got everything installed open a terminal and type the following command:\n\n```bash\ngit clone https://github.com/username/reponame\n```\n\n> 💡 The repo url depends on your choosen service, username and repo name.\n\n### 2. Make changes to the product database\n\nOpen Prisma Studio and open the product.db file. It is located at the root level of your repo and called `products.db`. Once the database add, update or delete products.\n\n### 3. Add product images\n\nTeini holds all its static files like product images in the `public` folder. Product images in particular are store under `public/prodcuts/[productid]`. To add product images you just need to add a folder with the corresponding product-id (see your products.db) and put all product images in there.\n\n> 💡 Google recommends using the WebP as image format. You can convert your files here: https://cloudconvert.com/webp-converter\n\n### 3. Make changes to the store itself\n\nOpen a terminal and navigate (cd) to your local repository copy. Run this command:\n\n```bash\ncode .\n```\n\nNow VSCode should open and you can change what ever you want.\n\n### 4.Push your changes\n\nTo make your changes visible you need to run the following commands:\n\n```bash\ngit add .\ngit commit -m \"A message describing your work like; Added images for product 1.\"\ngit push\n```\n\nIf your go to https://vercel.com and open your project you should see that a deployment is started. If it is successfull you customers can see your changes. If it failed feel free to create an issue: https://github.com/zeekrey/teini/issues/new/choose\n\n### ...if you're a developer\n\nClone, Edit, Push. Do what ever you want.\n\n## Notes\n\nCredits for the used photos:\n\nProduct photos\nPhoto by <a href=\"https://unsplash.com/@boxedwater?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText\">Boxed Water Is Better</a> on <a href=\"https://unsplash.com/@boxedwater?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText\">Unsplash</a>\n\nSuccess Page photo\nPhoto by <a href=\"https://unsplash.com/@jdent?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText\">Jason Dent</a> on <a href=\"https://unsplash.com/s/photos/celebrate?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText\">Unsplash</a>\n"
  },
  {
    "path": "__mocks__/fileMock.js",
    "content": "module.exports = \"test-file-stub\";\n"
  },
  {
    "path": "__tests__/api/products.http",
    "content": "GET http://localhost:3000/api/products HTTP/1.1\n\n###\n\nGET http://localhost:3000/api/products?page=1 HTTP/1.1\n\n###"
  },
  {
    "path": "__tests__/unit/cart.test.tsx",
    "content": "/**\n * @jest-environment jsdom\n */\n\n/**\n * This test file should test the cart feature.\n * Currently, there are three scenarios to be tested:\n *\n * 1. Add a product to cart\n * 2. Change amount of a product in cart\n * 3. Remove product\n */\n\nimport React from \"react\";\nimport { render, fireEvent } from \"@testing-library/react\";\nimport CartPage, { getStaticProps } from \"../../pages/cart\";\nimport { Tmeta } from \"../../types\";\n\nimport { PrismaClient, Prisma } from \"@prisma/client\";\nimport { useCart, CartProvider } from \"../../lib/cart\";\n\nconst prisma = new PrismaClient();\n\nlet product: null | Required<Prisma.ProductUncheckedCreateInput>;\n\nconst TestWrapper: React.FunctionComponent<{\n  product: Required<Prisma.ProductUncheckedCreateInput>;\n}> = ({ children, product }) => {\n  const { cart, dispatch } = useCart();\n\n  React.useEffect(() => {\n    dispatch({\n      type: \"addItem\",\n      item: { product: product, images: [], count: 1 },\n    });\n  }, []);\n\n  return <>{children}</>;\n};\n\nbeforeAll(() => {\n  // Otherwise useEffect hooks won't work: https://github.com/testing-library/react-testing-library/issues/215\n  jest.spyOn(React, \"useEffect\").mockImplementation(React.useLayoutEffect);\n\n  return new Promise(async (resolve) => {\n    const _product = await prisma.product.findFirst({\n      where: {\n        name: {\n          equals: \"The first product\",\n        },\n      },\n      include: {\n        brand: true,\n      },\n    });\n\n    product = _product;\n\n    resolve(product);\n  });\n});\n\n// @ts-ignore\nafterAll(() => React.useEffect.mockRestore());\n\ndescribe(\"Test cart\", () => {\n  it(\"should add a product to cart\", async () => {\n    /**\n     * Get the actual cart page props.\n     */\n    const { props } = (await getStaticProps({\n      params: undefined,\n    })) as unknown as {\n      props: {\n        meta: Tmeta;\n        shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n      };\n    };\n\n    const { queryByText } = render(\n      <TestWrapper {...props} product={product!}>\n        <CartPage\n          {...(props as unknown as {\n            meta: Tmeta;\n            shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n          })}\n        />\n      </TestWrapper>,\n      {\n        wrapper: (props) => <CartProvider {...props} />,\n      }\n    );\n\n    const productContainer = queryByText(\"The first product\");\n    expect(productContainer).toBeInTheDocument();\n  });\n\n  it(\"should add a product of same type (count++)\", async () => {\n    /**\n     * Get the actual cart page props.\n     */\n    const { props } = (await getStaticProps({\n      params: undefined,\n    })) as unknown as {\n      props: {\n        meta: Tmeta;\n        shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n      };\n    };\n\n    const { getByText, getByTestId } = render(\n      <TestWrapper {...props} product={product!}>\n        <CartPage\n          {...(props as unknown as {\n            meta: Tmeta;\n            shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n          })}\n        />\n      </TestWrapper>,\n      {\n        wrapper: (props) => <CartProvider {...props} />,\n      }\n    );\n\n    fireEvent.click(getByText(\"+\"));\n\n    const productCount = getByTestId(\"productCount\");\n    expect(productCount.textContent).toEqual(\"2\");\n  });\n\n  it(\"should remove a product of same type (count--)\", async () => {\n    /**\n     * Get the actual cart page props.\n     */\n    const { props } = (await getStaticProps({\n      params: undefined,\n    })) as unknown as {\n      props: {\n        meta: Tmeta;\n        shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n      };\n    };\n\n    const { getByText, queryByText } = render(\n      <TestWrapper {...props} product={product!}>\n        <CartPage\n          {...(props as unknown as {\n            meta: Tmeta;\n            shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n          })}\n        />\n      </TestWrapper>,\n      {\n        wrapper: (props) => <CartProvider {...props} />,\n      }\n    );\n\n    fireEvent.click(getByText(\"-\"));\n\n    // product shouldn't be visibile because count === 0\n    const productContainer = queryByText(\"The first product\");\n    expect(productContainer).not.toBeInTheDocument();\n  });\n});\n"
  },
  {
    "path": "__tests__/unit/productsDb.test.ts",
    "content": "import { PrismaClient } from \"@prisma/client\";\nconst prisma = new PrismaClient();\n\nafterAll(async () => {\n  await prisma.$disconnect();\n});\n\ntest(\"product.db should have at least one product\", async () => {\n  const allProducts = await prisma.product.findMany();\n\n  expect(allProducts.length).toBeGreaterThan(0);\n});\n\ntest(\"product.db should have at least one product in stock\", async () => {\n  const productsInStock = await prisma.product.findMany({\n    where: { availability: \"inStock\" },\n  });\n\n  expect(productsInStock.length).toBeGreaterThan(0);\n});\n"
  },
  {
    "path": "__tests__/unit/shipping.test.tsx",
    "content": "/**\n * @jest-environment jsdom\n */\n\n/**\n * This test file should test the shipping option feature.\n * Currently, there are three scenarios to be tested:\n *\n * 1. A product needs shipping\n * 2. A product doesn't need shipping\n * 3. Shipping costs are set to $0.00 because of isFreeFrom attribute\n */\n\nimport React from \"react\";\nimport { render } from \"@testing-library/react\";\nimport CartPage, { getStaticProps } from \"../../pages/cart\";\nimport { Tmeta } from \"../../types\";\n\nimport { PrismaClient, Prisma } from \"@prisma/client\";\nimport { useCart, CartProvider } from \"../../lib/cart\";\n\nconst prisma = new PrismaClient();\n\nlet products: Map<\n  \"productWithShipping\" | \"productWithoutShipping\" | \"productHasFreeShipping\",\n  Required<Prisma.ProductUncheckedCreateInput>\n> = new Map();\n\nconst TestWrapper: React.FunctionComponent<{\n  product: Required<Prisma.ProductUncheckedCreateInput>;\n}> = ({ children, product }) => {\n  const { cart, dispatch } = useCart();\n\n  React.useEffect(() => {\n    dispatch({\n      type: \"addItem\",\n      item: { product: product, images: [], count: 1 },\n    });\n  }, []);\n\n  return <section>{children}</section>;\n};\n\nbeforeAll(() => {\n  // Otherwise useEffect hooks won't work: https://github.com/testing-library/react-testing-library/issues/215\n  jest.spyOn(React, \"useEffect\").mockImplementation(React.useLayoutEffect);\n\n  return new Promise(async (resolve) => {\n    const productWithShipping = await prisma.product.findFirst({\n      where: {\n        needsShipping: {\n          equals: true,\n        },\n      },\n      include: {\n        brand: true,\n      },\n    });\n\n    const productWithoutShipping = await prisma.product.findFirst({\n      where: {\n        needsShipping: {\n          equals: false,\n        },\n      },\n      include: {\n        brand: true,\n      },\n    });\n\n    const productHasFreeShipping = await prisma.product.findFirst({\n      where: {\n        price: {\n          gt: 10000,\n        },\n        needsShipping: {\n          equals: true,\n        },\n      },\n      include: {\n        brand: true,\n      },\n    });\n\n    products.set(\n      \"productWithShipping\",\n      productWithShipping as unknown as Required<Prisma.ProductUncheckedCreateInput>\n    );\n    products.set(\n      \"productWithoutShipping\",\n      productWithoutShipping as unknown as Required<Prisma.ProductUncheckedCreateInput>\n    );\n    products.set(\n      \"productHasFreeShipping\",\n      productHasFreeShipping as unknown as Required<Prisma.ProductUncheckedCreateInput>\n    );\n\n    resolve(products);\n  });\n});\n\n// @ts-ignore\nafterAll(() => React.useEffect.mockRestore());\n\ndescribe(\"Test shipping methods\", () => {\n  it(\"should not show shipping options (product doesn't need shipping).\", async () => {\n    /**\n     * Get the actual cart page props.\n     */\n    const { props } = (await getStaticProps({\n      params: undefined,\n    })) as unknown as {\n      props: {\n        meta: Tmeta;\n        shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n      };\n    };\n\n    const { queryByText } = render(\n      <TestWrapper product={products.get(\"productWithoutShipping\")!}>\n        <CartPage\n          {...(props as unknown as {\n            meta: Tmeta;\n            shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n          })}\n        />\n      </TestWrapper>,\n      {\n        wrapper: CartProvider,\n      }\n    );\n\n    const shippingOption = queryByText(\"Free Shipping\");\n\n    expect(shippingOption).not.toBeInTheDocument();\n  });\n\n  it(\"should show shipping options with 0.00 as price.\", async () => {\n    /**\n     * Get the actual cart page props.\n     */\n    const { props } = (await getStaticProps({\n      params: undefined,\n    })) as unknown as {\n      props: {\n        meta: Tmeta;\n        shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n      };\n    };\n\n    const { queryAllByText } = render(\n      <TestWrapper product={products.get(\"productHasFreeShipping\")!}>\n        <CartPage\n          {...(props as unknown as {\n            meta: Tmeta;\n            shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n          })}\n        />\n      </TestWrapper>,\n      {\n        wrapper: (props) => <CartProvider {...props} />,\n      }\n    );\n\n    const shippingOptionPrice = queryAllByText(\"$ 0.00\");\n    expect(shippingOptionPrice[0]).toBeInTheDocument();\n  });\n\n  it(\"should show shipping options (product needs shipping).\", async () => {\n    /**\n     * Get the actual cart page props.\n     */\n    const { props } = (await getStaticProps({\n      params: undefined,\n    })) as unknown as {\n      props: {\n        meta: Tmeta;\n        shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n      };\n    };\n\n    const { queryByText, debug } = render(\n      <TestWrapper product={products.get(\"productWithShipping\")!}>\n        <CartPage\n          {...(props as unknown as {\n            meta: Tmeta;\n            shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n          })}\n        />\n      </TestWrapper>,\n      {\n        wrapper: (props) => <CartProvider {...props} />,\n      }\n    );\n\n    const shippingOption = queryByText(\"Free Shipping\");\n    expect(shippingOption).toBeInTheDocument();\n  });\n});\n"
  },
  {
    "path": "components/Button.tsx",
    "content": "import { styled, keyframes } from \"../stitches.config\";\n\nconst Button = styled(\"button\", {\n  all: \"unset\",\n  background: \"$crimson3\",\n  fontFamily: \"Work Sans, sans serif\",\n  color: \"$crimson11\",\n  padding: \"18px 24px\",\n  borderRadius: \"1px\",\n  fontSize: \"$3\",\n  cursor: \"pointer\",\n  boxShadow:\n    \"0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04)\",\n\n  \"&:hover\": {\n    background: \"$crimson4\",\n  },\n\n  \"&:focus\": {\n    boxShadow: \"0px 0px 2px 0px $crimson11\",\n  },\n\n  '&:disabled': {\n    background: '$crimson2',\n    color: '$crimson6',\n    cursor: 'wait'\n  }\n});\n\nexport const Loading = () => {\n  const skBouncedelay = keyframes({\n    \"0%, 80%, 100%\": {\n      transform: \"scale(0)\",\n    },\n    \"40%\": {\n      transform: \"scale(1.0)\",\n    },\n  });\n  const Spinner = styled(\"div\", {\n    textAlign: \"center\",\n    margin: '0 $3',\n\n    \"& > div\": {\n      width: \" 8px\",\n      height: \"8px\",\n      backgroundColor: \"$crimson11\",\n      marginLeft: '4px',\n\n      borderRadius: \"100%\",\n      display: \"inline-block\",\n      animation: `${skBouncedelay} 1.4s infinite ease-in-out both`,\n    },\n\n    \"div:nth-child(1)\": {\n      animationDelay: \"-0.32s\",\n    },\n\n    \"div:nth-child(2)\": {\n      animationDelay: \"-0.16s\",\n    },\n  });\n\n  return (\n    <Spinner>\n      {[...Array(3).keys()].map((i) => (\n        <div key={i} />\n      ))}\n    </Spinner>\n  );\n};\n\nexport default Button;\n"
  },
  {
    "path": "components/Footer.tsx",
    "content": "import { styled } from \"../stitches.config\";\nimport type { Tmeta } from \"../types\";\n\nconst Wrapper = styled(\"footer\", {\n  padding: \"$4\",\n});\n\nconst Footer: React.FunctionComponent<Tmeta> = ({ name, contact }) => {\n  return (\n    <Wrapper>\n      <strong>{name}</strong>\n      <p>{contact}</p>\n    </Wrapper>\n  );\n};\n\nexport default Footer;\n"
  },
  {
    "path": "components/Layout.tsx",
    "content": "import { styled, Box } from \"../stitches.config\";\n\nconst LayoutWrapper = styled(\"div\", {\n  background: \"$mauve1\",\n\n  \"@small\": {\n    padding: \"10% 10%\",\n  },\n\n  \"@medium\": {\n    padding: \"10% 15%\",\n  },\n\n  \"@large\": {\n    padding: \"5% 20%\",\n  },\n});\n\nconst PageWrapper = styled(\"div\", {\n  margin: \"0 $4\",\n  borderLeft: \"1px solid $mauve4\",\n  borderRight: \"1px solid $mauve4\",\n});\n\nconst Layout: React.FunctionComponent = ({ children }) => {\n  return (\n    <LayoutWrapper>\n      <Box\n        css={{\n          height: \"$4\",\n        }}\n      >\n        <Box\n          css={{\n            margin: \"0 $4\",\n            height: \"$4\",\n            borderLeft: \"1px solid $mauve4\",\n            borderRight: \"1px solid $mauve4\",\n          }}\n        />\n      </Box>\n      <PageWrapper>{children}</PageWrapper>\n    </LayoutWrapper>\n  );\n};\n\nexport default Layout;\n"
  },
  {
    "path": "components/MenuBar.tsx",
    "content": "import Link from \"next/link\";\nimport { styled, keyframes, Box } from \"../stitches.config\";\nimport { useCart } from \"../lib/cart\";\nimport {\n  HomeIcon,\n  ArchiveIcon,\n  GearIcon,\n  SunIcon,\n  MoonIcon,\n} from \"@modulz/radix-icons\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport * as Switch from \"@radix-ui/react-switch\";\nimport { useTheme } from \"next-themes\";\nimport { useEffect, useRef, useState } from \"react\";\n\nconst scaleUp = keyframes({\n  \"0%\": { transform: \"scale(1)\", background: \"$crimson10\" },\n  \"50%\": { transform: \"scale(1.5)\" },\n  \"100%\": { transform: \"scale(1)\" },\n});\n\nconst Wrapper = styled(\"div\", {\n  paddingLeft: \"$4\",\n  marginLeft: \"-$4\",\n  paddingRight: \"$4\",\n  marginRight: \"-$4\",\n  borderBottom: \"1px solid $mauve4\",\n  borderTop: \"1px solid $mauve4\",\n});\n\nconst MenuBarBox = styled(\"div\", {\n  display: \"flex\",\n  justifyContent: \"space-between\",\n  alignItems: \"center\",\n  boxShadow:\n    \"0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04)\",\n  background: \"$mauve1\",\n\n  \"&>svg\": {\n    cursor: \"pointer\",\n    color: \"$mauve11\",\n  },\n});\n\nconst CartSizeIcon = styled(\"div\", {\n  position: \"absolute\",\n  bottom: \"-4px\",\n  right: \"-8px\",\n  background: \"$crimson1\",\n  border: \"1px solid $mauve5\",\n  width: \"16px\",\n  height: \"16px\",\n  fontSize: \"6px\",\n  borderRadius: \"9999px\",\n  display: \"grid\",\n  placeContent: \"center\",\n\n  variants: {\n    animate: {\n      true: {\n        animation: `${scaleUp} 200ms`,\n      },\n      false: {},\n    },\n  },\n\n  defaultVariants: {\n    animate: false,\n  },\n});\n\nconst Item = styled(\"div\", {\n  flex: 1,\n  display: \"grid\",\n  placeContent: \"center\",\n  padding: \"$4\",\n  cursor: \"pointer\",\n\n  \"&:hover\": {\n    background: \"$mauve2\",\n  },\n\n  \"&:focus, &:active\": {\n    boxShadow: \"0px 0px 2px 0px $mauve10\",\n  },\n});\n\nconst StyledContent = styled(Popover.Content, {\n  borderRadius: 1,\n  padding: \"20px\",\n  fontSize: 14,\n  backgroundColor: \"$mauve1\",\n  border: \"1px solid $mauve4\",\n  color: \"black\",\n});\n\nconst StyledTrigger = styled(Popover.Trigger, {\n  all: \"unset\",\n});\n\nconst StyledSwitch = styled(Switch.Root, {\n  all: \"unset\",\n  width: 42,\n  height: 25,\n  backgroundColor: \"$crimson8\",\n  borderRadius: \"9999px\",\n  position: \"relative\",\n  WebkitTapHighlightColor: \"rgba(0, 0, 0, 0)\",\n  \"&:focus\": { boxShadow: `0 0 0 2px $crimson9` },\n  '&[data-state=\"checked\"]': { backgroundColor: \"$crimson9\" },\n});\n\nconst StyledThumb = styled(Switch.Thumb, {\n  display: \"grid\",\n  placeContent: \"center\",\n  width: 21,\n  height: 21,\n  backgroundColor: \"$crimson4\",\n  color: \"$crimson11\",\n  borderRadius: \"9999px\",\n  transition: \"transform 100ms\",\n  transform: \"translateX(2px)\",\n  willChange: \"transform\",\n  '&[data-state=\"checked\"]': { transform: \"translateX(19px)\" },\n});\n\nconst Flex = styled(\"div\", { display: \"flex\" });\nconst Label = styled(\"label\", {\n  color: \"$crimson12\",\n  fontSize: 15,\n  lineHeight: 1,\n  userSelect: \"none\",\n});\n\nconst MenuBar: React.FunctionComponent = () => {\n  const { cart } = useCart();\n  const { theme, setTheme } = useTheme();\n  const [animate, setAnimate] = useState(false);\n\n  return (\n    <Wrapper>\n      <Popover.Root>\n        <Popover.Anchor>\n          <MenuBarBox>\n            <Link href=\"/\" passHref>\n              <Item as=\"a\" aria-label=\"Link to Home\">\n                <HomeIcon />\n              </Item>\n            </Link>\n            <Link href=\"/cart\" passHref>\n              <Item as=\"a\" aria-label=\"Link to Cart\">\n                <Box css={{ position: \"relative\" }}>\n                  {cart && (\n                    <CartSizeIcon\n                      animate={animate}\n                      onAnimationEnd={() => setAnimate(false)}\n                    >\n                      {cart.length}\n                    </CartSizeIcon>\n                  )}\n                  <ArchiveIcon />\n                </Box>\n              </Item>\n            </Link>\n            <Item>\n              <StyledTrigger aria-label=\"Settings\">\n                <GearIcon />\n              </StyledTrigger>\n            </Item>\n          </MenuBarBox>\n          <StyledContent side=\"top\">\n            <Flex css={{ alignItems: \"center\" }}>\n              <Label htmlFor=\"s1\" css={{ paddingRight: 15 }}>\n                Theme\n              </Label>\n              <StyledSwitch\n                id=\"s1\"\n                onClick={() => setTheme(theme === \"light\" ? \"dark\" : \"light\")}\n                aria-label=\"Theme switch\"\n              >\n                <StyledThumb>\n                  {theme === \"light\" ? <SunIcon /> : <MoonIcon />}\n                </StyledThumb>\n              </StyledSwitch>\n            </Flex>\n            {/* <Popover.Close /> */}\n            {/* <Popover.Arrow /> */}\n          </StyledContent>\n        </Popover.Anchor>\n      </Popover.Root>\n    </Wrapper>\n  );\n};\n\nexport default MenuBar;\n"
  },
  {
    "path": "components/PageHeadline.tsx",
    "content": "import { styled, Box } from \"../stitches.config\";\n\nconst Headline = styled(\"h1\", {\n  all: \"unset\",\n  color: \"$crimson12\",\n  fontSize: \"36px\",\n  lineHeight: \"34px\",\n  fontFamily: \"Work Sans, sans serif\",\n});\n\nconst PageHeadline: React.FunctionComponent = ({ children }) => (\n  <Box\n    css={{\n      borderBottom: \"1px solid $mauve4\",\n      paddingLeft: \"$4\",\n      marginLeft: \"-$4\",\n      paddingRight: \"$4\",\n      marginRight: \"-$4\",\n      marginBottom: \"$4\",\n      paddingTop: \"$4\",\n      paddingBottom: \"$4\",\n    }}\n  >\n    <Headline>{children}</Headline>\n  </Box>\n);\n\nexport default PageHeadline;\n"
  },
  {
    "path": "components/ProductCard.tsx",
    "content": "import Link from \"next/link\";\nimport Image from \"next/image\";\nimport { styled, Box } from \"../stitches.config\";\nimport { Prisma } from \"@prisma/client\";\nimport { currencyCodeToSymbol } from \"../lib/stripeHelpers\";\n\nimport PlaceholderImage from \"../public/placeholder.png\";\n\nconst Wrapper = styled(\"div\", {\n  display: \"flex\",\n  background: \"$crimson1\",\n  cursor: \"pointer\",\n\n  a: {\n    flex: 1,\n  },\n});\n\nconst ProductName = styled(\"div\", {\n  fontFamily: \"Work Sans, sans serif\",\n  color: \"$crimson12\",\n  fontSize: \"22px\",\n});\n\nconst ProductPrice = styled(\"div\", {\n  display: \"grid\",\n  placeContent: \"center\",\n});\n\nconst ProductBrand = styled(\"div\", {\n  color: \"$crimson11\",\n  fontSize: '12px',\n});\n\nconst ImageContainer = styled(\"div\", {\n  position: \"relative\",\n  height: \"240px\",\n  width: \"100%\",\n});\n\nconst AnimatedImage = styled(Image, {\n  transition: \".3s\",\n});\n\nconst ProductCard: React.FunctionComponent<{\n  product: Required<\n    Prisma.ProductUncheckedCreateInput & {\n      brand: Prisma.BrandUncheckedCreateInput;\n    }\n  >;\n  images?: {\n    id: number;\n    images: { paths: string[]; blurDataURLs: string[] };\n  };\n}> = ({ product, images }) => {\n  return (\n    <Wrapper>\n      <Link href={`/products/${product.slug}`} passHref>\n        <a>\n          <ImageContainer>\n            {images ? (\n              <AnimatedImage\n                src={images.images.paths[0]}\n                layout=\"fill\"\n                objectFit=\"cover\"\n                alt={images.images.paths[0]}\n                placeholder=\"blur\"\n                blurDataURL={images.images.blurDataURLs[0]}\n              />\n            ) : (\n              <Image\n                src={PlaceholderImage}\n                layout=\"fill\"\n                objectFit=\"cover\"\n                alt=\"placeholder\"\n              />\n            )}\n          </ImageContainer>\n          <Box\n            css={{\n              display: \"flex\",\n              justifyContent: \"space-between\",\n              paddingTop: \"$1\",\n              paddingBottom: \"$1\",\n              paddingLeft: \"$4\",\n              marginLeft: \"-$4\",\n              paddingRight: \"$4\",\n              marginRight: \"-$4\",\n              borderBottom: \"1px solid $mauve4\",\n              borderTop: \"1px solid $mauve4\",\n            }}\n          >\n            <div>\n              <ProductBrand>{product.brand.name}</ProductBrand>\n              <ProductName>{product.name}</ProductName>\n            </div>\n            <ProductPrice>\n              {currencyCodeToSymbol(product.currency)} {product.price / 100}\n            </ProductPrice>\n          </Box>\n        </a>\n      </Link>\n    </Wrapper>\n  );\n};\n\nexport default ProductCard;\n"
  },
  {
    "path": "components/ProductCardCart.tsx",
    "content": "import Link from \"next/link\";\nimport Image from \"next/image\";\nimport { styled, Box } from \"../stitches.config\";\nimport { Prisma } from \"@prisma/client\";\nimport { useCart } from \"../lib/cart\";\nimport { currencyCodeToSymbol } from \"../lib/stripeHelpers\";\nimport PlaceholderImage from \"../public/placeholder.png\";\n\nimport type { CartItem } from \"../lib/cart\";\nimport { useEffect, useState, useCallback } from \"react\";\n\nconst Wrapper = styled(\"div\", {\n  boxShadow:\n    \"0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04)\",\n  borderRadius: \"1px\",\n  display: \"flex\",\n  background: \"$crimson1\",\n});\n\nconst ProductName = styled(\"strong\", {\n  all: \"unset\",\n  fontSize: \"18px\",\n  lineHeight: \"18px\",\n  color: \"$crimson12\",\n  fontFamily: \"Work Sans, sans-serif\",\n});\n\nconst ProductPrice = styled(\"div\", {\n  fontSize: \"20px\",\n  lineHeight: \"20px\",\n  color: \"$crimson12\",\n  fontFamily: \"Work Sans, sans-serif\",\n});\n\nconst ProductDescription = styled(\"p\", {\n  color: \"$mauve10\",\n  fontSize: \"12px\",\n  padding: 0,\n  margin: 0,\n});\n\nconst CountButton = styled(\"button\", {\n  all: \"unset\",\n  width: 30,\n  height: 30,\n  background: \"$mauve3\",\n  color: \"$mauve10\",\n  borderRadius: \"$small\",\n  display: \"inline-grid\",\n  placeContent: \"center\",\n  cursor: \"pointer\",\n\n  \"&:hover\": {\n    background: \"$mauve4\",\n  },\n\n  \"&:focus\": {\n    boxShadow: \"0px 0px 2px 0px $mauve10\",\n  },\n});\n\nconst ImageContainer = styled(\"a\", {\n  all: \"unset\",\n  position: \"relative\",\n  height: \"130px\",\n  width: \"110px\",\n  cursor: \"pointer\",\n});\n\nconst ProductCardCart: React.FunctionComponent<{\n  item: CartItem;\n  cart: CartItem[];\n}> = ({ item }) => {\n  const { cart, dispatch } = useCart();\n  const { product, images } = item;\n\n  const count = cart.find((p) => p.product.id === item.product.id)?.count ?? 0;\n\n  const handleAddItem = () => {\n    dispatch({\n      type: \"addItem\",\n      item: { product: product, images: [...(images ?? [])], count: 1 },\n    });\n  };\n\n  const handleRemoveItem = () => {\n    dispatch({\n      type: \"removeItem\",\n      item: { product: product, images: [...(images ?? [])], count: 1 },\n    });\n  };\n  return (\n    <Wrapper>\n      <Box css={{ display: \"flex\", flex: 1 }}>\n        <Link href={`/products/${product.slug}`} passHref>\n          <ImageContainer>\n            {images?.length ? (\n              <Image\n                src={images[0].path}\n                layout=\"fill\"\n                objectFit=\"cover\"\n                alt={images[0].path}\n                placeholder=\"blur\"\n                blurDataURL={images[0].blurDataURL}\n              />\n            ) : (\n              <Image\n                src={PlaceholderImage}\n                layout=\"fill\"\n                objectFit=\"cover\"\n                alt=\"placeholder\"\n              />\n            )}\n          </ImageContainer>\n        </Link>\n        <Box css={{ padding: \"$3\", display: \"flex\", flex: 1 }}>\n          <Box\n            css={{\n              display: \"flex\",\n              flexDirection: \"column\",\n              justifyContent: \"space-between\",\n              marginRight: \"$2\",\n            }}\n          >\n            <ProductName>{product.name}</ProductName>\n            <ProductDescription>\n              {product.description.substr(0, 40)}...\n            </ProductDescription>\n            <ProductPrice>\n              {currencyCodeToSymbol(product.currency)} {product.price / 100}\n            </ProductPrice>\n          </Box>\n          <Box\n            css={{\n              display: \"flex\",\n              flexDirection: \"column\",\n              justifyContent: \"space-between\",\n              alignItems: \"center\",\n            }}\n          >\n            <CountButton onClick={handleAddItem}>+</CountButton>\n            <Box css={{ textAlign: \"center\" }} data-testid=\"productCount\">\n              {count}\n            </Box>\n            <CountButton onClick={handleRemoveItem}>-</CountButton>\n          </Box>\n        </Box>\n      </Box>\n    </Wrapper>\n  );\n};\n\nexport default ProductCardCart;\n"
  },
  {
    "path": "jest.config.js",
    "content": "module.exports = {\n  collectCoverageFrom: [\n    \"**/*.{js,jsx,ts,tsx}\",\n    \"!**/*.d.ts\",\n    \"!**/node_modules/**\",\n  ],\n  moduleNameMapper: {\n    /* Handle CSS imports (with CSS modules)\n    https://jestjs.io/docs/webpack#mocking-css-modules */\n    // '^.+\\\\.module\\\\.(css|sass|scss)$': 'identity-obj-proxy',\n\n    // Handle CSS imports (without CSS modules)\n    // '^.+\\\\.(css|sass|scss)$': '<rootDir>/__mocks__/styleMock.js',\n\n    /* Handle image imports\n    https://jestjs.io/docs/webpack#handling-static-assets */\n    '^.+\\\\.(jpg|jpeg|png|gif|webp|svg)$': '<rootDir>/__mocks__/fileMock.js',\n  },\n  testPathIgnorePatterns: [\"<rootDir>/node_modules/\", \"<rootDir>/.next/\"],\n  transform: {\n    /* Use babel-jest to transpile tests with the next/babel preset\n    https://jestjs.io/docs/configuration#transform-objectstring-pathtotransformer--pathtotransformer-object */\n    \"^.+\\\\.(js|jsx|ts|tsx)$\": [\"babel-jest\", { presets: [\"next/babel\"] }],\n  },\n  transformIgnorePatterns: [\n    \"/node_modules/\",\n    \"^.+\\\\.module\\\\.(css|sass|scss)$\",\n  ],\n  setupFilesAfterEnv: ['<rootDir>/jest.setup.js']\n};\n"
  },
  {
    "path": "jest.setup.js",
    "content": "import \"@testing-library/jest-dom/extend-expect\";\n\njest.mock(\"next/image\", () => ({\n  __esModule: true,\n  default: (props) => {\n    // Use div instead of img tag. Img tag would require props.\n    // eslint-disable-next-line jsx-a11y/alt-text, @next/next/no-img-element\n    return <div />;\n  },\n}));\n"
  },
  {
    "path": "lib/cart.tsx",
    "content": "import { Prisma } from \"@prisma/client\";\nimport {\n  createContext,\n  useReducer,\n  FunctionComponent,\n  useContext,\n} from \"react\";\n\nexport type CartItem = {\n  product: Required<Prisma.ProductUncheckedCreateInput>;\n  count: number;\n  images?: { path: string; blurDataURL: string }[];\n};\n\ntype CartAction =\n  | { type: \"removeItem\"; item: CartItem }\n  | { type: \"addItem\"; item: CartItem }\n  | { type: \"clearCart\" };\ntype Dispatch = (action: CartAction) => void;\n\ntype CartState = CartItem[] | [];\n\nconst CartContext = createContext<\n  { cart: CartState; dispatch: Dispatch } | undefined\n>(undefined);\n\nconst cartReducer = (cart: CartState, action: CartAction) => {\n  switch (action.type) {\n    case \"addItem\": {\n      // Find the index of the given product\n      const foundProductIndex = cart.findIndex(\n        (_item) => _item.product.id === action.item.product.id\n      );\n\n      // If the product was found, increse the count by 1\n      if (foundProductIndex > -1) {\n        cart[foundProductIndex].count++;\n\n        // Return a copy of the array, otherwise react won't rerender.\n        return [...cart];\n      }\n      // If the product wasn't found, add it to the cart array\n      else {\n        return [...cart, { ...action.item, count: 1 }];\n      }\n    }\n    case \"removeItem\": {\n      // Find the index of the given product\n      const foundProductIndex = cart.findIndex(\n        (_item) => _item.product.id === action.item.product.id\n      );\n\n      // If the product has a count > 1, reduce the count by one\n      if (foundProductIndex > -1 && cart[foundProductIndex].count > 1) {\n        cart[foundProductIndex].count--;\n        // Return a copy of the array, otherwise react won't rerender.\n        return [...cart];\n      }\n      // If the product has a count === 1, remove the product from cart\n      else {\n        cart.splice(foundProductIndex, 1);\n        // Return a copy of the array, otherwise react won't rerender.\n        return [...cart];\n      }\n    }\n    case \"clearCart\": {\n      return []\n    }\n    default: {\n      throw new Error(`Unhandled action type: ${JSON.stringify(action)}`);\n    }\n  }\n};\n\nconst CartProvider: FunctionComponent = ({ children }) => {\n  const [cart, dispatch] = useReducer(cartReducer, []);\n\n  const value = { cart, dispatch };\n\n  return <CartContext.Provider value={value}>{children}</CartContext.Provider>;\n};\n\nconst useCart = () => {\n  const context = useContext(CartContext);\n\n  if (context === undefined)\n    throw new Error(\"useCart must be used within CartProvider\");\n\n  // Get the total price for all products in cart\n  // @ts-ignore\n  const productsTotal: number = context.cart.reduce(\n    (total: number, item: CartItem) => total + item.product.price * item.count,\n    0\n  );\n\n  const needsShipping = !!context.cart.filter(\n    (item) => item.product.needsShipping\n  ).length;\n\n  return { ...context, productsTotal, needsShipping };\n};\n\nexport { CartProvider, useCart };\n"
  },
  {
    "path": "lib/fetcher.tsx",
    "content": "export async function fetchGetJSON(url: string) {\n  try {\n    const data = await fetch(url).then((res) => res.json());\n    return data;\n  } catch (err) {\n    console.error(err);\n    throw new Error();\n  }\n}\n\nexport async function fetchPostJSON(url: string, data?: {}) {\n  try {\n    // Default options are marked with *\n    const response = await fetch(url, {\n      method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n      mode: \"cors\", // no-cors, *cors, same-origin\n      cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n      credentials: \"same-origin\", // include, *same-origin, omit\n      headers: {\n        \"Content-Type\": \"application/json\",\n        // 'Content-Type': 'application/x-www-form-urlencoded',\n      },\n      redirect: \"follow\", // manual, *follow, error\n      referrerPolicy: \"no-referrer\", // no-referrer, *client\n      body: JSON.stringify(data || {}), // body data type must match \"Content-Type\" header\n    });\n    return await response.json(); // parses JSON response into native JavaScript objects\n  } catch (err) {\n    console.error(err);\n    throw new Error();\n  }\n}\n"
  },
  {
    "path": "lib/mapToObject.tsx",
    "content": "export const replacer = (key: any, value: any) => {\n  if (value instanceof Map) {\n    return {\n      dataType: \"Map\",\n      value: Array.from(value.entries()), // or with spread: value: [...value]\n    };\n  } else {\n    return value;\n  }\n};\n\nexport const reviver = (key: any, value: any) => {\n  if (typeof value === \"object\" && value !== null) {\n    if (value.dataType === \"Map\") {\n      return new Map(value.value);\n    }\n  }\n  return value;\n};\n"
  },
  {
    "path": "lib/stripeHelpers.tsx",
    "content": "import { Prisma } from \"@prisma/client\";\nimport type { CartItem } from \"./cart\";\n\nexport const cartItemToLineItem = ({\n  cartItem,\n  images,\n}: {\n  cartItem: CartItem;\n  images: string[];\n}) => {\n  return {\n    price_data: {\n      currency: cartItem.product.currency, //ISO Code https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency/amendments/lists/list_one.xml\n      unit_amount_decimal: cartItem.product.price,\n      product_data: {\n        name: cartItem.product.name,\n        description: cartItem.product.description,\n        images: [\"urlToImage\"],\n        // meta: { key: \"value\" },\n        // tax_code: \"dqwd\", // https://stripe.com/docs/tax/tax-codes\n      },\n    },\n    adjustable_quantity: {\n      enabled: true,\n    },\n    // dynamic_tax_rates\n    quantity: cartItem.count,\n  };\n};\n\n/**\n * This is a singleton to ensure we only instantiate Stripe once.\n * Use @stripe/stripe-js/pure to delay loading of Stripe.js until Checkout.\n */\nimport { loadStripe } from \"@stripe/stripe-js/pure\";\nimport type { Stripe } from \"@stripe/stripe-js\";\n\nlet stripePromise: Promise<Stripe | null>;\nexport const getStripe = () => {\n  if (!stripePromise) {\n    stripePromise = loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY!);\n  }\n  return stripePromise;\n};\n\nconst currencies = new Map([\n  [\"usd\", \"$\"],\n  [\"eur\", \"€\"],\n]);\n\nexport const currencyCodeToSymbol = (currencyCode: string) => {\n  return currencies.get(currencyCode);\n};\n"
  },
  {
    "path": "license.md",
    "content": "MIT License\n\nCopyright (c) 2021 zeekrey\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/types/global\" />\n/// <reference types=\"next/image-types/global\" />\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/basic-features/typescript for more information.\n"
  },
  {
    "path": "next.config.js",
    "content": "/** @type {import('next').NextConfig} */\nmodule.exports = {\n  reactStrictMode: true,\n  serverRuntimeConfig: {\n    PROJECT_ROOT: __dirname,\n  },\n  swcMinify: true,\n};\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"my-app\",\n  \"version\": \"0.2.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\",\n    \"test\": \"jest\",\n    \"release:patch\": \"release patch\",\n    \"release:minor\": \"release minor\",\n    \"release:major\": \"release major\",\n    \"gh:release\": \"gh release create\"\n  },\n  \"dependencies\": {\n    \"@modulz/radix-icons\": \"^4.0.0\",\n    \"@prisma/client\": \"^3.4.1\",\n    \"@radix-ui/colors\": \"^0.1.7\",\n    \"@radix-ui/react-popover\": \"^0.1.1\",\n    \"@radix-ui/react-radio-group\": \"^0.1.1\",\n    \"@radix-ui/react-switch\": \"^0.1.1\",\n    \"@stitches/react\": \"^1.2.5\",\n    \"@stripe/stripe-js\": \"^1.21.1\",\n    \"blurhash\": \"^1.1.4\",\n    \"next\": \"12.0.3\",\n    \"next-seo\": \"^4.28.1\",\n    \"next-themes\": \"^0.0.15\",\n    \"plaiceholder\": \"^2.2.0\",\n    \"react\": \"17.0.2\",\n    \"react-dom\": \"17.0.2\",\n    \"sharp\": \"^0.29.2\",\n    \"stripe\": \"^8.186.1\",\n    \"swr\": \"^1.0.1\"\n  },\n  \"devDependencies\": {\n    \"@testing-library/jest-dom\": \"^5.15.0\",\n    \"@testing-library/react\": \"^12.1.2\",\n    \"@types/jest\": \"^27.0.2\",\n    \"@types/react\": \"17.0.34\",\n    \"babel-jest\": \"^27.3.1\",\n    \"eslint\": \"7.32.0\",\n    \"eslint-config-next\": \"12.0.3\",\n    \"eslint-config-prettier\": \"^8.3.0\",\n    \"jest\": \"^27.3.1\",\n    \"prettier\": \"2.4.1\",\n    \"prisma\": \"^3.4.1\",\n    \"react-test-renderer\": \"^17.0.2\",\n    \"release\": \"^6.3.0\",\n    \"ts-node\": \"^10.4.0\",\n    \"typescript\": \"4.4.4\"\n  },\n  \"prisma\": {\n    \"seed\": \"ts-node --compiler-options {\\\"module\\\":\\\"CommonJS\\\"} prisma/seed.ts\"\n  }\n}\n"
  },
  {
    "path": "pages/_app.tsx",
    "content": "import type { NextPage } from \"next\";\nimport type { AppProps } from \"next/app\";\nimport { globalStyles, darkTheme } from \"../stitches.config\";\nimport { ThemeProvider } from \"next-themes\";\nimport { IdProvider } from \"@radix-ui/react-id\";\nimport { CartProvider } from \"../lib/cart\";\n\ntype NextPageWithLayout = NextPage & {\n  layout: React.FunctionComponent;\n};\n\ntype AppPropsWithLayout = AppProps & {\n  Component: NextPageWithLayout;\n};\n\nfunction MyApp({ Component, pageProps }: AppPropsWithLayout) {\n  const PageLayout = Component.layout ?? (({ children }) => children);\n  globalStyles();\n  return (\n    <IdProvider>\n      <ThemeProvider\n        attribute=\"class\"\n        defaultTheme=\"light\"\n        value={{\n          dark: darkTheme.className,\n          light: \"light\",\n        }}\n      >\n        <CartProvider>\n          <PageLayout>\n            <Component {...pageProps} />\n          </PageLayout>\n        </CartProvider>\n      </ThemeProvider>\n    </IdProvider>\n  );\n}\nexport default MyApp;\n"
  },
  {
    "path": "pages/_document.tsx",
    "content": "// eslint-disable-next-line @next/next/no-document-import-in-page\nimport Document, { Html, Head, Main, NextScript } from \"next/document\";\nimport { getCssText } from \"../stitches.config\";\n\nclass MyDocument extends Document {\n  render() {\n    return (\n      <Html lang=\"en\">\n        <Head>\n          <link\n            href=\"https://fonts.googleapis.com/css2?family=Roboto:wght@300&family=Work+Sans:wght@600&display=swap\"\n            rel=\"stylesheet\"\n          />\n          <style\n            id=\"stitches\"\n            dangerouslySetInnerHTML={{ __html: getCssText() }}\n          />\n        </Head>\n        <body>\n          <Main />\n          <NextScript />\n        </body>\n      </Html>\n    );\n  }\n}\n\nexport default MyDocument;\n"
  },
  {
    "path": "pages/api/checkout_sessions/[id].ts",
    "content": "import { NextApiRequest, NextApiResponse } from \"next\";\nimport Stripe from \"stripe\";\n\nconst stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {\n  apiVersion: \"2020-08-27\",\n});\n\nexport default async function handler(\n  req: NextApiRequest,\n  res: NextApiResponse\n) {\n  const id: string = req.query.id as string;\n  try {\n    if (!id.startsWith(\"cs_\")) {\n      throw Error(\"Incorrect CheckoutSession ID.\");\n    }\n    const checkout_session: Stripe.Checkout.Session =\n      await stripe.checkout.sessions.retrieve(id, {\n        expand: [\"payment_intent\"],\n      });\n\n    res.status(200).json(checkout_session);\n  } catch (err) {\n    console.error(err);\n    res.status(500).json({ statusCode: 500, message: \"Something went wrong!\" });\n  }\n}\n"
  },
  {
    "path": "pages/api/checkout_sessions/index.ts",
    "content": "import type { NextApiRequest, NextApiResponse } from \"next\";\n\nconst stripe = require(\"stripe\")(process.env.STRIPE_SECRET_KEY);\n\ntype ResponseData = {\n  name: string;\n};\n\nexport default async function handler(\n  req: NextApiRequest,\n  res: NextApiResponse<ResponseData>\n) {\n  if (req.method === \"POST\") {\n    const { line_items } = req.body;\n\n    try {\n      const session = await stripe.checkout.sessions.create({\n        line_items,\n        payment_method_types: [\"card\"],\n        mode: \"payment\",\n        billing_address_collection: \"required\",\n        shipping_address_collection: {\n          allowed_countries: [\"DE\", \"US\"],\n        },\n        success_url: `${req.headers.origin}/confirmation/?success=true&session_id={CHECKOUT_SESSION_ID}`,\n        cancel_url: `${req.headers.origin}/?canceled=true`,\n      });\n\n      res.status(200).json(session);\n    } catch (err) {\n      console.error(\"Something went wront during Stripe session creation.\");\n      console.error(err);\n      res.status(500).end();\n    }\n  } else {\n    res.setHeader(\"Allow\", \"POST\");\n    res.status(405).end(\"Method Not Allowed\");\n  }\n}\n"
  },
  {
    "path": "pages/api/products/index.ts",
    "content": "import { NextApiRequest, NextApiResponse } from \"next\";\nimport { PrismaClient } from \"@prisma/client\";\nimport { getPlaiceholder } from \"plaiceholder\";\nimport path from \"path\";\nimport getConfig from \"next/config\";\n\nimport { promises as fs } from \"fs\";\n\nconst prisma = new PrismaClient({\n  datasources: {\n    db: {\n      url: `file:${path.join(\n        getConfig().serverRuntimeConfig.PROJECT_ROOT,\n        \"products.db\"\n      )}`,\n    },\n  },\n});\n\nexport default async function handler(\n  req: NextApiRequest,\n  res: NextApiResponse\n) {\n  if (req.method === \"GET\") {\n    const page = (req.query.page as string) || \"0\";\n\n    const pageSize = 6;\n\n    const results = await prisma.product.findMany({\n      where: {\n        availability: {\n          not: \"notVisible\",\n        },\n      },\n      include: {\n        brand: true,\n      },\n      skip: pageSize * parseInt(page),\n      take: pageSize,\n    });\n\n    let allImagePaths = [];\n\n    for (const product of results) {\n      const imagesDirectory = path.join(\n        process.cwd(),\n        `public/products/${product.id}`\n      );\n\n      try {\n        const productImagePaths = await fs.readdir(imagesDirectory);\n\n        const blurDataURLs = await Promise.all(\n          productImagePaths.map(async (src) => {\n            const { base64 } = await getPlaiceholder(\n              `/products/${product.id}/${src}`\n            );\n            return base64;\n          })\n        ).then((values) => values);\n\n        allImagePaths.push({\n          id: product.id,\n          images: {\n            paths: productImagePaths.map(\n              (path) => `/products/${product.id}/${path}`\n            ),\n            blurDataURLs: blurDataURLs,\n          },\n        });\n      } catch (error) {\n        console.warn(\n          `Image ${product.name} has no images under /public/product/[id]!`\n        );\n      }\n    }\n    res.status(200).json(\n      JSON.stringify({\n        products: results.map((product) => ({\n          ...product,\n          // Date objects needs to be converted to strings because the props object will be serialized as JSON\n          createdAt: product.createdAt.toString(),\n          updatedAt: product.updatedAt.toString(),\n        })),\n        images: await Promise.all(allImagePaths),\n      })\n    );\n  } else {\n    // 501 Not Implemented\n    res.status(501).end();\n  }\n}\n"
  },
  {
    "path": "pages/cart.tsx",
    "content": "import Button, { Loading } from \"../components/Button\";\nimport { styled, Box } from \"../stitches.config\";\nimport { PrismaClient, Prisma } from \"@prisma/client\";\nimport { useCart } from \"../lib/cart\";\nimport { currencyCodeToSymbol } from \"../lib/stripeHelpers\";\nimport ProductCardCart from \"../components/ProductCardCart\";\nimport { getStripe, cartItemToLineItem } from \"../lib/stripeHelpers\";\nimport Layout from \"../components/Layout\";\nimport PageHeadline from \"../components/PageHeadline\";\nimport Footer from \"../components/Footer\";\nimport { GetStaticProps, NextPage } from \"next\";\nimport { Tmeta } from \"../types\";\nimport MenuBar from \"../components/MenuBar\";\nimport { NextSeo } from \"next-seo\";\nimport { useEffect, useState } from \"react\";\nimport * as RadioGroup from \"@radix-ui/react-radio-group\";\n\nconst prisma = new PrismaClient();\n\nexport const getStaticProps: GetStaticProps = async () => {\n  /**\n   * Get shop meta data from env\n   */\n\n  const allShippingOptions = await prisma.shippingCode.findMany({});\n\n  const {\n    headline = \"Teini is the most smallest shop ever\",\n    subheadline = \"It gets you starting. Without budget. Without the ecommerce complexity you normally see.\",\n    contact = \"Twitter: @zeekrey\",\n    name = \"Teini\",\n  } = process.env;\n\n  /**\n   * Get all shipping options\n   */\n\n  return {\n    props: {\n      meta: {\n        headline,\n        subheadline,\n        contact,\n        name,\n      },\n      shippingOptions: allShippingOptions,\n    },\n  };\n};\n\nconst ProductList = styled(\"div\", {\n  paddingBottom: \"$4\",\n  display: \"grid\",\n  gap: \"$4\",\n\n  \"@small\": {\n    gridTemplateColumns: \"repeat(2, 1fr)\",\n  },\n\n  \"@medium\": {\n    gap: \"$5\",\n  },\n\n  \"@large\": {\n    gap: \"40px\",\n  },\n});\n\nconst ShippingOptionRadioGroup = styled(RadioGroup.Root, {\n  display: \"flex\",\n  flexDirection: \"column\",\n});\n\nconst ShippingOption = styled(RadioGroup.Item, {\n  all: \"unset\",\n  display: \"flex\",\n  background: \"$crimson1\",\n  flex: 1,\n  padding: \"$2\",\n  cursor: \"pointer\",\n  alignItems: \"center\",\n\n  transition: \"all 0.2s\",\n\n  \"&:hover\": {\n    background: \"$crimson2\",\n  },\n\n  color: \"$mauve10\",\n\n  \"&[data-state='checked']\": {\n    color: \"$mauve12\",\n  },\n});\n\nconst ProductPrice = styled(\"div\", {\n  fontSize: \"20px\",\n  lineHeight: \"20px\",\n  fontFamily: \"Work Sans, sans-serif\",\n});\n\nconst ShippingOptionIndicator = styled(RadioGroup.Indicator, {\n  display: \"grid\",\n  fontSize: \"$1\",\n  fontFamily: \"Work Sans\",\n  borderRadius: \"$small\",\n  background: \"$mauve5\",\n  color: \"$mauve12\",\n  placeContent: \"center\",\n  padding: \"$1 $2\",\n  marginRight: \"$2\",\n});\n\nconst CartPage: NextPage<{\n  meta: Tmeta;\n  shippingOptions: Required<Prisma.ShippingCodeUncheckedCreateInput>[];\n}> = ({ meta, shippingOptions }) => {\n  const { cart, productsTotal, needsShipping } = useCart();\n  const [isLoading, setIsLoading] = useState(false);\n  const [shippingOption, setShippingOption] = useState<\n    undefined | false | Required<Prisma.ShippingCodeUncheckedCreateInput>\n  >(undefined);\n  const [total, setTotal] = useState(productsTotal);\n\n  useEffect(() => {\n    if (shippingOption) setTotal(productsTotal + shippingOption.price);\n  }, [shippingOption, productsTotal]);\n\n  const calcShipping = (value: string) => {\n    // Get the whole shippingOption object for the provided value\n    const selectedShippingOption = shippingOptions.find(\n      (shippingOption) => shippingOption.name === value\n    );\n\n    // If the cart sum is bigger than 'isFreeFrom' set the shipping costs to 0, otherwise set the shipping costs.\n    if (productsTotal >= selectedShippingOption!.isFreeFrom)\n      setShippingOption({ ...selectedShippingOption!, price: 0 });\n    else setShippingOption(selectedShippingOption!);\n  };\n\n  const handleCheckout = async () => {\n    setIsLoading(true);\n    const stripe = await getStripe();\n    const lineItems = [...cart.values()].map((item) =>\n      cartItemToLineItem({ cartItem: item, images: [\"\"] })\n    );\n\n    // Create a line item for shipping costs if they exist\n    const lineItemsWithShipping = shippingOption\n      ? [\n          {\n            price_data: {\n              currency: \"usd\",\n              unit_amount_decimal: shippingOption?.price,\n              product_data: {\n                name: shippingOption?.name,\n              },\n            },\n            quantity: 1,\n          },\n          ...lineItems,\n        ]\n      : lineItems;\n\n    const response = await fetch(\"/api/checkout_sessions\", {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify({\n        line_items: lineItemsWithShipping,\n      }),\n    });\n\n    const session = await response.json();\n\n    const { error } = await stripe!.redirectToCheckout({\n      sessionId: session.id,\n    });\n    error && console.warn(error.message);\n  };\n\n  return (\n    <>\n      <NextSeo noindex={true} />\n      <MenuBar />\n      <PageHeadline>Cart</PageHeadline>\n      <Box\n        as=\"p\"\n        css={{\n          color: \"$crimson11\",\n          fontSize: \"16px\",\n        }}\n      >\n        To protect you and us the checkout will be processed by Stripe.\n      </Box>\n      <>\n        {cart.length ? (\n          <>\n            <ProductList>\n              {cart.map((item) => (\n                <ProductCardCart\n                  key={item.product.id}\n                  item={item}\n                  cart={cart}\n                />\n              ))}\n            </ProductList>\n            {needsShipping && (\n              <div>\n                <Box\n                  as=\"p\"\n                  css={{\n                    color: \"$crimson11\",\n                  }}\n                >\n                  Shipping:\n                </Box>\n                <ShippingOptionRadioGroup\n                  onValueChange={(value) => calcShipping(value)}\n                >\n                  {shippingOptions.map((shippingOption) => (\n                    <ShippingOption\n                      key={shippingOption.id}\n                      id={shippingOption.name}\n                      value={shippingOption.name}\n                    >\n                      <Box\n                        as=\"label\"\n                        css={{ flex: 1, cursor: \"pointer\" }}\n                        htmlFor={shippingOption.name}\n                      >\n                        <Box as=\"strong\" css={{ fontFamily: \"Work Sans\" }}>\n                          {shippingOption.name}{\" \"}\n                        </Box>\n                        <Box as=\"small\" css={{ display: \"block\" }}>\n                          {shippingOption.description}\n                        </Box>\n                      </Box>\n                      <ShippingOptionIndicator>\n                        SELECTED\n                      </ShippingOptionIndicator>\n                      <ProductPrice>\n                        {productsTotal >= shippingOption.isFreeFrom\n                          ? \"$ 0.00\"\n                          : `$ ${shippingOption.price / 100}`}\n                      </ProductPrice>\n                    </ShippingOption>\n                  ))}\n                </ShippingOptionRadioGroup>\n              </div>\n            )}\n            <Box\n              css={{\n                display: \"flex\",\n                justifyContent: \"space-between\",\n                paddingLeft: \"$4\",\n                marginLeft: \"-$4\",\n                paddingRight: \"$4\",\n                marginRight: \"-$4\",\n                borderBottom: \"1px solid $mauve4\",\n                borderTop: \"1px solid $mauve4\",\n              }}\n            >\n              <div>\n                <Box\n                  css={{\n                    color: \"$crimson11\",\n                  }}\n                >\n                  Total:\n                  {/* Get the currency code of the first item for now. */}\n                </Box>\n                <Box\n                  css={{\n                    fontFamily: \"Work Sans, sans serif\",\n                    color: \"$crimson12\",\n                    fontSize: \"22px\",\n                  }}\n                >\n                  {currencyCodeToSymbol(cart[0].product.currency)} {total / 100}\n                </Box>\n              </div>\n              <Button\n                disabled={isLoading || typeof shippingOption === \"undefined\"}\n                onClick={handleCheckout}\n              >\n                {isLoading ? <Loading /> : \"Buy now\"}\n              </Button>\n            </Box>\n          </>\n        ) : (\n          <div>Go and add some items to your cart!</div>\n        )}\n      </>\n      <Footer {...meta} />\n    </>\n  );\n};\n\n// @ts-ignore\nCartPage.layout = Layout;\n\nexport default CartPage;\n"
  },
  {
    "path": "pages/confirmation.tsx",
    "content": "import { styled, Box } from \"../stitches.config\";\nimport useSWR from \"swr\";\nimport { useRouter } from \"next/router\";\nimport { fetchGetJSON } from \"../lib/fetcher\";\nimport { useEffect } from \"react\";\nimport { NextSeo } from \"next-seo\";\nimport { GetStaticProps, NextPage } from \"next\";\nimport Image from \"next/image\";\nimport MenuBar from \"../components/MenuBar\";\nimport { useCart } from \"../lib/cart\";\nimport { Tmeta } from \"../types\";\nimport Footer from \"../components/Footer\";\nimport SuccessImage from \"../public/jason-dent-WNVGLwGMCAg-unsplash.jpg\";\nimport PageHeadline from \"../components/PageHeadline\";\n\nconst ImageContainer = styled(\"div\", {\n  height: \"54vh\",\n  position: \"relative\",\n  marginLeft: \"calc($4*-1)\",\n  marginRight: \"calc($4*-1)\",\n  marginTop: \"calc($4*-1)\",\n\n  transition: \"1s\",\n});\n\nconst ProductName = styled(\"h1\", {\n  all: \"unset\",\n  fontSize: \"$4\",\n  lineHeight: \"30px\",\n  color: \"$crimson12\",\n  fontFamily: \"Work Sans, sans-serif\",\n});\n\nconst ProductPrice = styled(\"div\", {\n  fontSize: \"$4\",\n  color: \"$mauve12\",\n  fontFamily: \"Work Sans, sans-serif\",\n  display: \"grid\",\n  placeContent: \"center\",\n});\n\nconst ProductBrand = styled(\"div\", {\n  color: \"$mauve8\",\n  paddingTop: \"$4\",\n});\n\nconst ProductDescription = styled(\"p\", {\n  color: \"$crimson11\",\n  fontSize: \"16px\",\n  lineHeight: \"24px\",\n});\n\nconst AnimatedImage = styled(Image, {\n  transition: \".3s\",\n});\n\nconst LayoutWrapper = styled(\"div\", {\n  background: \"$mauve1\",\n  padding: \"$4\",\n\n  \"@small\": {\n    padding: \"10% 10%\",\n  },\n\n  \"@medium\": {\n    padding: \"10% 15%\",\n  },\n\n  \"@large\": {\n    padding: \"5% 25%\",\n  },\n});\n\nconst Subheadline = styled(\"h1\", {\n  fontFamily: \"Roboto, sans serif\",\n  fontSize: \"18px\",\n  fontWeight: \"normal\",\n  color: \"$mauve9\",\n});\n\nexport const getStaticProps: GetStaticProps = async ({ params }) => {\n  /**\n   * Get shop meta data from env\n   */\n\n  const {\n    headline = \"Teini is the most smallest shop ever\",\n    subheadline = \"It gets you starting. Without budget. Without the ecommerce complexity you normally see.\",\n    contact = \"Twitter: @zeekrey\",\n    name = \"Teini\",\n  } = process.env;\n\n  return {\n    props: {\n      meta: {\n        headline,\n        subheadline,\n        contact,\n        name,\n      },\n    },\n  };\n};\n\nconst Confirmation: NextPage<{ meta: Tmeta }> = ({ meta }) => {\n  const { dispatch } = useCart();\n  const router = useRouter();\n\n  const { data, error } = useSWR(\n    router.query.session_id\n      ? `/api/checkout_sessions/${router.query.session_id}`\n      : null,\n    fetchGetJSON\n  );\n\n  useEffect(() => {\n    // If checkout is completed, the cart should be cleared.\n    dispatch({ type: \"clearCart\" });\n  }, []);\n\n  /**\n   * Data for buyer\n   * data.payment_intent.charges.data[0].billing_details.email\n   * data.payment_intent.charges.data[0].billing_details.name\n   *\n   */\n\n  /**\n   * Data for seller\n   * data.payment_intent\n   */\n\n  return (\n    <LayoutWrapper>\n      <NextSeo noindex={true} />\n      <ImageContainer>\n        <Image\n          src={SuccessImage}\n          layout=\"fill\"\n          objectFit=\"cover\"\n          alt=\"success image\"\n          placeholder=\"blur\"\n        />\n      </ImageContainer>\n      <Box as=\"main\" css={{ paddingBottom: \"$3\" }}>\n        <PageHeadline>\n          {error && <span>Your payment could not be verified.</span>}\n          {data && <span>Awesome! That worked!</span>}\n        </PageHeadline>\n        {data && (\n          <Subheadline>\n            This is your order reference:{\" \"}\n            <strong>{data.payment_intent.id}</strong>\n          </Subheadline>\n        )}\n      </Box>\n      <MenuBar />\n      <Footer {...meta} />\n    </LayoutWrapper>\n  );\n};\n\n// @ts-ignore\n// Confirmation.layout = Layout;\n\nexport default Confirmation;\n"
  },
  {
    "path": "pages/index.tsx",
    "content": "import { GetStaticProps } from \"next\";\nimport Link from \"next/link\";\nimport { PrismaClient, Prisma } from \"@prisma/client\";\nimport Layout from \"../components/Layout\";\nimport { styled, Box } from \"../stitches.config\";\nimport ProductCard from \"../components/ProductCard\";\nimport MenuBar from \"../components/MenuBar\";\nimport Button from \"../components/Button\";\nimport { promises as fs } from \"fs\";\nimport path from \"path\";\nimport { ArrowRightIcon } from \"@modulz/radix-icons\";\nimport PageHeadline from \"../components/PageHeadline\";\nimport type { Tmeta } from \"../types\";\nimport Footer from \"../components/Footer\";\nimport { NextSeo } from \"next-seo\";\nimport { getPlaiceholder } from \"plaiceholder\";\n\nconst prisma = new PrismaClient();\n\nexport const getStaticProps: GetStaticProps = async ({ params }) => {\n  /**\n   * Get shop meta data from env\n   */\n\n  const {\n    headline = \"Teini is the most smallest shop ever\",\n    subheadline = \"It gets you starting. Without budget. Without the ecommerce complexity you normally see.\",\n    contact = \"Twitter: @zeekrey\",\n    name = \"Teini\",\n  } = process.env;\n\n  /**\n   * Get all products with\n   * availability !== notVisible\n   */\n  const allVisibleProducts = await prisma.product.findMany({\n    where: {\n      availability: {\n        not: \"notVisible\",\n      },\n    },\n    include: {\n      brand: true,\n    },\n  });\n\n  /**\n   * Get all images forthose products that are place under /public/products/[id]\n   */\n\n  if (allVisibleProducts) {\n    let allImagePaths = [];\n\n    for (const product of allVisibleProducts) {\n      const imagesDirectory = path.join(\n        process.cwd(),\n        `public/products/${product.id}`\n      );\n\n      try {\n        const productImagePaths = await fs.readdir(imagesDirectory);\n\n        const blurDataURLs = await Promise.all(\n          productImagePaths.map(async (src) => {\n            const { base64 } = await getPlaiceholder(\n              `/products/${product.id}/${src}`\n            );\n            return base64;\n          })\n        ).then((values) => values);\n\n        allImagePaths.push({\n          id: product.id,\n          images: {\n            paths: productImagePaths.map(\n              (path) => `/products/${product.id}/${path}`\n            ),\n            blurDataURLs: blurDataURLs,\n          },\n        });\n      } catch (error) {\n        console.warn(\n          `Image ${product.name} has no images under /public/product/[id]!`\n        );\n      }\n    }\n\n    return {\n      props: {\n        products: allVisibleProducts.map((product) => ({\n          ...product,\n          // Date objects needs to be converted to strings because the props object will be serialized as JSON\n          createdAt: product.createdAt.toString(),\n          updatedAt: product.updatedAt.toString(),\n        })),\n        images: await Promise.all(allImagePaths),\n        meta: {\n          headline,\n          subheadline,\n          contact,\n          name,\n        },\n      },\n    };\n  } else return { props: {} };\n};\n\nconst Grid = styled(\"div\", {\n  display: \"grid\",\n  gap: \"$4\",\n\n  \"@small\": {\n    gridTemplateColumns: \"repeat(2, 1fr)\",\n  },\n\n  \"@medium\": {\n    gridTemplateColumns: \"repeat(3, 1fr)\",\n    gap: \"$5\",\n  },\n\n  \"@large\": {\n    gap: \"40px\",\n  },\n});\n\nconst Home: React.FunctionComponent<{\n  products: Required<\n    Prisma.ProductUncheckedCreateInput & {\n      brand: Prisma.BrandUncheckedCreateInput;\n    }\n  >[];\n  images: {\n    id: number;\n    images: { paths: string[]; blurDataURLs: string[] };\n  }[];\n  meta: Tmeta;\n}> = ({ products, images, meta }) => {\n  return (\n    <>\n      <NextSeo\n        title={meta.headline}\n        description={meta.subheadline}\n        openGraph={{\n          type: \"website\",\n          title: meta.headline,\n          description: meta.subheadline,\n          site_name: meta.name,\n        }}\n      />\n      <MenuBar />\n      <PageHeadline>{meta.headline}</PageHeadline>\n      <Box\n        as=\"p\"\n        css={{\n          color: \"$crimson11\",\n          fontSize: \"16px\",\n          paddingBottom: \"$4\",\n          margin: 0,\n        }}\n      >\n        {meta.subheadline}\n      </Box>\n      <Grid>\n        {products.map((product) => (\n          <ProductCard\n            key={product.id}\n            product={product}\n            images={images.filter((image) => image.id === product.id)[0]}\n          />\n        ))}\n      </Grid>\n      <Link href=\"/products\" passHref>\n        <Button\n          as=\"a\"\n          css={{\n            display: \"flex\",\n            justifyContent: \"space-between\",\n            alignItems: \"center\",\n            margin: \"$4 0\",\n          }}\n        >\n          <span>See all products</span>\n          <ArrowRightIcon />\n        </Button>\n      </Link>\n      <Footer {...meta} />\n    </>\n  );\n};\n\n// @ts-ignore\nHome.layout = Layout;\n\nexport default Home;\n"
  },
  {
    "path": "pages/products/[slug].tsx",
    "content": "import { GetStaticPaths, GetStaticProps, NextPage } from \"next\";\nimport Image from \"next/image\";\nimport { promises as fs } from \"fs\";\nimport path from \"path\";\nimport { PrismaClient, Prisma } from \"@prisma/client\";\nimport Button from \"../../components/Button\";\nimport MenuBar from \"../../components/MenuBar\";\nimport { styled, Box } from \"../../stitches.config\";\nimport { useCart } from \"../../lib/cart\";\nimport { currencyCodeToSymbol } from \"../../lib/stripeHelpers\";\nimport PlaceholderImage from \"../../public/placeholder.png\";\nimport { Tmeta } from \"../../types\";\nimport Footer from \"../../components/Footer\";\nimport { NextSeo } from \"next-seo\";\nimport { getPlaiceholder } from \"plaiceholder\";\n\nconst prisma = new PrismaClient();\n\nexport const getStaticPaths: GetStaticPaths = async () => {\n  /**\n   * Get all products with\n   * availability !== notVisible\n   */\n  const allVisibleProducts = await prisma.product.findMany({\n    select: { slug: true },\n    where: {\n      availability: {\n        not: \"notVisible\",\n      },\n    },\n  });\n\n  return {\n    paths: allVisibleProducts.map((product) => ({\n      params: {\n        slug: product.slug,\n      },\n    })),\n    fallback: false,\n  };\n};\n\nexport const getStaticProps: GetStaticProps = async ({ params }) => {\n  /**\n   * Get shop meta data from env\n   */\n\n  const {\n    headline = \"Teini is the most smallest shop ever\",\n    subheadline = \"It gets you starting. Without budget. Without the ecommerce complexity you normally see.\",\n    contact = \"Twitter: @zeekrey\",\n    name = \"Teini\",\n  } = process.env;\n\n  /**\n   * Get the first product with\n   * params.slug === product.slug\n   */\n  const product = await prisma.product.findFirst({\n    where: {\n      slug: {\n        equals: params!.slug as string,\n      },\n    },\n    include: {\n      brand: true,\n    },\n  });\n\n  /**\n   * Get all images for this product that are place under /public/products/[id]\n   */\n\n  if (product) {\n    const imagesDirectory = path.join(\n      process.cwd(),\n      `public/products/${product.id}`\n    );\n\n    try {\n      const productImagePaths = await fs.readdir(imagesDirectory);\n\n      /**\n       * Create blurDataURLs (base64) as image placeholders\n       */\n\n      const blurDataURLs = await Promise.all(\n        productImagePaths.map(async (src) => {\n          const { base64 } = await getPlaiceholder(\n            `/products/${product.id}/${src}`\n          );\n          return base64;\n        })\n      ).then((values) => values);\n\n      return {\n        props: {\n          product: {\n            ...product,\n            // Date objects needs to be converted to strings because the props object will be serialized as JSON\n            createdAt: product?.createdAt.toString(),\n            updatedAt: product?.updatedAt.toString(),\n          },\n          images: productImagePaths.map((path, index) => ({\n            path: `/products/${product.id}/${path}`,\n            blurDataURL: blurDataURLs[index],\n          })),\n          meta: {\n            headline,\n            subheadline,\n            contact,\n            name,\n          },\n        },\n      };\n    } catch (error) {\n      console.warn(\n        `Image ${product.name} has no images under /public/product/[id]!`\n      );\n      console.error(error);\n      return {\n        props: {\n          product: {\n            ...product,\n            // Date objects needs to be converted to strings because the props object will be serialized as JSON\n            createdAt: product?.createdAt.toString(),\n            updatedAt: product?.updatedAt.toString(),\n          },\n          images: [],\n          meta: {\n            headline,\n            subheadline,\n            contact,\n            name,\n          },\n        },\n      };\n    }\n  } else return { props: {} };\n};\n\nconst ImageContainer = styled(\"div\", {\n  height: \"54vh\",\n  position: \"relative\",\n  marginLeft: \"calc($4*-1)\",\n  marginRight: \"calc($4*-1)\",\n  marginTop: \"calc($4*-1)\",\n\n  transition: \"1s\",\n});\n\nconst ProductName = styled(\"h1\", {\n  all: \"unset\",\n  fontSize: \"$4\",\n  lineHeight: \"30px\",\n  color: \"$crimson12\",\n  fontFamily: \"Work Sans, sans-serif\",\n});\n\nconst ProductPrice = styled(\"div\", {\n  fontSize: \"$4\",\n  color: \"$mauve12\",\n  fontFamily: \"Work Sans, sans-serif\",\n  display: \"grid\",\n  placeContent: \"center\",\n});\n\nconst ProductBrand = styled(\"div\", {\n  color: \"$mauve8\",\n  paddingTop: \"$4\",\n});\n\nconst ProductDescription = styled(\"p\", {\n  color: \"$crimson11\",\n  fontSize: \"16px\",\n  lineHeight: \"24px\",\n});\n\nconst AnimatedImage = styled(Image, {\n  transition: \".3s\",\n});\n\nconst LayoutWrapper = styled(\"div\", {\n  background: \"$mauve1\",\n  padding: \"$4\",\n\n  \"@small\": {\n    padding: \"10% 10%\",\n  },\n\n  \"@medium\": {\n    padding: \"10% 15%\",\n  },\n\n  \"@large\": {\n    padding: \"5% 25%\",\n  },\n});\n\nconst ProductPage: NextPage<{\n  product: Required<\n    Prisma.ProductUncheckedCreateInput & {\n      brand: Prisma.BrandUncheckedCreateInput;\n    }\n  >;\n  images: { path: string; blurDataURL: string }[];\n  meta: Tmeta;\n}> = ({ product, images, meta }) => {\n  const { cart, dispatch } = useCart();\n\n  const handleAddToCart = () => {\n    dispatch({\n      type: \"addItem\",\n      item: { product: product, images: [...images], count: 1 },\n    });\n  };\n\n  return (\n    <LayoutWrapper>\n      <NextSeo\n        title={`${product.name} - ${meta.headline}`}\n        description={product.description}\n        openGraph={{\n          type: \"website\",\n          title: `${product.name} - ${meta.headline}`,\n          description: product.description,\n          site_name: meta.name,\n        }}\n      />\n      <ImageContainer>\n        {images.length ? (\n          <AnimatedImage\n            src={images[0].path}\n            layout=\"fill\"\n            objectFit=\"cover\"\n            alt={images[0].path}\n            placeholder=\"blur\"\n            blurDataURL={images[0].blurDataURL}\n          />\n        ) : (\n          <Image\n            src={PlaceholderImage}\n            layout=\"fill\"\n            objectFit=\"cover\"\n            alt=\"placeholder\"\n          />\n        )}\n      </ImageContainer>\n      <Box as=\"main\" css={{ paddingBottom: \"$3\" }}>\n        <ProductBrand>{product.brand.name}</ProductBrand>\n        <ProductName>{product.name}</ProductName>\n        <ProductDescription>{product.description}</ProductDescription>\n        <Box\n          css={{\n            display: \"flex\",\n            justifyContent: \"space-between\",\n            paddingLeft: \"$4\",\n            marginLeft: \"-$4\",\n            paddingRight: \"$4\",\n            marginRight: \"-$4\",\n            borderBottom: \"1px solid $mauve4\",\n            borderTop: \"1px solid $mauve4\",\n          }}\n        >\n          <ProductPrice>\n            {currencyCodeToSymbol(product.currency)} {product.price / 100}\n          </ProductPrice>\n          <Button onClick={handleAddToCart}>Add to Cart</Button>\n        </Box>\n      </Box>\n      <MenuBar />\n      <Footer {...meta} />\n    </LayoutWrapper>\n  );\n};\n\nexport default ProductPage;\n"
  },
  {
    "path": "pages/products/index.tsx",
    "content": "import { GetStaticProps } from \"next\";\nimport { promises as fs } from \"fs\";\nimport React, { useState } from \"react\";\nimport path from \"path\";\nimport { PrismaClient, Prisma } from \"@prisma/client\";\nimport Layout from \"../../components/Layout\";\nimport { styled, Box } from \"../../stitches.config\";\nimport ProductCard from \"../../components/ProductCard\";\nimport PageHeadline from \"../../components/PageHeadline\";\nimport { Tmeta } from \"../../types\";\nimport Footer from \"../../components/Footer\";\nimport MenuBar from \"../../components/MenuBar\";\nimport { NextSeo } from \"next-seo\";\nimport { getPlaiceholder } from \"plaiceholder\";\nimport Button from \"../../components/Button\";\nimport useSWR, { SWRConfig } from \"swr\";\n\nconst prisma = new PrismaClient();\n\nexport const getStaticProps: GetStaticProps = async ({ params }) => {\n  /**\n   * Get shop meta data from env\n   */\n\n  const {\n    headline = \"Teini is the most smallest shop ever\",\n    subheadline = \"It gets you starting. Without budget. Without the ecommerce complexity you normally see.\",\n    contact = \"Twitter: @zeekrey\",\n    name = \"Teini\",\n  } = process.env;\n\n  /**\n   * Count the number of products to make pagination work\n   */\n  const {\n    _count: { id: count },\n  } = await prisma.product.aggregate({\n    _count: {\n      id: true,\n    },\n    where: {\n      availability: {\n        not: \"notVisible\",\n      },\n    },\n  });\n\n  /**\n   * Get all products with\n   * availability !== notVisible\n   */\n  const allVisibleProducts = await prisma.product.findMany({\n    where: {\n      availability: {\n        not: \"notVisible\",\n      },\n    },\n    include: {\n      brand: true,\n    },\n    take: 6,\n  });\n\n  /**\n   * Get all images forthose products that are place under /public/products/[id]\n   */\n\n  if (allVisibleProducts) {\n    let allImagePaths = [];\n\n    for (const product of allVisibleProducts) {\n      const imagesDirectory = path.join(\n        process.cwd(),\n        `public/products/${product.id}`\n      );\n\n      try {\n        const productImagePaths = await fs.readdir(imagesDirectory);\n\n        const blurDataURLs = await Promise.all(\n          productImagePaths.map(async (src) => {\n            const { base64 } = await getPlaiceholder(\n              `/products/${product.id}/${src}`\n            );\n            return base64;\n          })\n        ).then((values) => values);\n\n        allImagePaths.push({\n          id: product.id,\n          images: {\n            paths: productImagePaths.map(\n              (path) => `/products/${product.id}/${path}`\n            ),\n            blurDataURLs: blurDataURLs,\n          },\n        });\n      } catch (error) {\n        console.warn(\n          `Image ${product.name} has no images under /public/product/[id]!`\n        );\n      }\n    }\n\n    return {\n      props: {\n        products: allVisibleProducts.map((product) => ({\n          ...product,\n          // Date objects needs to be converted to strings because the props object will be serialized as JSON\n          createdAt: product.createdAt.toString(),\n          updatedAt: product.updatedAt.toString(),\n        })),\n        images: await Promise.all(allImagePaths),\n        meta: {\n          headline,\n          subheadline,\n          contact,\n          name,\n        },\n        productsCount: count,\n      },\n    };\n  } else return { props: {} };\n};\n\nconst Grid = styled(\"main\", {\n  paddingBottom: \"$4\",\n  display: \"grid\",\n  gap: \"$4\",\n\n  \"@small\": {\n    gridTemplateColumns: \"repeat(2, 1fr)\",\n  },\n\n  \"@medium\": {\n    gridTemplateColumns: \"repeat(3, 1fr)\",\n    gap: \"$5\",\n  },\n\n  \"@large\": {\n    gap: \"40px\",\n  },\n});\n\nconst ProductsGrid: React.FunctionComponent<{ page: number }> = ({ page }) => {\n  const { data, error } = useSWR<{\n    products: Required<\n      Prisma.ProductUncheckedCreateInput & {\n        brand: Prisma.BrandUncheckedCreateInput;\n      }\n    >[];\n    images: {\n      id: number;\n      images: { paths: string[]; blurDataURLs: string[] };\n    }[];\n  }>(`/api/products?page=${page}`, (url) =>\n    fetch(url).then((res) => res.json())\n  );\n\n  return (\n    <Grid>\n      {data?.products.map((product) => (\n        <ProductCard\n          key={product.id}\n          product={product}\n          images={data.images.filter((image) => image.id === product.id)[0]}\n        />\n      ))}\n    </Grid>\n  );\n};\n\nconst Products: React.FunctionComponent<{\n  products: Required<\n    Prisma.ProductUncheckedCreateInput & {\n      brand: Prisma.BrandUncheckedCreateInput;\n    }\n  >[];\n  images: { id: number; images: { paths: string[]; blurDataURLs: string[] } }[];\n  meta: Tmeta;\n  productsCount: number;\n}> = ({ products, images, meta, productsCount }) => {\n  const [page, setPage] = useState(0);\n\n  return (\n    <>\n      <NextSeo\n        title={meta.headline}\n        description={meta.subheadline}\n        openGraph={{\n          type: \"website\",\n          title: meta.headline,\n          description: meta.subheadline,\n          site_name: meta.name,\n        }}\n      />\n      <MenuBar />\n      <PageHeadline>All Products</PageHeadline>\n      <SWRConfig\n        value={{ fallback: { \"/api/products?page=0\": { products, images } } }}\n      >\n        <ProductsGrid page={page} />\n      </SWRConfig>\n      <Box css={{ display: \"flex\", justifyContent: \"space-between\" }}>\n        {page ? (\n          <Button onClick={() => setPage(page - 1)}>Previous</Button>\n        ) : (\n          <Box css={{ flex: 1 }} />\n        )}\n        {(page + 1) * 6 >= productsCount ? (\n          <Box css={{ flex: 1 }} />\n        ) : (\n          <Button\n            css={{ justifySelf: \"flex-end\" }}\n            onClick={() => setPage(page + 1)}\n          >\n            Next\n          </Button>\n        )}\n      </Box>\n      <Footer {...meta} />\n    </>\n  );\n};\n\n// @ts-ignore\nProducts.layout = Layout;\n\nexport default Products;\n"
  },
  {
    "path": "prisma/migrations/20210923095130_init/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE \"Product\" (\n    \"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\n    \"createdAt\" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    \"updatedAt\" DATETIME NOT NULL,\n    \"name\" TEXT NOT NULL,\n    \"description\" TEXT NOT NULL,\n    \"price\" REAL NOT NULL,\n    \"availability\" TEXT NOT NULL,\n    \"shippingCodeId\" INTEGER NOT NULL,\n    \"brandId\" INTEGER NOT NULL,\n    CONSTRAINT \"Product_shippingCodeId_fkey\" FOREIGN KEY (\"shippingCodeId\") REFERENCES \"ShippingCode\" (\"id\") ON DELETE RESTRICT ON UPDATE CASCADE,\n    CONSTRAINT \"Product_brandId_fkey\" FOREIGN KEY (\"brandId\") REFERENCES \"Brand\" (\"id\") ON DELETE RESTRICT ON UPDATE CASCADE\n);\n\n-- CreateTable\nCREATE TABLE \"Brand\" (\n    \"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\n    \"name\" TEXT NOT NULL\n);\n\n-- CreateTable\nCREATE TABLE \"ShippingCode\" (\n    \"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\n    \"name\" TEXT NOT NULL,\n    \"description\" TEXT NOT NULL\n);\n"
  },
  {
    "path": "prisma/migrations/migration_lock.toml",
    "content": "# Please do not edit this file manually\n# It should be added in your version-control system (i.e. Git)\nprovider = \"sqlite\""
  },
  {
    "path": "prisma/schema.prisma",
    "content": "datasource db {\n  provider = \"sqlite\"\n  url      = \"file:../products.db\"\n}\n\ngenerator client {\n  provider = \"prisma-client-js\"\n}\n\nmodel Product {\n  id            Int      @id @default(autoincrement())\n  createdAt     DateTime @default(now())\n  updatedAt     DateTime @updatedAt\n  slug          String\n  name          String\n  description   String\n  price         Int\n  currency      String\n  availability  String\n  brand         Brand    @relation(fields: [brandId], references: [id])\n  brandId       Int\n  needsShipping Boolean\n}\n\nmodel Brand {\n  id       Int       @id @default(autoincrement())\n  name     String\n  products Product[]\n}\n\nmodel ShippingCode {\n  id          Int    @id @default(autoincrement())\n  name        String\n  description String\n  price       Int\n  isFreeFrom  Int\n}\n"
  },
  {
    "path": "prisma/seed.ts",
    "content": "import { PrismaClient } from \"@prisma/client\";\nconst prisma = new PrismaClient();\n\nasync function main() {\n  const brand = await prisma.brand.upsert({\n    where: { id: 1 },\n    update: {},\n    create: {\n      name: \"The Brand\",\n    },\n  });\n\n  const shippingCode1 = await prisma.shippingCode.upsert({\n    where: { id: 1 },\n    update: {},\n    create: {\n      name: \"Standard Shipping\",\n      description: \"Standard international shipping\",\n      price: 299,\n      isFreeFrom: 1000,\n    },\n  });\n\n  const shippingCode2 = await prisma.shippingCode.upsert({\n    where: { id: 2 },\n    update: {},\n    create: {\n      name: \"Express Shipping\",\n      description: \"Express international shipping\",\n      price: 699,\n      isFreeFrom: 10000,\n    },\n  });\n\n  const product1 = await prisma.product.upsert({\n    where: { id: 1 },\n    update: {},\n    create: {\n      slug: \"the-first-product\",\n      name: \"The first product\",\n      description:\n        \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n      price: 299,\n      currency: \"usd\",\n      availability: \"inStock\",\n      brandId: 1,\n      needsShipping: true,\n    },\n  });\n\n  const product2 = await prisma.product.upsert({\n    where: { id: 2 },\n    update: {},\n    create: {\n      slug: \"the-second-product\",\n      name: \"The second product\",\n      description:\n        \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n      price: 2999,\n      currency: \"usd\",\n      availability: \"inStock\",\n      brandId: 1,\n      needsShipping: true,\n    },\n  });\n\n  const product3 = await prisma.product.upsert({\n    where: { id: 3 },\n    update: {},\n    create: {\n      slug: \"the-third-product\",\n      name: \"The third product\",\n      description:\n        \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n      price: 29999,\n      currency: \"usd\",\n      availability: \"inStock\",\n      brandId: 1,\n      needsShipping: true,\n    },\n  });\n\n  const product4 = await prisma.product.upsert({\n    where: { id: 4 },\n    update: {},\n    create: {\n      slug: \"the-fourth-product\",\n      name: \"The fourth product\",\n      description:\n        \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n      price: 1,\n      currency: \"usd\",\n      availability: \"inStock\",\n      brandId: 1,\n      needsShipping: false,\n    },\n  });\n\n  const product5 = await prisma.product.upsert({\n    where: { id: 5 },\n    update: {},\n    create: {\n      slug: \"the-fifth-product\",\n      name: \"The fifth product\",\n      description:\n        \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n      price: 1182,\n      currency: \"usd\",\n      availability: \"inStock\",\n      brandId: 1,\n      needsShipping: false,\n    },\n  });\n\n  const product6 = await prisma.product.upsert({\n    where: { id: 6 },\n    update: {},\n    create: {\n      slug: \"the-sixth-product\",\n      name: \"The sixth product\",\n      description:\n        \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n      price: 1000,\n      currency: \"usd\",\n      availability: \"inStock\",\n      brandId: 1,\n      needsShipping: false,\n    },\n  });\n\n  const product7 = await prisma.product.upsert({\n    where: { id: 7 },\n    update: {},\n    create: {\n      slug: \"the-seventh-product\",\n      name: \"The seventh product\",\n      description:\n        \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n      price: 9999,\n      currency: \"usd\",\n      availability: \"inStock\",\n      brandId: 1,\n      needsShipping: false,\n    },\n  });\n}\n\nmain()\n  .catch((e) => {\n    console.error(e);\n    process.exit(1);\n  })\n  .finally(async () => {\n    await prisma.$disconnect();\n  });\n"
  },
  {
    "path": "stitches.config.ts",
    "content": "import { createStitches } from \"@stitches/react\";\nimport { crimson, crimsonDark, mauve, mauveDark } from \"@radix-ui/colors\";\n\nexport const {\n  styled,\n  css,\n  globalCss,\n  keyframes,\n  getCssText,\n  theme,\n  createTheme,\n  config,\n} = createStitches({\n  theme: {\n    colors: {\n      ...crimson,\n      ...mauve,\n    },\n    shadows: {\n      ...crimson,\n      ...mauve,\n    },\n    space: {\n      1: \"5px\",\n      2: \"10px\",\n      3: \"15px\",\n      4: \"20px\",\n      5: \"25px\",\n    },\n    sizes: {\n      1: \"5px\",\n      2: \"10px\",\n      3: \"15px\",\n      4: \"20px\",\n      5: \"25px\",\n    },\n    fontSizes: {\n      1: \"12px\",\n      2: \"13px\",\n      3: \"15px\",\n      4: \"22px\",\n      5: \"28px\",\n    },\n    radii: {\n      small: \"5px\",\n      medium: \"15px\",\n      large: \"40px\",\n    },\n  },\n  media: {\n    small: \"(min-width: 640px)\",\n    medium: \"(min-width: 768px)\",\n    large: \"(min-width: 1024px)\",\n  },\n  utils: {\n    marginX: (value: string | number) => ({\n      marginLeft: value,\n      marginRight: value,\n    }),\n  },\n});\n\nexport const darkTheme = createTheme({\n  colors: {\n    ...crimsonDark,\n    ...mauveDark,\n  },\n});\n\nexport const globalStyles = globalCss({\n  html: { margin: 0, padding: 0, minHeight: \"100vh\" },\n  body: {\n    margin: 0,\n    padding: 0,\n    minHeight: \"100vh\",\n    fontFamily: \"Roboto, sans-serif\",\n  },\n  a: { all: \"unset\" },\n});\n\nexport const Box = styled(\"div\", {});\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"downlevelIteration\": true,\n    \"baseUrl\": \".\",\n    \"incremental\": true\n  },\n  \"include\": [\n    \"next-env.d.ts\",\n    \"**/*.ts\",\n    \"**/*.tsx\"\n  ],\n  \"exclude\": [\n    \"node_modules\"\n  ]\n}\n"
  },
  {
    "path": "types.d.ts",
    "content": "export type Tmeta = {\n  headline: string;\n  subheadline: string;\n  contact: string;\n  name: string;\n  [key: string]: string;\n};\n"
  },
  {
    "path": "yarn-error.log",
    "content": "Arguments: \n  C:\\Program Files\\nodejs\\node.exe C:\\Program Files (x86)\\Yarn\\bin\\yarn.js add -D prisma@3.1.1\n\nPATH: \n  C:\\Users\\chris\\Documents\\Code\\teini\\node_modules\\.bin;C:\\Users\\chris\\Documents\\Code\\node_modules\\.bin;C:\\Users\\chris\\Documents\\node_modules\\.bin;C:\\Users\\chris\\node_modules\\.bin;C:\\Users\\node_modules\\.bin;C:\\node_modules\\.bin;C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\@npmcli\\run-script\\lib\\node-gyp-bin;C:\\Python39\\Scripts\\;C:\\Python39\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files\\Git\\cmd;C:\\Program Files (x86)\\Yarn\\bin\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\dotnet\\;C:\\Program Files\\Docker\\Docker\\resources\\bin;C:\\ProgramData\\DockerDesktop\\version-bin;C:\\Program Files\\nodejs\\;C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin;C:\\Users\\chris\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\chris\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Users\\chris\\AppData\\Local\\Yarn\\bin;C:\\Program Files (x86)\\GitHub CLI\\;C:\\Users\\chris\\Documents\\Tools;C:\\Users\\chris\\AppData\\Roaming\\npm;C:\\Users\\chris\\Documents\\Code\\teini\\node_modules\\.bin\n\nYarn version: \n  1.22.5\n\nNode version: \n  16.9.0\n\nPlatform: \n  win32 x64\n\nTrace: \n  Error: EPERM: operation not permitted, unlink 'C:\\Users\\chris\\Documents\\Code\\teini\\node_modules\\prisma\\query_engine-windows.dll.node'\n\nnpm manifest: \n  {\n    \"name\": \"my-app\",\n    \"version\": \"0.1.0\",\n    \"private\": true,\n    \"scripts\": {\n      \"dev\": \"next dev\",\n      \"build\": \"next build\",\n      \"start\": \"next start\",\n      \"lint\": \"next lint\"\n    },\n    \"dependencies\": {\n      \"next\": \"11.1.2\",\n      \"react\": \"17.0.2\",\n      \"react-dom\": \"17.0.2\"\n    },\n    \"devDependencies\": {\n      \"@types/react\": \"17.0.24\",\n      \"eslint\": \"7.32.0\",\n      \"eslint-config-next\": \"11.1.2\",\n      \"prisma\": \"^3.1.1\",\n      \"typescript\": \"4.4.3\"\n    }\n  }\n\nyarn manifest: \n  No manifest\n\nLockfile: \n  # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n  # yarn lockfile v1\n  \n  \n  \"@babel/code-frame@7.12.11\":\n    version \"7.12.11\"\n    resolved \"https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f\"\n    integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==\n    dependencies:\n      \"@babel/highlight\" \"^7.10.4\"\n  \n  \"@babel/helper-plugin-utils@^7.14.5\":\n    version \"7.14.5\"\n    resolved \"https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9\"\n    integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==\n  \n  \"@babel/helper-validator-identifier@^7.14.5\", \"@babel/helper-validator-identifier@^7.14.9\":\n    version \"7.15.7\"\n    resolved \"https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389\"\n    integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==\n  \n  \"@babel/highlight@^7.10.4\":\n    version \"7.14.5\"\n    resolved \"https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9\"\n    integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==\n    dependencies:\n      \"@babel/helper-validator-identifier\" \"^7.14.5\"\n      chalk \"^2.0.0\"\n      js-tokens \"^4.0.0\"\n  \n  \"@babel/plugin-syntax-jsx@7.14.5\":\n    version \"7.14.5\"\n    resolved \"https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201\"\n    integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==\n    dependencies:\n      \"@babel/helper-plugin-utils\" \"^7.14.5\"\n  \n  \"@babel/runtime-corejs3@^7.10.2\":\n    version \"7.15.4\"\n    resolved \"https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz#403139af262b9a6e8f9ba04a6fdcebf8de692bf1\"\n    integrity sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==\n    dependencies:\n      core-js-pure \"^3.16.0\"\n      regenerator-runtime \"^0.13.4\"\n  \n  \"@babel/runtime@7.15.3\":\n    version \"7.15.3\"\n    resolved \"https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b\"\n    integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==\n    dependencies:\n      regenerator-runtime \"^0.13.4\"\n  \n  \"@babel/runtime@^7.10.2\", \"@babel/runtime@^7.11.2\":\n    version \"7.15.4\"\n    resolved \"https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a\"\n    integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==\n    dependencies:\n      regenerator-runtime \"^0.13.4\"\n  \n  \"@babel/types@7.15.0\":\n    version \"7.15.0\"\n    resolved \"https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd\"\n    integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==\n    dependencies:\n      \"@babel/helper-validator-identifier\" \"^7.14.9\"\n      to-fast-properties \"^2.0.0\"\n  \n  \"@eslint/eslintrc@^0.4.3\":\n    version \"0.4.3\"\n    resolved \"https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c\"\n    integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==\n    dependencies:\n      ajv \"^6.12.4\"\n      debug \"^4.1.1\"\n      espree \"^7.3.0\"\n      globals \"^13.9.0\"\n      ignore \"^4.0.6\"\n      import-fresh \"^3.2.1\"\n      js-yaml \"^3.13.1\"\n      minimatch \"^3.0.4\"\n      strip-json-comments \"^3.1.1\"\n  \n  \"@hapi/accept@5.0.2\":\n    version \"5.0.2\"\n    resolved \"https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.2.tgz#ab7043b037e68b722f93f376afb05e85c0699523\"\n    integrity sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw==\n    dependencies:\n      \"@hapi/boom\" \"9.x.x\"\n      \"@hapi/hoek\" \"9.x.x\"\n  \n  \"@hapi/boom@9.x.x\":\n    version \"9.1.4\"\n    resolved \"https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.4.tgz#1f9dad367c6a7da9f8def24b4a986fc5a7bd9db6\"\n    integrity sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==\n    dependencies:\n      \"@hapi/hoek\" \"9.x.x\"\n  \n  \"@hapi/hoek@9.x.x\":\n    version \"9.2.0\"\n    resolved \"https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131\"\n    integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==\n  \n  \"@humanwhocodes/config-array@^0.5.0\":\n    version \"0.5.0\"\n    resolved \"https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9\"\n    integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==\n    dependencies:\n      \"@humanwhocodes/object-schema\" \"^1.2.0\"\n      debug \"^4.1.1\"\n      minimatch \"^3.0.4\"\n  \n  \"@humanwhocodes/object-schema@^1.2.0\":\n    version \"1.2.0\"\n    resolved \"https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf\"\n    integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==\n  \n  \"@napi-rs/triples@^1.0.3\":\n    version \"1.0.3\"\n    resolved \"https://registry.yarnpkg.com/@napi-rs/triples/-/triples-1.0.3.tgz#76d6d0c3f4d16013c61e45dfca5ff1e6c31ae53c\"\n    integrity sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==\n  \n  \"@next/env@11.1.2\":\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/@next/env/-/env-11.1.2.tgz#27996efbbc54c5f949f5e8c0a156e3aa48369b99\"\n    integrity sha512-+fteyVdQ7C/OoulfcF6vd1Yk0FEli4453gr8kSFbU8sKseNSizYq6df5MKz/AjwLptsxrUeIkgBdAzbziyJ3mA==\n  \n  \"@next/eslint-plugin-next@11.1.2\":\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-11.1.2.tgz#f26cf90bcb6cd2e4645e2ba253bbc9aaaa43a170\"\n    integrity sha512-cN+ojHRsufr9Yz0rtvjv8WI5En0RPZRJnt0y16Ha7DD+0n473evz8i1ETEJHmOLeR7iPJR0zxRrxeTN/bJMOjg==\n    dependencies:\n      glob \"7.1.7\"\n  \n  \"@next/polyfill-module@11.1.2\":\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-11.1.2.tgz#1fe92c364fdc81add775a16c678f5057c6aace98\"\n    integrity sha512-xZmixqADM3xxtqBV0TpAwSFzWJP0MOQzRfzItHXf1LdQHWb0yofHHC+7eOrPFic8+ZGz5y7BdPkkgR1S25OymA==\n  \n  \"@next/react-dev-overlay@11.1.2\":\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-11.1.2.tgz#73795dc5454b7af168bac93df7099965ebb603be\"\n    integrity sha512-rDF/mGY2NC69mMg2vDqzVpCOlWqnwPUXB2zkARhvknUHyS6QJphPYv9ozoPJuoT/QBs49JJd9KWaAzVBvq920A==\n    dependencies:\n      \"@babel/code-frame\" \"7.12.11\"\n      anser \"1.4.9\"\n      chalk \"4.0.0\"\n      classnames \"2.2.6\"\n      css.escape \"1.5.1\"\n      data-uri-to-buffer \"3.0.1\"\n      platform \"1.3.6\"\n      shell-quote \"1.7.2\"\n      source-map \"0.8.0-beta.0\"\n      stacktrace-parser \"0.1.10\"\n      strip-ansi \"6.0.0\"\n  \n  \"@next/react-refresh-utils@11.1.2\":\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-11.1.2.tgz#44ea40d8e773e4b77bad85e24f6ac041d5e4b4a5\"\n    integrity sha512-hsoJmPfhVqjZ8w4IFzoo8SyECVnN+8WMnImTbTKrRUHOVJcYMmKLL7xf7T0ft00tWwAl/3f3Q3poWIN2Ueql/Q==\n  \n  \"@next/swc-darwin-arm64@11.1.2\":\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-11.1.2.tgz#93226c38db488c4b62b30a53b530e87c969b8251\"\n    integrity sha512-hZuwOlGOwBZADA8EyDYyjx3+4JGIGjSHDHWrmpI7g5rFmQNltjlbaefAbiU5Kk7j3BUSDwt30quJRFv3nyJQ0w==\n  \n  \"@next/swc-darwin-x64@11.1.2\":\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.2.tgz#792003989f560c00677b5daeff360b35b510db83\"\n    integrity sha512-PGOp0E1GisU+EJJlsmJVGE+aPYD0Uh7zqgsrpD3F/Y3766Ptfbe1lEPPWnRDl+OzSSrSrX1lkyM/Jlmh5OwNvA==\n  \n  \"@next/swc-linux-x64-gnu@11.1.2\":\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-11.1.2.tgz#8216b2ae1f21f0112958735c39dd861088108f37\"\n    integrity sha512-YcDHTJjn/8RqvyJVB6pvEKXihDcdrOwga3GfMv/QtVeLphTouY4BIcEUfrG5+26Nf37MP1ywN3RRl1TxpurAsQ==\n  \n  \"@next/swc-win32-x64-msvc@11.1.2\":\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-11.1.2.tgz#e15824405df137129918205e43cb5e9339589745\"\n    integrity sha512-e/pIKVdB+tGQYa1cW3sAeHm8gzEri/HYLZHT4WZojrUxgWXqx8pk7S7Xs47uBcFTqBDRvK3EcQpPLf3XdVsDdg==\n  \n  \"@node-rs/helper@1.2.1\":\n    version \"1.2.1\"\n    resolved \"https://registry.yarnpkg.com/@node-rs/helper/-/helper-1.2.1.tgz#e079b05f21ff4329d82c4e1f71c0290e4ecdc70c\"\n    integrity sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==\n    dependencies:\n      \"@napi-rs/triples\" \"^1.0.3\"\n  \n  \"@nodelib/fs.scandir@2.1.5\":\n    version \"2.1.5\"\n    resolved \"https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5\"\n    integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==\n    dependencies:\n      \"@nodelib/fs.stat\" \"2.0.5\"\n      run-parallel \"^1.1.9\"\n  \n  \"@nodelib/fs.stat@2.0.5\", \"@nodelib/fs.stat@^2.0.2\":\n    version \"2.0.5\"\n    resolved \"https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b\"\n    integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==\n  \n  \"@nodelib/fs.walk@^1.2.3\":\n    version \"1.2.8\"\n    resolved \"https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a\"\n    integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==\n    dependencies:\n      \"@nodelib/fs.scandir\" \"2.1.5\"\n      fastq \"^1.6.0\"\n  \n  \"@prisma/engines@3.1.0-24.c22652b7e418506fab23052d569b85d3aec4883f\":\n    version \"3.1.0-24.c22652b7e418506fab23052d569b85d3aec4883f\"\n    resolved \"https://registry.yarnpkg.com/@prisma/engines/-/engines-3.1.0-24.c22652b7e418506fab23052d569b85d3aec4883f.tgz#7b45708e6a42523dc9bc2214e5c62781f608dc3a\"\n    integrity sha512-6NEp0VlLho3hVtIvj2P4h0e19AYqQSXtFGts8gSIXDnV+l5pRFZaDMfGo2RiLMR0Kfrs8c3ZYxYX0sWmVL0tWw==\n  \n  \"@rushstack/eslint-patch@^1.0.6\":\n    version \"1.0.7\"\n    resolved \"https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.0.7.tgz#82f83dcc2eb9b1e1d559b3aca96783e285eb8592\"\n    integrity sha512-3Zi2LGbCLDz4IIL7ir6wD0u/ggHotLkK5SlVzFzTcYaNgPR4MAt/9JYZqXWKcofPWEoptfpnCJU8Bq9sxw8QUg==\n  \n  \"@types/json5@^0.0.29\":\n    version \"0.0.29\"\n    resolved \"https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee\"\n    integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=\n  \n  \"@types/node@*\":\n    version \"16.9.6\"\n    resolved \"https://registry.yarnpkg.com/@types/node/-/node-16.9.6.tgz#040a64d7faf9e5d9e940357125f0963012e66f04\"\n    integrity sha512-YHUZhBOMTM3mjFkXVcK+WwAcYmyhe1wL4lfqNtzI0b3qAy7yuSetnM7QJazgE5PFmgVTNGiLOgRFfJMqW7XpSQ==\n  \n  \"@types/prop-types@*\":\n    version \"15.7.4\"\n    resolved \"https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11\"\n    integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==\n  \n  \"@types/react@17.0.24\":\n    version \"17.0.24\"\n    resolved \"https://registry.yarnpkg.com/@types/react/-/react-17.0.24.tgz#7e1b3f78d0fc53782543f9bce6d949959a5880bd\"\n    integrity sha512-eIpyco99gTH+FTI3J7Oi/OH8MZoFMJuztNRimDOJwH4iGIsKV2qkGnk4M9VzlaVWeEEWLWSQRy0FEA0Kz218cg==\n    dependencies:\n      \"@types/prop-types\" \"*\"\n      \"@types/scheduler\" \"*\"\n      csstype \"^3.0.2\"\n  \n  \"@types/scheduler@*\":\n    version \"0.16.2\"\n    resolved \"https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39\"\n    integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==\n  \n  \"@typescript-eslint/parser@^4.20.0\":\n    version \"4.31.2\"\n    resolved \"https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.31.2.tgz#54aa75986e3302d91eff2bbbaa6ecfa8084e9c34\"\n    integrity sha512-EcdO0E7M/sv23S/rLvenHkb58l3XhuSZzKf6DBvLgHqOYdL6YFMYVtreGFWirxaU2mS1GYDby3Lyxco7X5+Vjw==\n    dependencies:\n      \"@typescript-eslint/scope-manager\" \"4.31.2\"\n      \"@typescript-eslint/types\" \"4.31.2\"\n      \"@typescript-eslint/typescript-estree\" \"4.31.2\"\n      debug \"^4.3.1\"\n  \n  \"@typescript-eslint/scope-manager@4.31.2\":\n    version \"4.31.2\"\n    resolved \"https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.31.2.tgz#1d528cb3ed3bcd88019c20a57c18b897b073923a\"\n    integrity sha512-2JGwudpFoR/3Czq6mPpE8zBPYdHWFGL6lUNIGolbKQeSNv4EAiHaR5GVDQaLA0FwgcdcMtRk+SBJbFGL7+La5w==\n    dependencies:\n      \"@typescript-eslint/types\" \"4.31.2\"\n      \"@typescript-eslint/visitor-keys\" \"4.31.2\"\n  \n  \"@typescript-eslint/types@4.31.2\":\n    version \"4.31.2\"\n    resolved \"https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.31.2.tgz#2aea7177d6d744521a168ed4668eddbd912dfadf\"\n    integrity sha512-kWiTTBCTKEdBGrZKwFvOlGNcAsKGJSBc8xLvSjSppFO88AqGxGNYtF36EuEYG6XZ9vT0xX8RNiHbQUKglbSi1w==\n  \n  \"@typescript-eslint/typescript-estree@4.31.2\":\n    version \"4.31.2\"\n    resolved \"https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.2.tgz#abfd50594d8056b37e7428df3b2d185ef2d0060c\"\n    integrity sha512-ieBq8U9at6PvaC7/Z6oe8D3czeW5d//Fo1xkF/s9394VR0bg/UaMYPdARiWyKX+lLEjY3w/FNZJxitMsiWv+wA==\n    dependencies:\n      \"@typescript-eslint/types\" \"4.31.2\"\n      \"@typescript-eslint/visitor-keys\" \"4.31.2\"\n      debug \"^4.3.1\"\n      globby \"^11.0.3\"\n      is-glob \"^4.0.1\"\n      semver \"^7.3.5\"\n      tsutils \"^3.21.0\"\n  \n  \"@typescript-eslint/visitor-keys@4.31.2\":\n    version \"4.31.2\"\n    resolved \"https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.2.tgz#7d5b4a4705db7fe59ecffb273c1d082760f635cc\"\n    integrity sha512-PrBId7EQq2Nibns7dd/ch6S6/M4/iwLM9McbgeEbCXfxdwRUNxJ4UNreJ6Gh3fI2GNKNrWnQxKL7oCPmngKBug==\n    dependencies:\n      \"@typescript-eslint/types\" \"4.31.2\"\n      eslint-visitor-keys \"^2.0.0\"\n  \n  acorn-jsx@^5.3.1:\n    version \"5.3.2\"\n    resolved \"https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937\"\n    integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==\n  \n  acorn@^7.4.0:\n    version \"7.4.1\"\n    resolved \"https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa\"\n    integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==\n  \n  ajv@^6.10.0, ajv@^6.12.4:\n    version \"6.12.6\"\n    resolved \"https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4\"\n    integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==\n    dependencies:\n      fast-deep-equal \"^3.1.1\"\n      fast-json-stable-stringify \"^2.0.0\"\n      json-schema-traverse \"^0.4.1\"\n      uri-js \"^4.2.2\"\n  \n  ajv@^8.0.1:\n    version \"8.6.3\"\n    resolved \"https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764\"\n    integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==\n    dependencies:\n      fast-deep-equal \"^3.1.1\"\n      json-schema-traverse \"^1.0.0\"\n      require-from-string \"^2.0.2\"\n      uri-js \"^4.2.2\"\n  \n  anser@1.4.9:\n    version \"1.4.9\"\n    resolved \"https://registry.yarnpkg.com/anser/-/anser-1.4.9.tgz#1f85423a5dcf8da4631a341665ff675b96845760\"\n    integrity sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA==\n  \n  ansi-colors@^4.1.1:\n    version \"4.1.1\"\n    resolved \"https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348\"\n    integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==\n  \n  ansi-regex@^5.0.0:\n    version \"5.0.1\"\n    resolved \"https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304\"\n    integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\n  \n  ansi-styles@^3.2.1:\n    version \"3.2.1\"\n    resolved \"https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d\"\n    integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==\n    dependencies:\n      color-convert \"^1.9.0\"\n  \n  ansi-styles@^4.0.0, ansi-styles@^4.1.0:\n    version \"4.3.0\"\n    resolved \"https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937\"\n    integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\n    dependencies:\n      color-convert \"^2.0.1\"\n  \n  anymatch@~3.1.1:\n    version \"3.1.2\"\n    resolved \"https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716\"\n    integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==\n    dependencies:\n      normalize-path \"^3.0.0\"\n      picomatch \"^2.0.4\"\n  \n  argparse@^1.0.7:\n    version \"1.0.10\"\n    resolved \"https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911\"\n    integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==\n    dependencies:\n      sprintf-js \"~1.0.2\"\n  \n  aria-query@^4.2.2:\n    version \"4.2.2\"\n    resolved \"https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b\"\n    integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==\n    dependencies:\n      \"@babel/runtime\" \"^7.10.2\"\n      \"@babel/runtime-corejs3\" \"^7.10.2\"\n  \n  array-includes@^3.1.1, array-includes@^3.1.3:\n    version \"3.1.3\"\n    resolved \"https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a\"\n    integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==\n    dependencies:\n      call-bind \"^1.0.2\"\n      define-properties \"^1.1.3\"\n      es-abstract \"^1.18.0-next.2\"\n      get-intrinsic \"^1.1.1\"\n      is-string \"^1.0.5\"\n  \n  array-union@^2.1.0:\n    version \"2.1.0\"\n    resolved \"https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d\"\n    integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==\n  \n  array.prototype.flat@^1.2.4:\n    version \"1.2.4\"\n    resolved \"https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123\"\n    integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==\n    dependencies:\n      call-bind \"^1.0.0\"\n      define-properties \"^1.1.3\"\n      es-abstract \"^1.18.0-next.1\"\n  \n  array.prototype.flatmap@^1.2.4:\n    version \"1.2.4\"\n    resolved \"https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9\"\n    integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==\n    dependencies:\n      call-bind \"^1.0.0\"\n      define-properties \"^1.1.3\"\n      es-abstract \"^1.18.0-next.1\"\n      function-bind \"^1.1.1\"\n  \n  asn1.js@^5.2.0:\n    version \"5.4.1\"\n    resolved \"https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07\"\n    integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==\n    dependencies:\n      bn.js \"^4.0.0\"\n      inherits \"^2.0.1\"\n      minimalistic-assert \"^1.0.0\"\n      safer-buffer \"^2.1.0\"\n  \n  assert@2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32\"\n    integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==\n    dependencies:\n      es6-object-assign \"^1.1.0\"\n      is-nan \"^1.2.1\"\n      object-is \"^1.0.1\"\n      util \"^0.12.0\"\n  \n  assert@^1.1.1:\n    version \"1.5.0\"\n    resolved \"https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb\"\n    integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==\n    dependencies:\n      object-assign \"^4.1.1\"\n      util \"0.10.3\"\n  \n  ast-types-flow@^0.0.7:\n    version \"0.0.7\"\n    resolved \"https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad\"\n    integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=\n  \n  ast-types@0.13.2:\n    version \"0.13.2\"\n    resolved \"https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48\"\n    integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==\n  \n  astral-regex@^2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31\"\n    integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==\n  \n  available-typed-arrays@^1.0.5:\n    version \"1.0.5\"\n    resolved \"https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7\"\n    integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==\n  \n  axe-core@^4.0.2:\n    version \"4.3.3\"\n    resolved \"https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.3.tgz#b55cd8e8ddf659fe89b064680e1c6a4dceab0325\"\n    integrity sha512-/lqqLAmuIPi79WYfRpy2i8z+x+vxU3zX2uAm0gs1q52qTuKwolOj1P8XbufpXcsydrpKx2yGn2wzAnxCMV86QA==\n  \n  axobject-query@^2.2.0:\n    version \"2.2.0\"\n    resolved \"https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be\"\n    integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==\n  \n  balanced-match@^1.0.0:\n    version \"1.0.2\"\n    resolved \"https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee\"\n    integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==\n  \n  base64-js@^1.0.2:\n    version \"1.5.1\"\n    resolved \"https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a\"\n    integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==\n  \n  big.js@^5.2.2:\n    version \"5.2.2\"\n    resolved \"https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328\"\n    integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==\n  \n  binary-extensions@^2.0.0:\n    version \"2.2.0\"\n    resolved \"https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d\"\n    integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==\n  \n  bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:\n    version \"4.12.0\"\n    resolved \"https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88\"\n    integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==\n  \n  bn.js@^5.0.0, bn.js@^5.1.1:\n    version \"5.2.0\"\n    resolved \"https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002\"\n    integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==\n  \n  brace-expansion@^1.1.7:\n    version \"1.1.11\"\n    resolved \"https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd\"\n    integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==\n    dependencies:\n      balanced-match \"^1.0.0\"\n      concat-map \"0.0.1\"\n  \n  braces@^3.0.1, braces@~3.0.2:\n    version \"3.0.2\"\n    resolved \"https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107\"\n    integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==\n    dependencies:\n      fill-range \"^7.0.1\"\n  \n  brorand@^1.0.1, brorand@^1.1.0:\n    version \"1.1.0\"\n    resolved \"https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n    integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=\n  \n  browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n    version \"1.2.0\"\n    resolved \"https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48\"\n    integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==\n    dependencies:\n      buffer-xor \"^1.0.3\"\n      cipher-base \"^1.0.0\"\n      create-hash \"^1.1.0\"\n      evp_bytestokey \"^1.0.3\"\n      inherits \"^2.0.1\"\n      safe-buffer \"^5.0.1\"\n  \n  browserify-cipher@^1.0.0:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0\"\n    integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==\n    dependencies:\n      browserify-aes \"^1.0.4\"\n      browserify-des \"^1.0.0\"\n      evp_bytestokey \"^1.0.0\"\n  \n  browserify-des@^1.0.0:\n    version \"1.0.2\"\n    resolved \"https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c\"\n    integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==\n    dependencies:\n      cipher-base \"^1.0.1\"\n      des.js \"^1.0.0\"\n      inherits \"^2.0.1\"\n      safe-buffer \"^5.1.2\"\n  \n  browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:\n    version \"4.1.0\"\n    resolved \"https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d\"\n    integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==\n    dependencies:\n      bn.js \"^5.0.0\"\n      randombytes \"^2.0.1\"\n  \n  browserify-sign@^4.0.0:\n    version \"4.2.1\"\n    resolved \"https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3\"\n    integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==\n    dependencies:\n      bn.js \"^5.1.1\"\n      browserify-rsa \"^4.0.1\"\n      create-hash \"^1.2.0\"\n      create-hmac \"^1.1.7\"\n      elliptic \"^6.5.3\"\n      inherits \"^2.0.4\"\n      parse-asn1 \"^5.1.5\"\n      readable-stream \"^3.6.0\"\n      safe-buffer \"^5.2.0\"\n  \n  browserify-zlib@0.2.0, browserify-zlib@^0.2.0:\n    version \"0.2.0\"\n    resolved \"https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f\"\n    integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==\n    dependencies:\n      pako \"~1.0.5\"\n  \n  browserslist@4.16.6:\n    version \"4.16.6\"\n    resolved \"https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2\"\n    integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==\n    dependencies:\n      caniuse-lite \"^1.0.30001219\"\n      colorette \"^1.2.2\"\n      electron-to-chromium \"^1.3.723\"\n      escalade \"^3.1.1\"\n      node-releases \"^1.1.71\"\n  \n  buffer-xor@^1.0.3:\n    version \"1.0.3\"\n    resolved \"https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n    integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=\n  \n  buffer@5.6.0:\n    version \"5.6.0\"\n    resolved \"https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786\"\n    integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==\n    dependencies:\n      base64-js \"^1.0.2\"\n      ieee754 \"^1.1.4\"\n  \n  buffer@^4.3.0:\n    version \"4.9.2\"\n    resolved \"https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8\"\n    integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==\n    dependencies:\n      base64-js \"^1.0.2\"\n      ieee754 \"^1.1.4\"\n      isarray \"^1.0.0\"\n  \n  builtin-status-codes@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n    integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=\n  \n  bytes@3.1.0:\n    version \"3.1.0\"\n    resolved \"https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6\"\n    integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==\n  \n  call-bind@^1.0.0, call-bind@^1.0.2:\n    version \"1.0.2\"\n    resolved \"https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c\"\n    integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==\n    dependencies:\n      function-bind \"^1.1.1\"\n      get-intrinsic \"^1.0.2\"\n  \n  callsites@^3.0.0:\n    version \"3.1.0\"\n    resolved \"https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73\"\n    integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==\n  \n  caniuse-lite@^1.0.30001202, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001228:\n    version \"1.0.30001260\"\n    resolved \"https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001260.tgz#e3be3f34ddad735ca4a2736fa9e768ef34316270\"\n    integrity sha512-Fhjc/k8725ItmrvW5QomzxLeojewxvqiYCKeFcfFEhut28IVLdpHU19dneOmltZQIE5HNbawj1HYD+1f2bM1Dg==\n    dependencies:\n      nanocolors \"^0.1.0\"\n  \n  chalk@2.4.2, chalk@^2.0.0:\n    version \"2.4.2\"\n    resolved \"https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424\"\n    integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==\n    dependencies:\n      ansi-styles \"^3.2.1\"\n      escape-string-regexp \"^1.0.5\"\n      supports-color \"^5.3.0\"\n  \n  chalk@4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72\"\n    integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==\n    dependencies:\n      ansi-styles \"^4.1.0\"\n      supports-color \"^7.1.0\"\n  \n  chalk@^4.0.0:\n    version \"4.1.2\"\n    resolved \"https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01\"\n    integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\n    dependencies:\n      ansi-styles \"^4.1.0\"\n      supports-color \"^7.1.0\"\n  \n  chokidar@3.5.1:\n    version \"3.5.1\"\n    resolved \"https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a\"\n    integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==\n    dependencies:\n      anymatch \"~3.1.1\"\n      braces \"~3.0.2\"\n      glob-parent \"~5.1.0\"\n      is-binary-path \"~2.1.0\"\n      is-glob \"~4.0.1\"\n      normalize-path \"~3.0.0\"\n      readdirp \"~3.5.0\"\n    optionalDependencies:\n      fsevents \"~2.3.1\"\n  \n  cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:\n    version \"1.0.4\"\n    resolved \"https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de\"\n    integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==\n    dependencies:\n      inherits \"^2.0.1\"\n      safe-buffer \"^5.0.1\"\n  \n  classnames@2.2.6:\n    version \"2.2.6\"\n    resolved \"https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce\"\n    integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==\n  \n  color-convert@^1.9.0:\n    version \"1.9.3\"\n    resolved \"https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8\"\n    integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==\n    dependencies:\n      color-name \"1.1.3\"\n  \n  color-convert@^2.0.1:\n    version \"2.0.1\"\n    resolved \"https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3\"\n    integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\n    dependencies:\n      color-name \"~1.1.4\"\n  \n  color-name@1.1.3:\n    version \"1.1.3\"\n    resolved \"https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25\"\n    integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=\n  \n  color-name@~1.1.4:\n    version \"1.1.4\"\n    resolved \"https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2\"\n    integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\n  \n  colorette@^1.2.2:\n    version \"1.4.0\"\n    resolved \"https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40\"\n    integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==\n  \n  commondir@^1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b\"\n    integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=\n  \n  concat-map@0.0.1:\n    version \"0.0.1\"\n    resolved \"https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n    integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=\n  \n  console-browserify@^1.1.0:\n    version \"1.2.0\"\n    resolved \"https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336\"\n    integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==\n  \n  constants-browserify@1.0.0, constants-browserify@^1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n    integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=\n  \n  convert-source-map@1.7.0:\n    version \"1.7.0\"\n    resolved \"https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442\"\n    integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==\n    dependencies:\n      safe-buffer \"~5.1.1\"\n  \n  core-js-pure@^3.16.0:\n    version \"3.18.0\"\n    resolved \"https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.0.tgz#e5187347bae66448c9e2d67c01c34c4df3261dc5\"\n    integrity sha512-ZnK+9vyuMhKulIGqT/7RHGRok8RtkHMEX/BGPHkHx+ouDkq+MUvf9mfIgdqhpmPDu8+V5UtRn/CbCRc9I4lX4w==\n  \n  core-util-is@~1.0.0:\n    version \"1.0.3\"\n    resolved \"https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85\"\n    integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==\n  \n  create-ecdh@^4.0.0:\n    version \"4.0.4\"\n    resolved \"https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e\"\n    integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==\n    dependencies:\n      bn.js \"^4.1.0\"\n      elliptic \"^6.5.3\"\n  \n  create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:\n    version \"1.2.0\"\n    resolved \"https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196\"\n    integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==\n    dependencies:\n      cipher-base \"^1.0.1\"\n      inherits \"^2.0.1\"\n      md5.js \"^1.3.4\"\n      ripemd160 \"^2.0.1\"\n      sha.js \"^2.4.0\"\n  \n  create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:\n    version \"1.1.7\"\n    resolved \"https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff\"\n    integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==\n    dependencies:\n      cipher-base \"^1.0.3\"\n      create-hash \"^1.1.0\"\n      inherits \"^2.0.1\"\n      ripemd160 \"^2.0.0\"\n      safe-buffer \"^5.0.1\"\n      sha.js \"^2.4.8\"\n  \n  cross-spawn@^7.0.2:\n    version \"7.0.3\"\n    resolved \"https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6\"\n    integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==\n    dependencies:\n      path-key \"^3.1.0\"\n      shebang-command \"^2.0.0\"\n      which \"^2.0.1\"\n  \n  crypto-browserify@3.12.0, crypto-browserify@^3.11.0:\n    version \"3.12.0\"\n    resolved \"https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec\"\n    integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==\n    dependencies:\n      browserify-cipher \"^1.0.0\"\n      browserify-sign \"^4.0.0\"\n      create-ecdh \"^4.0.0\"\n      create-hash \"^1.1.0\"\n      create-hmac \"^1.1.0\"\n      diffie-hellman \"^5.0.0\"\n      inherits \"^2.0.1\"\n      pbkdf2 \"^3.0.3\"\n      public-encrypt \"^4.0.0\"\n      randombytes \"^2.0.0\"\n      randomfill \"^1.0.3\"\n  \n  css.escape@1.5.1:\n    version \"1.5.1\"\n    resolved \"https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb\"\n    integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=\n  \n  cssnano-preset-simple@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-3.0.0.tgz#e95d0012699ca2c741306e9a3b8eeb495a348dbe\"\n    integrity sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w==\n    dependencies:\n      caniuse-lite \"^1.0.30001202\"\n  \n  cssnano-simple@3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-3.0.0.tgz#a4b8ccdef4c7084af97e19bc5b93b4ecf211e90f\"\n    integrity sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg==\n    dependencies:\n      cssnano-preset-simple \"^3.0.0\"\n  \n  csstype@^3.0.2:\n    version \"3.0.9\"\n    resolved \"https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b\"\n    integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==\n  \n  damerau-levenshtein@^1.0.6:\n    version \"1.0.7\"\n    resolved \"https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d\"\n    integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==\n  \n  data-uri-to-buffer@3.0.1:\n    version \"3.0.1\"\n    resolved \"https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636\"\n    integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==\n  \n  debug@2, debug@^2.6.9:\n    version \"2.6.9\"\n    resolved \"https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f\"\n    integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==\n    dependencies:\n      ms \"2.0.0\"\n  \n  debug@^3.2.7:\n    version \"3.2.7\"\n    resolved \"https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a\"\n    integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==\n    dependencies:\n      ms \"^2.1.1\"\n  \n  debug@^4.0.1, debug@^4.1.1, debug@^4.3.1:\n    version \"4.3.2\"\n    resolved \"https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b\"\n    integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==\n    dependencies:\n      ms \"2.1.2\"\n  \n  deep-is@^0.1.3:\n    version \"0.1.4\"\n    resolved \"https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831\"\n    integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==\n  \n  define-properties@^1.1.3:\n    version \"1.1.3\"\n    resolved \"https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1\"\n    integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==\n    dependencies:\n      object-keys \"^1.0.12\"\n  \n  depd@~1.1.2:\n    version \"1.1.2\"\n    resolved \"https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9\"\n    integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=\n  \n  des.js@^1.0.0:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843\"\n    integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==\n    dependencies:\n      inherits \"^2.0.1\"\n      minimalistic-assert \"^1.0.0\"\n  \n  diffie-hellman@^5.0.0:\n    version \"5.0.3\"\n    resolved \"https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875\"\n    integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==\n    dependencies:\n      bn.js \"^4.1.0\"\n      miller-rabin \"^4.0.0\"\n      randombytes \"^2.0.0\"\n  \n  dir-glob@^3.0.1:\n    version \"3.0.1\"\n    resolved \"https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f\"\n    integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==\n    dependencies:\n      path-type \"^4.0.0\"\n  \n  doctrine@^2.1.0:\n    version \"2.1.0\"\n    resolved \"https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d\"\n    integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==\n    dependencies:\n      esutils \"^2.0.2\"\n  \n  doctrine@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961\"\n    integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==\n    dependencies:\n      esutils \"^2.0.2\"\n  \n  domain-browser@4.19.0:\n    version \"4.19.0\"\n    resolved \"https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.19.0.tgz#1093e17c0a17dbd521182fe90d49ac1370054af1\"\n    integrity sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==\n  \n  domain-browser@^1.1.1:\n    version \"1.2.0\"\n    resolved \"https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda\"\n    integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==\n  \n  electron-to-chromium@^1.3.723:\n    version \"1.3.848\"\n    resolved \"https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.848.tgz#94cc196e496f33c0d71cd98561448f10018584cc\"\n    integrity sha512-wchRyBcdcmibioggdO7CbMT5QQ4lXlN/g7Mkpf1K2zINidnqij6EVu94UIZ+h5nB2S9XD4bykqFv9LonAWLFyw==\n  \n  elliptic@^6.5.3:\n    version \"6.5.4\"\n    resolved \"https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb\"\n    integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==\n    dependencies:\n      bn.js \"^4.11.9\"\n      brorand \"^1.1.0\"\n      hash.js \"^1.0.0\"\n      hmac-drbg \"^1.0.1\"\n      inherits \"^2.0.4\"\n      minimalistic-assert \"^1.0.1\"\n      minimalistic-crypto-utils \"^1.0.1\"\n  \n  emoji-regex@^8.0.0:\n    version \"8.0.0\"\n    resolved \"https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37\"\n    integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\n  \n  emoji-regex@^9.0.0:\n    version \"9.2.2\"\n    resolved \"https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72\"\n    integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==\n  \n  emojis-list@^2.0.0:\n    version \"2.1.0\"\n    resolved \"https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n    integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=\n  \n  encoding@0.1.13:\n    version \"0.1.13\"\n    resolved \"https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9\"\n    integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==\n    dependencies:\n      iconv-lite \"^0.6.2\"\n  \n  enquirer@^2.3.5:\n    version \"2.3.6\"\n    resolved \"https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d\"\n    integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==\n    dependencies:\n      ansi-colors \"^4.1.1\"\n  \n  error-ex@^1.3.1:\n    version \"1.3.2\"\n    resolved \"https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf\"\n    integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==\n    dependencies:\n      is-arrayish \"^0.2.1\"\n  \n  es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.1, es-abstract@^1.18.2, es-abstract@^1.18.5:\n    version \"1.18.6\"\n    resolved \"https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.6.tgz#2c44e3ea7a6255039164d26559777a6d978cb456\"\n    integrity sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==\n    dependencies:\n      call-bind \"^1.0.2\"\n      es-to-primitive \"^1.2.1\"\n      function-bind \"^1.1.1\"\n      get-intrinsic \"^1.1.1\"\n      get-symbol-description \"^1.0.0\"\n      has \"^1.0.3\"\n      has-symbols \"^1.0.2\"\n      internal-slot \"^1.0.3\"\n      is-callable \"^1.2.4\"\n      is-negative-zero \"^2.0.1\"\n      is-regex \"^1.1.4\"\n      is-string \"^1.0.7\"\n      object-inspect \"^1.11.0\"\n      object-keys \"^1.1.1\"\n      object.assign \"^4.1.2\"\n      string.prototype.trimend \"^1.0.4\"\n      string.prototype.trimstart \"^1.0.4\"\n      unbox-primitive \"^1.0.1\"\n  \n  es-to-primitive@^1.2.1:\n    version \"1.2.1\"\n    resolved \"https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a\"\n    integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==\n    dependencies:\n      is-callable \"^1.1.4\"\n      is-date-object \"^1.0.1\"\n      is-symbol \"^1.0.2\"\n  \n  es6-object-assign@^1.1.0:\n    version \"1.1.0\"\n    resolved \"https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c\"\n    integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=\n  \n  escalade@^3.1.1:\n    version \"3.1.1\"\n    resolved \"https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40\"\n    integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==\n  \n  escape-string-regexp@^1.0.5:\n    version \"1.0.5\"\n    resolved \"https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n    integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=\n  \n  escape-string-regexp@^4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34\"\n    integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==\n  \n  eslint-config-next@11.1.2:\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-11.1.2.tgz#73c918f2fa6120d5f65080bf3fcf6b154905707e\"\n    integrity sha512-dFutecxX2Z5/QVlLwdtKt+gIfmNMP8Qx6/qZh3LM/DFVdGJEAnUKrr4VwGmACB2kx/PQ5bx3R+QxnEg4fDPiTg==\n    dependencies:\n      \"@next/eslint-plugin-next\" \"11.1.2\"\n      \"@rushstack/eslint-patch\" \"^1.0.6\"\n      \"@typescript-eslint/parser\" \"^4.20.0\"\n      eslint-import-resolver-node \"^0.3.4\"\n      eslint-import-resolver-typescript \"^2.4.0\"\n      eslint-plugin-import \"^2.22.1\"\n      eslint-plugin-jsx-a11y \"^6.4.1\"\n      eslint-plugin-react \"^7.23.1\"\n      eslint-plugin-react-hooks \"^4.2.0\"\n  \n  eslint-import-resolver-node@^0.3.4, eslint-import-resolver-node@^0.3.6:\n    version \"0.3.6\"\n    resolved \"https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd\"\n    integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==\n    dependencies:\n      debug \"^3.2.7\"\n      resolve \"^1.20.0\"\n  \n  eslint-import-resolver-typescript@^2.4.0:\n    version \"2.5.0\"\n    resolved \"https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.5.0.tgz#07661966b272d14ba97f597b51e1a588f9722f0a\"\n    integrity sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==\n    dependencies:\n      debug \"^4.3.1\"\n      glob \"^7.1.7\"\n      is-glob \"^4.0.1\"\n      resolve \"^1.20.0\"\n      tsconfig-paths \"^3.9.0\"\n  \n  eslint-module-utils@^2.6.2:\n    version \"2.6.2\"\n    resolved \"https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz#94e5540dd15fe1522e8ffa3ec8db3b7fa7e7a534\"\n    integrity sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==\n    dependencies:\n      debug \"^3.2.7\"\n      pkg-dir \"^2.0.0\"\n  \n  eslint-plugin-import@^2.22.1:\n    version \"2.24.2\"\n    resolved \"https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz#2c8cd2e341f3885918ee27d18479910ade7bb4da\"\n    integrity sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==\n    dependencies:\n      array-includes \"^3.1.3\"\n      array.prototype.flat \"^1.2.4\"\n      debug \"^2.6.9\"\n      doctrine \"^2.1.0\"\n      eslint-import-resolver-node \"^0.3.6\"\n      eslint-module-utils \"^2.6.2\"\n      find-up \"^2.0.0\"\n      has \"^1.0.3\"\n      is-core-module \"^2.6.0\"\n      minimatch \"^3.0.4\"\n      object.values \"^1.1.4\"\n      pkg-up \"^2.0.0\"\n      read-pkg-up \"^3.0.0\"\n      resolve \"^1.20.0\"\n      tsconfig-paths \"^3.11.0\"\n  \n  eslint-plugin-jsx-a11y@^6.4.1:\n    version \"6.4.1\"\n    resolved \"https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd\"\n    integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==\n    dependencies:\n      \"@babel/runtime\" \"^7.11.2\"\n      aria-query \"^4.2.2\"\n      array-includes \"^3.1.1\"\n      ast-types-flow \"^0.0.7\"\n      axe-core \"^4.0.2\"\n      axobject-query \"^2.2.0\"\n      damerau-levenshtein \"^1.0.6\"\n      emoji-regex \"^9.0.0\"\n      has \"^1.0.3\"\n      jsx-ast-utils \"^3.1.0\"\n      language-tags \"^1.0.5\"\n  \n  eslint-plugin-react-hooks@^4.2.0:\n    version \"4.2.0\"\n    resolved \"https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556\"\n    integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==\n  \n  eslint-plugin-react@^7.23.1:\n    version \"7.26.0\"\n    resolved \"https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.26.0.tgz#3ae019a35d542b98e5af9e2f96b89c232c74b55b\"\n    integrity sha512-dceliS5itjk4EZdQYtLMz6GulcsasguIs+VTXuiC7Q5IPIdGTkyfXVdmsQOqEhlD9MciofH4cMcT1bw1WWNxCQ==\n    dependencies:\n      array-includes \"^3.1.3\"\n      array.prototype.flatmap \"^1.2.4\"\n      doctrine \"^2.1.0\"\n      estraverse \"^5.2.0\"\n      jsx-ast-utils \"^2.4.1 || ^3.0.0\"\n      minimatch \"^3.0.4\"\n      object.entries \"^1.1.4\"\n      object.fromentries \"^2.0.4\"\n      object.hasown \"^1.0.0\"\n      object.values \"^1.1.4\"\n      prop-types \"^15.7.2\"\n      resolve \"^2.0.0-next.3\"\n      semver \"^6.3.0\"\n      string.prototype.matchall \"^4.0.5\"\n  \n  eslint-scope@^5.1.1:\n    version \"5.1.1\"\n    resolved \"https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c\"\n    integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==\n    dependencies:\n      esrecurse \"^4.3.0\"\n      estraverse \"^4.1.1\"\n  \n  eslint-utils@^2.1.0:\n    version \"2.1.0\"\n    resolved \"https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27\"\n    integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==\n    dependencies:\n      eslint-visitor-keys \"^1.1.0\"\n  \n  eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:\n    version \"1.3.0\"\n    resolved \"https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e\"\n    integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==\n  \n  eslint-visitor-keys@^2.0.0:\n    version \"2.1.0\"\n    resolved \"https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303\"\n    integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==\n  \n  eslint@7.32.0:\n    version \"7.32.0\"\n    resolved \"https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d\"\n    integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==\n    dependencies:\n      \"@babel/code-frame\" \"7.12.11\"\n      \"@eslint/eslintrc\" \"^0.4.3\"\n      \"@humanwhocodes/config-array\" \"^0.5.0\"\n      ajv \"^6.10.0\"\n      chalk \"^4.0.0\"\n      cross-spawn \"^7.0.2\"\n      debug \"^4.0.1\"\n      doctrine \"^3.0.0\"\n      enquirer \"^2.3.5\"\n      escape-string-regexp \"^4.0.0\"\n      eslint-scope \"^5.1.1\"\n      eslint-utils \"^2.1.0\"\n      eslint-visitor-keys \"^2.0.0\"\n      espree \"^7.3.1\"\n      esquery \"^1.4.0\"\n      esutils \"^2.0.2\"\n      fast-deep-equal \"^3.1.3\"\n      file-entry-cache \"^6.0.1\"\n      functional-red-black-tree \"^1.0.1\"\n      glob-parent \"^5.1.2\"\n      globals \"^13.6.0\"\n      ignore \"^4.0.6\"\n      import-fresh \"^3.0.0\"\n      imurmurhash \"^0.1.4\"\n      is-glob \"^4.0.0\"\n      js-yaml \"^3.13.1\"\n      json-stable-stringify-without-jsonify \"^1.0.1\"\n      levn \"^0.4.1\"\n      lodash.merge \"^4.6.2\"\n      minimatch \"^3.0.4\"\n      natural-compare \"^1.4.0\"\n      optionator \"^0.9.1\"\n      progress \"^2.0.0\"\n      regexpp \"^3.1.0\"\n      semver \"^7.2.1\"\n      strip-ansi \"^6.0.0\"\n      strip-json-comments \"^3.1.0\"\n      table \"^6.0.9\"\n      text-table \"^0.2.0\"\n      v8-compile-cache \"^2.0.3\"\n  \n  espree@^7.3.0, espree@^7.3.1:\n    version \"7.3.1\"\n    resolved \"https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6\"\n    integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==\n    dependencies:\n      acorn \"^7.4.0\"\n      acorn-jsx \"^5.3.1\"\n      eslint-visitor-keys \"^1.3.0\"\n  \n  esprima@^4.0.0:\n    version \"4.0.1\"\n    resolved \"https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71\"\n    integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==\n  \n  esquery@^1.4.0:\n    version \"1.4.0\"\n    resolved \"https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5\"\n    integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==\n    dependencies:\n      estraverse \"^5.1.0\"\n  \n  esrecurse@^4.3.0:\n    version \"4.3.0\"\n    resolved \"https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921\"\n    integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==\n    dependencies:\n      estraverse \"^5.2.0\"\n  \n  estraverse@^4.1.1:\n    version \"4.3.0\"\n    resolved \"https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d\"\n    integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==\n  \n  estraverse@^5.1.0, estraverse@^5.2.0:\n    version \"5.2.0\"\n    resolved \"https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880\"\n    integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==\n  \n  esutils@^2.0.2:\n    version \"2.0.3\"\n    resolved \"https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64\"\n    integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==\n  \n  etag@1.8.1:\n    version \"1.8.1\"\n    resolved \"https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887\"\n    integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=\n  \n  events@^3.0.0:\n    version \"3.3.0\"\n    resolved \"https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400\"\n    integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==\n  \n  evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:\n    version \"1.0.3\"\n    resolved \"https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02\"\n    integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==\n    dependencies:\n      md5.js \"^1.3.4\"\n      safe-buffer \"^5.1.1\"\n  \n  fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:\n    version \"3.1.3\"\n    resolved \"https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525\"\n    integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==\n  \n  fast-glob@^3.1.1:\n    version \"3.2.7\"\n    resolved \"https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1\"\n    integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==\n    dependencies:\n      \"@nodelib/fs.stat\" \"^2.0.2\"\n      \"@nodelib/fs.walk\" \"^1.2.3\"\n      glob-parent \"^5.1.2\"\n      merge2 \"^1.3.0\"\n      micromatch \"^4.0.4\"\n  \n  fast-json-stable-stringify@^2.0.0:\n    version \"2.1.0\"\n    resolved \"https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633\"\n    integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==\n  \n  fast-levenshtein@^2.0.6:\n    version \"2.0.6\"\n    resolved \"https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917\"\n    integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=\n  \n  fastq@^1.6.0:\n    version \"1.13.0\"\n    resolved \"https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c\"\n    integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==\n    dependencies:\n      reusify \"^1.0.4\"\n  \n  file-entry-cache@^6.0.1:\n    version \"6.0.1\"\n    resolved \"https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027\"\n    integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==\n    dependencies:\n      flat-cache \"^3.0.4\"\n  \n  fill-range@^7.0.1:\n    version \"7.0.1\"\n    resolved \"https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40\"\n    integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==\n    dependencies:\n      to-regex-range \"^5.0.1\"\n  \n  find-cache-dir@3.3.1:\n    version \"3.3.1\"\n    resolved \"https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880\"\n    integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==\n    dependencies:\n      commondir \"^1.0.1\"\n      make-dir \"^3.0.2\"\n      pkg-dir \"^4.1.0\"\n  \n  find-up@^2.0.0, find-up@^2.1.0:\n    version \"2.1.0\"\n    resolved \"https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7\"\n    integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=\n    dependencies:\n      locate-path \"^2.0.0\"\n  \n  find-up@^4.0.0:\n    version \"4.1.0\"\n    resolved \"https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19\"\n    integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==\n    dependencies:\n      locate-path \"^5.0.0\"\n      path-exists \"^4.0.0\"\n  \n  flat-cache@^3.0.4:\n    version \"3.0.4\"\n    resolved \"https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11\"\n    integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==\n    dependencies:\n      flatted \"^3.1.0\"\n      rimraf \"^3.0.2\"\n  \n  flatted@^3.1.0:\n    version \"3.2.2\"\n    resolved \"https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561\"\n    integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==\n  \n  foreach@^2.0.5:\n    version \"2.0.5\"\n    resolved \"https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99\"\n    integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=\n  \n  fs.realpath@^1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n    integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=\n  \n  fsevents@~2.3.1:\n    version \"2.3.2\"\n    resolved \"https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a\"\n    integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==\n  \n  function-bind@^1.1.1:\n    version \"1.1.1\"\n    resolved \"https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d\"\n    integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==\n  \n  functional-red-black-tree@^1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327\"\n    integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=\n  \n  get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:\n    version \"1.1.1\"\n    resolved \"https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6\"\n    integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==\n    dependencies:\n      function-bind \"^1.1.1\"\n      has \"^1.0.3\"\n      has-symbols \"^1.0.1\"\n  \n  get-orientation@1.1.2:\n    version \"1.1.2\"\n    resolved \"https://registry.yarnpkg.com/get-orientation/-/get-orientation-1.1.2.tgz#20507928951814f8a91ded0a0e67b29dfab98947\"\n    integrity sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ==\n    dependencies:\n      stream-parser \"^0.3.1\"\n  \n  get-symbol-description@^1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6\"\n    integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==\n    dependencies:\n      call-bind \"^1.0.2\"\n      get-intrinsic \"^1.1.1\"\n  \n  glob-parent@^5.1.2, glob-parent@~5.1.0:\n    version \"5.1.2\"\n    resolved \"https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4\"\n    integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==\n    dependencies:\n      is-glob \"^4.0.1\"\n  \n  glob-to-regexp@^0.4.1:\n    version \"0.4.1\"\n    resolved \"https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e\"\n    integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==\n  \n  glob@7.1.7:\n    version \"7.1.7\"\n    resolved \"https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90\"\n    integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==\n    dependencies:\n      fs.realpath \"^1.0.0\"\n      inflight \"^1.0.4\"\n      inherits \"2\"\n      minimatch \"^3.0.4\"\n      once \"^1.3.0\"\n      path-is-absolute \"^1.0.0\"\n  \n  glob@^7.1.3, glob@^7.1.7:\n    version \"7.2.0\"\n    resolved \"https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023\"\n    integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==\n    dependencies:\n      fs.realpath \"^1.0.0\"\n      inflight \"^1.0.4\"\n      inherits \"2\"\n      minimatch \"^3.0.4\"\n      once \"^1.3.0\"\n      path-is-absolute \"^1.0.0\"\n  \n  globals@^13.6.0, globals@^13.9.0:\n    version \"13.11.0\"\n    resolved \"https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7\"\n    integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==\n    dependencies:\n      type-fest \"^0.20.2\"\n  \n  globby@^11.0.3:\n    version \"11.0.4\"\n    resolved \"https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5\"\n    integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==\n    dependencies:\n      array-union \"^2.1.0\"\n      dir-glob \"^3.0.1\"\n      fast-glob \"^3.1.1\"\n      ignore \"^5.1.4\"\n      merge2 \"^1.3.0\"\n      slash \"^3.0.0\"\n  \n  graceful-fs@^4.1.2:\n    version \"4.2.8\"\n    resolved \"https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a\"\n    integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==\n  \n  has-bigints@^1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113\"\n    integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==\n  \n  has-flag@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd\"\n    integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=\n  \n  has-flag@^4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b\"\n    integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\n  \n  has-symbols@^1.0.1, has-symbols@^1.0.2:\n    version \"1.0.2\"\n    resolved \"https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423\"\n    integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==\n  \n  has-tostringtag@^1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25\"\n    integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==\n    dependencies:\n      has-symbols \"^1.0.2\"\n  \n  has@^1.0.3:\n    version \"1.0.3\"\n    resolved \"https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796\"\n    integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==\n    dependencies:\n      function-bind \"^1.1.1\"\n  \n  hash-base@^3.0.0:\n    version \"3.1.0\"\n    resolved \"https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33\"\n    integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==\n    dependencies:\n      inherits \"^2.0.4\"\n      readable-stream \"^3.6.0\"\n      safe-buffer \"^5.2.0\"\n  \n  hash.js@^1.0.0, hash.js@^1.0.3:\n    version \"1.1.7\"\n    resolved \"https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42\"\n    integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==\n    dependencies:\n      inherits \"^2.0.3\"\n      minimalistic-assert \"^1.0.1\"\n  \n  he@1.2.0:\n    version \"1.2.0\"\n    resolved \"https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f\"\n    integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==\n  \n  hmac-drbg@^1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1\"\n    integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=\n    dependencies:\n      hash.js \"^1.0.3\"\n      minimalistic-assert \"^1.0.0\"\n      minimalistic-crypto-utils \"^1.0.1\"\n  \n  hosted-git-info@^2.1.4:\n    version \"2.8.9\"\n    resolved \"https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9\"\n    integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==\n  \n  http-errors@1.7.3:\n    version \"1.7.3\"\n    resolved \"https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06\"\n    integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==\n    dependencies:\n      depd \"~1.1.2\"\n      inherits \"2.0.4\"\n      setprototypeof \"1.1.1\"\n      statuses \">= 1.5.0 < 2\"\n      toidentifier \"1.0.0\"\n  \n  https-browserify@1.0.0, https-browserify@^1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73\"\n    integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=\n  \n  iconv-lite@0.4.24:\n    version \"0.4.24\"\n    resolved \"https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b\"\n    integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==\n    dependencies:\n      safer-buffer \">= 2.1.2 < 3\"\n  \n  iconv-lite@^0.6.2:\n    version \"0.6.3\"\n    resolved \"https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501\"\n    integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==\n    dependencies:\n      safer-buffer \">= 2.1.2 < 3.0.0\"\n  \n  ieee754@^1.1.4:\n    version \"1.2.1\"\n    resolved \"https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352\"\n    integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==\n  \n  ignore@^4.0.6:\n    version \"4.0.6\"\n    resolved \"https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc\"\n    integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==\n  \n  ignore@^5.1.4:\n    version \"5.1.8\"\n    resolved \"https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57\"\n    integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==\n  \n  image-size@1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/image-size/-/image-size-1.0.0.tgz#58b31fe4743b1cec0a0ac26f5c914d3c5b2f0750\"\n    integrity sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==\n    dependencies:\n      queue \"6.0.2\"\n  \n  import-fresh@^3.0.0, import-fresh@^3.2.1:\n    version \"3.3.0\"\n    resolved \"https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b\"\n    integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==\n    dependencies:\n      parent-module \"^1.0.0\"\n      resolve-from \"^4.0.0\"\n  \n  imurmurhash@^0.1.4:\n    version \"0.1.4\"\n    resolved \"https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n    integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=\n  \n  inflight@^1.0.4:\n    version \"1.0.6\"\n    resolved \"https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n    integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=\n    dependencies:\n      once \"^1.3.0\"\n      wrappy \"1\"\n  \n  inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:\n    version \"2.0.4\"\n    resolved \"https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c\"\n    integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==\n  \n  inherits@2.0.1:\n    version \"2.0.1\"\n    resolved \"https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n    integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=\n  \n  inherits@2.0.3:\n    version \"2.0.3\"\n    resolved \"https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n    integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=\n  \n  internal-slot@^1.0.3:\n    version \"1.0.3\"\n    resolved \"https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c\"\n    integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==\n    dependencies:\n      get-intrinsic \"^1.1.0\"\n      has \"^1.0.3\"\n      side-channel \"^1.0.4\"\n  \n  is-arguments@^1.0.4:\n    version \"1.1.1\"\n    resolved \"https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b\"\n    integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==\n    dependencies:\n      call-bind \"^1.0.2\"\n      has-tostringtag \"^1.0.0\"\n  \n  is-arrayish@^0.2.1:\n    version \"0.2.1\"\n    resolved \"https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n    integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=\n  \n  is-bigint@^1.0.1:\n    version \"1.0.4\"\n    resolved \"https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3\"\n    integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==\n    dependencies:\n      has-bigints \"^1.0.1\"\n  \n  is-binary-path@~2.1.0:\n    version \"2.1.0\"\n    resolved \"https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09\"\n    integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==\n    dependencies:\n      binary-extensions \"^2.0.0\"\n  \n  is-boolean-object@^1.1.0:\n    version \"1.1.2\"\n    resolved \"https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719\"\n    integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==\n    dependencies:\n      call-bind \"^1.0.2\"\n      has-tostringtag \"^1.0.0\"\n  \n  is-callable@^1.1.4, is-callable@^1.2.4:\n    version \"1.2.4\"\n    resolved \"https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945\"\n    integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==\n  \n  is-core-module@^2.2.0, is-core-module@^2.6.0:\n    version \"2.6.0\"\n    resolved \"https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19\"\n    integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==\n    dependencies:\n      has \"^1.0.3\"\n  \n  is-date-object@^1.0.1:\n    version \"1.0.5\"\n    resolved \"https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f\"\n    integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==\n    dependencies:\n      has-tostringtag \"^1.0.0\"\n  \n  is-extglob@^2.1.1:\n    version \"2.1.1\"\n    resolved \"https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n    integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=\n  \n  is-fullwidth-code-point@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d\"\n    integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\n  \n  is-generator-function@^1.0.7:\n    version \"1.0.10\"\n    resolved \"https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72\"\n    integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==\n    dependencies:\n      has-tostringtag \"^1.0.0\"\n  \n  is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:\n    version \"4.0.1\"\n    resolved \"https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc\"\n    integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==\n    dependencies:\n      is-extglob \"^2.1.1\"\n  \n  is-nan@^1.2.1:\n    version \"1.3.2\"\n    resolved \"https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d\"\n    integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==\n    dependencies:\n      call-bind \"^1.0.0\"\n      define-properties \"^1.1.3\"\n  \n  is-negative-zero@^2.0.1:\n    version \"2.0.1\"\n    resolved \"https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24\"\n    integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==\n  \n  is-number-object@^1.0.4:\n    version \"1.0.6\"\n    resolved \"https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0\"\n    integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==\n    dependencies:\n      has-tostringtag \"^1.0.0\"\n  \n  is-number@^7.0.0:\n    version \"7.0.0\"\n    resolved \"https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b\"\n    integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==\n  \n  is-regex@^1.1.4:\n    version \"1.1.4\"\n    resolved \"https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958\"\n    integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==\n    dependencies:\n      call-bind \"^1.0.2\"\n      has-tostringtag \"^1.0.0\"\n  \n  is-string@^1.0.5, is-string@^1.0.7:\n    version \"1.0.7\"\n    resolved \"https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd\"\n    integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==\n    dependencies:\n      has-tostringtag \"^1.0.0\"\n  \n  is-symbol@^1.0.2, is-symbol@^1.0.3:\n    version \"1.0.4\"\n    resolved \"https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c\"\n    integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==\n    dependencies:\n      has-symbols \"^1.0.2\"\n  \n  is-typed-array@^1.1.3, is-typed-array@^1.1.7:\n    version \"1.1.8\"\n    resolved \"https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79\"\n    integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==\n    dependencies:\n      available-typed-arrays \"^1.0.5\"\n      call-bind \"^1.0.2\"\n      es-abstract \"^1.18.5\"\n      foreach \"^2.0.5\"\n      has-tostringtag \"^1.0.0\"\n  \n  isarray@^1.0.0, isarray@~1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n    integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=\n  \n  isexe@^2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10\"\n    integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=\n  \n  jest-worker@27.0.0-next.5:\n    version \"27.0.0-next.5\"\n    resolved \"https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.0-next.5.tgz#5985ee29b12a4e191f4aae4bb73b97971d86ec28\"\n    integrity sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g==\n    dependencies:\n      \"@types/node\" \"*\"\n      merge-stream \"^2.0.0\"\n      supports-color \"^8.0.0\"\n  \n  \"js-tokens@^3.0.0 || ^4.0.0\", js-tokens@^4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499\"\n    integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\n  \n  js-yaml@^3.13.1:\n    version \"3.14.1\"\n    resolved \"https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537\"\n    integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==\n    dependencies:\n      argparse \"^1.0.7\"\n      esprima \"^4.0.0\"\n  \n  json-parse-better-errors@^1.0.1:\n    version \"1.0.2\"\n    resolved \"https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9\"\n    integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==\n  \n  json-schema-traverse@^0.4.1:\n    version \"0.4.1\"\n    resolved \"https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660\"\n    integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==\n  \n  json-schema-traverse@^1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2\"\n    integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==\n  \n  json-stable-stringify-without-jsonify@^1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651\"\n    integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=\n  \n  json5@^1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe\"\n    integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==\n    dependencies:\n      minimist \"^1.2.0\"\n  \n  \"jsx-ast-utils@^2.4.1 || ^3.0.0\", jsx-ast-utils@^3.1.0:\n    version \"3.2.1\"\n    resolved \"https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b\"\n    integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==\n    dependencies:\n      array-includes \"^3.1.3\"\n      object.assign \"^4.1.2\"\n  \n  language-subtag-registry@~0.3.2:\n    version \"0.3.21\"\n    resolved \"https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a\"\n    integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==\n  \n  language-tags@^1.0.5:\n    version \"1.0.5\"\n    resolved \"https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a\"\n    integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=\n    dependencies:\n      language-subtag-registry \"~0.3.2\"\n  \n  levn@^0.4.1:\n    version \"0.4.1\"\n    resolved \"https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade\"\n    integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==\n    dependencies:\n      prelude-ls \"^1.2.1\"\n      type-check \"~0.4.0\"\n  \n  load-json-file@^4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b\"\n    integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=\n    dependencies:\n      graceful-fs \"^4.1.2\"\n      parse-json \"^4.0.0\"\n      pify \"^3.0.0\"\n      strip-bom \"^3.0.0\"\n  \n  loader-utils@1.2.3:\n    version \"1.2.3\"\n    resolved \"https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7\"\n    integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==\n    dependencies:\n      big.js \"^5.2.2\"\n      emojis-list \"^2.0.0\"\n      json5 \"^1.0.1\"\n  \n  locate-path@^2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e\"\n    integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=\n    dependencies:\n      p-locate \"^2.0.0\"\n      path-exists \"^3.0.0\"\n  \n  locate-path@^5.0.0:\n    version \"5.0.0\"\n    resolved \"https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0\"\n    integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==\n    dependencies:\n      p-locate \"^4.1.0\"\n  \n  lodash.clonedeep@^4.5.0:\n    version \"4.5.0\"\n    resolved \"https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n    integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=\n  \n  lodash.merge@^4.6.2:\n    version \"4.6.2\"\n    resolved \"https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a\"\n    integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==\n  \n  lodash.sortby@^4.7.0:\n    version \"4.7.0\"\n    resolved \"https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438\"\n    integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=\n  \n  lodash.truncate@^4.4.2:\n    version \"4.4.2\"\n    resolved \"https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193\"\n    integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=\n  \n  loose-envify@^1.1.0, loose-envify@^1.4.0:\n    version \"1.4.0\"\n    resolved \"https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf\"\n    integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\n    dependencies:\n      js-tokens \"^3.0.0 || ^4.0.0\"\n  \n  lru-cache@^6.0.0:\n    version \"6.0.0\"\n    resolved \"https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94\"\n    integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==\n    dependencies:\n      yallist \"^4.0.0\"\n  \n  make-dir@^3.0.2:\n    version \"3.1.0\"\n    resolved \"https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f\"\n    integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==\n    dependencies:\n      semver \"^6.0.0\"\n  \n  md5.js@^1.3.4:\n    version \"1.3.5\"\n    resolved \"https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f\"\n    integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==\n    dependencies:\n      hash-base \"^3.0.0\"\n      inherits \"^2.0.1\"\n      safe-buffer \"^5.1.2\"\n  \n  merge-stream@^2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60\"\n    integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==\n  \n  merge2@^1.3.0:\n    version \"1.4.1\"\n    resolved \"https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae\"\n    integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==\n  \n  micromatch@^4.0.4:\n    version \"4.0.4\"\n    resolved \"https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9\"\n    integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==\n    dependencies:\n      braces \"^3.0.1\"\n      picomatch \"^2.2.3\"\n  \n  miller-rabin@^4.0.0:\n    version \"4.0.1\"\n    resolved \"https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d\"\n    integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==\n    dependencies:\n      bn.js \"^4.0.0\"\n      brorand \"^1.0.1\"\n  \n  minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7\"\n    integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==\n  \n  minimalistic-crypto-utils@^1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n    integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=\n  \n  minimatch@^3.0.4:\n    version \"3.0.4\"\n    resolved \"https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083\"\n    integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==\n    dependencies:\n      brace-expansion \"^1.1.7\"\n  \n  minimist@^1.2.0:\n    version \"1.2.5\"\n    resolved \"https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602\"\n    integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==\n  \n  ms@2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8\"\n    integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=\n  \n  ms@2.1.2:\n    version \"2.1.2\"\n    resolved \"https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009\"\n    integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==\n  \n  ms@^2.1.1:\n    version \"2.1.3\"\n    resolved \"https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2\"\n    integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\n  \n  nanocolors@^0.1.0:\n    version \"0.1.12\"\n    resolved \"https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6\"\n    integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==\n  \n  nanoid@^3.1.23:\n    version \"3.1.25\"\n    resolved \"https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152\"\n    integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==\n  \n  native-url@0.3.4:\n    version \"0.3.4\"\n    resolved \"https://registry.yarnpkg.com/native-url/-/native-url-0.3.4.tgz#29c943172aed86c63cee62c8c04db7f5756661f8\"\n    integrity sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==\n    dependencies:\n      querystring \"^0.2.0\"\n  \n  natural-compare@^1.4.0:\n    version \"1.4.0\"\n    resolved \"https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7\"\n    integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=\n  \n  next@11.1.2:\n    version \"11.1.2\"\n    resolved \"https://registry.yarnpkg.com/next/-/next-11.1.2.tgz#527475787a9a362f1bc916962b0c0655cc05bc91\"\n    integrity sha512-azEYL0L+wFjv8lstLru3bgvrzPvK0P7/bz6B/4EJ9sYkXeW8r5Bjh78D/Ol7VOg0EIPz0CXoe72hzAlSAXo9hw==\n    dependencies:\n      \"@babel/runtime\" \"7.15.3\"\n      \"@hapi/accept\" \"5.0.2\"\n      \"@next/env\" \"11.1.2\"\n      \"@next/polyfill-module\" \"11.1.2\"\n      \"@next/react-dev-overlay\" \"11.1.2\"\n      \"@next/react-refresh-utils\" \"11.1.2\"\n      \"@node-rs/helper\" \"1.2.1\"\n      assert \"2.0.0\"\n      ast-types \"0.13.2\"\n      browserify-zlib \"0.2.0\"\n      browserslist \"4.16.6\"\n      buffer \"5.6.0\"\n      caniuse-lite \"^1.0.30001228\"\n      chalk \"2.4.2\"\n      chokidar \"3.5.1\"\n      constants-browserify \"1.0.0\"\n      crypto-browserify \"3.12.0\"\n      cssnano-simple \"3.0.0\"\n      domain-browser \"4.19.0\"\n      encoding \"0.1.13\"\n      etag \"1.8.1\"\n      find-cache-dir \"3.3.1\"\n      get-orientation \"1.1.2\"\n      https-browserify \"1.0.0\"\n      image-size \"1.0.0\"\n      jest-worker \"27.0.0-next.5\"\n      native-url \"0.3.4\"\n      node-fetch \"2.6.1\"\n      node-html-parser \"1.4.9\"\n      node-libs-browser \"^2.2.1\"\n      os-browserify \"0.3.0\"\n      p-limit \"3.1.0\"\n      path-browserify \"1.0.1\"\n      pnp-webpack-plugin \"1.6.4\"\n      postcss \"8.2.15\"\n      process \"0.11.10\"\n      querystring-es3 \"0.2.1\"\n      raw-body \"2.4.1\"\n      react-is \"17.0.2\"\n      react-refresh \"0.8.3\"\n      stream-browserify \"3.0.0\"\n      stream-http \"3.1.1\"\n      string_decoder \"1.3.0\"\n      styled-jsx \"4.0.1\"\n      timers-browserify \"2.0.12\"\n      tty-browserify \"0.0.1\"\n      use-subscription \"1.5.1\"\n      util \"0.12.4\"\n      vm-browserify \"1.1.2\"\n      watchpack \"2.1.1\"\n    optionalDependencies:\n      \"@next/swc-darwin-arm64\" \"11.1.2\"\n      \"@next/swc-darwin-x64\" \"11.1.2\"\n      \"@next/swc-linux-x64-gnu\" \"11.1.2\"\n      \"@next/swc-win32-x64-msvc\" \"11.1.2\"\n  \n  node-fetch@2.6.1:\n    version \"2.6.1\"\n    resolved \"https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052\"\n    integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==\n  \n  node-html-parser@1.4.9:\n    version \"1.4.9\"\n    resolved \"https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c\"\n    integrity sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==\n    dependencies:\n      he \"1.2.0\"\n  \n  node-libs-browser@^2.2.1:\n    version \"2.2.1\"\n    resolved \"https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425\"\n    integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==\n    dependencies:\n      assert \"^1.1.1\"\n      browserify-zlib \"^0.2.0\"\n      buffer \"^4.3.0\"\n      console-browserify \"^1.1.0\"\n      constants-browserify \"^1.0.0\"\n      crypto-browserify \"^3.11.0\"\n      domain-browser \"^1.1.1\"\n      events \"^3.0.0\"\n      https-browserify \"^1.0.0\"\n      os-browserify \"^0.3.0\"\n      path-browserify \"0.0.1\"\n      process \"^0.11.10\"\n      punycode \"^1.2.4\"\n      querystring-es3 \"^0.2.0\"\n      readable-stream \"^2.3.3\"\n      stream-browserify \"^2.0.1\"\n      stream-http \"^2.7.2\"\n      string_decoder \"^1.0.0\"\n      timers-browserify \"^2.0.4\"\n      tty-browserify \"0.0.0\"\n      url \"^0.11.0\"\n      util \"^0.11.0\"\n      vm-browserify \"^1.0.1\"\n  \n  node-releases@^1.1.71:\n    version \"1.1.76\"\n    resolved \"https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e\"\n    integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==\n  \n  normalize-package-data@^2.3.2:\n    version \"2.5.0\"\n    resolved \"https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8\"\n    integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==\n    dependencies:\n      hosted-git-info \"^2.1.4\"\n      resolve \"^1.10.0\"\n      semver \"2 || 3 || 4 || 5\"\n      validate-npm-package-license \"^3.0.1\"\n  \n  normalize-path@^3.0.0, normalize-path@~3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65\"\n    integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==\n  \n  object-assign@^4.1.1:\n    version \"4.1.1\"\n    resolved \"https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n    integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=\n  \n  object-inspect@^1.11.0, object-inspect@^1.9.0:\n    version \"1.11.0\"\n    resolved \"https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1\"\n    integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==\n  \n  object-is@^1.0.1:\n    version \"1.1.5\"\n    resolved \"https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac\"\n    integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==\n    dependencies:\n      call-bind \"^1.0.2\"\n      define-properties \"^1.1.3\"\n  \n  object-keys@^1.0.12, object-keys@^1.1.1:\n    version \"1.1.1\"\n    resolved \"https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e\"\n    integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==\n  \n  object.assign@^4.1.2:\n    version \"4.1.2\"\n    resolved \"https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940\"\n    integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==\n    dependencies:\n      call-bind \"^1.0.0\"\n      define-properties \"^1.1.3\"\n      has-symbols \"^1.0.1\"\n      object-keys \"^1.1.1\"\n  \n  object.entries@^1.1.4:\n    version \"1.1.4\"\n    resolved \"https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd\"\n    integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==\n    dependencies:\n      call-bind \"^1.0.2\"\n      define-properties \"^1.1.3\"\n      es-abstract \"^1.18.2\"\n  \n  object.fromentries@^2.0.4:\n    version \"2.0.4\"\n    resolved \"https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8\"\n    integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==\n    dependencies:\n      call-bind \"^1.0.2\"\n      define-properties \"^1.1.3\"\n      es-abstract \"^1.18.0-next.2\"\n      has \"^1.0.3\"\n  \n  object.hasown@^1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.0.0.tgz#bdbade33cfacfb25d7f26ae2b6cb870bf99905c2\"\n    integrity sha512-qYMF2CLIjxxLGleeM0jrcB4kiv3loGVAjKQKvH8pSU/i2VcRRvUNmxbD+nEMmrXRfORhuVJuH8OtSYCZoue3zA==\n    dependencies:\n      define-properties \"^1.1.3\"\n      es-abstract \"^1.18.1\"\n  \n  object.values@^1.1.4:\n    version \"1.1.4\"\n    resolved \"https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30\"\n    integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==\n    dependencies:\n      call-bind \"^1.0.2\"\n      define-properties \"^1.1.3\"\n      es-abstract \"^1.18.2\"\n  \n  once@^1.3.0:\n    version \"1.4.0\"\n    resolved \"https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n    integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=\n    dependencies:\n      wrappy \"1\"\n  \n  optionator@^0.9.1:\n    version \"0.9.1\"\n    resolved \"https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499\"\n    integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==\n    dependencies:\n      deep-is \"^0.1.3\"\n      fast-levenshtein \"^2.0.6\"\n      levn \"^0.4.1\"\n      prelude-ls \"^1.2.1\"\n      type-check \"^0.4.0\"\n      word-wrap \"^1.2.3\"\n  \n  os-browserify@0.3.0, os-browserify@^0.3.0:\n    version \"0.3.0\"\n    resolved \"https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27\"\n    integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=\n  \n  p-limit@3.1.0:\n    version \"3.1.0\"\n    resolved \"https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b\"\n    integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==\n    dependencies:\n      yocto-queue \"^0.1.0\"\n  \n  p-limit@^1.1.0:\n    version \"1.3.0\"\n    resolved \"https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8\"\n    integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==\n    dependencies:\n      p-try \"^1.0.0\"\n  \n  p-limit@^2.2.0:\n    version \"2.3.0\"\n    resolved \"https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1\"\n    integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==\n    dependencies:\n      p-try \"^2.0.0\"\n  \n  p-locate@^2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43\"\n    integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=\n    dependencies:\n      p-limit \"^1.1.0\"\n  \n  p-locate@^4.1.0:\n    version \"4.1.0\"\n    resolved \"https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07\"\n    integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==\n    dependencies:\n      p-limit \"^2.2.0\"\n  \n  p-try@^1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3\"\n    integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=\n  \n  p-try@^2.0.0:\n    version \"2.2.0\"\n    resolved \"https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6\"\n    integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==\n  \n  pako@~1.0.5:\n    version \"1.0.11\"\n    resolved \"https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf\"\n    integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==\n  \n  parent-module@^1.0.0:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2\"\n    integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==\n    dependencies:\n      callsites \"^3.0.0\"\n  \n  parse-asn1@^5.0.0, parse-asn1@^5.1.5:\n    version \"5.1.6\"\n    resolved \"https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4\"\n    integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==\n    dependencies:\n      asn1.js \"^5.2.0\"\n      browserify-aes \"^1.0.0\"\n      evp_bytestokey \"^1.0.0\"\n      pbkdf2 \"^3.0.3\"\n      safe-buffer \"^5.1.1\"\n  \n  parse-json@^4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0\"\n    integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=\n    dependencies:\n      error-ex \"^1.3.1\"\n      json-parse-better-errors \"^1.0.1\"\n  \n  path-browserify@0.0.1:\n    version \"0.0.1\"\n    resolved \"https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a\"\n    integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==\n  \n  path-browserify@1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd\"\n    integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==\n  \n  path-exists@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515\"\n    integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=\n  \n  path-exists@^4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3\"\n    integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==\n  \n  path-is-absolute@^1.0.0:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n    integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=\n  \n  path-key@^3.1.0:\n    version \"3.1.1\"\n    resolved \"https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375\"\n    integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==\n  \n  path-parse@^1.0.6:\n    version \"1.0.7\"\n    resolved \"https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735\"\n    integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==\n  \n  path-type@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f\"\n    integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==\n    dependencies:\n      pify \"^3.0.0\"\n  \n  path-type@^4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b\"\n    integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==\n  \n  pbkdf2@^3.0.3:\n    version \"3.1.2\"\n    resolved \"https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075\"\n    integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==\n    dependencies:\n      create-hash \"^1.1.2\"\n      create-hmac \"^1.1.4\"\n      ripemd160 \"^2.0.1\"\n      safe-buffer \"^5.0.1\"\n      sha.js \"^2.4.8\"\n  \n  picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:\n    version \"2.3.0\"\n    resolved \"https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972\"\n    integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==\n  \n  pify@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176\"\n    integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=\n  \n  pkg-dir@^2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b\"\n    integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=\n    dependencies:\n      find-up \"^2.1.0\"\n  \n  pkg-dir@^4.1.0:\n    version \"4.2.0\"\n    resolved \"https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3\"\n    integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==\n    dependencies:\n      find-up \"^4.0.0\"\n  \n  pkg-up@^2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f\"\n    integrity sha1-yBmscoBZpGHKscOImivjxJoATX8=\n    dependencies:\n      find-up \"^2.1.0\"\n  \n  platform@1.3.6:\n    version \"1.3.6\"\n    resolved \"https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7\"\n    integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==\n  \n  pnp-webpack-plugin@1.6.4:\n    version \"1.6.4\"\n    resolved \"https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149\"\n    integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==\n    dependencies:\n      ts-pnp \"^1.1.6\"\n  \n  postcss@8.2.15:\n    version \"8.2.15\"\n    resolved \"https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65\"\n    integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==\n    dependencies:\n      colorette \"^1.2.2\"\n      nanoid \"^3.1.23\"\n      source-map \"^0.6.1\"\n  \n  prelude-ls@^1.2.1:\n    version \"1.2.1\"\n    resolved \"https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396\"\n    integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==\n  \n  prisma@^3.1.1:\n    version \"3.1.1\"\n    resolved \"https://registry.yarnpkg.com/prisma/-/prisma-3.1.1.tgz#4c13c35dd3a58af9134008c8ed0fdc21a632802c\"\n    integrity sha512-+eZtWIL6hnOKUOvqq9WLBzSw2d/EbTmOx1Td1LI8/0XE40ctXMLG2N1p6NK5/+yivGaoNJ9PDpPsPL9lO4nJrQ==\n    dependencies:\n      \"@prisma/engines\" \"3.1.0-24.c22652b7e418506fab23052d569b85d3aec4883f\"\n  \n  process-nextick-args@~2.0.0:\n    version \"2.0.1\"\n    resolved \"https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2\"\n    integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==\n  \n  process@0.11.10, process@^0.11.10:\n    version \"0.11.10\"\n    resolved \"https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182\"\n    integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=\n  \n  progress@^2.0.0:\n    version \"2.0.3\"\n    resolved \"https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8\"\n    integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==\n  \n  prop-types@^15.7.2:\n    version \"15.7.2\"\n    resolved \"https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5\"\n    integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==\n    dependencies:\n      loose-envify \"^1.4.0\"\n      object-assign \"^4.1.1\"\n      react-is \"^16.8.1\"\n  \n  public-encrypt@^4.0.0:\n    version \"4.0.3\"\n    resolved \"https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0\"\n    integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==\n    dependencies:\n      bn.js \"^4.1.0\"\n      browserify-rsa \"^4.0.0\"\n      create-hash \"^1.1.0\"\n      parse-asn1 \"^5.0.0\"\n      randombytes \"^2.0.1\"\n      safe-buffer \"^5.1.2\"\n  \n  punycode@1.3.2:\n    version \"1.3.2\"\n    resolved \"https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n    integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=\n  \n  punycode@^1.2.4:\n    version \"1.4.1\"\n    resolved \"https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n    integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=\n  \n  punycode@^2.1.0:\n    version \"2.1.1\"\n    resolved \"https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec\"\n    integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==\n  \n  querystring-es3@0.2.1, querystring-es3@^0.2.0:\n    version \"0.2.1\"\n    resolved \"https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n    integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=\n  \n  querystring@0.2.0:\n    version \"0.2.0\"\n    resolved \"https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n    integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=\n  \n  querystring@^0.2.0:\n    version \"0.2.1\"\n    resolved \"https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd\"\n    integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==\n  \n  queue-microtask@^1.2.2:\n    version \"1.2.3\"\n    resolved \"https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243\"\n    integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==\n  \n  queue@6.0.2:\n    version \"6.0.2\"\n    resolved \"https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65\"\n    integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==\n    dependencies:\n      inherits \"~2.0.3\"\n  \n  randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:\n    version \"2.1.0\"\n    resolved \"https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a\"\n    integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==\n    dependencies:\n      safe-buffer \"^5.1.0\"\n  \n  randomfill@^1.0.3:\n    version \"1.0.4\"\n    resolved \"https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458\"\n    integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==\n    dependencies:\n      randombytes \"^2.0.5\"\n      safe-buffer \"^5.1.0\"\n  \n  raw-body@2.4.1:\n    version \"2.4.1\"\n    resolved \"https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c\"\n    integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==\n    dependencies:\n      bytes \"3.1.0\"\n      http-errors \"1.7.3\"\n      iconv-lite \"0.4.24\"\n      unpipe \"1.0.0\"\n  \n  react-dom@17.0.2:\n    version \"17.0.2\"\n    resolved \"https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23\"\n    integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==\n    dependencies:\n      loose-envify \"^1.1.0\"\n      object-assign \"^4.1.1\"\n      scheduler \"^0.20.2\"\n  \n  react-is@17.0.2:\n    version \"17.0.2\"\n    resolved \"https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0\"\n    integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==\n  \n  react-is@^16.8.1:\n    version \"16.13.1\"\n    resolved \"https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4\"\n    integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==\n  \n  react-refresh@0.8.3:\n    version \"0.8.3\"\n    resolved \"https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f\"\n    integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==\n  \n  react@17.0.2:\n    version \"17.0.2\"\n    resolved \"https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037\"\n    integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==\n    dependencies:\n      loose-envify \"^1.1.0\"\n      object-assign \"^4.1.1\"\n  \n  read-pkg-up@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07\"\n    integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=\n    dependencies:\n      find-up \"^2.0.0\"\n      read-pkg \"^3.0.0\"\n  \n  read-pkg@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389\"\n    integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=\n    dependencies:\n      load-json-file \"^4.0.0\"\n      normalize-package-data \"^2.3.2\"\n      path-type \"^3.0.0\"\n  \n  readable-stream@^2.0.2, readable-stream@^2.3.3, readable-stream@^2.3.6:\n    version \"2.3.7\"\n    resolved \"https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57\"\n    integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==\n    dependencies:\n      core-util-is \"~1.0.0\"\n      inherits \"~2.0.3\"\n      isarray \"~1.0.0\"\n      process-nextick-args \"~2.0.0\"\n      safe-buffer \"~5.1.1\"\n      string_decoder \"~1.1.1\"\n      util-deprecate \"~1.0.1\"\n  \n  readable-stream@^3.5.0, readable-stream@^3.6.0:\n    version \"3.6.0\"\n    resolved \"https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198\"\n    integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==\n    dependencies:\n      inherits \"^2.0.3\"\n      string_decoder \"^1.1.1\"\n      util-deprecate \"^1.0.1\"\n  \n  readdirp@~3.5.0:\n    version \"3.5.0\"\n    resolved \"https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e\"\n    integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==\n    dependencies:\n      picomatch \"^2.2.1\"\n  \n  regenerator-runtime@^0.13.4:\n    version \"0.13.9\"\n    resolved \"https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52\"\n    integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==\n  \n  regexp.prototype.flags@^1.3.1:\n    version \"1.3.1\"\n    resolved \"https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26\"\n    integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==\n    dependencies:\n      call-bind \"^1.0.2\"\n      define-properties \"^1.1.3\"\n  \n  regexpp@^3.1.0:\n    version \"3.2.0\"\n    resolved \"https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2\"\n    integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==\n  \n  require-from-string@^2.0.2:\n    version \"2.0.2\"\n    resolved \"https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909\"\n    integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==\n  \n  resolve-from@^4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6\"\n    integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==\n  \n  resolve@^1.10.0, resolve@^1.20.0:\n    version \"1.20.0\"\n    resolved \"https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975\"\n    integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==\n    dependencies:\n      is-core-module \"^2.2.0\"\n      path-parse \"^1.0.6\"\n  \n  resolve@^2.0.0-next.3:\n    version \"2.0.0-next.3\"\n    resolved \"https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46\"\n    integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==\n    dependencies:\n      is-core-module \"^2.2.0\"\n      path-parse \"^1.0.6\"\n  \n  reusify@^1.0.4:\n    version \"1.0.4\"\n    resolved \"https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76\"\n    integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==\n  \n  rimraf@^3.0.2:\n    version \"3.0.2\"\n    resolved \"https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a\"\n    integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==\n    dependencies:\n      glob \"^7.1.3\"\n  \n  ripemd160@^2.0.0, ripemd160@^2.0.1:\n    version \"2.0.2\"\n    resolved \"https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c\"\n    integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==\n    dependencies:\n      hash-base \"^3.0.0\"\n      inherits \"^2.0.1\"\n  \n  run-parallel@^1.1.9:\n    version \"1.2.0\"\n    resolved \"https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee\"\n    integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==\n    dependencies:\n      queue-microtask \"^1.2.2\"\n  \n  safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:\n    version \"5.2.1\"\n    resolved \"https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6\"\n    integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==\n  \n  safe-buffer@~5.1.0, safe-buffer@~5.1.1:\n    version \"5.1.2\"\n    resolved \"https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d\"\n    integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==\n  \n  \"safer-buffer@>= 2.1.2 < 3\", \"safer-buffer@>= 2.1.2 < 3.0.0\", safer-buffer@^2.1.0:\n    version \"2.1.2\"\n    resolved \"https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a\"\n    integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==\n  \n  scheduler@^0.20.2:\n    version \"0.20.2\"\n    resolved \"https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91\"\n    integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==\n    dependencies:\n      loose-envify \"^1.1.0\"\n      object-assign \"^4.1.1\"\n  \n  \"semver@2 || 3 || 4 || 5\":\n    version \"5.7.1\"\n    resolved \"https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7\"\n    integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==\n  \n  semver@^6.0.0, semver@^6.3.0:\n    version \"6.3.0\"\n    resolved \"https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d\"\n    integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==\n  \n  semver@^7.2.1, semver@^7.3.5:\n    version \"7.3.5\"\n    resolved \"https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7\"\n    integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==\n    dependencies:\n      lru-cache \"^6.0.0\"\n  \n  setimmediate@^1.0.4:\n    version \"1.0.5\"\n    resolved \"https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n    integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=\n  \n  setprototypeof@1.1.1:\n    version \"1.1.1\"\n    resolved \"https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683\"\n    integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==\n  \n  sha.js@^2.4.0, sha.js@^2.4.8:\n    version \"2.4.11\"\n    resolved \"https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7\"\n    integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==\n    dependencies:\n      inherits \"^2.0.1\"\n      safe-buffer \"^5.0.1\"\n  \n  shebang-command@^2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea\"\n    integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==\n    dependencies:\n      shebang-regex \"^3.0.0\"\n  \n  shebang-regex@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172\"\n    integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==\n  \n  shell-quote@1.7.2:\n    version \"1.7.2\"\n    resolved \"https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2\"\n    integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==\n  \n  side-channel@^1.0.4:\n    version \"1.0.4\"\n    resolved \"https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf\"\n    integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==\n    dependencies:\n      call-bind \"^1.0.0\"\n      get-intrinsic \"^1.0.2\"\n      object-inspect \"^1.9.0\"\n  \n  slash@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634\"\n    integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==\n  \n  slice-ansi@^4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b\"\n    integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==\n    dependencies:\n      ansi-styles \"^4.0.0\"\n      astral-regex \"^2.0.0\"\n      is-fullwidth-code-point \"^3.0.0\"\n  \n  source-map@0.7.3:\n    version \"0.7.3\"\n    resolved \"https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383\"\n    integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==\n  \n  source-map@0.8.0-beta.0:\n    version \"0.8.0-beta.0\"\n    resolved \"https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11\"\n    integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==\n    dependencies:\n      whatwg-url \"^7.0.0\"\n  \n  source-map@^0.6.1:\n    version \"0.6.1\"\n    resolved \"https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263\"\n    integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\n  \n  spdx-correct@^3.0.0:\n    version \"3.1.1\"\n    resolved \"https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9\"\n    integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==\n    dependencies:\n      spdx-expression-parse \"^3.0.0\"\n      spdx-license-ids \"^3.0.0\"\n  \n  spdx-exceptions@^2.1.0:\n    version \"2.3.0\"\n    resolved \"https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d\"\n    integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==\n  \n  spdx-expression-parse@^3.0.0:\n    version \"3.0.1\"\n    resolved \"https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679\"\n    integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==\n    dependencies:\n      spdx-exceptions \"^2.1.0\"\n      spdx-license-ids \"^3.0.0\"\n  \n  spdx-license-ids@^3.0.0:\n    version \"3.0.10\"\n    resolved \"https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b\"\n    integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==\n  \n  sprintf-js@~1.0.2:\n    version \"1.0.3\"\n    resolved \"https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n    integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=\n  \n  stacktrace-parser@0.1.10:\n    version \"0.1.10\"\n    resolved \"https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a\"\n    integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==\n    dependencies:\n      type-fest \"^0.7.1\"\n  \n  \"statuses@>= 1.5.0 < 2\":\n    version \"1.5.0\"\n    resolved \"https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c\"\n    integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=\n  \n  stream-browserify@3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f\"\n    integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==\n    dependencies:\n      inherits \"~2.0.4\"\n      readable-stream \"^3.5.0\"\n  \n  stream-browserify@^2.0.1:\n    version \"2.0.2\"\n    resolved \"https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b\"\n    integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==\n    dependencies:\n      inherits \"~2.0.1\"\n      readable-stream \"^2.0.2\"\n  \n  stream-http@3.1.1:\n    version \"3.1.1\"\n    resolved \"https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564\"\n    integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==\n    dependencies:\n      builtin-status-codes \"^3.0.0\"\n      inherits \"^2.0.4\"\n      readable-stream \"^3.6.0\"\n      xtend \"^4.0.2\"\n  \n  stream-http@^2.7.2:\n    version \"2.8.3\"\n    resolved \"https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc\"\n    integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==\n    dependencies:\n      builtin-status-codes \"^3.0.0\"\n      inherits \"^2.0.1\"\n      readable-stream \"^2.3.6\"\n      to-arraybuffer \"^1.0.0\"\n      xtend \"^4.0.0\"\n  \n  stream-parser@^0.3.1:\n    version \"0.3.1\"\n    resolved \"https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773\"\n    integrity sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=\n    dependencies:\n      debug \"2\"\n  \n  string-hash@1.1.3:\n    version \"1.1.3\"\n    resolved \"https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b\"\n    integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=\n  \n  string-width@^4.2.0:\n    version \"4.2.2\"\n    resolved \"https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5\"\n    integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==\n    dependencies:\n      emoji-regex \"^8.0.0\"\n      is-fullwidth-code-point \"^3.0.0\"\n      strip-ansi \"^6.0.0\"\n  \n  string.prototype.matchall@^4.0.5:\n    version \"4.0.5\"\n    resolved \"https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz#59370644e1db7e4c0c045277690cf7b01203c4da\"\n    integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==\n    dependencies:\n      call-bind \"^1.0.2\"\n      define-properties \"^1.1.3\"\n      es-abstract \"^1.18.2\"\n      get-intrinsic \"^1.1.1\"\n      has-symbols \"^1.0.2\"\n      internal-slot \"^1.0.3\"\n      regexp.prototype.flags \"^1.3.1\"\n      side-channel \"^1.0.4\"\n  \n  string.prototype.trimend@^1.0.4:\n    version \"1.0.4\"\n    resolved \"https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80\"\n    integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==\n    dependencies:\n      call-bind \"^1.0.2\"\n      define-properties \"^1.1.3\"\n  \n  string.prototype.trimstart@^1.0.4:\n    version \"1.0.4\"\n    resolved \"https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed\"\n    integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==\n    dependencies:\n      call-bind \"^1.0.2\"\n      define-properties \"^1.1.3\"\n  \n  string_decoder@1.3.0, string_decoder@^1.0.0, string_decoder@^1.1.1:\n    version \"1.3.0\"\n    resolved \"https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e\"\n    integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==\n    dependencies:\n      safe-buffer \"~5.2.0\"\n  \n  string_decoder@~1.1.1:\n    version \"1.1.1\"\n    resolved \"https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8\"\n    integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==\n    dependencies:\n      safe-buffer \"~5.1.0\"\n  \n  strip-ansi@6.0.0, strip-ansi@^6.0.0:\n    version \"6.0.0\"\n    resolved \"https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532\"\n    integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==\n    dependencies:\n      ansi-regex \"^5.0.0\"\n  \n  strip-bom@^3.0.0:\n    version \"3.0.0\"\n    resolved \"https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3\"\n    integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=\n  \n  strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:\n    version \"3.1.1\"\n    resolved \"https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006\"\n    integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==\n  \n  styled-jsx@4.0.1:\n    version \"4.0.1\"\n    resolved \"https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-4.0.1.tgz#ae3f716eacc0792f7050389de88add6d5245b9e9\"\n    integrity sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ==\n    dependencies:\n      \"@babel/plugin-syntax-jsx\" \"7.14.5\"\n      \"@babel/types\" \"7.15.0\"\n      convert-source-map \"1.7.0\"\n      loader-utils \"1.2.3\"\n      source-map \"0.7.3\"\n      string-hash \"1.1.3\"\n      stylis \"3.5.4\"\n      stylis-rule-sheet \"0.0.10\"\n  \n  stylis-rule-sheet@0.0.10:\n    version \"0.0.10\"\n    resolved \"https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430\"\n    integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==\n  \n  stylis@3.5.4:\n    version \"3.5.4\"\n    resolved \"https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe\"\n    integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==\n  \n  supports-color@^5.3.0:\n    version \"5.5.0\"\n    resolved \"https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f\"\n    integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==\n    dependencies:\n      has-flag \"^3.0.0\"\n  \n  supports-color@^7.1.0:\n    version \"7.2.0\"\n    resolved \"https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da\"\n    integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\n    dependencies:\n      has-flag \"^4.0.0\"\n  \n  supports-color@^8.0.0:\n    version \"8.1.1\"\n    resolved \"https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c\"\n    integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\n    dependencies:\n      has-flag \"^4.0.0\"\n  \n  table@^6.0.9:\n    version \"6.7.1\"\n    resolved \"https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2\"\n    integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==\n    dependencies:\n      ajv \"^8.0.1\"\n      lodash.clonedeep \"^4.5.0\"\n      lodash.truncate \"^4.4.2\"\n      slice-ansi \"^4.0.0\"\n      string-width \"^4.2.0\"\n      strip-ansi \"^6.0.0\"\n  \n  text-table@^0.2.0:\n    version \"0.2.0\"\n    resolved \"https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4\"\n    integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=\n  \n  timers-browserify@2.0.12, timers-browserify@^2.0.4:\n    version \"2.0.12\"\n    resolved \"https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee\"\n    integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==\n    dependencies:\n      setimmediate \"^1.0.4\"\n  \n  to-arraybuffer@^1.0.0:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n    integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=\n  \n  to-fast-properties@^2.0.0:\n    version \"2.0.0\"\n    resolved \"https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e\"\n    integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=\n  \n  to-regex-range@^5.0.1:\n    version \"5.0.1\"\n    resolved \"https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4\"\n    integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==\n    dependencies:\n      is-number \"^7.0.0\"\n  \n  toidentifier@1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553\"\n    integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==\n  \n  tr46@^1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09\"\n    integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=\n    dependencies:\n      punycode \"^2.1.0\"\n  \n  ts-pnp@^1.1.6:\n    version \"1.2.0\"\n    resolved \"https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92\"\n    integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==\n  \n  tsconfig-paths@^3.11.0, tsconfig-paths@^3.9.0:\n    version \"3.11.0\"\n    resolved \"https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36\"\n    integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==\n    dependencies:\n      \"@types/json5\" \"^0.0.29\"\n      json5 \"^1.0.1\"\n      minimist \"^1.2.0\"\n      strip-bom \"^3.0.0\"\n  \n  tslib@^1.8.1:\n    version \"1.14.1\"\n    resolved \"https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00\"\n    integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==\n  \n  tsutils@^3.21.0:\n    version \"3.21.0\"\n    resolved \"https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623\"\n    integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==\n    dependencies:\n      tslib \"^1.8.1\"\n  \n  tty-browserify@0.0.0:\n    version \"0.0.0\"\n    resolved \"https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n    integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=\n  \n  tty-browserify@0.0.1:\n    version \"0.0.1\"\n    resolved \"https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811\"\n    integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==\n  \n  type-check@^0.4.0, type-check@~0.4.0:\n    version \"0.4.0\"\n    resolved \"https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1\"\n    integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==\n    dependencies:\n      prelude-ls \"^1.2.1\"\n  \n  type-fest@^0.20.2:\n    version \"0.20.2\"\n    resolved \"https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4\"\n    integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==\n  \n  type-fest@^0.7.1:\n    version \"0.7.1\"\n    resolved \"https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48\"\n    integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==\n  \n  typescript@4.4.3:\n    version \"4.4.3\"\n    resolved \"https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324\"\n    integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==\n  \n  unbox-primitive@^1.0.1:\n    version \"1.0.1\"\n    resolved \"https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471\"\n    integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==\n    dependencies:\n      function-bind \"^1.1.1\"\n      has-bigints \"^1.0.1\"\n      has-symbols \"^1.0.2\"\n      which-boxed-primitive \"^1.0.2\"\n  \n  unpipe@1.0.0:\n    version \"1.0.0\"\n    resolved \"https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n    integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=\n  \n  uri-js@^4.2.2:\n    version \"4.4.1\"\n    resolved \"https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e\"\n    integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==\n    dependencies:\n      punycode \"^2.1.0\"\n  \n  url@^0.11.0:\n    version \"0.11.0\"\n    resolved \"https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n    integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=\n    dependencies:\n      punycode \"1.3.2\"\n      querystring \"0.2.0\"\n  \n  use-subscription@1.5.1:\n    version \"1.5.1\"\n    resolved \"https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1\"\n    integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==\n    dependencies:\n      object-assign \"^4.1.1\"\n  \n  util-deprecate@^1.0.1, util-deprecate@~1.0.1:\n    version \"1.0.2\"\n    resolved \"https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n    integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=\n  \n  util@0.10.3:\n    version \"0.10.3\"\n    resolved \"https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n    integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=\n    dependencies:\n      inherits \"2.0.1\"\n  \n  util@0.12.4, util@^0.12.0:\n    version \"0.12.4\"\n    resolved \"https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253\"\n    integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==\n    dependencies:\n      inherits \"^2.0.3\"\n      is-arguments \"^1.0.4\"\n      is-generator-function \"^1.0.7\"\n      is-typed-array \"^1.1.3\"\n      safe-buffer \"^5.1.2\"\n      which-typed-array \"^1.1.2\"\n  \n  util@^0.11.0:\n    version \"0.11.1\"\n    resolved \"https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61\"\n    integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==\n    dependencies:\n      inherits \"2.0.3\"\n  \n  v8-compile-cache@^2.0.3:\n    version \"2.3.0\"\n    resolved \"https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee\"\n    integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==\n  \n  validate-npm-package-license@^3.0.1:\n    version \"3.0.4\"\n    resolved \"https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a\"\n    integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==\n    dependencies:\n      spdx-correct \"^3.0.0\"\n      spdx-expression-parse \"^3.0.0\"\n  \n  vm-browserify@1.1.2, vm-browserify@^1.0.1:\n    version \"1.1.2\"\n    resolved \"https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0\"\n    integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==\n  \n  watchpack@2.1.1:\n    version \"2.1.1\"\n    resolved \"https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7\"\n    integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==\n    dependencies:\n      glob-to-regexp \"^0.4.1\"\n      graceful-fs \"^4.1.2\"\n  \n  webidl-conversions@^4.0.2:\n    version \"4.0.2\"\n    resolved \"https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad\"\n    integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==\n  \n  whatwg-url@^7.0.0:\n    version \"7.1.0\"\n    resolved \"https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06\"\n    integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==\n    dependencies:\n      lodash.sortby \"^4.7.0\"\n      tr46 \"^1.0.1\"\n      webidl-conversions \"^4.0.2\"\n  \n  which-boxed-primitive@^1.0.2:\n    version \"1.0.2\"\n    resolved \"https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6\"\n    integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==\n    dependencies:\n      is-bigint \"^1.0.1\"\n      is-boolean-object \"^1.1.0\"\n      is-number-object \"^1.0.4\"\n      is-string \"^1.0.5\"\n      is-symbol \"^1.0.3\"\n  \n  which-typed-array@^1.1.2:\n    version \"1.1.7\"\n    resolved \"https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793\"\n    integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==\n    dependencies:\n      available-typed-arrays \"^1.0.5\"\n      call-bind \"^1.0.2\"\n      es-abstract \"^1.18.5\"\n      foreach \"^2.0.5\"\n      has-tostringtag \"^1.0.0\"\n      is-typed-array \"^1.1.7\"\n  \n  which@^2.0.1:\n    version \"2.0.2\"\n    resolved \"https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1\"\n    integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==\n    dependencies:\n      isexe \"^2.0.0\"\n  \n  word-wrap@^1.2.3:\n    version \"1.2.3\"\n    resolved \"https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c\"\n    integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==\n  \n  wrappy@1:\n    version \"1.0.2\"\n    resolved \"https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n    integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=\n  \n  xtend@^4.0.0, xtend@^4.0.2:\n    version \"4.0.2\"\n    resolved \"https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54\"\n    integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==\n  \n  yallist@^4.0.0:\n    version \"4.0.0\"\n    resolved \"https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72\"\n    integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==\n  \n  yocto-queue@^0.1.0:\n    version \"0.1.0\"\n    resolved \"https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b\"\n    integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==\n"
  }
]