Packer で Windows マシンビルドを作成する

投稿者: Dan Franciscus 投稿日: 2018年12月7

Packer は、Linux だけでなく Windows もサポートしていますが、OSイメージの作成方法は両者で大きく異なります。このブログでは、Packer で Windows OS イメージを作成する方法を説明します。

前のブログに書いたように、Packerは、Hashicorp が提供するオープンソースのオペレーティングシステム・イメージ構築ツールです。 Packerの優れた特徴は、1つの設定から複数のプラットフォーム(AWS、Azure、VMwareなど)用に異なるアーティファクトを作成できる点です。Packer は Linux イメージと Windows イメージの両方の作成をサポートしており、単一の方法でイメージ構築が可能です。

参考リソース

新しい技術を学ぶとき、他の人がどのように使っているかの例を見るのは非常に参考になります。Packer を Windows で使用するのに参考になる最良のリソースは、Joe Fitzgerald 氏の GitHub リポジトリとそのフォークである Stefan Scherer 氏の Github リポジトリです。これら2つのリポジトリにある例を見ると、ツールを組み合わせて Windows ビルドを自動化する方法がよくわかります。Scherer 氏の Windows 10 用の Packer テンプレートを使って、Packer で Windows ビルドを作成する方法を説明します。

autounattend ファイル

Windows OS インストールを自動化するのに最も重要なのは、おそらく autounattend.xml ファイルでしょう。これは Packer だけに限定されるものではなく、Windows のインストール自動化のために誰でも使えるファイルです。Windows OS インストールディスクを起動すると、デフォルトで、インストールするディスクなどのインストール・オプションを選択するようプロンプト指示されますが、これらのオプションはすべて autounattend.xml ファイルで設定できます。このファイルは、リムーバブルドライブに配置する必要があります。Packerでこれを行うには、フロッピードライブ経由で仮想マシンにマウントします。次は Packer テンプレートのビルダー部分の例です。

