import{s as $a,f as w,n as xa,o as Ca}from"../chunks/scheduler.37c15a92.js";import{S as Ja,i as Ua,g as a,s as i,r as u,A as ja,h as r,f as l,c as s,j as va,u as p,x as o,k as y,y as La,a as n,v as m,d as g,t as f,w as h}from"../chunks/index.7cb9c9b8.js";import{C as M}from"../chunks/CodeBlock.a6d3f852.js";import{C as Ha}from"../chunks/CourseFloatingBanner.2c4a7381.js";import{H as c,E as _a}from"../chunks/EditOnGithub.858acfec.js";function Ia(Ii){let b,Ot,qt,Kt,T,el,d,tl,v,Wi="We learned what ML-Agents is and how it works. We also studied the two environments we’re going to use. Now we’re ready to train our agents!",ll,$,ki,nl,x,Gi=`To validate this hands-on for the certification process, you <strong>just need to push your trained models to the Hub.</strong>
There are <strong>no minimum results to attain</strong> in order to validate this Hands On. But if you want to get nice results, you can try to reach the following:`,il,C,Zi='<li>For <a href="https://huggingface.co/spaces/unity/ML-Agents-Pyramids" rel="nofollow">Pyramids</a>: Mean Reward = 1.75</li> <li>For <a href="https://huggingface.co/spaces/ThomasSimonini/ML-Agents-SnowballTarget" rel="nofollow">SnowballTarget</a>: Mean Reward = 15 or 30 targets shoot in an episode.</li>',sl,J,Pi='For more information about the certification process, check this section 👉 <a href="https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process" rel="nofollow">https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process</a>',al,U,Ai="<strong>To start the hands-on, click on Open In Colab button</strong> 👇 :",rl,j,Bi='<a href="https://colab.research.google.com/github/huggingface/deep-rl-class/blob/master/notebooks/unit5/unit5.ipynb" rel="nofollow"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>',ol,L,Si="We strongly <strong>recommend students use Google Colab for the hands-on exercises</strong> instead of running them on their personal computers.",ul,H,zi="By using Google Colab, <strong>you can focus on learning and experimenting without worrying about the technical aspects</strong> of setting up your environments.",pl,_,ml,I,Yi,gl,W,Xi="In this notebook, you’ll learn about ML-Agents and train two agents.",fl,k,Vi="<li>The first one will learn to <strong>shoot snowballs onto spawning targets</strong>.</li> <li>The second needs to press a button to spawn a pyramid, then navigate to the pyramid, knock it over, <strong>and move to the gold brick at the top</strong>. To do that, it will need to explore its environment, and we will use a technique called curiosity.</li>",hl,G,Ri="After that, you’ll be able <strong>to watch your agents playing directly on your browser</strong>.",yl,Z,Fi='For more information about the certification process, check this section 👉 <a href="https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process" rel="nofollow">https://huggingface.co/deep-rl-course/en/unit0/introduction#certification-process</a>',cl,P,Ni="⬇️ Here is an example of what <strong>you will achieve at the end of this unit.</strong> ⬇️",Ml,A,Qi,wl,B,Ei,bl,S,Tl,z,qi='<li><a href="https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Learning-Environment-Examples.md#pyramids" rel="nofollow">Pyramids</a></li> <li>SnowballTarget</li>',dl,Y,vl,X,Di='<li><a href="https://github.com/Unity-Technologies/ml-agents" rel="nofollow">ML-Agents</a></li>',$l,V,Oi='We’re constantly trying to improve our tutorials, so <strong>if you find some issues in this notebook</strong>, please <a href="https://github.com/huggingface/deep-rl-class/issues" rel="nofollow">open an issue on the GitHub Repo</a>.',xl,R,Cl,F,Ki="At the end of the notebook, you will:",Jl,N,es="<li>Understand how <strong>ML-Agents</strong> works and the environment library.</li> <li>Be able to <strong>train agents in Unity Environments</strong>.</li>",Ul,Q,jl,E,ts="Before diving into the notebook, you need to:",Ll,q,ls='🔲 📚 <strong>Study <a href="https://huggingface.co/deep-rl-course/unit5/introduction" rel="nofollow">what ML-Agents is and how it works by reading Unit 5</a></strong>  🤗',Hl,D,_l,O,Il,K,ns="<li>To <strong>accelerate the agent’s training, we’ll use a GPU</strong>. To do that, go to <code>Runtime &gt; Change Runtime type</code></li>",Wl,ee,is,kl,te,ss="<li><code>Hardware Accelerator &gt; GPU</code></li>",Gl,le,as,Zl,ne,Pl,ie,rs="<li>We need to clone the repository that <strong>contains the experimental version of the library that allows you to push your trained agent to the Hub.</strong></li>",Al,se,Bl,ae,Sl,re,zl,oe,os=`If you need a refresher on how this environment works check this section 👉
<a href="https://huggingface.co/deep-rl-course/unit5/snowball-target" rel="nofollow">https://huggingface.co/deep-rl-course/unit5/snowball-target</a>`,Yl,ue,Xl,pe,us="<li>Our environment executable is in a zip file.</li> <li>We need to download it and place it to <code>./training-envs-executables/linux/</code></li> <li>We use a linux executable because we use colab, and colab machines OS is Ubuntu (linux)</li>",Vl,me,Rl,ge,ps='We downloaded the file SnowballTarget.zip from <a href="https://github.com/huggingface/Snowball-Target" rel="nofollow">https://github.com/huggingface/Snowball-Target</a> using <code>wget</code>',Fl,fe,Nl,he,ms="We unzip the executable.zip file",Ql,ye,El,ce,gs="Make sure your file is accessible",ql,Me,Dl,we,Ol,be,fs="<li>In ML-Agents, you define the <strong>training hyperparameters in config.yaml files.</strong></li>",Kl,Te,hs='There are multiple hyperparameters. To understand them better, you should read the explanation for each one in <a href="https://github.com/Unity-Technologies/ml-agents/blob/release_20_docs/docs/Training-Configuration-File.md" rel="nofollow">the documentation</a>',en,de,ys="You need to create a <code>SnowballTarget.yaml</code> config file in ./content/ml-agents/config/ppo/",tn,ve,cs="We’ll give you a preliminary version of this config (to copy and paste into your <code>SnowballTarget.yaml file</code>), <strong>but you should modify it</strong>.",ln,$e,nn,xe,Ms,sn,Ce,ws,an,Je,bs='As an experiment, try to modify some other hyperparameters. Unity provides very <a href="https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Training-Configuration-File.md" rel="nofollow">good documentation explaining each of them here</a>.',rn,Ue,Ts="Now that you’ve created the config file and understand what most hyperparameters do, we’re ready to train our agent 🔥.",on,je,un,Le,ds="To train our agent, we need to <strong>launch mlagents-learn and select the executable containing the environment.</strong>",pn,He,vs="We define four parameters:",mn,_e,$s="<li><code>mlagents-learn &lt;config&gt;</code>: the path where the hyperparameter config file is.</li> <li><code>--env</code>: where the environment executable is.</li> <li><code>--run_id</code>: the name you want to give to your training run id.</li> <li><code>--no-graphics</code>: to not launch the visualization during the training.</li>",gn,Ie,xs,fn,We,Cs="Train the model and use the <code>--resume</code> flag to continue training in case of interruption.",hn,ke,Js="<p>It will fail the first time if and when you use <code>--resume</code>. Try rerunning the block to bypass the error.</p>",yn,Ge,Us="The training will take 10 to 35min depending on your config. Go take a ☕️ you deserve it 🤗.",cn,Ze,Mn,Pe,wn,Ae,js="<li>Now that we’ve trained our agent, we’re <strong>ready to push it to the Hub and visualize it playing on your browser🔥.</strong></li>",bn,Be,Ls="To be able to share your model with the community, there are three more steps to follow:",Tn,Se,Hs='1️⃣ (If it’s not already done) create an account to HF ➡ <a href="https://huggingface.co/join" rel="nofollow">https://huggingface.co/join</a>',dn,ze,_s="2️⃣ Sign in and store your authentication token from the Hugging Face website.",vn,Ye,Is='<li>Create a new token (<a href="https://huggingface.co/settings/tokens" rel="nofollow">https://huggingface.co/settings/tokens</a>) <strong>with write role</strong></li>',$n,Xe,Ws,xn,Ve,ks="<li>Copy the token</li> <li>Run the cell below and paste the token</li>",Cn,Re,Jn,Fe,Gs="If you don’t want to use Google Colab or a Jupyter Notebook, you need to use this command instead: <code>huggingface-cli login</code>",Un,Ne,Zs="Then we need to run <code>mlagents-push-to-hf</code>.",jn,Qe,Ps="And we define four parameters:",Ln,Ee,As=`<li><code>--run-id</code>: the name of the training run id.</li> <li><code>--local-dir</code>: where the agent was saved, it’s results/&lt;run_id name&gt;, so in my case results/First Training.</li> <li><code>--repo-id</code>: the name of the Hugging Face repo you want to create or update. It’s always &lt;your huggingface username&gt;/&lt;the repo name&gt;
If the repo does not exist <strong>it will be created automatically</strong></li> <li><code>--commit-message</code>: since HF repos are git repositories you need to give a commit message.</li>`,Hn,qe,Bs,_n,De,Ss="For instance:",In,Oe,zs="<code>mlagents-push-to-hf --run-id=&quot;SnowballTarget1&quot; --local-dir=&quot;./results/SnowballTarget1&quot; --repo-id=&quot;ThomasSimonini/ppo-SnowballTarget&quot; --commit-message=&quot;First Push&quot;</code>",Wn,Ke,kn,et,Ys="If everything worked you should see this at the end of the process (but with a different url 😆) :",Gn,tt,Zn,lt,Xs="It’s the link to your model. It contains a model card that explains how to use it, your Tensorboard, and your config file. <strong>What’s awesome is that it’s a git repository, which means you can have different commits, update your repository with a new push, etc.</strong>",Pn,nt,Vs="But now comes the best: <strong>being able to visualize your agent online 👀.</strong>",An,it,Bn,st,Rs="This step it’s simple:",Sn,at,Fs='<li><p>Go here: <a href="https://huggingface.co/spaces/ThomasSimonini/ML-Agents-SnowballTarget" rel="nofollow">https://huggingface.co/spaces/ThomasSimonini/ML-Agents-SnowballTarget</a></p></li> <li><p>Launch the game and put it in full screen by clicking on the bottom right button</p></li>',zn,rt,Ns,Yn,ot,Qs="<li><p>In step 1, type your username (your username is case sensitive: for instance, my username is ThomasSimonini not thomassimonini or ThOmasImoNInI) and click on the search button.</p></li> <li><p>In step 2, select your model repository.</p></li> <li><p>In step 3, <strong>choose which model you want to replay</strong>:</p></li>",Xn,ut,Es="<li>I have multiple ones, since we saved a model every 500000 timesteps.</li> <li>But since I want the most recent one, I choose <code>SnowballTarget.onnx</code></li>",Vn,pt,qs="👉 It’s good <strong>to try with different models steps to see the improvement of the agent.</strong>",Rn,mt,Ds="And don’t hesitate to share the best score your agent gets on discord in the #rl-i-made-this channel 🔥",Fn,gt,Os="Now let’s try a more challenging environment called Pyramids.",Nn,ft,Qn,ht,En,yt,Ks="<li>Our environment executable is in a zip file.</li> <li>We need to download it and place it into <code>./training-envs-executables/linux/</code></li> <li>We use a linux executable because we’re using colab, and the colab machine’s OS is Ubuntu (linux)</li>",qn,ct,ea='We downloaded the file Pyramids.zip from from <a href="https://huggingface.co/spaces/unity/ML-Agents-Pyramids/resolve/main/Pyramids.zip" rel="nofollow">https://huggingface.co/spaces/unity/ML-Agents-Pyramids/resolve/main/Pyramids.zip</a> using <code>wget</code>',Dn,Mt,On,wt,ta="Unzip it",Kn,bt,ei,Tt,la="Make sure your file is accessible",ti,dt,li,vt,ni,$t,na='<li>Contrary to the first environment, which was a custom one, <strong>Pyramids was made by the Unity team</strong>.</li> <li>So the PyramidsRND config file already exists and is in ./content/ml-agents/config/ppo/PyramidsRND.yaml</li> <li>You might ask why “RND” is in PyramidsRND. RND stands for <em>random network distillation</em> it’s a way to generate curiosity rewards. If you want to know more about that, we wrote an article explaining this technique: <a href="https://medium.com/data-from-the-trenches/curiosity-driven-learning-through-random-network-distillation-488ffd8e5938" rel="nofollow">https://medium.com/data-from-the-trenches/curiosity-driven-learning-through-random-network-distillation-488ffd8e5938</a></li>',ii,xt,ia="For this training, we’ll modify one thing:",si,Ct,sa=`<li>The total training steps hyperparameter is too high since we can hit the benchmark (mean reward = 1.75) in only 1M training steps.
👉 To do that, we go to config/ppo/PyramidsRND.yaml,<strong>and change max_steps to 1000000.</strong></li>`,ai,Jt,aa,ri,Ut,ra='As an experiment, you should also try to modify some other hyperparameters. Unity provides very <a href="https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Training-Configuration-File.md" rel="nofollow">good documentation explaining each of them here</a>.',oi,jt,oa="We’re now ready to train our agent 🔥.",ui,Lt,pi,Ht,ua="The training will take 30 to 45min depending on your machine, go take a ☕️ you deserve it 🤗.",mi,_t,gi,It,fi,Wt,pa="<li>Now that we trained our agent, we’re <strong>ready to push it to the Hub to be able to visualize it playing on your browser🔥.</strong></li>",hi,kt,yi,Gt,ci,Zt,ma='👉 <a href="https://huggingface.co/spaces/unity/ML-Agents-Pyramids" rel="nofollow">https://huggingface.co/spaces/unity/ML-Agents-Pyramids</a>',Mi,Pt,wi,At,ga="Now that you know how to train an agent using MLAgents, <strong>why not try another environment?</strong>",bi,Bt,fa="MLAgents provides 17 different environments and we’re building some custom ones. The best way to learn is to try things on your own, have fun.",Ti,St,ha='<img src="https://miro.medium.com/max/1400/0*xERdThTRRM2k_U9f.png" alt="cover"/>',di,zt,ya='You have the full list of the one currently available environments on Hugging Face here 👉 <a href="https://github.com/huggingface/ml-agents#the-environments" rel="nofollow">https://github.com/huggingface/ml-agents#the-environments</a>',vi,Yt,ca='For the demos to visualize your agent 👉 <a href="https://huggingface.co/unity" rel="nofollow">https://huggingface.co/unity</a>',$i,Xt,Ma="For now we have integrated:",xi,Vt,wa='<li><a href="https://huggingface.co/spaces/unity/ML-Agents-Worm" rel="nofollow">Worm</a> demo where you teach a <strong>worm to crawl</strong>.</li> <li><a href="https://huggingface.co/spaces/unity/ML-Agents-Walker" rel="nofollow">Walker</a> demo where you teach an agent <strong>to walk towards a goal</strong>.</li>',Ci,Rt,ba="That’s all for today. Congrats on finishing this tutorial!",Ji,Ft,Ta="The best way to learn is to practice and try stuff. Why not try another environment? ML-Agents has 18 different environments, but you can also create your own. Check the documentation and have fun!",Ui,Nt,da="See you on Unit 6 🔥,",ji,Qt,Li,Et,Hi,Dt,_i;return T=new c({props:{title:"Hands-on",local:"hands-on",headingTag:"h1"}}),d=new Ha({props:{classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/deep-rl-class/blob/main/notebooks/unit5/unit5.ipynb"}],askForHelpUrl:"http://hf.co/join/discord"}}),_=new c({props:{title:"Unit 5: An Introduction to ML-Agents",local:"unit-5-an-introduction-to-ml-agents",headingTag:"h1"}}),S=new c({props:{title:"🎮 Environments:",local:"-environments",headingTag:"h3"}}),Y=new c({props:{title:"📚 RL-Library:",local:"-rl-library",headingTag:"h3"}}),R=new c({props:{title:"Objectives of this notebook 🏆",local:"objectives-of-this-notebook-",headingTag:"h2"}}),Q=new c({props:{title:"Prerequisites 🏗️",local:"prerequisites-",headingTag:"h2"}}),D=new c({props:{title:"Let’s train our agents 🚀",local:"lets-train-our-agents-",headingTag:"h1"}}),O=new c({props:{title:"Set the GPU 💪",local:"set-the-gpu-",headingTag:"h2"}}),ne=new c({props:{title:"Clone the repository and install the dependencies 🔽",local:"clone-the-repository-and-install-the-dependencies-",headingTag:"h2"}}),se=new M({props:{code:"JTIzJTIwQ2xvbmUlMjB0aGUlMjByZXBvc2l0b3J5JTBBZ2l0JTIwY2xvbmUlMjAtLWRlcHRoJTIwMSUyMGh0dHBzJTNBJTJGJTJGZ2l0aHViLmNvbSUyRlVuaXR5LVRlY2hub2xvZ2llcyUyRm1sLWFnZW50cw==",highlighted:`<span class="hljs-comment"># Clone the repository</span>
git <span class="hljs-built_in">clone</span> --depth 1 https://github.com/Unity-Technologies/ml-agents`,wrap:!1}}),ae=new M({props:{code:"JTIzJTIwR28lMjBpbnNpZGUlMjB0aGUlMjByZXBvc2l0b3J5JTIwYW5kJTIwaW5zdGFsbCUyMHRoZSUyMHBhY2thZ2UlMEFjZCUyMG1sLWFnZW50cyUwQXBpcCUyMGluc3RhbGwlMjAtZSUyMC4lMkZtbC1hZ2VudHMtZW52cyUwQXBpcCUyMGluc3RhbGwlMjAtZSUyMC4lMkZtbC1hZ2VudHM=",highlighted:`<span class="hljs-comment"># Go inside the repository and install the package</span>
<span class="hljs-built_in">cd</span> ml-agents
pip install -e ./ml-agents-envs
pip install -e ./ml-agents`,wrap:!1}}),re=new c({props:{title:"SnowballTarget ⛄",local:"snowballtarget-",headingTag:"h2"}}),ue=new c({props:{title:"Download and move the environment zip file in ./training-envs-executables/linux/",local:"download-and-move-the-environment-zip-file-in-training-envs-executableslinux",headingTag:"h3"}}),me=new M({props:{code:"JTIzJTIwSGVyZSUyQyUyMHdlJTIwY3JlYXRlJTIwdHJhaW5pbmctZW52cy1leGVjdXRhYmxlcyUyMGFuZCUyMGxpbnV4JTBBbWtkaXIlMjAuJTJGdHJhaW5pbmctZW52cy1leGVjdXRhYmxlcyUwQW1rZGlyJTIwLiUyRnRyYWluaW5nLWVudnMtZXhlY3V0YWJsZXMlMkZsaW51eA==",highlighted:`<span class="hljs-comment"># Here, we create training-envs-executables and linux</span>
<span class="hljs-built_in">mkdir</span> ./training-envs-executables
<span class="hljs-built_in">mkdir</span> ./training-envs-executables/linux`,wrap:!1}}),fe=new M({props:{code:"d2dldCUyMCUyMmh0dHBzJTNBJTJGJTJGZ2l0aHViLmNvbSUyRmh1Z2dpbmdmYWNlJTJGU25vd2JhbGwtVGFyZ2V0JTJGcmF3JTJGbWFpbiUyRlNub3diYWxsVGFyZ2V0LnppcCUyMiUyMC1PJTIwLiUyRnRyYWluaW5nLWVudnMtZXhlY3V0YWJsZXMlMkZsaW51eCUyRlNub3diYWxsVGFyZ2V0LnppcA==",highlighted:'wget <span class="hljs-string">&quot;https://github.com/huggingface/Snowball-Target/raw/main/SnowballTarget.zip&quot;</span> -O ./training-envs-executables/linux/SnowballTarget.zip',wrap:!1}}),ye=new M({props:{code:"dW56aXAlMjAtZCUyMC4lMkZ0cmFpbmluZy1lbnZzLWV4ZWN1dGFibGVzJTJGbGludXglMkYlMjAuJTJGdHJhaW5pbmctZW52cy1leGVjdXRhYmxlcyUyRmxpbnV4JTJGU25vd2JhbGxUYXJnZXQuemlw",highlighted:"unzip -d ./training-envs-executables/linux/ ./training-envs-executables/linux/SnowballTarget.zip",wrap:!1}}),Me=new M({props:{code:"Y2htb2QlMjAtUiUyMDc1NSUyMC4lMkZ0cmFpbmluZy1lbnZzLWV4ZWN1dGFibGVzJTJGbGludXglMkZTbm93YmFsbFRhcmdldA==",highlighted:'<span class="hljs-built_in">chmod</span> -R 755 ./training-envs-executables/linux/SnowballTarget',wrap:!1}}),we=new c({props:{title:"Define the SnowballTarget config file",local:"define-the-snowballtarget-config-file",headingTag:"h3"}}),$e=new M({props:{code:"YmVoYXZpb3JzJTNBJTBBJTIwJTIwU25vd2JhbGxUYXJnZXQlM0ElMEElMjAlMjAlMjAlMjB0cmFpbmVyX3R5cGUlM0ElMjBwcG8lMEElMjAlMjAlMjAlMjBzdW1tYXJ5X2ZyZXElM0ElMjAxMDAwMCUwQSUyMCUyMCUyMCUyMGtlZXBfY2hlY2twb2ludHMlM0ElMjAxMCUwQSUyMCUyMCUyMCUyMGNoZWNrcG9pbnRfaW50ZXJ2YWwlM0ElMjA1MDAwMCUwQSUyMCUyMCUyMCUyMG1heF9zdGVwcyUzQSUyMDIwMDAwMCUwQSUyMCUyMCUyMCUyMHRpbWVfaG9yaXpvbiUzQSUyMDY0JTBBJTIwJTIwJTIwJTIwdGhyZWFkZWQlM0ElMjB0cnVlJTBBJTIwJTIwJTIwJTIwaHlwZXJwYXJhbWV0ZXJzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwbGVhcm5pbmdfcmF0ZSUzQSUyMDAuMDAwMyUwQSUyMCUyMCUyMCUyMCUyMCUyMGxlYXJuaW5nX3JhdGVfc2NoZWR1bGUlM0ElMjBsaW5lYXIlMEElMjAlMjAlMjAlMjAlMjAlMjBiYXRjaF9zaXplJTNBJTIwMTI4JTBBJTIwJTIwJTIwJTIwJTIwJTIwYnVmZmVyX3NpemUlM0ElMjAyMDQ4JTBBJTIwJTIwJTIwJTIwJTIwJTIwYmV0YSUzQSUyMDAuMDA1JTBBJTIwJTIwJTIwJTIwJTIwJTIwZXBzaWxvbiUzQSUyMDAuMiUwQSUyMCUyMCUyMCUyMCUyMCUyMGxhbWJkJTNBJTIwMC45NSUwQSUyMCUyMCUyMCUyMCUyMCUyMG51bV9lcG9jaCUzQSUyMDMlMEElMjAlMjAlMjAlMjBuZXR3b3JrX3NldHRpbmdzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwbm9ybWFsaXplJTNBJTIwZmFsc2UlMEElMjAlMjAlMjAlMjAlMjAlMjBoaWRkZW5fdW5pdHMlM0ElMjAyNTYlMEElMjAlMjAlMjAlMjAlMjAlMjBudW1fbGF5ZXJzJTNBJTIwMiUwQSUyMCUyMCUyMCUyMCUyMCUyMHZpc19lbmNvZGVfdHlwZSUzQSUyMHNpbXBsZSUwQSUyMCUyMCUyMCUyMHJld2FyZF9zaWduYWxzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwZXh0cmluc2ljJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZ2FtbWElM0ElMjAwLjk5JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3RyZW5ndGglM0ElMjAxLjA=",highlighted:`<span class="hljs-attr">behaviors:</span>
  <span class="hljs-attr">SnowballTarget:</span>
    <span class="hljs-attr">trainer_type:</span> <span class="hljs-string">ppo</span>
    <span class="hljs-attr">summary_freq:</span> <span class="hljs-number">10000</span>
    <span class="hljs-attr">keep_checkpoints:</span> <span class="hljs-number">10</span>
    <span class="hljs-attr">checkpoint_interval:</span> <span class="hljs-number">50000</span>
    <span class="hljs-attr">max_steps:</span> <span class="hljs-number">200000</span>
    <span class="hljs-attr">time_horizon:</span> <span class="hljs-number">64</span>
    <span class="hljs-attr">threaded:</span> <span class="hljs-literal">true</span>
    <span class="hljs-attr">hyperparameters:</span>
      <span class="hljs-attr">learning_rate:</span> <span class="hljs-number">0.0003</span>
      <span class="hljs-attr">learning_rate_schedule:</span> <span class="hljs-string">linear</span>
      <span class="hljs-attr">batch_size:</span> <span class="hljs-number">128</span>
      <span class="hljs-attr">buffer_size:</span> <span class="hljs-number">2048</span>
      <span class="hljs-attr">beta:</span> <span class="hljs-number">0.005</span>
      <span class="hljs-attr">epsilon:</span> <span class="hljs-number">0.2</span>
      <span class="hljs-attr">lambd:</span> <span class="hljs-number">0.95</span>
      <span class="hljs-attr">num_epoch:</span> <span class="hljs-number">3</span>
    <span class="hljs-attr">network_settings:</span>
      <span class="hljs-attr">normalize:</span> <span class="hljs-literal">false</span>
      <span class="hljs-attr">hidden_units:</span> <span class="hljs-number">256</span>
      <span class="hljs-attr">num_layers:</span> <span class="hljs-number">2</span>
      <span class="hljs-attr">vis_encode_type:</span> <span class="hljs-string">simple</span>
    <span class="hljs-attr">reward_signals:</span>
      <span class="hljs-attr">extrinsic:</span>
        <span class="hljs-attr">gamma:</span> <span class="hljs-number">0.99</span>
        <span class="hljs-attr">strength:</span> <span class="hljs-number">1.0</span>`,wrap:!1}}),je=new c({props:{title:"Train the agent",local:"train-the-agent",headingTag:"h3"}}),Ze=new M({props:{code:"bWxhZ2VudHMtbGVhcm4lMjAuJTJGY29uZmlnJTJGcHBvJTJGU25vd2JhbGxUYXJnZXQueWFtbCUyMC0tZW52JTNELiUyRnRyYWluaW5nLWVudnMtZXhlY3V0YWJsZXMlMkZsaW51eCUyRlNub3diYWxsVGFyZ2V0JTJGU25vd2JhbGxUYXJnZXQlMjAtLXJ1bi1pZCUzRCUyMlNub3diYWxsVGFyZ2V0MSUyMiUyMC0tbm8tZ3JhcGhpY3M=",highlighted:'mlagents-learn ./config/ppo/SnowballTarget.yaml --<span class="hljs-built_in">env</span>=./training-envs-executables/linux/SnowballTarget/SnowballTarget --run-id=<span class="hljs-string">&quot;SnowballTarget1&quot;</span> --no-graphics',wrap:!1}}),Pe=new c({props:{title:"Push the agent to the Hugging Face Hub",local:"push-the-agent-to-the-hugging-face-hub",headingTag:"h3"}}),Re=new M({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

notebook_login()`,wrap:!1}}),Ke=new M({props:{code:"bWxhZ2VudHMtcHVzaC10by1oZiUyMCUyMC0tcnVuLWlkJTNEJTIwJTIzJTIwQWRkJTIweW91ciUyMHJ1biUyMGlkJTIwJTIwLS1sb2NhbC1kaXIlM0QlMjAlMjMlMjBZb3VyJTIwbG9jYWwlMjBkaXIlMjAlMjAtLXJlcG8taWQlM0QlMjAlMjMlMjBZb3VyJTIwcmVwbyUyMGlkJTIwJTIwLS1jb21taXQtbWVzc2FnZSUzRCUyMCUyMyUyMFlvdXIlMjBjb21taXQlMjBtZXNzYWdl",highlighted:'mlagents-push-to-hf  --run-<span class="hljs-built_in">id</span>= <span class="hljs-comment"># Add your run id  --local-dir= # Your local dir  --repo-id= # Your repo id  --commit-message= # Your commit message</span>',wrap:!1}}),tt=new M({props:{code:"WW91ciUyMG1vZGVsJTIwaXMlMjBwdXNoZWQlMjB0byUyMHRoZSUyMGh1Yi4lMjBZb3UlMjBjYW4lMjB2aWV3JTIweW91ciUyMG1vZGVsJTIwaGVyZSUzQSUyMGh0dHBzJTNBJTJGJTJGaHVnZ2luZ2ZhY2UuY28lMkZUaG9tYXNTaW1vbmluaSUyRnBwby1Tbm93YmFsbFRhcmdldA==",highlighted:'Your model is pushed to the hub. You can view your model here: https:<span class="hljs-regexp">//</span>huggingface.co<span class="hljs-regexp">/ThomasSimonini/</span>ppo-SnowballTarget',wrap:!1}}),it=new c({props:{title:"Watch your agent playing 👀",local:"watch-your-agent-playing-",headingTag:"h3"}}),ft=new c({props:{title:"Pyramids 🏆",local:"pyramids-",headingTag:"h2"}}),ht=new c({props:{title:"Download and move the environment zip file in ./training-envs-executables/linux/",local:"download-and-move-the-environment-zip-file-in-training-envs-executableslinux",headingTag:"h3"}}),Mt=new M({props:{code:"d2dldCUyMCUyMmh0dHBzJTNBJTJGJTJGaHVnZ2luZ2ZhY2UuY28lMkZzcGFjZXMlMkZ1bml0eSUyRk1MLUFnZW50cy1QeXJhbWlkcyUyRnJlc29sdmUlMkZtYWluJTJGUHlyYW1pZHMuemlwJTIyJTIwLU8lMjAuJTJGdHJhaW5pbmctZW52cy1leGVjdXRhYmxlcyUyRmxpbnV4JTJGUHlyYW1pZHMuemlw",highlighted:'wget <span class="hljs-string">&quot;https://huggingface.co/spaces/unity/ML-Agents-Pyramids/resolve/main/Pyramids.zip&quot;</span> -O ./training-envs-executables/linux/Pyramids.<span class="hljs-built_in">zip</span>',wrap:!1}}),bt=new M({props:{code:"dW56aXAlMjAtZCUyMC4lMkZ0cmFpbmluZy1lbnZzLWV4ZWN1dGFibGVzJTJGbGludXglMkYlMjAuJTJGdHJhaW5pbmctZW52cy1leGVjdXRhYmxlcyUyRmxpbnV4JTJGUHlyYW1pZHMuemlw",highlighted:'unzip -d ./training-envs-executables/linux/ ./training-envs-executables/linux/Pyramids.<span class="hljs-built_in">zip</span>',wrap:!1}}),dt=new M({props:{code:"Y2htb2QlMjAtUiUyMDc1NSUyMC4lMkZ0cmFpbmluZy1lbnZzLWV4ZWN1dGFibGVzJTJGbGludXglMkZQeXJhbWlkcyUyRlB5cmFtaWRz",highlighted:'<span class="hljs-built_in">chmod</span> -R 755 ./training-envs-executables/linux/Pyramids/Pyramids',wrap:!1}}),vt=new c({props:{title:"Modify the PyramidsRND config file",local:"modify-the-pyramidsrnd-config-file",headingTag:"h3"}}),Lt=new c({props:{title:"Train the agent",local:"train-the-agent",headingTag:"h3"}}),_t=new M({props:{code:"bWxhZ2VudHMtbGVhcm4lMjAuJTJGY29uZmlnJTJGcHBvJTJGUHlyYW1pZHNSTkQueWFtbCUyMC0tZW52JTNELiUyRnRyYWluaW5nLWVudnMtZXhlY3V0YWJsZXMlMkZsaW51eCUyRlB5cmFtaWRzJTJGUHlyYW1pZHMlMjAtLXJ1bi1pZCUzRCUyMlB5cmFtaWRzJTIwVHJhaW5pbmclMjIlMjAtLW5vLWdyYXBoaWNz",highlighted:'mlagents-learn ./config/ppo/PyramidsRND.yaml --env=./training-envs-executables/linux/Pyramids/Pyramids --run-<span class="hljs-built_in">id</span>=<span class="hljs-string">&quot;Pyramids Training&quot;</span> --no-graphics',wrap:!1}}),It=new c({props:{title:"Push the agent to the Hugging Face Hub",local:"push-the-agent-to-the-hugging-face-hub",headingTag:"h3"}}),kt=new M({props:{code:"bWxhZ2VudHMtcHVzaC10by1oZiUyMCUyMC0tcnVuLWlkJTNEJTIwJTIzJTIwQWRkJTIweW91ciUyMHJ1biUyMGlkJTIwJTIwLS1sb2NhbC1kaXIlM0QlMjAlMjMlMjBZb3VyJTIwbG9jYWwlMjBkaXIlMjAlMjAtLXJlcG8taWQlM0QlMjAlMjMlMjBZb3VyJTIwcmVwbyUyMGlkJTIwJTIwLS1jb21taXQtbWVzc2FnZSUzRCUyMCUyMyUyMFlvdXIlMjBjb21taXQlMjBtZXNzYWdl",highlighted:'mlagents-push-to-hf  --run-<span class="hljs-built_in">id</span>= <span class="hljs-comment"># Add your run id  --local-dir= # Your local dir  --repo-id= # Your repo id  --commit-message= # Your commit message</span>',wrap:!1}}),Gt=new c({props:{title:"Watch your agent playing 👀",local:"watch-your-agent-playing-",headingTag:"h3"}}),Pt=new c({props:{title:"🎁 Bonus: Why not train on another environment?",local:"-bonus-why-not-train-on-another-environment",headingTag:"h3"}}),Qt=new c({props:{title:"Keep Learning, Stay awesome 🤗",local:"keep-learning-stay-awesome-",headingTag:"h2"}}),Et=new _a({props:{source:"https://github.com/huggingface/deep-rl-class/blob/main/units/en/unit5/hands-on.mdx"}}),{c(){b=a("meta"),Ot=i(),qt=a("p"),Kt=i(),u(T.$$.fragment),el=i(),u(d.$$.fragment),tl=i(),v=a("p"),v.textContent=Wi,ll=i(),$=a("img"),nl=i(),x=a("p"),x.innerHTML=Gi,il=i(),C=a("ul"),C.innerHTML=Zi,sl=i(),J=a("p"),J.innerHTML=Pi,al=i(),U=a("p"),U.innerHTML=Ai,rl=i(),j=a("p"),j.innerHTML=Bi,ol=i(),L=a("p"),L.innerHTML=Si,ul=i(),H=a("p"),H.innerHTML=zi,pl=i(),u(_.$$.fragment),ml=i(),I=a("img"),gl=i(),W=a("p"),W.textContent=Xi,fl=i(),k=a("ul"),k.innerHTML=Vi,hl=i(),G=a("p"),G.innerHTML=Ri,yl=i(),Z=a("p"),Z.innerHTML=Fi,cl=i(),P=a("p"),P.innerHTML=Ni,Ml=i(),A=a("img"),wl=i(),B=a("img"),bl=i(),u(S.$$.fragment),Tl=i(),z=a("ul"),z.innerHTML=qi,dl=i(),u(Y.$$.fragment),vl=i(),X=a("ul"),X.innerHTML=Di,$l=i(),V=a("p"),V.innerHTML=Oi,xl=i(),u(R.$$.fragment),Cl=i(),F=a("p"),F.textContent=Ki,Jl=i(),N=a("ul"),N.innerHTML=es,Ul=i(),u(Q.$$.fragment),jl=i(),E=a("p"),E.textContent=ts,Ll=i(),q=a("p"),q.innerHTML=ls,Hl=i(),u(D.$$.fragment),_l=i(),u(O.$$.fragment),Il=i(),K=a("ul"),K.innerHTML=ns,Wl=i(),ee=a("img"),kl=i(),te=a("ul"),te.innerHTML=ss,Gl=i(),le=a("img"),Zl=i(),u(ne.$$.fragment),Pl=i(),ie=a("ul"),ie.innerHTML=rs,Al=i(),u(se.$$.fragment),Bl=i(),u(ae.$$.fragment),Sl=i(),u(re.$$.fragment),zl=i(),oe=a("p"),oe.innerHTML=os,Yl=i(),u(ue.$$.fragment),Xl=i(),pe=a("ul"),pe.innerHTML=us,Vl=i(),u(me.$$.fragment),Rl=i(),ge=a("p"),ge.innerHTML=ps,Fl=i(),u(fe.$$.fragment),Nl=i(),he=a("p"),he.textContent=ms,Ql=i(),u(ye.$$.fragment),El=i(),ce=a("p"),ce.textContent=gs,ql=i(),u(Me.$$.fragment),Dl=i(),u(we.$$.fragment),Ol=i(),be=a("ul"),be.innerHTML=fs,Kl=i(),Te=a("p"),Te.innerHTML=hs,en=i(),de=a("p"),de.innerHTML=ys,tn=i(),ve=a("p"),ve.innerHTML=cs,ln=i(),u($e.$$.fragment),nn=i(),xe=a("img"),sn=i(),Ce=a("img"),an=i(),Je=a("p"),Je.innerHTML=bs,rn=i(),Ue=a("p"),Ue.textContent=Ts,on=i(),u(je.$$.fragment),un=i(),Le=a("p"),Le.innerHTML=ds,pn=i(),He=a("p"),He.textContent=vs,mn=i(),_e=a("ol"),_e.innerHTML=$s,gn=i(),Ie=a("img"),fn=i(),We=a("p"),We.innerHTML=Cs,hn=i(),ke=a("blockquote"),ke.innerHTML=Js,yn=i(),Ge=a("p"),Ge.textContent=Us,cn=i(),u(Ze.$$.fragment),Mn=i(),u(Pe.$$.fragment),wn=i(),Ae=a("ul"),Ae.innerHTML=js,bn=i(),Be=a("p"),Be.textContent=Ls,Tn=i(),Se=a("p"),Se.innerHTML=Hs,dn=i(),ze=a("p"),ze.textContent=_s,vn=i(),Ye=a("ul"),Ye.innerHTML=Is,$n=i(),Xe=a("img"),xn=i(),Ve=a("ul"),Ve.innerHTML=ks,Cn=i(),u(Re.$$.fragment),Jn=i(),Fe=a("p"),Fe.innerHTML=Gs,Un=i(),Ne=a("p"),Ne.innerHTML=Zs,jn=i(),Qe=a("p"),Qe.textContent=Ps,Ln=i(),Ee=a("ol"),Ee.innerHTML=As,Hn=i(),qe=a("img"),_n=i(),De=a("p"),De.textContent=Ss,In=i(),Oe=a("p"),Oe.innerHTML=zs,Wn=i(),u(Ke.$$.fragment),kn=i(),et=a("p"),et.textContent=Ys,Gn=i(),u(tt.$$.fragment),Zn=i(),lt=a("p"),lt.innerHTML=Xs,Pn=i(),nt=a("p"),nt.innerHTML=Vs,An=i(),u(it.$$.fragment),Bn=i(),st=a("p"),st.textContent=Rs,Sn=i(),at=a("ol"),at.innerHTML=Fs,zn=i(),rt=a("img"),Yn=i(),ot=a("ol"),ot.innerHTML=Qs,Xn=i(),ut=a("ul"),ut.innerHTML=Es,Vn=i(),pt=a("p"),pt.innerHTML=qs,Rn=i(),mt=a("p"),mt.textContent=Ds,Fn=i(),gt=a("p"),gt.textContent=Os,Nn=i(),u(ft.$$.fragment),Qn=i(),u(ht.$$.fragment),En=i(),yt=a("ul"),yt.innerHTML=Ks,qn=i(),ct=a("p"),ct.innerHTML=ea,Dn=i(),u(Mt.$$.fragment),On=i(),wt=a("p"),wt.textContent=ta,Kn=i(),u(bt.$$.fragment),ei=i(),Tt=a("p"),Tt.textContent=la,ti=i(),u(dt.$$.fragment),li=i(),u(vt.$$.fragment),ni=i(),$t=a("ul"),$t.innerHTML=na,ii=i(),xt=a("p"),xt.textContent=ia,si=i(),Ct=a("ul"),Ct.innerHTML=sa,ai=i(),Jt=a("img"),ri=i(),Ut=a("p"),Ut.innerHTML=ra,oi=i(),jt=a("p"),jt.textContent=oa,ui=i(),u(Lt.$$.fragment),pi=i(),Ht=a("p"),Ht.textContent=ua,mi=i(),u(_t.$$.fragment),gi=i(),u(It.$$.fragment),fi=i(),Wt=a("ul"),Wt.innerHTML=pa,hi=i(),u(kt.$$.fragment),yi=i(),u(Gt.$$.fragment),ci=i(),Zt=a("p"),Zt.innerHTML=ma,Mi=i(),u(Pt.$$.fragment),wi=i(),At=a("p"),At.innerHTML=ga,bi=i(),Bt=a("p"),Bt.textContent=fa,Ti=i(),St=a("p"),St.innerHTML=ha,di=i(),zt=a("p"),zt.innerHTML=ya,vi=i(),Yt=a("p"),Yt.innerHTML=ca,$i=i(),Xt=a("p"),Xt.textContent=Ma,xi=i(),Vt=a("ul"),Vt.innerHTML=wa,Ci=i(),Rt=a("p"),Rt.textContent=ba,Ji=i(),Ft=a("p"),Ft.textContent=Ta,Ui=i(),Nt=a("p"),Nt.textContent=da,ji=i(),u(Qt.$$.fragment),Li=i(),u(Et.$$.fragment),Hi=i(),Dt=a("p"),this.h()},l(e){const t=ja("svelte-u9bgzb",document.head);b=r(t,"META",{name:!0,content:!0}),t.forEach(l),Ot=s(e),qt=r(e,"P",{}),va(qt).forEach(l),Kt=s(e),p(T.$$.fragment,e),el=s(e),p(d.$$.fragment,e),tl=s(e),v=r(e,"P",{"data-svelte-h":!0}),o(v)!=="svelte-8799jg"&&(v.textContent=Wi),ll=s(e),$=r(e,"IMG",{src:!0,alt:!0}),nl=s(e),x=r(e,"P",{"data-svelte-h":!0}),o(x)!=="svelte-vnolwc"&&(x.innerHTML=Gi),il=s(e),C=r(e,"UL",{"data-svelte-h":!0}),o(C)!=="svelte-11f91ho"&&(C.innerHTML=Zi),sl=s(e),J=r(e,"P",{"data-svelte-h":!0}),o(J)!=="svelte-1qkxyrx"&&(J.innerHTML=Pi),al=s(e),U=r(e,"P",{"data-svelte-h":!0}),o(U)!=="svelte-1276b62"&&(U.innerHTML=Ai),rl=s(e),j=r(e,"P",{"data-svelte-h":!0}),o(j)!=="svelte-1a3zbrf"&&(j.innerHTML=Bi),ol=s(e),L=r(e,"P",{"data-svelte-h":!0}),o(L)!=="svelte-uilrpw"&&(L.innerHTML=Si),ul=s(e),H=r(e,"P",{"data-svelte-h":!0}),o(H)!=="svelte-p9mrd0"&&(H.innerHTML=zi),pl=s(e),p(_.$$.fragment,e),ml=s(e),I=r(e,"IMG",{src:!0,alt:!0}),gl=s(e),W=r(e,"P",{"data-svelte-h":!0}),o(W)!=="svelte-ajpeo4"&&(W.textContent=Xi),fl=s(e),k=r(e,"UL",{"data-svelte-h":!0}),o(k)!=="svelte-ie2npa"&&(k.innerHTML=Vi),hl=s(e),G=r(e,"P",{"data-svelte-h":!0}),o(G)!=="svelte-er3a9y"&&(G.innerHTML=Ri),yl=s(e),Z=r(e,"P",{"data-svelte-h":!0}),o(Z)!=="svelte-1qkxyrx"&&(Z.innerHTML=Fi),cl=s(e),P=r(e,"P",{"data-svelte-h":!0}),o(P)!=="svelte-1voz1c9"&&(P.innerHTML=Ni),Ml=s(e),A=r(e,"IMG",{src:!0,alt:!0}),wl=s(e),B=r(e,"IMG",{src:!0,alt:!0}),bl=s(e),p(S.$$.fragment,e),Tl=s(e),z=r(e,"UL",{"data-svelte-h":!0}),o(z)!=="svelte-y5pits"&&(z.innerHTML=qi),dl=s(e),p(Y.$$.fragment,e),vl=s(e),X=r(e,"UL",{"data-svelte-h":!0}),o(X)!=="svelte-1whswld"&&(X.innerHTML=Di),$l=s(e),V=r(e,"P",{"data-svelte-h":!0}),o(V)!=="svelte-qqj2y4"&&(V.innerHTML=Oi),xl=s(e),p(R.$$.fragment,e),Cl=s(e),F=r(e,"P",{"data-svelte-h":!0}),o(F)!=="svelte-nsjs09"&&(F.textContent=Ki),Jl=s(e),N=r(e,"UL",{"data-svelte-h":!0}),o(N)!=="svelte-1n2kf8m"&&(N.innerHTML=es),Ul=s(e),p(Q.$$.fragment,e),jl=s(e),E=r(e,"P",{"data-svelte-h":!0}),o(E)!=="svelte-1v25wk6"&&(E.textContent=ts),Ll=s(e),q=r(e,"P",{"data-svelte-h":!0}),o(q)!=="svelte-15fjnt8"&&(q.innerHTML=ls),Hl=s(e),p(D.$$.fragment,e),_l=s(e),p(O.$$.fragment,e),Il=s(e),K=r(e,"UL",{"data-svelte-h":!0}),o(K)!=="svelte-1funvfi"&&(K.innerHTML=ns),Wl=s(e),ee=r(e,"IMG",{src:!0,alt:!0}),kl=s(e),te=r(e,"UL",{"data-svelte-h":!0}),o(te)!=="svelte-1cge6gn"&&(te.innerHTML=ss),Gl=s(e),le=r(e,"IMG",{src:!0,alt:!0}),Zl=s(e),p(ne.$$.fragment,e),Pl=s(e),ie=r(e,"UL",{"data-svelte-h":!0}),o(ie)!=="svelte-bsfj40"&&(ie.innerHTML=rs),Al=s(e),p(se.$$.fragment,e),Bl=s(e),p(ae.$$.fragment,e),Sl=s(e),p(re.$$.fragment,e),zl=s(e),oe=r(e,"P",{"data-svelte-h":!0}),o(oe)!=="svelte-asq88f"&&(oe.innerHTML=os),Yl=s(e),p(ue.$$.fragment,e),Xl=s(e),pe=r(e,"UL",{"data-svelte-h":!0}),o(pe)!=="svelte-uiwwoo"&&(pe.innerHTML=us),Vl=s(e),p(me.$$.fragment,e),Rl=s(e),ge=r(e,"P",{"data-svelte-h":!0}),o(ge)!=="svelte-n949c7"&&(ge.innerHTML=ps),Fl=s(e),p(fe.$$.fragment,e),Nl=s(e),he=r(e,"P",{"data-svelte-h":!0}),o(he)!=="svelte-pvjkec"&&(he.textContent=ms),Ql=s(e),p(ye.$$.fragment,e),El=s(e),ce=r(e,"P",{"data-svelte-h":!0}),o(ce)!=="svelte-1xk97g6"&&(ce.textContent=gs),ql=s(e),p(Me.$$.fragment,e),Dl=s(e),p(we.$$.fragment,e),Ol=s(e),be=r(e,"UL",{"data-svelte-h":!0}),o(be)!=="svelte-glpuw7"&&(be.innerHTML=fs),Kl=s(e),Te=r(e,"P",{"data-svelte-h":!0}),o(Te)!=="svelte-idbiem"&&(Te.innerHTML=hs),en=s(e),de=r(e,"P",{"data-svelte-h":!0}),o(de)!=="svelte-70awl0"&&(de.innerHTML=ys),tn=s(e),ve=r(e,"P",{"data-svelte-h":!0}),o(ve)!=="svelte-a2qrj"&&(ve.innerHTML=cs),ln=s(e),p($e.$$.fragment,e),nn=s(e),xe=r(e,"IMG",{src:!0,alt:!0}),sn=s(e),Ce=r(e,"IMG",{src:!0,alt:!0}),an=s(e),Je=r(e,"P",{"data-svelte-h":!0}),o(Je)!=="svelte-bhbbrt"&&(Je.innerHTML=bs),rn=s(e),Ue=r(e,"P",{"data-svelte-h":!0}),o(Ue)!=="svelte-ly87yf"&&(Ue.textContent=Ts),on=s(e),p(je.$$.fragment,e),un=s(e),Le=r(e,"P",{"data-svelte-h":!0}),o(Le)!=="svelte-lik5r7"&&(Le.innerHTML=ds),pn=s(e),He=r(e,"P",{"data-svelte-h":!0}),o(He)!=="svelte-1l2fgkx"&&(He.textContent=vs),mn=s(e),_e=r(e,"OL",{"data-svelte-h":!0}),o(_e)!=="svelte-1uog3kr"&&(_e.innerHTML=$s),gn=s(e),Ie=r(e,"IMG",{src:!0,alt:!0}),fn=s(e),We=r(e,"P",{"data-svelte-h":!0}),o(We)!=="svelte-soe846"&&(We.innerHTML=Cs),hn=s(e),ke=r(e,"BLOCKQUOTE",{"data-svelte-h":!0}),o(ke)!=="svelte-mowitx"&&(ke.innerHTML=Js),yn=s(e),Ge=r(e,"P",{"data-svelte-h":!0}),o(Ge)!=="svelte-10k4t65"&&(Ge.textContent=Us),cn=s(e),p(Ze.$$.fragment,e),Mn=s(e),p(Pe.$$.fragment,e),wn=s(e),Ae=r(e,"UL",{"data-svelte-h":!0}),o(Ae)!=="svelte-12qmgi1"&&(Ae.innerHTML=js),bn=s(e),Be=r(e,"P",{"data-svelte-h":!0}),o(Be)!=="svelte-1nv9dl2"&&(Be.textContent=Ls),Tn=s(e),Se=r(e,"P",{"data-svelte-h":!0}),o(Se)!=="svelte-932u9c"&&(Se.innerHTML=Hs),dn=s(e),ze=r(e,"P",{"data-svelte-h":!0}),o(ze)!=="svelte-1gwfyyq"&&(ze.textContent=_s),vn=s(e),Ye=r(e,"UL",{"data-svelte-h":!0}),o(Ye)!=="svelte-19b5tev"&&(Ye.innerHTML=Is),$n=s(e),Xe=r(e,"IMG",{src:!0,alt:!0}),xn=s(e),Ve=r(e,"UL",{"data-svelte-h":!0}),o(Ve)!=="svelte-mbo7r4"&&(Ve.innerHTML=ks),Cn=s(e),p(Re.$$.fragment,e),Jn=s(e),Fe=r(e,"P",{"data-svelte-h":!0}),o(Fe)!=="svelte-1gq4mmb"&&(Fe.innerHTML=Gs),Un=s(e),Ne=r(e,"P",{"data-svelte-h":!0}),o(Ne)!=="svelte-ydks6z"&&(Ne.innerHTML=Zs),jn=s(e),Qe=r(e,"P",{"data-svelte-h":!0}),o(Qe)!=="svelte-1quibko"&&(Qe.textContent=Ps),Ln=s(e),Ee=r(e,"OL",{"data-svelte-h":!0}),o(Ee)!=="svelte-kc41xm"&&(Ee.innerHTML=As),Hn=s(e),qe=r(e,"IMG",{src:!0,alt:!0}),_n=s(e),De=r(e,"P",{"data-svelte-h":!0}),o(De)!=="svelte-4vay6o"&&(De.textContent=Ss),In=s(e),Oe=r(e,"P",{"data-svelte-h":!0}),o(Oe)!=="svelte-ovdsef"&&(Oe.innerHTML=zs),Wn=s(e),p(Ke.$$.fragment,e),kn=s(e),et=r(e,"P",{"data-svelte-h":!0}),o(et)!=="svelte-16xmrkl"&&(et.textContent=Ys),Gn=s(e),p(tt.$$.fragment,e),Zn=s(e),lt=r(e,"P",{"data-svelte-h":!0}),o(lt)!=="svelte-1uv0si2"&&(lt.innerHTML=Xs),Pn=s(e),nt=r(e,"P",{"data-svelte-h":!0}),o(nt)!=="svelte-xnsv8k"&&(nt.innerHTML=Vs),An=s(e),p(it.$$.fragment,e),Bn=s(e),st=r(e,"P",{"data-svelte-h":!0}),o(st)!=="svelte-at0blt"&&(st.textContent=Rs),Sn=s(e),at=r(e,"OL",{"data-svelte-h":!0}),o(at)!=="svelte-1nrs1ta"&&(at.innerHTML=Fs),zn=s(e),rt=r(e,"IMG",{src:!0,alt:!0}),Yn=s(e),ot=r(e,"OL",{"data-svelte-h":!0}),o(ot)!=="svelte-kvjnqb"&&(ot.innerHTML=Qs),Xn=s(e),ut=r(e,"UL",{"data-svelte-h":!0}),o(ut)!=="svelte-15srqqb"&&(ut.innerHTML=Es),Vn=s(e),pt=r(e,"P",{"data-svelte-h":!0}),o(pt)!=="svelte-2ck67z"&&(pt.innerHTML=qs),Rn=s(e),mt=r(e,"P",{"data-svelte-h":!0}),o(mt)!=="svelte-1itupj6"&&(mt.textContent=Ds),Fn=s(e),gt=r(e,"P",{"data-svelte-h":!0}),o(gt)!=="svelte-1egu6lp"&&(gt.textContent=Os),Nn=s(e),p(ft.$$.fragment,e),Qn=s(e),p(ht.$$.fragment,e),En=s(e),yt=r(e,"UL",{"data-svelte-h":!0}),o(yt)!=="svelte-isv6yw"&&(yt.innerHTML=Ks),qn=s(e),ct=r(e,"P",{"data-svelte-h":!0}),o(ct)!=="svelte-95lbtv"&&(ct.innerHTML=ea),Dn=s(e),p(Mt.$$.fragment,e),On=s(e),wt=r(e,"P",{"data-svelte-h":!0}),o(wt)!=="svelte-7djg69"&&(wt.textContent=ta),Kn=s(e),p(bt.$$.fragment,e),ei=s(e),Tt=r(e,"P",{"data-svelte-h":!0}),o(Tt)!=="svelte-1xk97g6"&&(Tt.textContent=la),ti=s(e),p(dt.$$.fragment,e),li=s(e),p(vt.$$.fragment,e),ni=s(e),$t=r(e,"UL",{"data-svelte-h":!0}),o($t)!=="svelte-bnxybi"&&($t.innerHTML=na),ii=s(e),xt=r(e,"P",{"data-svelte-h":!0}),o(xt)!=="svelte-1t6gtto"&&(xt.textContent=ia),si=s(e),Ct=r(e,"UL",{"data-svelte-h":!0}),o(Ct)!=="svelte-26i3mz"&&(Ct.innerHTML=sa),ai=s(e),Jt=r(e,"IMG",{src:!0,alt:!0}),ri=s(e),Ut=r(e,"P",{"data-svelte-h":!0}),o(Ut)!=="svelte-10ie518"&&(Ut.innerHTML=ra),oi=s(e),jt=r(e,"P",{"data-svelte-h":!0}),o(jt)!=="svelte-9pqg4h"&&(jt.textContent=oa),ui=s(e),p(Lt.$$.fragment,e),pi=s(e),Ht=r(e,"P",{"data-svelte-h":!0}),o(Ht)!=="svelte-8jt655"&&(Ht.textContent=ua),mi=s(e),p(_t.$$.fragment,e),gi=s(e),p(It.$$.fragment,e),fi=s(e),Wt=r(e,"UL",{"data-svelte-h":!0}),o(Wt)!=="svelte-mb8qat"&&(Wt.innerHTML=pa),hi=s(e),p(kt.$$.fragment,e),yi=s(e),p(Gt.$$.fragment,e),ci=s(e),Zt=r(e,"P",{"data-svelte-h":!0}),o(Zt)!=="svelte-y001yf"&&(Zt.innerHTML=ma),Mi=s(e),p(Pt.$$.fragment,e),wi=s(e),At=r(e,"P",{"data-svelte-h":!0}),o(At)!=="svelte-daa0dv"&&(At.innerHTML=ga),bi=s(e),Bt=r(e,"P",{"data-svelte-h":!0}),o(Bt)!=="svelte-1k16bge"&&(Bt.textContent=fa),Ti=s(e),St=r(e,"P",{"data-svelte-h":!0}),o(St)!=="svelte-119cxne"&&(St.innerHTML=ha),di=s(e),zt=r(e,"P",{"data-svelte-h":!0}),o(zt)!=="svelte-1guj9t4"&&(zt.innerHTML=ya),vi=s(e),Yt=r(e,"P",{"data-svelte-h":!0}),o(Yt)!=="svelte-yr267g"&&(Yt.innerHTML=ca),$i=s(e),Xt=r(e,"P",{"data-svelte-h":!0}),o(Xt)!=="svelte-ibm9n0"&&(Xt.textContent=Ma),xi=s(e),Vt=r(e,"UL",{"data-svelte-h":!0}),o(Vt)!=="svelte-n9oao8"&&(Vt.innerHTML=wa),Ci=s(e),Rt=r(e,"P",{"data-svelte-h":!0}),o(Rt)!=="svelte-955pmq"&&(Rt.textContent=ba),Ji=s(e),Ft=r(e,"P",{"data-svelte-h":!0}),o(Ft)!=="svelte-1qy2r04"&&(Ft.textContent=Ta),Ui=s(e),Nt=r(e,"P",{"data-svelte-h":!0}),o(Nt)!=="svelte-rmzsxl"&&(Nt.textContent=da),ji=s(e),p(Qt.$$.fragment,e),Li=s(e),p(Et.$$.fragment,e),Hi=s(e),Dt=r(e,"P",{}),va(Dt).forEach(l),this.h()},h(){y(b,"name","hf:doc:metadata"),y(b,"content",Wa),w($.src,ki="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/unit7/envs.png")||y($,"src",ki),y($,"alt","Environments"),w(I.src,Yi="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/unit7/thumbnail.png")||y(I,"src",Yi),y(I,"alt","Thumbnail"),w(A.src,Qi="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/unit7/pyramids.gif")||y(A,"src",Qi),y(A,"alt","Pyramids"),w(B.src,Ei="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/unit7/snowballtarget.gif")||y(B,"src",Ei),y(B,"alt","SnowballTarget"),w(ee.src,is="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/notebooks/gpu-step1.jpg")||y(ee,"src",is),y(ee,"alt","GPU Step 1"),w(le.src,as="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/notebooks/gpu-step2.jpg")||y(le,"src",as),y(le,"alt","GPU Step 2"),w(xe.src,Ms="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/unit7/snowballfight_config1.png")||y(xe,"src",Ms),y(xe,"alt","Config SnowballTarget"),w(Ce.src,ws="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/unit7/snowballfight_config2.png")||y(Ce,"src",ws),y(Ce,"alt","Config SnowballTarget"),w(Ie.src,xs="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/unit7/mlagentslearn.png")||y(Ie,"src",xs),y(Ie,"alt","MlAgents learn"),w(Xe.src,Ws="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/notebooks/create-token.jpg")||y(Xe,"src",Ws),y(Xe,"alt","Create HF Token"),w(qe.src,Bs="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/unit7/mlagentspushtohub.png")||y(qe,"src",Bs),y(qe,"alt","Push to Hub"),w(rt.src,Ns="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/unit7/snowballtarget_load.png")||y(rt,"src",Ns),y(rt,"alt","Snowballtarget load"),w(Jt.src,aa="https://huggingface.co/datasets/huggingface-deep-rl-course/course-images/resolve/main/en/unit7/pyramids-config.png")||y(Jt,"src",aa),y(Jt,"alt","Pyramids config")},m(e,t){La(document.head,b),n(e,Ot,t),n(e,qt,t),n(e,Kt,t),m(T,e,t),n(e,el,t),m(d,e,t),n(e,tl,t),n(e,v,t),n(e,ll,t),n(e,$,t),n(e,nl,t),n(e,x,t),n(e,il,t),n(e,C,t),n(e,sl,t),n(e,J,t),n(e,al,t),n(e,U,t),n(e,rl,t),n(e,j,t),n(e,ol,t),n(e,L,t),n(e,ul,t),n(e,H,t),n(e,pl,t),m(_,e,t),n(e,ml,t),n(e,I,t),n(e,gl,t),n(e,W,t),n(e,fl,t),n(e,k,t),n(e,hl,t),n(e,G,t),n(e,yl,t),n(e,Z,t),n(e,cl,t),n(e,P,t),n(e,Ml,t),n(e,A,t),n(e,wl,t),n(e,B,t),n(e,bl,t),m(S,e,t),n(e,Tl,t),n(e,z,t),n(e,dl,t),m(Y,e,t),n(e,vl,t),n(e,X,t),n(e,$l,t),n(e,V,t),n(e,xl,t),m(R,e,t),n(e,Cl,t),n(e,F,t),n(e,Jl,t),n(e,N,t),n(e,Ul,t),m(Q,e,t),n(e,jl,t),n(e,E,t),n(e,Ll,t),n(e,q,t),n(e,Hl,t),m(D,e,t),n(e,_l,t),m(O,e,t),n(e,Il,t),n(e,K,t),n(e,Wl,t),n(e,ee,t),n(e,kl,t),n(e,te,t),n(e,Gl,t),n(e,le,t),n(e,Zl,t),m(ne,e,t),n(e,Pl,t),n(e,ie,t),n(e,Al,t),m(se,e,t),n(e,Bl,t),m(ae,e,t),n(e,Sl,t),m(re,e,t),n(e,zl,t),n(e,oe,t),n(e,Yl,t),m(ue,e,t),n(e,Xl,t),n(e,pe,t),n(e,Vl,t),m(me,e,t),n(e,Rl,t),n(e,ge,t),n(e,Fl,t),m(fe,e,t),n(e,Nl,t),n(e,he,t),n(e,Ql,t),m(ye,e,t),n(e,El,t),n(e,ce,t),n(e,ql,t),m(Me,e,t),n(e,Dl,t),m(we,e,t),n(e,Ol,t),n(e,be,t),n(e,Kl,t),n(e,Te,t),n(e,en,t),n(e,de,t),n(e,tn,t),n(e,ve,t),n(e,ln,t),m($e,e,t),n(e,nn,t),n(e,xe,t),n(e,sn,t),n(e,Ce,t),n(e,an,t),n(e,Je,t),n(e,rn,t),n(e,Ue,t),n(e,on,t),m(je,e,t),n(e,un,t),n(e,Le,t),n(e,pn,t),n(e,He,t),n(e,mn,t),n(e,_e,t),n(e,gn,t),n(e,Ie,t),n(e,fn,t),n(e,We,t),n(e,hn,t),n(e,ke,t),n(e,yn,t),n(e,Ge,t),n(e,cn,t),m(Ze,e,t),n(e,Mn,t),m(Pe,e,t),n(e,wn,t),n(e,Ae,t),n(e,bn,t),n(e,Be,t),n(e,Tn,t),n(e,Se,t),n(e,dn,t),n(e,ze,t),n(e,vn,t),n(e,Ye,t),n(e,$n,t),n(e,Xe,t),n(e,xn,t),n(e,Ve,t),n(e,Cn,t),m(Re,e,t),n(e,Jn,t),n(e,Fe,t),n(e,Un,t),n(e,Ne,t),n(e,jn,t),n(e,Qe,t),n(e,Ln,t),n(e,Ee,t),n(e,Hn,t),n(e,qe,t),n(e,_n,t),n(e,De,t),n(e,In,t),n(e,Oe,t),n(e,Wn,t),m(Ke,e,t),n(e,kn,t),n(e,et,t),n(e,Gn,t),m(tt,e,t),n(e,Zn,t),n(e,lt,t),n(e,Pn,t),n(e,nt,t),n(e,An,t),m(it,e,t),n(e,Bn,t),n(e,st,t),n(e,Sn,t),n(e,at,t),n(e,zn,t),n(e,rt,t),n(e,Yn,t),n(e,ot,t),n(e,Xn,t),n(e,ut,t),n(e,Vn,t),n(e,pt,t),n(e,Rn,t),n(e,mt,t),n(e,Fn,t),n(e,gt,t),n(e,Nn,t),m(ft,e,t),n(e,Qn,t),m(ht,e,t),n(e,En,t),n(e,yt,t),n(e,qn,t),n(e,ct,t),n(e,Dn,t),m(Mt,e,t),n(e,On,t),n(e,wt,t),n(e,Kn,t),m(bt,e,t),n(e,ei,t),n(e,Tt,t),n(e,ti,t),m(dt,e,t),n(e,li,t),m(vt,e,t),n(e,ni,t),n(e,$t,t),n(e,ii,t),n(e,xt,t),n(e,si,t),n(e,Ct,t),n(e,ai,t),n(e,Jt,t),n(e,ri,t),n(e,Ut,t),n(e,oi,t),n(e,jt,t),n(e,ui,t),m(Lt,e,t),n(e,pi,t),n(e,Ht,t),n(e,mi,t),m(_t,e,t),n(e,gi,t),m(It,e,t),n(e,fi,t),n(e,Wt,t),n(e,hi,t),m(kt,e,t),n(e,yi,t),m(Gt,e,t),n(e,ci,t),n(e,Zt,t),n(e,Mi,t),m(Pt,e,t),n(e,wi,t),n(e,At,t),n(e,bi,t),n(e,Bt,t),n(e,Ti,t),n(e,St,t),n(e,di,t),n(e,zt,t),n(e,vi,t),n(e,Yt,t),n(e,$i,t),n(e,Xt,t),n(e,xi,t),n(e,Vt,t),n(e,Ci,t),n(e,Rt,t),n(e,Ji,t),n(e,Ft,t),n(e,Ui,t),n(e,Nt,t),n(e,ji,t),m(Qt,e,t),n(e,Li,t),m(Et,e,t),n(e,Hi,t),n(e,Dt,t),_i=!0},p:xa,i(e){_i||(g(T.$$.fragment,e),g(d.$$.fragment,e),g(_.$$.fragment,e),g(S.$$.fragment,e),g(Y.$$.fragment,e),g(R.$$.fragment,e),g(Q.$$.fragment,e),g(D.$$.fragment,e),g(O.$$.fragment,e),g(ne.$$.fragment,e),g(se.$$.fragment,e),g(ae.$$.fragment,e),g(re.$$.fragment,e),g(ue.$$.fragment,e),g(me.$$.fragment,e),g(fe.$$.fragment,e),g(ye.$$.fragment,e),g(Me.$$.fragment,e),g(we.$$.fragment,e),g($e.$$.fragment,e),g(je.$$.fragment,e),g(Ze.$$.fragment,e),g(Pe.$$.fragment,e),g(Re.$$.fragment,e),g(Ke.$$.fragment,e),g(tt.$$.fragment,e),g(it.$$.fragment,e),g(ft.$$.fragment,e),g(ht.$$.fragment,e),g(Mt.$$.fragment,e),g(bt.$$.fragment,e),g(dt.$$.fragment,e),g(vt.$$.fragment,e),g(Lt.$$.fragment,e),g(_t.$$.fragment,e),g(It.$$.fragment,e),g(kt.$$.fragment,e),g(Gt.$$.fragment,e),g(Pt.$$.fragment,e),g(Qt.$$.fragment,e),g(Et.$$.fragment,e),_i=!0)},o(e){f(T.$$.fragment,e),f(d.$$.fragment,e),f(_.$$.fragment,e),f(S.$$.fragment,e),f(Y.$$.fragment,e),f(R.$$.fragment,e),f(Q.$$.fragment,e),f(D.$$.fragment,e),f(O.$$.fragment,e),f(ne.$$.fragment,e),f(se.$$.fragment,e),f(ae.$$.fragment,e),f(re.$$.fragment,e),f(ue.$$.fragment,e),f(me.$$.fragment,e),f(fe.$$.fragment,e),f(ye.$$.fragment,e),f(Me.$$.fragment,e),f(we.$$.fragment,e),f($e.$$.fragment,e),f(je.$$.fragment,e),f(Ze.$$.fragment,e),f(Pe.$$.fragment,e),f(Re.$$.fragment,e),f(Ke.$$.fragment,e),f(tt.$$.fragment,e),f(it.$$.fragment,e),f(ft.$$.fragment,e),f(ht.$$.fragment,e),f(Mt.$$.fragment,e),f(bt.$$.fragment,e),f(dt.$$.fragment,e),f(vt.$$.fragment,e),f(Lt.$$.fragment,e),f(_t.$$.fragment,e),f(It.$$.fragment,e),f(kt.$$.fragment,e),f(Gt.$$.fragment,e),f(Pt.$$.fragment,e),f(Qt.$$.fragment,e),f(Et.$$.fragment,e),_i=!1},d(e){e&&(l(Ot),l(qt),l(Kt),l(el),l(tl),l(v),l(ll),l($),l(nl),l(x),l(il),l(C),l(sl),l(J),l(al),l(U),l(rl),l(j),l(ol),l(L),l(ul),l(H),l(pl),l(ml),l(I),l(gl),l(W),l(fl),l(k),l(hl),l(G),l(yl),l(Z),l(cl),l(P),l(Ml),l(A),l(wl),l(B),l(bl),l(Tl),l(z),l(dl),l(vl),l(X),l($l),l(V),l(xl),l(Cl),l(F),l(Jl),l(N),l(Ul),l(jl),l(E),l(Ll),l(q),l(Hl),l(_l),l(Il),l(K),l(Wl),l(ee),l(kl),l(te),l(Gl),l(le),l(Zl),l(Pl),l(ie),l(Al),l(Bl),l(Sl),l(zl),l(oe),l(Yl),l(Xl),l(pe),l(Vl),l(Rl),l(ge),l(Fl),l(Nl),l(he),l(Ql),l(El),l(ce),l(ql),l(Dl),l(Ol),l(be),l(Kl),l(Te),l(en),l(de),l(tn),l(ve),l(ln),l(nn),l(xe),l(sn),l(Ce),l(an),l(Je),l(rn),l(Ue),l(on),l(un),l(Le),l(pn),l(He),l(mn),l(_e),l(gn),l(Ie),l(fn),l(We),l(hn),l(ke),l(yn),l(Ge),l(cn),l(Mn),l(wn),l(Ae),l(bn),l(Be),l(Tn),l(Se),l(dn),l(ze),l(vn),l(Ye),l($n),l(Xe),l(xn),l(Ve),l(Cn),l(Jn),l(Fe),l(Un),l(Ne),l(jn),l(Qe),l(Ln),l(Ee),l(Hn),l(qe),l(_n),l(De),l(In),l(Oe),l(Wn),l(kn),l(et),l(Gn),l(Zn),l(lt),l(Pn),l(nt),l(An),l(Bn),l(st),l(Sn),l(at),l(zn),l(rt),l(Yn),l(ot),l(Xn),l(ut),l(Vn),l(pt),l(Rn),l(mt),l(Fn),l(gt),l(Nn),l(Qn),l(En),l(yt),l(qn),l(ct),l(Dn),l(On),l(wt),l(Kn),l(ei),l(Tt),l(ti),l(li),l(ni),l($t),l(ii),l(xt),l(si),l(Ct),l(ai),l(Jt),l(ri),l(Ut),l(oi),l(jt),l(ui),l(pi),l(Ht),l(mi),l(gi),l(fi),l(Wt),l(hi),l(yi),l(ci),l(Zt),l(Mi),l(wi),l(At),l(bi),l(Bt),l(Ti),l(St),l(di),l(zt),l(vi),l(Yt),l($i),l(Xt),l(xi),l(Vt),l(Ci),l(Rt),l(Ji),l(Ft),l(Ui),l(Nt),l(ji),l(Li),l(Hi),l(Dt)),l(b),h(T,e),h(d,e),h(_,e),h(S,e),h(Y,e),h(R,e),h(Q,e),h(D,e),h(O,e),h(ne,e),h(se,e),h(ae,e),h(re,e),h(ue,e),h(me,e),h(fe,e),h(ye,e),h(Me,e),h(we,e),h($e,e),h(je,e),h(Ze,e),h(Pe,e),h(Re,e),h(Ke,e),h(tt,e),h(it,e),h(ft,e),h(ht,e),h(Mt,e),h(bt,e),h(dt,e),h(vt,e),h(Lt,e),h(_t,e),h(It,e),h(kt,e),h(Gt,e),h(Pt,e),h(Qt,e),h(Et,e)}}}const Wa='{"title":"Hands-on","local":"hands-on","sections":[],"depth":1}';function ka(Ii){return Ca(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Sa extends Ja{constructor(b){super(),Ua(this,b,ka,Ia,$a,{})}}export{Sa as component};