"builders": [

    {

      "boot_wait": "6m",

      "communicator": "winrm",

      "cpu": "2",

      "disk_size": "",

      "floppy_files": [

        "./answer_files/autounattend.xml",

        "./floppy/WindowsPowershell.lnk",

        "./floppy/PinTo10.exe",

        "./scripts/fixnetwork.ps1",

        "./scripts/disable-screensaver.ps1",

        "./scripts/disable-winrm.ps1",

        "./scripts/enable-winrm.ps1",

        "./scripts/microsoft-updates.bat",

        "./scripts/win-updates.ps1"

      ],

      "guest_additions_mode": "none",

      "iso_checksum": "",

      "iso_checksum_type": "",

      "iso_url": "",

      "ram_size": "2048",

      "shutdown_command": "shutdown /s /t 10 /f /d p:4:1 /c \"Packer Shutdown\"",

      "switch_name": "",

      "type": "hyperv-iso",

      "vm_name": "windows_10",

      "winrm_password": "vagrant",

      "winrm_timeout": "",

      "winrm_username": "vagrant"

    }

フロッピーファイルのセクションで、ローカル・ファイル /answer_files/autounattend.xml をコピーしてマウントするよう設定しています。OSインストール時の Windows のプロンプトに自動応答するためのさまざまな設定を、autounattend.xml の内部に記述しておくことができます。たとえば、自動ログオンアカウントに、ユーザー名とパスワード、”vagrant” を設定しているのがわかると思います。



     

          vagrant

          true&lt;/plaintext&gt;&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/password&gt;&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;username&gt;vagrant&lt;/username&gt;&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;enabled&gt;true&lt;/enabled&gt;&lt;br&gt;&lt;br&gt;&nbsp;&lt;/autologon&gt;&lt;/pre&gt; &lt;p&gt;また、&lt;strong&gt;autounattend.xml&lt;/strong&gt; には、Windows OS のインストール後の最初のログオン時に実行するコマンドのセクションもあります。バッチスクリプトと PowerShell スクリプトの両方がサポートされており、様々な設定が可能です。上のビルダーの例では、Windows のアップデートをVMにインストールする &lt;strong&gt;win-updates.ps1&lt;/strong&gt; という PowerShell スクリプトが実行されるよう設定しています。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;autounattend.xml&lt;/strong&gt; ファイルで様々な設定が可能なことは上述の通りですが、250ラインに及ぶ詳細なファイルは、&lt;a href="https://github.com/StefanScherer/packer-windows/blob/my/answer_files/10/Autounattend.xml" rel="noopener" target="_blank"&gt;ここ&lt;/a&gt;からアクセスできます。&lt;/p&gt; &lt;h2&gt;コミュニケーター&lt;/h2&gt; &lt;p&gt;Packer が VM と通信する一般的な方法は SSH です。OpenSSH を使用することも可能ですが、Windows&nbsp;でより一般的なリモート通信方法は WinRM です。先に示したPacker テンプレートのビルダー部分にあるように、Packer テンプレートで WinRM 接続して認証するよう設定できます。&lt;/p&gt; &lt;pre&gt;"winrm_password": "vagrant",&lt;br&gt;&lt;br&gt;"winrm_timeout": "",&lt;br&gt;&lt;br&gt;"winrm_username": "vagrant"&lt;/pre&gt; &lt;p&gt;Windows の場合、WinRM はデフォルトで、ドメイン外の2台のコンピュータ間でSSL暗号化を要求します。Packer のホストとビルドVM間の通信を可能にする最も簡単な方法(安全は保証されていないものの)は、暗号化されていないトラフィック(HTTP)を許可することです。それを行う Scherer 氏の&nbsp;Github スクリプトは、&lt;a href="https://github.com/StefanScherer/packer-windows/blob/my/scripts/enable-winrm.ps1" rel="noopener" target="_blank" data-sf-ec-immutable=""&gt;ここ&lt;/a&gt;からアクセスできます。&lt;/p&gt; &lt;h2&gt;ISOファイルの使用&lt;/h2&gt; &lt;p&gt;Windows イメージを作成する基本的な方法は、Windows&nbsp;インストールISOを使用することです。テストのためには、Microsoft のトライアルISOを使用することができます。または、組織での使用のために提供されるボリュームライセンスISOを使うこともできます。Packer テンプレートで、ISOファイル、チェックサム、チェックサムタイプの3つのフィールドを設定します(実行時にコマンドパッカービルドに情報をパスすることもできます)。Scherer 氏の Windows 10 のテンプレートでは、ビルドセクションでユーザー変数を使用し、変数セクションで実際の値を設定しています。&lt;/p&gt; &lt;p&gt;ビルドセクション:&lt;/p&gt; &lt;pre&gt;"iso_checksum": "",&lt;br&gt;&lt;br&gt;"iso_checksum_type": "",&lt;br&gt;&lt;br&gt;"iso_url": "",&lt;/pre&gt; &lt;p&gt;変数セクション:&lt;/p&gt; &lt;pre&gt;"iso_checksum": "27e4feb9102f7f2b21ebdb364587902a70842fb550204019d1a14b120918e455",&lt;br&gt;&lt;br&gt;&nbsp;"iso_checksum_type": "sha256",&lt;br&gt;&lt;br&gt;&nbsp;"iso_url": "https://software-download.microsoft.com/download/pr/17134.1.180410-1804.rs4_release_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso"&lt;/pre&gt; &lt;h2&gt;デモ&lt;/h2&gt; &lt;p&gt;簡単なデモンストレーションを表示するために、Scherer 氏のレポジトリをローカルにダウンロードしてパッカービルドを実行します。筆者(dan) のWindows 10イメージがビルドされ、virtualbox を作成し、Windows 10&nbsp;のトライアルISOをダウンロードしてデフォルト設定を行います。下のアウトプットで、ISOがダウンロードされ、スクリプトがVMのフロッピードライブにコピーされているのがわかります。&lt;/p&gt; &lt;pre&gt;Dans-MacBook-Pro:packer-windows-my dan$ ~/packer build -only=virtualbox-iso windows_10.json&lt;br&gt;&lt;br&gt;virtualbox-iso output will be in this color.&lt;br&gt;&lt;br&gt;&nbsp;&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Downloading or copying ISO&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Downloading or copying: https://software-download.microsoft.com/download/pr/17134.1.180410-1804.rs4_release_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 90%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 91%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 92%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 94%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 95%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 96%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 97%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 99%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 100%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 100%&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Creating floppy disk...&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying files flatly from floppy_files&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./answer_files/10/Autounattend.xml&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./floppy/WindowsPowershell.lnk&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./floppy/PinTo10.exe&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/fixnetwork.ps1&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/disable-screensaver.ps1&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/disable-winrm.ps1&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/enable-winrm.ps1&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/microsoft-updates.bat&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/win-updates.ps1&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Done copying files from floppy_files&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Collecting paths from floppy_dirs&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Resulting paths from floppy_dirs : []&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Done copying paths from floppy_dirs&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Creating virtual machine...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Creating hard drive...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Attaching floppy disk...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 4194)&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Executing custom VBoxManage commands...&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Executing: modifyvm windows_10 --memory 2048&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Executing: modifyvm windows_10 --cpus 2&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Starting the virtual machine...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Waiting 6m0s for boot...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Typing the boot command...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Waiting for WinRM to become available...&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: WinRM connected.&lt;/pre&gt; &lt;h2&gt;まとめ&lt;/h2&gt; &lt;p&gt;Packerのイメージビルドで主にサポートされているOSは Linux ですが、Windows もしっかりサポートされています。Packer で、&rdquo;unattended&rdquo; 手法を使ってクリーンな Windows イメージビルドを作成できます。&lt;/p&gt;</plaintext></password></autologon></pre></div> <hr class="-mt9 -mb7" /> <div> <div class="-fl -pr3 -s-mb3 -w17"> <div class="Embed"> <div class="Section-bg Section-bg--n -circle"> <img class="-full" loading="lazy" src='https://d117h1jjiq768j.cloudfront.net/images/default-source/authors/dfranciscusheadshotf052fe95f8434f69963c5a9aa775930b.jpg?sfvrsn=334653e_2' alt='' title='dfranciscusheadshotf052fe95f8434f69963c5a9aa775930b'/> </div> </div> </div> <div class="-oh -s-full"> <h5 class="-mb1"><a href='/jp/blogs/author/dan-franciscus' aria-label="Blog post author page">Dan Franciscus</a></h5> <div class="-fs16"> Dan Franciscus is a systems engineer and VMware Certified Professional (VCP) specializing in VMware, PowerShell, and other Microsoft-based technologies. You can reach Dan at his blog (http://www.winsysblog.com/) or Twitter at @dan_franciscus. </div> <a href='/jp/blogs/author/dan-franciscus' class="Btn Btn--round -i-mark-arrow -mt3 -mb3" aria-label="Blog post author page"> 著者が作成したブログ</a> </div> </div> </div> </div> </div> </div> <div class="Section -tint-blue6 -pb9"> <div class="container"> <h3 class="h4 -mb4">関連タグ</h3> <div class="-df -g5"> <a class="Tag -z2 -wa" href='/jp/blogs/tag/sysadmin'>システム管理者</a> </div> <div> <h3 class="h4 -mb4 -mt8">関連記事</h3> <div class="row"> <div class="col-8 -mb3 -l-half -l-mb3 -s-full"> <div class="Card Elevated Elevated--s -h-scale -br2 -full ResourceItem-blogs"> <div class="Card-content -pb3 -m-p2"> <a href='/jp/blogs/how-to-search-windows-event-logs-across-hundreds-of-servers' class="HoverBox HoverBox--over -accento-0 -ps"> <span class="ResourceItem-title -c-black h5 -mb0">何百ものサーバーからの Windows イベントログを検索する方法</span> </a> <div class="ResourceItem-summary">トラブルシューティングや潜在的なセキュリティ侵害の調査を開始するときは、取り掛かりとして、まず Windows のイベントログをチェックすることが多いと思います。</div> <div class="-mta"> <div class="-df -g5" aria-label="Blog post topics"> <a href='/jp/blogs/moveit' class="Tag -wa -z2">MOVEit</a> <a href='/jp/blogs/security-and-compliance' class="Tag -wa -z2">セキュリティとコンプライアンス</a> </div> <hr class="-mt2 -mb1"/> <a class="-ff-base -fs16 -mb0h -pr -z2" href='/jp/blogs/author/adam-bertram' aria-label="Blog post author">Adam Bertram</a> <span class="ResourceItem-date">5月 24, 2019</span> </div> </div> </div> </div> </div> </div> </div> </div> <script type="application/ld+json">{"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.progress.com/blogs/create-windows-machine-builds-with-packer"},"headline":"Packer で Windows マシンビルドを作成する","image":{"@type":"ImageObject","url":"https://d117h1jjiq768j.cloudfront.net/images/default-source/ipsblogposts/moveit-wsftp-default-blog-top-1200x620.jpg?sfvrsn=acf41fd1_3","height":620,"width":1200},"datePublished":"2018-12-06","dateModified":"2024-11-13","author":{"@type":"Person","name":"Dan Franciscus"},"publisher":{"@type":"Organization","name":"Progress","alternateName":"Progress Software","url":"https://www.progress.com/","sameAs":["https://www.linkedin.com/company/progress-software","https://plus.google.com/u/0/b/101623588211186619905/+ProgressUS","https://www.facebook.com/progresssw","https://www.youtube.com/user/ProgressSW","https://twitter.com/progresssw"],"logo":{"@type":"ImageObject","url":"https://d3ba5g9yhie26y.cloudfront.net/img/progress-logo.png"}},"description":"Packer は、Linux だけでなく Windows もサポートしていますが、OSイメージの作成方法は両者で大きく異なります。Packer で Windows OS イメージを作成する方法を説明します。Packerは、Hashicorp が提供するオープンソースのオペレーティングシステム・イメー","@context":"http://schema.org","@type":"BlogPosting"}</script> </div></div> <section class="Section Section--patch -tint-blue8 -pt8 -pb8 Section-Subscribe" data-sf-element="Section" data-placeholder-label="Section Banner"> <div id="Content_T9DCED183060_Col00" class="sf_colsIn Section-bg Section-bg--sw -m-Section-bg--c" data-sf-element="Section Background" data-placeholder-label="Section Background"> <img loading="lazy" class="-fr -wa" src="https://d117h1jjiq768j.cloudfront.net/images/default-source/blogs/prefooter-dots.svg?sfvrsn=b774ab98_0" title="Prefooter Dots" alt="Prefooter Dots" /> </div> <div id="Content_T9DCED183060_Col01" class="sf_colsIn container" data-sf-element="Section Content" data-placeholder-label="Section Content"> <div id="Subscribe" style="margin-top:-100px;padding-top:100px;"></div><div class="row" data-sf-element="Row"> <div id="Content_T9DCED183062_Col00" class="sf_colsIn col-13 -l-half -m-mb4 -m-three-fourths -s-full" data-sf-element="Column 1" data-placeholder-label="Column 1"> <img loading="lazy" class="-w12 -ha -mb1" src="https://d117h1jjiq768j.cloudfront.net/images/default-source/blogs/subscribe-icon.svg?sfvrsn=cb56888f_0" title="Subscribe Icon" alt="Subscribe Icon" /> <h2 class="-c-white -lh110 -mb2">Latest Stories in Your Inbox</h2> <p class="-c-white -fs24">Subscribe to get all the news, info and tutorials you need to build better business apps and sites</p></div> <div id="Content_T9DCED183062_Col01" class="sf_colsIn col-9 col--offset-2 -l-half -m-three-fourths -s-full" data-sf-element="Column 2" data-placeholder-label="Column 2"><div id="Content_T9DCED183063_Col00" class="sf_colsIn FormHolder -br10" data-sf-element="EmptyWrapper" data-placeholder-label="EmptyWrapper"> The specified form no longer exists or is currently unpublished.</div> </div> </div> </div> </section> </div> <footer class="PRGS-Footer is-large" data-prgs-footer-version="1.4.82" data-lang="jp"><div class="PRGS-container"><div class="PRGS-Footer-sitemap"><div class="PRGS-row"><div class="PRGS-col-8"><div class="h3">Technology</div><ul><li><a href="/digital-experience">Digital Experience</a></li><li><a href="/ui-ux-tools">UI/UX Tools</a></li><li><a href="https://www.chef.io/" target="_blank" aria-label="DevOps (opens in new window)">DevOps</a></li><li><a href="/file-transfer">Secure Managed File Transfer</a></li><li><a href="/app-dev-platform">Mission-Critical App Platform</a></li><li><a href="/infrastructure-monitoring">Infrastructure Monitoring</a></li><li><a href="/datadirect-connectors">Secure Data Connectivity and Integration</a></li><li><a href="/digital-decisioning">Digital Decisioning</a></li></ul></div><div class="PRGS-col-4 PRGS-col--offset-1"><div class="h3">Quick Links</div><ul><li><a href="/products">Products</a></li><li><a href="/trials">Trials</a></li><li><a href="/services">Services</a></li><li><a href="/partners">Partners</a></li><li><a href="/support">Support</a></li><li><a href="/blogs">Blogs</a></li></ul></div><div class="PRGS-col-4 PRGS-col--offset-1"><div class="h3">About</div><ul><li><a href="/company">Company</a></li><li><a href="/customers">Customers</a></li><li><a href="https://investors.progress.com" target="_blank" aria-label="Investor relations (opens in new window)">Investor relations</a></li><li><a href="/company/offices">Offices</a></li><li><a href="/company/careers">Careers</a></li></ul></div><div class="PRGS-col-6"><a href="/company/contact" class="Btn">Contact us</a><div class="PRGS-Phone-Personalized"></div><div class="PRGS-Phone-Main"><div class="h3">Global Headquarters, USA</div><a href="tel:1-800-477-6473">1-800-477-6473</a></div><p>or find <a href="https://www.progress.com/company/offices" class="PRGS-InlineLink">a local contact</a></p></div></div></div><div class="PRGS-Footer-core"><div class="PRGS-row"><div class="PRGS-col-17"><div class="PRGS-Footer-info"><a href="/legal/terms-of-use">利用規約</a> <a href="/legal/privacy-center">プライバシーセンター</a> <a href="/trust-center">セキュリティセンター</a> <a href="/legal/trademarks">Trademarks</a> <a href="/legal">使用許諾契約</a> <a href="/company/code-of-conduct">行動規範</a><div class="PRGS-CCPA"><a class="Btn" href="https://forms.progress.com/ccpa-subscription" target="_blank" aria-label="個人情報の販売または共有を不許可 (opens in new window)">個人情報の販売または共有を不許可</a></div></div><a href="https://www.progress.com" class="PRGS-Footer-logo"><svg xmlns="http://www.w3.org/2000/svg" width="130" height="32" viewBox="0 0 512 120" role="img" aria-label="Progress logo"><path class="PRGS-branding-shape" d="M95.52,29.33h0v51a3.93,3.93,0,0,1-1.78,3.08l-1.67,1L79.35,91.76l-8.59,5-1.78,1V42.6L21.23,15,43.91,1.93,46,0.74a3.94,3.94,0,0,1,3.56,0L81,18.9l14.51,8.38v2.05ZM58.36,48.72l-9.79-5.66L25.66,29.83a4,4,0,0,0-3.56,0L1.77,41.57,0,42.6,34.49,62.51v39.83l20.3-11.73,1.79-1a3.94,3.94,0,0,0,1.78-3.08V48.72ZM0,82.43L23.86,96.21V68.63Z"></path><path class="PRGS-branding-text" d="M148.09,27.28h-26V97.76h11.55V70.1h14.57c15.77,0,24.45-7.7,24.45-21.69,0-6.35-2.4-21.12-24.55-21.12M160.89,48.6c0,7.95-4.12,11.19-14.24,11.19h-13V37.69h14.57c8.56,0,12.71,3.57,12.71,10.91M207,46.41l0.87,0.42-2,10.42-1.35-.42a11.32,11.32,0,0,0-3.34-.51c-10.79,0-11.67,8.59-11.67,19V97.76H178.87V46h10v6.24c2.73-4.2,6-6.37,10.37-6.9A14.55,14.55,0,0,1,207,46.41M233.29,45c-8.42,0-15.16,3.2-19.5,9.27-4.56,6.37-5.23,13.85-5.23,17.74,0,16.36,9.7,26.92,24.73,26.92,18.26,0,24.73-14.71,24.73-27.3,0-7.25-2.15-13.82-6-18.51-4.41-5.31-10.87-8.12-18.7-8.12m0,44.38c-8.37,0-13.57-6.66-13.57-17.37s5.2-17.55,13.57-17.55S247,61.23,247,71.78c0,10.83-5.24,17.56-13.66,17.56M347.89,46.41l0.87,0.42-2,10.42-1.35-.42a11.26,11.26,0,0,0-3.33-.51c-10.78,0-11.66,8.59-11.66,19V97.76H319.76V46h10v6.24c2.73-4.2,6-6.37,10.37-6.9a14.54,14.54,0,0,1,7.73,1.06m38.4,34.76-0.2.57c-2.23,6.36-7.57,7.7-11.65,7.7-8.09,0-13.3-5.37-13.81-14.09h36.59l0.13-1a31.26,31.26,0,0,0,.12-4.12c0-.34,0-0.64,0-0.93C396.93,54.78,387.48,45,374,45c-7.9,0-14.37,3.1-18.73,9a30.85,30.85,0,0,0-5.54,18c0,16,9.95,26.74,24.74,26.74,11.45,0,19.33-5.82,22.2-16.38L397,81.16h-10.7ZM361,66.05c0.9-7.17,5.81-11.73,12.79-11.73,5.33,0,11.64,3.1,12.52,11.73H361Zm-60.7-15.71c-3.45-3.58-8.06-5.39-13.76-5.39-15.69,0-22.83,13.81-22.83,26.63,0,13.16,7.06,26.44,22.83,26.44a18.33,18.33,0,0,0,13.35-5.42c0,2.28-.1,4.45-0.16,5.38-0.58,8.54-4.68,12.51-12.91,12.51-4.47,0-9.61-1.59-10.6-6l-0.22-1H265.46l0.17,1.41c1.1,9.12,9.11,14.79,20.9,14.79,10.34,0,17.7-3.9,21.28-11.26,1.73-3.55,2.6-8.72,2.6-15.37V46H300.28v4.34ZM287.19,88.49c-3.74,0-12.43-1.69-12.43-17.37,0-10.3,4.87-16.7,12.71-16.7,6.06,0,12.52,4.39,12.52,16.7,0,10.87-4.79,17.37-12.81,17.37m159.67-6.31c0,8.23-6.83,16.53-22.09,16.53-13.5,0-21.53-5.85-22.61-16.45L402,81.16h10.52L412.73,82c1.29,6.38,7.37,7.72,12.24,7.72,5.34,0,11-1.72,11-6.54,0-2.44-1.59-4.18-4.73-5.16-1.86-.55-4.15-1.2-6.56-1.87-4.16-1.16-8.47-2.38-11.12-3.29-6.56-2.35-10.33-6.93-10.33-12.56,0-10.43,10.16-15.11,20.22-15.11,13.46,0,20.42,5.07,21.3,15.49l0.09,1.07H434.5l-0.14-.82c-1-6-7-6.9-10.48-6.9-3,0-10,.53-10,5.5,0,2.25,1.93,3.91,5.89,5.06,1.18,0.33,2.94.78,5,1.31,4.22,1.09,9.48,2.46,12.13,3.37,6.59,2.32,9.93,6.67,9.93,13m49.39,0c0,8.23-6.83,16.53-22.09,16.53-13.5,0-21.53-5.85-22.61-16.45l-0.11-1.09H462L462.12,82c1.29,6.38,7.37,7.72,12.24,7.72,5.34,0,11-1.72,11-6.54,0-2.44-1.59-4.18-4.72-5.16-1.86-.55-4.15-1.2-6.57-1.87-4.16-1.16-8.46-2.38-11.11-3.29-6.57-2.35-10.33-6.93-10.33-12.56,0-10.43,10.16-15.11,20.22-15.11,13.46,0,20.42,5.07,21.29,15.49l0.09,1.07H483.9l-0.14-.82c-1-6-7-6.9-10.48-6.9-3,0-9.95.53-9.95,5.5,0,2.25,1.93,3.91,5.89,5.06,1.18,0.33,2.94.78,5,1.31,4.22,1.09,9.48,2.46,12.13,3.37,6.58,2.32,9.93,6.67,9.93,13"></path><path class="PRGS-branding-text" d="M504.71,51.49A7.37,7.37,0,1,1,512,44.12a7.23,7.23,0,0,1-7.29,7.37m0-13.49a6.12,6.12,0,1,0,6,6.12,5.91,5.91,0,0,0-6-6.12m-0.85,7.49v2.46h-2.17V40.21h3.62a2.58,2.58,0,0,1,2.86,2.7,2.26,2.26,0,0,1-1.49,2.34l1.77,2.7H506l-1.49-2.46h-0.68ZM505.07,42h-1.21v1.73h1.21a0.86,0.86,0,0,0,1-.85,0.88,0.88,0,0,0-1-.89"></path><!--[if lte IE 8]><image width="130" height="32" border="0" src="https://d3ba5g9yhie26y.cloudfront.net/img/progress-logo.png" xlink:href=""><![endif]--></svg></a><p class="PRGS-Footer-copyright">Copyright &copy; 2025 Progress Software Corporation、そして/または その子会社もしくは関連会社。全著作権を所有。</p><p>Progress と、ここで使用される特定の商品名は、Progress Software Corporation、そして/または 米国内もしくはその他の国の子会社あるいは関連会社の1つ、の商標、または登録商標です。 適切な表示のためには、 <a href="/legal/trademarks">Trademarks</a> を参照してください。ここに含まれるその他の商標は、それぞれの所有者に帰属します。</p></div><div class="PRGS-col-7"><div class="PRGS-Footer-social"><a href="https://www.facebook.com/progresssw" title="facebook" target="_blank" aria-label="facebook (opens in new window)"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 37 37" width="24" height="24" role="img" aria-label="Facebook icon"><path d="m36.8 18.4c0-10.1-8.2-18.4-18.4-18.4-10.1 0-18.4 8.3-18.4 18.4 0 8.7 6 15.9 14 17.9v-12.3l-3.8 0.1v-5.7h3.8v-2.4c0-6.3 2.8-9.2 9-9.2 1.1 0 3.1 0.3 4 0.5v5.1c-0.5-0.1-1.2-0.1-2.2-0.1-3 0-4.2 1.2-4.2 4.1v2h6.1l-1.1 5.7h-5v12.6c9.2-1.1 16.2-8.9 16.2-18.3"/></svg> </a><a href="https://x.com/progresssw" title="X" target="_blank" aria-label="X (opens in new window)"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -3 32 40" width="24" height="24" role="img" aria-label="X.com icon"><path d="m18.9 13.7l12.9 18.8h-9.5l-8.7-12.6-10.8 12.6h-2.8l12.4-14.5-12.4-18h9.5l8.2 11.9 10.2-11.9h2.8l-11.8 13.7zm-3.8 4.5l8.5 12.2h4.3l-10.5-15-1.2-1.8-8.1-11.5h-4.3l10 14.3 1.3 1.8z"/></svg> </a><a href="https://www.youtube.com/user/ProgressSW" title="youtube" target="_blank" aria-label="youtube (opens in new window)"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42 30" width="24" height="24" role="img" aria-label="YouTube icon"><path d="m41.7 14.6c0 0 0 6.8-0.9 10-0.5 1.8-1.9 3.2-3.7 3.7-3.2 0.9-16.3 0.9-16.3 0.9 0 0-13 0-16.2-0.9-1.8-0.5-3.2-1.9-3.7-3.7-0.9-3.2-0.9-10-0.9-10 0 0 0-6.8 0.9-10 0.5-1.8 1.9-3.2 3.7-3.7 3.2-0.9 16.2-0.9 16.2-0.9 0 0 13.1 0 16.3 0.9 1.8 0.5 3.2 1.9 3.7 3.7 0.9 3.2 0.9 10 0.9 10zm-14.2 0l-10.8-6.3v12.5z"/></svg> </a><a href="https://www.instagram.com/progress_sw_" title="instagram" target="_blank" aria-label="instagram (opens in new window)"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-1 -1 37 37" width="24" height="24" role="img" aria-label="Instagram icon"><path fill-rule="evenodd" d="m34.6 10.2c0.1 1.8 0.1 2.4 0.1 7.1 0 4.7 0 5.3-0.1 7.1 0 1.4-0.3 2.9-0.8 4.2-0.9 2.3-2.8 4.2-5.1 5.1q-2 0.7-4.2 0.8c-1.8 0.1-2.4 0.1-7.1 0.1-4.7 0-5.3 0-7.2-0.1-1.4 0-2.8-0.3-4.2-0.8-2.3-0.9-4.1-2.8-5-5.1q-0.8-2-0.9-4.1c-0.1-1.9-0.1-2.5-0.1-7.2 0-4.6 0-5.2 0.1-7.1 0-1.4 0.3-2.8 0.8-4.2 0.9-2.3 2.7-4.2 5.1-5.1q2-0.7 4.2-0.8c1.8-0.1 2.5-0.1 7.1-0.1 4.7 0 5.4 0 7.2 0.1 1.4 0 2.9 0.3 4.2 0.8 2.3 0.9 4.2 2.7 5.1 5.1q0.7 2 0.8 4.2zm-3.1 7.1c0-4.6 0-5.2-0.1-7q0-1.6-0.6-3.2c-0.6-1.5-1.8-2.7-3.3-3.3q-1.5-0.6-3.2-0.6c-1.8-0.1-2.4-0.1-7-0.1-4.6 0-5.2 0.1-7 0.2q-1.6 0-3.2 0.6c-1.5 0.5-2.7 1.7-3.2 3.2q-0.6 1.6-0.6 3.2c-0.1 1.8-0.1 2.4-0.1 7 0 4.6 0 5.2 0.1 7q0 1.6 0.6 3.2c0.5 1.5 1.7 2.7 3.2 3.3q1.6 0.6 3.2 0.6c1.8 0.1 2.4 0.1 7 0.1 4.6 0 5.2 0 7-0.1q1.7 0 3.2-0.6c1.5-0.6 2.7-1.8 3.3-3.3q0.6-1.6 0.6-3.2c0.1-1.8 0.1-2.4 0.1-7z"/><path fill-rule="evenodd" d="m26.2 17.3c0 4.9-4 8.9-8.9 8.9-4.9 0-8.9-4-8.9-8.9 0-4.9 4-8.9 8.9-8.9 4.9 0 8.9 4 8.9 8.9zm-3.1 0c0-3.2-2.6-5.8-5.8-5.8-3.2 0-5.7 2.6-5.7 5.8 0 3.2 2.5 5.7 5.7 5.7 3.2 0 5.8-2.5 5.8-5.7z"/><path d="m26.5 6c-1.1 0-2 0.9-2 2.1 0 1.1 0.9 2 2 2 1.2 0 2.1-0.9 2.1-2 0-1.2-0.9-2.1-2.1-2.1z"/></svg> </a><a href="https://www.linkedin.com/company/progress-software" title="linkedin" target="_blank" aria-label="linkedin (opens in new window)"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-1 -1 37 37" width="24" height="24" role="img" aria-label="Linkedin icon"><path d="m34 3.8v26.4c0 2.1-1.7 3.8-3.8 3.8h-26.4c-2.1 0-3.8-1.7-3.8-3.8v-26.4c0-2.1 1.7-3.8 3.8-3.8h26.4c2.1 0 3.8 1.7 3.8 3.8zm-23.7 9.1h-5.1v16.4h5.1zm0.4-5.2c0-1.6-1.3-3-3-3-1.6 0-3 1.4-3 3 0 1.7 1.4 3.1 3 3.1 1.7 0 3-1.4 3-3.1zm18.6 11.2c0-4.4-2.5-6.5-6-6.5-3.5 0-4.9 2.7-4.9 2.7v-2.2h-4.9v16.4h4.9v-8.6c0-2.3 1-3.7 3.1-3.7 1.8 0 2.7 1.3 2.7 3.7v8.6h5.1z"/></svg></a></div><div class="PRGS-Footer-cms">Powered by <a href="https://www.progress.com/sitefinity-cms">Progress Sitefinity</a></div></div></div></div></div></footer> <script type="text/javascript"> navigator.sayswho=function(){var u=navigator.userAgent,n,t,r,f,i=u.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];/trident/i.test(i[1])?(console.log("in trident"),n=/\brv[ :]+(\d+)/g.exec(u)||[],t="ie",r=n[1]||""):i[1]==="Chrome"?(n=u.match(/\b(OPR|Edge)\/(\d+)/),n!=null?(t=n.slice(1,2).toString().toLowerCase().replace("opr","opera"),r=n.slice(2)):(t=i[1].toString().toLowerCase(),r=i[2].toString())):(t=i[1].toString().toLowerCase(),r=i[2].toString());f="t-"+t+" t-"+t+r;document.querySelector("html").setAttribute("class",f)}() </script> <script type="text/javascript" src="/WebResource.axd?d=wnB2OjhYopty-dCFa4b2kHGj5gFtcOMYV3vDfHgUZGbY4lr6-npFVnYAocsaCKQHKgn5KX13kYXPPXv4nNWwpeELmjGrNyxHYQRx4zrToI8KHcltcX5S-jqqac1Abh07bVuogfcNFoD50O5kmX9AnPfdGlH2Y2piet8LCKbqxQ_s09n4Vpdxv3ET8oml0P4aGY_XQHN_X6e8YBOmSM-i9cSXEtiOCwSId_i_tTdzFs41&amp;t=638412637940000000"> </script><script data-sf-pers-id="9c304d44-280c-4702-a1b7-7286fe4975f7" data-sf-pers-raise-events="True" data-sf-pers-page-node-id="95756841-2c73-4f00-be51-744c7c424312" data-sf-pers-page-data-id="ef03a43b-bbc3-4103-b8a5-4aa53bc9d5a7" data-sf-pers-page-node-key="95756841-2C73-4F00-BE51-744C7C424312/3df8bdf1-9630-4d26-8de0-de3659b0e294/SitefinitySiteMap" data-sf-app-path="/" data-sf-loaded-scripts="['//cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js', '//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js', 'https://d117h1jjiq768j.cloudfront.net/Frontend-Assembly/Web.Widgets.SEO/Mvc/Scripts/Shared/referrer-policy.min.js?package=PureMvc&v=MS4wLjAuMzY5NzA%3d', 'https://d3ba5g9yhie26y.cloudfront.net/cache/61c0d8682c0d4311aed3e6e9e828cdae7fe42104/js/all.min.js']" data-sf-culture="ja"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js" type="text/javascript"></script><script src="//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js" type="text/javascript"></script> <script type="text/javascript"> var oneTrustHelper = (function () { function evalGTMScript() { var gtmScript = document.getElementById("GTMScript"); gtmScript.type = "text/javascript"; gtmScript.classList.remove("optanon-category-1"); eval(gtmScript.innerHTML); }; return { gtmFallback: function () { console.warn('OneTrust not loaded.'); if (document.readyState !== 'loading') { evalGTMScript(); } else { document.addEventListener('readystatechange', function () { if (document.readyState === 'interactive') { evalGTMScript(); } }); }; } }; })(); </script> <script onerror="oneTrustHelper.gtmFallback()" src="https://cdn.cookielaw.org/consent/f9397248-1dbe-47fc-9dbf-c50e7dd51096/otSDKStub.js" data-language="ja" type="text/javascript" charset="UTF-8" data-domain-script="f9397248-1dbe-47fc-9dbf-c50e7dd51096"></script> <script type="text/javascript"> (function (w) { w.OptanonGroups = {"StrictlyNecessaryCookies":"1","PerformanceCookies":"2","FunctionalCookies":"3","TargetingCookies":"4"}; w.isOptanonGroupActive = function (groupId, explicit) { if (!w.OptanonActiveGroups) return false; var groupMatchKey = ',' + groupId + ','; return w.OptanonActiveGroups.indexOf(groupMatchKey) !== -1; } function toggleSitefinityTrackingConsent() { var performanceCookiesGroupId = w.OptanonGroups.PerformanceCookies; var isPerformanceCookiesGroupIdActive = w.isOptanonGroupActive(performanceCookiesGroupId, true); if (w.TrackingConsentManager) { w.TrackingConsentManager.updateUserConsent(isPerformanceCookiesGroupIdActive); } }; var trackingScriptsQueue = []; w.invokeTrackingScript = function (thisReference, trackingGroup, functionReference) { if (isOptanonGroupActive(trackingGroup, true)) { functionReference.call(thisReference); } else { trackingScriptsQueue.push({ thisReference: thisReference, trackingGroup: trackingGroup, functionReference: functionReference }); } } var isOptanonToggled = false; var preferenceChangeHandlerAdded = false; w.OptanonWrapper = function () { var newTrackingScriptsQueue = []; for (var i = 0; i < trackingScriptsQueue.length; i++) { var trackingScriptData = trackingScriptsQueue[i]; if (isOptanonGroupActive(trackingScriptData.trackingGroup, true)) { trackingScriptData.functionReference.call(trackingScriptData.thisReference); } else { newTrackingScriptsQueue.push(trackingScriptData); } } trackingScriptsQueue = newTrackingScriptsQueue; if (!isOptanonToggled && w.location.hash === '#cookie-settings' && true) { isOptanonToggled = true; Optanon.ToggleInfoDisplay(); } if(!preferenceChangeHandlerAdded){ OneTrust.OnConsentChanged(function() { // Trigger cookie check process after user makes changes to allowed cookie groups from the OneTrust cookie settings dialog. $.ajax( { url: '/webapi/CookiePreferences/Update', type: 'HEAD' }); }); preferenceChangeHandlerAdded = true; } toggleSitefinityTrackingConsent(); } })(window); </script> <script id="GTMScript" type="text/plain" class="optanon-category-1">(function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-TX8G7Q');</script> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TX8G7Q" height="0" width="0" style="display: none; visibility: hidden"></iframe></noscript> <script type="text/plain" class="optanon-category-2">!function (e) { for (var r = document.getElementsByTagName("script")[0], s = r.parentNode, t = 0; t < e.length; t++) { var i = e[t], c = document.createElement("script"); c.src = i.src, c.type = "text/javascript", i.id && (c.id = i.id), s.insertBefore(c, r) } }([{ id: "atcOverride", src: "//secure.progress.com/js/atcOverride.js" }, { id: "redirect", src: "//secure.progress.com/js/redirect.js" }]);</script> <script src="https://d117h1jjiq768j.cloudfront.net/Frontend-Assembly/Web.Widgets.SEO/Mvc/Scripts/Shared/referrer-policy.min.js?package=PureMvc&amp;v=MS4wLjAuMzY5NzA%3d" type="text/javascript"></script> <script src="https://d3ba5g9yhie26y.cloudfront.net/cache/61c0d8682c0d4311aed3e6e9e828cdae7fe42104/js/all.min.js" type="text/javascript"></script> <script type="text/javascript"> (function() { if (window._dataLayerTimeout) { clearTimeout(window._dataLayerTimeout); } window._dataLayerTaxLoadedEvent = {"tax_blogpost_products":"moveit,ws-ftp","tax_blogpost_author_name":"Dan Franciscus","tax_blogpost_seodescription":"Packer は、Linux だけでなく Windows もサポートしていますが、OSイメージの作成方法は両者で大きく異なります。Packer で Windows OS イメージを作成する方法を説明します。Packerは、Hashicorp が提供するオープンソースのオペレーティングシステム・イメー","tax_blogpost_seopagetitle":"Packer で Windows マシンビルドを作成する","tax_blogpost_topics":"セキュリティとコンプライアンス,MOVEit","tax_blogpost_title":"Packer で Windows マシンビルドを作成する","tax_blogpost_urlname":"create-windows-machine-builds-with-packer","tax_blogpost_lastmodified":"20241113","tax_blogpost_localizedmodificationdate":"20181207","tax_blogpost_tags":"システム管理者","tax_pagenode_products":"security-and-compliance,moveit","event":"tax_loaded"}; window._dataLayerTimeout = setTimeout(function() { window.dataLayer = window.dataLayer || []; window.dataLayer.push(window._dataLayerTaxLoadedEvent); }); })(); </script><script type="text/plain" class="optanon-category-2"> (function() { var script = '//s1325.t.eloqua.com/visitor/v200/svrGP?pps=70&siteid=1325'; (function getScript(source, callback) { var script = document.createElement('script'); var prior = document.getElementsByTagName('script')[0]; script.async = 1; prior.parentNode.insertBefore(script, prior); script.onload = script.onreadystatechange = function( _, isAbort ) { if(isAbort || !script.readyState || /loaded|complete/.test(script.readyState) ) { script.onload = script.onreadystatechange = null; script = undefined; if(!isAbort) { if(callback) callback(); } } }; script.src = source; })(script, function() { if (typeof GetElqCustomerGUID == 'function') { var userId = GetElqCustomerGUID(); document.cookie = 'elqUserId=' + userId + '; path=/;SameSite=Lax;'; } }); })(); </script><script type="application/json" id="PersonalizationTracker"> {"IsPagePersonalizationTarget":false,"IsUrlPersonalizationTarget":false,"PageId":"95756841-2c73-4f00-be51-744c7c424312"} </script><script type="text/javascript" src="/WebResource.axd?d=NjxTqR2bqTw1rewxxlkHPhkRhiW0N4ZsxoL7m2t3lBo0jaloN9l0KznaWyN8uM_MwoPlHH4k4V8JrQlZAy_TZh7aH1MO6R3nLedQFPW1yW3CvOyRNjHOA16tcPx3faCQx61_mh4yXIYD509mzqaRMhwJgYfbIF0Nmax2YAltfhPw5y4Hir_DwjhDM3v7aVSXRBwK2hJxQtsiKEBwac-KbgKSUoy-MVnDowDFASLVEeM1&amp;t=638412637940000000"> </script><script type="text/javascript"> $(function(){var n=StickyElement.create({top:0,resize:!0,elevation:!0,breakpoint:960,classOnly:!1,fixClass:"is-fixed",selector:".js-sticky-nav",stopSelector:".PRGS-Footer",placeholderClass:"sticky-nav-placeholder"})}) </script><script type="text/javascript"> $(function(){$(".FeaturedQuote").each(function(){var n=$(this).clone().removeClass("FeaturedQuote").addClass("featured-txt"),t="http://twitter.com/share?text="+encodeURIComponent($(this).text());$(this).after(n);n.wrap('<a href="'+t+'" class="featured-quote popupMeJS"><\/a>');n.before('<span class="-i-twitter" />')});$(".popupMeJS").on("click",function(){var n=575,t=400,i=($(window).width()-n)/2,r=($(window).height()-t)/2,u=$(this).attr("href")+"&url="+window.location.href,f="scrollbars=1,status=1,width="+n+",height="+t+",top="+r+",left="+i;return window.open(u,"Share",f),!1})}) </script><script type="text/javascript" src="https://platform.twitter.com/widgets.js"></script><script type="text/javascript"> var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(n){var o=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,l=0,u={},t={manual:n.Prism&&n.Prism.manual,disableWorkerMessageHandler:n.Prism&&n.Prism.disableWorkerMessageHandler,util:{encode:function n(t){return t instanceof i?new i(t.type,n(t.content),t.alias):Array.isArray(t)?t.map(n):t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(n){return Object.prototype.toString.call(n).slice(8,-1)},objId:function(n){return n.__id||Object.defineProperty(n,"__id",{value:++l}),n.__id},clone:function n(i,r){var u,f;switch(r=r||{},t.util.type(i)){case"Object":if(f=t.util.objId(i),r[f])return r[f];for(var e in u={},r[f]=u,i)i.hasOwnProperty(e)&&(u[e]=n(i[e],r));return u;case"Array":return f=t.util.objId(i),r[f]?r[f]:(u=[],r[f]=u,i.forEach(function(t,i){u[i]=n(t,r)}),u);default:return i}},getLanguage:function(n){for(;n;){var t=o.exec(n.className);if(t)return t[1].toLowerCase();n=n.parentElement}return"none"},setLanguage:function(n,t){n.className=n.className.replace(RegExp(o,"gi"),"");n.classList.add("language-"+t)},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error;}catch(r){var t=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(r.stack)||[])[1];if(t){var n=document.getElementsByTagName("script");for(var i in n)if(n[i].src==t)return n[i]}return null}},isActive:function(n,t,i){for(var u="no-"+t;n;){var r=n.classList;if(r.contains(t))return!0;if(r.contains(u))return!1;n=n.parentElement}return!!i}},languages:{plain:u,plaintext:u,text:u,txt:u,extend:function(n,i){var r=t.util.clone(t.languages[n]);for(var u in i)r[u]=i[u];return r},insertBefore:function(n,i,r,u){var o=(u=u||t.languages)[n],f={};for(var e in o)if(o.hasOwnProperty(e)){if(e==i)for(var s in r)r.hasOwnProperty(s)&&(f[s]=r[s]);r.hasOwnProperty(e)||(f[e]=o[e])}var h=u[n];return u[n]=f,t.languages.DFS(t.languages,function(t,i){i===h&&t!=n&&(this[t]=f)}),f},DFS:function n(i,r,u,f){f=f||{};var s=t.util.objId;for(var o in i)if(i.hasOwnProperty(o)){r.call(i,o,i[o],u||o);var e=i[o],h=t.util.type(e);"Object"!==h||f[s(e)]?"Array"!==h||f[s(e)]||(f[s(e)]=!0,n(e,r,o,f)):(f[s(e)]=!0,n(e,r,null,f))}}},plugins:{},highlightAll:function(n,i){t.highlightAllUnder(document,n,i)},highlightAllUnder:function(n,i,r){var u={callback:r,container:n,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};t.hooks.run("before-highlightall",u);u.elements=Array.prototype.slice.apply(u.container.querySelectorAll(u.selector));t.hooks.run("before-all-elements-highlight",u);for(var f,e=0;f=u.elements[e++];)t.highlightElement(f,!0===i,u.callback)},highlightElement:function(i,r,u){var o=t.util.getLanguage(i),c=t.languages[o];t.util.setLanguage(i,o);var e=i.parentElement;e&&"pre"===e.nodeName.toLowerCase()&&t.util.setLanguage(e,o);var f={element:i,language:o,grammar:c,code:i.textContent};function s(n){f.highlightedCode=n;t.hooks.run("before-insert",f);f.element.innerHTML=f.highlightedCode;t.hooks.run("after-highlight",f);t.hooks.run("complete",f);u&&u.call(f.element)}if(t.hooks.run("before-sanity-check",f),(e=f.element.parentElement)&&"pre"===e.nodeName.toLowerCase()&&!e.hasAttribute("tabindex")&&e.setAttribute("tabindex","0"),!f.code)return t.hooks.run("complete",f),void(u&&u.call(f.element));if(t.hooks.run("before-highlight",f),f.grammar)if(r&&n.Worker){var h=new Worker(t.filename);h.onmessage=function(n){s(n.data)};h.postMessage(JSON.stringify({language:f.language,code:f.code,immediateClose:!0}))}else s(t.highlight(f.code,f.grammar,f.language));else s(t.util.encode(f.code))},highlight:function(n,r,u){var f={code:n,grammar:r,language:u};if(t.hooks.run("before-tokenize",f),!f.grammar)throw new Error('The language "'+f.language+'" has no grammar.');return f.tokens=t.tokenize(f.code,f.grammar),t.hooks.run("after-tokenize",f),i.stringify(t.util.encode(f.tokens),f.language)},tokenize:function(n,t){var r=t.rest;if(r){for(var u in r)t[u]=r[u];delete t.rest}var i=new a;return f(i,i.head,n),h(n,i,t,i.head,0),function(n){for(var i=[],t=n.head.next;t!==n.tail;)i.push(t.value),t=t.next;return i}(i)},hooks:{all:{},add:function(n,i){var r=t.hooks.all;r[n]=r[n]||[];r[n].push(i)},run:function(n,i){var r=t.hooks.all[n];if(r&&r.length)for(var u,f=0;u=r[f++];)u(i)}},Token:i};function i(n,t,i,r){this.type=n;this.content=t;this.alias=i;this.length=0|(r||"").length}function s(n,t,i,r){n.lastIndex=t;var u=n.exec(i);if(u&&r&&u[1]){var f=u[1].length;u.index+=f;u[0]=u[0].slice(f)}return u}function h(n,r,u,e,o,c){for(var b in u)if(u.hasOwnProperty(b)&&u[b]){var k=u[b];k=Array.isArray(k)?k:[k];for(var g=0;g<k.length;++g){if(c&&c.cause==b+","+g)return;var a=k[g],st=a.inside,ht=!!a.lookbehind,ct=!!a.greedy,vt=a.alias;if(ct&&!a.pattern.global){var yt=a.pattern.toString().match(/[imsuy]*$/)[0];a.pattern=RegExp(a.pattern.source,yt+"g")}for(var lt=a.pattern||a,l=e.next,y=o;l!==r.tail&&!(c&&y>=c.reach);y+=l.value.length,l=l.next){var d=l.value;if(r.length>n.length)return;if(!(d instanceof i)){var p,tt=1;if(ct){if(!(p=s(lt,y,n,ht))||p.index>=n.length)break;var it=p.index,pt=p.index+p[0].length,w=y;for(w+=l.value.length;it>=w;)w+=(l=l.next).value.length;if(y=w-=l.value.length,l.value instanceof i)continue;for(var nt=l;nt!==r.tail&&(w<pt||"string"==typeof nt.value);nt=nt.next)tt++,w+=nt.value.length;tt--;d=n.slice(y,w);p.index-=y}else if(!(p=s(lt,0,d,ht)))continue;it=p.index;var rt=p[0],ft=d.slice(0,it),at=d.slice(it+rt.length),et=y+d.length;c&&et>c.reach&&(c.reach=et);var ut=l.prev;if(ft&&(ut=f(r,ut,ft),y+=ft.length),v(r,ut,tt),l=f(r,ut,new i(b,st?t.tokenize(rt,st):rt,vt,rt)),at&&f(r,l,at),tt>1){var ot={cause:b+","+g,reach:et};h(n,r,u,l.prev,y,ot);c&&ot.reach>c.reach&&(c.reach=ot.reach)}}}}}}function a(){var n={value:null,prev:null,next:null},t={value:null,prev:n,next:null};n.next=t;this.head=n;this.tail=t;this.length=0}function f(n,t,i){var u=t.next,r={value:i,prev:t,next:u};return t.next=r,u.prev=r,n.length++,r}function v(n,t,i){for(var r=t.next,u=0;u<i&&r!==n.tail;u++)r=r.next;t.next=r;r.prev=t;n.length-=u}if(n.Prism=t,i.stringify=function n(i,r){if("string"==typeof i)return i;if(Array.isArray(i)){var e="";return i.forEach(function(t){e+=n(t,r)}),e}var u={type:i.type,content:n(i.content,r),tag:"span",classes:["token",i.type],attributes:{},language:r},f=i.alias;f&&(Array.isArray(f)?Array.prototype.push.apply(u.classes,f):u.classes.push(f));t.hooks.run("wrap",u);var o="";for(var s in u.attributes)o+=" "+s+'="'+(u.attributes[s]||"").replace(/"/g,"&quot;")+'"';return"<"+u.tag+' class="'+u.classes.join(" ")+'"'+o+">"+u.content+"<\/"+u.tag+">"},!n.document)return n.addEventListener?(t.disableWorkerMessageHandler||n.addEventListener("message",function(i){var r=JSON.parse(i.data),u=r.language,f=r.code,e=r.immediateClose;n.postMessage(t.highlight(f,t.languages[u],u));e&&n.close()},!1),t):t;var r=t.util.currentScript();function e(){t.manual||t.highlightAll()}if(r&&(t.filename=r.src,r.hasAttribute("data-manual")&&(t.manual=!0)),!t.manual){var c=document.readyState;"loading"===c||"interactive"===c&&r&&r.defer?document.addEventListener("DOMContentLoaded",e):window.requestAnimationFrame?window.requestAnimationFrame(e):window.setTimeout(e,16)}return t}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism);"undefined"!=typeof global&&(global.Prism=Prism);Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity;Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup;Prism.hooks.add("wrap",function(n){"entity"===n.type&&(n.attributes.title=n.content.replace(/&amp;/,"&"))});Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(n,t){var i={};i["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[t]};i.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:i}};r["language-"+t]={pattern:/[\s\S]+/,inside:Prism.languages[t]};var u={};u[n]={pattern:RegExp("(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[^])*?(?=<\/__>)".replace(/__/g,function(){return n}),"i"),lookbehind:!0,greedy:!0,inside:r};Prism.languages.insertBefore("markup","cdata",u)}});Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(n,t){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+n+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:Prism.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});Prism.languages.html=Prism.languages.markup;Prism.languages.mathml=Prism.languages.markup;Prism.languages.svg=Prism.languages.markup;Prism.languages.xml=Prism.languages.extend("markup",{});Prism.languages.ssml=Prism.languages.xml;Prism.languages.atom=Prism.languages.xml;Prism.languages.rss=Prism.languages.xml;!function(n){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;n.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:[^;{\\s\"']|\\s+(?!\\s)|"+t.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{"function":/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,"function":{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/};n.languages.css.atrule.inside.rest=n.languages.css;var i=n.languages.markup;i&&(i.tag.addInlined("style","css"),i.tag.addAttribute("style","css"))}(Prism);Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,"function":/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],"function":/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp("((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))"),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript"));Prism.languages.js=Prism.languages.javascript;!function(n){function i(n,t){return n.replace(/<<(\d+)>>/g,function(n,i){return"(?:"+t[+i]+")"})}function t(n,t,r){return RegExp(i(n,t),r||"")}function o(n,t){for(var i=0;i<t;i++)n=n.replace(/<<self>>/g,function(){return"(?:"+n+")"});return n.replace(/<<self>>/g,"[^\\s\\S]")}var b="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",s="class enum interface record struct",k="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",y="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function h(n){return"\\b(?:"+n.trim().replace(/ /g,"|")+")\\b"}var d=h(s),c=RegExp(h(b+" "+s+" "+k+" "+y)),ct=h(s+" "+k+" "+y),lt=h(b+" "+s+" "+y),l=o("<(?:[^<>;=+\\-*/%&|^]|<<self>>)*>",2),a=o("\\((?:[^()]|<<self>>)*\\)",2),u="@?\\b[A-Za-z_]\\w*\\b",v=i("<<0>>(?:\\s*<<1>>)?",[u,l]),f=i("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[ct,v]),p="\\[\\s*(?:,\\s*)*\\]",at=i("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[f,p]),vt=i("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[l,a,p]),yt=i("\\(<<0>>+(?:,<<0>>+)+\\)",[vt]),e=i("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[yt,f,p]),r={keyword:c,punctuation:/[<>()?,.:[\]]/},g="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",nt='"(?:\\\\.|[^\\\\"\r\n])*"';n.languages.csharp=n.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[nt]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[f]),lookbehind:!0,inside:r},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[u,e]),lookbehind:!0,inside:r},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[u]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[d,v]),lookbehind:!0,inside:r},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[f]),lookbehind:!0,inside:r},{pattern:t("(\\bwhere\\s+)<<0>>",[u]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[at]),lookbehind:!0,inside:r},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[e,lt,u]),inside:r}],keyword:c,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/});n.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}});n.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[u]),lookbehind:!0,alias:"punctuation"}});n.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[u]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[a]),lookbehind:!0,alias:"class-name",inside:r},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[e,f]),inside:r,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[e]),lookbehind:!0,inside:r,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[u,l]),inside:{"function":t("^<<0>>",[u]),generic:{pattern:RegExp(l),alias:"class-name",inside:r}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,v,u,e,c.source,a,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[v,a]),lookbehind:!0,greedy:!0,inside:n.languages.csharp},keyword:c,"class-name":{pattern:RegExp(e),greedy:!0,inside:r},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var tt=nt+"|"+g,it=i("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[tt]),rt=o(i("[^\"'/()]|<<0>>|\\(<<self>>*\\)",[it]),2),ut="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",pt=i("<<0>>(?:\\s*\\(<<1>>*\\))?",[f,rt]);n.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[ut,pt]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[ut]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[rt]),inside:n.languages.csharp},"class-name":{pattern:RegExp(f),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var w=":[^}\r\n]+",ft=o(i("[^\"'/()]|<<0>>|\\(<<self>>*\\)",[it]),2),et=i("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[ft,w]),ot=o(i("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<<self>>*\\)",[tt]),2),st=i("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[ot,w]);function ht(i,r){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[i]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[r,w]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:n.languages.csharp}}},string:/[\s\S]+/}}n.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[et]),lookbehind:!0,greedy:!0,inside:ht(et,ft)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[st]),lookbehind:!0,greedy:!0,inside:ht(st,ot)}],char:{pattern:RegExp(g),greedy:!0}});n.languages.dotnet=n.languages.cs=n.languages.csharp}(Prism);Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive":{pattern:/<%\s*@.*%>/,alias:"tag",inside:{"page-directive":{pattern:/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,alias:"tag"},rest:Prism.languages.markup.tag.inside}},directive:{pattern:/<%.*%>/,alias:"tag",inside:{directive:{pattern:/<%\s*?[$=%#:]{0,2}|%>/,alias:"tag"},rest:Prism.languages.csharp}}});Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/;Prism.languages.insertBefore("inside","punctuation",{directive:Prism.languages.aspnet.directive},Prism.languages.aspnet.tag.inside["attr-value"]);Prism.languages.insertBefore("aspnet","comment",{"asp-comment":{pattern:/<%--[\s\S]*?--%>/,alias:["asp","comment"]}});Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp-script":{pattern:/(<script(?=.*runat=['"]?server\b)[^>]*>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,alias:["asp","script"],inside:Prism.languages.csharp||{}}});!function(n){var i="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",u={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},t={bash:u,environment:{pattern:RegExp("\\$"+i),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+i),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};n.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+i),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:u}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:t.entity}}],environment:{pattern:RegExp("\\$?"+i),alias:"constant"},variable:t.variable,"function":{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}};u.inside=n.languages.bash;for(var f=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],e=t.variable[1].inside,r=0;r<f.length;r++)e[f[r]]=n.languages.bash[f[r]];n.languages.sh=n.languages.bash;n.languages.shell=n.languages.bash}(Prism);!function(n){var r=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,i="(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",t={pattern:RegExp("(^|[^\\w.])"+i+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};n.languages.java=n.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[t,{pattern:RegExp("(^|[^\\w.])"+i+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)"),lookbehind:!0,inside:t.inside},{pattern:RegExp("(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)"+i+"[A-Z]\\w*\\b"),lookbehind:!0,inside:t.inside}],keyword:r,"function":[n.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/});n.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}});n.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":t,keyword:r,punctuation:/[<>(),.:]/,operator:/[?&|]/}},"import":[{pattern:RegExp("(\\bimport\\s+)"+i+"(?:[A-Z]\\w*|\\*)(?=\\s*;)"),lookbehind:!0,inside:{namespace:t.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp("(\\bimport\\s+static\\s+)"+i+"(?:\\w+|\\*)(?=\\s*;)"),lookbehind:!0,alias:"static",inside:{namespace:t.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(/<keyword>/g,function(){return r.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism);Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/};Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python;Prism.languages.py=Prism.languages.python;Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},"function":/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/};!function(n){n.languages.typescript=n.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/});n.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/);delete n.languages.typescript.parameter;delete n.languages.typescript["literal-property"];var t=n.languages.extend("typescript",{});delete t["class-name"];n.languages.typescript["class-name"].inside=t;n.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},"function":/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{"function":/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}});n.languages.ts=n.languages.typescript}(Prism);!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document&&document.querySelector){var n,f="line-numbers",t="linkable-line-numbers",c=/\n(?!$)/g,r=!0;Prism.plugins.lineHighlight={highlightLines:function(u,e,h){var d=(e="string"==typeof e?e:u.getAttribute("data-line")||"").replace(/\s+/g,"").split(",").filter(Boolean),y=+u.getAttribute("data-line-offset")||0,g=(function(){if(void 0===n){var t=document.createElement("div");t.style.fontSize="13px";t.style.lineHeight="1.5";t.style.padding="0";t.style.border="0";t.innerHTML="&nbsp;<br />&nbsp;";document.body.appendChild(t);n=38===t.offsetHeight;document.body.removeChild(t)}return n}()?parseInt:parseFloat)(getComputedStyle(u).lineHeight),v=Prism.util.isActive(u,f),a=u.querySelector("code"),p=v?u:a||u,l=[],w=a.textContent.match(c),nt=w?w.length+1:1,b=a&&p!=a?function(n,t){var u=getComputedStyle(n),r=getComputedStyle(t);function i(n){return+n.substr(0,n.length-2)}return t.offsetTop+i(r.borderTopWidth)+i(r.paddingTop)-i(u.paddingTop)}(u,a):0;d.forEach(function(n){var o=n.split("-"),i=+o[0],r=+o[1]||i;if(!((r=Math.min(nt+y,r))<i)){var t=u.querySelector('.line-highlight[data-range="'+n+'"]')||document.createElement("div");if(l.push(function(){t.setAttribute("aria-hidden","true");t.setAttribute("data-range",n);t.className=(h||"")+" line-highlight"}),v&&Prism.plugins.lineNumbers){var f=Prism.plugins.lineNumbers.getLine(u,i),e=Prism.plugins.lineNumbers.getLine(u,r);if(f){var s=f.offsetTop+b+"px";l.push(function(){t.style.top=s})}if(e){var c=e.offsetTop-f.offsetTop+e.offsetHeight+"px";l.push(function(){t.style.height=c})}}else l.push(function(){t.setAttribute("data-start",String(i));r>i&&t.setAttribute("data-end",String(r));t.style.top=(i-y-1)*g+b+"px";t.textContent=new Array(r-i+2).join(" \n")});l.push(function(){t.style.width=u.scrollWidth+"px"});l.push(function(){p.appendChild(t)})}});var k=u.id;if(v&&Prism.util.isActive(u,t)&&k){o(u,t)||l.push(function(){u.classList.add(t)});var tt=parseInt(u.getAttribute("data-start")||"1");i(".line-numbers-rows > span",u).forEach(function(n,t){var i=t+tt;n.onclick=function(){var n=k+"."+i;r=!1;location.hash=n;setTimeout(function(){r=!0},1)}})}return function(){l.forEach(s)}}};var e=0;Prism.hooks.add("before-sanity-check",function(n){var r=n.element.parentElement;if(u(r)){var t=0;i(".line-highlight",r).forEach(function(n){t+=n.textContent.length;n.parentNode.removeChild(n)});t&&/^(?: \n)+$/.test(n.code.slice(-t))&&(n.code=n.code.slice(0,-t))}});Prism.hooks.add("complete",function n(t){var i=t.element.parentElement;if(u(i)){clearTimeout(e);var r=Prism.plugins.lineNumbers,s=t.plugins&&t.plugins.lineNumbers;o(i,f)&&r&&!s?Prism.hooks.add("line-numbers",n):(Prism.plugins.lineHighlight.highlightLines(i)(),e=setTimeout(h,1))}});window.addEventListener("hashchange",h);window.addEventListener("resize",function(){i("pre").filter(u).map(function(n){return Prism.plugins.lineHighlight.highlightLines(n)}).forEach(s)})}function i(n,t){return Array.prototype.slice.call((t||document).querySelectorAll(n))}function o(n,t){return n.classList.contains(t)}function s(n){n()}function u(n){return!!(n&&/pre/i.test(n.nodeName)&&(n.hasAttribute("data-line")||n.id&&Prism.util.isActive(n,t)))}function h(){var n=location.hash.slice(1);i(".temporary.line-highlight").forEach(function(n){n.parentNode.removeChild(n)});var u=(n.match(/\.([\d,-]+)$/)||[,""])[1];if(u&&!document.getElementById(n)){var f=n.slice(0,n.lastIndexOf(".")),t=document.getElementById(f);t&&(t.hasAttribute("data-line")||t.setAttribute("data-line",""),Prism.plugins.lineHighlight.highlightLines(t,u,"temporary ")(),r&&document.querySelector(".temporary.line-highlight").scrollIntoView())}}}();!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var n="line-numbers",i=/\n(?!$)/g,u=Prism.plugins.lineNumbers={getLine:function(t,i){if("PRE"===t.tagName&&t.classList.contains(n)){var u=t.querySelector(".line-numbers-rows");if(u){var r=parseInt(t.getAttribute("data-start"),10)||1,f=r+(u.children.length-1);i<r&&(i=r);i>f&&(i=f);var e=i-r;return u.children[e]}}},resize:function(n){t([n])},assumeViewportIndependence:!0},r=void 0;window.addEventListener("resize",function(){u.assumeViewportIndependence&&r===window.innerWidth||(r=window.innerWidth,t(Array.prototype.slice.call(document.querySelectorAll("pre.line-numbers"))))});Prism.hooks.add("complete",function(r){if(r.code){var f=r.element,u=f.parentNode;if(u&&/pre/i.test(u.nodeName)&&!f.querySelector(".line-numbers-rows")&&Prism.util.isActive(f,n)){f.classList.remove(n);u.classList.add(n);var e,o=r.code.match(i),s=o?o.length+1:1,h=new Array(s+1).join("<span><\/span>");(e=document.createElement("span")).setAttribute("aria-hidden","true");e.className="line-numbers-rows";e.innerHTML=h;u.hasAttribute("data-start")&&(u.style.counterReset="linenumber "+(parseInt(u.getAttribute("data-start"),10)-1));r.element.appendChild(e);t([u]);Prism.hooks.run("line-numbers",r)}}});Prism.hooks.add("line-numbers",function(n){n.plugins=n.plugins||{};n.plugins.lineNumbers=!0})}function t(n){if(0!=(n=n.filter(function(n){var t,i=(t=n,t?window.getComputedStyle?getComputedStyle(t):t.currentStyle||null:null)["white-space"];return"pre-wrap"===i||"pre-line"===i})).length){var t=n.map(function(n){var r=n.querySelector("code"),u=n.querySelector(".line-numbers-rows");if(r&&u){var t=n.querySelector(".line-numbers-sizer"),f=r.textContent.split(i);t||((t=document.createElement("span")).className="line-numbers-sizer",r.appendChild(t));t.innerHTML="0";t.style.display="block";var e=t.getBoundingClientRect().height;return t.innerHTML="",{element:n,lines:f,lineHeights:[],oneLinerHeight:e,sizer:t}}}).filter(Boolean);t.forEach(function(n){var r=n.sizer,t=n.lines,i=n.lineHeights,u=n.oneLinerHeight;i[t.length-1]=void 0;t.forEach(function(n,t){if(n&&n.length>1){var f=r.appendChild(document.createElement("span"));f.style.display="block";f.textContent=n}else i[t]=u})});t.forEach(function(n){for(var r=n.sizer,i=n.lineHeights,u=0,t=0;t<i.length;t++)void 0===i[t]&&(i[t]=r.children[u++].getBoundingClientRect().height)});t.forEach(function(n){var t=n.sizer,i=n.element.querySelector(".line-numbers-rows");t.style.display="none";t.innerHTML="";n.lineHeights.forEach(function(n,t){i.children[t].style.height=n+"px"})})}}}();!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var t=[],n={},i=function(){};Prism.plugins.toolbar={};var r=Prism.plugins.toolbar.registerButton=function(i,r){var u;u="function"==typeof r?r:function(n){var t;return"function"==typeof r.onClick?((t=document.createElement("button")).type="button",t.addEventListener("click",function(){r.onClick.call(this,n)})):"string"==typeof r.url?(t=document.createElement("a")).href=r.url:t=document.createElement("span"),r.className&&t.classList.add(r.className),t.textContent=r.text,t};i in n?console.warn('There is a button with the key "'+i+'" registered already.'):t.push(n[i]=u)},u=Prism.plugins.toolbar.hook=function(r){var u=r.element.parentNode;if(u&&/pre/i.test(u.nodeName)&&!u.parentNode.classList.contains("code-toolbar")){var f=document.createElement("div");f.classList.add("code-toolbar");u.parentNode.insertBefore(f,u);f.appendChild(u);var e=document.createElement("div");e.classList.add("toolbar");var o=t,s=function(n){for(;n;){var t=n.getAttribute("data-toolbar-order");if(null!=t)return(t=t.trim()).length?t.split(/\s*,\s*/g):[];n=n.parentElement}}(r.element);s&&(o=s.map(function(t){return n[t]||i}));o.forEach(function(n){var i=n(r);if(i){var t=document.createElement("div");t.classList.add("toolbar-item");t.appendChild(i);e.appendChild(t)}});f.appendChild(e)}};r("label",function(n){var t=n.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-label")){var i,r,u=t.getAttribute("data-label");try{r=document.querySelector("template#"+u)}catch(n){}return r?i=r.content:(t.hasAttribute("data-url")?(i=document.createElement("a")).href=t.getAttribute("data-url"):i=document.createElement("span"),i.textContent=u),i}});Prism.hooks.add("complete",u)}}();!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document)if(Prism.plugins.toolbar){var n={none:"Plain text",plain:"Plain text",plaintext:"Plain text",text:"Plain text",txt:"Plain text",html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",rss:"RSS",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"ABNF",al:"AL",antlr4:"ANTLR4",g4:"ANTLR4",apacheconf:"Apache Configuration",apl:"APL",aql:"AQL",ino:"Arduino",arff:"ARFF",armasm:"ARM Assembly","arm-asm":"ARM Assembly",art:"Arturo",asciidoc:"AsciiDoc",adoc:"AsciiDoc",aspnet:"ASP.NET (C#)",asm6502:"6502 Assembly",asmatmel:"Atmel AVR Assembly",autohotkey:"AutoHotkey",autoit:"AutoIt",avisynth:"AviSynth",avs:"AviSynth","avro-idl":"Avro IDL",avdl:"Avro IDL",awk:"AWK",gawk:"GAWK",sh:"Shell",basic:"BASIC",bbcode:"BBcode",bbj:"BBj",bnf:"BNF",rbnf:"RBNF",bqn:"BQN",bsl:"BSL (1C:Enterprise)",oscript:"OneScript",csharp:"C#",cs:"C#",dotnet:"C#",cpp:"C++",cfscript:"CFScript",cfc:"CFScript",cil:"CIL",cilkc:"Cilk/C","cilk-c":"Cilk/C",cilkcpp:"Cilk/C++","cilk-cpp":"Cilk/C++",cilk:"Cilk/C++",cmake:"CMake",cobol:"COBOL",coffee:"CoffeeScript",conc:"Concurnas",csp:"Content-Security-Policy","css-extras":"CSS Extras",csv:"CSV",cue:"CUE",dataweave:"DataWeave",dax:"DAX",django:"Django/Jinja2",jinja2:"Django/Jinja2","dns-zone-file":"DNS zone file","dns-zone":"DNS zone file",dockerfile:"Docker",dot:"DOT (Graphviz)",gv:"DOT (Graphviz)",ebnf:"EBNF",editorconfig:"EditorConfig",ejs:"EJS",etlua:"Embedded Lua templating",erb:"ERB","excel-formula":"Excel Formula",xlsx:"Excel Formula",xls:"Excel Formula",fsharp:"F#","firestore-security-rules":"Firestore security rules",ftl:"FreeMarker Template Language",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",gap:"GAP (CAS)",gcode:"G-code",gdscript:"GDScript",gedcom:"GEDCOM",gettext:"gettext",po:"gettext",glsl:"GLSL",gn:"GN",gni:"GN","linker-script":"GNU Linker Script",ld:"GNU Linker Script","go-module":"Go module","go-mod":"Go module",graphql:"GraphQL",hbs:"Handlebars",hs:"Haskell",hcl:"HCL",hlsl:"HLSL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam","icu-message-format":"ICU Message Format",idr:"Idris",ignore:".ignore",gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",javastacktrace:"Java stack trace",jq:"JQ",jsdoc:"JSDoc","js-extras":"JS Extras",json:"JSON",webmanifest:"Web App Manifest",json5:"JSON5",jsonp:"JSONP",jsstacktrace:"JS stack trace","js-templates":"JS Templates",keepalived:"Keepalived Configure",kts:"Kotlin Script",kt:"Kotlin",kumir:"KuMir (КуМир)",kum:"KuMir (КуМир)",latex:"LaTeX",tex:"TeX",context:"ConTeXt",lilypond:"LilyPond",ly:"LilyPond",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",llvm:"LLVM IR",log:"Log file",lolcode:"LOLCODE",magma:"Magma (CAS)",md:"Markdown","markup-templating":"Markup templating",matlab:"MATLAB",maxscript:"MAXScript",mel:"MEL",metafont:"METAFONT",mongodb:"MongoDB",moon:"MoonScript",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",naniscript:"Naninovel Script",nani:"Naninovel Script",nasm:"NASM",neon:"NEON",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",objc:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",openqasm:"OpenQasm",qasm:"OpenQasm",parigp:"PARI/GP",objectpascal:"Object Pascal",psl:"PATROL Scripting Language",pcaxis:"PC-Axis",px:"PC-Axis",peoplecode:"PeopleCode",pcode:"PeopleCode",php:"PHP",phpdoc:"PHPDoc","php-extras":"PHP Extras","plant-uml":"PlantUML",plantuml:"PlantUML",plsql:"PL/SQL",powerquery:"PowerQuery",pq:"PowerQuery",mscript:"PowerQuery",powershell:"PowerShell",promql:"PromQL",properties:".properties",protobuf:"Protocol Buffers",purebasic:"PureBasic",pbfasm:"PureBasic",purs:"PureScript",py:"Python",qsharp:"Q#",qs:"Q#",q:"Q (kdb+ database)",qml:"QML",rkt:"Racket",cshtml:"Razor C#",razor:"Razor C#",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rpy:"Ren'py",res:"ReScript",rest:"reST (reStructuredText)",robotframework:"Robot Framework",robot:"Robot Framework",rb:"Ruby",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (SCSS)","shell-session":"Shell session","sh-session":"Shell session",shellsession:"Shell session",sml:"SML",smlnj:"SML/NJ",solidity:"Solidity (Ethereum)",sol:"Solidity (Ethereum)","solution-file":"Solution file",sln:"Solution file",soy:"Soy (Closure Template)",sparql:"SPARQL",rq:"SPARQL","splunk-spl":"Splunk SPL",sqf:"SQF: Status Quo Function (Arma 3)",sql:"SQL",stata:"Stata Ado",iecst:"Structured Text (IEC 61131-3)",supercollider:"SuperCollider",sclang:"SuperCollider",systemd:"Systemd configuration file","t4-templating":"T4 templating","t4-cs":"T4 Text Templates (C#)",t4:"T4 Text Templates (C#)","t4-vb":"T4 Text Templates (VB)",tap:"TAP",tt2:"Template Toolkit 2",toml:"TOML",trickle:"trickle",troy:"troy",trig:"TriG",ts:"TypeScript",tsconfig:"TSConfig",uscript:"UnrealScript",uc:"UnrealScript",uorazor:"UO Razor Script",uri:"URI",url:"URL",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vba:"VBA",vb:"Visual Basic",wasm:"WebAssembly","web-idl":"Web IDL",webidl:"Web IDL",wgsl:"WGSL",wiki:"Wiki markup",wolfram:"Wolfram language",nb:"Mathematica Notebook",wl:"Wolfram language",xeoracube:"XeoraCube","xml-doc":"XML doc (.net)",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML",yml:"YAML",yang:"YANG"};Prism.plugins.toolbar.registerButton("show-language",function(t){var r=t.element.parentNode;if(r&&/pre/i.test(r.nodeName)){var i,u=r.getAttribute("data-language")||n[t.language]||((i=t.language)?(i.substring(0,1).toUpperCase()+i.substring(1)).replace(/s(?=cript)/,"S"):i);if(u){var f=document.createElement("span");return f.textContent=u,f}}})}else console.warn("Show Languages plugin loaded before Toolbar plugin.")}() </script><nav id='js-culture-links' class='-dn'><a href='https://www.progress.com/blogs/create-windows-machine-builds-with-packer' data-culture='en'> - Create Windows Machine Builds with Packer</a><a href='https://www.progress.com/nl/blogs' data-culture='nl'>Nederlands - Weblogs</a><a href='https://www.progress.com/fr/blogs' data-culture='fr'> - Blogues</a><a href='https://www.progress.com/de/blogs' data-culture='de'>Deutsch - Blogs & Blogs</a><a href='https://www.progress.com/jp/blogs/create-windows-machine-builds-with-packer' class='is-active' data-culture='ja'>日本語 - Packer で Windows マシンビルドを作成する</a><a href='https://www.progress.com/es/blogs' data-culture='es'> - Blogs</a><a href='https://www.progress.com/tw/blogs' data-culture='zh-TW'> - Blogs</a><a href='https://www.progress.com/pt/blogs' data-culture='pt'> - Blogs</a></nav><script type="text/javascript"> window.addEventListener("DOMContentLoaded",()=>{const n=document.querySelector(`.js-topics a[href="${window.location.pathname}"]`),t=document.querySelectorAll('.js-topics [class*="col-"]').length==1&&!!n;n&&n.parentNode.remove();t&&document.querySelector(".js-topics").previousElementSibling.remove();window.setTimeout(()=>{window.dispatchEvent(new Event("resize"))},900)}) </script> <script type="text/javascript" defer src='https://d117h1jjiq768j.cloudfront.net/jsbundle/browsersession?v=tcPOfRs72PHBT4ETxfZH-MdC4rhmdlgJ9r1ORpYO_0Q1'></script> </body> </html>